hikoutei 0.8.1 → 0.8.2
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 +4 -0
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts +23 -11
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js +26 -18
- package/dist/adapter/sheets/providers/google-sheets-api/GoogleSheetsApiSyncProvider.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts +24 -5
- package/dist/adapter/sheets/providers/google-sheets-api/constants.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js +24 -5
- package/dist/adapter/sheets/providers/google-sheets-api/constants.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts +8 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js +20 -0
- package/dist/adapter/sheets/providers/google-sheets-api/errors.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/index.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts +11 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js +12 -2
- package/dist/adapter/sheets/providers/google-sheets-api/model/valueNormalization.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts +19 -6
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js +52 -10
- package/dist/adapter/sheets/providers/google-sheets-api/operations/shared.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts +13 -0
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js +51 -3
- package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts +40 -4
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.d.ts.map +1 -1
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js +26 -20
- package/dist/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.js.map +1 -1
- package/dist/api/Hikoutei.d.ts.map +1 -1
- package/dist/api/Hikoutei.js +244 -30
- package/dist/api/Hikoutei.js.map +1 -1
- package/dist/api/internalEntityManager.d.ts.map +1 -1
- package/dist/api/internalEntityManager.js +152 -53
- package/dist/api/internalEntityManager.js.map +1 -1
- package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts +41 -0
- package/dist/application/sync/outbound/SheetsEffectDispatcher.d.ts.map +1 -1
- package/dist/application/sync/outbound/SheetsEffectDispatcher.js +85 -3
- package/dist/application/sync/outbound/SheetsEffectDispatcher.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js +39 -5
- package/dist/application/sync/outbound/reconciliation/ReconciliationScanner.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/diff.d.ts +19 -1
- package/dist/application/sync/outbound/reconciliation/diff.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/diff.js +60 -17
- package/dist/application/sync/outbound/reconciliation/diff.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/repair.d.ts +34 -3
- package/dist/application/sync/outbound/reconciliation/repair.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/repair.js +120 -47
- package/dist/application/sync/outbound/reconciliation/repair.js.map +1 -1
- package/dist/application/sync/outbound/reconciliation/shared.d.ts +20 -0
- package/dist/application/sync/outbound/reconciliation/shared.d.ts.map +1 -1
- package/dist/application/sync/outbound/reconciliation/shared.js +35 -0
- package/dist/application/sync/outbound/reconciliation/shared.js.map +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.d.ts +16 -0
- package/dist/application/sync/service/SyncPollingSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/SyncPollingSupervisor.js +24 -0
- package/dist/application/sync/service/SyncPollingSupervisor.js.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.d.ts.map +1 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js +26 -1
- package/dist/application/sync/service/SyncServiceBootstrap.js.map +1 -1
- package/dist/application/sync/service/effectSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/effectSupervisor.js +114 -9
- package/dist/application/sync/service/effectSupervisor.js.map +1 -1
- package/dist/application/sync/service/pollingSupervisor.d.ts +17 -0
- package/dist/application/sync/service/pollingSupervisor.d.ts.map +1 -1
- package/dist/application/sync/service/pollingSupervisor.js +103 -3
- package/dist/application/sync/service/pollingSupervisor.js.map +1 -1
- package/dist/application/sync/service/serviceOptions.d.ts.map +1 -1
- package/dist/application/sync/service/serviceOptions.js +28 -18
- package/dist/application/sync/service/serviceOptions.js.map +1 -1
- package/dist/application/sync/service/shutdown.d.ts.map +1 -1
- package/dist/application/sync/service/shutdown.js +6 -2
- package/dist/application/sync/service/shutdown.js.map +1 -1
- package/dist/application/sync/service/syncAutoStart.d.ts +71 -6
- package/dist/application/sync/service/syncAutoStart.d.ts.map +1 -1
- package/dist/application/sync/service/syncAutoStart.js +190 -23
- package/dist/application/sync/service/syncAutoStart.js.map +1 -1
- package/dist/application/sync/service/systemStateReadiness.d.ts +35 -0
- package/dist/application/sync/service/systemStateReadiness.d.ts.map +1 -0
- package/dist/application/sync/service/systemStateReadiness.js +51 -0
- package/dist/application/sync/service/systemStateReadiness.js.map +1 -0
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts +37 -1
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.d.ts.map +1 -1
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js +57 -3
- package/dist/application/sync/sheetsContract/mutationCoordinator/CoordinatedSheetsProvider.js.map +1 -1
- package/dist/application/sync/sheetsContract/transportOutcome.d.ts +32 -5
- package/dist/application/sync/sheetsContract/transportOutcome.d.ts.map +1 -1
- package/dist/application/sync/sheetsContract/transportOutcome.js +101 -7
- package/dist/application/sync/sheetsContract/transportOutcome.js.map +1 -1
- package/dist/internal/syncStatus.js +33 -2
- package/dist/internal/syncStatus.js.map +1 -1
- package/dist/shared/observability/index.d.ts +9 -0
- package/dist/shared/observability/index.d.ts.map +1 -0
- package/dist/shared/observability/index.js +9 -0
- package/dist/shared/observability/index.js.map +1 -0
- package/dist/shared/observability/internalLog.d.ts +175 -0
- package/dist/shared/observability/internalLog.d.ts.map +1 -0
- package/dist/shared/observability/internalLog.js +471 -0
- package/dist/shared/observability/internalLog.js.map +1 -0
- package/dist/shared/observability/logEvents.d.ts +96 -0
- package/dist/shared/observability/logEvents.d.ts.map +1 -0
- package/dist/shared/observability/logEvents.js +247 -0
- package/dist/shared/observability/logEvents.js.map +1 -0
- package/package.json +5 -4
|
@@ -4,18 +4,51 @@
|
|
|
4
4
|
*
|
|
5
5
|
* The provider class hands one immutable `GoogleSheetsApiProviderDeps` object
|
|
6
6
|
* to every operation function so the class stays a thin facade. Pacing
|
|
7
|
-
* (
|
|
8
|
-
* against the registered definition, and
|
|
9
|
-
* here because every operation shares
|
|
7
|
+
* (ONE request-start limiter shared by reads and writes), redacted
|
|
8
|
+
* telemetry, route validation against the registered definition, and
|
|
9
|
+
* batchUpdate reply validation live here because every operation shares
|
|
10
|
+
* them.
|
|
10
11
|
*/
|
|
11
12
|
import { SYNC_SHEETS_ERROR_CODES, SyncSheetsContractError, } from "../../../../../application/sync/sheetsContract/errors.js";
|
|
12
|
-
import { classifyTransportOutcome } from "../../../../../application/sync/sheetsContract/transportOutcome.js";
|
|
13
|
-
import { presentValue, absentValue } from "../../../../../shared/state/index.js";
|
|
14
|
-
import {
|
|
13
|
+
import { classifyTransportOutcome, sanitizeTransportRemoteCode } from "../../../../../application/sync/sheetsContract/transportOutcome.js";
|
|
14
|
+
import { presentValue, absentValue, PRESENCE_KINDS } from "../../../../../shared/state/index.js";
|
|
15
|
+
import { logHikouteiInternalEvent, } from "../../../../../shared/observability/internalLog.js";
|
|
16
|
+
import { HIKOUTEI_LOG_COMPONENTS, HIKOUTEI_LOG_EVENTS, } from "../../../../../shared/observability/logEvents.js";
|
|
17
|
+
import { GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES, GoogleSheetsApiTransportError, invalidProviderState, } from "../errors.js";
|
|
15
18
|
import { batchUpdateResponseShapeSchema } from "../model/rawResponseSchemas.js";
|
|
19
|
+
/**
|
|
20
|
+
* Static, redacted refusal message. Never embeds effect ids, sheet names,
|
|
21
|
+
* spreadsheet ids, or limiter state: the durable worker only needs the
|
|
22
|
+
* stable code to requeue through the CAS/recovery path.
|
|
23
|
+
*/
|
|
24
|
+
const REQUEST_START_REFUSED_MESSAGE = "Google Sheets API request start refused before transport: the shared pacing queue exceeds the bounded admission wait.";
|
|
25
|
+
/**
|
|
26
|
+
* Acquires one bounded request-start slot, refusing (and logging one
|
|
27
|
+
* redacted event) when the predicted wait exceeds the configured bound.
|
|
28
|
+
* A refusal NEVER advances the limiter horizon and throws the stable
|
|
29
|
+
* delivery-uncertain transport error before any SDK call, so the durable
|
|
30
|
+
* worker requeues instead of firing an unpaced burst.
|
|
31
|
+
*/
|
|
32
|
+
async function admitRequestStart(deps, operation) {
|
|
33
|
+
const admission = await deps.requestLimiter.waitForSlot(deps.maxRequestStartWaitMs);
|
|
34
|
+
if (admission.status !== "refused")
|
|
35
|
+
return;
|
|
36
|
+
// Boundary record for a locally refused start: only the stable code is
|
|
37
|
+
// logged (retryable, like the other delivery-uncertain buckets), never a
|
|
38
|
+
// message, payload, id, or URL.
|
|
39
|
+
logHikouteiInternalEvent({
|
|
40
|
+
event: HIKOUTEI_LOG_EVENTS.TRANSPORT_REQUEST_FAILED,
|
|
41
|
+
level: "warn",
|
|
42
|
+
component: HIKOUTEI_LOG_COMPONENTS.TRANSPORT,
|
|
43
|
+
code: GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES.REQUEST_START_REFUSED,
|
|
44
|
+
errorClass: "GoogleSheetsApiTransportError",
|
|
45
|
+
retryable: true,
|
|
46
|
+
});
|
|
47
|
+
throw new GoogleSheetsApiTransportError(GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES.REQUEST_START_REFUSED, REQUEST_START_REFUSED_MESSAGE, absentValue(), absentValue());
|
|
48
|
+
}
|
|
16
49
|
/** Paces ONE `getSpreadsheet` transport call and emits one read event. */
|
|
17
50
|
export async function runRead(deps, task) {
|
|
18
|
-
await deps
|
|
51
|
+
await admitRequestStart(deps, "getSpreadsheet");
|
|
19
52
|
const startedAt = deps.now();
|
|
20
53
|
try {
|
|
21
54
|
const result = await task();
|
|
@@ -30,7 +63,7 @@ export async function runRead(deps, task) {
|
|
|
30
63
|
}
|
|
31
64
|
/** Paces ONE `batchUpdate` transport call and emits one write event. */
|
|
32
65
|
export async function runWrite(deps, task) {
|
|
33
|
-
await deps
|
|
66
|
+
await admitRequestStart(deps, "batchUpdate");
|
|
34
67
|
const startedAt = deps.now();
|
|
35
68
|
try {
|
|
36
69
|
const result = await task();
|
|
@@ -43,7 +76,14 @@ export async function runWrite(deps, task) {
|
|
|
43
76
|
throw error;
|
|
44
77
|
}
|
|
45
78
|
}
|
|
46
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Emits one redacted telemetry event; diagnostics must never throw.
|
|
81
|
+
*
|
|
82
|
+
* The code is re-sanitized at the sink as defense in depth: every value
|
|
83
|
+
* reaching `onRequest` is either an allowlisted stable code or the fixed
|
|
84
|
+
* `unknown` category, so a future caller can never forward an arbitrary
|
|
85
|
+
* remote string.
|
|
86
|
+
*/
|
|
47
87
|
export function emitRequest(deps, operation, operationCount, startedAt, ok, httpStatus, code) {
|
|
48
88
|
try {
|
|
49
89
|
deps.onRequest?.({
|
|
@@ -53,7 +93,9 @@ export function emitRequest(deps, operation, operationCount, startedAt, ok, http
|
|
|
53
93
|
durationMs: Math.max(0, deps.now() - startedAt),
|
|
54
94
|
ok,
|
|
55
95
|
httpStatus,
|
|
56
|
-
code
|
|
96
|
+
code: code.kind === PRESENCE_KINDS.PRESENT
|
|
97
|
+
? presentValue(sanitizeTransportRemoteCode(code.value))
|
|
98
|
+
: code,
|
|
57
99
|
});
|
|
58
100
|
}
|
|
59
101
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/operations/shared.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/operations/shared.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts
CHANGED
|
@@ -143,6 +143,19 @@ export declare class GoogleSheetsApiHttpTransport implements GoogleSheetsApiTran
|
|
|
143
143
|
* never as a proven pre-mutation rejection.
|
|
144
144
|
*/
|
|
145
145
|
export declare function classifyGoogleSheetsApiError(error: unknown): GoogleSheetsApiTransportError;
|
|
146
|
+
/**
|
|
147
|
+
* True when the status kind marks a transient remote condition.
|
|
148
|
+
*
|
|
149
|
+
* Mirrors the shared `isGoogleSheetsApiDeliveryUncertain` boundary: an
|
|
150
|
+
* absent status (timeout/network), HTTP 408 (request timeout — the proxy or
|
|
151
|
+
* API may still have committed the write), HTTP 429, and every 5xx are
|
|
152
|
+
* retryable/uncertain; the proven pre-mutation 4xx rejections (400, 401,
|
|
153
|
+
* 403, 404) are not. This only buckets telemetry — gaxios auto-retry stays
|
|
154
|
+
* disabled (`retry: false`), so a mutating call is never blindly retried
|
|
155
|
+
* here; the durable worker owns retries through the shared outcome
|
|
156
|
+
* classifier.
|
|
157
|
+
*/
|
|
158
|
+
export declare function isRetryableTransportStatus(status: number | undefined): boolean;
|
|
146
159
|
/**
|
|
147
160
|
* Builds the SDK batchUpdate body from provider write requests. The SDK
|
|
148
161
|
* request union is wider than the provider's narrow shapes; this boundary
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleSheetsApiTransport.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"googleSheetsApiTransport.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js
CHANGED
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { GoogleAuth } from "google-auth-library";
|
|
12
12
|
import { sheets } from "@googleapis/sheets";
|
|
13
|
-
import { presentValue, absentValue } from "../../../../../shared/state/index.js";
|
|
13
|
+
import { presentValue, absentValue, PRESENCE_KINDS } from "../../../../../shared/state/index.js";
|
|
14
|
+
import { logHikouteiInternalEvent, } from "../../../../../shared/observability/internalLog.js";
|
|
15
|
+
import { HIKOUTEI_LOG_COMPONENTS, HIKOUTEI_LOG_EVENTS, } from "../../../../../shared/observability/logEvents.js";
|
|
14
16
|
import { GOOGLE_SHEETS_API_SCOPES } from "../constants.js";
|
|
15
17
|
import { GOOGLE_SHEETS_API_TRANSPORT_ERROR_CODES, GoogleSheetsApiTransportError, } from "../errors.js";
|
|
16
18
|
import { parseRawErrorRecord, parseRawErrorText, parseRawHttpStatus, } from "./rawErrorSchemas.js";
|
|
@@ -46,7 +48,9 @@ export class GoogleSheetsApiHttpTransport {
|
|
|
46
48
|
return response.data;
|
|
47
49
|
}
|
|
48
50
|
catch (error) {
|
|
49
|
-
|
|
51
|
+
const mapped = classifyGoogleSheetsApiError(error);
|
|
52
|
+
logTransportFailure(mapped);
|
|
53
|
+
throw mapped;
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
56
|
async batchUpdate(request) {
|
|
@@ -61,7 +65,9 @@ export class GoogleSheetsApiHttpTransport {
|
|
|
61
65
|
return response.data;
|
|
62
66
|
}
|
|
63
67
|
catch (error) {
|
|
64
|
-
|
|
68
|
+
const mapped = classifyGoogleSheetsApiError(error);
|
|
69
|
+
logTransportFailure(mapped);
|
|
70
|
+
throw mapped;
|
|
65
71
|
}
|
|
66
72
|
}
|
|
67
73
|
}
|
|
@@ -91,6 +97,48 @@ export function classifyGoogleSheetsApiError(error) {
|
|
|
91
97
|
? absentValue()
|
|
92
98
|
: presentValue(shape.code));
|
|
93
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Emits one redacted transport-failure event (fail-open, no message text).
|
|
102
|
+
*
|
|
103
|
+
* Timeout, network, 429, 408, and 5xx failures are classified retryable so
|
|
104
|
+
* log consumers can bucket transient Sheets quota/pacing pressure; proven
|
|
105
|
+
* pre-mutation 4xx status codes (400/401/403/404) are not. The HTTP status
|
|
106
|
+
* is carried as a numeric count only; the spreadsheet ID, URL, and response
|
|
107
|
+
* body never reach the log.
|
|
108
|
+
*/
|
|
109
|
+
function logTransportFailure(error) {
|
|
110
|
+
const status = error.status.kind === PRESENCE_KINDS.PRESENT
|
|
111
|
+
? error.status.value
|
|
112
|
+
: undefined;
|
|
113
|
+
logHikouteiInternalEvent({
|
|
114
|
+
event: HIKOUTEI_LOG_EVENTS.TRANSPORT_REQUEST_FAILED,
|
|
115
|
+
level: "warn",
|
|
116
|
+
component: HIKOUTEI_LOG_COMPONENTS.TRANSPORT,
|
|
117
|
+
code: error.code,
|
|
118
|
+
errorClass: "GoogleSheetsApiTransportError",
|
|
119
|
+
retryable: isRetryableTransportStatus(status),
|
|
120
|
+
...(status === undefined ? {} : { counts: { status } }),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* True when the status kind marks a transient remote condition.
|
|
125
|
+
*
|
|
126
|
+
* Mirrors the shared `isGoogleSheetsApiDeliveryUncertain` boundary: an
|
|
127
|
+
* absent status (timeout/network), HTTP 408 (request timeout — the proxy or
|
|
128
|
+
* API may still have committed the write), HTTP 429, and every 5xx are
|
|
129
|
+
* retryable/uncertain; the proven pre-mutation 4xx rejections (400, 401,
|
|
130
|
+
* 403, 404) are not. This only buckets telemetry — gaxios auto-retry stays
|
|
131
|
+
* disabled (`retry: false`), so a mutating call is never blindly retried
|
|
132
|
+
* here; the durable worker owns retries through the shared outcome
|
|
133
|
+
* classifier.
|
|
134
|
+
*/
|
|
135
|
+
export function isRetryableTransportStatus(status) {
|
|
136
|
+
if (status === undefined)
|
|
137
|
+
return true;
|
|
138
|
+
if (status === 408 || status === 429)
|
|
139
|
+
return true;
|
|
140
|
+
return status >= 500;
|
|
141
|
+
}
|
|
94
142
|
function extractGaxiosErrorShape(error) {
|
|
95
143
|
const record = parseRawErrorRecord(error);
|
|
96
144
|
if (record === undefined) {
|
package/dist/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleSheetsApiTransport.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAkB,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"googleSheetsApiTransport.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/googleSheetsApiTransport.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* Request-start interval limiter used by the direct Sheets provider.
|
|
3
3
|
*
|
|
4
4
|
* Google Sheets quota windows are per 100 seconds, so bursty request starts
|
|
5
|
-
* can exhaust
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* can exhaust the budget before the worker's own latency/backoff reacts. The
|
|
6
|
+
* provider keeps ONE shared limiter for reads AND writes, so combined
|
|
7
|
+
* read+write request starts are serialized: at most one transport call
|
|
8
|
+
* (getSpreadsheet or batchUpdate) can start per interval no matter how many
|
|
9
|
+
* operations race. An idle provider is never throttled; the limiter only
|
|
10
|
+
* waits the time remaining since the previous request START. Admission is
|
|
11
|
+
* BOUNDED: a caller whose slot lies more than `maxWaitMs` out is refused
|
|
12
|
+
* without reserving anything, so a burst of concurrent callers can never
|
|
13
|
+
* queue an arbitrarily long line of future reservations.
|
|
9
14
|
*/
|
|
10
15
|
export interface RequestStartLimiterOptions {
|
|
11
16
|
/** Minimum interval between two request starts of this limiter class. */
|
|
@@ -15,6 +20,24 @@ export interface RequestStartLimiterOptions {
|
|
|
15
20
|
/** Injectable sleep used while waiting for the next slot. */
|
|
16
21
|
readonly sleep?: (ms: number) => Promise<void>;
|
|
17
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Result of one BOUNDED `waitForSlot(maxWaitMs)` admission attempt.
|
|
25
|
+
*
|
|
26
|
+
* An admitted caller owns the reserved slot and waits `waitedMs`; a refused
|
|
27
|
+
* caller reserved NOTHING (the future slot stays available to later callers)
|
|
28
|
+
* and the limiter's `lastStartAt` is left untouched, so a refusal can never
|
|
29
|
+
* push the pacing horizon forward.
|
|
30
|
+
*/
|
|
31
|
+
export type RequestStartAdmission = {
|
|
32
|
+
readonly status: "admitted";
|
|
33
|
+
readonly waitedMs: number;
|
|
34
|
+
} | {
|
|
35
|
+
readonly status: "refused";
|
|
36
|
+
/** The wait the refused slot WOULD have required. */
|
|
37
|
+
readonly waitedMs: number;
|
|
38
|
+
/** The slot that was NOT reserved; still open to later callers. */
|
|
39
|
+
readonly nextStartAt: number;
|
|
40
|
+
};
|
|
18
41
|
/**
|
|
19
42
|
* Waits only the remaining interval since the previous request start.
|
|
20
43
|
*
|
|
@@ -43,5 +66,18 @@ export declare class RequestStartLimiter {
|
|
|
43
66
|
* has already passed waits zero (its reservation collapses to now).
|
|
44
67
|
*/
|
|
45
68
|
waitForSlot(): Promise<number>;
|
|
69
|
+
/**
|
|
70
|
+
* Bounded admission: waits for the next slot only when the predicted wait
|
|
71
|
+
* is at most `maxWaitMs`, otherwise returns a REFUSED result without
|
|
72
|
+
* reserving or advancing the future slot.
|
|
73
|
+
*
|
|
74
|
+
* The bound keeps an unbounded queue of concurrent callers from each
|
|
75
|
+
* reserving a distant future slot: with `maxWaitMs` equal to `intervalMs`
|
|
76
|
+
* the immediate caller and the one exactly one interval out are admitted
|
|
77
|
+
* and every later reservation is refused up front. A refusal never records
|
|
78
|
+
* a start, so the pacing horizon is unchanged and a later caller can still
|
|
79
|
+
* be admitted once time advances past the reserved slot.
|
|
80
|
+
*/
|
|
81
|
+
waitForSlot(maxWaitMs: number): Promise<RequestStartAdmission>;
|
|
46
82
|
}
|
|
47
83
|
//# sourceMappingURL=rateLimiter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimiter.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rateLimiter.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC1D;IACA,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEJ;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,WAAW,CAAqB;gBAErB,OAAO,EAAE,0BAA0B;IAStD,gEAAgE;IACzD,SAAS,IAAI,MAAM,GAAG,SAAS;IAItC;;;;;;;;;;;;OAYG;IACI,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IACrC;;;;;;;;;;;OAWG;IACI,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA+BtE"}
|
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
* Request-start interval limiter used by the direct Sheets provider.
|
|
3
3
|
*
|
|
4
4
|
* Google Sheets quota windows are per 100 seconds, so bursty request starts
|
|
5
|
-
* can exhaust
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
5
|
+
* can exhaust the budget before the worker's own latency/backoff reacts. The
|
|
6
|
+
* provider keeps ONE shared limiter for reads AND writes, so combined
|
|
7
|
+
* read+write request starts are serialized: at most one transport call
|
|
8
|
+
* (getSpreadsheet or batchUpdate) can start per interval no matter how many
|
|
9
|
+
* operations race. An idle provider is never throttled; the limiter only
|
|
10
|
+
* waits the time remaining since the previous request START. Admission is
|
|
11
|
+
* BOUNDED: a caller whose slot lies more than `maxWaitMs` out is refused
|
|
12
|
+
* without reserving anything, so a burst of concurrent callers can never
|
|
13
|
+
* queue an arbitrarily long line of future reservations.
|
|
9
14
|
*/
|
|
10
15
|
const DEFAULT_SLEEP = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
11
16
|
/**
|
|
@@ -31,30 +36,31 @@ export class RequestStartLimiter {
|
|
|
31
36
|
lastStart() {
|
|
32
37
|
return this.lastStartAt;
|
|
33
38
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
*
|
|
40
|
-
* The slot reservation happens SYNCHRONOUSLY before any await: each caller
|
|
41
|
-
* reserves the NEXT slot (`nextStart = max(now, lastStartAt + intervalMs)`)
|
|
42
|
-
* and records it immediately, so two concurrent waiters can never compute
|
|
43
|
-
* the same remaining time from the same `lastStartAt`, sleep together, and
|
|
44
|
-
* start at the same instant. A caller that arrives after its reserved slot
|
|
45
|
-
* has already passed waits zero (its reservation collapses to now).
|
|
46
|
-
*/
|
|
47
|
-
async waitForSlot() {
|
|
39
|
+
async waitForSlot(maxWaitMs) {
|
|
40
|
+
if (maxWaitMs !== undefined &&
|
|
41
|
+
(!Number.isSafeInteger(maxWaitMs) || maxWaitMs < 0)) {
|
|
42
|
+
throw new RangeError("maximum request-start wait must be a non-negative safe integer");
|
|
43
|
+
}
|
|
48
44
|
const now = this.now();
|
|
49
45
|
const nextStart = this.lastStartAt === undefined
|
|
50
46
|
? now
|
|
51
47
|
: Math.max(now, this.lastStartAt + this.intervalMs);
|
|
52
|
-
this.lastStartAt = nextStart;
|
|
53
48
|
const waited = Math.max(0, nextStart - now);
|
|
49
|
+
if (maxWaitMs !== undefined && waited > maxWaitMs) {
|
|
50
|
+
// Refused WITHOUT reserving: lastStartAt stays untouched, so a later
|
|
51
|
+
// bounded caller can still be admitted once the queue drains. The
|
|
52
|
+
// decision and the horizon read happen in the same synchronous tick
|
|
53
|
+
// as an admitted caller's reservation, so concurrent callers can never
|
|
54
|
+
// both see the same stale horizon and double-reserve a slot.
|
|
55
|
+
return { status: "refused", waitedMs: waited, nextStartAt: nextStart };
|
|
56
|
+
}
|
|
57
|
+
this.lastStartAt = nextStart;
|
|
54
58
|
if (waited > 0) {
|
|
55
59
|
await this.sleep(waited);
|
|
56
60
|
}
|
|
57
|
-
return
|
|
61
|
+
return maxWaitMs === undefined
|
|
62
|
+
? waited
|
|
63
|
+
: { status: "admitted", waitedMs: waited };
|
|
58
64
|
}
|
|
59
65
|
}
|
|
60
66
|
//# sourceMappingURL=rateLimiter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../../../../src/adapter/sheets/providers/google-sheets-api/transport/rateLimiter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,aAAa,GAAG,CAAC,EAAU,EAAiB,EAAE,CAClD,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AA6B1D;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IACb,UAAU,CAAS;IACnB,GAAG,CAAe;IAClB,KAAK,CAAgC;IAC9C,WAAW,CAAqB;IAExC,YAAmB,OAAmC;QACpD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,UAAU,CAAC,4DAA4D,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;IAC9C,CAAC;IAED,gEAAgE;IACzD,SAAS;QACd,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IA6BM,KAAK,CAAC,WAAW,CACtB,SAAkB;QAElB,IACE,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC,EACnD,CAAC;YACD,MAAM,IAAI,UAAU,CAAC,gEAAgE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS;YAC9C,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;QAC5C,IAAI,SAAS,KAAK,SAAS,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;YAClD,qEAAqE;YACrE,kEAAkE;YAClE,oEAAoE;YACpE,uEAAuE;YACvE,6DAA6D;YAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,SAAS,KAAK,SAAS;YAC5B,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC/C,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hikoutei.d.ts","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAEL,cAAc,EACd,KAAK,gCAAgC,EACtC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Hikoutei.d.ts","sourceRoot":"","sources":["../../src/api/Hikoutei.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAEL,cAAc,EACd,KAAK,gCAAgC,EACtC,MAAM,aAAa,CAAC;AAuBrB,sDAAsD;AACtD,MAAM,WAAW,wBAAwB;IACvC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,QAAQ;IACvB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AA+QD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,+BAA+B,EACzC,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,gCAAgC,CAAC,EAClE,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAChC,QAAQ,CAEV;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAMR;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,CAmBlF;AAED;;;;;;;;GAQG;AACH,wBAAsB,6BAA6B,CACjD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,QAAQ,CAAC,CAsCnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,QAAQ,CAAC,CA8BnB"}
|