patchwork-os 0.2.0-beta.9.canary.91 → 0.2.0-beta.9.canary.93

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.
Files changed (50) hide show
  1. package/dist/connectors/airtable.d.ts +130 -8
  2. package/dist/connectors/airtable.js +322 -18
  3. package/dist/connectors/airtable.js.map +1 -1
  4. package/dist/connectors/caldiy.d.ts +137 -0
  5. package/dist/connectors/caldiy.js +424 -0
  6. package/dist/connectors/caldiy.js.map +1 -0
  7. package/dist/connectors/circleci.d.ts +162 -0
  8. package/dist/connectors/circleci.js +576 -0
  9. package/dist/connectors/circleci.js.map +1 -0
  10. package/dist/connectors/cloudflare.d.ts +132 -0
  11. package/dist/connectors/cloudflare.js +622 -0
  12. package/dist/connectors/cloudflare.js.map +1 -0
  13. package/dist/connectors/connectorRegistry.js +79 -0
  14. package/dist/connectors/connectorRegistry.js.map +1 -1
  15. package/dist/connectors/gmail.js +14 -0
  16. package/dist/connectors/gmail.js.map +1 -1
  17. package/dist/connectors/grafana.d.ts +133 -0
  18. package/dist/connectors/grafana.js +478 -0
  19. package/dist/connectors/grafana.js.map +1 -0
  20. package/dist/connectors/monday.d.ts +62 -1
  21. package/dist/connectors/monday.js +131 -1
  22. package/dist/connectors/monday.js.map +1 -1
  23. package/dist/connectors/obsidian.d.ts +83 -0
  24. package/dist/connectors/obsidian.js +441 -0
  25. package/dist/connectors/obsidian.js.map +1 -0
  26. package/dist/connectors/paystack.d.ts +159 -0
  27. package/dist/connectors/paystack.js +607 -0
  28. package/dist/connectors/paystack.js.map +1 -0
  29. package/dist/connectors/pipedrive.d.ts +189 -0
  30. package/dist/connectors/pipedrive.js +559 -0
  31. package/dist/connectors/pipedrive.js.map +1 -0
  32. package/dist/connectors/posthog.d.ts +119 -0
  33. package/dist/connectors/posthog.js +479 -0
  34. package/dist/connectors/posthog.js.map +1 -0
  35. package/dist/connectors/resend.d.ts +131 -0
  36. package/dist/connectors/resend.js +529 -0
  37. package/dist/connectors/resend.js.map +1 -0
  38. package/dist/connectors/supabase.d.ts +92 -0
  39. package/dist/connectors/supabase.js +630 -0
  40. package/dist/connectors/supabase.js.map +1 -0
  41. package/dist/connectors/todoist.d.ts +117 -0
  42. package/dist/connectors/todoist.js +485 -0
  43. package/dist/connectors/todoist.js.map +1 -0
  44. package/dist/connectors/vercel.d.ts +110 -0
  45. package/dist/connectors/vercel.js +479 -0
  46. package/dist/connectors/vercel.js.map +1 -0
  47. package/dist/connectors/woocommerce.d.ts +220 -0
  48. package/dist/connectors/woocommerce.js +464 -0
  49. package/dist/connectors/woocommerce.js.map +1 -0
  50. package/package.json +1 -1
@@ -1,24 +1,77 @@
1
1
  /**
2
2
  * Airtable connector — record access via the Airtable REST API v0.
3
3
  *
4
- * Auth: Personal Access Token (PAT) `Authorization: Bearer <pat>`. PATs
5
- * start with `pat...`.
6
- * - Env var: AIRTABLE_ACCESS_TOKEN
7
- * - Stored: getSecretJsonSync("airtable") → AirtableTokens
4
+ * Auth: Personal Access Token (PAT) or OAuth 2.0.
5
+ * PAT: `Authorization: Bearer <pat>`. PATs start with `pat...`.
6
+ * - Env var: AIRTABLE_ACCESS_TOKEN
7
+ * - Stored: getSecretJsonSync("airtable") → AirtableTokens
8
+ * OAuth 2.0:
9
+ * - Env vars: AIRTABLE_CLIENT_ID, AIRTABLE_CLIENT_SECRET
10
+ * - Token endpoint: https://airtable.com/oauth2/v1/token (HTTP Basic auth)
11
+ * - Stored: getSecretJsonSync("airtable") → AirtableOAuthTokens
8
12
  *
9
13
  * Tools: listBases, getBaseSchema, listRecords, getRecord, createRecord,
10
- * updateRecord. Write ops (create/update) are intentionally exposed — the
11
- * point of the integration is round-trip record manipulation.
14
+ * updateRecord, listWebhooks, createWebhook, deleteWebhook,
15
+ * getWebhookPayloads, refreshWebhook.
12
16
  *
13
17
  * Extends BaseConnector for unified auth, retry, rate-limit, error handling.
14
18
  */
15
- import { type AuthContext, BaseConnector, type ConnectorError, type ConnectorStatus } from "./baseConnector.js";
19
+ import { type AuthContext, BaseConnector, type ConnectorError, type ConnectorStatus, type OAuthConfig } from "./baseConnector.js";
16
20
  export interface AirtableTokens {
17
21
  accessToken: string;
18
22
  userId?: string;
19
23
  email?: string;
20
24
  connected_at: string;
21
25
  }
26
+ /** OAuth 2.0 token set — stored when connector is authorized via OAuth flow. */
27
+ export interface AirtableOAuthTokens {
28
+ accessToken: string;
29
+ refreshToken: string;
30
+ expiresAt: string;
31
+ scopes: string[];
32
+ connected_at: string;
33
+ /** OAuth tokens are identified by this flag vs PAT tokens */
34
+ _oauth: true;
35
+ }
36
+ export interface AirtableWebhook {
37
+ id: string;
38
+ type?: string;
39
+ isHookEnabled: boolean;
40
+ notificationUrl?: string | null;
41
+ cursorForNextPayload?: number;
42
+ areNotificationsEnabled?: boolean;
43
+ expirationTime?: string | null;
44
+ specification?: {
45
+ options?: {
46
+ filters?: {
47
+ fromSources?: string[];
48
+ dataTypes?: string[];
49
+ changeTypes?: string[];
50
+ };
51
+ };
52
+ };
53
+ }
54
+ export interface AirtableWebhookCreateResult {
55
+ id: string;
56
+ macSecretBase64: string;
57
+ expirationTime?: string | null;
58
+ }
59
+ export interface AirtableWebhookPayload {
60
+ timestamp: string;
61
+ baseTransactionNumber: number;
62
+ actionMetadata?: {
63
+ source: string;
64
+ sourceMetadata?: Record<string, unknown>;
65
+ };
66
+ createdTablesById?: Record<string, unknown>;
67
+ destroyedTableIds?: string[];
68
+ changedTablesById?: Record<string, unknown>;
69
+ }
70
+ export interface AirtableWebhookPayloadsResult {
71
+ payloads: AirtableWebhookPayload[];
72
+ cursor: number;
73
+ mightHaveMore: boolean;
74
+ }
22
75
  export interface AirtableBase {
23
76
  id: string;
24
77
  name: string;
@@ -68,8 +121,18 @@ export interface AirtableListRecordsParams {
68
121
  export declare class AirtableConnector extends BaseConnector {
69
122
  readonly providerName = "airtable";
70
123
  private tokens;
71
- protected getOAuthConfig(): null;
124
+ protected getOAuthConfig(): OAuthConfig | null;
72
125
  authenticate(): Promise<AuthContext>;
126
+ /**
127
+ * Override base refreshToken() to use HTTP Basic auth for Airtable's token
128
+ * endpoint (clientId:clientSecret as Basic auth instead of body params).
129
+ */
130
+ protected refreshToken(): Promise<AuthContext | null>;
131
+ /**
132
+ * Perform the actual Airtable OAuth token refresh using HTTP Basic auth.
133
+ * Airtable requires clientId:clientSecret as Basic auth on the token endpoint.
134
+ */
135
+ private _oauthRefresh;
73
136
  healthCheck(): Promise<{
74
137
  ok: boolean;
75
138
  error?: ConnectorError;
@@ -82,11 +145,70 @@ export declare class AirtableConnector extends BaseConnector {
82
145
  getRecord(baseId: string, tableIdOrName: string, recordId: string): Promise<AirtableRecord>;
83
146
  createRecord(baseId: string, tableIdOrName: string, fields: Record<string, unknown>): Promise<AirtableRecord>;
84
147
  updateRecord(baseId: string, tableIdOrName: string, recordId: string, fields: Record<string, unknown>): Promise<AirtableRecord>;
148
+ /** GET /v0/bases/{baseId}/webhooks */
149
+ listWebhooks(baseId: string): Promise<AirtableWebhook[]>;
150
+ /**
151
+ * POST /v0/bases/{baseId}/webhooks
152
+ * Creates a webhook. Returns the webhook id, HMAC secret (base64), and
153
+ * expiration time. Store macSecretBase64 securely — it is only returned once.
154
+ */
155
+ createWebhook(baseId: string, notificationUrl: string, specification?: {
156
+ filters?: {
157
+ fromSources?: string[];
158
+ dataTypes?: string[];
159
+ changeTypes?: string[];
160
+ };
161
+ }): Promise<AirtableWebhookCreateResult>;
162
+ /** DELETE /v0/bases/{baseId}/webhooks/{webhookId} */
163
+ deleteWebhook(baseId: string, webhookId: string): Promise<void>;
164
+ /**
165
+ * GET /v0/bases/{baseId}/webhooks/{webhookId}/payloads
166
+ * Retrieves queued payloads for a webhook. Pass cursor from previous call
167
+ * to page through results.
168
+ */
169
+ getWebhookPayloads(baseId: string, webhookId: string, cursor?: number): Promise<AirtableWebhookPayloadsResult>;
170
+ /**
171
+ * POST /v0/bases/{baseId}/webhooks/{webhookId}/refresh
172
+ * Extends the webhook expiry by 7 days from now.
173
+ */
174
+ refreshWebhook(baseId: string, webhookId: string): Promise<void>;
85
175
  private buildHeaders;
86
176
  }
177
+ /**
178
+ * Load raw token blob from env / storage. Returns either AirtableTokens (PAT)
179
+ * or AirtableOAuthTokens (OAuth), or null when not connected.
180
+ *
181
+ * Priority:
182
+ * 1. AIRTABLE_ACCESS_TOKEN env var → synthetic PAT tokens
183
+ * 2. Stored token blob (may be PAT or OAuth)
184
+ */
185
+ export declare function loadRawTokens(): AirtableTokens | AirtableOAuthTokens | null;
186
+ /**
187
+ * loadTokens returns PAT tokens for backward compatibility with existing code
188
+ * that expects AirtableTokens. Returns null for OAuth-only connections.
189
+ */
87
190
  export declare function loadTokens(): AirtableTokens | null;
88
191
  export declare function saveTokens(tokens: AirtableTokens): void;
192
+ export declare function saveOAuthTokens(tokens: AirtableOAuthTokens): void;
89
193
  export declare function clearTokens(): void;
194
+ /**
195
+ * Verify an incoming Airtable webhook request.
196
+ *
197
+ * Airtable signs webhook payloads with HMAC-SHA256 using the macSecretBase64
198
+ * returned at webhook creation time. The signature is hex-encoded and sent in
199
+ * the `X-Airtable-Content-MAC` header. The raw body (before JSON parsing) is
200
+ * used as the message.
201
+ *
202
+ * Additionally, `X-Airtable-Client-Secret` should equal the base64-decoded
203
+ * mac secret (raw bytes as a Latin-1/binary string) — but in practice most
204
+ * integrations only check the HMAC signature. This helper validates both.
205
+ *
206
+ * @param rawBody - Raw request body as a Buffer or string
207
+ * @param hmacHeader - Value of the `X-Airtable-Content-MAC` header (hex)
208
+ * @param macSecretBase64 - The macSecretBase64 returned by createWebhook()
209
+ * @returns true if the signature is valid
210
+ */
211
+ export declare function verifyAirtableWebhook(rawBody: Buffer | string, hmacHeader: string, macSecretBase64: string): boolean;
90
212
  export declare function getAirtableConnector(): AirtableConnector;
91
213
  export { getAirtableConnector as airtable };
92
214
  export interface ConnectorHandlerResult {
@@ -1,38 +1,157 @@
1
1
  /**
2
2
  * Airtable connector — record access via the Airtable REST API v0.
3
3
  *
4
- * Auth: Personal Access Token (PAT) `Authorization: Bearer <pat>`. PATs
5
- * start with `pat...`.
6
- * - Env var: AIRTABLE_ACCESS_TOKEN
7
- * - Stored: getSecretJsonSync("airtable") → AirtableTokens
4
+ * Auth: Personal Access Token (PAT) or OAuth 2.0.
5
+ * PAT: `Authorization: Bearer <pat>`. PATs start with `pat...`.
6
+ * - Env var: AIRTABLE_ACCESS_TOKEN
7
+ * - Stored: getSecretJsonSync("airtable") → AirtableTokens
8
+ * OAuth 2.0:
9
+ * - Env vars: AIRTABLE_CLIENT_ID, AIRTABLE_CLIENT_SECRET
10
+ * - Token endpoint: https://airtable.com/oauth2/v1/token (HTTP Basic auth)
11
+ * - Stored: getSecretJsonSync("airtable") → AirtableOAuthTokens
8
12
  *
9
13
  * Tools: listBases, getBaseSchema, listRecords, getRecord, createRecord,
10
- * updateRecord. Write ops (create/update) are intentionally exposed — the
11
- * point of the integration is round-trip record manipulation.
14
+ * updateRecord, listWebhooks, createWebhook, deleteWebhook,
15
+ * getWebhookPayloads, refreshWebhook.
12
16
  *
13
17
  * Extends BaseConnector for unified auth, retry, rate-limit, error handling.
14
18
  */
19
+ import crypto from "node:crypto";
15
20
  import { BaseConnector, } from "./baseConnector.js";
16
21
  import { deleteSecretJsonSync, getSecretJsonSync, storeSecretJsonSync, } from "./tokenStorage.js";
17
22
  const BASE_URL = "https://api.airtable.com";
23
+ const OAUTH_TOKEN_ENDPOINT = "https://airtable.com/oauth2/v1/token";
24
+ const OAUTH_SCOPES = [
25
+ "data.records:read",
26
+ "data.records:write",
27
+ "schema.bases:read",
28
+ "webhook:manage",
29
+ ];
18
30
  const MAX_RECORDS_HARD_CAP = 1000;
19
31
  export class AirtableConnector extends BaseConnector {
20
32
  providerName = "airtable";
21
33
  tokens = null;
22
34
  getOAuthConfig() {
23
- return null;
35
+ const clientId = process.env.AIRTABLE_CLIENT_ID;
36
+ if (!clientId)
37
+ return null;
38
+ return {
39
+ clientId,
40
+ clientSecret: process.env.AIRTABLE_CLIENT_SECRET,
41
+ tokenEndpoint: OAUTH_TOKEN_ENDPOINT,
42
+ scopes: OAUTH_SCOPES,
43
+ };
24
44
  }
25
45
  async authenticate() {
26
- const tokens = loadTokens();
27
- if (!tokens) {
46
+ const raw = loadRawTokens();
47
+ if (!raw) {
28
48
  throw new Error("Airtable not connected. Run: patchwork-os connect airtable or set AIRTABLE_ACCESS_TOKEN");
29
49
  }
30
- this.tokens = tokens;
50
+ if (isOAuthTokens(raw)) {
51
+ // OAuth path — may auto-refresh if expired
52
+ const expiresAt = new Date(raw.expiresAt);
53
+ const bufferMs = 5 * 60 * 1000;
54
+ if (Date.now() > expiresAt.getTime() - bufferMs && raw.refreshToken) {
55
+ const refreshed = await this._oauthRefresh(raw);
56
+ if (refreshed) {
57
+ return {
58
+ token: refreshed.accessToken,
59
+ refreshToken: refreshed.refreshToken,
60
+ expiresAt: new Date(refreshed.expiresAt),
61
+ scopes: refreshed.scopes,
62
+ };
63
+ }
64
+ }
65
+ return {
66
+ token: raw.accessToken,
67
+ refreshToken: raw.refreshToken,
68
+ expiresAt: new Date(raw.expiresAt),
69
+ scopes: raw.scopes,
70
+ };
71
+ }
72
+ // PAT path
73
+ this.tokens = raw;
31
74
  return {
32
- token: tokens.accessToken,
75
+ token: raw.accessToken,
33
76
  scopes: ["read", "write"],
34
77
  };
35
78
  }
79
+ /**
80
+ * Override base refreshToken() to use HTTP Basic auth for Airtable's token
81
+ * endpoint (clientId:clientSecret as Basic auth instead of body params).
82
+ */
83
+ async refreshToken() {
84
+ const raw = loadRawTokens();
85
+ if (!raw || !isOAuthTokens(raw) || !raw.refreshToken)
86
+ return null;
87
+ const config = this.getOAuthConfig();
88
+ if (!config?.clientSecret)
89
+ return null;
90
+ const refreshed = await this._oauthRefresh(raw);
91
+ if (!refreshed)
92
+ return null;
93
+ return {
94
+ token: refreshed.accessToken,
95
+ refreshToken: refreshed.refreshToken,
96
+ expiresAt: new Date(refreshed.expiresAt),
97
+ scopes: refreshed.scopes,
98
+ };
99
+ }
100
+ /**
101
+ * Perform the actual Airtable OAuth token refresh using HTTP Basic auth.
102
+ * Airtable requires clientId:clientSecret as Basic auth on the token endpoint.
103
+ */
104
+ async _oauthRefresh(tokens) {
105
+ const clientId = process.env.AIRTABLE_CLIENT_ID ?? "";
106
+ const clientSecret = process.env.AIRTABLE_CLIENT_SECRET;
107
+ if (!clientId || !clientSecret)
108
+ return null;
109
+ const basicCreds = Buffer.from(`${clientId}:${clientSecret}`).toString("base64");
110
+ let response;
111
+ try {
112
+ response = await fetch(OAUTH_TOKEN_ENDPOINT, {
113
+ method: "POST",
114
+ headers: {
115
+ "Content-Type": "application/x-www-form-urlencoded",
116
+ Authorization: `Basic ${basicCreds}`,
117
+ },
118
+ body: new URLSearchParams({
119
+ grant_type: "refresh_token",
120
+ refresh_token: tokens.refreshToken,
121
+ }).toString(),
122
+ });
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ if (!response.ok) {
128
+ return null;
129
+ }
130
+ let data;
131
+ try {
132
+ data = (await response.json());
133
+ }
134
+ catch {
135
+ return null;
136
+ }
137
+ if (typeof data.access_token !== "string" || !data.access_token) {
138
+ return null;
139
+ }
140
+ const expiresIn = typeof data.expires_in === "number" && data.expires_in > 0
141
+ ? data.expires_in
142
+ : 3600;
143
+ const updated = {
144
+ ...tokens,
145
+ accessToken: data.access_token,
146
+ refreshToken: typeof data.refresh_token === "string" && data.refresh_token
147
+ ? data.refresh_token
148
+ : tokens.refreshToken,
149
+ expiresAt: new Date(Date.now() + expiresIn * 1000).toISOString(),
150
+ scopes: typeof data.scope === "string" ? data.scope.split(" ") : tokens.scopes,
151
+ };
152
+ saveOAuthTokens(updated);
153
+ return updated;
154
+ }
36
155
  async healthCheck() {
37
156
  try {
38
157
  const result = await this.apiCall(async () => {
@@ -109,14 +228,25 @@ export class AirtableConnector extends BaseConnector {
109
228
  };
110
229
  }
111
230
  getStatus() {
112
- const tokens = loadTokens();
231
+ const raw = loadRawTokens();
232
+ if (!raw) {
233
+ return { id: "airtable", status: "disconnected" };
234
+ }
235
+ if (isOAuthTokens(raw)) {
236
+ return {
237
+ id: "airtable",
238
+ status: "connected",
239
+ lastSync: raw.connected_at,
240
+ };
241
+ }
242
+ const tokens = raw;
113
243
  return {
114
244
  id: "airtable",
115
- status: tokens ? "connected" : "disconnected",
116
- lastSync: tokens?.connected_at,
117
- workspace: tokens?.email
245
+ status: "connected",
246
+ lastSync: tokens.connected_at,
247
+ workspace: tokens.email
118
248
  ? `Airtable (${tokens.email})`
119
- : tokens?.userId
249
+ : tokens.userId
120
250
  ? `Airtable user ${tokens.userId}`
121
251
  : undefined,
122
252
  };
@@ -233,9 +363,113 @@ export class AirtableConnector extends BaseConnector {
233
363
  throw new Error(result.error.message);
234
364
  return result.data;
235
365
  }
366
+ // ── Webhook Methods ────────────────────────────────────────────────────────
367
+ /** GET /v0/bases/{baseId}/webhooks */
368
+ async listWebhooks(baseId) {
369
+ const result = await this.apiCall(async () => {
370
+ const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks`;
371
+ const res = await fetch(url, { headers: this.buildHeaders() });
372
+ if (!res.ok)
373
+ throw res;
374
+ const json = (await res.json());
375
+ return json.webhooks ?? [];
376
+ });
377
+ if ("error" in result)
378
+ throw new Error(result.error.message);
379
+ return result.data;
380
+ }
381
+ /**
382
+ * POST /v0/bases/{baseId}/webhooks
383
+ * Creates a webhook. Returns the webhook id, HMAC secret (base64), and
384
+ * expiration time. Store macSecretBase64 securely — it is only returned once.
385
+ */
386
+ async createWebhook(baseId, notificationUrl, specification) {
387
+ const result = await this.apiCall(async () => {
388
+ const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks`;
389
+ const body = {
390
+ notificationUrl,
391
+ specification: {
392
+ filters: specification?.filters ?? {
393
+ fromSources: ["client"],
394
+ dataTypes: ["tableData", "tableFields", "tableMetadata"],
395
+ changeTypes: ["add", "update", "remove"],
396
+ },
397
+ },
398
+ };
399
+ const res = await fetch(url, {
400
+ method: "POST",
401
+ headers: { ...this.buildHeaders(), "Content-Type": "application/json" },
402
+ body: JSON.stringify(body),
403
+ });
404
+ if (!res.ok)
405
+ throw res;
406
+ return res.json();
407
+ });
408
+ if ("error" in result)
409
+ throw new Error(result.error.message);
410
+ return result.data;
411
+ }
412
+ /** DELETE /v0/bases/{baseId}/webhooks/{webhookId} */
413
+ async deleteWebhook(baseId, webhookId) {
414
+ const result = await this.apiCall(async () => {
415
+ const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}`;
416
+ const res = await fetch(url, {
417
+ method: "DELETE",
418
+ headers: this.buildHeaders(),
419
+ });
420
+ if (!res.ok)
421
+ throw res;
422
+ return undefined;
423
+ });
424
+ if ("error" in result)
425
+ throw new Error(result.error.message);
426
+ }
427
+ /**
428
+ * GET /v0/bases/{baseId}/webhooks/{webhookId}/payloads
429
+ * Retrieves queued payloads for a webhook. Pass cursor from previous call
430
+ * to page through results.
431
+ */
432
+ async getWebhookPayloads(baseId, webhookId, cursor) {
433
+ const result = await this.apiCall(async () => {
434
+ const qs = cursor != null ? `?cursor=${cursor}` : "";
435
+ const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}/payloads${qs}`;
436
+ const res = await fetch(url, { headers: this.buildHeaders() });
437
+ if (!res.ok)
438
+ throw res;
439
+ return res.json();
440
+ });
441
+ if ("error" in result)
442
+ throw new Error(result.error.message);
443
+ return result.data;
444
+ }
445
+ /**
446
+ * POST /v0/bases/{baseId}/webhooks/{webhookId}/refresh
447
+ * Extends the webhook expiry by 7 days from now.
448
+ */
449
+ async refreshWebhook(baseId, webhookId) {
450
+ const result = await this.apiCall(async () => {
451
+ const url = `${BASE_URL}/v0/bases/${encodeURIComponent(baseId)}/webhooks/${encodeURIComponent(webhookId)}/refresh`;
452
+ const res = await fetch(url, {
453
+ method: "POST",
454
+ headers: { ...this.buildHeaders(), "Content-Type": "application/json" },
455
+ body: "{}",
456
+ });
457
+ if (!res.ok)
458
+ throw res;
459
+ return undefined;
460
+ });
461
+ if ("error" in result)
462
+ throw new Error(result.error.message);
463
+ }
236
464
  // ── Helpers ────────────────────────────────────────────────────────────────
237
465
  buildHeaders() {
238
- const token = this.tokens?.accessToken ?? loadTokens()?.accessToken ?? "";
466
+ // Prefer the in-memory auth token (set after authenticate()), then fall
467
+ // back to reading directly from storage for callers that haven't gone
468
+ // through the full authenticate() flow (e.g. healthCheck).
469
+ const token = this.auth?.token ??
470
+ this.tokens?.accessToken ??
471
+ loadRawTokens()?.accessToken ??
472
+ "";
239
473
  return {
240
474
  Authorization: `Bearer ${token}`,
241
475
  Accept: "application/json",
@@ -243,7 +477,19 @@ export class AirtableConnector extends BaseConnector {
243
477
  }
244
478
  }
245
479
  // ── Token persistence ────────────────────────────────────────────────────────
246
- export function loadTokens() {
480
+ /** Discriminator for OAuth vs PAT token blobs. */
481
+ function isOAuthTokens(raw) {
482
+ return raw._oauth === true;
483
+ }
484
+ /**
485
+ * Load raw token blob from env / storage. Returns either AirtableTokens (PAT)
486
+ * or AirtableOAuthTokens (OAuth), or null when not connected.
487
+ *
488
+ * Priority:
489
+ * 1. AIRTABLE_ACCESS_TOKEN env var → synthetic PAT tokens
490
+ * 2. Stored token blob (may be PAT or OAuth)
491
+ */
492
+ export function loadRawTokens() {
247
493
  const envKey = process.env.AIRTABLE_ACCESS_TOKEN;
248
494
  if (envKey) {
249
495
  return {
@@ -253,9 +499,30 @@ export function loadTokens() {
253
499
  }
254
500
  return getSecretJsonSync("airtable");
255
501
  }
502
+ /**
503
+ * loadTokens returns PAT tokens for backward compatibility with existing code
504
+ * that expects AirtableTokens. Returns null for OAuth-only connections.
505
+ */
506
+ export function loadTokens() {
507
+ const raw = loadRawTokens();
508
+ if (!raw)
509
+ return null;
510
+ if (isOAuthTokens(raw)) {
511
+ // Return a minimal AirtableTokens shape for backward-compat callers that
512
+ // only need the accessToken (e.g. getStatus, healthCheck).
513
+ return {
514
+ accessToken: raw.accessToken,
515
+ connected_at: raw.connected_at,
516
+ };
517
+ }
518
+ return raw;
519
+ }
256
520
  export function saveTokens(tokens) {
257
521
  storeSecretJsonSync("airtable", tokens);
258
522
  }
523
+ export function saveOAuthTokens(tokens) {
524
+ storeSecretJsonSync("airtable", tokens);
525
+ }
259
526
  export function clearTokens() {
260
527
  try {
261
528
  deleteSecretJsonSync("airtable");
@@ -264,6 +531,43 @@ export function clearTokens() {
264
531
  // ignore
265
532
  }
266
533
  }
534
+ // ── Webhook verification ─────────────────────────────────────────────────────
535
+ /**
536
+ * Verify an incoming Airtable webhook request.
537
+ *
538
+ * Airtable signs webhook payloads with HMAC-SHA256 using the macSecretBase64
539
+ * returned at webhook creation time. The signature is hex-encoded and sent in
540
+ * the `X-Airtable-Content-MAC` header. The raw body (before JSON parsing) is
541
+ * used as the message.
542
+ *
543
+ * Additionally, `X-Airtable-Client-Secret` should equal the base64-decoded
544
+ * mac secret (raw bytes as a Latin-1/binary string) — but in practice most
545
+ * integrations only check the HMAC signature. This helper validates both.
546
+ *
547
+ * @param rawBody - Raw request body as a Buffer or string
548
+ * @param hmacHeader - Value of the `X-Airtable-Content-MAC` header (hex)
549
+ * @param macSecretBase64 - The macSecretBase64 returned by createWebhook()
550
+ * @returns true if the signature is valid
551
+ */
552
+ export function verifyAirtableWebhook(rawBody, hmacHeader, macSecretBase64) {
553
+ const secret = Buffer.from(macSecretBase64, "base64");
554
+ const body = typeof rawBody === "string" ? Buffer.from(rawBody, "utf-8") : rawBody;
555
+ const expected = crypto
556
+ .createHmac("sha256", secret)
557
+ .update(body)
558
+ .digest("hex");
559
+ // Constant-time compare to prevent timing attacks
560
+ try {
561
+ const expectedBuf = Buffer.from(expected, "utf-8");
562
+ const actualBuf = Buffer.from(hmacHeader, "utf-8");
563
+ if (expectedBuf.length !== actualBuf.length)
564
+ return false;
565
+ return crypto.timingSafeEqual(expectedBuf, actualBuf);
566
+ }
567
+ catch {
568
+ return false;
569
+ }
570
+ }
267
571
  // ── Singleton instance ───────────────────────────────────────────────────────
268
572
  let _instance = null;
269
573
  function resetAirtableConnector() {
@@ -1 +1 @@
1
- {"version":3,"file":"airtable.js","sourceRoot":"","sources":["../../src/connectors/airtable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAEL,aAAa,GAGd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AA4D3B,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAC5C,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IACzC,YAAY,GAAG,UAAU,CAAC;IAC3B,MAAM,GAA0B,IAAI,CAAC;IAEnC,cAAc;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,WAAW;YACzB,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,EAAE;oBACpD,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,EAAE;oBAAE,MAAM,GAAG,CAAC;gBACvB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,IAAI,MAAM;gBAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;YACjE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED,cAAc,CAAC,KAAc;QAC3B,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,6CAA6C;oBACtD,SAAS,EAAE,KAAK;oBAChB,eAAe,EAAE,+BAA+B;iBACjD,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO;oBACL,IAAI,EAAE,mBAAmB;oBACzB,OAAO,EAAE,uDAAuD;oBAChE,SAAS,EAAE,KAAK;iBACjB,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO;oBACL,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,6BAA6B;oBACtC,SAAS,EAAE,KAAK;iBACjB,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO;oBACL,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,uDAAuD;oBAChE,SAAS,EAAE,KAAK;iBACjB,CAAC;YACJ,IAAI,CAAC,KAAK,GAAG;gBACX,OAAO;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,kCAAkC;oBAC3C,SAAS,EAAE,IAAI;oBACf,eAAe,EAAE,gBAAgB;iBAClC,CAAC;YACJ,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,4BAA4B,CAAC,EAAE;gBACxC,SAAS,EAAE,CAAC,IAAI,GAAG;aACpB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,IACE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,EACtC,CAAC;gBACD,OAAO;oBACL,IAAI,EAAE,eAAe;oBACrB,OAAO,EAAE,+BAA+B,KAAK,CAAC,OAAO,EAAE;oBACvD,SAAS,EAAE,IAAI;iBAChB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC/D,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,SAAS;QACP,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,UAAU;YACd,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;YAC7C,QAAQ,EAAE,MAAM,EAAE,YAAY;YAC9B,SAAS,EAAE,MAAM,EAAE,KAAK;gBACtB,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,GAAG;gBAC9B,CAAC,CAAC,MAAM,EAAE,MAAM;oBACd,CAAC,CAAC,iBAAiB,MAAM,CAAC,MAAM,EAAE;oBAClC,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,8EAA8E;IAE9E,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,gBAAgB,EAAE;gBACnD,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;aAC7B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,EAAsC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAA+B,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAc;QAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,QAAQ,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,SAAS,EAChE,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CACjC,CAAC;YACF,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,EAAmC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAA4B,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,WAAW,CACf,MAAc,EACd,aAAqB,EACrB,SAAoC,EAAE;QAEtC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,eAAe;gBACxB,EAAE,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,IAAI;gBAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,MAAM,CAAC,QAAQ;gBAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAEjE,6DAA6D;YAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CACzB,MAAM,CAAC,UAAU,IAAI,GAAG,EACxB,oBAAoB,CACrB,CAAC;YACF,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;YAEzC,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;oBAC3B,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACrC,IAAI,CAAC,CAAC,SAAS;wBAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM;oBAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,GAAG,GAAG,GAAG,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;YACtG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,EAAwC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAiC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,MAAc,EACd,aAAqB,EACrB,QAAgB;QAEhB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,GAAG,GAAG,GAAG,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChI,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,EAA6B,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAsB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,aAAqB,EACrB,MAA+B;QAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,GAAG,GAAG,GAAG,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,EAAE,CAAC;YAChG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,GAAG,IAAI,CAAC,YAAY,EAAE;oBACtB,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAkC,CAAC;YACjE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAsB,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,MAAc,EACd,aAAqB,EACrB,QAAgB,EAChB,MAA+B;QAE/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,GAAG,GAAG,GAAG,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,aAAa,CAAC,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChI,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;gBAC3B,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE;oBACP,GAAG,IAAI,CAAC,YAAY,EAAE;oBACtB,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,GAAG,CAAC;YACvB,OAAO,GAAG,CAAC,IAAI,EAA6B,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,IAAI,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAsB,CAAC;IACvC,CAAC;IAED,8EAA8E;IAEtE,YAAY;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,IAAI,UAAU,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC;QAC1E,OAAO;YACL,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,MAAM,EAAE,kBAAkB;SAC3B,CAAC;IACJ,CAAC;CACF;AAED,gFAAgF;AAEhF,MAAM,UAAU,UAAU;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,WAAW,EAAE,MAAM;YACnB,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;IACJ,CAAC;IACD,OAAO,iBAAiB,CAAiB,UAAU,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAsB;IAC/C,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,IAAI,SAAS,GAA6B,IAAI,CAAC;AAE/C,SAAS,sBAAsB;IAC7B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,oBAAoB,IAAI,QAAQ,EAAE,CAAC;AAW5C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,IAAY;IAEZ,IAAI,WAAmB,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA8B,CAAC;QAC7D,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAClE,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QACD,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;SAChE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,iBAAiB,EAAE;YACpD,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,EAAE;gBACtC,MAAM,EAAE,kBAAkB;aAC3B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,0CAA0C,GAAG,CAAC,MAAM,uBAAuB;iBACnF,CAAC;aACH,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAoC,CAAC;QAElE,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,IAAI,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC;QAErC,MAAM,MAAM,GAAmB;YAC7B,WAAW;YACX,MAAM;YACN,KAAK;YACL,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,CAAC;QACF,UAAU,CAAC,MAAM,CAAC,CAAC;QACnB,sBAAsB,EAAE,CAAC;QAEzB,OAAO;YACL,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,IAAI;gBACR,MAAM;gBACN,KAAK;gBACL,WAAW,EAAE,MAAM,CAAC,YAAY;aACjC,CAAC;SACH,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC;SACrE,CAAC;IACJ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,WAAW,EAAE,CAAC;QAC5C,OAAO;YACL,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;YAC5B,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CACrE;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,MAAM,EAAE,GAAG;YACX,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACxD,CAAC;SACH,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB;IACtC,WAAW,EAAE,CAAC;IACd,sBAAsB,EAAE,CAAC;IACzB,OAAO;QACL,MAAM,EAAE,GAAG;QACX,WAAW,EAAE,kBAAkB;QAC/B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"airtable.js","sourceRoot":"","sources":["../../src/connectors/airtable.ts"],"names":[],"mappings":"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"}