@abloatai/transaction 0.56.0 → 0.58.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/CONVENTIONS.md +54 -10
- package/README.md +3 -1
- package/dist/ai-sdk/modelTools.d.ts +3 -3
- package/dist/ai-sdk/modelTools.d.ts.map +1 -1
- package/dist/ai-sdk/modelTools.js +1 -1
- package/dist/ai-sdk/modelTools.js.map +1 -1
- package/dist/ai-sdk/updateTool.d.ts +5 -7
- package/dist/ai-sdk/updateTool.d.ts.map +1 -1
- package/dist/ai-sdk/updateTool.js +3 -5
- package/dist/ai-sdk/updateTool.js.map +1 -1
- package/dist/auth/capability.d.ts +5 -0
- package/dist/auth/capability.d.ts.map +1 -1
- package/dist/auth/capability.js +5 -0
- package/dist/auth/capability.js.map +1 -1
- package/dist/auth/capabilityLifecycle.d.ts +1 -1
- package/dist/auth/capabilityLifecycle.d.ts.map +1 -1
- package/dist/auth/credentialPolicy.d.ts +1 -1
- package/dist/auth/credentialPolicy.d.ts.map +1 -1
- package/dist/auth/identity.d.ts +3 -3
- package/dist/auth/identity.d.ts.map +1 -1
- package/dist/auth/identity.js +5 -5
- package/dist/auth/identity.js.map +1 -1
- package/dist/auth/index.d.ts +4 -208
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +4 -330
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +218 -0
- package/dist/auth/runtime.d.ts.map +1 -0
- package/dist/auth/runtime.js +336 -0
- package/dist/auth/runtime.js.map +1 -0
- package/dist/auth/sessionMint.d.ts +1 -1
- package/dist/auth/sessionMint.d.ts.map +1 -1
- package/dist/auth/sessionMint.js +2 -1
- package/dist/auth/sessionMint.js.map +1 -1
- package/dist/branches.d.ts +25 -21
- package/dist/branches.d.ts.map +1 -1
- package/dist/branches.js +3 -0
- package/dist/branches.js.map +1 -1
- package/dist/{coordination/awaitClaimGrant.d.ts → claims/awaitGrant.d.ts} +1 -1
- package/dist/claims/awaitGrant.d.ts.map +1 -0
- package/dist/{coordination/awaitClaimGrant.js → claims/awaitGrant.js} +4 -4
- package/dist/claims/awaitGrant.js.map +1 -0
- package/dist/{wire/claims.d.ts → claims/contract.d.ts} +1 -1
- package/dist/claims/contract.d.ts.map +1 -0
- package/dist/{wire/claims.js → claims/contract.js} +2 -2
- package/dist/claims/contract.js.map +1 -0
- package/dist/{wire/claimEvent.d.ts → claims/eventContract.d.ts} +1 -1
- package/dist/claims/eventContract.d.ts.map +1 -0
- package/dist/{wire/claimEvent.js → claims/eventContract.js} +1 -1
- package/dist/claims/eventContract.js.map +1 -0
- package/dist/{coordination → claims}/events.d.ts +7 -11
- package/dist/claims/events.d.ts.map +1 -0
- package/dist/claims/events.js +8 -0
- package/dist/claims/events.js.map +1 -0
- package/dist/{coordination/claimHeartbeatLoop.d.ts → claims/heartbeat.d.ts} +1 -1
- package/dist/claims/heartbeat.d.ts.map +1 -0
- package/dist/{coordination/claimHeartbeatLoop.js → claims/heartbeat.js} +1 -1
- package/dist/claims/heartbeat.js.map +1 -0
- package/dist/claims/index.d.ts +17 -0
- package/dist/claims/index.d.ts.map +1 -0
- package/dist/claims/index.js +16 -0
- package/dist/claims/index.js.map +1 -0
- package/dist/claims/lifetime.d.ts +26 -0
- package/dist/claims/lifetime.d.ts.map +1 -0
- package/dist/claims/lifetime.js +62 -0
- package/dist/claims/lifetime.js.map +1 -0
- package/dist/{coordination → claims}/locator.d.ts +1 -1
- package/dist/claims/locator.d.ts.map +1 -0
- package/dist/{coordination → claims}/locator.js +2 -2
- package/dist/claims/locator.js.map +1 -0
- package/dist/{coordination/claimMeta.d.ts → claims/meta.d.ts} +1 -1
- package/dist/claims/meta.d.ts.map +1 -0
- package/dist/{coordination/claimMeta.js → claims/meta.js} +1 -1
- package/dist/claims/meta.js.map +1 -0
- package/dist/claims/routes.d.ts +59 -0
- package/dist/claims/routes.d.ts.map +1 -0
- package/dist/claims/routes.js +69 -0
- package/dist/claims/routes.js.map +1 -0
- package/dist/claims/targetConflict.d.ts.map +1 -0
- package/dist/claims/targetConflict.js.map +1 -0
- package/dist/{coordination → claims}/trace.d.ts +2 -2
- package/dist/claims/trace.d.ts.map +1 -0
- package/dist/{coordination → claims}/trace.js +5 -5
- package/dist/claims/trace.js.map +1 -0
- package/dist/{ablo.d.ts → client/ablo.d.ts} +6 -15
- package/dist/client/ablo.d.ts.map +1 -0
- package/dist/{ablo.js → client/ablo.js} +2 -2
- package/dist/client/ablo.js.map +1 -0
- package/dist/{transactionLayer.d.ts → client/contract.d.ts} +12 -14
- package/dist/client/contract.d.ts.map +1 -0
- package/dist/{transactionLayer.js → client/contract.js} +4 -5
- package/dist/client/contract.js.map +1 -0
- package/dist/{headlessClient.d.ts → client/headless.d.ts} +4 -4
- package/dist/client/headless.d.ts.map +1 -0
- package/dist/{headlessClient.js → client/headless.js} +8 -10
- package/dist/{headlessClient.js.map → client/headless.js.map} +1 -1
- package/dist/client/index.d.ts +11 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +11 -0
- package/dist/client/index.js.map +1 -0
- package/dist/{resources → client/resources}/functionalUpdate.d.ts +4 -4
- package/dist/client/resources/functionalUpdate.d.ts.map +1 -0
- package/dist/{resources → client/resources}/functionalUpdate.js +3 -3
- package/dist/client/resources/functionalUpdate.js.map +1 -0
- package/dist/{resources → client/resources}/httpResources.d.ts +92 -77
- package/dist/client/resources/httpResources.d.ts.map +1 -0
- package/dist/client/resources/httpResources.js +94 -0
- package/dist/client/resources/httpResources.js.map +1 -0
- package/dist/client/resources/modelCreate.d.ts +21 -0
- package/dist/client/resources/modelCreate.d.ts.map +1 -0
- package/dist/client/resources/modelCreate.js +49 -0
- package/dist/client/resources/modelCreate.js.map +1 -0
- package/dist/{resources → client/resources}/modelOperations.d.ts +57 -51
- package/dist/client/resources/modelOperations.d.ts.map +1 -0
- package/dist/{resources → client/resources}/modelOperations.js +1 -1
- package/dist/client/resources/modelOperations.js.map +1 -0
- package/dist/{resources → client/resources}/mutationOptions.d.ts +4 -17
- package/dist/client/resources/mutationOptions.d.ts.map +1 -0
- package/dist/client/resources/mutationOptions.js.map +1 -0
- package/dist/client/resources/where.d.ts.map +1 -0
- package/dist/{resources → client/resources}/where.js +1 -1
- package/dist/client/resources/where.js.map +1 -0
- package/dist/{resources → client/resources}/writeOptionsSchema.d.ts +16 -35
- package/dist/client/resources/writeOptionsSchema.d.ts.map +1 -0
- package/dist/{resources → client/resources}/writeOptionsSchema.js +25 -18
- package/dist/client/resources/writeOptionsSchema.js.map +1 -0
- package/dist/{transactions → commit}/confirmation/commitEnvelope.d.ts +1 -37
- package/dist/commit/confirmation/commitEnvelope.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/commitEnvelope.js +2 -7
- package/dist/commit/confirmation/commitEnvelope.js.map +1 -0
- package/dist/commit/confirmation/httpCommitEnvelope.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.js +1 -1
- package/dist/commit/confirmation/httpCommitEnvelope.js.map +1 -0
- package/dist/commit/confirmation/idempotencyKey.d.ts.map +1 -0
- package/dist/commit/confirmation/idempotencyKey.js.map +1 -0
- package/dist/{transactions → commit}/confirmation/pendingWrite.d.ts +2 -33
- package/dist/commit/confirmation/pendingWrite.d.ts.map +1 -0
- package/dist/{transactions → commit}/confirmation/pendingWrite.js +1 -1
- package/dist/commit/confirmation/pendingWrite.js.map +1 -0
- package/dist/commit/contract.d.ts +1404 -0
- package/dist/commit/contract.d.ts.map +1 -0
- package/dist/{wire/commit.js → commit/contract.js} +26 -21
- package/dist/commit/contract.js.map +1 -0
- package/dist/{durableWrites.d.ts → commit/durableWrites.d.ts} +6 -6
- package/dist/commit/durableWrites.d.ts.map +1 -0
- package/dist/{durableWrites.js → commit/durableWrites.js} +5 -5
- package/dist/commit/durableWrites.js.map +1 -0
- package/dist/commit/httpRequest.d.ts +45 -0
- package/dist/commit/httpRequest.d.ts.map +1 -0
- package/dist/commit/httpRequest.js +66 -0
- package/dist/commit/httpRequest.js.map +1 -0
- package/dist/commit/index.d.ts +17 -0
- package/dist/commit/index.d.ts.map +1 -0
- package/dist/commit/index.js +17 -0
- package/dist/commit/index.js.map +1 -0
- package/dist/{readSetContext.d.ts → commit/readSetContext.d.ts} +7 -15
- package/dist/commit/readSetContext.d.ts.map +1 -0
- package/dist/{readSetContext.js → commit/readSetContext.js} +18 -28
- package/dist/commit/readSetContext.js.map +1 -0
- package/dist/{commitRecordRuntime.d.ts → commit/recordRuntime.d.ts} +3 -5
- package/dist/commit/recordRuntime.d.ts.map +1 -0
- package/dist/{commitRecordRuntime.js → commit/recordRuntime.js} +13 -54
- package/dist/commit/recordRuntime.js.map +1 -0
- package/dist/coordination/index.d.ts +6 -8
- package/dist/coordination/index.d.ts.map +1 -1
- package/dist/coordination/index.js +3 -9
- package/dist/coordination/index.js.map +1 -1
- package/dist/coordination/schema.d.ts +11 -466
- package/dist/coordination/schema.d.ts.map +1 -1
- package/dist/coordination/schema.js +13 -265
- package/dist/coordination/schema.js.map +1 -1
- package/dist/errorCodes.d.ts +16 -9
- package/dist/errorCodes.d.ts.map +1 -1
- package/dist/errorCodes.js +14 -6
- package/dist/errorCodes.js.map +1 -1
- package/dist/errorObservation.d.ts +2 -2
- package/dist/errors.d.ts +3 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +27 -11
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/read-set.d.ts +3 -3
- package/dist/internal/read-set.d.ts.map +1 -1
- package/dist/internal/read-set.js +2 -2
- package/dist/internal/read-set.js.map +1 -1
- package/dist/observability.d.ts +4 -4
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js +2 -2
- package/dist/{wire/delta.d.ts → observation/contract.d.ts} +8 -8
- package/dist/observation/contract.d.ts.map +1 -0
- package/dist/{wire/delta.js → observation/contract.js} +3 -3
- package/dist/observation/contract.js.map +1 -0
- package/dist/{wire/feedCursor.d.ts → observation/cursor.d.ts} +1 -1
- package/dist/observation/cursor.d.ts.map +1 -0
- package/dist/{wire/feedCursor.js → observation/cursor.js} +1 -1
- package/dist/observation/cursor.js.map +1 -0
- package/dist/{wire/deltaDelivery.d.ts → observation/deliveryContract.d.ts} +1 -1
- package/dist/observation/deliveryContract.d.ts.map +1 -0
- package/dist/{wire/deltaDelivery.js → observation/deliveryContract.js} +1 -1
- package/dist/observation/deliveryContract.js.map +1 -0
- package/dist/{wire/feedEvent.d.ts → observation/feedContract.d.ts} +10 -10
- package/dist/observation/feedContract.d.ts.map +1 -0
- package/dist/{wire/feedEvent.js → observation/feedContract.js} +4 -4
- package/dist/observation/feedContract.js.map +1 -0
- package/dist/observation/httpFeed.d.ts +4 -0
- package/dist/observation/httpFeed.d.ts.map +1 -0
- package/dist/{transport → observation}/httpFeed.js +1 -1
- package/dist/{transport → observation}/httpFeed.js.map +1 -1
- package/dist/observation/index.d.ts +13 -0
- package/dist/observation/index.d.ts.map +1 -0
- package/dist/observation/index.js +13 -0
- package/dist/observation/index.js.map +1 -0
- package/dist/{log → observation/persistence}/syncDeltaRow.d.ts +8 -8
- package/dist/observation/persistence/syncDeltaRow.d.ts.map +1 -0
- package/dist/{log → observation/persistence}/syncDeltaRow.js +4 -4
- package/dist/observation/persistence/syncDeltaRow.js.map +1 -0
- package/dist/pricing.d.ts +20 -12
- package/dist/pricing.d.ts.map +1 -1
- package/dist/pricing.js +46 -26
- package/dist/pricing.js.map +1 -1
- package/dist/schema/audit.d.ts +15 -0
- package/dist/schema/audit.d.ts.map +1 -0
- package/dist/schema/audit.js +90 -0
- package/dist/schema/audit.js.map +1 -0
- package/dist/schema/ddl.d.ts.map +1 -1
- package/dist/schema/ddl.js +68 -1
- package/dist/schema/ddl.js.map +1 -1
- package/dist/schema/index.d.ts +7 -6
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +6 -7
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/model.d.ts +14 -27
- package/dist/schema/model.d.ts.map +1 -1
- package/dist/schema/model.js +2 -2
- package/dist/schema/model.js.map +1 -1
- package/dist/schema/openapi.d.ts.map +1 -1
- package/dist/schema/openapi.js +149 -8
- package/dist/schema/openapi.js.map +1 -1
- package/dist/schema/roles.d.ts +27 -0
- package/dist/schema/roles.d.ts.map +1 -1
- package/dist/schema/roles.js +40 -0
- package/dist/schema/roles.js.map +1 -1
- package/dist/schema/schema.d.ts +34 -7
- package/dist/schema/schema.d.ts.map +1 -1
- package/dist/schema/schema.js +39 -3
- package/dist/schema/schema.js.map +1 -1
- package/dist/schema/serialize.d.ts +5 -5
- package/dist/schema/serialize.d.ts.map +1 -1
- package/dist/schema/serialize.js +5 -5
- package/dist/schema/serialize.js.map +1 -1
- package/dist/schema/subject.d.ts +18 -0
- package/dist/schema/subject.d.ts.map +1 -0
- package/dist/schema/subject.js +27 -0
- package/dist/schema/subject.js.map +1 -0
- package/dist/schema/tenancy.d.ts +1 -1
- package/dist/server/adapter.d.ts +3 -1
- package/dist/server/adapter.d.ts.map +1 -1
- package/dist/server/commit.d.ts +6 -14
- package/dist/server/commit.d.ts.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/readConfig.d.ts +3 -0
- package/dist/server/readConfig.d.ts.map +1 -1
- package/dist/server/readConfig.js +0 -21
- package/dist/server/readConfig.js.map +1 -1
- package/dist/server/storageMode.d.ts +1 -1
- package/dist/source/{adapter.d.ts → adapters/adapter.d.ts} +10 -4
- package/dist/source/adapters/adapter.d.ts.map +1 -0
- package/dist/source/adapters/adapter.js.map +1 -0
- package/dist/source/adapters/adapterFactory.d.ts.map +1 -0
- package/dist/source/{adapterFactory.js → adapters/adapterFactory.js} +1 -1
- package/dist/source/adapters/adapterFactory.js.map +1 -0
- package/dist/source/adapters/adapterProfile.d.ts.map +1 -0
- package/dist/source/adapters/adapterProfile.js.map +1 -0
- package/dist/source/{conformance.d.ts → adapters/conformance.d.ts} +1 -1
- package/dist/source/adapters/conformance.d.ts.map +1 -0
- package/dist/source/{conformance.js → adapters/conformance.js} +1 -1
- package/dist/source/adapters/conformance.js.map +1 -0
- package/dist/source/{contract.d.ts → adapters/contract.d.ts} +20 -75
- package/dist/source/adapters/contract.d.ts.map +1 -0
- package/dist/source/{contract.js → adapters/contract.js} +20 -55
- package/dist/source/adapters/contract.js.map +1 -0
- package/dist/source/adapters/drizzle.d.ts +1 -1
- package/dist/source/adapters/drizzle.d.ts.map +1 -1
- package/dist/source/adapters/drizzle.js +54 -25
- package/dist/source/adapters/drizzle.js.map +1 -1
- package/dist/source/adapters/idempotency.d.ts.map +1 -0
- package/dist/source/{idempotency.js → adapters/idempotency.js} +2 -2
- package/dist/source/adapters/idempotency.js.map +1 -0
- package/dist/source/adapters/index.d.ts +21 -0
- package/dist/source/adapters/index.d.ts.map +1 -0
- package/dist/source/adapters/index.js +21 -0
- package/dist/source/adapters/index.js.map +1 -0
- package/dist/source/adapters/kysely.d.ts +3 -1
- package/dist/source/adapters/kysely.d.ts.map +1 -1
- package/dist/source/adapters/kysely.js +49 -23
- package/dist/source/adapters/kysely.js.map +1 -1
- package/dist/source/adapters/kyselyMutationCore.d.ts +6 -3
- package/dist/source/adapters/kyselyMutationCore.d.ts.map +1 -1
- package/dist/source/adapters/kyselyMutationCore.js +17 -8
- package/dist/source/adapters/kyselyMutationCore.js.map +1 -1
- package/dist/source/adapters/memory.d.ts +3 -3
- package/dist/source/adapters/memory.d.ts.map +1 -1
- package/dist/source/adapters/memory.js +20 -7
- package/dist/source/adapters/memory.js.map +1 -1
- package/dist/source/adapters/migration.d.ts +8 -0
- package/dist/source/adapters/migration.d.ts.map +1 -0
- package/dist/source/adapters/migration.js +9 -0
- package/dist/source/adapters/migration.js.map +1 -0
- package/dist/source/{migrations.d.ts → adapters/migrations.d.ts} +3 -4
- package/dist/source/adapters/migrations.d.ts.map +1 -0
- package/dist/source/{migrations.js → adapters/migrations.js} +4 -31
- package/dist/source/adapters/migrations.js.map +1 -0
- package/dist/source/adapters/prisma.d.ts +1 -1
- package/dist/source/adapters/prisma.d.ts.map +1 -1
- package/dist/source/adapters/prisma.js +75 -30
- package/dist/source/adapters/prisma.js.map +1 -1
- package/dist/source/adapters/subjectAuthorization.d.ts +16 -0
- package/dist/source/adapters/subjectAuthorization.d.ts.map +1 -0
- package/dist/source/adapters/subjectAuthorization.js +126 -0
- package/dist/source/adapters/subjectAuthorization.js.map +1 -0
- package/dist/source/{connector.d.ts → connector/client.d.ts} +6 -1
- package/dist/source/connector/client.d.ts.map +1 -0
- package/dist/source/{connector.js → connector/client.js} +28 -11
- package/dist/source/connector/client.js.map +1 -0
- package/dist/source/connector/index.d.ts +4 -0
- package/dist/source/connector/index.d.ts.map +1 -0
- package/dist/source/connector/index.js +4 -0
- package/dist/source/connector/index.js.map +1 -0
- package/dist/source/{connectorProtocol.d.ts → connector/protocol.d.ts} +8 -1
- package/dist/source/connector/protocol.d.ts.map +1 -0
- package/dist/source/{connectorProtocol.js → connector/protocol.js} +10 -3
- package/dist/source/connector/protocol.js.map +1 -0
- package/dist/source/delivery/index.d.ts +3 -0
- package/dist/source/delivery/index.d.ts.map +1 -0
- package/dist/source/delivery/index.js +3 -0
- package/dist/source/delivery/index.js.map +1 -0
- package/dist/source/{pushQueue.d.ts → delivery/pushQueue.d.ts} +1 -1
- package/dist/source/delivery/pushQueue.d.ts.map +1 -0
- package/dist/source/{pushQueue.js → delivery/pushQueue.js} +1 -1
- package/dist/source/delivery/pushQueue.js.map +1 -0
- package/dist/source/{factory.d.ts → endpoint/factory.d.ts} +9 -3
- package/dist/source/endpoint/factory.d.ts.map +1 -0
- package/dist/source/{factory.js → endpoint/factory.js} +122 -6
- package/dist/source/endpoint/factory.js.map +1 -0
- package/dist/source/endpoint/index.d.ts +5 -0
- package/dist/source/endpoint/index.d.ts.map +1 -0
- package/dist/source/endpoint/index.js +5 -0
- package/dist/source/endpoint/index.js.map +1 -0
- package/dist/source/{next.d.ts → endpoint/next.d.ts} +2 -2
- package/dist/source/endpoint/next.d.ts.map +1 -0
- package/dist/source/{next.js → endpoint/next.js} +1 -1
- package/dist/source/endpoint/next.js.map +1 -0
- package/dist/source/{signing.d.ts → endpoint/signing.d.ts} +1 -1
- package/dist/source/endpoint/signing.d.ts.map +1 -0
- package/dist/source/{signing.js → endpoint/signing.js} +1 -1
- package/dist/source/endpoint/signing.js.map +1 -0
- package/dist/source/index.d.ts +15 -12
- package/dist/source/index.d.ts.map +1 -1
- package/dist/source/index.js +13 -10
- package/dist/source/index.js.map +1 -1
- package/dist/source/outbox/contract.d.ts +50 -0
- package/dist/source/outbox/contract.d.ts.map +1 -0
- package/dist/source/outbox/contract.js +50 -0
- package/dist/source/outbox/contract.js.map +1 -0
- package/dist/source/outbox/envelope.d.ts +9 -0
- package/dist/source/outbox/envelope.d.ts.map +1 -0
- package/dist/source/outbox/envelope.js +36 -0
- package/dist/source/outbox/envelope.js.map +1 -0
- package/dist/source/outbox/index.d.ts +11 -0
- package/dist/source/outbox/index.d.ts.map +1 -0
- package/dist/source/outbox/index.js +11 -0
- package/dist/source/outbox/index.js.map +1 -0
- package/dist/source/outbox/migrations.d.ts +4 -0
- package/dist/source/outbox/migrations.d.ts.map +1 -0
- package/dist/source/outbox/migrations.js +67 -0
- package/dist/source/outbox/migrations.js.map +1 -0
- package/dist/source/outbox/retention.d.ts +3 -0
- package/dist/source/outbox/retention.d.ts.map +1 -0
- package/dist/source/outbox/retention.js +3 -0
- package/dist/source/outbox/retention.js.map +1 -0
- package/dist/source/types.d.ts +59 -10
- package/dist/source/types.d.ts.map +1 -1
- package/dist/source/types.js +2 -0
- package/dist/source/types.js.map +1 -1
- package/dist/syncLog/contract.d.ts +19 -8
- package/dist/syncLog/contract.d.ts.map +1 -1
- package/dist/syncLog/contract.js +19 -6
- package/dist/syncLog/contract.js.map +1 -1
- package/dist/testing/fixtures/httpResponses.d.ts +6 -0
- package/dist/testing/fixtures/httpResponses.d.ts.map +1 -1
- package/dist/testing/fixtures/httpResponses.js +1 -0
- package/dist/testing/fixtures/httpResponses.js.map +1 -1
- package/dist/transport/{credentialLifecycle.d.ts → connection/credentialLifecycle.d.ts} +3 -3
- package/dist/transport/connection/credentialLifecycle.d.ts.map +1 -0
- package/dist/transport/{credentialLifecycle.js → connection/credentialLifecycle.js} +2 -2
- package/dist/transport/connection/credentialLifecycle.js.map +1 -0
- package/dist/transport/connection/index.d.ts +5 -0
- package/dist/transport/connection/index.d.ts.map +1 -0
- package/dist/transport/connection/index.js +5 -0
- package/dist/transport/connection/index.js.map +1 -0
- package/dist/transport/{connectionManager.d.ts → connection/manager.d.ts} +13 -5
- package/dist/transport/connection/manager.d.ts.map +1 -0
- package/dist/transport/{connectionManager.js → connection/manager.js} +6 -4
- package/dist/transport/connection/manager.js.map +1 -0
- package/dist/transport/{networkProbe.d.ts → connection/networkProbe.d.ts} +2 -2
- package/dist/transport/connection/networkProbe.d.ts.map +1 -0
- package/dist/transport/{networkProbe.js → connection/networkProbe.js} +4 -4
- package/dist/transport/connection/networkProbe.js.map +1 -0
- package/dist/transport/{httpClient.d.ts → http/client.d.ts} +32 -44
- package/dist/transport/http/client.d.ts.map +1 -0
- package/dist/transport/{httpClient.js → http/client.js} +96 -105
- package/dist/transport/http/client.js.map +1 -0
- package/dist/transport/http/helpers.d.ts +10 -0
- package/dist/transport/http/helpers.d.ts.map +1 -0
- package/dist/transport/http/helpers.js +46 -0
- package/dist/transport/http/helpers.js.map +1 -0
- package/dist/transport/http/index.d.ts +6 -0
- package/dist/transport/http/index.d.ts.map +1 -0
- package/dist/transport/http/index.js +6 -0
- package/dist/transport/http/index.js.map +1 -0
- package/dist/transport/{httpOptions.d.ts → http/options.d.ts} +7 -7
- package/dist/transport/{httpOptions.d.ts.map → http/options.d.ts.map} +1 -1
- package/dist/transport/{httpOptions.js → http/options.js} +1 -1
- package/dist/transport/http/options.js.map +1 -0
- package/dist/transport/http/subscription.d.ts +16 -0
- package/dist/transport/http/subscription.d.ts.map +1 -0
- package/dist/transport/http/subscription.js +146 -0
- package/dist/transport/http/subscription.js.map +1 -0
- package/dist/transport/{httpTransport.d.ts → http/transport.d.ts} +9 -6
- package/dist/transport/http/transport.d.ts.map +1 -0
- package/dist/transport/{httpTransport.js → http/transport.js} +153 -188
- package/dist/transport/http/transport.js.map +1 -0
- package/dist/transport/index.d.ts +8 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +8 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/{commitFrames.d.ts → websocket/commitFrames.d.ts} +8 -20
- package/dist/transport/websocket/commitFrames.d.ts.map +1 -0
- package/dist/transport/{commitFrames.js → websocket/commitFrames.js} +6 -25
- package/dist/transport/websocket/commitFrames.js.map +1 -0
- package/dist/transport/{wsFrameHandlers.d.ts → websocket/frameHandlers.d.ts} +5 -5
- package/dist/transport/websocket/frameHandlers.d.ts.map +1 -0
- package/dist/transport/{wsFrameHandlers.js → websocket/frameHandlers.js} +10 -51
- package/dist/transport/websocket/frameHandlers.js.map +1 -0
- package/dist/transport/{heartbeat.d.ts → websocket/heartbeat.d.ts} +1 -1
- package/dist/transport/websocket/heartbeat.d.ts.map +1 -0
- package/dist/transport/{heartbeat.js → websocket/heartbeat.js} +2 -2
- package/dist/transport/websocket/heartbeat.js.map +1 -0
- package/dist/transport/websocket/index.d.ts +6 -0
- package/dist/transport/websocket/index.d.ts.map +1 -0
- package/dist/transport/websocket/index.js +6 -0
- package/dist/transport/websocket/index.js.map +1 -0
- package/dist/transport/{wsTransport.d.ts → websocket/transport.d.ts} +13 -25
- package/dist/transport/websocket/transport.d.ts.map +1 -0
- package/dist/transport/{wsTransport.js → websocket/transport.js} +14 -14
- package/dist/transport/websocket/transport.js.map +1 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/streams.d.ts +8 -48
- package/dist/types/streams.d.ts.map +1 -1
- package/dist/types/streams.js +2 -2
- package/dist/wire/accountResponses.d.ts +4 -72
- package/dist/wire/accountResponses.d.ts.map +1 -1
- package/dist/wire/accountResponses.js +2 -10
- package/dist/wire/accountResponses.js.map +1 -1
- package/dist/wire/apiLifecycle.d.ts +63 -0
- package/dist/wire/apiLifecycle.d.ts.map +1 -0
- package/dist/wire/apiLifecycle.js +89 -0
- package/dist/wire/apiLifecycle.js.map +1 -0
- package/dist/wire/frames.d.ts +6 -83
- package/dist/wire/frames.d.ts.map +1 -1
- package/dist/wire/frames.js +4 -11
- package/dist/wire/frames.js.map +1 -1
- package/dist/wire/inboundFrames.d.ts +6 -131
- package/dist/wire/inboundFrames.d.ts.map +1 -1
- package/dist/wire/inboundFrames.js +3 -3
- package/dist/wire/inboundFrames.js.map +1 -1
- package/dist/wire/index.d.ts +20 -15
- package/dist/wire/index.d.ts.map +1 -1
- package/dist/wire/index.js +22 -8
- package/dist/wire/index.js.map +1 -1
- package/dist/wire/modelMutations.d.ts +1 -32
- package/dist/wire/modelMutations.d.ts.map +1 -1
- package/dist/wire/modelMutations.js +1 -8
- package/dist/wire/modelMutations.js.map +1 -1
- package/dist/wire/rateLimit.d.ts +82 -0
- package/dist/wire/rateLimit.d.ts.map +1 -0
- package/dist/wire/rateLimit.js +142 -0
- package/dist/wire/rateLimit.js.map +1 -0
- package/package.json +130 -10
- package/src/ai-sdk/modelTools.ts +5 -5
- package/src/ai-sdk/updateTool.ts +5 -7
- package/src/auth/capability.ts +5 -0
- package/src/auth/capabilityLifecycle.ts +1 -1
- package/src/auth/credentialPolicy.ts +1 -1
- package/src/auth/identity.ts +7 -7
- package/src/auth/index.ts +4 -663
- package/src/auth/runtime.ts +669 -0
- package/src/auth/sessionMint.ts +3 -2
- package/src/branches.ts +3 -0
- package/src/{coordination/awaitClaimGrant.ts → claims/awaitGrant.ts} +4 -4
- package/src/{wire/claims.ts → claims/contract.ts} +1 -1
- package/src/{coordination → claims}/events.ts +7 -11
- package/src/claims/index.ts +21 -0
- package/src/claims/lifetime.ts +78 -0
- package/src/{coordination → claims}/locator.ts +3 -3
- package/src/claims/routes.ts +81 -0
- package/src/{coordination → claims}/trace.ts +5 -5
- package/src/{ablo.ts → client/ablo.ts} +8 -20
- package/src/{transactionLayer.ts → client/contract.ts} +11 -13
- package/src/{headlessClient.ts → client/headless.ts} +13 -15
- package/src/client/index.ts +10 -0
- package/src/{resources → client/resources}/functionalUpdate.ts +4 -4
- package/src/{resources → client/resources}/httpResources.ts +163 -92
- package/src/client/resources/modelCreate.ts +73 -0
- package/src/{resources → client/resources}/modelOperations.ts +73 -55
- package/src/{resources → client/resources}/mutationOptions.ts +4 -17
- package/src/{resources → client/resources}/where.ts +1 -1
- package/src/{resources → client/resources}/writeOptionsSchema.ts +35 -27
- package/src/{transactions → commit}/confirmation/commitEnvelope.ts +2 -12
- package/src/{transactions → commit}/confirmation/httpCommitEnvelope.ts +1 -1
- package/src/{transactions → commit}/confirmation/pendingWrite.ts +1 -1
- package/src/{wire/commit.ts → commit/contract.ts} +27 -26
- package/src/{durableWrites.ts → commit/durableWrites.ts} +7 -7
- package/src/commit/httpRequest.ts +103 -0
- package/src/commit/index.ts +16 -0
- package/src/{readSetContext.ts → commit/readSetContext.ts} +24 -43
- package/src/{commitRecordRuntime.ts → commit/recordRuntime.ts} +12 -67
- package/src/coordination/index.ts +4 -54
- package/src/coordination/schema.ts +15 -309
- package/src/errorCodes.ts +62 -10
- package/src/errors.ts +32 -10
- package/src/index.ts +8 -8
- package/src/internal/read-set.ts +3 -6
- package/src/observability.ts +4 -4
- package/src/{wire/delta.ts → observation/contract.ts} +2 -2
- package/src/{wire/feedEvent.ts → observation/feedContract.ts} +3 -4
- package/src/{transport → observation}/httpFeed.ts +3 -3
- package/src/observation/index.ts +12 -0
- package/src/{log → observation/persistence}/syncDeltaRow.ts +6 -7
- package/src/pricing.ts +46 -25
- package/src/schema/audit.ts +121 -0
- package/src/schema/ddl.ts +71 -1
- package/src/schema/index.ts +20 -20
- package/src/schema/model.ts +17 -33
- package/src/schema/openapi.ts +170 -9
- package/src/schema/roles.ts +53 -0
- package/src/schema/schema.ts +91 -6
- package/src/schema/serialize.ts +8 -9
- package/src/schema/subject.ts +43 -0
- package/src/server/adapter.ts +3 -1
- package/src/server/commit.ts +6 -14
- package/src/server/index.ts +1 -1
- package/src/server/readConfig.ts +4 -0
- package/src/source/{adapter.ts → adapters/adapter.ts} +9 -5
- package/src/source/{adapterFactory.ts → adapters/adapterFactory.ts} +1 -1
- package/src/source/{conformance.ts → adapters/conformance.ts} +1 -1
- package/src/source/{contract.ts → adapters/contract.ts} +24 -61
- package/src/source/adapters/drizzle.ts +75 -29
- package/src/source/{idempotency.ts → adapters/idempotency.ts} +2 -2
- package/src/source/adapters/index.ts +20 -0
- package/src/source/adapters/kysely.ts +77 -27
- package/src/source/adapters/kyselyMutationCore.ts +23 -11
- package/src/source/adapters/memory.ts +26 -9
- package/src/source/adapters/migration.ts +11 -0
- package/src/source/{migrations.ts → adapters/migrations.ts} +6 -33
- package/src/source/adapters/prisma.ts +98 -34
- package/src/source/adapters/subjectAuthorization.ts +182 -0
- package/src/source/{connector.ts → connector/client.ts} +35 -12
- package/src/source/connector/index.ts +3 -0
- package/src/source/{connectorProtocol.ts → connector/protocol.ts} +10 -2
- package/src/source/delivery/index.ts +2 -0
- package/src/source/{pushQueue.ts → delivery/pushQueue.ts} +2 -2
- package/src/source/{factory.ts → endpoint/factory.ts} +150 -9
- package/src/source/endpoint/index.ts +4 -0
- package/src/source/{next.ts → endpoint/next.ts} +2 -2
- package/src/source/{signing.ts → endpoint/signing.ts} +1 -1
- package/src/source/index.ts +27 -18
- package/src/source/outbox/contract.ts +56 -0
- package/src/source/outbox/envelope.ts +47 -0
- package/src/source/outbox/index.ts +15 -0
- package/src/source/outbox/migrations.ts +71 -0
- package/src/source/outbox/retention.ts +2 -0
- package/src/source/types.ts +64 -10
- package/src/syncLog/contract.ts +19 -9
- package/src/testing/fixtures/httpResponses.ts +7 -0
- package/src/transport/{credentialLifecycle.ts → connection/credentialLifecycle.ts} +3 -3
- package/src/transport/connection/index.ts +4 -0
- package/src/transport/{connectionManager.ts → connection/manager.ts} +13 -4
- package/src/transport/{networkProbe.ts → connection/networkProbe.ts} +4 -4
- package/src/transport/{httpClient.ts → http/client.ts} +165 -184
- package/src/transport/http/helpers.ts +63 -0
- package/src/transport/http/index.ts +5 -0
- package/src/transport/{httpOptions.ts → http/options.ts} +6 -6
- package/src/transport/http/subscription.ts +174 -0
- package/src/transport/{httpTransport.ts → http/transport.ts} +210 -246
- package/src/transport/index.ts +7 -0
- package/src/transport/{commitFrames.ts → websocket/commitFrames.ts} +14 -46
- package/src/transport/{wsFrameHandlers.ts → websocket/frameHandlers.ts} +11 -54
- package/src/transport/{heartbeat.ts → websocket/heartbeat.ts} +2 -2
- package/src/transport/websocket/index.ts +5 -0
- package/src/transport/{wsTransport.ts → websocket/transport.ts} +16 -30
- package/src/types/index.ts +2 -6
- package/src/types/streams.ts +7 -61
- package/src/webhooks/events.ts +1 -1
- package/src/wire/accountResponses.ts +3 -12
- package/src/wire/apiLifecycle.ts +94 -0
- package/src/wire/frames.ts +5 -15
- package/src/wire/inboundFrames.ts +3 -3
- package/src/wire/index.ts +50 -15
- package/src/wire/modelMutations.ts +1 -14
- package/src/wire/rateLimit.ts +155 -0
- package/dist/ablo.d.ts.map +0 -1
- package/dist/ablo.js.map +0 -1
- package/dist/commitRecordRuntime.d.ts.map +0 -1
- package/dist/commitRecordRuntime.js.map +0 -1
- package/dist/coordination/awaitClaimGrant.d.ts.map +0 -1
- package/dist/coordination/awaitClaimGrant.js.map +0 -1
- package/dist/coordination/claimHeartbeatLoop.d.ts.map +0 -1
- package/dist/coordination/claimHeartbeatLoop.js.map +0 -1
- package/dist/coordination/claimMeta.d.ts.map +0 -1
- package/dist/coordination/claimMeta.js.map +0 -1
- package/dist/coordination/events.d.ts.map +0 -1
- package/dist/coordination/events.js +0 -8
- package/dist/coordination/events.js.map +0 -1
- package/dist/coordination/locator.d.ts.map +0 -1
- package/dist/coordination/locator.js.map +0 -1
- package/dist/coordination/targetConflict.d.ts.map +0 -1
- package/dist/coordination/targetConflict.js.map +0 -1
- package/dist/coordination/trace.d.ts.map +0 -1
- package/dist/coordination/trace.js.map +0 -1
- package/dist/durableWrites.d.ts.map +0 -1
- package/dist/durableWrites.js.map +0 -1
- package/dist/headlessClient.d.ts.map +0 -1
- package/dist/log/syncDeltaRow.d.ts.map +0 -1
- package/dist/log/syncDeltaRow.js.map +0 -1
- package/dist/policy/types.d.ts +0 -226
- package/dist/policy/types.d.ts.map +0 -1
- package/dist/policy/types.js +0 -127
- package/dist/policy/types.js.map +0 -1
- package/dist/readSetContext.d.ts.map +0 -1
- package/dist/readSetContext.js.map +0 -1
- package/dist/resources/functionalUpdate.d.ts.map +0 -1
- package/dist/resources/functionalUpdate.js.map +0 -1
- package/dist/resources/httpResources.d.ts.map +0 -1
- package/dist/resources/httpResources.js +0 -17
- package/dist/resources/httpResources.js.map +0 -1
- package/dist/resources/modelOperations.d.ts.map +0 -1
- package/dist/resources/modelOperations.js.map +0 -1
- package/dist/resources/mutationOptions.d.ts.map +0 -1
- package/dist/resources/mutationOptions.js.map +0 -1
- package/dist/resources/where.d.ts.map +0 -1
- package/dist/resources/where.js.map +0 -1
- package/dist/resources/writeOptionsSchema.d.ts.map +0 -1
- package/dist/resources/writeOptionsSchema.js.map +0 -1
- package/dist/schema/coordination.d.ts +0 -113
- package/dist/schema/coordination.d.ts.map +0 -1
- package/dist/schema/coordination.js +0 -134
- package/dist/schema/coordination.js.map +0 -1
- package/dist/source/adapter.d.ts.map +0 -1
- package/dist/source/adapter.js.map +0 -1
- package/dist/source/adapterFactory.d.ts.map +0 -1
- package/dist/source/adapterFactory.js.map +0 -1
- package/dist/source/adapterProfile.d.ts.map +0 -1
- package/dist/source/adapterProfile.js.map +0 -1
- package/dist/source/conformance.d.ts.map +0 -1
- package/dist/source/conformance.js.map +0 -1
- package/dist/source/connector.d.ts.map +0 -1
- package/dist/source/connector.js.map +0 -1
- package/dist/source/connectorProtocol.d.ts.map +0 -1
- package/dist/source/connectorProtocol.js.map +0 -1
- package/dist/source/contract.d.ts.map +0 -1
- package/dist/source/contract.js.map +0 -1
- package/dist/source/drizzle.d.ts +0 -2
- package/dist/source/drizzle.d.ts.map +0 -1
- package/dist/source/drizzle.js +0 -2
- package/dist/source/drizzle.js.map +0 -1
- package/dist/source/factory.d.ts.map +0 -1
- package/dist/source/factory.js.map +0 -1
- package/dist/source/idempotency.d.ts.map +0 -1
- package/dist/source/idempotency.js.map +0 -1
- package/dist/source/kysely.d.ts +0 -3
- package/dist/source/kysely.d.ts.map +0 -1
- package/dist/source/kysely.js +0 -3
- package/dist/source/kysely.js.map +0 -1
- package/dist/source/migrations.d.ts.map +0 -1
- package/dist/source/migrations.js.map +0 -1
- package/dist/source/next.d.ts.map +0 -1
- package/dist/source/next.js.map +0 -1
- package/dist/source/pushQueue.d.ts.map +0 -1
- package/dist/source/pushQueue.js.map +0 -1
- package/dist/source/signing.d.ts.map +0 -1
- package/dist/source/signing.js.map +0 -1
- package/dist/transactionLayer.d.ts.map +0 -1
- package/dist/transactionLayer.js.map +0 -1
- package/dist/transactions/confirmation/commitEnvelope.d.ts.map +0 -1
- package/dist/transactions/confirmation/commitEnvelope.js.map +0 -1
- package/dist/transactions/confirmation/httpCommitEnvelope.d.ts.map +0 -1
- package/dist/transactions/confirmation/httpCommitEnvelope.js.map +0 -1
- package/dist/transactions/confirmation/idempotencyKey.d.ts.map +0 -1
- package/dist/transactions/confirmation/idempotencyKey.js.map +0 -1
- package/dist/transactions/confirmation/pendingWrite.d.ts.map +0 -1
- package/dist/transactions/confirmation/pendingWrite.js.map +0 -1
- package/dist/transport/commitFrames.d.ts.map +0 -1
- package/dist/transport/commitFrames.js.map +0 -1
- package/dist/transport/connectionManager.d.ts.map +0 -1
- package/dist/transport/connectionManager.js.map +0 -1
- package/dist/transport/credentialLifecycle.d.ts.map +0 -1
- package/dist/transport/credentialLifecycle.js.map +0 -1
- package/dist/transport/heartbeat.d.ts.map +0 -1
- package/dist/transport/heartbeat.js.map +0 -1
- package/dist/transport/httpClient.d.ts.map +0 -1
- package/dist/transport/httpClient.js.map +0 -1
- package/dist/transport/httpFeed.d.ts +0 -4
- package/dist/transport/httpFeed.d.ts.map +0 -1
- package/dist/transport/httpOptions.js.map +0 -1
- package/dist/transport/httpTransport.d.ts.map +0 -1
- package/dist/transport/httpTransport.js.map +0 -1
- package/dist/transport/networkProbe.d.ts.map +0 -1
- package/dist/transport/networkProbe.js.map +0 -1
- package/dist/transport/wsFrameHandlers.d.ts.map +0 -1
- package/dist/transport/wsFrameHandlers.js.map +0 -1
- package/dist/transport/wsTransport.d.ts.map +0 -1
- package/dist/transport/wsTransport.js.map +0 -1
- package/dist/wire/claimEvent.d.ts.map +0 -1
- package/dist/wire/claimEvent.js.map +0 -1
- package/dist/wire/claims.d.ts.map +0 -1
- package/dist/wire/claims.js.map +0 -1
- package/dist/wire/commit.d.ts +0 -2801
- package/dist/wire/commit.d.ts.map +0 -1
- package/dist/wire/commit.js.map +0 -1
- package/dist/wire/delta.d.ts.map +0 -1
- package/dist/wire/delta.js.map +0 -1
- package/dist/wire/deltaDelivery.d.ts.map +0 -1
- package/dist/wire/deltaDelivery.js.map +0 -1
- package/dist/wire/feedCursor.d.ts.map +0 -1
- package/dist/wire/feedCursor.js.map +0 -1
- package/dist/wire/feedEvent.d.ts.map +0 -1
- package/dist/wire/feedEvent.js.map +0 -1
- package/src/policy/types.ts +0 -300
- package/src/schema/coordination.ts +0 -161
- package/src/source/drizzle.ts +0 -1
- package/src/source/kysely.ts +0 -2
- /package/dist/{coordination → claims}/targetConflict.d.ts +0 -0
- /package/dist/{coordination → claims}/targetConflict.js +0 -0
- /package/dist/{resources → client/resources}/mutationOptions.js +0 -0
- /package/dist/{resources → client/resources}/where.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/httpCommitEnvelope.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/idempotencyKey.d.ts +0 -0
- /package/dist/{transactions → commit}/confirmation/idempotencyKey.js +0 -0
- /package/dist/source/{adapter.js → adapters/adapter.js} +0 -0
- /package/dist/source/{adapterFactory.d.ts → adapters/adapterFactory.d.ts} +0 -0
- /package/dist/source/{adapterProfile.d.ts → adapters/adapterProfile.d.ts} +0 -0
- /package/dist/source/{adapterProfile.js → adapters/adapterProfile.js} +0 -0
- /package/dist/source/{idempotency.d.ts → adapters/idempotency.d.ts} +0 -0
- /package/src/{wire/claimEvent.ts → claims/eventContract.ts} +0 -0
- /package/src/{coordination/claimHeartbeatLoop.ts → claims/heartbeat.ts} +0 -0
- /package/src/{coordination/claimMeta.ts → claims/meta.ts} +0 -0
- /package/src/{coordination → claims}/targetConflict.ts +0 -0
- /package/src/{transactions → commit}/confirmation/idempotencyKey.ts +0 -0
- /package/src/{wire/feedCursor.ts → observation/cursor.ts} +0 -0
- /package/src/{wire/deltaDelivery.ts → observation/deliveryContract.ts} +0 -0
- /package/src/source/{adapterProfile.ts → adapters/adapterProfile.ts} +0 -0
|
@@ -4,30 +4,31 @@
|
|
|
4
4
|
* {@link HttpClaimApi} derivation. This module holds only types and has no runtime
|
|
5
5
|
* imports.
|
|
6
6
|
*/
|
|
7
|
-
import type { ClaimHeartbeatAckPayload,
|
|
8
|
-
import type { ClaimHeartbeatReply, ClaimState } from '
|
|
9
|
-
import type { ClientCommitReceipt, CommitWait, CommitRecord, CommitRecordList, CommitRecordListOptions } from '
|
|
10
|
-
import type { LogListResponse, LogQuery } from '
|
|
11
|
-
import type { ModelListEvidence } from '
|
|
7
|
+
import type { ClaimHeartbeatAckPayload, ReadDependency } from '../../coordination/schema.js';
|
|
8
|
+
import type { ClaimHeartbeatReply, ClaimState } from '../../claims/contract.js';
|
|
9
|
+
import type { ClientCommitReceipt, CommitWait, CommitRecord, CommitRecordList, CommitRecordListOptions, CommitOperationBody, ModelOperationAction } from '../../commit/contract.js';
|
|
10
|
+
import type { LogListResponse, LogQuery } from '../../observation/feedContract.js';
|
|
11
|
+
import type { ModelListEvidence } from '../../wire/modelResponses.js';
|
|
12
12
|
export type { CommitWait };
|
|
13
|
-
import type { ModelTarget, ModelClaim } from '
|
|
13
|
+
import type { ModelTarget, ModelClaim } from '../../coordination/schema.js';
|
|
14
14
|
export type { ModelTarget, ModelClaim };
|
|
15
|
-
import type { ResolveClaimMeta } from '
|
|
16
|
-
import type { SchemaRecord } from '
|
|
17
|
-
import type { SyncGroupInput } from '
|
|
18
|
-
import type { CapabilityCan, CapabilityOperation, EffectiveAuthority } from '
|
|
19
|
-
import type { Claim, ClaimStream, ClaimWaitOptions, Duration
|
|
15
|
+
import type { ResolveClaimMeta } from '../../types/global.js';
|
|
16
|
+
import type { SchemaRecord } from '../../schema/schema.js';
|
|
17
|
+
import type { SyncGroupInput } from '../../schema/roles.js';
|
|
18
|
+
import type { CapabilityCan, CapabilityOperation, EffectiveAuthority } from '../../auth/capability.js';
|
|
19
|
+
import type { Claim, ClaimStream, ClaimWaitOptions, Duration } from '../../types/streams.js';
|
|
20
20
|
import type { ModelUpdater, FunctionalUpdateOptions } from './functionalUpdate.js';
|
|
21
|
-
import type { ClaimOptions, ClaimAttemptEvent,
|
|
21
|
+
import type { ClaimOptions, ClaimAttemptEvent, ClaimCall, ClaimReadApi, AwaitedClaimMethod, ModelCreateManyParams, ServerReadOptions } from './modelOperations.js';
|
|
22
22
|
/**
|
|
23
23
|
* The operations available on each model in the sync engine:
|
|
24
|
-
* `get({ id })` — an async single-row server read
|
|
24
|
+
* `get({ id })` — an observational async single-row server read
|
|
25
|
+
* `read({ id })` — an async single-row server read that may guard a write
|
|
25
26
|
* `list({ where })` — an async collection server read
|
|
26
27
|
* `local.get(id)` / `local.list(...)` / `local.count(...)` — synchronous local reads
|
|
27
28
|
* `create({ data })` / `update({ id, data })` / `delete({ id })` — writes
|
|
28
29
|
* `claim({ id })` — a durable claim handle for coordinated writes
|
|
29
30
|
*/
|
|
30
|
-
export type ModelOperationAction
|
|
31
|
+
export type { ModelOperationAction };
|
|
31
32
|
/** @internal Transport envelope; the public typed client returns the row. */
|
|
32
33
|
export interface HttpTransportRead<T = Record<string, unknown>> {
|
|
33
34
|
/**
|
|
@@ -71,12 +72,40 @@ export interface HttpTransportList<T = Record<string, unknown>> {
|
|
|
71
72
|
* and a complete one the same value, so the caller with 500 matching rows got
|
|
72
73
|
* 20 and no way to find out.
|
|
73
74
|
*/
|
|
74
|
-
export type ModelList<T> = T[] & Pick<HttpTransportList<T>, 'hasMore' | 'nextCursor'>;
|
|
75
|
+
export type ModelList<T> = T[] & Pick<HttpTransportList<T>, 'hasMore' | 'nextCursor'> & AsyncIterable<T>;
|
|
76
|
+
export interface ModelListWalkOptions {
|
|
77
|
+
readonly maxPages?: number;
|
|
78
|
+
readonly signal?: AbortSignal;
|
|
79
|
+
}
|
|
80
|
+
/** Collect a complete list through the same guarded cursor loop as async iteration. */
|
|
81
|
+
export declare function collectModelList<T>(first: ModelList<T>, options?: ModelListWalkOptions): Promise<T[]>;
|
|
75
82
|
/**
|
|
76
|
-
* Attach the page state to the rows
|
|
77
|
-
*
|
|
83
|
+
* Attach the page state to the rows, and make the list walk its own pages.
|
|
84
|
+
*
|
|
85
|
+
* `hasMore` and `nextCursor` are non-enumerable, so the result stays
|
|
86
|
+
* indistinguishable from a plain array everywhere they are not read: it maps,
|
|
87
|
+
* filters, spreads, and `JSON.stringify`s exactly as the rows always did.
|
|
88
|
+
*
|
|
89
|
+
* The async iterator is the answer to the question that shape raises. A list
|
|
90
|
+
* read is a page — the server applies a default size and caps the largest —
|
|
91
|
+
* and a page of 20 looks precisely like a complete answer of 20, so every
|
|
92
|
+
* caller either checked `hasMore` or, far more often, reasoned about a
|
|
93
|
+
* truncated set without knowing it. Hand-rolled page walkers were the common
|
|
94
|
+
* result, and each one re-derived the same cursor loop and the same
|
|
95
|
+
* non-advancing-cursor guard.
|
|
96
|
+
*
|
|
97
|
+
* So iterate the value to get the page, and `for await` it to get the
|
|
98
|
+
* collection:
|
|
99
|
+
*
|
|
100
|
+
* ```ts
|
|
101
|
+
* const page = await ablo.issue.list({ where: { teamId } });
|
|
102
|
+
* for (const issue of page) … // the 20 rows that came back
|
|
103
|
+
* for await (const issue of page) … // every issue, paged as it goes
|
|
104
|
+
* ```
|
|
78
105
|
*/
|
|
79
|
-
export declare function modelList<T>(rows: readonly T[], page: Pick<HttpTransportList<unknown>, 'hasMore' | 'nextCursor'
|
|
106
|
+
export declare function modelList<T>(rows: readonly T[], page: Pick<HttpTransportList<unknown>, 'hasMore' | 'nextCursor'>,
|
|
107
|
+
/** Reads the page after `cursor`. Omitted where no transport can follow. */
|
|
108
|
+
fetchNext?: (cursor: string) => Promise<ModelList<T>>): ModelList<T>;
|
|
80
109
|
export type IfClaimedPolicy = 'return' | 'fail';
|
|
81
110
|
export interface ClaimedOptions {
|
|
82
111
|
/**
|
|
@@ -87,7 +116,7 @@ export interface ClaimedOptions {
|
|
|
87
116
|
*/
|
|
88
117
|
readonly ifClaimed?: IfClaimedPolicy;
|
|
89
118
|
}
|
|
90
|
-
export type { ClaimWaitOptions } from '
|
|
119
|
+
export type { ClaimWaitOptions } from '../../types/streams.js';
|
|
91
120
|
export interface ModelReadOptions extends ClaimedOptions {
|
|
92
121
|
}
|
|
93
122
|
/**
|
|
@@ -132,34 +161,20 @@ export interface ClaimCreateOptions {
|
|
|
132
161
|
/** Request-scoped queued / granted / skipped / failed status events. */
|
|
133
162
|
readonly onStatus?: (event: ClaimAttemptEvent) => void;
|
|
134
163
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
readonly id?: string | null;
|
|
140
|
-
readonly data?: Record<string, unknown> | null;
|
|
141
|
-
readonly where?: Record<string, unknown> | null;
|
|
142
|
-
readonly transactionId?: string | null;
|
|
143
|
-
/** Claim identity derived from a held claim; not an application id. */
|
|
144
|
-
readonly claimId?: string | null;
|
|
145
|
-
readonly readAt?: number | null;
|
|
146
|
-
readonly onStale?: OnStaleMode | null;
|
|
147
|
-
/** Fencing token (Option B) from the batch's claim handle; server-validated. */
|
|
148
|
-
readonly fenceToken?: number | null;
|
|
149
|
-
}
|
|
150
|
-
export interface CommitCreateOptions {
|
|
164
|
+
/** Public commit operation inferred from the canonical request-body schema. */
|
|
165
|
+
export type CommitOperationInput = CommitOperationBody;
|
|
166
|
+
export type CommitClaim = Omit<Claim<unknown>, 'data'>;
|
|
167
|
+
export interface CommitCreateOptions<Read = ReadDependency> {
|
|
151
168
|
readonly idempotencyKey?: string | null;
|
|
152
169
|
readonly readAt?: number | null;
|
|
153
|
-
readonly onStale?: OnStaleMode | null;
|
|
154
170
|
/**
|
|
155
171
|
* A claim handle from `ablo.<model>.claim({ id })` (or the HTTP claim
|
|
156
172
|
* surface). Same vocabulary as the per-model writes: the handle's
|
|
157
|
-
* snapshot watermark becomes the batch `readAt` default
|
|
158
|
-
* defaults to `'reject'`, so a commit that follows a claim is guarded
|
|
173
|
+
* snapshot watermark becomes the batch `readAt` default, so a commit that follows a claim is guarded
|
|
159
174
|
* against concurrent edits without re-stating the watermark by hand.
|
|
160
|
-
*
|
|
175
|
+
* An explicit `readAt` on the options wins.
|
|
161
176
|
*/
|
|
162
|
-
readonly claim?:
|
|
177
|
+
readonly claim?: CommitClaim | null;
|
|
163
178
|
/** One atomic batch. Use a one-element array for a single operation. */
|
|
164
179
|
readonly operations: readonly CommitOperationInput[];
|
|
165
180
|
readonly wait?: CommitWait;
|
|
@@ -167,25 +182,15 @@ export interface CommitCreateOptions {
|
|
|
167
182
|
* The batch premise — the "did anything I looked at change?" guard.
|
|
168
183
|
* Declare the rows (`{ model, id, readAt, fields? }`) or sync groups
|
|
169
184
|
* (`{ group, readAt }`, for example `report:abc`) this batch was premised on; the
|
|
170
|
-
* server
|
|
171
|
-
* over the batch. This is distinct from the write-target `readAt`: it guards what
|
|
185
|
+
* server rejects the batch if any moved since `readAt`. This is distinct from the write-target `readAt`: it guards what
|
|
172
186
|
* you read, not what you write.
|
|
173
187
|
*/
|
|
174
|
-
readonly reads?: readonly
|
|
175
|
-
/**
|
|
176
|
-
* Durable premises to register as part of this batch — the persisted
|
|
177
|
-
* sibling of `reads`. Where `reads` guards only this commit, a `track` entry
|
|
178
|
-
* (`{ model, id, readAt? }` for a row or `{ group, readAt? }` for a sync group)
|
|
179
|
-
* lives on past it: a later matching change rides back on a future receipt's
|
|
180
|
-
* `notifications`. A track-only batch (just `track`, an empty `operations`) is
|
|
181
|
-
* the batch form of `ablo.<model>.track()`.
|
|
182
|
-
*/
|
|
183
|
-
readonly track?: readonly TrackDependency[] | null;
|
|
188
|
+
readonly reads?: readonly Read[] | null;
|
|
184
189
|
}
|
|
185
190
|
/** Public projection inferred from the canonical runtime schema. */
|
|
186
191
|
export type CommitReceipt = ClientCommitReceipt;
|
|
187
|
-
export interface CommitResource {
|
|
188
|
-
create(options: CommitCreateOptions): Promise<CommitReceipt>;
|
|
192
|
+
export interface CommitResource<Read = ReadDependency> {
|
|
193
|
+
create(options: CommitCreateOptions<Read>): Promise<CommitReceipt>;
|
|
189
194
|
get(options: {
|
|
190
195
|
readonly id: string;
|
|
191
196
|
}): Promise<CommitRecord | null>;
|
|
@@ -253,17 +258,17 @@ export interface HttpClaimsResource {
|
|
|
253
258
|
}): Promise<void>;
|
|
254
259
|
}
|
|
255
260
|
export interface ModelMutationOptions extends ClaimedOptions {
|
|
256
|
-
readonly claimRef?: string | {
|
|
257
|
-
readonly id: string;
|
|
258
|
-
} | null;
|
|
259
261
|
readonly idempotencyKey?: string | null;
|
|
260
|
-
readonly readAt?: number | null;
|
|
261
|
-
readonly onStale?: OnStaleMode | null;
|
|
262
262
|
/** Commit-lifetime read dependencies checked before this mutation lands. */
|
|
263
263
|
readonly reads?: readonly ReadDependency[] | null;
|
|
264
|
-
/** Persisted read dependencies registered by this mutation. */
|
|
265
|
-
readonly track?: readonly TrackDependency[] | null;
|
|
266
264
|
readonly claim?: Claim | ClaimOptions | null;
|
|
265
|
+
}
|
|
266
|
+
/** Internal fields derived from a claim or functional update, never authored on a model write. */
|
|
267
|
+
export interface InternalModelMutationOptions extends ModelMutationOptions {
|
|
268
|
+
readonly claimRef?: string | {
|
|
269
|
+
readonly id: string;
|
|
270
|
+
} | null;
|
|
271
|
+
readonly readAt?: number | null;
|
|
267
272
|
/** Fencing token (Option B) from the claim; server-validated at commit. */
|
|
268
273
|
readonly fenceToken?: number | null;
|
|
269
274
|
}
|
|
@@ -273,7 +278,7 @@ export interface ModelMutationOptions extends ClaimedOptions {
|
|
|
273
278
|
* namespace for multi-step handles and coordination screens.
|
|
274
279
|
*
|
|
275
280
|
* It is the same surface as the reactive claim API, but because every read is a
|
|
276
|
-
* server round-trip, `state`, `queue`, and `reorder` are awaited here. The
|
|
281
|
+
* server round-trip, `state`, `list`, `queue`, and `reorder` are awaited here. The
|
|
277
282
|
* WebSocket client resolves those synchronously from its local cache, which is what
|
|
278
283
|
* lets it read a claim's state inside a React render; a stateless client has no
|
|
279
284
|
* cache to read, so the promise is unavoidable.
|
|
@@ -281,9 +286,9 @@ export interface ModelMutationOptions extends ClaimedOptions {
|
|
|
281
286
|
* It is derived from `ClaimReadApi` through {@link AwaitedClaimMethod} so the two
|
|
282
287
|
* transports cannot drift: the only difference is the promise wrapper that
|
|
283
288
|
* statelessness forces. `claim({ id })` is identical on both (already async);
|
|
284
|
-
* `state`, `queue`, `reorder`, and `release` are the awaited form.
|
|
289
|
+
* `state`, `list`, `queue`, `reorder`, and `release` are the awaited form.
|
|
285
290
|
*/
|
|
286
|
-
export type HttpClaimApi<T = Record<string, unknown>, Fields = T> =
|
|
291
|
+
export type HttpClaimApi<T = Record<string, unknown>, Fields = T> = ClaimCall<T, Fields> & {
|
|
287
292
|
[K in keyof ClaimReadApi<T>]: AwaitedClaimMethod<ClaimReadApi<T>[K]>;
|
|
288
293
|
};
|
|
289
294
|
/** @internal String-keyed model routing owned by the private HTTP transport. */
|
|
@@ -297,12 +302,7 @@ export interface HttpTransportModel<T = Record<string, unknown>, Fields = T> {
|
|
|
297
302
|
*
|
|
298
303
|
* Public callers never see this shape; `createAbloHttpClient` unwraps it.
|
|
299
304
|
*/
|
|
300
|
-
|
|
301
|
-
get(params: ModelReadOptions & {
|
|
302
|
-
readonly id: string;
|
|
303
|
-
}): Promise<HttpTransportRead<T>>;
|
|
304
|
-
/** @deprecated Use `get({ id })`; retained for the private transport compatibility seam. */
|
|
305
|
-
retrieve(params: ModelReadOptions & {
|
|
305
|
+
read(params: ModelReadOptions & {
|
|
306
306
|
readonly id: string;
|
|
307
307
|
}): Promise<HttpTransportRead<T>>;
|
|
308
308
|
/**
|
|
@@ -321,6 +321,12 @@ export interface HttpTransportModel<T = Record<string, unknown>, Fields = T> {
|
|
|
321
321
|
readonly data: Record<string, unknown>;
|
|
322
322
|
readonly id?: string | null;
|
|
323
323
|
}): Promise<T>;
|
|
324
|
+
/**
|
|
325
|
+
* Creates many rows as one atomic commit and returns them, in the caller's
|
|
326
|
+
* order. One rejected row declines the batch. The rows are the server's own,
|
|
327
|
+
* carried back on the commit rather than read again afterwards.
|
|
328
|
+
*/
|
|
329
|
+
createMany(params: ModelCreateManyParams<Record<string, unknown>>): Promise<T[]>;
|
|
324
330
|
update(params: ModelMutationOptions & {
|
|
325
331
|
readonly id: string;
|
|
326
332
|
readonly data: Record<string, unknown>;
|
|
@@ -345,13 +351,6 @@ export interface HttpTransportModel<T = Record<string, unknown>, Fields = T> {
|
|
|
345
351
|
* schema-agnostic shape stays inside the HTTP transport.
|
|
346
352
|
*/
|
|
347
353
|
claim: HttpClaimApi<T, Fields>;
|
|
348
|
-
/**
|
|
349
|
-
* Registers a durable premise on a row — request/response, no socket. A track
|
|
350
|
-
* declares what a caller is watching; it keeps no local copy of the row, so it
|
|
351
|
-
* belongs to every transport rather than to the reactive client (ADR 0013 §4).
|
|
352
|
-
* The typed public clients expose it as `ablo.<model>.track`.
|
|
353
|
-
*/
|
|
354
|
-
track(params: ModelTrackParams): Promise<ModelTrackResult>;
|
|
355
354
|
}
|
|
356
355
|
/** A single data operation a scoped **agent** session may perform on a model.
|
|
357
356
|
* The SDK-facing name for {@link CapabilityOperation}; the vocabulary itself is
|
|
@@ -401,6 +400,15 @@ export interface CreateAgentSessionParams<S extends SchemaRecord> {
|
|
|
401
400
|
agent: {
|
|
402
401
|
id: string;
|
|
403
402
|
};
|
|
403
|
+
/** The authenticated person who started this agent run. The backend holding
|
|
404
|
+
* the secret key attests this identity, and every resulting delta records
|
|
405
|
+
* the agent as actor plus this user as `onBehalfOf`. Persist the user id on
|
|
406
|
+
* durable work before enqueueing it so a later worker can supply it here. */
|
|
407
|
+
onBehalfOf?: {
|
|
408
|
+
readonly user: {
|
|
409
|
+
readonly id: string;
|
|
410
|
+
};
|
|
411
|
+
};
|
|
404
412
|
/** Per-model operation allowlist, typed against the schema's model names. */
|
|
405
413
|
can: CapabilityCan<S>;
|
|
406
414
|
/** Sync groups this session may subscribe to — typed (`'default'` or
|
|
@@ -429,6 +437,13 @@ export interface CreateAgentClientParams<S extends SchemaRecord> {
|
|
|
429
437
|
* Pass a stable string only when one logical agent must re-attach to its own
|
|
430
438
|
* held claims across reconnects or restarts. */
|
|
431
439
|
id?: string;
|
|
440
|
+
/** The authenticated person who started this run. Preserving it on durable
|
|
441
|
+
* work and supplying it here gives every write dual-principal attribution. */
|
|
442
|
+
onBehalfOf?: {
|
|
443
|
+
readonly user: {
|
|
444
|
+
readonly id: string;
|
|
445
|
+
};
|
|
446
|
+
};
|
|
432
447
|
/** A human-readable label for logs and attribution (carried in `userMeta.name`).
|
|
433
448
|
* It is independent of `id`: two agents that share a `name` still receive
|
|
434
449
|
* distinct ids and coordinate as separate participants — `name` never derives or
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpResources.d.ts","sourceRoot":"","sources":["../../../src/client/resources/httpResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared resource types for the typed clients and private HTTP transport.
|
|
3
|
+
* the commit and claim shapes, the session-mint params and resource, and the
|
|
4
|
+
* {@link HttpClaimApi} derivation. This module holds only types and has no runtime
|
|
5
|
+
* imports.
|
|
6
|
+
*/
|
|
7
|
+
import { AbloValidationError } from '../../errors.js';
|
|
8
|
+
/**
|
|
9
|
+
* How far a `for await` over a list will walk before it gives up.
|
|
10
|
+
*
|
|
11
|
+
* A cursor that stops advancing would otherwise spin forever. The bound is
|
|
12
|
+
* high enough that no real collection reaches it and low enough that a broken
|
|
13
|
+
* server is a failed read rather than a hung process.
|
|
14
|
+
*/
|
|
15
|
+
const AUTO_PAGE_LIMIT = 10_000;
|
|
16
|
+
const LIST_ALL_PAGE_LIMIT = 100;
|
|
17
|
+
const nextPageFor = new WeakMap();
|
|
18
|
+
async function* walkModelList(first, options = {}) {
|
|
19
|
+
const maxPages = options.maxPages ?? AUTO_PAGE_LIMIT;
|
|
20
|
+
if (!Number.isInteger(maxPages) || maxPages < 1) {
|
|
21
|
+
throw new AbloValidationError('maxPages must be a positive integer.', {
|
|
22
|
+
code: 'invalid_options',
|
|
23
|
+
param: 'maxPages',
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
let current = first;
|
|
27
|
+
for (let visited = 0; visited < maxPages; visited += 1) {
|
|
28
|
+
options.signal?.throwIfAborted();
|
|
29
|
+
for (let i = 0; i < current.length; i += 1) {
|
|
30
|
+
options.signal?.throwIfAborted();
|
|
31
|
+
yield current[i];
|
|
32
|
+
}
|
|
33
|
+
const cursor = current.nextCursor;
|
|
34
|
+
const fetchNext = nextPageFor.get(current);
|
|
35
|
+
if (!current.hasMore || cursor === null || fetchNext === undefined)
|
|
36
|
+
return;
|
|
37
|
+
const next = await fetchNext(cursor);
|
|
38
|
+
if (next.nextCursor === cursor) {
|
|
39
|
+
throw new AbloValidationError(`Walking this list received the same continuation cursor twice (${JSON.stringify(cursor)}). ` +
|
|
40
|
+
'The collection may be incomplete, so traversal stopped with an error.', { code: 'malformed_response', param: 'nextCursor' });
|
|
41
|
+
}
|
|
42
|
+
current = next;
|
|
43
|
+
}
|
|
44
|
+
throw new AbloValidationError(`Walking this list passed ${maxPages} pages without reaching the end. ` +
|
|
45
|
+
`Narrow the read with \`where\` or raise \`maxPages\` deliberately.`, { code: 'invalid_options', param: 'maxPages' });
|
|
46
|
+
}
|
|
47
|
+
/** Collect a complete list through the same guarded cursor loop as async iteration. */
|
|
48
|
+
export async function collectModelList(first, options = {}) {
|
|
49
|
+
const rows = [];
|
|
50
|
+
for await (const row of walkModelList(first, {
|
|
51
|
+
maxPages: options.maxPages ?? LIST_ALL_PAGE_LIMIT,
|
|
52
|
+
signal: options.signal,
|
|
53
|
+
}))
|
|
54
|
+
rows.push(row);
|
|
55
|
+
return rows;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Attach the page state to the rows, and make the list walk its own pages.
|
|
59
|
+
*
|
|
60
|
+
* `hasMore` and `nextCursor` are non-enumerable, so the result stays
|
|
61
|
+
* indistinguishable from a plain array everywhere they are not read: it maps,
|
|
62
|
+
* filters, spreads, and `JSON.stringify`s exactly as the rows always did.
|
|
63
|
+
*
|
|
64
|
+
* The async iterator is the answer to the question that shape raises. A list
|
|
65
|
+
* read is a page — the server applies a default size and caps the largest —
|
|
66
|
+
* and a page of 20 looks precisely like a complete answer of 20, so every
|
|
67
|
+
* caller either checked `hasMore` or, far more often, reasoned about a
|
|
68
|
+
* truncated set without knowing it. Hand-rolled page walkers were the common
|
|
69
|
+
* result, and each one re-derived the same cursor loop and the same
|
|
70
|
+
* non-advancing-cursor guard.
|
|
71
|
+
*
|
|
72
|
+
* So iterate the value to get the page, and `for await` it to get the
|
|
73
|
+
* collection:
|
|
74
|
+
*
|
|
75
|
+
* ```ts
|
|
76
|
+
* const page = await ablo.issue.list({ where: { teamId } });
|
|
77
|
+
* for (const issue of page) … // the 20 rows that came back
|
|
78
|
+
* for await (const issue of page) … // every issue, paged as it goes
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export function modelList(rows, page,
|
|
82
|
+
/** Reads the page after `cursor`. Omitted where no transport can follow. */
|
|
83
|
+
fetchNext) {
|
|
84
|
+
const list = Object.defineProperties([...rows], {
|
|
85
|
+
hasMore: { value: page.hasMore, enumerable: false },
|
|
86
|
+
nextCursor: { value: page.nextCursor, enumerable: false },
|
|
87
|
+
[Symbol.asyncIterator]: { value: () => walkModelList(list), enumerable: false },
|
|
88
|
+
});
|
|
89
|
+
if (fetchNext) {
|
|
90
|
+
nextPageFor.set(list, fetchNext);
|
|
91
|
+
}
|
|
92
|
+
return list;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=httpResources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpResources.js","sourceRoot":"","sources":["../../../src/client/resources/httpResources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/** Canonical create identity and result correlation shared by every client. */
|
|
2
|
+
import type { CommitOperationResult } from '../../commit/contract.js';
|
|
3
|
+
/** Resolve the two supported single-create id spellings. The sibling wins. */
|
|
4
|
+
export declare function resolveCreateId(explicitId: string | null | undefined, data: unknown): string | undefined;
|
|
5
|
+
/** Stable across transports and client instances when an idempotency key is supplied. */
|
|
6
|
+
export declare function createModelId(modelName: string, idempotencyKey?: string | null): string;
|
|
7
|
+
/**
|
|
8
|
+
* Return server-authored create rows in input order.
|
|
9
|
+
*
|
|
10
|
+
* Fresh receipts carry operationResults. Durable idempotency replays redact
|
|
11
|
+
* row data, so that path verifies every expected id with a point read. It may
|
|
12
|
+
* fail under a write-only policy, but it can never report a partial collection
|
|
13
|
+
* as success.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveCreatedRows<T>(input: {
|
|
16
|
+
readonly modelName: string;
|
|
17
|
+
readonly ids: readonly string[];
|
|
18
|
+
readonly operationResults?: readonly CommitOperationResult[];
|
|
19
|
+
readonly readRow: (id: string) => Promise<T | undefined>;
|
|
20
|
+
}): Promise<T[]>;
|
|
21
|
+
//# sourceMappingURL=modelCreate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelCreate.d.ts","sourceRoot":"","sources":["../../../src/client/resources/modelCreate.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAI/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAEtE,8EAA8E;AAC9E,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAOpB;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CAUR;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE;IACjD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC7D,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;CAC1D,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAwBf"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/** Canonical create identity and result correlation shared by every client. */
|
|
2
|
+
import { v5 as uuidv5 } from 'uuid';
|
|
3
|
+
import { AbloConnectionError } from '../../errors.js';
|
|
4
|
+
/** Resolve the two supported single-create id spellings. The sibling wins. */
|
|
5
|
+
export function resolveCreateId(explicitId, data) {
|
|
6
|
+
if (typeof explicitId === 'string' && explicitId.length > 0)
|
|
7
|
+
return explicitId;
|
|
8
|
+
const inData = typeof data === 'object' && data !== null
|
|
9
|
+
? data.id
|
|
10
|
+
: undefined;
|
|
11
|
+
return typeof inData === 'string' && inData.length > 0 ? inData : undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Stable across transports and client instances when an idempotency key is supplied. */
|
|
14
|
+
export function createModelId(modelName, idempotencyKey) {
|
|
15
|
+
if (idempotencyKey) {
|
|
16
|
+
return uuidv5(`${modelName}:${idempotencyKey}`, 'aa4ba6d4-bf0b-5b38-9c45-116f79a6e548');
|
|
17
|
+
}
|
|
18
|
+
return typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'
|
|
19
|
+
? crypto.randomUUID()
|
|
20
|
+
: `id_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Return server-authored create rows in input order.
|
|
24
|
+
*
|
|
25
|
+
* Fresh receipts carry operationResults. Durable idempotency replays redact
|
|
26
|
+
* row data, so that path verifies every expected id with a point read. It may
|
|
27
|
+
* fail under a write-only policy, but it can never report a partial collection
|
|
28
|
+
* as success.
|
|
29
|
+
*/
|
|
30
|
+
export async function resolveCreatedRows(input) {
|
|
31
|
+
if (input.operationResults?.length === input.ids.length) {
|
|
32
|
+
const byId = new Map(input.operationResults.map((result) => [
|
|
33
|
+
result.row.id,
|
|
34
|
+
result.row,
|
|
35
|
+
]));
|
|
36
|
+
const ordered = input.ids.map((id) => byId.get(id));
|
|
37
|
+
if (ordered.every((row) => row !== undefined)) {
|
|
38
|
+
return ordered;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const rows = await Promise.all(input.ids.map((id) => input.readRow(id)));
|
|
42
|
+
const missing = input.ids.filter((_id, index) => rows[index] === undefined);
|
|
43
|
+
if (missing.length > 0) {
|
|
44
|
+
throw new AbloConnectionError(`${input.modelName} create confirmed, but ${missing.length} of ${input.ids.length} ` +
|
|
45
|
+
'server rows could not be recovered from its receipt or verified by id.', { code: 'commit_no_result', details: { missingIds: missing } });
|
|
46
|
+
}
|
|
47
|
+
return rows;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=modelCreate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelCreate.js","sourceRoot":"","sources":["../../../src/client/resources/modelCreate.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGtD,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAC7B,UAAqC,EACrC,IAAa;IAEb,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IAC/E,MAAM,MAAM,GACV,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QACvC,CAAC,CAAE,IAAkC,CAAC,EAAE;QACxC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,cAA8B;IAE9B,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,MAAM,CACX,GAAG,SAAS,IAAI,cAAc,EAAE,EAChC,sCAAsC,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU;QAC7E,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE;QACrB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,KAK3C;IACC,IAAI,KAAK,CAAC,gBAAgB,EAAE,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,GAAG,CAClB,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,MAAM,CAAC,GAAiC,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG;SACX,CAAC,CACH,CAAC;QACF,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,EAAkC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,EAAE,CAAC;YAC9E,OAAO,OAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAC3B,GAAG,KAAK,CAAC,SAAS,0BAA0B,OAAO,CAAC,MAAM,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG;YAClF,wEAAwE,EAC1E,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,CAC/D,CAAC;IACJ,CAAC;IACD,OAAO,IAAW,CAAC;AACrB,CAAC"}
|