hikoutei 0.3.5 → 0.3.6
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/README.ja.md +44 -21
- package/README.ko.md +43 -23
- package/README.md +32 -89
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts +3 -3
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmMappedTypedSheets.js +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.d.ts +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarEntityRuntime.js +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js +3 -3
- package/dist/adapter/persistence/providers/mikro-orm/engine/MikroOrmScalarRuntime.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +3 -3
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +15 -15
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +3 -3
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts +5 -5
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +5 -5
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +5 -5
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +3 -3
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +10 -10
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +31 -57
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +2 -2
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js +2 -2
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js +3 -3
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +0 -2
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js +0 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts +4 -4
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js +4 -4
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts +15 -15
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js +15 -15
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts +2 -2
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js +3 -3
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
- package/dist/api/Hikoutei.d.ts +1 -1
- package/dist/api/Hikoutei.js +1 -1
- package/dist/api/index.d.ts +2 -2
- package/dist/api/index.js +2 -2
- package/dist/application/orm/mapping/contracts.d.ts +2 -2
- package/dist/application/orm/mapping/contracts.d.ts.map +1 -1
- package/dist/application/orm/mapping/definition.js +5 -5
- package/dist/application/orm/mapping/definition.js.map +1 -1
- package/dist/application/orm/mapping/projection.js +7 -7
- package/dist/application/orm/mapping/projection.js.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts +3 -3
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.js +2 -2
- package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
- package/dist/application/orm/persistence/projection/projectionEffects.d.ts +1 -1
- package/dist/application/orm/persistence/projection/projectionEffects.js +6 -6
- package/dist/application/orm/persistence/projection/projectionEffects.js.map +1 -1
- package/dist/application/orm/persistence/support/contracts.d.ts +2 -2
- package/dist/application/orm/persistence/support/contracts.d.ts.map +1 -1
- package/dist/application/sync/inbound/autoSystemConflictResolution.js +7 -7
- package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -1
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts +3 -3
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.d.ts.map +1 -1
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.js +1 -1
- package/dist/application/sync/inbound/polling/SimpleSheetPolling.js.map +1 -1
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +2 -2
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +2 -2
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +2 -2
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +3 -3
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +12 -12
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js +74 -80
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +21 -19
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +22 -20
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +10 -10
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +39 -39
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerHelpers.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +23 -21
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +41 -43
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts +4 -4
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js +3 -3
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTiming.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts +3 -3
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +42 -46
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts +8 -8
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.d.ts.map +1 -1
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js +15 -15
- package/dist/application/sync/outbound/projection/ProjectionEffectFactory.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts +3 -3
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +10 -10
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.d.ts +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.js +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts +24 -36
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +85 -214
- package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
- package/dist/application/sync/service/errors.d.ts +1 -1
- package/dist/application/sync/service/errors.js +1 -1
- package/dist/application/sync/service/errors.js.map +1 -1
- package/dist/application/sync/sheets/conflictProjection.d.ts.map +1 -0
- package/dist/application/sync/sheets/conflictProjection.js.map +1 -0
- package/dist/application/sync/{gateway → sheets}/conflictProjectionRegistration.d.ts +1 -1
- package/dist/application/sync/sheets/conflictProjectionRegistration.d.ts.map +1 -0
- package/dist/application/sync/{gateway → sheets}/conflictProjectionRegistration.js +3 -3
- package/dist/application/sync/sheets/conflictProjectionRegistration.js.map +1 -0
- package/dist/application/sync/sheets/constants.d.ts +66 -0
- package/dist/application/sync/sheets/constants.d.ts.map +1 -0
- package/dist/application/sync/{gateway → sheets}/constants.js +15 -15
- package/dist/application/sync/sheets/constants.js.map +1 -0
- package/dist/application/sync/sheets/errors.d.ts +15 -0
- package/dist/application/sync/sheets/errors.d.ts.map +1 -0
- package/dist/application/sync/sheets/errors.js +16 -0
- package/dist/application/sync/sheets/errors.js.map +1 -0
- package/dist/application/sync/{gateway/coordinator/CoordinatedSyncGateway.d.ts → sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts} +29 -28
- package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -0
- package/dist/application/sync/{gateway/coordinator/CoordinatedSyncGateway.js → sheets/mutationCoordinator/CoordinatedSheetsProvider.js} +27 -26
- package/dist/application/sync/sheets/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -0
- package/dist/application/sync/{gateway/coordinator → sheets/mutationCoordinator}/asyncMutex.d.ts +2 -3
- package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.d.ts.map +1 -0
- package/dist/application/sync/sheets/mutationCoordinator/asyncMutex.js.map +1 -0
- package/dist/application/sync/{gateway/coordinator/coordinatorTelemetry.d.ts → sheets/mutationCoordinator/laneTelemetry.d.ts} +4 -4
- package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.d.ts.map +1 -0
- package/dist/application/sync/{gateway/coordinator/coordinatorTelemetry.js → sheets/mutationCoordinator/laneTelemetry.js} +5 -5
- package/dist/application/sync/sheets/mutationCoordinator/laneTelemetry.js.map +1 -0
- package/dist/application/sync/{gateway/SyncGatewayBootstrap.d.ts → sheets/sheetsProvisioning.d.ts} +14 -14
- package/dist/application/sync/sheets/sheetsProvisioning.d.ts.map +1 -0
- package/dist/application/sync/sheets/sheetsProvisioning.js +95 -0
- package/dist/application/sync/sheets/sheetsProvisioning.js.map +1 -0
- package/dist/application/sync/{gateway/syncGateway.d.ts → sheets/syncSheets.d.ts} +61 -117
- package/dist/application/sync/sheets/syncSheets.d.ts.map +1 -0
- package/dist/application/sync/sheets/syncSheets.js +144 -0
- package/dist/application/sync/sheets/syncSheets.js.map +1 -0
- package/dist/application/sync/{gateway/transportClassification.d.ts → sheets/transportOutcome.d.ts} +13 -24
- package/dist/application/sync/sheets/transportOutcome.d.ts.map +1 -0
- package/dist/application/sync/sheets/transportOutcome.js +97 -0
- package/dist/application/sync/sheets/transportOutcome.js.map +1 -0
- package/dist/application/sync/sheets/validation.d.ts +22 -0
- package/dist/application/sync/sheets/validation.d.ts.map +1 -0
- package/dist/application/sync/sheets/validation.js +79 -0
- package/dist/application/sync/sheets/validation.js.map +1 -0
- package/dist/application/sync/telemetry/syncTiming.d.ts +7 -7
- package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
- package/dist/application/sync/telemetry/syncTiming.js +2 -2
- package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
- package/dist/domain/evaluate/contracts.d.ts +1 -1
- package/dist/domain/evaluate/contracts.js +1 -1
- package/dist/domain/model/constants.d.ts +1 -1
- package/dist/domain/model/constants.d.ts.map +1 -1
- package/dist/domain/model/types.d.ts +1 -1
- package/dist/domain/model/types.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.d.ts +1 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.js +1 -1
- package/dist/infrastructure/storage/state/observation/observationTypes.d.ts +3 -3
- package/dist/infrastructure/storage/state/observation/observationTypes.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +9 -3
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +7 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +6 -3
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts +4 -4
- package/dist/infrastructure/storage/sync/shared/syncRegistry.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/shared/syncRegistry.js +4 -4
- package/dist/infrastructure/storage/sync/shared/syncRegistry.js.map +1 -1
- package/dist/shared/encoding/types.d.ts +1 -1
- package/docs/architecture.md +28 -43
- package/docs/ci.md +17 -16
- package/docs/code-guidelines.md +10 -18
- package/docs/development.md +16 -20
- package/docs/gateway-removal-inventory.md +147 -0
- package/docs/quick-start.md +25 -47
- package/docs/sync-observability.md +38 -45
- package/docs/write-and-synchronization-flow.md +31 -70
- package/package.json +2 -4
- package/apps-script/gateway/Code.gs +0 -447
- package/apps-script/gateway/appsscript.json +0 -17
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +0 -43
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +0 -52
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +0 -32
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js +0 -21
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +0 -44
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +0 -181
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts +0 -3
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +0 -810
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts +0 -31
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +0 -560
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts +0 -12
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js +0 -166
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/read/tableReadOperation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts +0 -8
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js +0 -122
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts +0 -39
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js +0 -697
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +0 -19
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +0 -37
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts +0 -51
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js +0 -60
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/codeGsProtocol.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts +0 -44
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js +0 -40
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/constants.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts +0 -12
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +0 -41
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts +0 -5
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js +0 -53
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/timing.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +0 -4
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js +0 -2
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts +0 -11
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js +0 -36
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/validation.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts +0 -68
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +0 -273
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +0 -75
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +0 -365
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts +0 -3
- package/dist/adapter/sheets/providers/apps-script-gateway/validation.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/validation.js +0 -10
- package/dist/adapter/sheets/providers/apps-script-gateway/validation.js.map +0 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiEffectGateway.d.ts +0 -27
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiEffectGateway.d.ts.map +0 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiEffectGateway.js +0 -14
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiEffectGateway.js.map +0 -1
- package/dist/application/sync/gateway/RoutedSyncGateway.d.ts +0 -59
- package/dist/application/sync/gateway/RoutedSyncGateway.d.ts.map +0 -1
- package/dist/application/sync/gateway/RoutedSyncGateway.js +0 -86
- package/dist/application/sync/gateway/RoutedSyncGateway.js.map +0 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +0 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js +0 -95
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +0 -1
- package/dist/application/sync/gateway/conflictProjection.d.ts.map +0 -1
- package/dist/application/sync/gateway/conflictProjection.js.map +0 -1
- package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts.map +0 -1
- package/dist/application/sync/gateway/conflictProjectionRegistration.js.map +0 -1
- package/dist/application/sync/gateway/constants.d.ts +0 -66
- package/dist/application/sync/gateway/constants.d.ts.map +0 -1
- package/dist/application/sync/gateway/constants.js.map +0 -1
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts.map +0 -1
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js.map +0 -1
- package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts.map +0 -1
- package/dist/application/sync/gateway/coordinator/asyncMutex.js.map +0 -1
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts.map +0 -1
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js.map +0 -1
- package/dist/application/sync/gateway/errors.d.ts +0 -15
- package/dist/application/sync/gateway/errors.d.ts.map +0 -1
- package/dist/application/sync/gateway/errors.js +0 -16
- package/dist/application/sync/gateway/errors.js.map +0 -1
- package/dist/application/sync/gateway/syncGateway.d.ts.map +0 -1
- package/dist/application/sync/gateway/syncGateway.js +0 -191
- package/dist/application/sync/gateway/syncGateway.js.map +0 -1
- package/dist/application/sync/gateway/transportClassification.d.ts.map +0 -1
- package/dist/application/sync/gateway/transportClassification.js +0 -170
- package/dist/application/sync/gateway/transportClassification.js.map +0 -1
- package/dist/application/sync/gateway/validation.d.ts +0 -22
- package/dist/application/sync/gateway/validation.d.ts.map +0 -1
- package/dist/application/sync/gateway/validation.js +0 -79
- package/dist/application/sync/gateway/validation.js.map +0 -1
- /package/dist/application/sync/{gateway → sheets}/conflictProjection.d.ts +0 -0
- /package/dist/application/sync/{gateway → sheets}/conflictProjection.js +0 -0
- /package/dist/application/sync/{gateway/coordinator → sheets/mutationCoordinator}/asyncMutex.js +0 -0
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
/** Fast-append and unsupported-capability dispatch paths for the effect worker. */
|
|
2
2
|
import type { FencingContext } from "../../../../infrastructure/storage/sync/shared/writerLease.js";
|
|
3
|
-
import type { FastAppendRowsRequest,
|
|
4
|
-
import { type TransportOutcome } from "../../
|
|
3
|
+
import type { FastAppendRowsRequest, SyncEffectWorkerProvider } from "../../sheets/syncSheets.js";
|
|
4
|
+
import { type TransportOutcome } from "../../sheets/transportOutcome.js";
|
|
5
5
|
import type { ClaimedEffect, EffectWorkerStorage, MutableReport, SyncEffectWorkerBaseOptions } from "./SyncEffectWorker.js";
|
|
6
|
-
/** Fails regular effects explicitly when the configured
|
|
7
|
-
export declare function
|
|
6
|
+
/** Fails regular effects explicitly when the configured provider is fast-only. */
|
|
7
|
+
export declare function rejectUnsupportedProviderEffects(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
|
|
8
8
|
/**
|
|
9
9
|
* Handles a failed remote dispatch at the transport boundary.
|
|
10
10
|
*
|
|
11
11
|
* A thrown batch-level dispatch error is not per-effect rejection evidence for
|
|
12
12
|
* an uncertain transport. Explicit structured remote failures are different:
|
|
13
|
-
* the
|
|
13
|
+
* the provider has returned a verified rejection, so they close the effects in
|
|
14
14
|
* the terminal failure path rather than entering recovery.
|
|
15
15
|
*/
|
|
16
|
-
export declare function
|
|
16
|
+
export declare function handleProviderDispatchError(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport, outcome: TransportOutcome, fullProvider?: SyncEffectWorkerProvider, beforeRecovery?: () => Promise<boolean>, onUncertainWithoutRecovery?: () => Promise<void>): Promise<void>;
|
|
17
17
|
/**
|
|
18
|
-
* Dispatches append-only rows through the idempotent
|
|
19
|
-
* A lost response is still returned to recovery; the
|
|
18
|
+
* Dispatches append-only rows through the idempotent provider batch operation.
|
|
19
|
+
* A lost response is still returned to recovery; the provider receipt batch lets
|
|
20
20
|
* the next attempt classify an already committed write without appending again.
|
|
21
21
|
*
|
|
22
|
-
* When the
|
|
22
|
+
* When the full provider runtime configured the append throttle, the request
|
|
23
23
|
* waits only the time remaining since the previous append request started;
|
|
24
24
|
* regular applyEffects dispatch never waits on this throttle.
|
|
25
25
|
*/
|
|
26
26
|
export declare function dispatchFastAppendGroup(options: SyncEffectWorkerBaseOptions, storage: EffectWorkerStorage, fence: FencingContext, group: {
|
|
27
27
|
readonly request: FastAppendRowsRequest;
|
|
28
28
|
readonly items: readonly ClaimedEffect[];
|
|
29
|
-
}, report: MutableReport,
|
|
29
|
+
}, report: MutableReport, fullProvider?: SyncEffectWorkerProvider, beforeRecovery?: () => Promise<boolean>): Promise<void>;
|
|
30
30
|
export declare function requeueFastAppendItems(storage: EffectWorkerStorage, fence: FencingContext, items: readonly ClaimedEffect[], report: MutableReport): Promise<void>;
|
|
31
31
|
//# sourceMappingURL=SyncEffectWorkerDispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EACrB,
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerDispatch.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAEnF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,4BAA4B,CAAC;AAoBpC,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,kFAAkF;AAClF,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,gBAAgB,EACzB,YAAY,CAAC,EAAE,wBAAwB,EACvC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EACvC,0BAA0B,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,2BAA2B,EACpC,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE;IACL,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,EACD,MAAM,EAAE,aAAa,EACrB,YAAY,CAAC,EAAE,wBAAwB,EACvC,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAqJf;AA2CD,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,mBAAmB,EAC5B,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -4,21 +4,21 @@ import { SYNC_TIMING_OPERATION_KINDS, SYNC_TIMING_SCOPES, } from "../../telemetr
|
|
|
4
4
|
import { WORKER_ERROR_CODES } from "./SyncEffectWorkerConstants.js";
|
|
5
5
|
import { isPresent, lookupResult, } from "./SyncEffectWorkerHelpers.js";
|
|
6
6
|
import { completeApplied, completeFailure, recoverUnknownResults, } from "./SyncEffectWorkerTransitions.js";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { classifyTransportOutcome, TRANSPORT_OUTCOME_KINDS, } from "../../
|
|
10
|
-
/** Fails regular effects explicitly when the configured
|
|
11
|
-
export async function
|
|
7
|
+
import { emitProviderTiming, emitWorkerTiming, } from "./SyncEffectWorkerTiming.js";
|
|
8
|
+
import { routeKey } from "./SyncEffectWorkerRouting.js";
|
|
9
|
+
import { classifyTransportOutcome, TRANSPORT_OUTCOME_KINDS, } from "../../sheets/transportOutcome.js";
|
|
10
|
+
/** Fails regular effects explicitly when the configured provider is fast-only. */
|
|
11
|
+
export async function rejectUnsupportedProviderEffects(storage, fence, items, report) {
|
|
12
12
|
for (const item of items) {
|
|
13
13
|
if (item.pending.status === "delivery_uncertain") {
|
|
14
|
-
await markUncertainWithoutRecovery(storage, fence, [item], report, "The configured
|
|
14
|
+
await markUncertainWithoutRecovery(storage, fence, [item], report, "The configured provider cannot probe an uncertain delivery yet.");
|
|
15
15
|
continue;
|
|
16
16
|
}
|
|
17
|
-
if (!isPresent(item.
|
|
17
|
+
if (!isPresent(item.providerEffect)) {
|
|
18
18
|
await completeFailure(storage, fence, item, WORKER_ERROR_CODES.INVALID_EFFECT_PAYLOAD, item.invalidPayloadError, report);
|
|
19
19
|
continue;
|
|
20
20
|
}
|
|
21
|
-
await completeFailure(storage, fence, item, WORKER_ERROR_CODES.
|
|
21
|
+
await completeFailure(storage, fence, item, WORKER_ERROR_CODES.PROVIDER_CAPABILITY_MISSING, presentValue("The configured provider supports fast append only; regular effect dispatch or recovery is unavailable."), report);
|
|
22
22
|
}
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
@@ -26,17 +26,17 @@ export async function rejectUnsupportedGatewayEffects(storage, fence, items, rep
|
|
|
26
26
|
*
|
|
27
27
|
* A thrown batch-level dispatch error is not per-effect rejection evidence for
|
|
28
28
|
* an uncertain transport. Explicit structured remote failures are different:
|
|
29
|
-
* the
|
|
29
|
+
* the provider has returned a verified rejection, so they close the effects in
|
|
30
30
|
* the terminal failure path rather than entering recovery.
|
|
31
31
|
*/
|
|
32
|
-
export async function
|
|
32
|
+
export async function handleProviderDispatchError(options, storage, fence, items, report, outcome, fullProvider, beforeRecovery, onUncertainWithoutRecovery) {
|
|
33
33
|
if (outcome.kind === TRANSPORT_OUTCOME_KINDS.EXPLICIT_REMOTE_FAILURE) {
|
|
34
34
|
for (const item of items) {
|
|
35
|
-
await completeFailure(storage, fence, item, WORKER_ERROR_CODES.
|
|
35
|
+
await completeFailure(storage, fence, item, WORKER_ERROR_CODES.PROVIDER_REMOTE_ERROR, presentValue(outcome.message), report);
|
|
36
36
|
}
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
if (
|
|
39
|
+
if (fullProvider === undefined) {
|
|
40
40
|
if (onUncertainWithoutRecovery !== undefined) {
|
|
41
41
|
await onUncertainWithoutRecovery();
|
|
42
42
|
return;
|
|
@@ -45,19 +45,19 @@ export async function handleGatewayDispatchError(options, storage, fence, items,
|
|
|
45
45
|
return;
|
|
46
46
|
}
|
|
47
47
|
if (beforeRecovery === undefined || await beforeRecovery()) {
|
|
48
|
-
await recoverUnknownResults({ ...options,
|
|
48
|
+
await recoverUnknownResults({ ...options, provider: fullProvider }, storage, fence, items, report);
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Dispatches append-only rows through the idempotent
|
|
53
|
-
* A lost response is still returned to recovery; the
|
|
52
|
+
* Dispatches append-only rows through the idempotent provider batch operation.
|
|
53
|
+
* A lost response is still returned to recovery; the provider receipt batch lets
|
|
54
54
|
* the next attempt classify an already committed write without appending again.
|
|
55
55
|
*
|
|
56
|
-
* When the
|
|
56
|
+
* When the full provider runtime configured the append throttle, the request
|
|
57
57
|
* waits only the time remaining since the previous append request started;
|
|
58
58
|
* regular applyEffects dispatch never waits on this throttle.
|
|
59
59
|
*/
|
|
60
|
-
export async function dispatchFastAppendGroup(options, storage, fence, group, report,
|
|
60
|
+
export async function dispatchFastAppendGroup(options, storage, fence, group, report, fullProvider, beforeRecovery) {
|
|
61
61
|
const throttleStartedAt = Date.now();
|
|
62
62
|
const throttledMs = await options.batchController?.waitForAppendThrottle(throttleStartedAt) ?? 0;
|
|
63
63
|
if (throttledMs > 0) {
|
|
@@ -70,56 +70,56 @@ export async function dispatchFastAppendGroup(options, storage, fence, group, re
|
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
let response;
|
|
73
|
-
const
|
|
74
|
-
options.batchController?.beginAppendDispatch(
|
|
75
|
-
const
|
|
76
|
-
const batchLimit = options.batchController?.beginDispatch(
|
|
73
|
+
const providerStartedAt = Date.now();
|
|
74
|
+
options.batchController?.beginAppendDispatch(providerStartedAt);
|
|
75
|
+
const requestRouteKey = routeKey(group.request);
|
|
76
|
+
const batchLimit = options.batchController?.beginDispatch(requestRouteKey, providerStartedAt) ?? group.items.length;
|
|
77
77
|
try {
|
|
78
|
-
response = await options.
|
|
78
|
+
response = await options.provider.fastAppendRows(group.request);
|
|
79
79
|
}
|
|
80
80
|
catch (error) {
|
|
81
81
|
const outcome = classifyTransportOutcome(error);
|
|
82
|
-
options.batchController?.observe(
|
|
83
|
-
durationMs: Date.now() -
|
|
82
|
+
options.batchController?.observe(requestRouteKey, {
|
|
83
|
+
durationMs: Date.now() - providerStartedAt,
|
|
84
84
|
responseSucceeded: false,
|
|
85
85
|
responseLoss: outcome.kind === TRANSPORT_OUTCOME_KINDS.DELIVERY_UNCERTAIN,
|
|
86
86
|
});
|
|
87
|
-
const failedDurationMs = Date.now() -
|
|
87
|
+
const failedDurationMs = Date.now() - providerStartedAt;
|
|
88
88
|
emitWorkerTiming(options, {
|
|
89
89
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
90
|
-
phase: "
|
|
90
|
+
phase: "append_provider_dispatch",
|
|
91
91
|
durationMs: failedDurationMs,
|
|
92
92
|
operationKinds: [SYNC_TIMING_OPERATION_KINDS.APPEND],
|
|
93
93
|
operationCounts: { append: group.items.length, update: 0, delete: 0 },
|
|
94
|
-
routeKey,
|
|
94
|
+
routeKey: requestRouteKey,
|
|
95
95
|
batchLimit,
|
|
96
96
|
responseSucceeded: false,
|
|
97
97
|
});
|
|
98
98
|
const resultFence = {
|
|
99
99
|
...fence,
|
|
100
|
-
now: options.clock?.() ?? fence.now + Math.max(0, Date.now() -
|
|
100
|
+
now: options.clock?.() ?? fence.now + Math.max(0, Date.now() - providerStartedAt),
|
|
101
101
|
};
|
|
102
|
-
await
|
|
102
|
+
await handleProviderDispatchError(options, storage, resultFence, group.items, report, outcome, fullProvider, beforeRecovery, () => markFastAppendUncertain(storage, resultFence, group.items, report, outcome.message));
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
|
-
const durationMs = Date.now() -
|
|
105
|
+
const durationMs = Date.now() - providerStartedAt;
|
|
106
106
|
const resultFence = {
|
|
107
107
|
...fence,
|
|
108
|
-
now: options.clock?.() ?? fence.now + Math.max(0, Date.now() -
|
|
108
|
+
now: options.clock?.() ?? fence.now + Math.max(0, Date.now() - providerStartedAt),
|
|
109
109
|
};
|
|
110
|
-
options.batchController?.observe(
|
|
110
|
+
options.batchController?.observe(requestRouteKey, {
|
|
111
111
|
durationMs,
|
|
112
112
|
responseSucceeded: response.results.length === group.items.length && !response.hasMore,
|
|
113
113
|
responseLoss: response.results.length !== group.items.length || response.hasMore,
|
|
114
114
|
});
|
|
115
|
-
|
|
115
|
+
emitProviderTiming(options, response.timing);
|
|
116
116
|
emitWorkerTiming(options, {
|
|
117
117
|
scope: SYNC_TIMING_SCOPES.WORKER,
|
|
118
|
-
phase: "
|
|
118
|
+
phase: "append_provider_dispatch",
|
|
119
119
|
durationMs,
|
|
120
120
|
operationKinds: [SYNC_TIMING_OPERATION_KINDS.APPEND],
|
|
121
121
|
operationCounts: { append: group.items.length, update: 0, delete: 0 },
|
|
122
|
-
routeKey,
|
|
122
|
+
routeKey: requestRouteKey,
|
|
123
123
|
batchLimit,
|
|
124
124
|
responseSucceeded: response.results.length === group.items.length && !response.hasMore,
|
|
125
125
|
});
|
|
@@ -147,7 +147,7 @@ export async function dispatchFastAppendGroup(options, storage, fence, group, re
|
|
|
147
147
|
await requeueFastAppendItems(storage, resultFence, [item], report);
|
|
148
148
|
continue;
|
|
149
149
|
}
|
|
150
|
-
if (!isPresent(item.
|
|
150
|
+
if (!isPresent(item.providerEffect)) {
|
|
151
151
|
await requeueFastAppendItems(storage, resultFence, [item], report);
|
|
152
152
|
continue;
|
|
153
153
|
}
|
|
@@ -165,8 +165,8 @@ export async function dispatchFastAppendGroup(options, storage, fence, group, re
|
|
|
165
165
|
...resultFence,
|
|
166
166
|
now: options.clock?.() ?? resultFence.now,
|
|
167
167
|
};
|
|
168
|
-
if (
|
|
169
|
-
await recoverUnknownResults({ ...options,
|
|
168
|
+
if (fullProvider !== undefined && (beforeRecovery === undefined || await beforeRecovery())) {
|
|
169
|
+
await recoverUnknownResults({ ...options, provider: fullProvider }, storage, recoveryFence, recoveryItems, report);
|
|
170
170
|
}
|
|
171
171
|
else {
|
|
172
172
|
await markFastAppendUncertain(storage, recoveryFence, recoveryItems, report, "Fast append did not return receipt-backed visible evidence.");
|
|
@@ -211,7 +211,7 @@ export async function requeueFastAppendItems(storage, fence, items, report) {
|
|
|
211
211
|
...fence,
|
|
212
212
|
effectId: item.pending.effect_id,
|
|
213
213
|
claimToken: item.claimToken,
|
|
214
|
-
lastErrorCode: WORKER_ERROR_CODES.
|
|
214
|
+
lastErrorCode: WORKER_ERROR_CODES.PROVIDER_RETRYABLE_ERROR,
|
|
215
215
|
lastErrorMessage: "Fast append response was not observed; the row will be retried and reconciled later.",
|
|
216
216
|
})) {
|
|
217
217
|
report.deferred += 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerDispatch.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAGnF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerDispatch.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerDispatch.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { LOOKUP_RESULT_KINDS, PRESENCE_KINDS, } from "../../../../shared/state/c
|
|
|
3
3
|
import { applicableValue, notApplicableValue, } from "../../../../shared/state/index.js";
|
|
4
4
|
import { STORAGE_ERROR_CODES, StorageError, } from "../../../../infrastructure/storage/errors.js";
|
|
5
5
|
export function safeErrorMessage(error) {
|
|
6
|
-
return error instanceof Error ? error.message.slice(0, 500) : "unknown sync
|
|
6
|
+
return error instanceof Error ? error.message.slice(0, 500) : "unknown sync provider failure";
|
|
7
7
|
}
|
|
8
8
|
export function isPresent(value) {
|
|
9
9
|
return value.kind === PRESENCE_KINDS.PRESENT;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerHelpers.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerHelpers.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAGrE,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,8CAA8C,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerHelpers.js","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerHelpers.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAGrE,OAAO,EACL,mBAAmB,EACnB,cAAc,GACf,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EACL,eAAe,EACf,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,8CAA8C,CAAC;AAEtD,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,+BAA+B,CAAC;AAChG,CAAC;AAOD,MAAM,UAAU,SAAS,CAAI,KAAkB;IAC7C,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,OAAO,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,KAAkB;IAC5C,OAAO,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,MAAM,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,YAAY,CAAI,KAAoB;IAClD,OAAO,KAAK,KAAK,SAAS;QACxB,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,SAAS,EAAE;QACzC,CAAC,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAI,KAAe;IAC7D,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,IAAI,YAAY,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAC9E,CAAC"}
|
|
@@ -1,32 +1,34 @@
|
|
|
1
1
|
/** Effect conversion, request grouping, and routing predicates. */
|
|
2
2
|
import type { EffectTargetKind } from "../../../../domain/index.js";
|
|
3
3
|
import type { PendingEffect, WriterLease, FencingContext } from "../../../../infrastructure/storage/index.js";
|
|
4
|
-
import type { ApplySyncEffectsRequest, FastAppendRowsRequest, ReadSyncEffectPostconditionsRequest,
|
|
4
|
+
import type { ApplySyncEffectsRequest, FastAppendRowsRequest, ReadSyncEffectPostconditionsRequest, SyncProjectionEffect, SyncEffectResult, SyncProjection } from "../../sheets/syncSheets.js";
|
|
5
5
|
import type { ClaimedEffect } from "./SyncEffectWorker.js";
|
|
6
6
|
/** Accepts either inline read-back or a flushed-write acknowledgement. */
|
|
7
|
-
export declare function
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
7
|
+
export declare function isSuccessfulPostcondition(status: SyncEffectResult["postcondition"]): boolean;
|
|
8
|
+
export declare function toProviderEffect(effect: PendingEffect): SyncProjectionEffect;
|
|
9
|
+
export declare function groupByProviderRequest(items: readonly ClaimedEffect[]): readonly ProviderEffectGroup[];
|
|
10
10
|
/** One append-only route paired with the claimed effects it represents. */
|
|
11
|
-
export interface
|
|
11
|
+
export interface FastAppendProviderGroup {
|
|
12
12
|
readonly request: FastAppendRowsRequest;
|
|
13
13
|
readonly items: readonly ClaimedEffect[];
|
|
14
14
|
}
|
|
15
|
-
/** Groups append-only effects into one fast
|
|
16
|
-
export declare function groupByFastAppendRequest(items: readonly ClaimedEffect[]
|
|
15
|
+
/** Groups append-only effects into one fast provider request per route. */
|
|
16
|
+
export declare function groupByFastAppendRequest(items: readonly ClaimedEffect[]): readonly FastAppendProviderGroup[];
|
|
17
17
|
/** Splits append groups using the same adaptive route limit as regular effects. */
|
|
18
|
-
export declare function chunkFastAppendGroups(groups: readonly
|
|
18
|
+
export declare function chunkFastAppendGroups(groups: readonly FastAppendProviderGroup[], limit: number | ((group: FastAppendProviderGroup) => number)): readonly FastAppendProviderGroup[];
|
|
19
19
|
/** Groups postcondition reads so each group performs one remote Sheet scan. */
|
|
20
|
-
export declare function
|
|
20
|
+
export declare function groupByPostconditionRequest(items: readonly ClaimedEffect[]): readonly {
|
|
21
21
|
readonly request: ReadSyncEffectPostconditionsRequest;
|
|
22
22
|
readonly items: readonly ClaimedEffect[];
|
|
23
23
|
}[];
|
|
24
|
-
/** Builds the stable grouping key shared by all
|
|
25
|
-
export declare function
|
|
24
|
+
/** Builds the stable grouping key shared by all provider operations on one route. */
|
|
25
|
+
export declare function routeKey(route: SyncProjectionEffect | ApplySyncEffectsRequest | FastAppendRowsRequest): string;
|
|
26
26
|
/**
|
|
27
|
-
* Splits each physical-route group into sub-batches no larger than the
|
|
28
|
-
*
|
|
29
|
-
*
|
|
27
|
+
* Splits each physical-route group into sub-batches no larger than the
|
|
28
|
+
* provider's bounded effect batch (`EFFECT_BATCH_LIMIT` in the worker
|
|
29
|
+
* constants, matching `MAX_EFFECTS_PER_REQUEST` in the Google Sheets API
|
|
30
|
+
* provider constants) so one `applyEffects` call returns a complete result
|
|
31
|
+
* set instead of a `hasMore` partial prefix.
|
|
30
32
|
*
|
|
31
33
|
* The physical-route grouping and the per-target predecessor ordering of the
|
|
32
34
|
* supplied items are preserved: every effect stays on its original route, and
|
|
@@ -35,18 +37,18 @@ export declare function gatewayRouteKey(route: SyncGatewayEffect | ApplySyncEffe
|
|
|
35
37
|
* earliest non-applied effect per target ready), so sub-batching never
|
|
36
38
|
* reorders effects that depend on one another.
|
|
37
39
|
*/
|
|
38
|
-
export declare function
|
|
39
|
-
/** One physical route's effects paired with their
|
|
40
|
-
export interface
|
|
40
|
+
export declare function chunkProviderEffectGroups(groups: readonly ProviderEffectGroup[], limit?: number | ((group: ProviderEffectGroup) => number)): readonly ProviderEffectGroup[];
|
|
41
|
+
/** One physical route's effects paired with their provider request. */
|
|
42
|
+
export interface ProviderEffectGroup {
|
|
41
43
|
readonly request: ApplySyncEffectsRequest;
|
|
42
44
|
readonly items: readonly ClaimedEffect[];
|
|
43
45
|
}
|
|
44
|
-
export declare function isSyncEffectKind(value: string): value is
|
|
45
|
-
export declare function isCandidateProtectingUserInputEffect(effect:
|
|
46
|
+
export declare function isSyncEffectKind(value: string): value is SyncProjectionEffect["effectKind"];
|
|
47
|
+
export declare function isCandidateProtectingUserInputEffect(effect: SyncProjectionEffect): boolean;
|
|
46
48
|
/** Selects only new System_State entity rows for the append-only fast path. */
|
|
47
49
|
export declare function isFastAppendCandidate(item: ClaimedEffect): boolean;
|
|
48
|
-
/** Classifies one converted
|
|
49
|
-
export declare function isFastAppendEffect(effect:
|
|
50
|
+
/** Classifies one converted provider effect as an append-only fast candidate. */
|
|
51
|
+
export declare function isFastAppendEffect(effect: SyncProjectionEffect): boolean;
|
|
50
52
|
/**
|
|
51
53
|
* Pending-level fast-append classification used to bound a bulk claim window
|
|
52
54
|
* before conversion. Recovery-status effects are excluded because the claim
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncEffectWorkerRouting.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerRouting.ts"],"names":[],"mappings":"AAAA,mEAAmE;AAMnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,cAAc,EACf,MAAM,6CAA6C,CAAC;AAErD,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,mCAAmC,EACnC,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"SyncEffectWorkerRouting.d.ts","sourceRoot":"","sources":["../../../../../src/application/sync/outbound/effects/SyncEffectWorkerRouting.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,16 +2,16 @@
|
|
|
2
2
|
import { NON_NEGATIVE_SAFE_INTEGER_MINIMUM, POSITIVE_SAFE_INTEGER_MINIMUM, } from "../../../../domain/index.js";
|
|
3
3
|
import { fromSqlNullable } from "../../../../infrastructure/storage/sqlite/sqlState.js";
|
|
4
4
|
import { LOOKUP_RESULT_KINDS } from "../../../../shared/state/constants.js";
|
|
5
|
-
import { parseSyncProjectionEffectPayload } from "../../
|
|
6
|
-
import {
|
|
7
|
-
import { EFFECT_TARGET_KINDS,
|
|
5
|
+
import { parseSyncProjectionEffectPayload } from "../../sheets/syncSheets.js";
|
|
6
|
+
import { SYNC_POSTCONDITION_MODES, SYNC_POSTCONDITION_STATUSES, SYNC_PROJECTIONS, } from "../../sheets/constants.js";
|
|
7
|
+
import { EFFECT_TARGET_KINDS, EFFECT_BATCH_LIMIT, OUTBOX_EFFECT_STATUSES, SYNC_EFFECT_KINDS, } from "./SyncEffectWorkerConstants.js";
|
|
8
8
|
import { isPresent, lookupResult, throwWorkerError, } from "./SyncEffectWorkerHelpers.js";
|
|
9
9
|
/** Accepts either inline read-back or a flushed-write acknowledgement. */
|
|
10
|
-
export function
|
|
11
|
-
return status ===
|
|
12
|
-
status ===
|
|
10
|
+
export function isSuccessfulPostcondition(status) {
|
|
11
|
+
return status === SYNC_POSTCONDITION_STATUSES.VERIFIED ||
|
|
12
|
+
status === SYNC_POSTCONDITION_STATUSES.ACKNOWLEDGED;
|
|
13
13
|
}
|
|
14
|
-
export function
|
|
14
|
+
export function toProviderEffect(effect) {
|
|
15
15
|
if (!isSyncEffectKind(effect.effect_kind)) {
|
|
16
16
|
throwWorkerError("unsupported sync effect kind: " + effect.effect_kind);
|
|
17
17
|
}
|
|
@@ -37,24 +37,23 @@ export function toGatewayEffect(effect) {
|
|
|
37
37
|
payload: parseSyncProjectionEffectPayload(effect.payload_json),
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
-
export function
|
|
40
|
+
export function groupByProviderRequest(items) {
|
|
41
41
|
const groups = new Map();
|
|
42
42
|
for (const item of items) {
|
|
43
|
-
const effect = item.
|
|
43
|
+
const effect = item.providerEffect;
|
|
44
44
|
if (!isPresent(effect))
|
|
45
45
|
continue;
|
|
46
|
-
const key =
|
|
46
|
+
const key = routeKey(effect.value);
|
|
47
47
|
const existing = lookupResult(groups.get(key));
|
|
48
48
|
if (existing.kind === LOOKUP_RESULT_KINDS.NOT_FOUND) {
|
|
49
49
|
groups.set(key, {
|
|
50
50
|
request: {
|
|
51
51
|
physicalSheetId: effect.value.physicalSheetId,
|
|
52
|
-
...(authority === undefined ? {} : { authority }),
|
|
53
52
|
sheetName: effect.value.payload.sheetName,
|
|
54
53
|
registeredRange: effect.value.payload.registeredRange,
|
|
55
54
|
projection: effect.value.projection,
|
|
56
55
|
schemaVersion: effect.value.payload.schemaVersion,
|
|
57
|
-
postconditionMode:
|
|
56
|
+
postconditionMode: SYNC_POSTCONDITION_MODES.DEFERRED,
|
|
58
57
|
effects: [effect.value],
|
|
59
58
|
},
|
|
60
59
|
items: [item],
|
|
@@ -63,7 +62,7 @@ export function groupByGatewayRequest(items, authority) {
|
|
|
63
62
|
else {
|
|
64
63
|
existing.value.request = {
|
|
65
64
|
...existing.value.request,
|
|
66
|
-
postconditionMode:
|
|
65
|
+
postconditionMode: SYNC_POSTCONDITION_MODES.DEFERRED,
|
|
67
66
|
effects: [...existing.value.request.effects, effect.value],
|
|
68
67
|
};
|
|
69
68
|
existing.value.items.push(item);
|
|
@@ -71,14 +70,14 @@ export function groupByGatewayRequest(items, authority) {
|
|
|
71
70
|
}
|
|
72
71
|
return [...groups.values()];
|
|
73
72
|
}
|
|
74
|
-
/** Groups append-only effects into one fast
|
|
75
|
-
export function groupByFastAppendRequest(items
|
|
73
|
+
/** Groups append-only effects into one fast provider request per route. */
|
|
74
|
+
export function groupByFastAppendRequest(items) {
|
|
76
75
|
const groups = new Map();
|
|
77
76
|
for (const item of items) {
|
|
78
|
-
const effect = item.
|
|
77
|
+
const effect = item.providerEffect;
|
|
79
78
|
if (!isPresent(effect))
|
|
80
79
|
continue;
|
|
81
|
-
const key =
|
|
80
|
+
const key = routeKey(effect.value);
|
|
82
81
|
const row = {
|
|
83
82
|
effectId: effect.value.effectId,
|
|
84
83
|
payloadHash: effect.value.payloadHash,
|
|
@@ -90,7 +89,6 @@ export function groupByFastAppendRequest(items, authority) {
|
|
|
90
89
|
groups.set(key, {
|
|
91
90
|
request: {
|
|
92
91
|
physicalSheetId: effect.value.physicalSheetId,
|
|
93
|
-
...(authority === undefined ? {} : { authority }),
|
|
94
92
|
sheetName: effect.value.payload.sheetName,
|
|
95
93
|
registeredRange: effect.value.payload.registeredRange,
|
|
96
94
|
projection: effect.value.projection,
|
|
@@ -134,19 +132,18 @@ export function chunkFastAppendGroups(groups, limit) {
|
|
|
134
132
|
return chunked;
|
|
135
133
|
}
|
|
136
134
|
/** Groups postcondition reads so each group performs one remote Sheet scan. */
|
|
137
|
-
export function
|
|
135
|
+
export function groupByPostconditionRequest(items) {
|
|
138
136
|
const groups = new Map();
|
|
139
137
|
for (const item of items) {
|
|
140
|
-
const effect = item.
|
|
138
|
+
const effect = item.providerEffect;
|
|
141
139
|
if (!isPresent(effect))
|
|
142
140
|
continue;
|
|
143
|
-
const key =
|
|
141
|
+
const key = routeKey(effect.value);
|
|
144
142
|
const existing = lookupResult(groups.get(key));
|
|
145
143
|
if (existing.kind === LOOKUP_RESULT_KINDS.NOT_FOUND) {
|
|
146
144
|
groups.set(key, {
|
|
147
145
|
request: {
|
|
148
146
|
physicalSheetId: effect.value.physicalSheetId,
|
|
149
|
-
...(authority === undefined ? {} : { authority }),
|
|
150
147
|
sheetName: effect.value.payload.sheetName,
|
|
151
148
|
registeredRange: effect.value.payload.registeredRange,
|
|
152
149
|
projection: effect.value.projection,
|
|
@@ -166,8 +163,8 @@ export function groupByGatewayPostconditionRequest(items, authority) {
|
|
|
166
163
|
}
|
|
167
164
|
return [...groups.values()];
|
|
168
165
|
}
|
|
169
|
-
/** Builds the stable grouping key shared by all
|
|
170
|
-
export function
|
|
166
|
+
/** Builds the stable grouping key shared by all provider operations on one route. */
|
|
167
|
+
export function routeKey(route) {
|
|
171
168
|
const sheetName = "payload" in route ? route.payload.sheetName : route.sheetName;
|
|
172
169
|
const registeredRange = "payload" in route ? route.payload.registeredRange : route.registeredRange;
|
|
173
170
|
const schemaVersion = "payload" in route ? route.payload.schemaVersion : route.schemaVersion;
|
|
@@ -175,13 +172,15 @@ export function gatewayRouteKey(route) {
|
|
|
175
172
|
}
|
|
176
173
|
function requireBatchLimit(value) {
|
|
177
174
|
if (!Number.isSafeInteger(value) || value < POSITIVE_SAFE_INTEGER_MINIMUM) {
|
|
178
|
-
throwWorkerError("
|
|
175
|
+
throwWorkerError("provider effect batch limit must be a positive safe integer");
|
|
179
176
|
}
|
|
180
177
|
}
|
|
181
178
|
/**
|
|
182
|
-
* Splits each physical-route group into sub-batches no larger than the
|
|
183
|
-
*
|
|
184
|
-
*
|
|
179
|
+
* Splits each physical-route group into sub-batches no larger than the
|
|
180
|
+
* provider's bounded effect batch (`EFFECT_BATCH_LIMIT` in the worker
|
|
181
|
+
* constants, matching `MAX_EFFECTS_PER_REQUEST` in the Google Sheets API
|
|
182
|
+
* provider constants) so one `applyEffects` call returns a complete result
|
|
183
|
+
* set instead of a `hasMore` partial prefix.
|
|
185
184
|
*
|
|
186
185
|
* The physical-route grouping and the per-target predecessor ordering of the
|
|
187
186
|
* supplied items are preserved: every effect stays on its original route, and
|
|
@@ -190,7 +189,7 @@ function requireBatchLimit(value) {
|
|
|
190
189
|
* earliest non-applied effect per target ready), so sub-batching never
|
|
191
190
|
* reorders effects that depend on one another.
|
|
192
191
|
*/
|
|
193
|
-
export function
|
|
192
|
+
export function chunkProviderEffectGroups(groups, limit = EFFECT_BATCH_LIMIT) {
|
|
194
193
|
if (groups.length === 0)
|
|
195
194
|
return groups;
|
|
196
195
|
const chunked = [];
|
|
@@ -212,19 +211,18 @@ export function chunkGatewayEffectGroups(groups, limit = GATEWAY_EFFECT_BATCH_LI
|
|
|
212
211
|
function sliceApplyEffectsRequest(request, items) {
|
|
213
212
|
const effects = [];
|
|
214
213
|
for (const item of items) {
|
|
215
|
-
if (!isPresent(item.
|
|
216
|
-
throwWorkerError("
|
|
214
|
+
if (!isPresent(item.providerEffect)) {
|
|
215
|
+
throwWorkerError("provider effect batch item is missing its provider effect");
|
|
217
216
|
}
|
|
218
|
-
effects.push(item.
|
|
217
|
+
effects.push(item.providerEffect.value);
|
|
219
218
|
}
|
|
220
219
|
return {
|
|
221
220
|
physicalSheetId: request.physicalSheetId,
|
|
222
|
-
...(request.authority === undefined ? {} : { authority: request.authority }),
|
|
223
221
|
sheetName: request.sheetName,
|
|
224
222
|
registeredRange: request.registeredRange,
|
|
225
223
|
projection: request.projection,
|
|
226
224
|
schemaVersion: request.schemaVersion,
|
|
227
|
-
postconditionMode: request.postconditionMode ??
|
|
225
|
+
postconditionMode: request.postconditionMode ?? SYNC_POSTCONDITION_MODES.DEFERRED,
|
|
228
226
|
effects,
|
|
229
227
|
};
|
|
230
228
|
}
|
|
@@ -242,11 +240,11 @@ export function isCandidateProtectingUserInputEffect(effect) {
|
|
|
242
240
|
}
|
|
243
241
|
/** Selects only new System_State entity rows for the append-only fast path. */
|
|
244
242
|
export function isFastAppendCandidate(item) {
|
|
245
|
-
if (!isPresent(item.
|
|
243
|
+
if (!isPresent(item.providerEffect))
|
|
246
244
|
return false;
|
|
247
|
-
return isFastAppendEffect(item.
|
|
245
|
+
return isFastAppendEffect(item.providerEffect.value);
|
|
248
246
|
}
|
|
249
|
-
/** Classifies one converted
|
|
247
|
+
/** Classifies one converted provider effect as an append-only fast candidate. */
|
|
250
248
|
export function isFastAppendEffect(effect) {
|
|
251
249
|
const emptyVisibleBaseline = effect.payload.createIfMissing &&
|
|
252
250
|
effect.expectedVisibleRevision === NON_NEGATIVE_SAFE_INTEGER_MINIMUM &&
|
|
@@ -254,9 +252,9 @@ export function isFastAppendEffect(effect) {
|
|
|
254
252
|
if (!emptyVisibleBaseline)
|
|
255
253
|
return false;
|
|
256
254
|
return (effect.effectKind === SYNC_EFFECT_KINDS.SYSTEM_PROJECTION &&
|
|
257
|
-
effect.projection ===
|
|
255
|
+
effect.projection === SYNC_PROJECTIONS.SYSTEM_STATE &&
|
|
258
256
|
effect.targetKind === EFFECT_TARGET_KINDS.ENTITY) || (effect.effectKind === SYNC_EFFECT_KINDS.RESOLUTION_PROJECTION &&
|
|
259
|
-
effect.projection ===
|
|
257
|
+
effect.projection === SYNC_PROJECTIONS.SYNC_CONFLICTS &&
|
|
260
258
|
effect.targetKind === EFFECT_TARGET_KINDS.CONFLICT);
|
|
261
259
|
}
|
|
262
260
|
/**
|
|
@@ -270,16 +268,16 @@ export function isFastAppendPendingEffect(pending) {
|
|
|
270
268
|
return false;
|
|
271
269
|
}
|
|
272
270
|
try {
|
|
273
|
-
return isFastAppendEffect(
|
|
271
|
+
return isFastAppendEffect(toProviderEffect(pending));
|
|
274
272
|
}
|
|
275
273
|
catch {
|
|
276
274
|
return false;
|
|
277
275
|
}
|
|
278
276
|
}
|
|
279
277
|
export function isSyncProjection(value) {
|
|
280
|
-
return value ===
|
|
281
|
-
value ===
|
|
282
|
-
value ===
|
|
278
|
+
return value === SYNC_PROJECTIONS.USER_INPUT ||
|
|
279
|
+
value === SYNC_PROJECTIONS.SYSTEM_STATE ||
|
|
280
|
+
value === SYNC_PROJECTIONS.SYNC_CONFLICTS;
|
|
283
281
|
}
|
|
284
282
|
export function isEffectTargetKind(value) {
|
|
285
283
|
return value === EFFECT_TARGET_KINDS.ENTITY ||
|