hikoutei 0.3.4 → 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 +49 -33
- 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 +156 -0
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +1112 -0
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +87 -0
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js +97 -0
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts +53 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js +61 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +16 -0
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/index.js +13 -0
- package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.d.ts +83 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js +413 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/batchBuilder.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts +86 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js +439 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/observation.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts +115 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js +522 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/planner.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts +17 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js +99 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/postcondition.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts +242 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js +707 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/preflight.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.d.ts +16 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.js +29 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/sheetIdAllocator.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts +26 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js +57 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/tableRead.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts +102 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js +375 -0
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +168 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +247 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +47 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js +60 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -0
- 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 +17 -1
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +27 -1
- 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.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +26 -6
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +24 -9
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js +128 -81
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +31 -14
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +32 -15
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +13 -9
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +53 -37
- 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 +29 -19
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +59 -41
- 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 +29 -19
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +103 -78
- 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} +23 -22
- 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/index.d.ts +1 -1
- package/dist/infrastructure/storage/index.d.ts.map +1 -1
- package/dist/infrastructure/storage/index.js +1 -1
- package/dist/infrastructure/storage/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 +13 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +23 -2
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +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 +11 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +44 -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 +52 -23
- package/docs/ci.md +31 -23
- package/docs/code-guidelines.md +10 -18
- package/docs/development.md +37 -11
- package/docs/gateway-removal-inventory.md +147 -0
- package/docs/quick-start.md +36 -26
- package/docs/sync-bulk-write-benchmark.md +561 -0
- package/docs/sync-observability.md +38 -45
- package/docs/write-and-synchronization-flow.md +56 -39
- package/package.json +5 -4
- package/apps-script/gateway/Code.gs +0 -447
- 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 -24
- 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 -13
- 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 -31
- 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 -567
- 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 -73
- 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 -363
- 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/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 -133
- 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
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Value normalization between Sheets API cells and the canonical contracts.
|
|
3
|
+
*
|
|
4
|
+
* These helpers mirror the Apps Script operations' value semantics exactly:
|
|
5
|
+
* whole-column registered ranges, the Excel 1900-system date serial
|
|
6
|
+
* (days since 1899-12-30 UTC), the canonical UTC number format, NFC-normalized
|
|
7
|
+
* strings, and the identity-from-cell rule used by the append/replay paths.
|
|
8
|
+
*/
|
|
9
|
+
import { GOOGLE_SHEETS_API_DATE_NUMBER_FORMAT, } from "../constants.js";
|
|
10
|
+
import { invalidProviderState } from "../errors.js";
|
|
11
|
+
const WHOLE_COLUMN_RANGE_PATTERN = /^[A-Z]+:[A-Z]+$/;
|
|
12
|
+
/** Parses `A:C`-style whole-column ranges like the Apps Script operations. */
|
|
13
|
+
export function parseRegisteredRange(value) {
|
|
14
|
+
if (!WHOLE_COLUMN_RANGE_PATTERN.test(value)) {
|
|
15
|
+
invalidProviderState("registeredRange must be an uppercase whole-column range");
|
|
16
|
+
}
|
|
17
|
+
const separator = value.indexOf(":");
|
|
18
|
+
const start = value.slice(0, separator);
|
|
19
|
+
const end = value.slice(separator + 1);
|
|
20
|
+
const startColumn = columnNumber(start);
|
|
21
|
+
const endColumn = columnNumber(end);
|
|
22
|
+
if (endColumn < startColumn) {
|
|
23
|
+
invalidProviderState("registeredRange end precedes start");
|
|
24
|
+
}
|
|
25
|
+
return { startColumn, columnCount: endColumn - startColumn + 1 };
|
|
26
|
+
}
|
|
27
|
+
/** Converts A1 column letters to a 1-based column number. */
|
|
28
|
+
export function columnNumber(letters) {
|
|
29
|
+
let result = 0;
|
|
30
|
+
for (const letter of letters) {
|
|
31
|
+
result = result * 26 + letter.charCodeAt(0) - 64;
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
/** Converts a 1-based column number to A1 column letters (1 -> "A", 28 -> "AB"). */
|
|
36
|
+
export function columnLetters(column) {
|
|
37
|
+
let letters = "";
|
|
38
|
+
let value = column;
|
|
39
|
+
while (value > 0) {
|
|
40
|
+
const remainder = (value - 1) % 26;
|
|
41
|
+
letters = String.fromCharCode(65 + remainder) + letters;
|
|
42
|
+
value = Math.floor((value - 1) / 26);
|
|
43
|
+
}
|
|
44
|
+
return letters;
|
|
45
|
+
}
|
|
46
|
+
/** Quotes a sheet tab name for A1 notation, doubling embedded single quotes. */
|
|
47
|
+
export function quoteA1SheetName(sheetName) {
|
|
48
|
+
return `'${sheetName.replace(/'/g, "''")}'`;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Excel/Sheets 1900-system serial: whole days since 1899-12-30 UTC. Canonical
|
|
52
|
+
* dates are always after the 1900-02-29 phantom day, so the serial is exactly
|
|
53
|
+
* the UTC day offset (the same formula the Apps Script batch append uses).
|
|
54
|
+
*/
|
|
55
|
+
export function dateSerialFromIso(iso) {
|
|
56
|
+
return (Date.parse(iso) - Date.UTC(1899, 11, 30)) / 86_400_000;
|
|
57
|
+
}
|
|
58
|
+
/** Converts a date serial back to the canonical UTC ISO timestamp. */
|
|
59
|
+
export function isoFromDateSerial(serial) {
|
|
60
|
+
return new Date(Date.UTC(1899, 11, 30) + serial * 86_400_000).toISOString();
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Returns whether a cell number format is the canonical date format.
|
|
64
|
+
*
|
|
65
|
+
* The REST API returns `CellFormat.numberFormat` as a `{ type, pattern }`
|
|
66
|
+
* object, never a bare string. The canonical check requires the DATE_TIME
|
|
67
|
+
* type and a pattern that matches after stripping embedded quotes and
|
|
68
|
+
* whitespace, so both the quoted pattern the provider writes and any
|
|
69
|
+
* unquoted equivalent are recognized. Null or absent formats are tolerated
|
|
70
|
+
* and are not dates.
|
|
71
|
+
*/
|
|
72
|
+
export function isCanonicalDateNumberFormat(format) {
|
|
73
|
+
if (format === null || format === undefined)
|
|
74
|
+
return false;
|
|
75
|
+
if (typeof format !== "object" || Array.isArray(format))
|
|
76
|
+
return false;
|
|
77
|
+
const record = format;
|
|
78
|
+
if (record.type !== "DATE_TIME")
|
|
79
|
+
return false;
|
|
80
|
+
const pattern = record.pattern;
|
|
81
|
+
if (typeof pattern !== "string")
|
|
82
|
+
return false;
|
|
83
|
+
return normalizeDateNumberFormatPattern(pattern) ===
|
|
84
|
+
normalizeDateNumberFormatPattern(GOOGLE_SHEETS_API_DATE_NUMBER_FORMAT);
|
|
85
|
+
}
|
|
86
|
+
function normalizeDateNumberFormatPattern(pattern) {
|
|
87
|
+
return pattern.replace(/["\s]/g, "");
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Converts one API cell value to a canonical normalized cell.
|
|
91
|
+
*
|
|
92
|
+
* A number whose cell format is the canonical date format becomes a date;
|
|
93
|
+
* everything else keeps its raw kind. Formula and error cells fail closed
|
|
94
|
+
* (the outbound provider never writes them and must not hash them as
|
|
95
|
+
* literals). Blank cells (missing or empty value objects) become `null`.
|
|
96
|
+
*/
|
|
97
|
+
export function normalizedCellFromApiValue(value, numberFormat) {
|
|
98
|
+
if (value === null || value === undefined)
|
|
99
|
+
return null;
|
|
100
|
+
if (typeof value !== "object") {
|
|
101
|
+
invalidProviderState("Sheet cell value is not an object");
|
|
102
|
+
}
|
|
103
|
+
const record = value;
|
|
104
|
+
if (record.formulaValue !== undefined || record.errorValue !== undefined) {
|
|
105
|
+
invalidProviderState("Sheet cell contains a formula or error value");
|
|
106
|
+
}
|
|
107
|
+
if (record.stringValue !== undefined) {
|
|
108
|
+
if (typeof record.stringValue !== "string") {
|
|
109
|
+
invalidProviderState("Sheet cell stringValue is not a string");
|
|
110
|
+
}
|
|
111
|
+
return { kind: "string", value: record.stringValue.normalize("NFC") };
|
|
112
|
+
}
|
|
113
|
+
if (record.boolValue !== undefined) {
|
|
114
|
+
if (typeof record.boolValue !== "boolean") {
|
|
115
|
+
invalidProviderState("Sheet cell boolValue is not a boolean");
|
|
116
|
+
}
|
|
117
|
+
return { kind: "boolean", value: record.boolValue };
|
|
118
|
+
}
|
|
119
|
+
if (record.numberValue !== undefined) {
|
|
120
|
+
if (typeof record.numberValue !== "number" || !Number.isFinite(record.numberValue)) {
|
|
121
|
+
invalidProviderState("Sheet cell numberValue is not a finite number");
|
|
122
|
+
}
|
|
123
|
+
if (isCanonicalDateNumberFormat(numberFormat)) {
|
|
124
|
+
return { kind: "date", value: isoFromDateSerial(record.numberValue) };
|
|
125
|
+
}
|
|
126
|
+
return { kind: "number", value: record.numberValue };
|
|
127
|
+
}
|
|
128
|
+
// An empty value object (or an unknown value shape) is treated as blank;
|
|
129
|
+
// the API omits empty cells, so a missing value is the common blank form.
|
|
130
|
+
if (Object.keys(record).length === 0)
|
|
131
|
+
return null;
|
|
132
|
+
invalidProviderState("Sheet cell cannot be normalized");
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Normalizes a literal API cell for observation reads.
|
|
136
|
+
*
|
|
137
|
+
* Matches the Apps Script observation literal branch: explicit empty strings
|
|
138
|
+
* and empty value objects become `null` (blank). Returns `undefined` for
|
|
139
|
+
* shapes that are not a valid literal (formula/error/unknown) so the caller
|
|
140
|
+
* can emit an `unsupported_cell_value` error cell instead of failing the
|
|
141
|
+
* whole snapshot; type-invalid fields still fail closed.
|
|
142
|
+
*/
|
|
143
|
+
export function observationLiteralFromApiValue(value, numberFormat) {
|
|
144
|
+
if (value === null || value === undefined)
|
|
145
|
+
return null;
|
|
146
|
+
if (typeof value !== "object")
|
|
147
|
+
return undefined;
|
|
148
|
+
const record = value;
|
|
149
|
+
if (record.stringValue !== undefined) {
|
|
150
|
+
if (typeof record.stringValue !== "string") {
|
|
151
|
+
invalidProviderState("Sheet cell stringValue is not a string");
|
|
152
|
+
}
|
|
153
|
+
return record.stringValue.length === 0
|
|
154
|
+
? null
|
|
155
|
+
: { kind: "string", value: record.stringValue.normalize("NFC") };
|
|
156
|
+
}
|
|
157
|
+
if (record.boolValue !== undefined) {
|
|
158
|
+
if (typeof record.boolValue !== "boolean") {
|
|
159
|
+
invalidProviderState("Sheet cell boolValue is not a boolean");
|
|
160
|
+
}
|
|
161
|
+
return { kind: "boolean", value: record.boolValue };
|
|
162
|
+
}
|
|
163
|
+
if (record.numberValue !== undefined) {
|
|
164
|
+
if (typeof record.numberValue !== "number" || !Number.isFinite(record.numberValue)) {
|
|
165
|
+
invalidProviderState("Sheet cell numberValue is not a finite number");
|
|
166
|
+
}
|
|
167
|
+
if (isCanonicalDateNumberFormat(numberFormat)) {
|
|
168
|
+
return { kind: "date", value: isoFromDateSerial(record.numberValue) };
|
|
169
|
+
}
|
|
170
|
+
return { kind: "number", value: record.numberValue };
|
|
171
|
+
}
|
|
172
|
+
if (Object.keys(record).length === 0)
|
|
173
|
+
return null;
|
|
174
|
+
// Formula, error, and unknown value shapes are handled by the caller.
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* getValues-equivalent normalization for one REST cell.
|
|
179
|
+
*
|
|
180
|
+
* Formula cells resolve to their computed effective value, error cells to
|
|
181
|
+
* their formatted error string (the Apps Script fast-path limitation: a
|
|
182
|
+
* "#REF!" error cell becomes a literal string), and literal cells to their
|
|
183
|
+
* user-entered value. Blank cells — including explicit empty strings —
|
|
184
|
+
* become `null`; unsupported shapes fail closed exactly like the Apps
|
|
185
|
+
* Script table read throws.
|
|
186
|
+
*/
|
|
187
|
+
export function computedValueFromApiCell(value, numberFormat) {
|
|
188
|
+
if (value === null || value === undefined)
|
|
189
|
+
return null;
|
|
190
|
+
if (typeof value !== "object") {
|
|
191
|
+
invalidProviderState("Sheet cell value is not an object");
|
|
192
|
+
}
|
|
193
|
+
const record = value;
|
|
194
|
+
const entered = record.userEnteredValue;
|
|
195
|
+
const enteredRecord = recordLike(entered);
|
|
196
|
+
if (enteredRecord !== undefined && enteredRecord.formulaValue !== undefined) {
|
|
197
|
+
if (typeof enteredRecord.formulaValue !== "string") {
|
|
198
|
+
invalidProviderState("Sheet cell formulaValue is not a string");
|
|
199
|
+
}
|
|
200
|
+
const effective = record.effectiveValue;
|
|
201
|
+
const effectiveRecord = recordLike(effective);
|
|
202
|
+
if (effectiveRecord === undefined) {
|
|
203
|
+
invalidProviderState("Sheet formula cell has no effective value");
|
|
204
|
+
}
|
|
205
|
+
if (effectiveRecord.errorValue !== undefined) {
|
|
206
|
+
return {
|
|
207
|
+
kind: "string",
|
|
208
|
+
value: errorDisplayString(record, effectiveRecord),
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (effectiveRecord.stringValue !== undefined) {
|
|
212
|
+
if (typeof effectiveRecord.stringValue !== "string") {
|
|
213
|
+
invalidProviderState("Sheet cell effective stringValue is not a string");
|
|
214
|
+
}
|
|
215
|
+
return { kind: "string", value: effectiveRecord.stringValue.normalize("NFC") };
|
|
216
|
+
}
|
|
217
|
+
if (effectiveRecord.boolValue !== undefined) {
|
|
218
|
+
if (typeof effectiveRecord.boolValue !== "boolean") {
|
|
219
|
+
invalidProviderState("Sheet cell effective boolValue is not a boolean");
|
|
220
|
+
}
|
|
221
|
+
return { kind: "boolean", value: effectiveRecord.boolValue };
|
|
222
|
+
}
|
|
223
|
+
if (effectiveRecord.numberValue !== undefined) {
|
|
224
|
+
if (typeof effectiveRecord.numberValue !== "number" ||
|
|
225
|
+
!Number.isFinite(effectiveRecord.numberValue)) {
|
|
226
|
+
invalidProviderState("Sheet cell effective numberValue is not a finite number");
|
|
227
|
+
}
|
|
228
|
+
if (isCanonicalDateNumberFormat(numberFormat)) {
|
|
229
|
+
return { kind: "date", value: isoFromDateSerial(effectiveRecord.numberValue) };
|
|
230
|
+
}
|
|
231
|
+
return { kind: "number", value: effectiveRecord.numberValue };
|
|
232
|
+
}
|
|
233
|
+
invalidProviderState("Sheet formula cell effective value is unsupported");
|
|
234
|
+
}
|
|
235
|
+
if (enteredRecord !== undefined && enteredRecord.errorValue !== undefined) {
|
|
236
|
+
return { kind: "string", value: errorDisplayString(record, enteredRecord) };
|
|
237
|
+
}
|
|
238
|
+
const literal = observationLiteralFromApiValue(entered, numberFormat);
|
|
239
|
+
if (literal === undefined) {
|
|
240
|
+
invalidProviderState("Sheet cell value is unsupported");
|
|
241
|
+
}
|
|
242
|
+
return literal;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Blank-row rule shared by the values-only read and observation paths.
|
|
246
|
+
*
|
|
247
|
+
* A cell is blank when it has no value at all; checkbox columns additionally
|
|
248
|
+
* treat an unchecked (boolValue false) cell as blank, mirroring the Apps
|
|
249
|
+
* Script `isBlankRow_` rule. Formula cells are blank only when their computed
|
|
250
|
+
* value is an empty string (getValues semantics).
|
|
251
|
+
*/
|
|
252
|
+
export function isComputedBlankCell(value, checkboxColumn) {
|
|
253
|
+
if (value === null || value === undefined)
|
|
254
|
+
return true;
|
|
255
|
+
if (typeof value !== "object")
|
|
256
|
+
return false;
|
|
257
|
+
const record = value;
|
|
258
|
+
if (Object.keys(record).length === 0)
|
|
259
|
+
return true;
|
|
260
|
+
const entered = record.userEnteredValue;
|
|
261
|
+
const enteredRecord = recordLike(entered);
|
|
262
|
+
if (enteredRecord === undefined) {
|
|
263
|
+
// Formatting-only or effective-only cells carry no user value.
|
|
264
|
+
return true;
|
|
265
|
+
}
|
|
266
|
+
if (enteredRecord.formulaValue !== undefined) {
|
|
267
|
+
const effective = record.effectiveValue;
|
|
268
|
+
const effectiveRecord = recordLike(effective);
|
|
269
|
+
if (effectiveRecord === undefined)
|
|
270
|
+
return false;
|
|
271
|
+
if (effectiveRecord.stringValue !== undefined) {
|
|
272
|
+
if (typeof effectiveRecord.stringValue !== "string") {
|
|
273
|
+
invalidProviderState("Sheet cell effective stringValue is not a string");
|
|
274
|
+
}
|
|
275
|
+
return effectiveRecord.stringValue.length === 0;
|
|
276
|
+
}
|
|
277
|
+
if (effectiveRecord.boolValue !== undefined) {
|
|
278
|
+
if (typeof effectiveRecord.boolValue !== "boolean") {
|
|
279
|
+
invalidProviderState("Sheet cell effective boolValue is not a boolean");
|
|
280
|
+
}
|
|
281
|
+
return checkboxColumn && effectiveRecord.boolValue === false;
|
|
282
|
+
}
|
|
283
|
+
return false;
|
|
284
|
+
}
|
|
285
|
+
if (enteredRecord.errorValue !== undefined)
|
|
286
|
+
return false;
|
|
287
|
+
if (enteredRecord.stringValue !== undefined) {
|
|
288
|
+
if (typeof enteredRecord.stringValue !== "string") {
|
|
289
|
+
invalidProviderState("Sheet cell stringValue is not a string");
|
|
290
|
+
}
|
|
291
|
+
return enteredRecord.stringValue.length === 0;
|
|
292
|
+
}
|
|
293
|
+
if (enteredRecord.numberValue !== undefined) {
|
|
294
|
+
if (typeof enteredRecord.numberValue !== "number" ||
|
|
295
|
+
!Number.isFinite(enteredRecord.numberValue)) {
|
|
296
|
+
invalidProviderState("Sheet cell numberValue is not a finite number");
|
|
297
|
+
}
|
|
298
|
+
return false;
|
|
299
|
+
}
|
|
300
|
+
if (enteredRecord.boolValue !== undefined) {
|
|
301
|
+
if (typeof enteredRecord.boolValue !== "boolean") {
|
|
302
|
+
invalidProviderState("Sheet cell boolValue is not a boolean");
|
|
303
|
+
}
|
|
304
|
+
return checkboxColumn && enteredRecord.boolValue === false;
|
|
305
|
+
}
|
|
306
|
+
return Object.keys(enteredRecord).length === 0;
|
|
307
|
+
}
|
|
308
|
+
/** Returns `value` as a record when it is a plain object. */
|
|
309
|
+
function recordLike(value) {
|
|
310
|
+
if (value === null || typeof value !== "object" || Array.isArray(value)) {
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
313
|
+
return value;
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Resolves the display string of an error cell: the formatted value when
|
|
317
|
+
* present ("#DIV/0!"), the error message otherwise, failing closed when an
|
|
318
|
+
* error cell carries no display evidence at all.
|
|
319
|
+
*/
|
|
320
|
+
function errorDisplayString(cell, errorOwner) {
|
|
321
|
+
const formatted = cell.formattedValue;
|
|
322
|
+
if (typeof formatted === "string" && formatted.length > 0)
|
|
323
|
+
return formatted;
|
|
324
|
+
const error = errorOwner.errorValue;
|
|
325
|
+
const errorRecord = recordLike(error);
|
|
326
|
+
const message = errorRecord?.message;
|
|
327
|
+
if (typeof message === "string" && message.length > 0)
|
|
328
|
+
return message;
|
|
329
|
+
invalidProviderState("Sheet error cell has no display string");
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Converts a canonical normalized cell to the API userEnteredValue shape.
|
|
333
|
+
*
|
|
334
|
+
* Dates become their Excel serial number; the canonical number format is
|
|
335
|
+
* applied separately by the batch builder so it can keep the format field
|
|
336
|
+
* mask isolated from the value write.
|
|
337
|
+
*/
|
|
338
|
+
export function toApiUserEnteredValue(cell) {
|
|
339
|
+
if (cell === null)
|
|
340
|
+
return { userEnteredValue: {} };
|
|
341
|
+
switch (cell.kind) {
|
|
342
|
+
case "string":
|
|
343
|
+
return { userEnteredValue: { stringValue: cell.value } };
|
|
344
|
+
case "number":
|
|
345
|
+
return { userEnteredValue: { numberValue: cell.value } };
|
|
346
|
+
case "boolean":
|
|
347
|
+
return { userEnteredValue: { boolValue: cell.value } };
|
|
348
|
+
case "date":
|
|
349
|
+
return { userEnteredValue: { numberValue: dateSerialFromIso(cell.value) } };
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Derives the visible business identity from a normalized cell, exactly like
|
|
354
|
+
* the Apps Script `identityFromCell_`: non-empty strings and finite numbers.
|
|
355
|
+
*/
|
|
356
|
+
export function identityFromNormalizedCell(cell) {
|
|
357
|
+
if (cell === null)
|
|
358
|
+
return null;
|
|
359
|
+
if (typeof cell.value === "string")
|
|
360
|
+
return cell.value.length === 0 ? null : cell.value;
|
|
361
|
+
if (typeof cell.value === "number" && Number.isFinite(cell.value)) {
|
|
362
|
+
return String(cell.value);
|
|
363
|
+
}
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
/** Returns whether an API cell is blank (missing value or empty object). */
|
|
367
|
+
export function isBlankApiCell(value) {
|
|
368
|
+
if (value === null || value === undefined)
|
|
369
|
+
return true;
|
|
370
|
+
if (typeof value !== "object")
|
|
371
|
+
return false;
|
|
372
|
+
const record = value;
|
|
373
|
+
return Object.keys(record).length === 0 || record.userEnteredValue === undefined;
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=valueNormalization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valueNormalization.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/model/valueNormalization.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrow transport contract for the direct Google Sheets API provider.
|
|
3
|
+
*
|
|
4
|
+
* All Google SDK types stay behind this module: the rest of the provider
|
|
5
|
+
* works with a small discriminated union of write requests and treats every
|
|
6
|
+
* response as an untrusted `unknown` value that the preflight/reply modules
|
|
7
|
+
* validate with runtime guards. Tests implement the same interface with an
|
|
8
|
+
* in-memory spreadsheet model, so the planner and batch builder are exercised
|
|
9
|
+
* without credentials or network access.
|
|
10
|
+
*/
|
|
11
|
+
import { sheets, type sheets_v4 } from "@googleapis/sheets";
|
|
12
|
+
import { GoogleSheetsApiTransportError } from "../errors.js";
|
|
13
|
+
/** REST `CellFormat.numberFormat` object written by the provider. */
|
|
14
|
+
export interface GoogleSheetsApiNumberFormat {
|
|
15
|
+
readonly type: "DATE_TIME";
|
|
16
|
+
readonly pattern: string;
|
|
17
|
+
}
|
|
18
|
+
/** One cell value/format pair written through an updateCells request. */
|
|
19
|
+
export interface GoogleSheetsApiCell {
|
|
20
|
+
readonly userEnteredValue?: {
|
|
21
|
+
readonly stringValue?: string;
|
|
22
|
+
readonly numberValue?: number;
|
|
23
|
+
readonly boolValue?: boolean;
|
|
24
|
+
};
|
|
25
|
+
readonly userEnteredFormat?: {
|
|
26
|
+
readonly numberFormat?: GoogleSheetsApiNumberFormat;
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Row of an updateCells request; index `j` addresses the column
|
|
31
|
+
* `startColumnIndex + j`. A `null` entry is never produced by the provider
|
|
32
|
+
* (an included cell is always written), but the type keeps the boundary
|
|
33
|
+
* explicit for test fixtures.
|
|
34
|
+
*/
|
|
35
|
+
export type GoogleSheetsApiCellRow = readonly (GoogleSheetsApiCell | null)[];
|
|
36
|
+
/** Write requests the direct provider emits; the SDK mapping is contained here. */
|
|
37
|
+
export type GoogleSheetsApiWriteRequest = {
|
|
38
|
+
readonly kind: "addSheet";
|
|
39
|
+
readonly title: string;
|
|
40
|
+
readonly sheetId: number;
|
|
41
|
+
} | {
|
|
42
|
+
readonly kind: "updateSheetProperties";
|
|
43
|
+
readonly sheetId: number;
|
|
44
|
+
readonly hidden: boolean;
|
|
45
|
+
} | {
|
|
46
|
+
readonly kind: "updateCells";
|
|
47
|
+
readonly sheetId: number;
|
|
48
|
+
readonly startRowIndex: number;
|
|
49
|
+
readonly startColumnIndex: number;
|
|
50
|
+
readonly rows: readonly GoogleSheetsApiCellRow[];
|
|
51
|
+
/** Field mask such as "userEnteredValue" or "userEnteredFormat.numberFormat". */
|
|
52
|
+
readonly fields: string;
|
|
53
|
+
} | {
|
|
54
|
+
readonly kind: "insertDimension";
|
|
55
|
+
readonly sheetId: number;
|
|
56
|
+
readonly dimension: "ROWS";
|
|
57
|
+
readonly startIndex: number;
|
|
58
|
+
/** Exclusive end index; `endIndex - startIndex` rows are inserted. */
|
|
59
|
+
readonly endIndex: number;
|
|
60
|
+
readonly inheritFromBefore: boolean;
|
|
61
|
+
} | {
|
|
62
|
+
readonly kind: "deleteDimension";
|
|
63
|
+
readonly sheetId: number;
|
|
64
|
+
readonly dimension: "ROWS";
|
|
65
|
+
readonly startIndex: number;
|
|
66
|
+
/** Exclusive end index; exactly one row is deleted by the provider. */
|
|
67
|
+
readonly endIndex: number;
|
|
68
|
+
} | {
|
|
69
|
+
readonly kind: "setDataValidation";
|
|
70
|
+
readonly sheetId: number;
|
|
71
|
+
readonly startRowIndex: number;
|
|
72
|
+
readonly endRowIndex: number;
|
|
73
|
+
readonly startColumnIndex: number;
|
|
74
|
+
readonly endColumnIndex: number;
|
|
75
|
+
readonly strict: boolean;
|
|
76
|
+
} | {
|
|
77
|
+
readonly kind: "createDeveloperMetadata";
|
|
78
|
+
readonly sheetId: number;
|
|
79
|
+
/** 0-based row index for the metadata location. */
|
|
80
|
+
readonly rowIndex: number;
|
|
81
|
+
readonly key: string;
|
|
82
|
+
readonly value: string;
|
|
83
|
+
} | {
|
|
84
|
+
/**
|
|
85
|
+
* Harness/cleanup-only request kind: the provider itself never emits
|
|
86
|
+
* deleteSheet. Live scenario cleanup uses it to remove fixture tabs;
|
|
87
|
+
* keeping the SDK mapping and the stub behavior inside the transport
|
|
88
|
+
* boundary lets that cleanup reuse the provider's narrow contract.
|
|
89
|
+
*/
|
|
90
|
+
readonly kind: "deleteSheet";
|
|
91
|
+
readonly sheetId: number;
|
|
92
|
+
};
|
|
93
|
+
/** Request shape of one `spreadsheets.get` call. */
|
|
94
|
+
export interface GoogleSheetsApiGetSpreadsheetRequest {
|
|
95
|
+
readonly spreadsheetId: string;
|
|
96
|
+
readonly ranges: readonly string[];
|
|
97
|
+
readonly fields: string;
|
|
98
|
+
/**
|
|
99
|
+
* Per-call timeout override. The provider gives READS a shorter internal
|
|
100
|
+
* timeout than writes; omitted falls back to the transport's configured
|
|
101
|
+
* timeout.
|
|
102
|
+
*/
|
|
103
|
+
readonly timeoutMs?: number;
|
|
104
|
+
}
|
|
105
|
+
/** Request shape of one `spreadsheets.batchUpdate` call. */
|
|
106
|
+
export interface GoogleSheetsApiBatchUpdateRequest {
|
|
107
|
+
readonly spreadsheetId: string;
|
|
108
|
+
readonly requests: readonly GoogleSheetsApiWriteRequest[];
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Internal transport boundary; every method returns the raw (untrusted)
|
|
112
|
+
* response body. The provider never forwards SDK objects beyond this module.
|
|
113
|
+
*/
|
|
114
|
+
export interface GoogleSheetsApiTransport {
|
|
115
|
+
getSpreadsheet(request: GoogleSheetsApiGetSpreadsheetRequest): Promise<unknown>;
|
|
116
|
+
batchUpdate(request: GoogleSheetsApiBatchUpdateRequest): Promise<unknown>;
|
|
117
|
+
}
|
|
118
|
+
/** Auth type accepted by the sheets factory (may resolve to a nested version). */
|
|
119
|
+
type SheetsAuth = NonNullable<Parameters<typeof sheets>[0]["auth"]>;
|
|
120
|
+
/** Options for the real HTTP transport backed by @googleapis/sheets. */
|
|
121
|
+
export interface GoogleSheetsApiHttpTransportOptions {
|
|
122
|
+
/**
|
|
123
|
+
* Injected auth for tests/alternate credentials. Defaults to Application
|
|
124
|
+
* Default Credentials (`GOOGLE_APPLICATION_CREDENTIALS` service account).
|
|
125
|
+
*/
|
|
126
|
+
readonly auth?: SheetsAuth;
|
|
127
|
+
readonly requestTimeoutMs: number;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Real transport over the Google Sheets REST API.
|
|
131
|
+
*
|
|
132
|
+
* gaxios auto-retry is disabled for every call: retries are the durable
|
|
133
|
+
* worker/recovery path's job, and a retried mutating request could replay an
|
|
134
|
+
* already committed batch. All errors are mapped to
|
|
135
|
+
* `GoogleSheetsApiTransportError` before leaving this module.
|
|
136
|
+
*/
|
|
137
|
+
export declare class GoogleSheetsApiHttpTransport implements GoogleSheetsApiTransport {
|
|
138
|
+
private readonly client;
|
|
139
|
+
private readonly requestTimeoutMs;
|
|
140
|
+
constructor(options: GoogleSheetsApiHttpTransportOptions);
|
|
141
|
+
getSpreadsheet(request: GoogleSheetsApiGetSpreadsheetRequest): Promise<unknown>;
|
|
142
|
+
batchUpdate(request: GoogleSheetsApiBatchUpdateRequest): Promise<unknown>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Maps a thrown SDK/gaxios/network error to the provider transport error.
|
|
146
|
+
*
|
|
147
|
+
* Exported separately so tests can exercise the mapping with shaped fixtures
|
|
148
|
+
* instead of real network failures. Any error without a proven HTTP status is
|
|
149
|
+
* classified conservatively as delivery-uncertain material (network/timeout),
|
|
150
|
+
* never as a proven pre-mutation rejection.
|
|
151
|
+
*/
|
|
152
|
+
export declare function classifyGoogleSheetsApiError(error: unknown): GoogleSheetsApiTransportError;
|
|
153
|
+
/**
|
|
154
|
+
* Builds the SDK batchUpdate body from provider write requests. The SDK
|
|
155
|
+
* request union is wider than the provider's narrow shapes; this boundary
|
|
156
|
+
* cast is the only place both types meet.
|
|
157
|
+
*/
|
|
158
|
+
export declare function toSdkBatchUpdateBody(requests: readonly GoogleSheetsApiWriteRequest[]): {
|
|
159
|
+
readonly requests: sheets_v4.Schema$Request[];
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Serializes the batchUpdate body exactly as the transport sends it, so the
|
|
163
|
+
* batch builder's byte budget measures the real wire bytes (SDK-wrapped
|
|
164
|
+
* request shapes, not the internal request union).
|
|
165
|
+
*/
|
|
166
|
+
export declare function serializeBatchUpdateRequests(requests: readonly GoogleSheetsApiWriteRequest[]): string;
|
|
167
|
+
export {};
|
|
168
|
+
//# sourceMappingURL=googleSheetsApiTransport.d.ts.map
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"googleSheetsApiTransport.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.ts"],"names":[],"mappings":"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"}
|