@firela/billclaw-core 0.1.4 → 0.2.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.
Files changed (96) hide show
  1. package/LICENSE +21 -0
  2. package/dist/billclaw.d.ts +8 -0
  3. package/dist/billclaw.d.ts.map +1 -1
  4. package/dist/billclaw.js +51 -1
  5. package/dist/billclaw.js.map +1 -1
  6. package/dist/config/config-manager.d.ts +127 -0
  7. package/dist/config/config-manager.d.ts.map +1 -0
  8. package/dist/config/config-manager.js +304 -0
  9. package/dist/config/config-manager.js.map +1 -0
  10. package/dist/config/env-loader.d.ts +33 -0
  11. package/dist/config/env-loader.d.ts.map +1 -0
  12. package/dist/config/env-loader.js +115 -0
  13. package/dist/config/env-loader.js.map +1 -0
  14. package/dist/config/index.d.ts +14 -0
  15. package/dist/config/index.d.ts.map +1 -0
  16. package/dist/config/index.js +14 -0
  17. package/dist/config/index.js.map +1 -0
  18. package/dist/index.d.ts +4 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +7 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/models/config.d.ts +147 -0
  23. package/dist/models/config.d.ts.map +1 -1
  24. package/dist/models/config.js +36 -0
  25. package/dist/models/config.js.map +1 -1
  26. package/dist/oauth/index.d.ts +12 -0
  27. package/dist/oauth/index.d.ts.map +1 -0
  28. package/dist/oauth/index.js +13 -0
  29. package/dist/oauth/index.js.map +1 -0
  30. package/dist/oauth/providers/gmail.d.ts +63 -0
  31. package/dist/oauth/providers/gmail.d.ts.map +1 -0
  32. package/dist/oauth/providers/gmail.js +213 -0
  33. package/dist/oauth/providers/gmail.js.map +1 -0
  34. package/dist/oauth/providers/plaid.d.ts +40 -0
  35. package/dist/oauth/providers/plaid.d.ts.map +1 -0
  36. package/dist/oauth/providers/plaid.js +90 -0
  37. package/dist/oauth/providers/plaid.js.map +1 -0
  38. package/dist/oauth/types.d.ts +102 -0
  39. package/dist/oauth/types.d.ts.map +1 -0
  40. package/dist/oauth/types.js +10 -0
  41. package/dist/oauth/types.js.map +1 -0
  42. package/dist/runtime/types.d.ts +2 -0
  43. package/dist/runtime/types.d.ts.map +1 -1
  44. package/dist/runtime/types.js.map +1 -1
  45. package/dist/storage/locking.d.ts +4 -0
  46. package/dist/storage/locking.d.ts.map +1 -1
  47. package/dist/storage/locking.js +4 -0
  48. package/dist/storage/locking.js.map +1 -1
  49. package/dist/test-fixtures.d.ts.map +1 -1
  50. package/dist/test-fixtures.js +5 -0
  51. package/dist/test-fixtures.js.map +1 -1
  52. package/dist/webhooks/deduplication.d.ts +117 -0
  53. package/dist/webhooks/deduplication.d.ts.map +1 -0
  54. package/dist/webhooks/deduplication.js +258 -0
  55. package/dist/webhooks/deduplication.js.map +1 -0
  56. package/dist/webhooks/handlers/gmail.d.ts +39 -0
  57. package/dist/webhooks/handlers/gmail.d.ts.map +1 -0
  58. package/dist/webhooks/handlers/gmail.js +56 -0
  59. package/dist/webhooks/handlers/gmail.js.map +1 -0
  60. package/dist/webhooks/handlers/gocardless.d.ts +39 -0
  61. package/dist/webhooks/handlers/gocardless.d.ts.map +1 -0
  62. package/dist/webhooks/handlers/gocardless.js +73 -0
  63. package/dist/webhooks/handlers/gocardless.js.map +1 -0
  64. package/dist/webhooks/handlers/index.d.ts +10 -0
  65. package/dist/webhooks/handlers/index.d.ts.map +1 -0
  66. package/dist/webhooks/handlers/index.js +10 -0
  67. package/dist/webhooks/handlers/index.js.map +1 -0
  68. package/dist/webhooks/handlers/plaid.d.ts +73 -0
  69. package/dist/webhooks/handlers/plaid.d.ts.map +1 -0
  70. package/dist/webhooks/handlers/plaid.js +169 -0
  71. package/dist/webhooks/handlers/plaid.js.map +1 -0
  72. package/dist/webhooks/index.d.ts +15 -0
  73. package/dist/webhooks/index.d.ts.map +1 -0
  74. package/dist/webhooks/index.js +17 -0
  75. package/dist/webhooks/index.js.map +1 -0
  76. package/dist/webhooks/processor.d.ts +76 -0
  77. package/dist/webhooks/processor.d.ts.map +1 -0
  78. package/dist/webhooks/processor.js +116 -0
  79. package/dist/webhooks/processor.js.map +1 -0
  80. package/dist/webhooks/router.d.ts +80 -0
  81. package/dist/webhooks/router.d.ts.map +1 -0
  82. package/dist/webhooks/router.js +107 -0
  83. package/dist/webhooks/router.js.map +1 -0
  84. package/dist/webhooks/security.d.ts +90 -0
  85. package/dist/webhooks/security.d.ts.map +1 -0
  86. package/dist/webhooks/security.js +138 -0
  87. package/dist/webhooks/security.js.map +1 -0
  88. package/dist/webhooks/sync-rate-limiter.d.ts +138 -0
  89. package/dist/webhooks/sync-rate-limiter.d.ts.map +1 -0
  90. package/dist/webhooks/sync-rate-limiter.js +228 -0
  91. package/dist/webhooks/sync-rate-limiter.js.map +1 -0
  92. package/dist/webhooks/types.d.ts +140 -0
  93. package/dist/webhooks/types.d.ts.map +1 -0
  94. package/dist/webhooks/types.js +18 -0
  95. package/dist/webhooks/types.js.map +1 -0
  96. package/package.json +12 -12
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Gmail OAuth provider - framework-agnostic implementation
3
+ *
4
+ * This module handles Gmail OAuth 2.0 authorization using PKCE (Proof Key for Code Exchange).
5
+ *
6
+ * Flow:
7
+ * 1. Generate authorization URL (with PKCE) - Returns { url, state }
8
+ * 2. Handle callback - Receives authorization code
9
+ * 3. Exchange code for access token - Returns { accessToken, refreshToken }
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ import type { Logger } from "../../runtime/types.js";
14
+ import type { GmailOAuthConfig, GmailAuthUrlResult, GmailTokenResult, GmailOAuthResult } from "../types.js";
15
+ /**
16
+ * Clean up expired states (older than 10 minutes)
17
+ */
18
+ export declare function cleanupExpiredStates(): void;
19
+ /**
20
+ * Generate Gmail OAuth authorization URL
21
+ *
22
+ * Uses PKCE for security without requiring client secret.
23
+ */
24
+ export declare function generateAuthorizationUrl(config: GmailOAuthConfig, redirectUri?: string, logger?: Logger): Promise<GmailAuthUrlResult>;
25
+ /**
26
+ * Exchange authorization code for access token
27
+ *
28
+ * Completes the OAuth flow by exchanging the authorization code
29
+ * for an access token (and optionally refresh token).
30
+ */
31
+ export declare function exchangeCodeForToken(config: GmailOAuthConfig, code: string, state: string, redirectUri?: string, logger?: Logger): Promise<GmailTokenResult>;
32
+ /**
33
+ * Handle Gmail OAuth flow
34
+ *
35
+ * This integrates Gmail OAuth 2.0 with PKCE for secure authorization.
36
+ *
37
+ * Flow:
38
+ * 1. Initialize OAuth (no params) - Returns { url, state }
39
+ * 2. Handle callback (code + state) - Returns { accessToken, refreshToken }
40
+ *
41
+ * @param config - Gmail configuration
42
+ * @param context - OAuth context with optional code, state, redirectUri
43
+ * @param logger - Optional logger instance
44
+ * @returns GmailOAuthResult with URL and/or token
45
+ */
46
+ export declare function gmailOAuthHandler(config: GmailOAuthConfig, context?: {
47
+ code?: string;
48
+ state?: string;
49
+ redirectUri?: string;
50
+ }, logger?: Logger): Promise<GmailOAuthResult>;
51
+ /**
52
+ * Refresh Gmail access token using refresh token
53
+ *
54
+ * @param config - Gmail configuration
55
+ * @param refreshToken - Refresh token to use
56
+ * @param logger - Optional logger instance
57
+ * @returns New access token and expiry info, or null if refresh failed
58
+ */
59
+ export declare function refreshGmailToken(config: GmailOAuthConfig, refreshToken: string, logger?: Logger): Promise<{
60
+ accessToken: string;
61
+ expiresIn: number;
62
+ } | null>;
63
+ //# sourceMappingURL=gmail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/gmail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,MAAM,EACP,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAWpB;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAQ3C;AAkCD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,gBAAgB,EACxB,WAAW,GAAE,MAAyC,EACtD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,kBAAkB,CAAC,CAmC7B;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAAyC,EACtD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CAkD3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE;IACR,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,EACD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CA0C3B;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAsC5D"}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Gmail OAuth provider - framework-agnostic implementation
3
+ *
4
+ * This module handles Gmail OAuth 2.0 authorization using PKCE (Proof Key for Code Exchange).
5
+ *
6
+ * Flow:
7
+ * 1. Generate authorization URL (with PKCE) - Returns { url, state }
8
+ * 2. Handle callback - Receives authorization code
9
+ * 3. Exchange code for access token - Returns { accessToken, refreshToken }
10
+ *
11
+ * @packageDocumentation
12
+ */
13
+ /**
14
+ * State parameter storage (in-memory for security)
15
+ * In production, this should be stored in a secure session
16
+ */
17
+ const oauthStateStore = new Map();
18
+ /**
19
+ * Clean up expired states (older than 10 minutes)
20
+ */
21
+ export function cleanupExpiredStates() {
22
+ const now = Date.now();
23
+ const maxAge = 10 * 60 * 1000; // 10 minutes
24
+ for (const [key, value] of oauthStateStore.entries()) {
25
+ if (now - value.timestamp > maxAge) {
26
+ oauthStateStore.delete(key);
27
+ }
28
+ }
29
+ }
30
+ /**
31
+ * Generate random code verifier for PKCE
32
+ */
33
+ function generateCodeVerifier() {
34
+ const array = new Uint8Array(32);
35
+ crypto.getRandomValues(array);
36
+ return base64UrlEncode(array);
37
+ }
38
+ /**
39
+ * Generate code challenge from verifier for PKCE
40
+ */
41
+ async function generateCodeChallenge(verifier) {
42
+ const encoder = new TextEncoder();
43
+ const data = encoder.encode(verifier);
44
+ const hash = await crypto.subtle.digest("SHA-256", data);
45
+ return base64UrlEncode(new Uint8Array(hash));
46
+ }
47
+ /**
48
+ * Base64URL encode a byte array
49
+ */
50
+ function base64UrlEncode(bytes) {
51
+ const binString = Array.from(bytes, (byte) => String.fromCharCode(byte));
52
+ const base64 = btoa(binString.join(""));
53
+ return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "");
54
+ }
55
+ /**
56
+ * Generate Gmail OAuth authorization URL
57
+ *
58
+ * Uses PKCE for security without requiring client secret.
59
+ */
60
+ export async function generateAuthorizationUrl(config, redirectUri = "http://localhost:3000/callback", logger) {
61
+ cleanupExpiredStates();
62
+ // Generate PKCE verifier and challenge
63
+ const codeVerifier = generateCodeVerifier();
64
+ const codeChallenge = await generateCodeChallenge(codeVerifier);
65
+ // Generate state parameter for CSRF protection
66
+ const state = Array.from(crypto.getRandomValues(new Uint8Array(16)))
67
+ .map((b) => b.toString(16).padStart(2, "0"))
68
+ .join("");
69
+ // Store state and verifier
70
+ oauthStateStore.set(state, {
71
+ codeVerifier,
72
+ timestamp: Date.now(),
73
+ });
74
+ // Build authorization URL
75
+ const params = new URLSearchParams();
76
+ params.set("client_id", config.clientId);
77
+ params.set("redirect_uri", redirectUri);
78
+ params.set("response_type", "code");
79
+ params.set("scope", "https://www.googleapis.com/auth/gmail.readonly");
80
+ params.set("state", state);
81
+ params.set("code_challenge", codeChallenge);
82
+ params.set("code_challenge_method", "S256");
83
+ params.set("access_type", "offline"); // Allow refresh token
84
+ params.set("prompt", "consent"); // Force consent to get refresh token
85
+ const url = `https://accounts.google.com/o/oauth2/v2/auth?${params.toString()}`;
86
+ logger?.info?.("Gmail authorization URL generated");
87
+ return { url, state };
88
+ }
89
+ /**
90
+ * Exchange authorization code for access token
91
+ *
92
+ * Completes the OAuth flow by exchanging the authorization code
93
+ * for an access token (and optionally refresh token).
94
+ */
95
+ export async function exchangeCodeForToken(config, code, state, redirectUri = "http://localhost:3000/callback", logger) {
96
+ // Retrieve stored state
97
+ const storedState = oauthStateStore.get(state);
98
+ if (!storedState) {
99
+ throw new Error("Invalid or expired OAuth state. Please try again.");
100
+ }
101
+ // Clean up state
102
+ oauthStateStore.delete(state);
103
+ // Exchange code for token
104
+ const tokenUrl = "https://oauth2.googleapis.com/token";
105
+ const params = new URLSearchParams();
106
+ params.set("code", code);
107
+ params.set("client_id", config.clientId);
108
+ if (config.clientSecret) {
109
+ params.set("client_secret", config.clientSecret);
110
+ }
111
+ params.set("redirect_uri", redirectUri);
112
+ params.set("grant_type", "authorization_code");
113
+ params.set("code_verifier", storedState.codeVerifier);
114
+ const response = await fetch(tokenUrl, {
115
+ method: "POST",
116
+ headers: {
117
+ "Content-Type": "application/x-www-form-urlencoded",
118
+ },
119
+ body: params.toString(),
120
+ });
121
+ if (!response.ok) {
122
+ const errorText = await response.text();
123
+ throw new Error(`Failed to exchange token: ${response.status} ${errorText}`);
124
+ }
125
+ const data = (await response.json());
126
+ logger?.info?.("Gmail access token obtained successfully");
127
+ return {
128
+ accessToken: data.access_token,
129
+ refreshToken: data.refresh_token,
130
+ expiresIn: data.expires_in,
131
+ };
132
+ }
133
+ /**
134
+ * Handle Gmail OAuth flow
135
+ *
136
+ * This integrates Gmail OAuth 2.0 with PKCE for secure authorization.
137
+ *
138
+ * Flow:
139
+ * 1. Initialize OAuth (no params) - Returns { url, state }
140
+ * 2. Handle callback (code + state) - Returns { accessToken, refreshToken }
141
+ *
142
+ * @param config - Gmail configuration
143
+ * @param context - OAuth context with optional code, state, redirectUri
144
+ * @param logger - Optional logger instance
145
+ * @returns GmailOAuthResult with URL and/or token
146
+ */
147
+ export async function gmailOAuthHandler(config, context, logger) {
148
+ try {
149
+ const { code, state, redirectUri } = context || {};
150
+ // Phase 1: Generate authorization URL
151
+ if (!code) {
152
+ const { url: authUrl, state: newState } = await generateAuthorizationUrl(config, redirectUri, logger);
153
+ return {
154
+ url: authUrl,
155
+ state: newState,
156
+ };
157
+ }
158
+ // Phase 2: Exchange authorization code for access token
159
+ if (!state) {
160
+ throw new Error("State parameter is required for code exchange");
161
+ }
162
+ const { accessToken, refreshToken, expiresIn } = await exchangeCodeForToken(config, code, state, redirectUri, logger);
163
+ return {
164
+ url: "",
165
+ accessToken,
166
+ refreshToken,
167
+ expiresIn,
168
+ };
169
+ }
170
+ catch (error) {
171
+ logger?.error?.("Gmail OAuth error:", error);
172
+ throw error;
173
+ }
174
+ }
175
+ /**
176
+ * Refresh Gmail access token using refresh token
177
+ *
178
+ * @param config - Gmail configuration
179
+ * @param refreshToken - Refresh token to use
180
+ * @param logger - Optional logger instance
181
+ * @returns New access token and expiry info, or null if refresh failed
182
+ */
183
+ export async function refreshGmailToken(config, refreshToken, logger) {
184
+ try {
185
+ const response = await fetch("https://oauth2.googleapis.com/token", {
186
+ method: "POST",
187
+ headers: {
188
+ "Content-Type": "application/x-www-form-urlencoded",
189
+ },
190
+ body: new URLSearchParams({
191
+ client_id: config.clientId,
192
+ client_secret: config.clientSecret || "",
193
+ refresh_token: refreshToken,
194
+ grant_type: "refresh_token",
195
+ }),
196
+ });
197
+ if (!response.ok) {
198
+ const errorText = await response.text();
199
+ throw new Error(`Gmail token refresh failed: ${response.status} ${errorText}`);
200
+ }
201
+ const data = (await response.json());
202
+ logger?.info?.("Gmail token refreshed successfully");
203
+ return {
204
+ accessToken: data.access_token,
205
+ expiresIn: data.expires_in,
206
+ };
207
+ }
208
+ catch (error) {
209
+ logger?.error?.("Gmail token refresh error:", error);
210
+ return null;
211
+ }
212
+ }
213
+ //# sourceMappingURL=gmail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gmail.js","sourceRoot":"","sources":["../../../src/oauth/providers/gmail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Plaid OAuth provider - framework-agnostic implementation
3
+ *
4
+ * This module handles the Plaid Link OAuth flow for connecting bank accounts.
5
+ * It supports two modes:
6
+ * 1. Link token creation (for initializing Plaid Link frontend)
7
+ * 2. Public token exchange (for completing the connection)
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { type PlaidConfig } from "../../sources/plaid/plaid-sync.js";
12
+ import type { Logger } from "../../runtime/types.js";
13
+ import type { PlaidLinkTokenResult, PlaidTokenExchangeResult, PlaidOAuthResult } from "../types.js";
14
+ /**
15
+ * Create Plaid Link token for initializing Link frontend
16
+ */
17
+ export declare function createLinkToken(config: PlaidConfig, accountId?: string, logger?: Logger): Promise<PlaidLinkTokenResult>;
18
+ /**
19
+ * Exchange Plaid public token for access token
20
+ */
21
+ export declare function exchangePublicToken(config: PlaidConfig, publicToken: string, logger?: Logger): Promise<PlaidTokenExchangeResult>;
22
+ /**
23
+ * Handle Plaid Link OAuth flow
24
+ *
25
+ * This integrates Plaid Link (https://plaid.com/docs/link/)
26
+ * for secure bank account connection.
27
+ *
28
+ * Flow:
29
+ * 1. Create Link token (no params) - Returns { url, token: linkToken }
30
+ * 2. Handle Link success callback - Receives publicToken
31
+ * 3. Exchange public_token for access_token - Returns { url: "", token: accessToken, itemId }
32
+ *
33
+ * @param config - Plaid configuration
34
+ * @param publicToken - Optional public token from Plaid Link callback
35
+ * @param accountId - Optional account ID for Link token creation
36
+ * @param logger - Optional logger instance
37
+ * @returns OAuthResult with URL and token
38
+ */
39
+ export declare function plaidOAuthHandler(config: PlaidConfig, publicToken?: string, accountId?: string, logger?: Logger): Promise<PlaidOAuthResult>;
40
+ //# sourceMappingURL=plaid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaid.d.ts","sourceRoot":"","sources":["../../../src/oauth/providers/plaid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EACV,MAAM,EACP,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAEpB;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,WAAW,EACnB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,CAAC,CAmB/B;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,wBAAwB,CAAC,CAgBnC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CA+B3B"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Plaid OAuth provider - framework-agnostic implementation
3
+ *
4
+ * This module handles the Plaid Link OAuth flow for connecting bank accounts.
5
+ * It supports two modes:
6
+ * 1. Link token creation (for initializing Plaid Link frontend)
7
+ * 2. Public token exchange (for completing the connection)
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ import { createPlaidClient, } from "../../sources/plaid/plaid-sync.js";
12
+ /**
13
+ * Create Plaid Link token for initializing Link frontend
14
+ */
15
+ export async function createLinkToken(config, accountId, logger) {
16
+ const plaidClient = createPlaidClient(config);
17
+ const request = {
18
+ user: {
19
+ client_user_id: accountId || `user_${Date.now()}`,
20
+ },
21
+ client_name: "BillClaw",
22
+ products: ["transactions"],
23
+ country_codes: ["US"],
24
+ language: "en",
25
+ };
26
+ const axiosResponse = await plaidClient.linkTokenCreate(request);
27
+ const response = axiosResponse.data;
28
+ logger?.info?.("Plaid Link token created successfully");
29
+ return { linkToken: response.link_token };
30
+ }
31
+ /**
32
+ * Exchange Plaid public token for access token
33
+ */
34
+ export async function exchangePublicToken(config, publicToken, logger) {
35
+ const plaidClient = createPlaidClient(config);
36
+ const request = {
37
+ public_token: publicToken,
38
+ };
39
+ const axiosResponse = await plaidClient.itemPublicTokenExchange(request);
40
+ const response = axiosResponse.data;
41
+ logger?.info?.("Plaid public token exchanged successfully");
42
+ return {
43
+ accessToken: response.access_token,
44
+ itemId: response.item_id,
45
+ };
46
+ }
47
+ /**
48
+ * Handle Plaid Link OAuth flow
49
+ *
50
+ * This integrates Plaid Link (https://plaid.com/docs/link/)
51
+ * for secure bank account connection.
52
+ *
53
+ * Flow:
54
+ * 1. Create Link token (no params) - Returns { url, token: linkToken }
55
+ * 2. Handle Link success callback - Receives publicToken
56
+ * 3. Exchange public_token for access_token - Returns { url: "", token: accessToken, itemId }
57
+ *
58
+ * @param config - Plaid configuration
59
+ * @param publicToken - Optional public token from Plaid Link callback
60
+ * @param accountId - Optional account ID for Link token creation
61
+ * @param logger - Optional logger instance
62
+ * @returns OAuthResult with URL and token
63
+ */
64
+ export async function plaidOAuthHandler(config, publicToken, accountId, logger) {
65
+ try {
66
+ if (!publicToken) {
67
+ // No public token provided - create Link token for initializing Link
68
+ const { linkToken } = await createLinkToken(config, accountId, logger);
69
+ // Return Plaid Link URL and the link token
70
+ return {
71
+ url: "https://cdn.plaid.com/link/v2/stable/link.html",
72
+ token: linkToken,
73
+ };
74
+ }
75
+ // Public token provided - exchange for access token
76
+ const { accessToken, itemId } = await exchangePublicToken(config, publicToken, logger);
77
+ // Return the access token and item ID
78
+ return {
79
+ url: "",
80
+ token: accessToken,
81
+ itemId,
82
+ accessToken,
83
+ };
84
+ }
85
+ catch (error) {
86
+ logger?.error?.("Plaid OAuth error:", error);
87
+ throw error;
88
+ }
89
+ }
90
+ //# sourceMappingURL=plaid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaid.js","sourceRoot":"","sources":["../../../src/oauth/providers/plaid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,iBAAiB,GAElB,MAAM,mCAAmC,CAAA;AAU1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAmB,EACnB,SAAkB,EAClB,MAAe;IAEf,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE7C,MAAM,OAAO,GAAG;QACd,IAAI,EAAE;YACJ,cAAc,EAAE,SAAS,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;SAClD;QACD,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,CAAC,cAAqB,CAAC;QACjC,aAAa,EAAE,CAAC,IAAW,CAAC;QAC5B,QAAQ,EAAE,IAAI;KACf,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAA;IAChE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAA;IAEnC,MAAM,EAAE,IAAI,EAAE,CAAC,uCAAuC,CAAC,CAAA;IAEvD,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAA;AAC3C,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAmB,EACnB,WAAmB,EACnB,MAAe;IAEf,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAE7C,MAAM,OAAO,GAAG;QACd,YAAY,EAAE,WAAW;KAC1B,CAAA;IAED,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAA;IACxE,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAA;IAEnC,MAAM,EAAE,IAAI,EAAE,CAAC,2CAA2C,CAAC,CAAA;IAE3D,OAAO;QACL,WAAW,EAAE,QAAQ,CAAC,YAAY;QAClC,MAAM,EAAE,QAAQ,CAAC,OAAO;KACzB,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAmB,EACnB,WAAoB,EACpB,SAAkB,EAClB,MAAe;IAEf,IAAI,CAAC;QACH,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,qEAAqE;YACrE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;YAEtE,2CAA2C;YAC3C,OAAO;gBACL,GAAG,EAAE,gDAAgD;gBACrD,KAAK,EAAE,SAAS;aACjB,CAAA;QACH,CAAC;QAED,oDAAoD;QACpD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,CACvD,MAAM,EACN,WAAW,EACX,MAAM,CACP,CAAA;QAED,sCAAsC;QACtC,OAAO;YACL,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,WAAW;YAClB,MAAM;YACN,WAAW;SACZ,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAA;QAC5C,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Framework-agnostic OAuth types and interfaces
3
+ *
4
+ * This module defines OAuth types that are independent of any
5
+ * specific runtime (OpenClaw, CLI, standalone service, etc.)
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ import { type Logger } from "../runtime/types.js";
10
+ /**
11
+ * Plaid configuration
12
+ */
13
+ export interface PlaidConfig {
14
+ clientId: string;
15
+ secret: string;
16
+ environment: "sandbox" | "development" | "production";
17
+ }
18
+ /**
19
+ * Gmail OAuth configuration (for OAuth flow only)
20
+ */
21
+ export interface GmailOAuthConfig {
22
+ clientId: string;
23
+ clientSecret?: string;
24
+ }
25
+ /**
26
+ * Generic OAuth provider configuration
27
+ */
28
+ export type OAuthConfig = {
29
+ provider: "plaid";
30
+ config: PlaidConfig;
31
+ } | {
32
+ provider: "gmail";
33
+ config: GmailOAuthConfig;
34
+ } | {
35
+ provider: string;
36
+ config: unknown;
37
+ };
38
+ /**
39
+ * Plaid Link token creation result
40
+ */
41
+ export interface PlaidLinkTokenResult {
42
+ linkToken: string;
43
+ }
44
+ /**
45
+ * Plaid public token exchange result
46
+ */
47
+ export interface PlaidTokenExchangeResult {
48
+ accessToken: string;
49
+ itemId: string;
50
+ }
51
+ /**
52
+ * Plaid OAuth handler result
53
+ */
54
+ export interface PlaidOAuthResult {
55
+ url: string;
56
+ token?: string;
57
+ itemId?: string;
58
+ accessToken?: string;
59
+ }
60
+ /**
61
+ * Gmail authorization URL result
62
+ */
63
+ export interface GmailAuthUrlResult {
64
+ url: string;
65
+ state: string;
66
+ }
67
+ /**
68
+ * Gmail token exchange result
69
+ */
70
+ export interface GmailTokenResult {
71
+ accessToken: string;
72
+ refreshToken?: string;
73
+ expiresIn?: number;
74
+ }
75
+ /**
76
+ * Gmail OAuth handler result
77
+ */
78
+ export interface GmailOAuthResult {
79
+ url: string;
80
+ state?: string;
81
+ accessToken?: string;
82
+ refreshToken?: string;
83
+ expiresIn?: number;
84
+ }
85
+ /**
86
+ * OAuth context for callbacks
87
+ */
88
+ export interface OAuthContext {
89
+ publicToken?: string;
90
+ code?: string;
91
+ state?: string;
92
+ redirectUri?: string;
93
+ accountId?: string;
94
+ }
95
+ /**
96
+ * OAuth handler options
97
+ */
98
+ export interface OAuthHandlerOptions {
99
+ logger?: Logger;
100
+ config: OAuthConfig;
101
+ }
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/oauth/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,YAAY,CAAA;CACtD;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,GAC1C;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAC/C;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAA;AAEzC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;CACd;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IAGpB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;CACpB"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Framework-agnostic OAuth types and interfaces
3
+ *
4
+ * This module defines OAuth types that are independent of any
5
+ * specific runtime (OpenClaw, CLI, standalone service, etc.)
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/oauth/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -5,7 +5,9 @@
5
5
  * must implement to provide framework-specific functionality to the core.
6
6
  */
7
7
  import type { Logger } from "../errors/errors.js";
8
+ export type { Logger } from "../errors/errors.js";
8
9
  import type { BillclawConfig, StorageConfig } from "../models/config.js";
10
+ export type { BillclawConfig, StorageConfig } from "../models/config.js";
9
11
  /**
10
12
  * Configuration provider - loads and provides configuration
11
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
@@ -99,5 +99,9 @@ export declare const LockNames: {
99
99
  * Export lock (protects data export operations)
100
100
  */
101
101
  EXPORT: string;
102
+ /**
103
+ * Configuration lock (protects config file writes)
104
+ */
105
+ CONFIG: string;
102
106
  };
103
107
  //# sourceMappingURL=locking.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"locking.d.ts","sourceRoot":"","sources":["../../src/storage/locking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAqBjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QAEd;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAcD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7B;AAwCD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;;IAGH;;OAEG;2BACoB,MAAM,GAAG,MAAM;IAItC;;OAEG;;IAGH;;OAEG;kCAC2B,MAAM,GAAG,MAAM;IAI7C;;OAEG;;CAEJ,CAAA"}
1
+ {"version":3,"file":"locking.d.ts","sourceRoot":"","sources":["../../src/storage/locking.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAqBjD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;WAEG;QACH,KAAK,CAAC,EAAE,MAAM,CAAA;QAEd;;WAEG;QACH,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IAED;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAcD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAExB;;OAEG;IACH,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7B;AAwCD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CA0Bf;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGjE;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;;IAGH;;OAEG;2BACoB,MAAM,GAAG,MAAM;IAItC;;OAEG;;IAGH;;OAEG;kCAC2B,MAAM,GAAG,MAAM;IAI7C;;OAEG;;IAGH;;OAEG;;CAEJ,CAAA"}
@@ -154,5 +154,9 @@ export const LockNames = {
154
154
  * Export lock (protects data export operations)
155
155
  */
156
156
  EXPORT: ".export.lock",
157
+ /**
158
+ * Configuration lock (protects config file writes)
159
+ */
160
+ CONFIG: ".config.lock",
157
161
  };
158
162
  //# sourceMappingURL=locking.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"locking.js","sourceRoot":"","sources":["../../src/storage/locking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"locking.js","sourceRoot":"","sources":["../../src/storage/locking.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../src/test-fixtures.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,EAuBvD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,EA8BvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAqCxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;GA8B3B,CAAA"}
1
+ {"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../src/test-fixtures.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE1E;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,qBAAqB,EAAE,oBAAoB,EAuBvD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,aAAa,EA8BvC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cA0CxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;GA8B3B,CAAA"}