@emseepea/server 0.24.0 → 0.25.0
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/dist/events-cloud-tasks-transport.d.ts +30 -0
- package/dist/events-cloud-tasks-transport.d.ts.map +1 -0
- package/dist/events-cloud-tasks-transport.js +213 -0
- package/dist/events-cloud-tasks-transport.js.map +1 -0
- package/dist/events-google-sdk-guards.d.ts +8 -0
- package/dist/events-google-sdk-guards.d.ts.map +1 -0
- package/dist/events-google-sdk-guards.js +31 -0
- package/dist/events-google-sdk-guards.js.map +1 -0
- package/dist/events-google-sdk-lifetime.d.ts +7 -0
- package/dist/events-google-sdk-lifetime.d.ts.map +1 -0
- package/dist/events-google-sdk-lifetime.js +70 -0
- package/dist/events-google-sdk-lifetime.js.map +1 -0
- package/dist/events-google-worker-runtime.d.ts +21 -0
- package/dist/events-google-worker-runtime.d.ts.map +1 -0
- package/dist/events-google-worker-runtime.js +149 -0
- package/dist/events-google-worker-runtime.js.map +1 -0
- package/dist/events-google-worker.d.ts +4 -0
- package/dist/events-google-worker.d.ts.map +1 -0
- package/dist/events-google-worker.js +3 -0
- package/dist/events-google-worker.js.map +1 -0
- package/dist/events-postgres-delivery-migrations.d.ts +18 -0
- package/dist/events-postgres-delivery-migrations.d.ts.map +1 -0
- package/dist/events-postgres-delivery-migrations.js +146 -0
- package/dist/events-postgres-delivery-migrations.js.map +1 -0
- package/dist/events-postgres-delivery-owned.d.ts +16 -0
- package/dist/events-postgres-delivery-owned.d.ts.map +1 -0
- package/dist/events-postgres-delivery-owned.js +178 -0
- package/dist/events-postgres-delivery-owned.js.map +1 -0
- package/dist/events-postgres-delivery.d.ts +29 -0
- package/dist/events-postgres-delivery.d.ts.map +1 -0
- package/dist/events-postgres-delivery.js +299 -0
- package/dist/events-postgres-delivery.js.map +1 -0
- package/dist/events-postgres-dispatch-migrations.d.ts +19 -0
- package/dist/events-postgres-dispatch-migrations.d.ts.map +1 -0
- package/dist/events-postgres-dispatch-migrations.js +162 -0
- package/dist/events-postgres-dispatch-migrations.js.map +1 -0
- package/dist/events-postgres-dispatch.d.ts +39 -0
- package/dist/events-postgres-dispatch.d.ts.map +1 -0
- package/dist/events-postgres-dispatch.js +270 -0
- package/dist/events-postgres-dispatch.js.map +1 -0
- package/dist/events-postgres-lifecycle-migrations.d.ts +17 -0
- package/dist/events-postgres-lifecycle-migrations.d.ts.map +1 -0
- package/dist/events-postgres-lifecycle-migrations.js +125 -0
- package/dist/events-postgres-lifecycle-migrations.js.map +1 -0
- package/dist/events-postgres-lifecycle.d.ts +13 -0
- package/dist/events-postgres-lifecycle.d.ts.map +1 -0
- package/dist/events-postgres-lifecycle.js +176 -0
- package/dist/events-postgres-lifecycle.js.map +1 -0
- package/dist/events-postgres-migrations.d.ts +32 -0
- package/dist/events-postgres-migrations.d.ts.map +1 -0
- package/dist/events-postgres-migrations.js +329 -0
- package/dist/events-postgres-migrations.js.map +1 -0
- package/dist/events-postgres-owned.d.ts +16 -0
- package/dist/events-postgres-owned.d.ts.map +1 -0
- package/dist/events-postgres-owned.js +161 -0
- package/dist/events-postgres-owned.js.map +1 -0
- package/dist/events-postgres.d.ts +53 -0
- package/dist/events-postgres.d.ts.map +1 -0
- package/dist/events-postgres.js +289 -0
- package/dist/events-postgres.js.map +1 -0
- package/dist/index.js +58 -9
- package/dist/index.js.map +1 -1
- package/package.json +33 -5
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export { GoogleEventTransportSetupError } from './events-google-sdk-guards.js';
|
|
2
|
+
import type { ExternalMcpEventInvocation } from './events-external.js';
|
|
3
|
+
import type { EventDispatchTransport } from './events-postgres-dispatch.js';
|
|
4
|
+
type Invocation = ExternalMcpEventInvocation;
|
|
5
|
+
export interface CloudTasksEventConfiguration {
|
|
6
|
+
readonly namespace: string;
|
|
7
|
+
readonly projectId: string;
|
|
8
|
+
readonly location: string;
|
|
9
|
+
readonly queueId: string;
|
|
10
|
+
readonly workerURL: string;
|
|
11
|
+
readonly audience: string;
|
|
12
|
+
readonly serviceAccountEmail: string;
|
|
13
|
+
readonly serviceAccountUid: string;
|
|
14
|
+
}
|
|
15
|
+
interface Credentials {
|
|
16
|
+
getRequestHeaders(url: string): Promise<Headers>;
|
|
17
|
+
}
|
|
18
|
+
interface Runtime {
|
|
19
|
+
graphSafe(): boolean;
|
|
20
|
+
loggingSafe(): boolean;
|
|
21
|
+
createAuth(projectId: string): {
|
|
22
|
+
getClient(): Promise<Credentials>;
|
|
23
|
+
};
|
|
24
|
+
fetch: typeof globalThis.fetch;
|
|
25
|
+
}
|
|
26
|
+
/** Private preparation seam; no public route or credential/provider override is exported by the package. */
|
|
27
|
+
export declare function createCloudTasksRestTransportRuntime(options: CloudTasksEventConfiguration, runtime?: Runtime): EventDispatchTransport & {
|
|
28
|
+
settle(invocation: Invocation): Promise<boolean>;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=events-cloud-tasks-transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-cloud-tasks-transport.d.ts","sourceRoot":"","sources":["../src/events-cloud-tasks-transport.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAI5E,KAAK,UAAU,GAAC,0BAA0B,CAAC;AAG3C,MAAM,WAAW,4BAA4B;IAC5C,QAAQ,CAAC,SAAS,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,SAAS,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,OAAO,EAAC,MAAM,CAAC;IACrG,QAAQ,CAAC,SAAS,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,QAAQ,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,mBAAmB,EAAC,MAAM,CAAC;IAAA,QAAQ,CAAC,iBAAiB,EAAC,MAAM,CAAC;CACzH;AACD,UAAU,WAAW;IAAE,iBAAiB,CAAC,GAAG,EAAC,MAAM,GAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAC;AACtE,UAAU,OAAO;IAChB,SAAS,IAAG,OAAO,CAAC;IAAA,WAAW,IAAG,OAAO,CAAC;IAC1C,UAAU,CAAC,SAAS,EAAC,MAAM,GAAE;QAAC,SAAS,IAAG,OAAO,CAAC,WAAW,CAAC,CAAA;KAAC,CAAC;IAChE,KAAK,EAAC,OAAO,UAAU,CAAC,KAAK,CAAC;CAC9B;AA6BD,4GAA4G;AAC5G,wBAAgB,oCAAoC,CAAC,OAAO,EAAC,4BAA4B,EAAC,OAAO,GAAC,OAAkB,GAAE,sBAAsB,GAAC;IAAC,MAAM,CAAC,UAAU,EAAC,UAAU,GAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAAC,CAmE5L"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { TextDecoder } from 'node:util';
|
|
3
|
+
import { GoogleAuth } from 'google-auth-library';
|
|
4
|
+
import { GoogleEventTransportSetupError, googleSdkGraphSafe, googleSdkLoggingSafe } from './events-google-sdk-guards.js';
|
|
5
|
+
export { GoogleEventTransportSetupError } from './events-google-sdk-guards.js';
|
|
6
|
+
import { createGoogleApiLifetime } from './events-google-sdk-lifetime.js';
|
|
7
|
+
const origin = 'https://cloudtasks.googleapis.com';
|
|
8
|
+
const requestLimit = 8192, responseLimit = 16384, bodyLimit = 1024;
|
|
9
|
+
const production = {
|
|
10
|
+
graphSafe: googleSdkGraphSafe,
|
|
11
|
+
loggingSafe: googleSdkLoggingSafe,
|
|
12
|
+
createAuth: projectId => new GoogleAuth({ projectId, universeDomain: 'googleapis.com', scopes: ['https://www.googleapis.com/auth/cloud-platform'] }),
|
|
13
|
+
fetch: (input, options) => globalThis.fetch(input, options),
|
|
14
|
+
};
|
|
15
|
+
const setup = (code) => { throw new GoogleEventTransportSetupError(code); };
|
|
16
|
+
const hasControl = (value) => { for (const character of value) {
|
|
17
|
+
const code = character.codePointAt(0);
|
|
18
|
+
if (code <= 31 || code === 127)
|
|
19
|
+
return true;
|
|
20
|
+
} return false; };
|
|
21
|
+
const text = (v, max) => typeof v === 'string' && v.length > 0 && Buffer.byteLength(v) <= max &&
|
|
22
|
+
!hasControl(v) && !/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(v);
|
|
23
|
+
const object = (v) => !!v && typeof v === 'object' && !Array.isArray(v) && Object.getPrototypeOf(v) === Object.prototype;
|
|
24
|
+
const keys = (v, allowed) => Object.keys(v).every(k => allowed.includes(k));
|
|
25
|
+
const noKeys = (v) => v === undefined || object(v) && Object.keys(v).length === 0;
|
|
26
|
+
function https(value) {
|
|
27
|
+
if (!text(value, 2048))
|
|
28
|
+
return setup('INVALID_CONFIGURATION');
|
|
29
|
+
try {
|
|
30
|
+
const url = new URL(value);
|
|
31
|
+
if (url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || url.port && url.port !== '443')
|
|
32
|
+
return setup('INVALID_CONFIGURATION');
|
|
33
|
+
return url.href;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return setup('INVALID_CONFIGURATION');
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function configure(value) {
|
|
40
|
+
if (!object(value) || !keys(value, ['namespace', 'projectId', 'location', 'queueId', 'workerURL', 'audience', 'serviceAccountEmail', 'serviceAccountUid']) ||
|
|
41
|
+
!text(value.namespace, 240) || typeof value.projectId !== 'string' || !/^[a-z][a-z0-9-]{4,28}[a-z0-9]$/.test(value.projectId) ||
|
|
42
|
+
typeof value.location !== 'string' || !/^[a-z][a-z0-9-]{0,62}$/.test(value.location) || typeof value.queueId !== 'string' || !/^[A-Za-z0-9_-]{1,100}$/.test(value.queueId) ||
|
|
43
|
+
typeof value.serviceAccountEmail !== 'string' || !/^[-a-z0-9.]{1,64}@[-a-z0-9.]{1,128}\.iam\.gserviceaccount\.com$/.test(value.serviceAccountEmail) ||
|
|
44
|
+
typeof value.serviceAccountUid !== 'string' || !/^[0-9]{1,40}$/.test(value.serviceAccountUid))
|
|
45
|
+
return setup('INVALID_CONFIGURATION');
|
|
46
|
+
const config = Object.freeze({ ...value, workerURL: https(value.workerURL), audience: https(value.audience) });
|
|
47
|
+
const queue = `projects/${config.projectId}/locations/${config.location}/queues/${config.queueId}`;
|
|
48
|
+
return { config, queue, fingerprint: createHash('sha256').update(JSON.stringify([config.namespace, queue, config.workerURL, config.audience, config.serviceAccountEmail, config.serviceAccountUid, 'POST', 1, 28])).digest('hex') };
|
|
49
|
+
}
|
|
50
|
+
/** Private preparation seam; no public route or credential/provider override is exported by the package. */
|
|
51
|
+
export function createCloudTasksRestTransportRuntime(options, runtime = production) {
|
|
52
|
+
const { config, queue, fingerprint } = configure(options), lifetime = createGoogleApiLifetime();
|
|
53
|
+
let disposalFailed = false;
|
|
54
|
+
const endpoint = `${origin}/v2/${queue.split('/').map(encodeURIComponent).join('/')}`;
|
|
55
|
+
const body = (deliveryId) => Buffer.from(JSON.stringify({ deliveryId }));
|
|
56
|
+
function descriptor(deliveryId, taskId) {
|
|
57
|
+
if (!text(deliveryId, 240) || !/^emseepea-[0-9a-f]{64}$/.test(taskId))
|
|
58
|
+
throw new Error('INVALID_TASK_IDENTITY');
|
|
59
|
+
const bytes = body(deliveryId);
|
|
60
|
+
if (bytes.length > bodyLimit)
|
|
61
|
+
throw new Error('TASK_BODY_TOO_LARGE');
|
|
62
|
+
return { name: `${queue}/tasks/${taskId}`, httpRequest: { httpMethod: 'POST', url: config.workerURL, headers: { 'Content-Type': 'application/json' }, body: bytes.toString('base64'),
|
|
63
|
+
oidcToken: { serviceAccountEmail: config.serviceAccountEmail, audience: config.audience } }, dispatchDeadline: '28s' };
|
|
64
|
+
}
|
|
65
|
+
function requestBody(deliveryId, taskId) { const bytes = Buffer.from(JSON.stringify({ task: descriptor(deliveryId, taskId), responseView: 'BASIC' })); if (bytes.length > requestLimit)
|
|
66
|
+
throw new Error('CREATE_REQUEST_TOO_LARGE'); return bytes; }
|
|
67
|
+
// Reject configurations whose worst valid escaped identifier can never meet the request cap.
|
|
68
|
+
try {
|
|
69
|
+
requestBody('\\'.repeat(240), 'emseepea-' + 'f'.repeat(64));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return setup('INVALID_CONFIGURATION');
|
|
73
|
+
}
|
|
74
|
+
const guards = () => { if (!runtime.graphSafe())
|
|
75
|
+
return setup('UNSUPPORTED_DEPENDENCY_GRAPH'); if (!runtime.loggingSafe())
|
|
76
|
+
return setup('UNSAFE_SDK_LOGGING'); };
|
|
77
|
+
guards();
|
|
78
|
+
const auth = runtime.createAuth(config.projectId);
|
|
79
|
+
async function read(response, check) {
|
|
80
|
+
if (!response.body)
|
|
81
|
+
throw new Error('EMPTY_GOOGLE_RESPONSE');
|
|
82
|
+
const reader = response.body.getReader();
|
|
83
|
+
let done = false, total = 0, value, failure;
|
|
84
|
+
const chunks = [];
|
|
85
|
+
try {
|
|
86
|
+
while (true) {
|
|
87
|
+
check();
|
|
88
|
+
const next = await reader.read();
|
|
89
|
+
check();
|
|
90
|
+
if (next.done) {
|
|
91
|
+
done = true;
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
total += next.value.byteLength;
|
|
95
|
+
if (total > responseLimit)
|
|
96
|
+
throw new Error('GOOGLE_RESPONSE_TOO_LARGE');
|
|
97
|
+
chunks.push(next.value);
|
|
98
|
+
}
|
|
99
|
+
value = JSON.parse(new TextDecoder('utf-8', { fatal: true }).decode(Buffer.concat(chunks, total)));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
failure = error;
|
|
103
|
+
}
|
|
104
|
+
if (!done)
|
|
105
|
+
try {
|
|
106
|
+
await reader.cancel();
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
disposalFailed = true;
|
|
110
|
+
failure = new Error('GOOGLE_STREAM_CLEANUP_FAILED');
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
reader.releaseLock();
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
disposalFailed = true;
|
|
117
|
+
}
|
|
118
|
+
if (failure)
|
|
119
|
+
throw failure;
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
async function request(path, method, data, invocation) {
|
|
123
|
+
if (data && data.length > requestLimit)
|
|
124
|
+
return null;
|
|
125
|
+
return lifetime.invoke(invocation, null, async (signal, check) => {
|
|
126
|
+
guards();
|
|
127
|
+
check();
|
|
128
|
+
const credentials = await auth.getClient();
|
|
129
|
+
check();
|
|
130
|
+
guards();
|
|
131
|
+
const supplied = await credentials.getRequestHeaders(origin);
|
|
132
|
+
check();
|
|
133
|
+
guards();
|
|
134
|
+
const authorization = supplied.get('authorization');
|
|
135
|
+
if (typeof authorization !== 'string' || authorization.length > 8192 || !/^Bearer [A-Za-z0-9._~+\x2f-]+=*$/.test(authorization))
|
|
136
|
+
throw new Error('GOOGLE_AUTH_UNAVAILABLE');
|
|
137
|
+
// Do not forward quota-project or arbitrary SDK headers into the configured queue request.
|
|
138
|
+
const headers = { Authorization: authorization };
|
|
139
|
+
if (data)
|
|
140
|
+
headers['Content-Type'] = 'application/json';
|
|
141
|
+
check();
|
|
142
|
+
const response = await runtime.fetch(path, { method, headers, redirect: 'manual', signal, ...(data ? { body: data.toString('utf8') } : {}) });
|
|
143
|
+
if (response.status >= 300 && response.status < 400) {
|
|
144
|
+
if (response.body)
|
|
145
|
+
await response.body.cancel();
|
|
146
|
+
throw new Error('GOOGLE_REDIRECT_REJECTED');
|
|
147
|
+
}
|
|
148
|
+
const value = await read(response, check);
|
|
149
|
+
check();
|
|
150
|
+
return { status: response.status, value };
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function matching(value, deliveryId, taskId) {
|
|
154
|
+
if (!object(value) || !keys(value, ['name', 'httpRequest', 'dispatchDeadline', 'scheduleTime', 'createTime', 'dispatchCount', 'responseCount', 'firstAttempt', 'lastAttempt', 'view']))
|
|
155
|
+
return false;
|
|
156
|
+
const wanted = descriptor(deliveryId, taskId), http = value.httpRequest;
|
|
157
|
+
if (value.name !== wanted.name || value.dispatchDeadline !== '28s' || !object(http) || !keys(http, ['httpMethod', 'url', 'headers', 'body', 'oidcToken']) || http.httpMethod !== 'POST' || http.url !== config.workerURL)
|
|
158
|
+
return false;
|
|
159
|
+
if (!object(http.oidcToken) || !keys(http.oidcToken, ['serviceAccountEmail', 'audience']) || http.oidcToken.serviceAccountEmail !== config.serviceAccountEmail || http.oidcToken.audience !== config.audience)
|
|
160
|
+
return false;
|
|
161
|
+
if (!object(http.headers) || Object.keys(http.headers).length !== 1 || Object.entries(http.headers).some(([name, value]) => name.toLowerCase() !== 'content-type' || value !== 'application/json'))
|
|
162
|
+
return false;
|
|
163
|
+
if (typeof http.body !== 'string' || http.body.length > 1400 || !/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(http.body))
|
|
164
|
+
return false;
|
|
165
|
+
const decoded = Buffer.from(http.body, 'base64');
|
|
166
|
+
return decoded.length <= bodyLimit && decoded.toString('base64') === http.body && decoded.equals(body(deliveryId));
|
|
167
|
+
}
|
|
168
|
+
return Object.freeze({
|
|
169
|
+
fingerprint,
|
|
170
|
+
async queue(invocation) {
|
|
171
|
+
const response = await request(endpoint, 'GET', undefined, invocation);
|
|
172
|
+
if (!response || response.status !== 200 || !object(response.value))
|
|
173
|
+
return 'unavailable';
|
|
174
|
+
const value = response.value;
|
|
175
|
+
return value.name === queue && value.state === 'RUNNING' && keys(value, ['name', 'state', 'rateLimits', 'retryConfig', 'purgeTime', 'taskTtl', 'tombstoneTtl', 'stackdriverLoggingConfig', 'httpTarget', 'appEngineRoutingOverride']) && noKeys(value.httpTarget) && noKeys(value.appEngineRoutingOverride) ? 'present' : 'unavailable';
|
|
176
|
+
},
|
|
177
|
+
async inspect(task, invocation) {
|
|
178
|
+
const { deliveryId, taskId } = task;
|
|
179
|
+
try {
|
|
180
|
+
descriptor(deliveryId, taskId);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return 'conflict';
|
|
184
|
+
}
|
|
185
|
+
const response = await request(`${endpoint}/tasks/${taskId}?responseView=FULL`, 'GET', undefined, invocation);
|
|
186
|
+
if (!response)
|
|
187
|
+
return 'unavailable';
|
|
188
|
+
if (response.status === 404)
|
|
189
|
+
return 'missing';
|
|
190
|
+
if (response.status !== 200)
|
|
191
|
+
return 'unavailable';
|
|
192
|
+
return matching(response.value, deliveryId, taskId) ? 'matching' : 'conflict';
|
|
193
|
+
},
|
|
194
|
+
async create(task, invocation) {
|
|
195
|
+
const { deliveryId, taskId } = task;
|
|
196
|
+
let bytes;
|
|
197
|
+
try {
|
|
198
|
+
bytes = requestBody(deliveryId, taskId);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return 'unavailable';
|
|
202
|
+
}
|
|
203
|
+
const response = await request(`${endpoint}/tasks`, 'POST', bytes, invocation);
|
|
204
|
+
if (!response || !object(response.value))
|
|
205
|
+
return 'unavailable';
|
|
206
|
+
if (response.status >= 200 && response.status < 300 && response.value.name === `${queue}/tasks/${taskId}`)
|
|
207
|
+
return 'created';
|
|
208
|
+
return response.status === 409 && object(response.value.error) && response.value.error.status === 'ALREADY_EXISTS' ? 'exists' : 'unavailable';
|
|
209
|
+
},
|
|
210
|
+
async settle(invocation) { return await lifetime.settle(invocation) && !disposalFailed; },
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=events-cloud-tasks-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-cloud-tasks-transport.js","sourceRoot":"","sources":["../src/events-cloud-tasks-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare class GoogleEventTransportSetupError extends Error {
|
|
2
|
+
readonly code: 'INVALID_CONFIGURATION' | 'UNSUPPORTED_DEPENDENCY_GRAPH' | 'UNSAFE_SDK_LOGGING';
|
|
3
|
+
constructor(code: 'INVALID_CONFIGURATION' | 'UNSUPPORTED_DEPENDENCY_GRAPH' | 'UNSAFE_SDK_LOGGING');
|
|
4
|
+
}
|
|
5
|
+
export declare function googleSdkGraphSafe(): boolean;
|
|
6
|
+
export declare const googleSdkLoggingSafe: () => boolean;
|
|
7
|
+
export declare function assertGoogleSdkSafe(): void;
|
|
8
|
+
//# sourceMappingURL=events-google-sdk-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-sdk-guards.d.ts","sourceRoot":"","sources":["../src/events-google-sdk-guards.ts"],"names":[],"mappings":"AAKA,qBAAa,8BAA+B,SAAQ,KAAK;IAC5C,QAAQ,CAAC,IAAI,EAAC,uBAAuB,GAAC,8BAA8B,GAAC,oBAAoB;gBAAhF,IAAI,EAAC,uBAAuB,GAAC,8BAA8B,GAAC,oBAAoB;CACrG;AACD,wBAAgB,kBAAkB,IAAG,OAAO,CAO3C;AACD,eAAO,MAAM,oBAAoB,eAAwH,CAAC;AAC1J,wBAAgB,mBAAmB,IAAG,IAAI,CAGzC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { realpathSync } from 'node:fs';
|
|
3
|
+
import { AuthClient } from 'google-auth-library';
|
|
4
|
+
import { log, placeholder } from 'google-logging-utils';
|
|
5
|
+
export class GoogleEventTransportSetupError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
constructor(code) {
|
|
8
|
+
super(code);
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.name = 'GoogleEventTransportSetupError';
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function googleSdkGraphSafe() {
|
|
14
|
+
try {
|
|
15
|
+
const here = createRequire(import.meta.url), auth = createRequire(here.resolve('google-auth-library'));
|
|
16
|
+
const metadata = createRequire(auth.resolve('gcp-metadata'));
|
|
17
|
+
const expected = realpathSync(here.resolve('google-logging-utils'));
|
|
18
|
+
return expected === realpathSync(auth.resolve('google-logging-utils')) && expected === realpathSync(metadata.resolve('google-logging-utils'));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export const googleSdkLoggingSafe = () => !process.env.DEBUG_AUTH && AuthClient.log === placeholder && log('auth') === placeholder && log('gcp-metadata') === placeholder;
|
|
25
|
+
export function assertGoogleSdkSafe() {
|
|
26
|
+
if (!googleSdkGraphSafe())
|
|
27
|
+
throw new GoogleEventTransportSetupError('UNSUPPORTED_DEPENDENCY_GRAPH');
|
|
28
|
+
if (!googleSdkLoggingSafe())
|
|
29
|
+
throw new GoogleEventTransportSetupError('UNSAFE_SDK_LOGGING');
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=events-google-sdk-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-sdk-guards.js","sourceRoot":"","sources":["../src/events-google-sdk-guards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAAC,UAAU,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,GAAG,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAErD,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACnC;IAArB,YAAqB,IAAgF;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAA9F,SAAI,GAAJ,IAAI,CAA4E;QAAc,IAAI,CAAC,IAAI,GAAC,gCAAgC,CAAC;IAAA,CAAC;CAC/J;AACD,MAAM,UAAU,kBAAkB;IACjC,IAAI,CAAC;QACJ,MAAM,IAAI,GAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,IAAI,GAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAClG,MAAM,QAAQ,GAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAClE,OAAO,QAAQ,KAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,IAAE,QAAQ,KAAG,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACzI,CAAC;IAAA,MAAK,CAAC;QAAA,OAAO,KAAK,CAAC;IAAA,CAAC;AACtB,CAAC;AACD,MAAM,CAAC,MAAM,oBAAoB,GAAC,GAAE,EAAE,CAAA,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAE,UAAU,CAAC,GAAG,KAAG,WAAW,IAAE,GAAG,CAAC,MAAM,CAAC,KAAG,WAAW,IAAE,GAAG,CAAC,cAAc,CAAC,KAAG,WAAW,CAAC;AAC1J,MAAM,UAAU,mBAAmB;IAClC,IAAG,CAAC,kBAAkB,EAAE;QAAC,MAAM,IAAI,8BAA8B,CAAC,8BAA8B,CAAC,CAAC;IAClG,IAAG,CAAC,oBAAoB,EAAE;QAAC,MAAM,IAAI,8BAA8B,CAAC,oBAAoB,CAAC,CAAC;AAC3F,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ExternalMcpEventInvocation } from './events-external.js';
|
|
2
|
+
/** Private ownership of exposed credential/fetch/body promises, never a cancellation guarantee. */
|
|
3
|
+
export declare function createGoogleApiLifetime(): {
|
|
4
|
+
invoke<T>(invocation: ExternalMcpEventInvocation, unavailable: T, work: (signal: AbortSignal, check: () => void) => Promise<T>): Promise<T>;
|
|
5
|
+
settle(invocation: ExternalMcpEventInvocation): Promise<boolean>;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=events-google-sdk-lifetime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-sdk-lifetime.d.ts","sourceRoot":"","sources":["../src/events-google-sdk-lifetime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,mGAAmG;AACnG,wBAAgB,uBAAuB;WAGxB,CAAC,cAAa,0BAA0B,eAAa,CAAC,QAAM,CAAC,MAAM,EAAC,WAAW,EAAC,KAAK,EAAC,MAAI,IAAI,KAAG,OAAO,CAAC,CAAC,CAAC,GAAE,OAAO,CAAC,CAAC,CAAC;uBAgB5G,0BAA0B,GAAE,OAAO,CAAC,OAAO,CAAC;EAYrE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { performance } from 'node:perf_hooks';
|
|
2
|
+
/** Private ownership of exposed credential/fetch/body promises, never a cancellation guarantee. */
|
|
3
|
+
export function createGoogleApiLifetime() {
|
|
4
|
+
const pending = new Set();
|
|
5
|
+
let closing = false;
|
|
6
|
+
return {
|
|
7
|
+
async invoke(invocation, unavailable, work) {
|
|
8
|
+
if (!invocation?.signal || !Number.isFinite(invocation.deadlineMs) || closing || invocation.signal.aborted || pending.size >= 2)
|
|
9
|
+
return unavailable;
|
|
10
|
+
const end = performance.now() + Math.min(3000, invocation.deadlineMs - Date.now());
|
|
11
|
+
if (end <= performance.now())
|
|
12
|
+
return unavailable;
|
|
13
|
+
const controller = new AbortController();
|
|
14
|
+
const check = () => { if (closing || controller.signal.aborted || invocation.signal.aborted || performance.now() >= end)
|
|
15
|
+
throw new Error('GOOGLE_OPERATION_UNAVAILABLE'); };
|
|
16
|
+
let timer, stop;
|
|
17
|
+
const actual = Promise.resolve().then(async () => { check(); return work(controller.signal, check); }).catch(() => { controller.abort(); return unavailable; });
|
|
18
|
+
pending.add(actual);
|
|
19
|
+
void actual.then(() => pending.delete(actual));
|
|
20
|
+
try {
|
|
21
|
+
const value = await Promise.race([actual, new Promise(resolve => {
|
|
22
|
+
timer = setTimeout(() => { controller.abort(); resolve(unavailable); }, Math.max(1, end - performance.now()));
|
|
23
|
+
stop = () => { controller.abort(); resolve(unavailable); };
|
|
24
|
+
invocation.signal.addEventListener('abort', stop, { once: true });
|
|
25
|
+
if (invocation.signal.aborted)
|
|
26
|
+
stop();
|
|
27
|
+
})]);
|
|
28
|
+
if (closing || invocation.signal.aborted || performance.now() >= end)
|
|
29
|
+
return unavailable;
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
if (timer)
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
if (stop)
|
|
36
|
+
invocation.signal.removeEventListener('abort', stop);
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
async settle(invocation) {
|
|
40
|
+
closing = true;
|
|
41
|
+
if (!invocation?.signal || !Number.isFinite(invocation.deadlineMs))
|
|
42
|
+
return false;
|
|
43
|
+
const end = performance.now() + Math.max(0, invocation.deadlineMs - Date.now());
|
|
44
|
+
while (pending.size) {
|
|
45
|
+
if (invocation.signal.aborted || performance.now() >= end)
|
|
46
|
+
return false;
|
|
47
|
+
let timer, stop;
|
|
48
|
+
try {
|
|
49
|
+
const complete = await Promise.race([Promise.allSettled(pending).then(() => true), new Promise(resolve => {
|
|
50
|
+
timer = setTimeout(() => resolve(false), Math.max(1, end - performance.now()));
|
|
51
|
+
stop = () => resolve(false);
|
|
52
|
+
invocation.signal.addEventListener('abort', stop, { once: true });
|
|
53
|
+
if (invocation.signal.aborted)
|
|
54
|
+
stop();
|
|
55
|
+
})]);
|
|
56
|
+
if (!complete)
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (timer)
|
|
61
|
+
clearTimeout(timer);
|
|
62
|
+
if (stop)
|
|
63
|
+
invocation.signal.removeEventListener('abort', stop);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return true;
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=events-google-sdk-lifetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-sdk-lifetime.js","sourceRoot":"","sources":["../src/events-google-sdk-lifetime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FastifyReply, FastifyRequest } from 'fastify';
|
|
2
|
+
import { OAuth2Client } from 'google-auth-library';
|
|
3
|
+
import { type PostgresEventDelivery, type PostgresEventDeliveryOptions } from './events-postgres-delivery.js';
|
|
4
|
+
import type { ExternalMcpEventInvocation } from './events-external.js';
|
|
5
|
+
interface WorkerIdentity {
|
|
6
|
+
readonly audience: string;
|
|
7
|
+
readonly serviceAccountEmail: string;
|
|
8
|
+
readonly serviceAccountUid: string;
|
|
9
|
+
}
|
|
10
|
+
export interface GoogleEventDeliveryWorkerOptions extends PostgresEventDeliveryOptions, WorkerIdentity {
|
|
11
|
+
}
|
|
12
|
+
export interface GoogleEventDeliveryWorker {
|
|
13
|
+
handle(request: FastifyRequest, reply: FastifyReply): Promise<void>;
|
|
14
|
+
settle(invocation: ExternalMcpEventInvocation): Promise<boolean>;
|
|
15
|
+
}
|
|
16
|
+
/** Explicitly register handle on a worker route, never on the public MCP route. */
|
|
17
|
+
export declare function createGoogleEventDeliveryWorker(options: GoogleEventDeliveryWorkerOptions): GoogleEventDeliveryWorker;
|
|
18
|
+
/** Private test seam. The public factory always uses Google verification and checked delivery. */
|
|
19
|
+
export declare function createGoogleEventDeliveryWorkerRuntime(options: WorkerIdentity, delivery: PostgresEventDelivery, auth: OAuth2Client): GoogleEventDeliveryWorker;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=events-google-worker-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-worker-runtime.d.ts","sourceRoot":"","sources":["../src/events-google-worker-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,YAAY,EAAC,cAAc,EAAC,MAAM,SAAS,CAAC;AACzD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AAGjD,OAAO,EAA6B,KAAK,qBAAqB,EAAC,KAAK,4BAA4B,EAAC,MAAM,+BAA+B,CAAC;AACvI,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,sBAAsB,CAAC;AAErE,UAAU,cAAc;IACvB,QAAQ,CAAC,QAAQ,EAAC,MAAM,CAAC;IACzB,QAAQ,CAAC,mBAAmB,EAAC,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAC,MAAM,CAAC;CAClC;AACD,MAAM,WAAW,gCAAiC,SAAQ,4BAA4B,EAAC,cAAc;CAAG;AACxG,MAAM,WAAW,yBAAyB;IACzC,MAAM,CAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAC,YAAY,GAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,UAAU,EAAC,0BAA0B,GAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/D;AAuBD,mFAAmF;AACnF,wBAAgB,+BAA+B,CAAC,OAAO,EAAC,gCAAgC,GAAE,yBAAyB,CAIlH;AACD,kGAAkG;AAClG,wBAAgB,sCAAsC,CAAC,OAAO,EAAC,cAAc,EAAC,QAAQ,EAAC,qBAAqB,EAAC,IAAI,EAAC,YAAY,GAAE,yBAAyB,CAgDxJ"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { performance } from 'node:perf_hooks';
|
|
2
|
+
import { OAuth2Client } from 'google-auth-library';
|
|
3
|
+
import { assertGoogleSdkSafe, GoogleEventTransportSetupError } from './events-google-sdk-guards.js';
|
|
4
|
+
import { createGoogleApiLifetime } from './events-google-sdk-lifetime.js';
|
|
5
|
+
import { createPostgresEventDelivery } from './events-postgres-delivery.js';
|
|
6
|
+
function hasControl(value) {
|
|
7
|
+
for (const character of value) {
|
|
8
|
+
const code = character.codePointAt(0);
|
|
9
|
+
if (code <= 31 || code === 127)
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
function identity(options) {
|
|
15
|
+
try {
|
|
16
|
+
const url = new URL(options.audience);
|
|
17
|
+
if (typeof options.audience !== 'string' || Buffer.byteLength(options.audience) > 2048 || hasControl(options.audience) ||
|
|
18
|
+
url.protocol !== 'https:' || url.username || url.password || url.search || url.hash || url.port && url.port !== '443' ||
|
|
19
|
+
typeof options.serviceAccountEmail !== 'string' || typeof options.serviceAccountUid !== 'string' ||
|
|
20
|
+
!/^[-a-z0-9.]{1,64}@[-a-z0-9.]{1,128}\.iam\.gserviceaccount\.com$/.test(options.serviceAccountEmail) ||
|
|
21
|
+
!/^[0-9]{1,40}$/.test(options.serviceAccountUid))
|
|
22
|
+
throw new Error();
|
|
23
|
+
return Object.freeze({ audience: options.audience, serviceAccountEmail: options.serviceAccountEmail, serviceAccountUid: options.serviceAccountUid });
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
throw new GoogleEventTransportSetupError('INVALID_CONFIGURATION');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function deliveryId(body) {
|
|
30
|
+
if (!body || typeof body !== 'object' || Object.getPrototypeOf(body) !== Object.prototype || Reflect.ownKeys(body).length !== 1)
|
|
31
|
+
return null;
|
|
32
|
+
const field = Object.getOwnPropertyDescriptor(body, 'deliveryId');
|
|
33
|
+
const value = field && 'value' in field ? field.value : undefined;
|
|
34
|
+
return typeof value === 'string' && value.length > 0 && Buffer.byteLength(value) <= 240 &&
|
|
35
|
+
!hasControl(value) && !/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(value) ? value : null;
|
|
36
|
+
}
|
|
37
|
+
/** Explicitly register handle on a worker route, never on the public MCP route. */
|
|
38
|
+
export function createGoogleEventDeliveryWorker(options) {
|
|
39
|
+
const configured = identity(options);
|
|
40
|
+
assertGoogleSdkSafe();
|
|
41
|
+
const delivery = createPostgresEventDelivery({ namespace: options.namespace, pool: options.pool, definitions: options.definitions, authorize: options.authorize });
|
|
42
|
+
return createGoogleEventDeliveryWorkerRuntime(configured, delivery, new OAuth2Client());
|
|
43
|
+
}
|
|
44
|
+
/** Private test seam. The public factory always uses Google verification and checked delivery. */
|
|
45
|
+
export function createGoogleEventDeliveryWorkerRuntime(options, delivery, auth) {
|
|
46
|
+
const configured = identity(options), authentication = createGoogleApiLifetime();
|
|
47
|
+
assertGoogleSdkSafe();
|
|
48
|
+
const pending = new Set(), controllers = new Set();
|
|
49
|
+
let closing = false;
|
|
50
|
+
async function handle(request, reply) {
|
|
51
|
+
if (closing) {
|
|
52
|
+
reply.code(503).send();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const controller = new AbortController(), end = performance.now() + 25000, deadlineMs = Date.now() + 25000;
|
|
56
|
+
const abort = () => controller.abort(), closed = () => { if (!reply.raw.writableFinished)
|
|
57
|
+
abort(); };
|
|
58
|
+
const timer = setTimeout(abort, 25000);
|
|
59
|
+
controllers.add(controller);
|
|
60
|
+
request.raw.once('aborted', abort);
|
|
61
|
+
reply.raw.once('close', closed);
|
|
62
|
+
if (request.raw.aborted || reply.raw.destroyed)
|
|
63
|
+
abort();
|
|
64
|
+
try {
|
|
65
|
+
const id = deliveryId(request.body);
|
|
66
|
+
if (id === null) {
|
|
67
|
+
reply.code(400).send();
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
const header = request.headers.authorization;
|
|
71
|
+
const authHeaders = request.raw.rawHeaders.filter((_, index) => index % 2 === 0 && request.raw.rawHeaders[index].toLowerCase() === 'authorization');
|
|
72
|
+
if (authHeaders.length !== 1 || typeof header !== 'string' || header.length > 8192 || !/^Bearer [A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/.test(header)) {
|
|
73
|
+
reply.code(401).send();
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const context = { signal: controller.signal, deadlineMs };
|
|
77
|
+
const allowed = await authentication.invoke(context, null, async (_signal, check) => {
|
|
78
|
+
assertGoogleSdkSafe();
|
|
79
|
+
check();
|
|
80
|
+
let ticket;
|
|
81
|
+
try {
|
|
82
|
+
ticket = await auth.verifyIdToken({ idToken: header.slice(7), audience: configured.audience });
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
check();
|
|
88
|
+
assertGoogleSdkSafe();
|
|
89
|
+
const claims = ticket.getPayload();
|
|
90
|
+
return !!claims && (claims.iss === 'https://accounts.google.com' || claims.iss === 'accounts.google.com') &&
|
|
91
|
+
claims.aud === configured.audience && claims.sub === configured.serviceAccountUid && claims.email === configured.serviceAccountEmail &&
|
|
92
|
+
claims.email_verified === true && Number.isFinite(claims.exp) && claims.exp * 1000 > Date.now();
|
|
93
|
+
});
|
|
94
|
+
if (closing || controller.signal.aborted || performance.now() >= end || allowed === null) {
|
|
95
|
+
reply.code(503).send();
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (!allowed) {
|
|
99
|
+
reply.code(401).send();
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const result = await delivery.deliver(id, context);
|
|
103
|
+
reply.code(result.outcome === 'terminal' ? 204 : 503).send();
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
if (!reply.sent)
|
|
107
|
+
reply.code(503).send();
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
controllers.delete(controller);
|
|
112
|
+
request.raw.removeListener('aborted', abort);
|
|
113
|
+
reply.raw.removeListener('close', closed);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return Object.freeze({
|
|
117
|
+
handle(request, reply) {
|
|
118
|
+
const operation = handle(request, reply);
|
|
119
|
+
pending.add(operation);
|
|
120
|
+
void operation.then(() => pending.delete(operation), () => pending.delete(operation));
|
|
121
|
+
return operation;
|
|
122
|
+
},
|
|
123
|
+
async settle(invocation) {
|
|
124
|
+
closing = true;
|
|
125
|
+
for (const controller of controllers)
|
|
126
|
+
controller.abort();
|
|
127
|
+
if (!invocation?.signal || !Number.isFinite(invocation.deadlineMs) || invocation.signal.aborted || invocation.deadlineMs <= Date.now())
|
|
128
|
+
return false;
|
|
129
|
+
const complete = Promise.all([authentication.settle(invocation), delivery.settle(invocation), Promise.allSettled(pending).then(() => true)]).then(results => results.every(Boolean), () => false);
|
|
130
|
+
let timer, stop;
|
|
131
|
+
try {
|
|
132
|
+
return await Promise.race([complete, new Promise(resolve => {
|
|
133
|
+
timer = setTimeout(() => resolve(false), Math.min(2147483647, Math.max(1, invocation.deadlineMs - Date.now())));
|
|
134
|
+
stop = () => resolve(false);
|
|
135
|
+
invocation.signal.addEventListener('abort', stop, { once: true });
|
|
136
|
+
if (invocation.signal.aborted)
|
|
137
|
+
stop();
|
|
138
|
+
})]);
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
if (timer)
|
|
142
|
+
clearTimeout(timer);
|
|
143
|
+
if (stop)
|
|
144
|
+
invocation.signal.removeEventListener('abort', stop);
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=events-google-worker-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-worker-runtime.js","sourceRoot":"","sources":["../src/events-google-worker-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createGoogleEventDeliveryWorker } from './events-google-worker-runtime.js';
|
|
2
|
+
export type { GoogleEventDeliveryWorker, GoogleEventDeliveryWorkerOptions } from './events-google-worker-runtime.js';
|
|
3
|
+
export { GoogleEventTransportSetupError } from './events-google-sdk-guards.js';
|
|
4
|
+
//# sourceMappingURL=events-google-worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-worker.d.ts","sourceRoot":"","sources":["../src/events-google-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,+BAA+B,EAAC,MAAM,mCAAmC,CAAC;AAClF,YAAY,EAAC,yBAAyB,EAAC,gCAAgC,EAAC,MAAM,mCAAmC,CAAC;AAClH,OAAO,EAAC,8BAA8B,EAAC,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events-google-worker.js","sourceRoot":"","sources":["../src/events-google-worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,+BAA+B,EAAC,MAAM,mCAAmC,CAAC;AAElF,OAAO,EAAC,8BAA8B,EAAC,MAAM,+BAA+B,CAAC"}
|