hikoutei 0.9.26 → 0.9.27
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 +6 -1
- package/dist/contracts/sheets/googleSheetsApi.d.ts +19 -0
- package/dist/contracts/sheets/googleSheetsApi.d.ts.map +1 -1
- package/dist/contracts/sheets/googleSheetsApi.js.map +1 -1
- package/dist/contracts/sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts +9 -1
- package/dist/contracts/sheets/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -1
- package/dist/contracts/sheets/mutationCoordinator/CoordinatedSheetsProvider.js +13 -1
- package/dist/contracts/sheets/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -1
- package/dist/contracts/sheets/rowCheck.d.ts +103 -0
- package/dist/contracts/sheets/rowCheck.d.ts.map +1 -0
- package/dist/contracts/sheets/rowCheck.js +134 -0
- package/dist/contracts/sheets/rowCheck.js.map +1 -0
- package/dist/contracts/sheets/syncSheets.d.ts +74 -0
- package/dist/contracts/sheets/syncSheets.d.ts.map +1 -1
- package/dist/contracts/sheets/syncSheets.js +5 -0
- package/dist/contracts/sheets/syncSheets.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts +2 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.d.ts.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js +124 -2
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPolling.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingChecks.d.ts +83 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingChecks.d.ts.map +1 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingChecks.js +213 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingChecks.js.map +1 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts +9 -0
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.d.ts.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js +19 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingSql.js.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts +10 -2
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.d.ts.map +1 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js +2 -1
- package/dist/persistence/providers/mikro-orm/observation/MikroOrmUserInputPollingState.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +10 -2
- package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +13 -0
- package/dist/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/constants.d.ts +14 -0
- package/dist/sheets/providers/google-sheets-api/constants.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/constants.js +14 -0
- package/dist/sheets/providers/google-sheets-api/constants.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/batchBuilder.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/batchBuilder.js +25 -0
- package/dist/sheets/providers/google-sheets-api/model/batchBuilder.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/observation.d.ts +10 -0
- package/dist/sheets/providers/google-sheets-api/model/observation.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/observation.js +71 -7
- package/dist/sheets/providers/google-sheets-api/model/observation.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/postcondition.d.ts +9 -0
- package/dist/sheets/providers/google-sheets-api/model/postcondition.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/postcondition.js +12 -0
- package/dist/sheets/providers/google-sheets-api/model/postcondition.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightContext.d.ts +109 -6
- package/dist/sheets/providers/google-sheets-api/model/preflightContext.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightContext.js +341 -70
- package/dist/sheets/providers/google-sheets-api/model/preflightContext.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightFields.d.ts +30 -0
- package/dist/sheets/providers/google-sheets-api/model/preflightFields.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightFields.js +36 -0
- package/dist/sheets/providers/google-sheets-api/model/preflightFields.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightParsing.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightParsing.js +6 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightParsing.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightRows.d.ts +71 -2
- package/dist/sheets/providers/google-sheets-api/model/preflightRows.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightRows.js +134 -8
- package/dist/sheets/providers/google-sheets-api/model/preflightRows.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/model/preflightVerify.d.ts +89 -0
- package/dist/sheets/providers/google-sheets-api/model/preflightVerify.d.ts.map +1 -0
- package/dist/sheets/providers/google-sheets-api/model/preflightVerify.js +282 -0
- package/dist/sheets/providers/google-sheets-api/model/preflightVerify.js.map +1 -0
- package/dist/sheets/providers/google-sheets-api/model/receiptCursor.d.ts +102 -0
- package/dist/sheets/providers/google-sheets-api/model/receiptCursor.d.ts.map +1 -0
- package/dist/sheets/providers/google-sheets-api/model/receiptCursor.js +132 -0
- package/dist/sheets/providers/google-sheets-api/model/receiptCursor.js.map +1 -0
- package/dist/sheets/providers/google-sheets-api/model/rowCheckFormula.d.ts +35 -0
- package/dist/sheets/providers/google-sheets-api/model/rowCheckFormula.d.ts.map +1 -0
- package/dist/sheets/providers/google-sheets-api/model/rowCheckFormula.js +57 -0
- package/dist/sheets/providers/google-sheets-api/model/rowCheckFormula.js.map +1 -0
- package/dist/sheets/providers/google-sheets-api/operations/applyEffects.d.ts +39 -2
- package/dist/sheets/providers/google-sheets-api/operations/applyEffects.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/applyEffects.js +119 -20
- package/dist/sheets/providers/google-sheets-api/operations/applyEffects.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/fastAppend.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js +80 -12
- package/dist/sheets/providers/google-sheets-api/operations/fastAppend.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/preflightOp.d.ts +93 -11
- package/dist/sheets/providers/google-sheets-api/operations/preflightOp.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/preflightOp.js +192 -21
- package/dist/sheets/providers/google-sheets-api/operations/preflightOp.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/provisioning.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/provisioning.js +86 -8
- package/dist/sheets/providers/google-sheets-api/operations/provisioning.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/readRows.d.ts +1 -0
- package/dist/sheets/providers/google-sheets-api/operations/readRows.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/readRows.js +6 -7
- package/dist/sheets/providers/google-sheets-api/operations/readRows.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/rowChecks.d.ts +44 -0
- package/dist/sheets/providers/google-sheets-api/operations/rowChecks.d.ts.map +1 -0
- package/dist/sheets/providers/google-sheets-api/operations/rowChecks.js +197 -0
- package/dist/sheets/providers/google-sheets-api/operations/rowChecks.js.map +1 -0
- package/dist/sheets/providers/google-sheets-api/operations/shared.d.ts +9 -0
- package/dist/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
- package/dist/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
- package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +11 -0
- package/dist/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -253,7 +253,12 @@ shared on the spreadsheet (the error tells you which email to share).
|
|
|
253
253
|
> **Legacy spreadsheet note.** Spreadsheets provisioned by the old Apps Script
|
|
254
254
|
> provider with developer-metadata row anchors are not migrated: `User_Input`
|
|
255
255
|
> tabs now require the `__hikoutei_row_id` system column, so legacy tabs must
|
|
256
|
-
> be re-provisioned.
|
|
256
|
+
> be re-provisioned. Current provisioning also adds one internal formula
|
|
257
|
+
> column, `__hikoutei_row_check`, directly after each `User_Input` tab's
|
|
258
|
+
> registered range: Hikoutei writes a change-detection formula per row, and
|
|
259
|
+
> polling reads only that column to spot human edits (rows without it fall
|
|
260
|
+
> back to full reads). Do not edit, sort, or delete the column or its
|
|
261
|
+
> formulas.
|
|
257
262
|
|
|
258
263
|
Hikoutei uses a durable local outbox, idempotent delivery, and conflict-aware
|
|
259
264
|
updates so temporary API failures do not lose committed application writes. The
|
|
@@ -97,6 +97,12 @@ export interface GoogleSheetsApiCell {
|
|
|
97
97
|
readonly stringValue?: string;
|
|
98
98
|
readonly numberValue?: number;
|
|
99
99
|
readonly boolValue?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Formula text with the leading `=` (exactly what the UI shows; the
|
|
102
|
+
* real API echoes it back in `userEnteredValue`). Used only by the
|
|
103
|
+
* row-check column formula cells; every other write stays literal.
|
|
104
|
+
*/
|
|
105
|
+
readonly formulaValue?: string;
|
|
100
106
|
};
|
|
101
107
|
readonly userEnteredFormat?: {
|
|
102
108
|
readonly numberFormat?: GoogleSheetsApiNumberFormat;
|
|
@@ -141,6 +147,19 @@ export type GoogleSheetsApiWriteRequest = {
|
|
|
141
147
|
readonly startIndex: number;
|
|
142
148
|
/** Exclusive end index; exactly one row is deleted by the provider. */
|
|
143
149
|
readonly endIndex: number;
|
|
150
|
+
} | {
|
|
151
|
+
/**
|
|
152
|
+
* Grows the tab's grid. `updateCells` never expands the grid (a proven
|
|
153
|
+
* 400 for out-of-bounds ranges), so provisioning emits this BEFORE the
|
|
154
|
+
* header write whenever the row-check column sits outside the current
|
|
155
|
+
* grid width. 0-based exclusive end index, like the other dimension
|
|
156
|
+
* requests.
|
|
157
|
+
*/
|
|
158
|
+
readonly kind: "addDimension";
|
|
159
|
+
readonly sheetId: number;
|
|
160
|
+
readonly dimension: "COLUMNS";
|
|
161
|
+
readonly startIndex: number;
|
|
162
|
+
readonly endIndex: number;
|
|
144
163
|
} | {
|
|
145
164
|
readonly kind: "setDataValidation";
|
|
146
165
|
readonly sheetId: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleSheetsApi.d.ts","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,4EAA4E;AAC5E,eAAO,MAAM,wBAAwB,2DAE3B,CAAC;AAEX,wEAAwE;AACxE,eAAO,MAAM,0BAA0B;IACrC,gFAAgF;;;;IAIhF;;;;;OAKG;;IAEH,2EAA2E;;IAE3E;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;;IAEH;;;;;;;;;OASG;;IAEH;;;;;OAKG;;IAEH;;;;;OAKG;;IAEH,2EAA2E;;CAEnE,CAAC;AAEX,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;QAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"googleSheetsApi.d.ts","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleSheetsApi.js","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,8CAA8C;CACtC,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gFAAgF;IAChF,kBAAkB,EAAE,MAAM;IAC1B,sBAAsB,EAAE,KAAK;IAC7B,sBAAsB,EAAE,OAAO;IAC/B;;;;;OAKG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,yBAAyB,EAAE,GAAG;IAC9B;;;;;;;;;OASG;IACH,mCAAmC,EAAE,KAAK;IAC1C;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC;;;;;OAKG;IACH,uBAAuB,EAAE,KAAK;IAC9B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;CAC1B,CAAC;
|
|
1
|
+
{"version":3,"file":"googleSheetsApi.js","sourceRoot":"","sources":["../../src/sheets/googleSheetsApi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,8CAA8C;CACtC,CAAC;AAEX,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,gFAAgF;IAChF,kBAAkB,EAAE,MAAM;IAC1B,sBAAsB,EAAE,KAAK;IAC7B,sBAAsB,EAAE,OAAO;IAC/B;;;;;OAKG;IACH,eAAe,EAAE,MAAM;IACvB,2EAA2E;IAC3E,mBAAmB,EAAE,MAAM;IAC3B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,yBAAyB,EAAE,GAAG;IAC9B;;;;;;;;;OASG;IACH,mCAAmC,EAAE,KAAK;IAC1C;;;;;OAKG;IACH,uBAAuB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACxC;;;;;OAKG;IACH,uBAAuB,EAAE,KAAK;IAC9B,2EAA2E;IAC3E,2BAA2B,EAAE,KAAK;CAC1B,CAAC;AA8NX,0EAA0E;AAE1E,6DAA6D;AAC7D,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,OAAO,KAAK,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;QACnC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC;QACxD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC9C,CAAC"}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* lease renewal) after the lane is acquired and before the inner provider
|
|
34
34
|
* call, so queue time plus limiter waits cannot outlive the lease.
|
|
35
35
|
*/
|
|
36
|
-
import type { ApplySyncEffectsRequest, ApplySyncEffectsResult, EnsureSyncRowAnchorsRequest, EnsureSyncRowAnchorsResult, FastAppendRowsRequest, FastAppendRowsResult, PreparedApplyEffects, ReadSyncEffectPostconditionsRequest, ReadSyncSnapshotRequest, ReadSyncTableRowsRequest, SyncEffectPostcondition, SyncProjectionEffect, SyncEffectPostconditionResult, SyncSheetsSnapshot, SyncObservedSnapshot, SyncSheetsProvider, SyncSheetsObservationBatchProvider, SyncSheetsTableReader, SyncTableRowsResult, SyncEffectWorkerProvider } from "../syncSheets.js";
|
|
36
|
+
import type { ApplySyncEffectsRequest, ApplySyncEffectsResult, EnsureSyncRowAnchorsRequest, EnsureSyncRowAnchorsResult, FastAppendRowsRequest, FastAppendRowsResult, PreparedApplyEffects, ReadSyncEffectPostconditionsRequest, ReadSyncRowChecksRequest, ReadSyncSnapshotRequest, ReadSyncTableRowsRequest, SyncEffectPostcondition, SyncProjectionEffect, SyncEffectPostconditionResult, SyncRowChecksResult, SyncSheetsSnapshot, SyncObservedSnapshot, SyncSheetsProvider, SyncSheetsObservationBatchProvider, SyncSheetsTableReader, SyncTableRowsResult, SyncEffectWorkerProvider } from "../syncSheets.js";
|
|
37
37
|
import { AsyncMutex } from "./asyncMutex.js";
|
|
38
38
|
import { type CoordinatorLaneEvent } from "./laneTelemetry.js";
|
|
39
39
|
/** Provider boundary the coordinator wraps (effect + observation + table read). */
|
|
@@ -82,6 +82,14 @@ export declare class CoordinatedSheetsProvider<TInner extends CoordinatedSheetsI
|
|
|
82
82
|
private readonly onLaneEvent;
|
|
83
83
|
private readonly now;
|
|
84
84
|
private readonly lanes;
|
|
85
|
+
/**
|
|
86
|
+
* Narrow row-check read (the formula check-column polling gate), exposed
|
|
87
|
+
* ONLY when the inner provider supports it. Lock-free like every value
|
|
88
|
+
* read (never waits on a mutation lane). `isSyncSheetsRowChecksReader`
|
|
89
|
+
* against the coordinator therefore reports the INNER's capability, which
|
|
90
|
+
* is what polling's feature detection needs.
|
|
91
|
+
*/
|
|
92
|
+
readonly readRowChecksBatch?: (requests: readonly ReadSyncRowChecksRequest[]) => Promise<readonly SyncRowChecksResult[]>;
|
|
85
93
|
constructor(options: CoordinatedSheetsProviderOptions<TInner>);
|
|
86
94
|
/** Returns a snapshot of all known lane metrics; diagnostic only. */
|
|
87
95
|
laneMetrics(): ReadonlyMap<string, ReturnType<AsyncMutex["metrics"]>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoordinatedSheetsProvider.d.ts","sourceRoot":"","sources":["../../../src/sheets/mutationCoordinator/CoordinatedSheetsProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;
|
|
1
|
+
{"version":3,"file":"CoordinatedSheetsProvider.d.ts","sourceRoot":"","sources":["../../../src/sheets/mutationCoordinator/CoordinatedSheetsProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAMH,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,mCAAmC,EACnC,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,uBAAuB,EACvB,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,kCAAkC,EAClC,qBAAqB,EACrB,mBAAmB,EACnB,wBAAwB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAG5B,mFAAmF;AACnF,MAAM,MAAM,sBAAsB,GAChC,kBAAkB,GAClB,qBAAqB,CAAC;AAWxB;;;GAGG;AACH,qBAAa,gCAAiC,SAAQ,KAAK;;CAK1D;AAED;;;;GAIG;AACH,qBAAa,qCAAsC,SAAQ,KAAK;;CAK/D;AAMD,8DAA8D;AAC9D,MAAM,WAAW,gCAAgC,CAAC,MAAM,SAAS,sBAAsB;IACrF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MAAM,CAAC;IAC3E,gFAAgF;IAChF,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC7D,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,qBAAa,yBAAyB,CAAC,MAAM,SAAS,sBAAsB,CAC1E,YAAW,kBAAkB,EAAE,qBAAqB,EAAE,kCAAkC;IACxF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsC;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsD;IAClF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;IACvD;;;;;;OAMG;IACH,SAAgB,kBAAkB,CAAC,EAAE,CACnC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,KAC1C,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CAAC;gBAE1B,OAAO,EAAE,gCAAgC,CAAC,MAAM,CAAC;IAWpE,qEAAqE;IAC9D,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;IAM5E;;;;OAIG;IACI,oBAAoB,CAAC,CAAC,EAC3B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACrB,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;;;;;;;OAaG;IACI,kBAAkB,CAAC,CAAC,EACzB,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACrC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC;IAIb;;;;;;;OAOG;IACI,2BAA2B,CAAC,CAAC,EAClC,gBAAgB,EAAE,SAAS,MAAM,EAAE,EACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EACrC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC;IAKA,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM7E,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAM5F;;;;;;;;;OASG;IACU,qBAAqB,CAChC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,oBAAoB,CAAC;IAehC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACU,oBAAoB,CAC/B,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,sBAAsB,CAAC;IAwBrB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAMvF,wBAAwB,CACnC,OAAO,EAAE,mCAAmC,GAC3C,OAAO,CAAC,SAAS,6BAA6B,EAAE,CAAC;IAMvC,gBAAgB,CAC3B,OAAO,EAAE,2BAA2B,GACnC,OAAO,CAAC,0BAA0B,CAAC;IAMzB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMhF,gBAAgB,CAC3B,QAAQ,EAAE,SAAS,uBAAuB,EAAE,GAC3C,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC;IAqB3C,iEAAiE;IACpD,YAAY,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxF,oEAAoE;IACvD,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAItF,4EAA4E;IAC/D,aAAa,CACxB,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAC5C,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC;IAI1C;;;;;OAKG;YACW,eAAe;IAS7B,OAAO,CAAC,OAAO;YASD,WAAW;YAUX,UAAU;IAmDxB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,WAAW;IAmBnB,OAAO,CAAC,IAAI;CAOb;AAID,mFAAmF;AACnF,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACnD,yBAAyB,CAAC,sBAAsB,CAAC,EACjD,oBAAoB,CACrB,GAAG;IACF,0EAA0E;IAC1E,2BAA2B,CAAC,EAAE,yBAAyB,CAAC,sBAAsB,CAAC,CAAC,6BAA6B,CAAC,CAAC;CAChH,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,wBAAwB,GAAG,kCAAkC,CAE3E;AAED;;;;;;;;;GASG;AACH,wBAAgB,sCAAsC,CACpD,QAAQ,EAAE,wBAAwB,GACjC,QAAQ,IAAI,wBAAwB,GACrC,IAAI,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,EAAE,6BAA6B,CAAC,CAEvF;AAOD;;;;;;;GAOG;AACH,eAAO,MAAM,sCAAsC;;;CAGzC,CAAC;AAEX,+EAA+E;AAC/E,MAAM,MAAM,iCAAiC,GAC3C,CAAC,OAAO,sCAAsC,CAAC,CAAC,MAAM,OAAO,sCAAsC,CAAC,CAAC;AAEvG,+EAA+E;AAC/E,qBAAa,6BAA8B,SAAQ,SAAS;IAC1D,SAAgB,IAAI,EAAE,iCAAiC,CAAC;gBAErC,IAAI,EAAE,iCAAiC;CAK3D"}
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
* lease renewal) after the lane is acquired and before the inner provider
|
|
34
34
|
* call, so queue time plus limiter waits cannot outlive the lease.
|
|
35
35
|
*/
|
|
36
|
-
import { isSyncSheetsObservationBatchProvider, } from "../syncSheets.js";
|
|
36
|
+
import { isSyncSheetsObservationBatchProvider, isSyncSheetsRowChecksReader, } from "../syncSheets.js";
|
|
37
37
|
import { AsyncMutex } from "./asyncMutex.js";
|
|
38
38
|
import { TRANSPORT_OUTCOME_KINDS, } from "./laneTelemetry.js";
|
|
39
39
|
import { classifyTransportOutcome } from "../transportOutcome.js";
|
|
@@ -79,11 +79,23 @@ export class CoordinatedSheetsProvider {
|
|
|
79
79
|
onLaneEvent;
|
|
80
80
|
now;
|
|
81
81
|
lanes = new Map();
|
|
82
|
+
/**
|
|
83
|
+
* Narrow row-check read (the formula check-column polling gate), exposed
|
|
84
|
+
* ONLY when the inner provider supports it. Lock-free like every value
|
|
85
|
+
* read (never waits on a mutation lane). `isSyncSheetsRowChecksReader`
|
|
86
|
+
* against the coordinator therefore reports the INNER's capability, which
|
|
87
|
+
* is what polling's feature detection needs.
|
|
88
|
+
*/
|
|
89
|
+
readRowChecksBatch;
|
|
82
90
|
constructor(options) {
|
|
83
91
|
this.inner = options.inner;
|
|
84
92
|
this.resolveKey = options.mutationKeyForPhysicalSheet ?? (() => DEFAULT_LANE_KEY);
|
|
85
93
|
this.onLaneEvent = options.onLaneEvent;
|
|
86
94
|
this.now = options.clock ?? Date.now;
|
|
95
|
+
const inner = options.inner;
|
|
96
|
+
if (isSyncSheetsRowChecksReader(inner)) {
|
|
97
|
+
this.readRowChecksBatch = (requests) => inner.readRowChecksBatch(requests);
|
|
98
|
+
}
|
|
87
99
|
}
|
|
88
100
|
/** Returns a snapshot of all known lane metrics; diagnostic only. */
|
|
89
101
|
laneMetrics() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoordinatedSheetsProvider.js","sourceRoot":"","sources":["../../../src/sheets/mutationCoordinator/CoordinatedSheetsProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EACL,oCAAoC,
|
|
1
|
+
{"version":3,"file":"CoordinatedSheetsProvider.js","sourceRoot":"","sources":["../../../src/sheets/mutationCoordinator/CoordinatedSheetsProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-level change-detection check column (shared semantics leaf).
|
|
3
|
+
*
|
|
4
|
+
* The User_Input projection carries one extra column IMMEDIATELY AFTER the
|
|
5
|
+
* registered range holding a deterministic formula the system writes at row
|
|
6
|
+
* creation: a `&`-concatenation of one LENGTH-PREFIXED, TYPE-TAGGED token
|
|
7
|
+
* per user data column of the row (see {@link renderRowCheckCell}). The
|
|
8
|
+
* Sheet's recalculation engine maintains the cell, so a human edit to any
|
|
9
|
+
* data column changes the visible check string without any system
|
|
10
|
+
* involvement. Inbound polling then reads ONLY that column (plus the
|
|
11
|
+
* identity and system row-id bands for row mapping), compares each row's
|
|
12
|
+
* observed check string against the value SQLite derives deterministically
|
|
13
|
+
* from the canonical field state, and escalates only mismatched rows to a
|
|
14
|
+
* targeted full-field read. A match therefore skips the row's data columns
|
|
15
|
+
* entirely.
|
|
16
|
+
*
|
|
17
|
+
* This module is the SINGLE source for the token semantics both sides must
|
|
18
|
+
* share: the provider builds the formula from the same delimiter/tag
|
|
19
|
+
* constants, and the polling side renders the expected string with
|
|
20
|
+
* {@link computeRowCheckValue}. The encoding is INJECTIVE (collision-free)
|
|
21
|
+
* and type-aware by construction:
|
|
22
|
+
*
|
|
23
|
+
* - every column contributes EXACTLY ONE positional token
|
|
24
|
+
* `<typeTag><charLength>:<renderedValue>`, so the length prefix (not the
|
|
25
|
+
* delimiter) defines token boundaries: a delimiter INSIDE a value
|
|
26
|
+
* (["a|b", "c"] vs ["a", "b|c"]) can never fake a boundary;
|
|
27
|
+
* - blank permutations cannot collapse: a value moved across a blank
|
|
28
|
+
* boundary changes which POSITION carries the text (`"z"|""` vs
|
|
29
|
+
* `""|"z"` render `s1:z|s0:`, never the same string);
|
|
30
|
+
* - the first character of every token is its type tag (`s` text — also
|
|
31
|
+
* blank/empty string, which are visually identical in a Sheet; `n`
|
|
32
|
+
* number or date serial; `b` boolean), so the string "12" (`s2:12`)
|
|
33
|
+
* never equals the number 12 (`n2:12`).
|
|
34
|
+
*
|
|
35
|
+
* Safety direction: every renderer disagreement (a Sheet locale that
|
|
36
|
+
* renders a decimal with a comma, an emoji whose Sheet LEN counts code
|
|
37
|
+
* points while JavaScript counts UTF-16 units, scientific-notation
|
|
38
|
+
* ceilings) produces a MISMATCH, which degrades to the historical
|
|
39
|
+
* targeted full-field read — a false-dirty row can never hide a real
|
|
40
|
+
* human edit. Known ceilings of the design itself: a human who replaces
|
|
41
|
+
* the check cell with a literal, a foreign formula, or a same-result copy
|
|
42
|
+
* of the system formula (the provider verifies the cell still holds the
|
|
43
|
+
* EXACT generated formula and reports no check evidence otherwise), and a
|
|
44
|
+
* hidden row below the last visible row; the periodic forceFull safety
|
|
45
|
+
* scan is the backstop, exactly like the scoped-preflight gaps documented
|
|
46
|
+
* in `preflightRows.ts`.
|
|
47
|
+
*/
|
|
48
|
+
import type { NormalizedCell } from "../encoding/types.js";
|
|
49
|
+
/**
|
|
50
|
+
* Header of the system-owned row-check column, written by provisioning
|
|
51
|
+
* directly after the registered range's last column of a User_Input tab.
|
|
52
|
+
* The cell is outside every registered range, so no existing read, hash,
|
|
53
|
+
* or blank-row rule ever sees it; only the check-column reader and the
|
|
54
|
+
* append formula writer touch it.
|
|
55
|
+
*/
|
|
56
|
+
export declare const SYNC_ROW_CHECK_HEADER = "__hikoutei_row_check";
|
|
57
|
+
/** Separator between positional tokens (never part of a token body). */
|
|
58
|
+
export declare const SYNC_ROW_CHECK_DELIMITER = "|";
|
|
59
|
+
/** Separator between a token's `<tag><length>` header and its body. */
|
|
60
|
+
export declare const SYNC_ROW_CHECK_LENGTH_SEPARATOR = ":";
|
|
61
|
+
/** Token type tags. A token is exactly `tag + charLength + ":" + body`. */
|
|
62
|
+
export declare const SYNC_ROW_CHECK_TOKEN_TAGS: {
|
|
63
|
+
/** Text — a blank or empty-string cell renders as the zero-length body. */
|
|
64
|
+
readonly STRING: "s";
|
|
65
|
+
/** Number — or date cell rendered as its numeric serial. */
|
|
66
|
+
readonly NUMBER: "n";
|
|
67
|
+
/** Boolean; body is `TRUE`/`FALSE` (what the Sheet concatenates). */
|
|
68
|
+
readonly BOOLEAN: "b";
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Builds one length-prefixed token. The length is the BODY's character
|
|
72
|
+
* count, so decoding (and any collision analysis) skips exactly that many
|
|
73
|
+
* characters after the `:` — the body may contain the delimiter, the tag
|
|
74
|
+
* characters, or digits without ever faking a boundary.
|
|
75
|
+
*/
|
|
76
|
+
export declare function rowCheckToken(tag: string, body: string): string;
|
|
77
|
+
/**
|
|
78
|
+
* Renders one normalized cell as its positional check TOKEN. Every column
|
|
79
|
+
* always contributes exactly one token (a blank or empty string renders as
|
|
80
|
+
* the zero-length `s` token), so the joined string is injective over the
|
|
81
|
+
* column vector. Numbers (and date serials) render in JavaScript standard
|
|
82
|
+
* form and booleans as `TRUE`/`FALSE`; the live experiment proved the
|
|
83
|
+
* Sheet's `&`-concatenation renders the tested int/decimal/bool values
|
|
84
|
+
* byte-for-byte identically, and any untested shape that disagrees renders
|
|
85
|
+
* as a MISMATCH — the safe direction (per-row targeted full-field read).
|
|
86
|
+
*/
|
|
87
|
+
export declare function renderRowCheckCell(cell: NormalizedCell): string;
|
|
88
|
+
/**
|
|
89
|
+
* Computes the expected row-check string from canonical field values in
|
|
90
|
+
* COLUMN ORDER. Returns `null` when any header's canonical value is not
|
|
91
|
+
* available — callers must treat a null expectation as "not derivable" and
|
|
92
|
+
* route the row through the historical full-field read instead of guessing.
|
|
93
|
+
* The result always carries one delimiter-separated token per header.
|
|
94
|
+
*/
|
|
95
|
+
export declare function computeRowCheckValue(headers: readonly string[], cellOf: (header: string) => NormalizedCell | undefined): string | null;
|
|
96
|
+
/**
|
|
97
|
+
* Excel/Sheets 1900-system serial for a canonical UTC ISO date: whole (or
|
|
98
|
+
* fractional) days since 1899-12-30 UTC. Same formula as the provider's
|
|
99
|
+
* `dateSerialFromIso`; the provider delegates here so the write-side cell
|
|
100
|
+
* value and the polling-side expected rendering can never drift.
|
|
101
|
+
*/
|
|
102
|
+
export declare function rowCheckDateSerialFromIso(iso: string): number;
|
|
103
|
+
//# sourceMappingURL=rowCheck.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowCheck.d.ts","sourceRoot":"","sources":["../../src/sheets/rowCheck.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAE5D,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,uEAAuE;AACvE,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,2EAA2E;AAC3E,eAAO,MAAM,yBAAyB;IACpC,2EAA2E;;IAE3E,4DAA4D;;IAE5D,qEAAqE;;CAE7D,CAAC;AAEX;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAwB/D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,GACrD,MAAM,GAAG,IAAI,CAQf;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Row-level change-detection check column (shared semantics leaf).
|
|
3
|
+
*
|
|
4
|
+
* The User_Input projection carries one extra column IMMEDIATELY AFTER the
|
|
5
|
+
* registered range holding a deterministic formula the system writes at row
|
|
6
|
+
* creation: a `&`-concatenation of one LENGTH-PREFIXED, TYPE-TAGGED token
|
|
7
|
+
* per user data column of the row (see {@link renderRowCheckCell}). The
|
|
8
|
+
* Sheet's recalculation engine maintains the cell, so a human edit to any
|
|
9
|
+
* data column changes the visible check string without any system
|
|
10
|
+
* involvement. Inbound polling then reads ONLY that column (plus the
|
|
11
|
+
* identity and system row-id bands for row mapping), compares each row's
|
|
12
|
+
* observed check string against the value SQLite derives deterministically
|
|
13
|
+
* from the canonical field state, and escalates only mismatched rows to a
|
|
14
|
+
* targeted full-field read. A match therefore skips the row's data columns
|
|
15
|
+
* entirely.
|
|
16
|
+
*
|
|
17
|
+
* This module is the SINGLE source for the token semantics both sides must
|
|
18
|
+
* share: the provider builds the formula from the same delimiter/tag
|
|
19
|
+
* constants, and the polling side renders the expected string with
|
|
20
|
+
* {@link computeRowCheckValue}. The encoding is INJECTIVE (collision-free)
|
|
21
|
+
* and type-aware by construction:
|
|
22
|
+
*
|
|
23
|
+
* - every column contributes EXACTLY ONE positional token
|
|
24
|
+
* `<typeTag><charLength>:<renderedValue>`, so the length prefix (not the
|
|
25
|
+
* delimiter) defines token boundaries: a delimiter INSIDE a value
|
|
26
|
+
* (["a|b", "c"] vs ["a", "b|c"]) can never fake a boundary;
|
|
27
|
+
* - blank permutations cannot collapse: a value moved across a blank
|
|
28
|
+
* boundary changes which POSITION carries the text (`"z"|""` vs
|
|
29
|
+
* `""|"z"` render `s1:z|s0:`, never the same string);
|
|
30
|
+
* - the first character of every token is its type tag (`s` text — also
|
|
31
|
+
* blank/empty string, which are visually identical in a Sheet; `n`
|
|
32
|
+
* number or date serial; `b` boolean), so the string "12" (`s2:12`)
|
|
33
|
+
* never equals the number 12 (`n2:12`).
|
|
34
|
+
*
|
|
35
|
+
* Safety direction: every renderer disagreement (a Sheet locale that
|
|
36
|
+
* renders a decimal with a comma, an emoji whose Sheet LEN counts code
|
|
37
|
+
* points while JavaScript counts UTF-16 units, scientific-notation
|
|
38
|
+
* ceilings) produces a MISMATCH, which degrades to the historical
|
|
39
|
+
* targeted full-field read — a false-dirty row can never hide a real
|
|
40
|
+
* human edit. Known ceilings of the design itself: a human who replaces
|
|
41
|
+
* the check cell with a literal, a foreign formula, or a same-result copy
|
|
42
|
+
* of the system formula (the provider verifies the cell still holds the
|
|
43
|
+
* EXACT generated formula and reports no check evidence otherwise), and a
|
|
44
|
+
* hidden row below the last visible row; the periodic forceFull safety
|
|
45
|
+
* scan is the backstop, exactly like the scoped-preflight gaps documented
|
|
46
|
+
* in `preflightRows.ts`.
|
|
47
|
+
*/
|
|
48
|
+
/**
|
|
49
|
+
* Header of the system-owned row-check column, written by provisioning
|
|
50
|
+
* directly after the registered range's last column of a User_Input tab.
|
|
51
|
+
* The cell is outside every registered range, so no existing read, hash,
|
|
52
|
+
* or blank-row rule ever sees it; only the check-column reader and the
|
|
53
|
+
* append formula writer touch it.
|
|
54
|
+
*/
|
|
55
|
+
export const SYNC_ROW_CHECK_HEADER = "__hikoutei_row_check";
|
|
56
|
+
/** Separator between positional tokens (never part of a token body). */
|
|
57
|
+
export const SYNC_ROW_CHECK_DELIMITER = "|";
|
|
58
|
+
/** Separator between a token's `<tag><length>` header and its body. */
|
|
59
|
+
export const SYNC_ROW_CHECK_LENGTH_SEPARATOR = ":";
|
|
60
|
+
/** Token type tags. A token is exactly `tag + charLength + ":" + body`. */
|
|
61
|
+
export const SYNC_ROW_CHECK_TOKEN_TAGS = {
|
|
62
|
+
/** Text — a blank or empty-string cell renders as the zero-length body. */
|
|
63
|
+
STRING: "s",
|
|
64
|
+
/** Number — or date cell rendered as its numeric serial. */
|
|
65
|
+
NUMBER: "n",
|
|
66
|
+
/** Boolean; body is `TRUE`/`FALSE` (what the Sheet concatenates). */
|
|
67
|
+
BOOLEAN: "b",
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Builds one length-prefixed token. The length is the BODY's character
|
|
71
|
+
* count, so decoding (and any collision analysis) skips exactly that many
|
|
72
|
+
* characters after the `:` — the body may contain the delimiter, the tag
|
|
73
|
+
* characters, or digits without ever faking a boundary.
|
|
74
|
+
*/
|
|
75
|
+
export function rowCheckToken(tag, body) {
|
|
76
|
+
return `${tag}${body.length}${SYNC_ROW_CHECK_LENGTH_SEPARATOR}${body}`;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Renders one normalized cell as its positional check TOKEN. Every column
|
|
80
|
+
* always contributes exactly one token (a blank or empty string renders as
|
|
81
|
+
* the zero-length `s` token), so the joined string is injective over the
|
|
82
|
+
* column vector. Numbers (and date serials) render in JavaScript standard
|
|
83
|
+
* form and booleans as `TRUE`/`FALSE`; the live experiment proved the
|
|
84
|
+
* Sheet's `&`-concatenation renders the tested int/decimal/bool values
|
|
85
|
+
* byte-for-byte identically, and any untested shape that disagrees renders
|
|
86
|
+
* as a MISMATCH — the safe direction (per-row targeted full-field read).
|
|
87
|
+
*/
|
|
88
|
+
export function renderRowCheckCell(cell) {
|
|
89
|
+
if (cell === null)
|
|
90
|
+
return rowCheckToken(SYNC_ROW_CHECK_TOKEN_TAGS.STRING, "");
|
|
91
|
+
switch (cell.kind) {
|
|
92
|
+
case "string":
|
|
93
|
+
// A stored empty string and a blank cell are visually identical in a
|
|
94
|
+
// Sheet (both concatenate to "" and count as length 0); the Sheet-side
|
|
95
|
+
// formula agrees with this equivalence.
|
|
96
|
+
return rowCheckToken(SYNC_ROW_CHECK_TOKEN_TAGS.STRING, cell.value);
|
|
97
|
+
case "number":
|
|
98
|
+
return rowCheckToken(SYNC_ROW_CHECK_TOKEN_TAGS.NUMBER, String(cell.value));
|
|
99
|
+
case "boolean":
|
|
100
|
+
return rowCheckToken(SYNC_ROW_CHECK_TOKEN_TAGS.BOOLEAN, cell.value ? "TRUE" : "FALSE");
|
|
101
|
+
case "date": {
|
|
102
|
+
// A date cell holds a numeric serial (with a display format); the
|
|
103
|
+
// Sheet formula sees ISNUMBER and concatenates the bare serial.
|
|
104
|
+
return rowCheckToken(SYNC_ROW_CHECK_TOKEN_TAGS.NUMBER, String(rowCheckDateSerialFromIso(cell.value)));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Computes the expected row-check string from canonical field values in
|
|
110
|
+
* COLUMN ORDER. Returns `null` when any header's canonical value is not
|
|
111
|
+
* available — callers must treat a null expectation as "not derivable" and
|
|
112
|
+
* route the row through the historical full-field read instead of guessing.
|
|
113
|
+
* The result always carries one delimiter-separated token per header.
|
|
114
|
+
*/
|
|
115
|
+
export function computeRowCheckValue(headers, cellOf) {
|
|
116
|
+
const parts = [];
|
|
117
|
+
for (const header of headers) {
|
|
118
|
+
const cell = cellOf(header);
|
|
119
|
+
if (cell === undefined)
|
|
120
|
+
return null;
|
|
121
|
+
parts.push(renderRowCheckCell(cell));
|
|
122
|
+
}
|
|
123
|
+
return parts.join(SYNC_ROW_CHECK_DELIMITER);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Excel/Sheets 1900-system serial for a canonical UTC ISO date: whole (or
|
|
127
|
+
* fractional) days since 1899-12-30 UTC. Same formula as the provider's
|
|
128
|
+
* `dateSerialFromIso`; the provider delegates here so the write-side cell
|
|
129
|
+
* value and the polling-side expected rendering can never drift.
|
|
130
|
+
*/
|
|
131
|
+
export function rowCheckDateSerialFromIso(iso) {
|
|
132
|
+
return (Date.parse(iso) - Date.UTC(1899, 11, 30)) / 86_400_000;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=rowCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rowCheck.js","sourceRoot":"","sources":["../../src/sheets/rowCheck.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAIH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAE5D,wEAAwE;AACxE,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAE5C,uEAAuE;AACvE,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,yBAAyB,GAAG;IACvC,2EAA2E;IAC3E,MAAM,EAAE,GAAG;IACX,4DAA4D;IAC5D,MAAM,EAAE,GAAG;IACX,qEAAqE;IACrE,OAAO,EAAE,GAAG;CACJ,CAAC;AAEX;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY;IACrD,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,+BAA+B,GAAG,IAAI,EAAE,CAAC;AACzE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC,yBAAyB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9E,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ;YACX,qEAAqE;YACrE,uEAAuE;YACvE,wCAAwC;YACxC,OAAO,aAAa,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7E,KAAK,SAAS;YACZ,OAAO,aAAa,CAClB,yBAAyB,CAAC,OAAO,EACjC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAC9B,CAAC;QACJ,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,kEAAkE;YAClE,gEAAgE;YAChE,OAAO,aAAa,CAClB,yBAAyB,CAAC,MAAM,EAChC,MAAM,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC9C,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAA0B,EAC1B,MAAsD;IAEtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC;AACjE,CAAC"}
|
|
@@ -66,6 +66,18 @@ export interface EnsureSyncRowAnchorsResult {
|
|
|
66
66
|
export interface ReadSyncSnapshotRequest extends EnsureSyncRowAnchorsRequest {
|
|
67
67
|
/** Full metadata for reconciliation, or user-editable values for polling. */
|
|
68
68
|
readonly readMode?: SyncSnapshotReadMode;
|
|
69
|
+
/**
|
|
70
|
+
* Optional row-level scoping for the check-column polling gate. When
|
|
71
|
+
* present, a provider that supports it reads ONLY the header row plus
|
|
72
|
+
* row bands covering these 1-based physical row numbers (multi-range
|
|
73
|
+
* bands of the registered span) instead of the whole table, and returns
|
|
74
|
+
* a snapshot containing just the banded nonblank rows. Providers without
|
|
75
|
+
* the capability ignore the field and return the historical whole-table
|
|
76
|
+
* snapshot, which stays correct (a superset of rows the caller asked
|
|
77
|
+
* for); callers only send rowNumbers to providers that expose
|
|
78
|
+
* {@link isSyncSheetsRowChecksReader}.
|
|
79
|
+
*/
|
|
80
|
+
readonly rowNumbers?: readonly number[];
|
|
69
81
|
}
|
|
70
82
|
/** Result of one combined anchor assignment and snapshot read. */
|
|
71
83
|
export interface SyncObservedSnapshot {
|
|
@@ -296,7 +308,69 @@ export interface SyncTableRowsResult {
|
|
|
296
308
|
export interface SyncSheetsTableReader {
|
|
297
309
|
readRows(request: ReadSyncTableRowsRequest): Promise<SyncTableRowsResult>;
|
|
298
310
|
readRowsBatch(requests: readonly ReadSyncTableRowsRequest[]): Promise<readonly SyncTableRowsResult[]>;
|
|
311
|
+
/**
|
|
312
|
+
* Optional narrow row-check read backing the formula check-column polling
|
|
313
|
+
* gate (see `sheets/rowCheck.ts`). Providers without the capability (fake
|
|
314
|
+
* providers, non-Sheets adapters) leave it undefined; polling then keeps
|
|
315
|
+
* the historical values-only whole-table preflight.
|
|
316
|
+
*/
|
|
317
|
+
readRowChecksBatch?: (requests: readonly ReadSyncRowChecksRequest[]) => Promise<readonly SyncRowChecksResult[]>;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Request for the narrow row-check read of one registered User_Input tab:
|
|
321
|
+
* ONLY the identity column, the system row-id (anchor) column, and the
|
|
322
|
+
* check column (three column bands in one ranged read). `identityField`
|
|
323
|
+
* names the header whose column the provider maps rows with; it must be
|
|
324
|
+
* one of the route's registered headers.
|
|
325
|
+
*/
|
|
326
|
+
export interface ReadSyncRowChecksRequest {
|
|
327
|
+
readonly physicalSheetId: string;
|
|
328
|
+
readonly sheetName: string;
|
|
329
|
+
readonly registeredRange: string;
|
|
330
|
+
readonly projection: SyncProjection;
|
|
331
|
+
readonly schemaVersion: number;
|
|
332
|
+
readonly identityField: string;
|
|
333
|
+
}
|
|
334
|
+
/** One visible row of the narrow check read (row mapping + check string). */
|
|
335
|
+
export interface SyncRowCheckRow {
|
|
336
|
+
readonly rowNumber: number;
|
|
337
|
+
/** Identity cell under values-only (getValues) normalization. */
|
|
338
|
+
readonly identity: NormalizedCell;
|
|
339
|
+
/**
|
|
340
|
+
* System row-id (anchor) column value, ABSENT when the cell is blank.
|
|
341
|
+
* The polling gate compares it against the binding's anchor reference
|
|
342
|
+
* and escalates any deletion/duplication/misplacement to the
|
|
343
|
+
* whole-table observation.
|
|
344
|
+
*/
|
|
345
|
+
readonly anchor: Presence<string>;
|
|
346
|
+
/**
|
|
347
|
+
* Computed check-column display string, PRESENT only when the check cell
|
|
348
|
+
* still carries the EXACT system-generated formula for this row (formula
|
|
349
|
+
* provenance). A blank cell, a literal replacement, or a foreign formula
|
|
350
|
+
* yields ABSENT — "no check evidence" — so a pasted stale string can
|
|
351
|
+
* never pass the gate; callers treat absent as a mismatch.
|
|
352
|
+
*/
|
|
353
|
+
readonly check: Presence<string>;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Result of one narrow check read. `status` is `checks_unavailable` when
|
|
357
|
+
* the tab is not provisioned with the check column (missing or foreign
|
|
358
|
+
* header cell), so polling falls back to the historical whole-table read
|
|
359
|
+
* for that tab (mixed mode); rows remain listed so the provider's answer
|
|
360
|
+
* is still a complete observation of the bands it read.
|
|
361
|
+
*/
|
|
362
|
+
export interface SyncRowChecksResult {
|
|
363
|
+
readonly sheetName: string;
|
|
364
|
+
readonly registeredRange: string;
|
|
365
|
+
readonly status: "checks_available" | "checks_unavailable";
|
|
366
|
+
readonly rows: readonly SyncRowCheckRow[];
|
|
367
|
+
}
|
|
368
|
+
/** Providers that can answer the narrow check-column read (the polling gate). */
|
|
369
|
+
export interface SyncSheetsRowChecksReader {
|
|
370
|
+
readRowChecksBatch(requests: readonly ReadSyncRowChecksRequest[]): Promise<readonly SyncRowChecksResult[]>;
|
|
299
371
|
}
|
|
372
|
+
/** Returns whether a table reader also exposes the narrow row-check read. */
|
|
373
|
+
export declare function isSyncSheetsRowChecksReader(provider: object): provider is SyncSheetsRowChecksReader;
|
|
300
374
|
/** Returns whether a full observation provider also exposes the values-only reader. */
|
|
301
375
|
export declare function isSyncSheetsTableReader(provider: SyncSheetsObservationProvider): provider is SyncSheetsObservationProvider & SyncSheetsTableReader;
|
|
302
376
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"syncSheets.d.ts","sourceRoot":"","sources":["../../src/sheets/syncSheets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"syncSheets.d.ts","sourceRoot":"","sources":["../../src/sheets/syncSheets.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,11 @@ export async function observeSyncSnapshots(provider, requests) {
|
|
|
40
40
|
}
|
|
41
41
|
return results;
|
|
42
42
|
}
|
|
43
|
+
/** Returns whether a table reader also exposes the narrow row-check read. */
|
|
44
|
+
export function isSyncSheetsRowChecksReader(provider) {
|
|
45
|
+
const candidate = provider;
|
|
46
|
+
return typeof candidate.readRowChecksBatch === "function";
|
|
47
|
+
}
|
|
43
48
|
/** Returns whether a full observation provider also exposes the values-only reader. */
|
|
44
49
|
export function isSyncSheetsTableReader(provider) {
|
|
45
50
|
return "readRows" in provider &&
|