@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.
- package/LICENSE +21 -0
- package/dist/billclaw.d.ts +8 -0
- package/dist/billclaw.d.ts.map +1 -1
- package/dist/billclaw.js +51 -1
- package/dist/billclaw.js.map +1 -1
- package/dist/config/config-manager.d.ts +127 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +304 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/env-loader.d.ts +33 -0
- package/dist/config/env-loader.d.ts.map +1 -0
- package/dist/config/env-loader.js +115 -0
- package/dist/config/env-loader.js.map +1 -0
- package/dist/config/index.d.ts +14 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +14 -0
- package/dist/config/index.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/models/config.d.ts +147 -0
- package/dist/models/config.d.ts.map +1 -1
- package/dist/models/config.js +36 -0
- package/dist/models/config.js.map +1 -1
- package/dist/oauth/index.d.ts +12 -0
- package/dist/oauth/index.d.ts.map +1 -0
- package/dist/oauth/index.js +13 -0
- package/dist/oauth/index.js.map +1 -0
- package/dist/oauth/providers/gmail.d.ts +63 -0
- package/dist/oauth/providers/gmail.d.ts.map +1 -0
- package/dist/oauth/providers/gmail.js +213 -0
- package/dist/oauth/providers/gmail.js.map +1 -0
- package/dist/oauth/providers/plaid.d.ts +40 -0
- package/dist/oauth/providers/plaid.d.ts.map +1 -0
- package/dist/oauth/providers/plaid.js +90 -0
- package/dist/oauth/providers/plaid.js.map +1 -0
- package/dist/oauth/types.d.ts +102 -0
- package/dist/oauth/types.d.ts.map +1 -0
- package/dist/oauth/types.js +10 -0
- package/dist/oauth/types.js.map +1 -0
- package/dist/runtime/types.d.ts +2 -0
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/types.js.map +1 -1
- package/dist/storage/locking.d.ts +4 -0
- package/dist/storage/locking.d.ts.map +1 -1
- package/dist/storage/locking.js +4 -0
- package/dist/storage/locking.js.map +1 -1
- package/dist/test-fixtures.d.ts.map +1 -1
- package/dist/test-fixtures.js +5 -0
- package/dist/test-fixtures.js.map +1 -1
- package/dist/webhooks/deduplication.d.ts +117 -0
- package/dist/webhooks/deduplication.d.ts.map +1 -0
- package/dist/webhooks/deduplication.js +258 -0
- package/dist/webhooks/deduplication.js.map +1 -0
- package/dist/webhooks/handlers/gmail.d.ts +39 -0
- package/dist/webhooks/handlers/gmail.d.ts.map +1 -0
- package/dist/webhooks/handlers/gmail.js +56 -0
- package/dist/webhooks/handlers/gmail.js.map +1 -0
- package/dist/webhooks/handlers/gocardless.d.ts +39 -0
- package/dist/webhooks/handlers/gocardless.d.ts.map +1 -0
- package/dist/webhooks/handlers/gocardless.js +73 -0
- package/dist/webhooks/handlers/gocardless.js.map +1 -0
- package/dist/webhooks/handlers/index.d.ts +10 -0
- package/dist/webhooks/handlers/index.d.ts.map +1 -0
- package/dist/webhooks/handlers/index.js +10 -0
- package/dist/webhooks/handlers/index.js.map +1 -0
- package/dist/webhooks/handlers/plaid.d.ts +73 -0
- package/dist/webhooks/handlers/plaid.d.ts.map +1 -0
- package/dist/webhooks/handlers/plaid.js +169 -0
- package/dist/webhooks/handlers/plaid.js.map +1 -0
- package/dist/webhooks/index.d.ts +15 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +17 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/processor.d.ts +76 -0
- package/dist/webhooks/processor.d.ts.map +1 -0
- package/dist/webhooks/processor.js +116 -0
- package/dist/webhooks/processor.js.map +1 -0
- package/dist/webhooks/router.d.ts +80 -0
- package/dist/webhooks/router.d.ts.map +1 -0
- package/dist/webhooks/router.js +107 -0
- package/dist/webhooks/router.js.map +1 -0
- package/dist/webhooks/security.d.ts +90 -0
- package/dist/webhooks/security.d.ts.map +1 -0
- package/dist/webhooks/security.js +138 -0
- package/dist/webhooks/security.js.map +1 -0
- package/dist/webhooks/sync-rate-limiter.d.ts +138 -0
- package/dist/webhooks/sync-rate-limiter.d.ts.map +1 -0
- package/dist/webhooks/sync-rate-limiter.js +228 -0
- package/dist/webhooks/sync-rate-limiter.js.map +1 -0
- package/dist/webhooks/types.d.ts +140 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/types.js +18 -0
- package/dist/webhooks/types.js.map +1 -0
- 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"}
|
package/dist/runtime/types.d.ts
CHANGED
|
@@ -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":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;IAEpC;;OAEG;IACH,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC,CAAA;IAE1C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAEtE;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAA;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAEzC;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;IAE1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAA;CAC5D;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,MAAM,EAAE,cAAc,CAAA;IAEtB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAA;IAErB;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT;;WAEG;QACH,UAAU,IAAI,MAAM,CAAA;QAEpB;;WAEG;QACH,UAAU,IAAI,MAAM,CAAA;QAEpB;;WAEG;QACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KACpC,CAAA;CACF;AAED;;GAEG;AACH,qBAAa,aAAc,YAAW,MAAM;IAC1C,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKhC;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,SAAS,CAAmD;IAEpE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAazC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;IAO1D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI;CAM5D;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IAC7C,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IAEpC,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAIpC,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAU1C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;CAGzD"}
|
|
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":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/storage/locking.js
CHANGED
|
@@ -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,
|
|
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"}
|