@abloatai/ablo 0.25.0 → 0.27.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 +5 -3
- package/CHANGELOG.md +34 -0
- package/README.md +104 -88
- package/dist/BaseSyncedStore.d.ts +140 -266
- package/dist/BaseSyncedStore.js +338 -739
- package/dist/Database.d.ts +62 -77
- package/dist/Database.js +106 -127
- package/dist/{ObjectPool.d.ts → InstanceCache.d.ts} +10 -13
- package/dist/{ObjectPool.js → InstanceCache.js} +91 -83
- package/dist/LazyReferenceCollection.d.ts +11 -15
- package/dist/LazyReferenceCollection.js +16 -15
- package/dist/Model.d.ts +37 -52
- package/dist/Model.js +52 -69
- package/dist/ModelRegistry.d.ts +46 -25
- package/dist/ModelRegistry.js +32 -30
- package/dist/NetworkMonitor.d.ts +5 -6
- package/dist/NetworkMonitor.js +6 -7
- package/dist/SyncClient.d.ts +119 -109
- package/dist/SyncClient.js +303 -224
- package/dist/SyncEngineContext.d.ts +1 -3
- package/dist/SyncEngineContext.js +1 -2
- package/dist/adapters/alwaysOnline.d.ts +6 -8
- package/dist/adapters/alwaysOnline.js +6 -8
- package/dist/adapters/inMemoryStorage.d.ts +9 -9
- package/dist/adapters/inMemoryStorage.js +9 -9
- package/dist/agent/Agent.d.ts +39 -31
- package/dist/agent/Agent.js +35 -23
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +5 -5
- package/dist/agent/session.d.ts +47 -44
- package/dist/agent/session.js +37 -48
- package/dist/agent/types.d.ts +26 -31
- package/dist/agent/types.js +6 -7
- package/dist/ai-sdk/coordinatedTool.d.ts +108 -0
- package/dist/ai-sdk/{coordinated-tool.js → coordinatedTool.js} +44 -38
- package/dist/ai-sdk/coordinationContext.d.ts +46 -0
- package/dist/ai-sdk/{coordination-context.js → coordinationContext.js} +30 -31
- package/dist/ai-sdk/index.d.ts +25 -22
- package/dist/ai-sdk/index.js +25 -22
- package/dist/ai-sdk/wrap.d.ts +7 -8
- package/dist/ai-sdk/wrap.js +2 -2
- package/dist/auth/credentialPolicy.d.ts +74 -71
- package/dist/auth/credentialPolicy.js +51 -56
- package/dist/auth/credentialSource.d.ts +7 -18
- package/dist/auth/credentialSource.js +10 -18
- package/dist/auth/index.d.ts +59 -58
- package/dist/auth/index.js +34 -40
- package/dist/auth/schemas.d.ts +5 -4
- package/dist/auth/schemas.js +5 -4
- package/dist/batching/index.d.ts +19 -21
- package/dist/batching/index.js +14 -17
- package/dist/cli.cjs +483 -369
- package/dist/client/Ablo.d.ts +107 -836
- package/dist/client/Ablo.js +174 -833
- package/dist/client/ApiClient.d.ts +44 -20
- package/dist/client/ApiClient.js +193 -44
- package/dist/client/auth.d.ts +51 -60
- package/dist/client/auth.js +137 -110
- package/dist/client/claimHeartbeatLoop.d.ts +50 -0
- package/dist/client/claimHeartbeatLoop.js +88 -0
- package/dist/client/consoleLogger.d.ts +35 -0
- package/dist/client/consoleLogger.js +44 -0
- package/dist/client/createInternalComponents.d.ts +14 -17
- package/dist/client/createInternalComponents.js +26 -31
- package/dist/client/createModelProxy.d.ts +130 -120
- package/dist/client/createModelProxy.js +158 -124
- package/dist/client/credentialEndpoint.d.ts +61 -0
- package/dist/client/credentialEndpoint.js +86 -0
- package/dist/client/functionalUpdate.d.ts +29 -27
- package/dist/client/functionalUpdate.js +21 -21
- package/dist/client/hostedEndpoints.d.ts +21 -0
- package/dist/client/hostedEndpoints.js +21 -0
- package/dist/client/httpClient.d.ts +58 -54
- package/dist/client/httpClient.js +29 -31
- package/dist/client/identity.d.ts +15 -20
- package/dist/client/identity.js +49 -59
- package/dist/client/modelRegistration.d.ts +10 -0
- package/dist/client/modelRegistration.js +301 -0
- package/dist/client/options.d.ts +373 -0
- package/dist/client/options.js +6 -0
- package/dist/client/registerDataSource.d.ts +9 -9
- package/dist/client/registerDataSource.js +15 -16
- package/dist/client/resourceTypes.d.ts +333 -0
- package/dist/client/resourceTypes.js +7 -0
- package/dist/client/schemaConfig.d.ts +44 -0
- package/dist/client/schemaConfig.js +176 -0
- package/dist/client/sessionMint.d.ts +17 -13
- package/dist/client/sessionMint.js +26 -31
- package/dist/client/validateAbloOptions.d.ts +12 -14
- package/dist/client/validateAbloOptions.js +9 -10
- package/dist/client/writeOptionsSchema.d.ts +18 -16
- package/dist/client/writeOptionsSchema.js +23 -20
- package/dist/client/wsMutationExecutor.d.ts +28 -0
- package/dist/client/wsMutationExecutor.js +71 -0
- package/dist/context.d.ts +6 -4
- package/dist/context.js +6 -7
- package/dist/coordination/index.d.ts +13 -4
- package/dist/coordination/index.js +29 -4
- package/dist/coordination/schema.d.ts +176 -128
- package/dist/coordination/schema.js +197 -133
- package/dist/coordination/trace.d.ts +9 -11
- package/dist/coordination/trace.js +13 -15
- package/dist/core/DatabaseManager.d.ts +5 -8
- package/dist/core/DatabaseManager.js +38 -40
- package/dist/core/QueryProcessor.d.ts +7 -9
- package/dist/core/QueryProcessor.js +27 -34
- package/dist/core/QueryView.d.ts +17 -5
- package/dist/core/QueryView.js +6 -7
- package/dist/core/StoreManager.d.ts +14 -16
- package/dist/core/StoreManager.js +26 -25
- package/dist/core/ViewRegistry.d.ts +5 -5
- package/dist/core/ViewRegistry.js +4 -4
- package/dist/core/index.d.ts +18 -13
- package/dist/core/index.js +32 -26
- package/dist/core/openIDBWithTimeout.d.ts +38 -36
- package/dist/core/openIDBWithTimeout.js +57 -54
- package/dist/core/queryUtils.d.ts +45 -0
- package/dist/core/queryUtils.js +69 -0
- package/dist/core/storeContract.d.ts +145 -0
- package/dist/core/storeContract.js +12 -0
- package/dist/environment.d.ts +28 -0
- package/dist/environment.js +21 -0
- package/dist/errorCodes.d.ts +118 -101
- package/dist/errorCodes.js +277 -260
- package/dist/errors.d.ts +170 -165
- package/dist/errors.js +161 -151
- package/dist/index.d.ts +30 -27
- package/dist/index.js +90 -82
- package/dist/interfaces/index.d.ts +108 -133
- package/dist/interfaces/index.js +5 -4
- package/dist/keys/index.d.ts +27 -29
- package/dist/keys/index.js +59 -49
- package/dist/mutators/RecordingTransaction.d.ts +16 -16
- package/dist/mutators/RecordingTransaction.js +31 -37
- package/dist/mutators/Transaction.d.ts +18 -26
- package/dist/mutators/Transaction.js +14 -20
- package/dist/mutators/UndoManager.d.ts +122 -131
- package/dist/mutators/UndoManager.js +149 -155
- package/dist/mutators/defineMutators.d.ts +24 -37
- package/dist/mutators/defineMutators.js +14 -20
- package/dist/mutators/inverseOp.d.ts +12 -15
- package/dist/mutators/inverseOp.js +12 -15
- package/dist/mutators/mutateActions.d.ts +10 -9
- package/dist/mutators/mutateActions.js +1 -1
- package/dist/mutators/readerActions.d.ts +9 -8
- package/dist/mutators/readerActions.js +2 -2
- package/dist/mutators/undoApply.d.ts +31 -27
- package/dist/mutators/undoApply.js +26 -24
- package/dist/policy/index.d.ts +5 -3
- package/dist/policy/index.js +5 -3
- package/dist/policy/types.d.ts +105 -101
- package/dist/policy/types.js +67 -66
- package/dist/query/client.d.ts +32 -16
- package/dist/query/client.js +103 -72
- package/dist/query/types.d.ts +37 -60
- package/dist/query/types.js +13 -33
- package/dist/react/AbloProvider.d.ts +7 -11
- package/dist/react/AbloProvider.js +24 -17
- package/dist/react/context.d.ts +27 -146
- package/dist/react/context.js +9 -10
- package/dist/react/index.d.ts +41 -42
- package/dist/react/index.js +37 -38
- package/dist/react/internalContext.d.ts +17 -19
- package/dist/react/useAblo.d.ts +23 -22
- package/dist/react/useAblo.js +17 -15
- package/dist/react/useCurrentUserId.d.ts +8 -7
- package/dist/react/useCurrentUserId.js +8 -7
- package/dist/react/useErrorListener.d.ts +7 -7
- package/dist/react/useErrorListener.js +11 -12
- package/dist/react/useMutationFailureListener.d.ts +8 -8
- package/dist/react/useMutationFailureListener.js +9 -9
- package/dist/react/useMutators.d.ts +11 -11
- package/dist/react/useMutators.js +10 -4
- package/dist/react/useReactive.js +2 -3
- package/dist/react/useSyncStatus.d.ts +4 -6
- package/dist/react/useUndoScope.d.ts +7 -9
- package/dist/react/useUndoScope.js +3 -3
- package/dist/schema/coordination.d.ts +21 -25
- package/dist/schema/coordination.js +21 -25
- package/dist/schema/ddl.d.ts +43 -39
- package/dist/schema/ddl.js +75 -68
- package/dist/schema/ddlLock.d.ts +35 -0
- package/dist/schema/ddlLock.js +46 -0
- package/dist/schema/diff.d.ts +99 -61
- package/dist/schema/diff.js +43 -34
- package/dist/schema/field.d.ts +37 -42
- package/dist/schema/field.js +36 -49
- package/dist/schema/generate.d.ts +12 -12
- package/dist/schema/generate.js +12 -12
- package/dist/schema/index.d.ts +5 -4
- package/dist/schema/index.js +29 -21
- package/dist/schema/model.d.ts +121 -146
- package/dist/schema/model.js +24 -35
- package/dist/schema/openapi.d.ts +10 -9
- package/dist/schema/openapi.js +7 -1
- package/dist/schema/queries.d.ts +30 -32
- package/dist/schema/queries.js +24 -25
- package/dist/schema/relation.d.ts +89 -99
- package/dist/schema/relation.js +13 -13
- package/dist/schema/residency.d.ts +38 -0
- package/dist/schema/residency.js +30 -0
- package/dist/schema/roles.d.ts +45 -27
- package/dist/schema/roles.js +52 -21
- package/dist/schema/schema.d.ts +36 -45
- package/dist/schema/schema.js +42 -39
- package/dist/schema/select.d.ts +13 -13
- package/dist/schema/select.js +13 -13
- package/dist/schema/serialize.d.ts +36 -39
- package/dist/schema/serialize.js +27 -31
- package/dist/schema/sugar.d.ts +17 -32
- package/dist/schema/sugar.js +14 -29
- package/dist/schema/{sync-delta-row.d.ts → syncDeltaRow.d.ts} +27 -50
- package/dist/schema/syncDeltaRow.js +89 -0
- package/dist/schema/tenancy.d.ts +44 -46
- package/dist/schema/tenancy.js +46 -48
- package/dist/server/adapter.d.ts +58 -58
- package/dist/server/adapter.js +13 -14
- package/dist/server/commit.d.ts +60 -64
- package/dist/server/index.d.ts +9 -10
- package/dist/server/index.js +1 -1
- package/dist/server/readConfig.d.ts +70 -0
- package/dist/server/readConfig.js +8 -0
- package/dist/server/storageMode.d.ts +23 -0
- package/dist/server/storageMode.js +17 -0
- package/dist/source/adapter.d.ts +31 -26
- package/dist/source/adapter.js +10 -10
- package/dist/source/adapters/drizzle.d.ts +28 -23
- package/dist/source/adapters/drizzle.js +34 -28
- package/dist/source/adapters/kysely.d.ts +27 -25
- package/dist/source/adapters/kysely.js +28 -26
- package/dist/source/adapters/memory.d.ts +8 -7
- package/dist/source/adapters/memory.js +10 -9
- package/dist/source/adapters/prisma.d.ts +13 -12
- package/dist/source/adapters/prisma.js +27 -29
- package/dist/source/conformance.d.ts +18 -11
- package/dist/source/conformance.js +27 -19
- package/dist/source/connector.d.ts +31 -32
- package/dist/source/connector.js +30 -28
- package/dist/source/connectorProtocol.d.ts +160 -0
- package/dist/source/connectorProtocol.js +162 -0
- package/dist/source/contract.d.ts +26 -27
- package/dist/source/contract.js +28 -29
- package/dist/source/factory.d.ts +94 -0
- package/dist/source/factory.js +268 -0
- package/dist/source/index.d.ts +10 -462
- package/dist/source/index.js +17 -421
- package/dist/source/migrations.d.ts +9 -9
- package/dist/source/migrations.js +9 -9
- package/dist/source/next.d.ts +10 -11
- package/dist/source/next.js +7 -8
- package/dist/source/pushQueue.d.ts +70 -48
- package/dist/source/pushQueue.js +36 -29
- package/dist/source/signing.d.ts +88 -0
- package/dist/source/signing.js +159 -0
- package/dist/source/types.d.ts +351 -0
- package/dist/source/types.js +43 -0
- package/dist/stores/ObjectStore.d.ts +11 -12
- package/dist/stores/ObjectStore.js +34 -35
- package/dist/stores/ObjectStoreContract.d.ts +12 -15
- package/dist/stores/SyncActionStore.d.ts +8 -12
- package/dist/stores/SyncActionStore.js +77 -46
- package/dist/surface.d.ts +28 -21
- package/dist/surface.js +28 -20
- package/dist/sync/{BootstrapHelper.d.ts → BootstrapFetcher.d.ts} +37 -45
- package/dist/sync/{BootstrapHelper.js → BootstrapFetcher.js} +101 -80
- package/dist/sync/ConnectionManager.d.ts +47 -50
- package/dist/sync/ConnectionManager.js +74 -70
- package/dist/sync/NetworkProbe.d.ts +27 -31
- package/dist/sync/NetworkProbe.js +67 -72
- package/dist/sync/{HydrationCoordinator.d.ts → OnDemandLoader.d.ts} +49 -36
- package/dist/sync/{HydrationCoordinator.js → OnDemandLoader.js} +79 -54
- package/dist/sync/{AreaOfInterestManager.d.ts → SubscriptionManager.d.ts} +45 -59
- package/dist/sync/{AreaOfInterestManager.js → SubscriptionManager.js} +44 -52
- package/dist/sync/SyncWebSocket.d.ts +175 -250
- package/dist/sync/SyncWebSocket.js +431 -769
- package/dist/sync/awaitClaimGrant.d.ts +18 -18
- package/dist/sync/awaitClaimGrant.js +38 -30
- package/dist/sync/bootstrapApply.d.ts +70 -0
- package/dist/sync/bootstrapApply.js +73 -0
- package/dist/sync/commitFrames.d.ts +44 -0
- package/dist/sync/commitFrames.js +94 -0
- package/dist/sync/createClaimStream.d.ts +23 -22
- package/dist/sync/createClaimStream.js +108 -25
- package/dist/sync/createPresenceStream.d.ts +19 -18
- package/dist/sync/createPresenceStream.js +25 -26
- package/dist/sync/createSnapshot.d.ts +13 -17
- package/dist/sync/createSnapshot.js +20 -26
- package/dist/sync/credentialLifecycle.d.ts +175 -0
- package/dist/sync/credentialLifecycle.js +322 -0
- package/dist/sync/deltaPipeline.d.ts +113 -0
- package/dist/sync/deltaPipeline.js +261 -0
- package/dist/sync/groupChange.d.ts +113 -0
- package/dist/sync/groupChange.js +242 -0
- package/dist/sync/heartbeat.d.ts +63 -0
- package/dist/sync/heartbeat.js +91 -0
- package/dist/sync/participants.d.ts +27 -27
- package/dist/sync/schemas.d.ts +3 -2
- package/dist/sync/schemas.js +14 -10
- package/dist/sync/syncCursor.d.ts +40 -0
- package/dist/sync/syncCursor.js +55 -0
- package/dist/sync/syncPlan.d.ts +54 -0
- package/dist/sync/syncPlan.js +50 -0
- package/dist/sync/syncPosition.d.ts +54 -49
- package/dist/sync/syncPosition.js +57 -52
- package/dist/sync/wsFrameHandlers.d.ts +116 -0
- package/dist/sync/wsFrameHandlers.js +374 -0
- package/dist/testing/fixtures/bootstrap.d.ts +21 -17
- package/dist/testing/fixtures/bootstrap.js +12 -6
- package/dist/testing/fixtures/deltas.d.ts +31 -34
- package/dist/testing/fixtures/deltas.js +30 -33
- package/dist/testing/fixtures/models.d.ts +11 -10
- package/dist/testing/fixtures/models.js +12 -10
- package/dist/testing/helpers/{react-wrapper.d.ts → reactWrapper.d.ts} +13 -10
- package/dist/testing/helpers/{react-wrapper.js → reactWrapper.js} +15 -12
- package/dist/testing/helpers/{sync-engine-harness.d.ts → syncEngineHarness.d.ts} +17 -18
- package/dist/testing/helpers/{sync-engine-harness.js → syncEngineHarness.js} +14 -11
- package/dist/testing/helpers/wait.d.ts +13 -8
- package/dist/testing/helpers/wait.js +13 -8
- package/dist/testing/index.d.ts +4 -4
- package/dist/testing/index.js +3 -3
- package/dist/testing/mocks/MockMutationExecutor.d.ts +18 -17
- package/dist/testing/mocks/MockMutationExecutor.js +15 -14
- package/dist/testing/mocks/MockNetworkMonitor.d.ts +8 -8
- package/dist/testing/mocks/MockNetworkMonitor.js +8 -8
- package/dist/testing/mocks/MockSyncContext.d.ts +21 -34
- package/dist/testing/mocks/MockSyncContext.js +16 -45
- package/dist/testing/mocks/MockSyncStore.d.ts +14 -14
- package/dist/testing/mocks/MockSyncStore.js +11 -11
- package/dist/testing/mocks/MockWebSocket.d.ts +28 -24
- package/dist/testing/mocks/MockWebSocket.js +22 -21
- package/dist/transactions/TransactionQueue.d.ts +190 -221
- package/dist/transactions/TransactionQueue.js +424 -822
- package/dist/transactions/TransactionStore.d.ts +20 -0
- package/dist/transactions/TransactionStore.js +53 -0
- package/dist/transactions/UnconfirmedWrites.d.ts +82 -0
- package/dist/transactions/UnconfirmedWrites.js +104 -0
- package/dist/transactions/coalesceRules.d.ts +58 -0
- package/dist/transactions/coalesceRules.js +140 -0
- package/dist/transactions/commitPayload.d.ts +130 -0
- package/dist/transactions/commitPayload.js +143 -0
- package/dist/transactions/deltaConfirmation.d.ts +58 -0
- package/dist/transactions/deltaConfirmation.js +215 -0
- package/dist/transactions/optimisticApply.d.ts +49 -0
- package/dist/transactions/optimisticApply.js +65 -0
- package/dist/transactions/replayValidation.d.ts +99 -0
- package/dist/transactions/replayValidation.js +111 -0
- package/dist/types/global.d.ts +46 -41
- package/dist/types/global.js +20 -19
- package/dist/types/index.d.ts +74 -80
- package/dist/types/index.js +22 -27
- package/dist/types/modelData.d.ts +10 -0
- package/dist/types/modelData.js +9 -0
- package/dist/types/participant.d.ts +20 -0
- package/dist/types/participant.js +10 -0
- package/dist/types/streams.d.ts +216 -209
- package/dist/types/streams.js +7 -7
- package/dist/utils/asyncIterator.d.ts +25 -32
- package/dist/utils/asyncIterator.js +25 -32
- package/dist/utils/duration.d.ts +12 -15
- package/dist/utils/duration.js +12 -15
- package/dist/utils/mobxSetup.d.ts +53 -0
- package/dist/utils/{mobx-setup.js → mobxSetup.js} +44 -100
- package/dist/webhooks/events.d.ts +21 -16
- package/dist/webhooks/events.js +10 -8
- package/dist/webhooks/index.d.ts +5 -7
- package/dist/webhooks/index.js +5 -7
- package/dist/{schema/sync-delta-wire.d.ts → wire/delta.d.ts} +58 -41
- package/dist/wire/delta.js +114 -0
- package/dist/wire/errorEnvelope.d.ts +35 -27
- package/dist/wire/errorEnvelope.js +38 -32
- package/dist/wire/frames.d.ts +150 -67
- package/dist/wire/frames.js +48 -1
- package/dist/wire/index.d.ts +18 -13
- package/dist/wire/index.js +36 -13
- package/dist/wire/listEnvelope.d.ts +16 -23
- package/dist/wire/listEnvelope.js +7 -6
- package/dist/wire/protocol.d.ts +38 -0
- package/dist/wire/protocol.js +38 -0
- package/dist/wire/protocolVersion.d.ts +60 -0
- package/dist/wire/protocolVersion.js +67 -0
- package/docs/api-keys.md +4 -3
- package/docs/coordination.md +59 -0
- package/docs/examples/existing-python-backend.md +3 -3
- package/docs/identity.md +4 -4
- package/docs/integration-guide.md +1 -1
- package/docs/react.md +1 -1
- package/docs/sessions.md +5 -7
- package/package.json +24 -21
- package/dist/ai-sdk/coordinated-tool.d.ts +0 -101
- package/dist/ai-sdk/coordination-context.d.ts +0 -52
- package/dist/client/index.d.ts +0 -36
- package/dist/client/index.js +0 -33
- package/dist/config/index.d.ts +0 -10
- package/dist/config/index.js +0 -12
- package/dist/core/query-utils.d.ts +0 -34
- package/dist/core/query-utils.js +0 -59
- package/dist/interfaces/headless.d.ts +0 -95
- package/dist/interfaces/headless.js +0 -41
- package/dist/query/index.d.ts +0 -6
- package/dist/query/index.js +0 -5
- package/dist/realtime/index.d.ts +0 -10
- package/dist/realtime/index.js +0 -9
- package/dist/schema/plane.d.ts +0 -23
- package/dist/schema/plane.js +0 -19
- package/dist/schema/sync-delta-row.js +0 -103
- package/dist/schema/sync-delta-wire.js +0 -102
- package/dist/server/next.d.ts +0 -51
- package/dist/server/next.js +0 -47
- package/dist/server/read-config.d.ts +0 -67
- package/dist/server/read-config.js +0 -8
- package/dist/server/storage-mode.d.ts +0 -1
- package/dist/server/storage-mode.js +0 -18
- package/dist/source/connector-protocol.d.ts +0 -159
- package/dist/source/connector-protocol.js +0 -161
- package/dist/sync/OfflineFlush.d.ts +0 -9
- package/dist/sync/OfflineFlush.js +0 -22
- package/dist/sync/OfflineTransactionStore.d.ts +0 -37
- package/dist/sync/OfflineTransactionStore.js +0 -263
- package/dist/transactions/OptimisticEchoTracker.d.ts +0 -82
- package/dist/transactions/OptimisticEchoTracker.js +0 -104
- package/dist/transactions/index.d.ts +0 -16
- package/dist/transactions/index.js +0 -7
- package/dist/transactions/mutation-error-handler.d.ts +0 -5
- package/dist/transactions/mutation-error-handler.js +0 -39
- package/dist/utils/mobx-setup.d.ts +0 -42
package/dist/errors.d.ts
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* package should never reference an unpublished internal package from emitted
|
|
6
|
-
* JS; strict bundlers surface that immediately.
|
|
7
|
-
*
|
|
8
|
-
* ### Two patterns for consumers
|
|
2
|
+
* The typed error hierarchy for this package. Every error the SDK throws is an
|
|
3
|
+
* {@link AbloError} or one of its subclasses, so a consumer can catch broadly or
|
|
4
|
+
* narrowly. There are two equivalent ways to tell errors apart:
|
|
9
5
|
*
|
|
10
6
|
* ```ts
|
|
11
|
-
* //
|
|
7
|
+
* // By class, with instanceof
|
|
12
8
|
* if (err instanceof AbloRateLimitError) backoff(err.retryAfterSeconds);
|
|
13
9
|
*
|
|
14
|
-
* //
|
|
15
|
-
* //
|
|
10
|
+
* // By discriminator string, for cases where class identity is lost —
|
|
11
|
+
* // for example after an error crosses a web worker boundary
|
|
16
12
|
* if (err.type === 'AbloRateLimitError') { ... }
|
|
17
13
|
* ```
|
|
18
14
|
*
|
|
@@ -22,37 +18,41 @@ import type { ErrorCode } from './errorCodes.js';
|
|
|
22
18
|
import { type WireClaimSummary, type ModelClaim, type ModelTarget, type ParticipantKind } from './coordination/schema.js';
|
|
23
19
|
export type { ErrorCode, WireErrorCode, ErrorCategory, ErrorCodeSpec, RecoveryClass } from './errorCodes.js';
|
|
24
20
|
export { ERROR_CODES, ERROR_CONTRACT_VERSION, errorCodeSpec, isRetryableCode, classifyRecovery, recoveryClassSchema, RECOVERY_CLASSES, } from './errorCodes.js';
|
|
25
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* The base class for every error this SDK throws. It carries the fields common
|
|
23
|
+
* to all of them — a {@link type} discriminator, an optional stable {@link code},
|
|
24
|
+
* and optional HTTP and diagnostic metadata — and defines the shared JSON and
|
|
25
|
+
* string serialization. Every other error class extends it.
|
|
26
|
+
*/
|
|
26
27
|
export declare class AbloError extends Error {
|
|
27
|
-
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
28
|
+
/** A discriminator string equal to the class name. Switch on `error.type` to
|
|
29
|
+
* distinguish error kinds when `instanceof` is unreliable, such as after an
|
|
30
|
+
* error has crossed a serialization boundary. */
|
|
30
31
|
readonly type: string;
|
|
31
|
-
/**
|
|
32
|
-
* {@link ErrorCode} registry —
|
|
33
|
-
* `'capability_scope_denied'
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
32
|
+
/** A stable, machine-readable identifier for the error, drawn from the
|
|
33
|
+
* {@link ErrorCode} registry — for example `'apikey_invalid'` or
|
|
34
|
+
* `'capability_scope_denied'` — suitable for logs, metrics, and `switch`
|
|
35
|
+
* handling. It is typed as a plain `string` rather than {@link ErrorCode} so
|
|
36
|
+
* this client can still surface a code from a newer server that it does not
|
|
37
|
+
* yet recognize; code producers are constrained at the constructor instead. */
|
|
37
38
|
readonly code?: string;
|
|
38
|
-
/** HTTP status code when the error originated from an HTTP response. */
|
|
39
|
+
/** HTTP status code, when the error originated from an HTTP response. */
|
|
39
40
|
readonly httpStatus?: number;
|
|
40
|
-
/**
|
|
41
|
-
* `x-request-id
|
|
41
|
+
/** A correlation id for tracing a request through the server, present when the
|
|
42
|
+
* server returned one on the `x-request-id` header. Include it in support
|
|
43
|
+
* requests. */
|
|
42
44
|
readonly requestId?: string;
|
|
43
|
-
/**
|
|
44
|
-
* `'dataroomMember.grants.subject'
|
|
45
|
-
*
|
|
45
|
+
/** The specific input that caused the error, as a model or field path such as
|
|
46
|
+
* `'dataroomMember.grants.subject'`, so tooling can point at the exact
|
|
47
|
+
* offending value. */
|
|
46
48
|
readonly param?: string;
|
|
47
|
-
/**
|
|
48
|
-
*
|
|
49
|
+
/** A link to the documentation for this error's {@link code}. When not set
|
|
50
|
+
* explicitly, it is derived from the code by {@link docUrlForCode}. */
|
|
49
51
|
readonly docUrl?: string;
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* conflicting rows.
|
|
53
|
-
*
|
|
54
|
-
* structured error keeps its detail through `toJSON` instead of being
|
|
55
|
-
* flattened to a bare message. */
|
|
52
|
+
/** Extra structured data specific to this error, merged into the serialized
|
|
53
|
+
* envelope — for example a schema push's `{ warnings, unexecutable }`, or the
|
|
54
|
+
* conflicting rows of a stale write. This detail is preserved through
|
|
55
|
+
* {@link toJSON} rather than flattened into the message. */
|
|
56
56
|
readonly details?: Readonly<Record<string, unknown>>;
|
|
57
57
|
constructor(message: string, options?: {
|
|
58
58
|
code?: ErrorCode;
|
|
@@ -64,9 +64,10 @@ export declare class AbloError extends Error {
|
|
|
64
64
|
details?: Readonly<Record<string, unknown>>;
|
|
65
65
|
});
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
68
|
-
* doc_url, request_id }
|
|
69
|
-
*
|
|
67
|
+
* Serializes the error to its wire shape: `{ type, code, param, message,
|
|
68
|
+
* doc_url, request_id }`, with any {@link details} merged in. This is the same
|
|
69
|
+
* JSON shape the SDK uses across HTTP bodies, WebSocket frames, and logs, so a
|
|
70
|
+
* consumer parses every Ablo error the same way.
|
|
70
71
|
*/
|
|
71
72
|
toJSON(): {
|
|
72
73
|
type: string;
|
|
@@ -78,19 +79,20 @@ export declare class AbloError extends Error {
|
|
|
78
79
|
[key: string]: unknown;
|
|
79
80
|
};
|
|
80
81
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
82
|
+
* Formats the error as a single line for logs and string interpolation:
|
|
83
|
+
* `AbloValidationError [code]: message (see docs) [request_id: …]`.
|
|
83
84
|
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
* payload
|
|
85
|
+
* It intentionally omits {@link details}, the cause, and the stack, which are
|
|
86
|
+
* what turn a logged rich error into an unreadable wall of text. The full
|
|
87
|
+
* structured payload remains available through {@link toJSON}; this is the
|
|
88
|
+
* concise human-readable form.
|
|
87
89
|
*/
|
|
88
90
|
toString(): string;
|
|
89
91
|
}
|
|
90
92
|
/**
|
|
91
|
-
*
|
|
92
|
-
* lives, so every error
|
|
93
|
-
*
|
|
93
|
+
* Builds the documentation URL for a stable error {@link ErrorCode}. This is the
|
|
94
|
+
* single place the URL convention lives, so every error that carries a code gets
|
|
95
|
+
* a `doc_url` automatically.
|
|
94
96
|
*/
|
|
95
97
|
export declare function docUrlForCode(code: ErrorCode): string;
|
|
96
98
|
/** 401 — invalid/missing/expired credentials. */
|
|
@@ -128,11 +130,11 @@ export declare class AbloValidationError extends AbloError {
|
|
|
128
130
|
readonly type: "AbloValidationError";
|
|
129
131
|
}
|
|
130
132
|
/**
|
|
131
|
-
*
|
|
132
|
-
* caller's
|
|
133
|
-
* the typed resource
|
|
134
|
-
*
|
|
135
|
-
*
|
|
133
|
+
* An update or delete addressed a row that does not exist, or lies outside the
|
|
134
|
+
* caller's organization (HTTP 404). Such targets are reported on
|
|
135
|
+
* {@link CommitReceipt.missingIds}, and the typed resource methods raise this
|
|
136
|
+
* error rather than returning a successful receipt for a write that quietly
|
|
137
|
+
* matched zero rows. The absent ids are carried on {@link missingIds}.
|
|
136
138
|
*/
|
|
137
139
|
export declare class AbloNotFoundError extends AbloError {
|
|
138
140
|
readonly type: "AbloNotFoundError";
|
|
@@ -147,50 +149,47 @@ export declare class AbloServerError extends AbloError {
|
|
|
147
149
|
readonly type: "AbloServerError";
|
|
148
150
|
}
|
|
149
151
|
/**
|
|
150
|
-
*
|
|
151
|
-
*
|
|
152
|
-
* response is to re-read
|
|
152
|
+
* A write carried a `readAt` watermark, but the target row has changed since
|
|
153
|
+
* that point (HTTP 409). The snapshot the caller reasoned from is stale, so the
|
|
154
|
+
* safe response is to re-read the row and regenerate the write.
|
|
153
155
|
*
|
|
154
|
-
*
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
* regeneration (only re-think the slides that changed, not the whole
|
|
158
|
-
* deck).
|
|
156
|
+
* {@link conflicts} lists the specific model-and-id pairs that changed during
|
|
157
|
+
* the window between the read and the write, which lets a caller regenerate only
|
|
158
|
+
* the rows that actually moved rather than everything.
|
|
159
159
|
*/
|
|
160
160
|
export declare class AbloStaleContextError extends AbloError {
|
|
161
161
|
readonly type: "AbloStaleContextError";
|
|
162
162
|
/** Sync id at the caller's `readAt` when the write was attempted. */
|
|
163
163
|
readonly readAt?: number;
|
|
164
164
|
/** Entities that received deltas between `readAt` and the write. */
|
|
165
|
-
readonly conflicts?:
|
|
165
|
+
readonly conflicts?: readonly {
|
|
166
166
|
readonly model: string;
|
|
167
167
|
readonly id: string;
|
|
168
168
|
readonly observedSyncId: number;
|
|
169
|
-
}
|
|
169
|
+
}[];
|
|
170
170
|
constructor(message: string, options?: {
|
|
171
171
|
code?: ErrorCode;
|
|
172
172
|
httpStatus?: number;
|
|
173
173
|
requestId?: string;
|
|
174
174
|
cause?: unknown;
|
|
175
175
|
readAt?: number;
|
|
176
|
-
conflicts?:
|
|
176
|
+
conflicts?: readonly {
|
|
177
177
|
readonly model: string;
|
|
178
178
|
readonly id: string;
|
|
179
179
|
readonly observedSyncId: number;
|
|
180
|
-
}
|
|
180
|
+
}[];
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
183
|
/**
|
|
184
|
-
* The functional `update(id, current => next)` form
|
|
185
|
-
* budget
|
|
186
|
-
* concurrent writes
|
|
184
|
+
* The functional `update(id, current => next)` form gave up after exhausting its
|
|
185
|
+
* reconcile budget, because the row stayed continuously contended under
|
|
186
|
+
* sustained concurrent writes and no attempt could land its compare-and-swap.
|
|
187
187
|
*
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
* last underlying conflict that drove the final retry is on `.cause`.
|
|
188
|
+
* The SDK reaches this only at the extreme: it has already re-read, recomputed,
|
|
189
|
+
* and retried on every intervening conflict on the caller's behalf. Catch it to
|
|
190
|
+
* back off and retry later, raise the `retries` budget, or move the row to the
|
|
191
|
+
* WebSocket transport, which queues writers fairly instead of racing them. The
|
|
192
|
+
* last underlying conflict is available on `cause`.
|
|
194
193
|
*/
|
|
195
194
|
export declare class AbloContentionError extends AbloError {
|
|
196
195
|
readonly type: "AbloContentionError";
|
|
@@ -214,7 +213,7 @@ export interface ClaimContext {
|
|
|
214
213
|
readonly field?: string;
|
|
215
214
|
readonly status?: string;
|
|
216
215
|
readonly position?: number;
|
|
217
|
-
/**
|
|
216
|
+
/** The epoch-milliseconds timestamp at which the claim expires. */
|
|
218
217
|
readonly expiresAt?: number;
|
|
219
218
|
readonly declaredAt?: number;
|
|
220
219
|
readonly entityType?: string;
|
|
@@ -240,19 +239,19 @@ export declare function formatClaimedErrorMessage(args: {
|
|
|
240
239
|
*/
|
|
241
240
|
export declare class AbloClaimedError extends AbloError {
|
|
242
241
|
readonly type: "AbloClaimedError";
|
|
243
|
-
readonly claims?:
|
|
242
|
+
readonly claims?: readonly ClaimErrorClaim[];
|
|
244
243
|
constructor(message: string, options?: {
|
|
245
244
|
code?: ErrorCode;
|
|
246
245
|
httpStatus?: number;
|
|
247
246
|
requestId?: string;
|
|
248
247
|
cause?: unknown;
|
|
249
|
-
claims?:
|
|
248
|
+
claims?: readonly ClaimErrorClaim[];
|
|
250
249
|
});
|
|
251
250
|
}
|
|
252
251
|
/**
|
|
253
|
-
*
|
|
254
|
-
* absent parts
|
|
255
|
-
*
|
|
252
|
+
* Builds a human-readable label for a claim target by joining its `model`, `id`,
|
|
253
|
+
* and `field` with `/`, omitting any absent parts and falling back to `'target'`
|
|
254
|
+
* when none are present.
|
|
256
255
|
*/
|
|
257
256
|
export declare function claimTargetLabel(target: {
|
|
258
257
|
readonly model?: string;
|
|
@@ -260,10 +259,9 @@ export declare function claimTargetLabel(target: {
|
|
|
260
259
|
readonly field?: string;
|
|
261
260
|
}): string;
|
|
262
261
|
/**
|
|
263
|
-
*
|
|
264
|
-
*
|
|
265
|
-
*
|
|
266
|
-
* holder whose metadata shapes the message.
|
|
262
|
+
* Builds the {@link AbloClaimedError} for a write that was rejected because the
|
|
263
|
+
* row is claimed. The first entry in `claims` is treated as the current holder,
|
|
264
|
+
* and its metadata shapes the error message.
|
|
267
265
|
*/
|
|
268
266
|
export declare function claimedError(target: {
|
|
269
267
|
readonly model?: string;
|
|
@@ -271,36 +269,35 @@ export declare function claimedError(target: {
|
|
|
271
269
|
readonly field?: string;
|
|
272
270
|
}, claims: readonly ModelClaim[], code: 'model_claimed' | 'model_claimed_timeout' | 'queue_too_deep'): AbloClaimedError;
|
|
273
271
|
/**
|
|
274
|
-
*
|
|
275
|
-
*
|
|
276
|
-
*
|
|
277
|
-
* attenuate (or request) a capability that would pass on retry.
|
|
272
|
+
* A structured description of the capability that would be needed to satisfy a
|
|
273
|
+
* denied request. The server emits enough detail for the client to request, or
|
|
274
|
+
* narrow an existing capability into, one that would pass on retry.
|
|
278
275
|
*/
|
|
279
276
|
export interface RequiredCapability {
|
|
280
|
-
/**
|
|
281
|
-
* `"subscribe"
|
|
277
|
+
/** The operation or capability scope, for example `"slide.update"` or
|
|
278
|
+
* `"subscribe"`. */
|
|
282
279
|
readonly scope: string;
|
|
283
|
-
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
280
|
+
/** The concrete constraints the capability must satisfy — for example
|
|
281
|
+
* `{ syncGroup: ["org_abc"] }` for a rejected subscription. Treat unknown
|
|
282
|
+
* keys as forward-compatible additions and ignore them. */
|
|
286
283
|
readonly constraints?: Readonly<Record<string, readonly string[] | string>>;
|
|
287
|
-
/**
|
|
284
|
+
/** A hint at the issuer — a public-key fingerprint or well-known URL
|
|
285
|
+
* fragment. */
|
|
288
286
|
readonly issuer?: string;
|
|
289
|
-
/**
|
|
287
|
+
/** The maximum lifetime, in seconds, the server suggests for the narrowed
|
|
288
|
+
* capability. */
|
|
290
289
|
readonly ttlSeconds?: number;
|
|
291
|
-
/**
|
|
292
|
-
* retry
|
|
290
|
+
/** A single-use value to embed in the retried request's capability, which
|
|
291
|
+
* ties the retry to this specific denial and prevents replaying an old
|
|
292
|
+
* capability. */
|
|
293
293
|
readonly nonce?: string;
|
|
294
294
|
}
|
|
295
295
|
/**
|
|
296
|
-
*
|
|
297
|
-
* regardless of
|
|
298
|
-
* `/v1/commits` response body,
|
|
299
|
-
* shape
|
|
300
|
-
*
|
|
301
|
-
* Linear-style correlation receipt — no cryptographic signature
|
|
302
|
-
* (single-tenant trust boundary). A Hub signature is a forward-
|
|
303
|
-
* compatible extension when cross-org agent crossings arrive.
|
|
296
|
+
* The receipt returned for every commit, whether it succeeded or was rejected,
|
|
297
|
+
* and regardless of how it was sent — the WebSocket `mutation_result` payload,
|
|
298
|
+
* the HTTP `/v1/commits` response body, and an agent job's result all use this
|
|
299
|
+
* one shape. It is a correlation receipt, carrying the ids and outcome needed to
|
|
300
|
+
* reconcile a commit rather than a cryptographic proof.
|
|
304
301
|
*/
|
|
305
302
|
export interface CommitReceipt {
|
|
306
303
|
readonly object: 'commit_receipt';
|
|
@@ -308,7 +305,7 @@ export interface CommitReceipt {
|
|
|
308
305
|
readonly clientTxId: string;
|
|
309
306
|
/** Server-issued opaque commit id — typically `String(lastSyncId)`. */
|
|
310
307
|
readonly serverTxId: string;
|
|
311
|
-
/**
|
|
308
|
+
/** A convenience boolean, equal to `status === 'confirmed'`. */
|
|
312
309
|
readonly success: boolean;
|
|
313
310
|
/** `'confirmed'` on apply, `'rejected'` on any failure. */
|
|
314
311
|
readonly status: 'confirmed' | 'rejected';
|
|
@@ -318,12 +315,12 @@ export interface CommitReceipt {
|
|
|
318
315
|
/** Number of operations metered. Reported on both success and
|
|
319
316
|
* rejection so quota systems see attempted work. */
|
|
320
317
|
readonly ops?: number;
|
|
321
|
-
/** Ids of
|
|
322
|
-
*
|
|
323
|
-
*
|
|
318
|
+
/** Ids of update or delete targets that matched no row. Present and non-empty
|
|
319
|
+
* only when a write missed; the typed resource methods raise
|
|
320
|
+
* {@link AbloNotFoundError} from it. */
|
|
324
321
|
readonly missingIds?: readonly string[];
|
|
325
|
-
/**
|
|
326
|
-
*
|
|
322
|
+
/** Present on rejection. When set, `requiredCapability` carries the structured
|
|
323
|
+
* hint describing what would let the request succeed on retry. */
|
|
327
324
|
readonly error?: {
|
|
328
325
|
readonly code: string;
|
|
329
326
|
readonly message: string;
|
|
@@ -332,71 +329,81 @@ export interface CommitReceipt {
|
|
|
332
329
|
};
|
|
333
330
|
}
|
|
334
331
|
/**
|
|
335
|
-
* A scoped credential was denied
|
|
336
|
-
* expired (`capability_invalid`), or the connection's
|
|
337
|
-
*
|
|
338
|
-
*
|
|
339
|
-
*
|
|
332
|
+
* A scoped credential was denied, either because the key is unknown, revoked, or
|
|
333
|
+
* expired (`capability_invalid`), or because the connection's scope does not
|
|
334
|
+
* cover the attempted action (`capability_scope_denied`). For restricted (`rk_`)
|
|
335
|
+
* API keys this is a server-side check against the key's granted sync groups and
|
|
336
|
+
* operations.
|
|
340
337
|
*
|
|
341
|
-
*
|
|
342
|
-
* checks
|
|
343
|
-
*
|
|
344
|
-
*
|
|
345
|
-
*
|
|
346
|
-
* carry for the request to succeed on retry.
|
|
338
|
+
* It extends {@link AbloPermissionError}, so it is caught both by code that
|
|
339
|
+
* specifically checks for `CapabilityError` and by code that only distinguishes
|
|
340
|
+
* the broader permission category. When present, {@link requiredCapability}
|
|
341
|
+
* describes the scope a key would need to carry for the request to succeed on
|
|
342
|
+
* retry.
|
|
347
343
|
*/
|
|
348
344
|
export declare class CapabilityError extends AbloPermissionError {
|
|
349
345
|
readonly requiredCapability?: RequiredCapability;
|
|
350
346
|
constructor(code: 'capability_scope_denied' | 'capability_invalid', message: string, requiredCapability?: RequiredCapability);
|
|
351
347
|
}
|
|
352
348
|
/**
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
* rather than showing a generic retry option.
|
|
349
|
+
* Thrown when the login session itself is invalid or expired, signaling that the
|
|
350
|
+
* user should be sent to sign in again rather than offered a generic retry.
|
|
356
351
|
*
|
|
357
|
-
*
|
|
358
|
-
*
|
|
359
|
-
*
|
|
360
|
-
* (`instanceof AbloAuthenticationError` / `e.type === 'AbloAuthenticationError'`)
|
|
361
|
-
* now sees session failures too.
|
|
352
|
+
* It extends {@link AbloAuthenticationError}, so it is caught both by code using
|
|
353
|
+
* the {@link SyncSessionError.isSessionError} check and by code that catches the
|
|
354
|
+
* authentication category in general.
|
|
362
355
|
*/
|
|
363
356
|
export declare class SyncSessionError extends AbloAuthenticationError {
|
|
364
357
|
readonly isSessionError = true;
|
|
365
358
|
readonly statusCode: number;
|
|
366
359
|
constructor(message: string, statusCode?: number);
|
|
367
360
|
/**
|
|
368
|
-
*
|
|
361
|
+
* Returns true when a value is a {@link SyncSessionError}, or any error-like
|
|
362
|
+
* object that reports itself as a session error through an `isSessionError`
|
|
363
|
+
* flag.
|
|
369
364
|
*/
|
|
370
365
|
static isSessionError(error: unknown): error is SyncSessionError;
|
|
371
366
|
/**
|
|
372
|
-
*
|
|
367
|
+
* Determines whether an HTTP response means the login session has expired and
|
|
368
|
+
* the user should sign in again. When the body carries a structured Ablo error
|
|
369
|
+
* code, the decision is made from that code's recovery class; otherwise a bare
|
|
370
|
+
* 401 is treated as an expiry and a 403 is not.
|
|
373
371
|
*/
|
|
374
372
|
static isSessionErrorResponse(status: number, body?: string): boolean;
|
|
375
373
|
}
|
|
376
374
|
/**
|
|
377
|
-
*
|
|
378
|
-
*
|
|
379
|
-
*
|
|
380
|
-
*
|
|
381
|
-
*
|
|
375
|
+
* The WebSocket-close counterpart to {@link SyncSessionError.isSessionErrorResponse}:
|
|
376
|
+
* returns true for close reasons that mean the short-lived access credential
|
|
377
|
+
* (`ek_` or `rk_`) has expired. The server closes such sockets with code 4001
|
|
378
|
+
* and reason `'credential_expired'`. Because the credential is re-mintable from
|
|
379
|
+
* the still-valid login, the connection layer re-mints it and reconnects rather
|
|
380
|
+
* than signing the user out or clearing local data. Every other session close
|
|
381
|
+
* reason, such as a revoked key or a genuinely lost login, stays terminal.
|
|
382
|
+
*/
|
|
383
|
+
export declare function isAccessCredentialExpiryCloseReason(reason: string): boolean;
|
|
384
|
+
/**
|
|
385
|
+
* Coerces any thrown value into an {@link AbloError}, so a consumer never catches
|
|
386
|
+
* an untyped error from the SDK. An error that is already an {@link AbloError}
|
|
387
|
+
* passes through unchanged, preserving its subclass, `code`, and `httpStatus`; a
|
|
388
|
+
* plain `Error` keeps its message and is retained as the `cause` (carrying any
|
|
389
|
+
* `code` attached to it); anything else is stringified.
|
|
382
390
|
*
|
|
383
|
-
*
|
|
384
|
-
*
|
|
385
|
-
*
|
|
386
|
-
*
|
|
391
|
+
* The SDK applies this at its public async boundaries so that `instanceof
|
|
392
|
+
* AbloError` and `error.type` hold for whatever a consumer catches, no matter
|
|
393
|
+
* which internal layer — transport, local storage, bootstrap, or a third-party
|
|
394
|
+
* throw — produced the original error.
|
|
387
395
|
*/
|
|
388
396
|
export declare function toAbloError(err: unknown): AbloError;
|
|
389
397
|
/**
|
|
390
|
-
*
|
|
391
|
-
* single code
|
|
392
|
-
* request
|
|
393
|
-
*
|
|
398
|
+
* Builds the appropriate typed {@link AbloError} from a wire error. This is the
|
|
399
|
+
* single code-to-class mapping shared by every transport that can reject a
|
|
400
|
+
* request — HTTP responses through {@link translateHttpError}, WebSocket result
|
|
401
|
+
* frames, and agent-job receipts.
|
|
394
402
|
*
|
|
395
|
-
*
|
|
396
|
-
* canonical
|
|
397
|
-
*
|
|
398
|
-
*
|
|
399
|
-
* hierarchy and loses `code`/`httpStatus`/retryability.
|
|
403
|
+
* It decides by code first, then by status. Because a known {@link ErrorCode}
|
|
404
|
+
* carries its canonical HTTP status in the registry, a transport that has no
|
|
405
|
+
* status of its own (such as the WebSocket commit path) still produces the right
|
|
406
|
+
* subclass, with its `code`, status, and retryability intact.
|
|
400
407
|
*/
|
|
401
408
|
export declare function errorFromWire(message: string, opts?: {
|
|
402
409
|
code?: string;
|
|
@@ -405,31 +412,29 @@ export declare function errorFromWire(message: string, opts?: {
|
|
|
405
412
|
httpStatus?: number;
|
|
406
413
|
requestId?: string;
|
|
407
414
|
requiredCapability?: RequiredCapability;
|
|
408
|
-
claims?:
|
|
415
|
+
claims?: readonly ClaimErrorClaim[];
|
|
409
416
|
}): AbloError;
|
|
410
417
|
/**
|
|
411
|
-
*
|
|
412
|
-
*
|
|
413
|
-
*
|
|
414
|
-
*
|
|
415
|
-
*
|
|
416
|
-
* the actual class selection to {@link errorFromWire} (shared with the
|
|
417
|
-
* frame transports) after extracting code/message from the HTTP body.
|
|
418
|
+
* Translates an HTTP response into the appropriate typed {@link AbloError}. This
|
|
419
|
+
* is the single mapping every request path routes a non-2xx response through, so
|
|
420
|
+
* the error a consumer sees is always the right subclass. After extracting the
|
|
421
|
+
* code and message from the response body, it delegates the class selection to
|
|
422
|
+
* {@link errorFromWire}, the same logic the frame transports use.
|
|
418
423
|
*/
|
|
419
424
|
export declare function translateHttpError(status: number, body: unknown, requestId?: string): AbloError;
|
|
420
425
|
/**
|
|
421
|
-
*
|
|
422
|
-
* — a top-level `code`, a nested `error.code`, or a string `error`.
|
|
423
|
-
*
|
|
424
|
-
*
|
|
425
|
-
*
|
|
426
|
-
*
|
|
426
|
+
* Reports whether an HTTP error body carries a code that {@link translateHttpError}
|
|
427
|
+
* can read — a top-level `code`, a nested `error.code`, or a string `error`. A
|
|
428
|
+
* caller that has a meaningful fallback code uses this to choose between routing
|
|
429
|
+
* a structured body through {@link translateHttpError} and throwing its own typed
|
|
430
|
+
* error with the fallback when the body is bare, rather than producing an error
|
|
431
|
+
* with no code.
|
|
427
432
|
*/
|
|
428
433
|
export declare function hasWireCode(body: unknown): boolean;
|
|
429
434
|
/**
|
|
430
|
-
*
|
|
431
|
-
* top-level `code` or a nested `error.code
|
|
432
|
-
* code-less
|
|
433
|
-
*
|
|
435
|
+
* Extracts the canonical error `code` from a raw HTTP error body string — the
|
|
436
|
+
* top-level `code` or a nested `error.code` — returning `undefined` for a
|
|
437
|
+
* non-JSON or code-less body. Session-error detection uses it to tell a genuine
|
|
438
|
+
* session expiry apart from other authentication failures.
|
|
434
439
|
*/
|
|
435
440
|
export declare function extractWireCode(body?: string): string | undefined;
|