hikoutei 0.3.1 → 0.3.3
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.md +12 -2
- package/apps-script/gateway/Code.gs +41 -6
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts +2 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js +5 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmMappedObservation.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +52 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +195 -13
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts +24 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.d.ts.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js +124 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingFastPath.js.map +1 -0
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingInspection.js.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts +15 -2
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.d.ts.map +1 -1
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js +27 -3
- package/dist/adapter/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingPersistence.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/errors.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts +2 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/index.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts +3 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js +9 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js +139 -43
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/effect/effectOperationScript.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js +86 -57
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/observation/observationOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts +8 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js +122 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/shared/appsScriptStableCodecSource.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts +31 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.d.ts.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js +567 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/batchAppendOperation.js.map +1 -0
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts +12 -17
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js +27 -213
- package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js +15 -36
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts +2 -3
- package/dist/adapter/sheets/providers/apps-script-gateway/protocol/types.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js +81 -8
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.js.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts +1 -6
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js +15 -9
- package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.js.map +1 -1
- package/dist/application/orm/mapping/projection.js +1 -1
- package/dist/application/orm/mapping/projection.js.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.d.ts.map +1 -1
- package/dist/application/orm/persistence/flush/flushCoordinator.js +1 -0
- package/dist/application/orm/persistence/flush/flushCoordinator.js.map +1 -1
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js +1 -1
- package/dist/application/orm/persistence/lifecycle/entityLifecycle.js.map +1 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts +3 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.d.ts.map +1 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js +3 -1
- package/dist/application/sync/gateway/SyncGatewayBootstrap.js.map +1 -1
- package/dist/application/sync/gateway/conflictProjection.d.ts +13 -0
- package/dist/application/sync/gateway/conflictProjection.d.ts.map +1 -0
- package/dist/application/sync/gateway/conflictProjection.js +58 -0
- package/dist/application/sync/gateway/conflictProjection.js.map +1 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts +11 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.d.ts.map +1 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.js +70 -0
- package/dist/application/sync/gateway/conflictProjectionRegistration.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts +102 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js +221 -0
- package/dist/application/sync/gateway/coordinator/CoordinatedSyncGateway.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts +51 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.js +65 -0
- package/dist/application/sync/gateway/coordinator/asyncMutex.js.map +1 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts +31 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.d.ts.map +1 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js +13 -0
- package/dist/application/sync/gateway/coordinator/coordinatorTelemetry.js.map +1 -0
- package/dist/application/sync/gateway/syncGateway.d.ts +26 -6
- package/dist/application/sync/gateway/syncGateway.d.ts.map +1 -1
- package/dist/application/sync/gateway/syncGateway.js +10 -2
- package/dist/application/sync/gateway/syncGateway.js.map +1 -1
- package/dist/application/sync/gateway/transportClassification.d.ts +62 -0
- package/dist/application/sync/gateway/transportClassification.d.ts.map +1 -0
- package/dist/application/sync/gateway/transportClassification.js +133 -0
- package/dist/application/sync/gateway/transportClassification.js.map +1 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts +26 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.d.ts.map +1 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.js +335 -0
- package/dist/application/sync/inbound/autoSystemConflictResolution.js.map +1 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts +50 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.d.ts.map +1 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js +97 -0
- package/dist/application/sync/outbound/effects/AdaptiveEffectBatchController.js.map +1 -0
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts +4 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js +35 -1
- package/dist/application/sync/outbound/effects/SyncEffectSupervisor.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts +14 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorker.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js +190 -31
- package/dist/application/sync/outbound/effects/SyncEffectWorker.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts +25 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js +25 -2
- package/dist/application/sync/outbound/effects/SyncEffectWorkerConstants.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts +14 -7
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js +118 -14
- package/dist/application/sync/outbound/effects/SyncEffectWorkerDispatch.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts +30 -9
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js +102 -18
- package/dist/application/sync/outbound/effects/SyncEffectWorkerRouting.js.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.d.ts.map +1 -1
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js +49 -14
- package/dist/application/sync/outbound/effects/SyncEffectWorkerTransitions.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +97 -17
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts +17 -0
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +125 -10
- package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
- package/dist/application/sync/service/contracts.d.ts +2 -0
- package/dist/application/sync/service/contracts.d.ts.map +1 -1
- package/dist/application/sync/telemetry/syncTiming.d.ts +6 -0
- package/dist/application/sync/telemetry/syncTiming.d.ts.map +1 -1
- package/dist/application/sync/telemetry/syncTiming.js +2 -0
- package/dist/application/sync/telemetry/syncTiming.js.map +1 -1
- package/dist/domain/conflict/index.d.ts +1 -1
- package/dist/domain/conflict/index.d.ts.map +1 -1
- package/dist/domain/conflict/index.js +1 -1
- package/dist/domain/conflict/index.js.map +1 -1
- package/dist/domain/conflict/transitions.d.ts +3 -0
- package/dist/domain/conflict/transitions.d.ts.map +1 -1
- package/dist/domain/conflict/transitions.js +3 -2
- package/dist/domain/conflict/transitions.js.map +1 -1
- package/dist/domain/model/constants.d.ts +1 -0
- package/dist/domain/model/constants.d.ts.map +1 -1
- package/dist/domain/model/constants.js +1 -0
- package/dist/domain/model/constants.js.map +1 -1
- package/dist/infrastructure/storage/index.d.ts +4 -2
- package/dist/infrastructure/storage/index.d.ts.map +1 -1
- package/dist/infrastructure/storage/index.js +2 -1
- package/dist/infrastructure/storage/index.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.js +59 -1
- package/dist/infrastructure/storage/sqlite/migrateSchema.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/schema.d.ts +12 -1
- package/dist/infrastructure/storage/sqlite/schema.d.ts.map +1 -1
- package/dist/infrastructure/storage/sqlite/schema.js +47 -3
- package/dist/infrastructure/storage/sqlite/schema.js.map +1 -1
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts +2 -2
- package/dist/infrastructure/storage/sqlite/schemaTypes.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js +1 -1
- package/dist/infrastructure/storage/state/canonical/canonicalCommit.js.map +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts +1 -0
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js +1 -1
- package/dist/infrastructure/storage/state/mapped/mappedPersistenceSql.js.map +1 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.js +5 -1
- package/dist/infrastructure/storage/state/observation/observationAudit.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts +10 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js +106 -20
- package/dist/infrastructure/storage/state/resolution/resolutionWriter.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts +9 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js +3 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterContracts.js.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts +11 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js +35 -0
- package/dist/infrastructure/storage/state/resolution/resolutionWriterSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts +12 -4
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js +46 -15
- package/dist/infrastructure/storage/sync/outbound/effectOutbox.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts +24 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js +1 -0
- package/dist/infrastructure/storage/sync/outbound/effectOutboxContracts.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts +9 -7
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js +44 -8
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts +3 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.d.ts.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js +35 -2
- package/dist/infrastructure/storage/sync/outbound/effectOutboxSupport.js.map +1 -1
- package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js +1 -0
- package/dist/infrastructure/storage/sync/outbound/reconciliationSql.js.map +1 -1
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts +31 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.d.ts.map +1 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js +92 -0
- package/dist/infrastructure/storage/sync/shared/spreadsheetAuthority.js.map +1 -0
- package/dist/infrastructure/storage/sync/shared/writerLease.js +3 -1
- package/dist/infrastructure/storage/sync/shared/writerLease.js.map +1 -1
- package/dist/shared/encoding/constants.d.ts +1 -12
- package/dist/shared/encoding/constants.d.ts.map +1 -1
- package/dist/shared/encoding/constants.js +1 -10
- package/dist/shared/encoding/constants.js.map +1 -1
- package/dist/shared/encoding/stableEncode.d.ts +3 -30
- package/dist/shared/encoding/stableEncode.d.ts.map +1 -1
- package/dist/shared/encoding/stableEncode.js +12 -195
- package/dist/shared/encoding/stableEncode.js.map +1 -1
- package/dist/shared/encoding/types.d.ts +4 -9
- package/dist/shared/encoding/types.d.ts.map +1 -1
- package/docs/advanced-sheets-gateway-concurrency-problem.md +434 -0
- package/docs/architecture.md +53 -11
- package/docs/ci.md +27 -0
- package/docs/google-sheets-sync-scaling-strategy.md +459 -0
- package/docs/quick-start.md +15 -1
- package/docs/sync-bulk-write-benchmark.md +520 -0
- package/docs/sync-observability.md +39 -3
- package/docs/write-and-synchronization-flow.md +76 -17
- package/package.json +4 -1
package/dist/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.js
CHANGED
|
@@ -1,223 +1,37 @@
|
|
|
1
|
-
/**
|
|
2
|
-
import {
|
|
3
|
-
import { decodeOptionalSyncGatewayTiming } from "../../protocol/timing.js";
|
|
4
|
-
import { invalidOperationRequest, invalidOperationResponse, } from "../../errors.js";
|
|
1
|
+
/** Compatibility name for the idempotent built-in Apps Script append operation. */
|
|
2
|
+
import { stableHash } from "../../../../../../domain/index.js";
|
|
5
3
|
import { isNormalizedCell } from "../../../../../../shared/encoding/normalizedCell.js";
|
|
6
|
-
import {
|
|
4
|
+
import { invalidOperationRequest } from "../../errors.js";
|
|
5
|
+
import { createBatchAppendRowsOperation, } from "./batchAppendOperation.js";
|
|
7
6
|
/**
|
|
8
|
-
* Builds
|
|
7
|
+
* Builds the current idempotent built-in Apps Script append operation.
|
|
8
|
+
* The old name remains internal compatibility only; transport callers now use
|
|
9
|
+
* createBatchAppendRowsOperation directly.
|
|
9
10
|
*
|
|
10
|
-
* The
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* The registered identityField is required: the built-in append path never
|
|
12
|
+
* materializes anchor metadata, so replay locates the target row through the
|
|
13
|
+
* identity column and fails closed when it is missing.
|
|
13
14
|
*/
|
|
14
15
|
export function createFastAppendRowsOperation(request) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
var validationStartedAt = Date.now();
|
|
27
|
-
if (!args || typeof args.sheetName !== "string" || args.sheetName.length === 0) {
|
|
28
|
-
throw new Error("fast append sheetName is required");
|
|
29
|
-
}
|
|
30
|
-
if (typeof args.registeredRange !== "string" || !/^[A-Z]+:[A-Z]+$/.test(args.registeredRange)) {
|
|
31
|
-
throw new Error("fast append registeredRange must be an uppercase whole-column range");
|
|
32
|
-
}
|
|
33
|
-
if (!Array.isArray(args.headers) || args.headers.length === 0) {
|
|
34
|
-
throw new Error("fast append headers are required");
|
|
35
|
-
}
|
|
36
|
-
if (!Array.isArray(args.rows)) {
|
|
37
|
-
throw new Error("fast append rows must be an array");
|
|
38
|
-
}
|
|
39
|
-
var range = parseRange_(args.registeredRange);
|
|
40
|
-
if (range.columnCount !== args.headers.length) {
|
|
41
|
-
throw new Error("fast append headers do not match registeredRange");
|
|
42
|
-
}
|
|
43
|
-
phase_("validate_input", validationStartedAt);
|
|
44
|
-
|
|
45
|
-
var sheetLookupStartedAt = Date.now();
|
|
46
|
-
var sheet = spreadsheet.getSheetByName(args.sheetName);
|
|
47
|
-
if (sheet === null) throw new Error("fast append sheet was not found: " + args.sheetName);
|
|
48
|
-
phase_("sheet_lookup", sheetLookupStartedAt);
|
|
49
|
-
if (args.rows.length === 0) return result_([], false);
|
|
50
|
-
|
|
51
|
-
var encodeStartedAt = Date.now();
|
|
52
|
-
var values = args.rows.map(function (row) {
|
|
53
|
-
if (!row || typeof row.effectId !== "string" || row.effectId.length === 0) {
|
|
54
|
-
throw new Error("fast append effectId is required");
|
|
55
|
-
}
|
|
56
|
-
if (!row.fields || typeof row.fields !== "object") {
|
|
57
|
-
throw new Error("fast append fields are required");
|
|
58
|
-
}
|
|
59
|
-
var fieldNames = Object.keys(row.fields).sort();
|
|
60
|
-
var expectedFieldNames = args.headers.slice().sort();
|
|
61
|
-
if (fieldNames.length !== expectedFieldNames.length || fieldNames.some(function (field, index) {
|
|
62
|
-
return field !== expectedFieldNames[index];
|
|
63
|
-
})) {
|
|
64
|
-
throw new Error("fast append row fields do not match headers");
|
|
65
|
-
}
|
|
66
|
-
return args.headers.map(function (header) {
|
|
67
|
-
return toSheetValue_(row.fields[header]);
|
|
16
|
+
// Only the historical builder supplies this compatibility fallback. The
|
|
17
|
+
// worker transport uses createBatchAppendRowsOperation directly and always
|
|
18
|
+
// carries the durable outbox payload hash. Legacy direct callers still get
|
|
19
|
+
// a content-derived hash so changing fields cannot replay an effect ID as
|
|
20
|
+
// if it had the same payload.
|
|
21
|
+
return createBatchAppendRowsOperation({
|
|
22
|
+
...request,
|
|
23
|
+
rows: request.rows.map((row) => ({
|
|
24
|
+
...row,
|
|
25
|
+
payloadHash: row.payloadHash ?? legacyPayloadHash(row.fields),
|
|
26
|
+
})),
|
|
68
27
|
});
|
|
69
|
-
});
|
|
70
|
-
phase_("encode_values", encodeStartedAt);
|
|
71
|
-
|
|
72
|
-
var rangeStartedAt = Date.now();
|
|
73
|
-
var startRow = Math.max(sheet.getLastRow() + 1, 2);
|
|
74
|
-
phase_("append_range_lookup", rangeStartedAt);
|
|
75
|
-
var writeStartedAt = Date.now();
|
|
76
|
-
sheet.getRange(startRow, range.startColumn, values.length, range.columnCount).setValues(values);
|
|
77
|
-
phase_("set_values", writeStartedAt);
|
|
78
|
-
return result_(args.rows.map(function (row) {
|
|
79
|
-
return { effectId: row.effectId, status: "applied" };
|
|
80
|
-
}), false, startRow);
|
|
81
|
-
|
|
82
|
-
function result_(results, hasMore, startRowValue) {
|
|
83
|
-
var result = {
|
|
84
|
-
results: results,
|
|
85
|
-
hasMore: hasMore,
|
|
86
|
-
timing: {
|
|
87
|
-
operationKinds: ["append"],
|
|
88
|
-
operationCounts: { append: results.length, update: 0, delete: 0 },
|
|
89
|
-
durationMs: Date.now() - startedAt,
|
|
90
|
-
phases: phases,
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
if (startRowValue !== undefined) result.startRow = startRowValue;
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
function parseRange_(value) {
|
|
98
|
-
var parts = value.split(":");
|
|
99
|
-
var startColumn = columnNumber_(parts[0]);
|
|
100
|
-
var endColumn = columnNumber_(parts[1]);
|
|
101
|
-
if (endColumn < startColumn) throw new Error("fast append range end precedes start");
|
|
102
|
-
return { startColumn: startColumn, columnCount: endColumn - startColumn + 1 };
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
function columnNumber_(letters) {
|
|
106
|
-
var value = 0;
|
|
107
|
-
for (var index = 0; index < letters.length; index += 1) value = value * 26 + letters.charCodeAt(index) - 64;
|
|
108
|
-
return value;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
function isCanonicalDate_(value) {
|
|
112
|
-
if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/.test(value)) return false;
|
|
113
|
-
var parsed = new Date(value);
|
|
114
|
-
return !isNaN(parsed.getTime()) && parsed.toISOString() === value;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function phase_(name, phaseStartedAt) {
|
|
118
|
-
phases.push({ phase: name, durationMs: Date.now() - phaseStartedAt });
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function toSheetValue_(cell) {
|
|
122
|
-
if (cell === null || cell === undefined) return "";
|
|
123
|
-
if (typeof cell !== "object" || typeof cell.kind !== "string") {
|
|
124
|
-
throw new Error("fast append cell is invalid");
|
|
125
|
-
}
|
|
126
|
-
if (cell.kind === "string") {
|
|
127
|
-
if (typeof cell.value !== "string") throw new Error("fast append text cell is invalid");
|
|
128
|
-
return cell.value;
|
|
129
|
-
}
|
|
130
|
-
if (cell.kind === "date") {
|
|
131
|
-
if (!isCanonicalDate_(cell.value)) throw new Error("fast append date cell is invalid");
|
|
132
|
-
return new Date(cell.value);
|
|
133
|
-
}
|
|
134
|
-
if (cell.kind === "number") {
|
|
135
|
-
if (typeof cell.value !== "number" || !isFinite(cell.value)) {
|
|
136
|
-
throw new Error("fast append number cell is invalid");
|
|
137
|
-
}
|
|
138
|
-
return cell.value;
|
|
139
|
-
}
|
|
140
|
-
if (cell.kind === "boolean") {
|
|
141
|
-
if (typeof cell.value !== "boolean") throw new Error("fast append boolean cell is invalid");
|
|
142
|
-
return cell.value;
|
|
143
|
-
}
|
|
144
|
-
throw new Error("fast append cell kind is unsupported");
|
|
145
|
-
}
|
|
146
|
-
}`;
|
|
147
|
-
function validateFastAppendRequest(request) {
|
|
148
|
-
if (request.sheetName.trim().length === 0) {
|
|
149
|
-
invalidOperationRequest("fast append operation", "sheetName is required");
|
|
150
|
-
}
|
|
151
|
-
if (!/^[A-Z]+:[A-Z]+$/.test(request.registeredRange)) {
|
|
152
|
-
invalidOperationRequest("fast append operation", "registeredRange must be an uppercase whole-column range");
|
|
153
|
-
}
|
|
154
|
-
if (request.headers.length === 0 || request.headers.some((header) => header.trim().length === 0)) {
|
|
155
|
-
invalidOperationRequest("fast append operation", "headers must contain non-empty names");
|
|
156
|
-
}
|
|
157
|
-
if (new Set(request.headers).size !== request.headers.length) {
|
|
158
|
-
invalidOperationRequest("fast append operation", "headers must not contain duplicates");
|
|
159
|
-
}
|
|
160
|
-
const [start, end] = request.registeredRange.split(":");
|
|
161
|
-
if (columnNumber(end) < columnNumber(start) || columnNumber(end) - columnNumber(start) + 1 !== request.headers.length) {
|
|
162
|
-
invalidOperationRequest("fast append operation", "headers must match registeredRange");
|
|
163
|
-
}
|
|
164
|
-
const effectIds = new Set();
|
|
165
|
-
for (const row of request.rows) {
|
|
166
|
-
if (row.effectId.trim().length === 0) {
|
|
167
|
-
invalidOperationRequest("fast append operation", "every row needs an effectId");
|
|
168
|
-
}
|
|
169
|
-
if (effectIds.has(row.effectId)) {
|
|
170
|
-
invalidOperationRequest("fast append operation", "row effectIds must be unique");
|
|
171
|
-
}
|
|
172
|
-
effectIds.add(row.effectId);
|
|
173
|
-
const fieldNames = Object.keys(row.fields).sort();
|
|
174
|
-
const expectedFieldNames = [...request.headers].sort();
|
|
175
|
-
if (fieldNames.length !== expectedFieldNames.length || fieldNames.some((field, index) => field !== expectedFieldNames[index])) {
|
|
176
|
-
invalidOperationRequest("fast append operation", "every row must contain exactly the registered headers");
|
|
177
|
-
}
|
|
178
|
-
for (const cell of Object.values(row.fields)) {
|
|
179
|
-
if (!isNormalizedCell(cell)) {
|
|
180
|
-
invalidOperationRequest("fast append operation", "rows contain an unsupported normalized cell");
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
function columnNumber(value) {
|
|
186
|
-
if (value === undefined || value.length === 0)
|
|
187
|
-
return 0;
|
|
188
|
-
let result = 0;
|
|
189
|
-
for (const letter of value)
|
|
190
|
-
result = result * 26 + letter.charCodeAt(0) - 64;
|
|
191
|
-
return result;
|
|
192
|
-
}
|
|
193
|
-
function decodeFastAppendResult(value, expectedRows) {
|
|
194
|
-
if (!isRecord(value) ||
|
|
195
|
-
!Array.isArray(value.results) ||
|
|
196
|
-
value.results.length !== expectedRows.length ||
|
|
197
|
-
value.hasMore !== false) {
|
|
198
|
-
invalidOperationResponse("fast append operation", "result must contain results and hasMore=false");
|
|
199
|
-
}
|
|
200
|
-
const timing = decodeOptionalSyncGatewayTiming(value.timing, "fast append timing");
|
|
201
|
-
const results = value.results.map(decodeFastAppendRowResult);
|
|
202
|
-
const expectedEffectIds = new Set(expectedRows.map((row) => row.effectId));
|
|
203
|
-
const actualEffectIds = new Set(results.map((row) => row.effectId));
|
|
204
|
-
if (actualEffectIds.size !== results.length ||
|
|
205
|
-
actualEffectIds.size !== expectedEffectIds.size ||
|
|
206
|
-
results.some((row) => !expectedEffectIds.has(row.effectId))) {
|
|
207
|
-
return invalidOperationResponse("fast append operation", "result effectIds do not match the submitted rows");
|
|
208
|
-
}
|
|
209
|
-
const result = { results, hasMore: false };
|
|
210
|
-
return timing === undefined ? result : { ...result, timing };
|
|
211
28
|
}
|
|
212
|
-
function
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
29
|
+
function legacyPayloadHash(fields) {
|
|
30
|
+
for (const cell of Object.values(fields)) {
|
|
31
|
+
if (!isNormalizedCell(cell)) {
|
|
32
|
+
invalidOperationRequest("batch append operation", "rows contain an invalid normalized cell");
|
|
33
|
+
}
|
|
217
34
|
}
|
|
218
|
-
return {
|
|
219
|
-
effectId: value.effectId,
|
|
220
|
-
status: SYNC_GATEWAY_FAST_APPEND_STATUSES.APPLIED,
|
|
221
|
-
};
|
|
35
|
+
return stableHash({ fields });
|
|
222
36
|
}
|
|
223
37
|
//# sourceMappingURL=fastAppendOperation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fastAppendOperation.js","sourceRoot":"","sources":["../../../../../../../src/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"fastAppendOperation.js","sourceRoot":"","sources":["../../../../../../../src/adapter/sheets/providers/apps-script-gateway/operations/write/fastAppendOperation.ts"],"names":[],"mappings":"AAAA,mFAAmF;AAMnF,OAAO,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EACL,8BAA8B,GAE/B,MAAM,2BAA2B,CAAC;AAUnC;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAC3C,OAA6C;IAE7C,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,8BAA8B;IAC9B,OAAO,8BAA8B,CAAC;QACpC,GAAG,OAAO;QACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/B,GAAG,GAAG;YACN,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC;SAC9D,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAuD;IAChF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,uBAAuB,CAAC,wBAAwB,EAAE,yCAAyC,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncProtocol.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;
|
|
1
|
+
{"version":3,"file":"syncProtocol.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAiBhF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAEtE;AAED,qFAAqF;AACrF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAQlE;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMxD;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
/** Canonical JSON and hashing helpers shared by the thin operation protocol. */
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { SYNC_GATEWAY_ENCODINGS, SYNC_GATEWAY_HASH_ALGORITHMS, SYNC_JSON_LITERAL_TOKENS, } from "./constants.js";
|
|
3
|
+
import { canonicalJson, isCanonicalJsonValue, CANONICAL_CODEC_ERROR_CODES, CanonicalCodecError, } from "@hikoutei/kohkai";
|
|
4
|
+
import { SYNC_GATEWAY_ENCODINGS, SYNC_GATEWAY_HASH_ALGORITHMS, } from "./constants.js";
|
|
6
5
|
import { SYNC_GATEWAY_PROTOCOL_ERROR_CODES, SyncGatewayProtocolError, } from "../errors.js";
|
|
7
6
|
/** Checks whether an unknown value is safe to send through the signed JSON boundary. */
|
|
8
7
|
export function isSyncJsonValue(value) {
|
|
9
|
-
|
|
10
|
-
return true;
|
|
11
|
-
if (typeof value === "number")
|
|
12
|
-
return Number.isFinite(value);
|
|
13
|
-
if (Array.isArray(value))
|
|
14
|
-
return value.every(isSyncJsonValue);
|
|
15
|
-
return isRecord(value) && isPlainObject(value) && Object.values(value).every(isSyncJsonValue);
|
|
8
|
+
return isCanonicalJsonValue(value);
|
|
16
9
|
}
|
|
17
10
|
/** Promotes a JSON-compatible value or throws the protocol error used by signing. */
|
|
18
11
|
export function requireSyncJsonValue(value) {
|
|
@@ -23,25 +16,12 @@ export function requireSyncJsonValue(value) {
|
|
|
23
16
|
}
|
|
24
17
|
/** Canonical JSON used for payload hashes and cross-runtime HMAC inputs. */
|
|
25
18
|
export function canonicalSyncJson(value) {
|
|
26
|
-
|
|
27
|
-
return
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return SYNC_JSON_LITERAL_TOKENS.FALSE;
|
|
32
|
-
if (isJavaScriptType(value, JAVASCRIPT_TYPE_NAMES.STRING))
|
|
33
|
-
return JSON.stringify(value);
|
|
34
|
-
if (isJavaScriptType(value, JAVASCRIPT_TYPE_NAMES.NUMBER))
|
|
35
|
-
return canonicalNumber(value);
|
|
36
|
-
if (Array.isArray(value))
|
|
37
|
-
return `[${value.map((item) => canonicalSyncJson(item)).join(",")}]`;
|
|
38
|
-
if (isRecord(value) && isPlainObject(value)) {
|
|
39
|
-
const entries = Object.keys(value)
|
|
40
|
-
.sort()
|
|
41
|
-
.map((key) => `${JSON.stringify(key)}:${canonicalSyncJson(value[key])}`);
|
|
42
|
-
return `{${entries.join(",")}}`;
|
|
19
|
+
try {
|
|
20
|
+
return canonicalJson(value);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
throwProtocolCodecError(error);
|
|
43
24
|
}
|
|
44
|
-
throw new SyncGatewayProtocolError(SYNC_GATEWAY_PROTOCOL_ERROR_CODES.INVALID_JSON_VALUE, "sync gateway payload must contain JSON values only");
|
|
45
25
|
}
|
|
46
26
|
/** SHA-256 helper shared by envelope and effect payload verification. */
|
|
47
27
|
export function syncSha256Hex(value) {
|
|
@@ -49,14 +29,13 @@ export function syncSha256Hex(value) {
|
|
|
49
29
|
.update(value, SYNC_GATEWAY_ENCODINGS.UTF8)
|
|
50
30
|
.digest("hex");
|
|
51
31
|
}
|
|
52
|
-
function
|
|
53
|
-
if (
|
|
54
|
-
|
|
32
|
+
function throwProtocolCodecError(error) {
|
|
33
|
+
if (error instanceof CanonicalCodecError) {
|
|
34
|
+
const code = error.code === CANONICAL_CODEC_ERROR_CODES.NON_FINITE_NUMBER
|
|
35
|
+
? SYNC_GATEWAY_PROTOCOL_ERROR_CODES.NON_FINITE_NUMBER
|
|
36
|
+
: SYNC_GATEWAY_PROTOCOL_ERROR_CODES.INVALID_JSON_VALUE;
|
|
37
|
+
throw new SyncGatewayProtocolError(code, error.message);
|
|
55
38
|
}
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
function isPlainObject(value) {
|
|
59
|
-
const prototype = Object.getPrototypeOf(value);
|
|
60
|
-
return prototype === Object.prototype || prototype === null;
|
|
39
|
+
throw error;
|
|
61
40
|
}
|
|
62
41
|
//# sourceMappingURL=syncProtocol.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncProtocol.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,
|
|
1
|
+
{"version":3,"file":"syncProtocol.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/syncProtocol.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,aAAa,EACb,oBAAoB,EACpB,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iCAAiC,EACjC,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAItB,wFAAwF;AACxF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,wBAAwB,CAChC,iCAAiC,CAAC,kBAAkB,EACpD,oDAAoD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,UAAU,CAAC,4BAA4B,CAAC,MAAM,CAAC;SACnD,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC,IAAI,CAAC;SAC1C,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,KAAK,YAAY,mBAAmB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,KAAK,2BAA2B,CAAC,iBAAiB;YACvE,CAAC,CAAC,iCAAiC,CAAC,iBAAiB;YACrD,CAAC,CAAC,iCAAiC,CAAC,kBAAkB,CAAC;QACzD,MAAM,IAAI,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
+
import type { CanonicalJsonValue } from "@hikoutei/kohkai";
|
|
1
2
|
/** JSON values allowed in signed gateway payloads. */
|
|
2
|
-
export type SyncJsonValue =
|
|
3
|
-
readonly [key: string]: SyncJsonValue;
|
|
4
|
-
};
|
|
3
|
+
export type SyncJsonValue = CanonicalJsonValue;
|
|
5
4
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/protocol/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,sDAAsD;AACtD,MAAM,MAAM,aAAa,GAAG,kBAAkB,CAAC"}
|
package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationClient.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"operationClient.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,15 +64,50 @@ export class AppsScriptOperationClient {
|
|
|
64
64
|
const timer = setTimeout(() => controller.abort(), this.requestTimeoutMs);
|
|
65
65
|
let httpStatus = null;
|
|
66
66
|
let responseBytes = 0;
|
|
67
|
+
let requestUrl = this.url;
|
|
68
|
+
let requestMethod = "POST";
|
|
69
|
+
let redirectCount = 0;
|
|
67
70
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
71
|
+
let response;
|
|
72
|
+
while (true) {
|
|
73
|
+
const requestInit = {
|
|
74
|
+
method: requestMethod,
|
|
75
|
+
signal: controller.signal,
|
|
76
|
+
// Validate the target ourselves. Apps Script commonly returns a
|
|
77
|
+
// 302 after executing the POST and exposes the result through a
|
|
78
|
+
// googleusercontent GET; 307/308 are the redirects that preserve
|
|
79
|
+
// the original method and body.
|
|
80
|
+
redirect: "manual",
|
|
81
|
+
...(requestMethod === "POST"
|
|
82
|
+
? {
|
|
83
|
+
headers: { "content-type": "application/json" },
|
|
84
|
+
body: requestBody,
|
|
85
|
+
}
|
|
86
|
+
: {}),
|
|
87
|
+
};
|
|
88
|
+
response = await fetch(requestUrl, requestInit);
|
|
89
|
+
httpStatus = response.status;
|
|
90
|
+
if (!isRedirectStatus(response.status))
|
|
91
|
+
break;
|
|
92
|
+
const location = response.headers.get("location");
|
|
93
|
+
// Release the manual redirect response before opening the next request;
|
|
94
|
+
// a redirect body is never part of the signed gateway protocol.
|
|
95
|
+
try {
|
|
96
|
+
await response.body?.cancel();
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// The redirect target is still validated below; a failed body cancel
|
|
100
|
+
// must not turn a malformed Location into an unrelated network error.
|
|
101
|
+
}
|
|
102
|
+
if (redirectCount >= MAX_REDIRECTS) {
|
|
103
|
+
throw invalidRedirectError(`Code.gs redirect limit of ${MAX_REDIRECTS} was exceeded`, httpStatus);
|
|
104
|
+
}
|
|
105
|
+
requestUrl = resolveRedirectUrl(requestUrl, location, httpStatus);
|
|
106
|
+
if (REDIRECT_REWRITE_TO_GET_STATUS_CODES.has(response.status)) {
|
|
107
|
+
requestMethod = "GET";
|
|
108
|
+
}
|
|
109
|
+
redirectCount += 1;
|
|
110
|
+
}
|
|
76
111
|
const responseText = await response.text();
|
|
77
112
|
responseBytes = Buffer.byteLength(responseText, "utf8");
|
|
78
113
|
const decoded = parseCodeGsResponse(responseText, presentValue(httpStatus));
|
|
@@ -191,6 +226,44 @@ function requireRequestTimeout(value) {
|
|
|
191
226
|
}
|
|
192
227
|
return value;
|
|
193
228
|
}
|
|
229
|
+
const MAX_REDIRECTS = 3;
|
|
230
|
+
const REDIRECT_STATUS_CODES = new Set([301, 302, 303, 307, 308]);
|
|
231
|
+
const REDIRECT_REWRITE_TO_GET_STATUS_CODES = new Set([301, 302, 303]);
|
|
232
|
+
const TRUSTED_REDIRECT_HOSTS = new Set([
|
|
233
|
+
"script.google.com",
|
|
234
|
+
"script.googleusercontent.com",
|
|
235
|
+
]);
|
|
236
|
+
function isRedirectStatus(status) {
|
|
237
|
+
return REDIRECT_STATUS_CODES.has(status);
|
|
238
|
+
}
|
|
239
|
+
function resolveRedirectUrl(currentUrl, location, status) {
|
|
240
|
+
if (location === null || location.trim().length === 0) {
|
|
241
|
+
throw invalidRedirectError("Code.gs redirect did not contain a Location header", status);
|
|
242
|
+
}
|
|
243
|
+
let redirected;
|
|
244
|
+
try {
|
|
245
|
+
redirected = new URL(location, currentUrl);
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
throw invalidRedirectError("Code.gs redirect Location was not a valid URL", status);
|
|
249
|
+
}
|
|
250
|
+
if (redirected.protocol !== "https:" ||
|
|
251
|
+
redirected.username.length > 0 ||
|
|
252
|
+
redirected.password.length > 0 ||
|
|
253
|
+
redirected.hash.length > 0) {
|
|
254
|
+
throw invalidRedirectError("Code.gs redirect must target an HTTPS URL without credentials or a fragment", status);
|
|
255
|
+
}
|
|
256
|
+
const current = new URL(currentUrl);
|
|
257
|
+
const sameHost = redirected.hostname === current.hostname;
|
|
258
|
+
const trustedGoogleHost = TRUSTED_REDIRECT_HOSTS.has(redirected.hostname);
|
|
259
|
+
if (!sameHost && !trustedGoogleHost) {
|
|
260
|
+
throw invalidRedirectError("Code.gs redirect target is not the configured gateway or a trusted Apps Script host", status);
|
|
261
|
+
}
|
|
262
|
+
return redirected.toString();
|
|
263
|
+
}
|
|
264
|
+
function invalidRedirectError(statusMessage, status) {
|
|
265
|
+
return new AppsScriptSyncGatewayError(SYNC_GATEWAY_CLIENT_ERROR_CODES.INVALID_REDIRECT, statusMessage, presentValue(status));
|
|
266
|
+
}
|
|
194
267
|
function presentOrAbsent(value) {
|
|
195
268
|
return value === null ? absentValue() : presentValue(value);
|
|
196
269
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationClient.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"operationClient.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationClient.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts
CHANGED
|
@@ -40,12 +40,7 @@ export declare class AppsScriptOperationSyncGateway implements SyncSheetGateway,
|
|
|
40
40
|
readonly createdSheets: readonly string[];
|
|
41
41
|
readonly initializedHeaders: readonly string[];
|
|
42
42
|
}>;
|
|
43
|
-
/**
|
|
44
|
-
* Appends new System_State rows with one remote setValues operation.
|
|
45
|
-
*
|
|
46
|
-
* No row metadata, receipt, snapshot, CAS, or postcondition work is
|
|
47
|
-
* performed here. Reconciliation owns drift detection after this write.
|
|
48
|
-
*/
|
|
43
|
+
/** Appends route rows through an idempotent built-in-services operation. */
|
|
49
44
|
fastAppendRows(request: FastAppendRowsRequest): Promise<FastAppendRowsResult>;
|
|
50
45
|
/** Reads one registered table with values only; no metadata, lock, or CAS work is performed. */
|
|
51
46
|
readRows(request: ReadSyncTableRowsRequest): Promise<SyncTableRowsResult>;
|
package/dist/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operationSyncGateway.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,kCAAkC,EAClC,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iEAAiE,CAAC;AAYzE,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,mCAAmC,EACnC,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,oCAAoC,EACpC,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,EAC3B,gCAAgC,EAChC,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAEV,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAgB9B,iFAAiF;AACjF,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACrE;AAED,iFAAiF;AACjF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;AAoBnE;;;GAGG;AACH,qBAAa,8BACX,YACE,gBAAgB,EAChB,2BAA2B,EAC3B,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAEzD,OAAO,EAAE,qCAAqC;IAWjE;;;;;OAKG;IACU,iBAAiB,CAC5B,aAAa,EAAE,SAAS,yBAAyB,EAAE,GAClD,OAAO,CAAC;QACT,QAAQ,CAAC,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;KAChD,CAAC;IAmBF
|
|
1
|
+
{"version":3,"file":"operationSyncGateway.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/apps-script-gateway/transport/operationSyncGateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,kCAAkC,EAClC,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,iEAAiE,CAAC;AAYzE,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,mCAAmC,EACnC,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,oCAAoC,EACpC,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,2BAA2B,EAC3B,gCAAgC,EAChC,2BAA2B,EAC3B,mBAAmB,EACpB,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAEV,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAgB9B,iFAAiF;AACjF,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,gBAAgB,EAAE,0BAA0B,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACrE;AAED,iFAAiF;AACjF,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,KAAK,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;AAoBnE;;;GAGG;AACH,qBAAa,8BACX,YACE,gBAAgB,EAChB,2BAA2B,EAC3B,gCAAgC,EAChC,2BAA2B,EAC3B,sBAAsB;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6B;IAC9D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgD;gBAEzD,OAAO,EAAE,qCAAqC;IAWjE;;;;;OAKG;IACU,iBAAiB,CAC5B,aAAa,EAAE,SAAS,yBAAyB,EAAE,GAClD,OAAO,CAAC;QACT,QAAQ,CAAC,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;QACpD,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;KAChD,CAAC;IAmBF,4EAA4E;IAC/D,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwB1F,gGAAgG;IACnF,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWtF,8EAA8E;IACjE,aAAa,CACxB,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAC5C,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAc1C,6EAA6E;IAChE,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAU5F,0EAA0E;IAC7D,uBAAuB,CAClC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,uBAAuB,CAAC;IAkBnC,uEAAuE;IAC1D,wBAAwB,CACnC,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,SAAS,oCAAoC,EAAE,CAAC;IAU3D,qEAAqE;IACxD,gBAAgB,CAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAUtC,gFAAgF;IACnE,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAUzF,4EAA4E;IAC/D,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAW7F,wEAAwE;IAC3D,gBAAgB,CAC3B,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAC3C,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAa3C;;;;;OAKG;IACU,cAAc,CACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mCAAmC,CAAC;IAY/C,OAAO,CAAC,0BAA0B;CAcnC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { SYNC_GATEWAY_ERROR_CODES, SyncGatewayContractError, } from "../../../../../application/sync/gateway/errors.js";
|
|
9
9
|
import { requireSyncGatewayNonEmptyList, requireSyncGatewayNonNegativeSafeInteger, requireSyncGatewayPositiveSafeInteger, requireSyncGatewayProjection, requireSyncGatewayText, } from "../../../../../application/sync/gateway/validation.js";
|
|
10
|
-
import {
|
|
10
|
+
import { createBatchAppendRowsOperation } from "../operations/write/batchAppendOperation.js";
|
|
11
11
|
import { createReadTableRowsOperation } from "../operations/read/tableReadOperation.js";
|
|
12
12
|
import { createApplyEffectsOperation, createReadEffectPostconditionOperation, createReadEffectPostconditionsOperation, } from "../operations/effect/effectOperation.js";
|
|
13
13
|
import { createEnsureRowAnchorsOperation, createObserveSnapshotOperation, createReadSnapshotOperation, } from "../operations/observation/observationOperation.js";
|
|
@@ -44,19 +44,23 @@ export class AppsScriptOperationSyncGateway {
|
|
|
44
44
|
};
|
|
45
45
|
return applyOneOperation(this.operationGateway, operation);
|
|
46
46
|
}
|
|
47
|
-
/**
|
|
48
|
-
* Appends new System_State rows with one remote setValues operation.
|
|
49
|
-
*
|
|
50
|
-
* No row metadata, receipt, snapshot, CAS, or postcondition work is
|
|
51
|
-
* performed here. Reconciliation owns drift detection after this write.
|
|
52
|
-
*/
|
|
47
|
+
/** Appends route rows through an idempotent built-in-services operation. */
|
|
53
48
|
async fastAppendRows(request) {
|
|
54
49
|
const definition = this.definitionForPhysicalSheet(request.physicalSheetId);
|
|
55
50
|
validateRoute(request, definition);
|
|
56
|
-
const
|
|
51
|
+
const routeOptions = effectRouteOptions(definition);
|
|
52
|
+
if (routeOptions.identityField === undefined) {
|
|
53
|
+
// The built-in append path never materializes anchor metadata, so a
|
|
54
|
+
// route without a registered identity cannot locate or guard its rows
|
|
55
|
+
// on replay. Fail closed instead of inventing an unsafe locator.
|
|
56
|
+
throw new SyncGatewayContractError(SYNC_GATEWAY_ERROR_CODES.INVALID_EFFECT_PAYLOAD, "fast append requires a registered identityField for route " + request.physicalSheetId);
|
|
57
|
+
}
|
|
58
|
+
const operation = createBatchAppendRowsOperation({
|
|
59
|
+
...(request.authority === undefined ? {} : { authority: request.authority }),
|
|
57
60
|
sheetName: request.sheetName,
|
|
58
61
|
registeredRange: request.registeredRange,
|
|
59
62
|
headers: definition.headers,
|
|
63
|
+
identityField: routeOptions.identityField,
|
|
60
64
|
rows: request.rows,
|
|
61
65
|
});
|
|
62
66
|
return applyOneOperation(this.operationGateway, operation);
|
|
@@ -268,7 +272,9 @@ function effectRouteOptions(definition) {
|
|
|
268
272
|
return {
|
|
269
273
|
...(definition.sheet.projection === "system_state"
|
|
270
274
|
? { identityField: definition.sheet.businessKeyField }
|
|
271
|
-
:
|
|
275
|
+
: definition.sheet.projection === "sync_conflicts"
|
|
276
|
+
? { identityField: "Conflict_ID" }
|
|
277
|
+
: {}),
|
|
272
278
|
...(definition.checkboxHeaders === undefined
|
|
273
279
|
? {}
|
|
274
280
|
: { checkboxHeaders: definition.checkboxHeaders }),
|