@openai-oauth/web 2.0.0-beta.3 → 2.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -10
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +0 -1
- package/package.json +9 -6
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIN,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAIvB,KAAK,YAAY,EACjB,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAA;AAEhD,MAAM,MAAM,0BAA0B,GAAG;IACxC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,CAAA;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAE3D,MAAM,MAAM,mBAAmB,GAAG;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,WAAW,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,qBAAqB,GAAG;IAC9D,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEtD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CACnC,yBAAyB,EACzB,aAAa,CACb,GAAG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,UAAU,GAAG,OAAO,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;CACZ,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC3B,YAAY,CAAC,EAAE,YAAY,CAAA;CAC3B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -112,11 +112,18 @@ const requestToPromise = (request) => new Promise((resolve, reject) => {
|
|
|
112
112
|
request.onsuccess = () => resolve(request.result);
|
|
113
113
|
request.onerror = () => reject(request.error ?? new Error("IndexedDB request failed."));
|
|
114
114
|
});
|
|
115
|
+
const transactionToPromise = (transaction) => new Promise((resolve, reject) => {
|
|
116
|
+
transaction.oncomplete = () => resolve();
|
|
117
|
+
transaction.onerror = () => reject(transaction.error ?? new Error("IndexedDB transaction failed."));
|
|
118
|
+
transaction.onabort = () => reject(transaction.error ?? new Error("IndexedDB transaction was aborted."));
|
|
119
|
+
});
|
|
115
120
|
const openDatabaseRequest = (settings, version) => {
|
|
116
121
|
assertBrowserStorage();
|
|
117
122
|
const browserWindow = assertBrowserWindow();
|
|
118
123
|
return new Promise((resolve, reject) => {
|
|
124
|
+
let settled = false;
|
|
119
125
|
const timeout = browserWindow.setTimeout(() => {
|
|
126
|
+
settled = true;
|
|
120
127
|
reject(new Error("Timed out opening browser session storage."));
|
|
121
128
|
}, 2000);
|
|
122
129
|
const request = typeof version === "number"
|
|
@@ -130,14 +137,25 @@ const openDatabaseRequest = (settings, version) => {
|
|
|
130
137
|
};
|
|
131
138
|
request.onsuccess = () => {
|
|
132
139
|
browserWindow.clearTimeout(timeout);
|
|
140
|
+
if (settled) {
|
|
141
|
+
request.result.close();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
settled = true;
|
|
133
145
|
resolve(request.result);
|
|
134
146
|
};
|
|
135
147
|
request.onerror = () => {
|
|
136
148
|
browserWindow.clearTimeout(timeout);
|
|
149
|
+
if (settled)
|
|
150
|
+
return;
|
|
151
|
+
settled = true;
|
|
137
152
|
reject(request.error ?? new Error("Could not open IndexedDB."));
|
|
138
153
|
};
|
|
139
154
|
request.onblocked = () => {
|
|
140
155
|
browserWindow.clearTimeout(timeout);
|
|
156
|
+
if (settled)
|
|
157
|
+
return;
|
|
158
|
+
settled = true;
|
|
141
159
|
reject(new Error("Browser session storage is blocked."));
|
|
142
160
|
};
|
|
143
161
|
});
|
|
@@ -160,8 +178,21 @@ const withStore = async (settings, mode, fn) => {
|
|
|
160
178
|
const db = await openDatabase(settings);
|
|
161
179
|
try {
|
|
162
180
|
const tx = db.transaction(settings.storeName, mode);
|
|
181
|
+
const completed = transactionToPromise(tx);
|
|
163
182
|
const store = tx.objectStore(settings.storeName);
|
|
164
|
-
|
|
183
|
+
try {
|
|
184
|
+
const result = await fn(store);
|
|
185
|
+
await completed;
|
|
186
|
+
return result;
|
|
187
|
+
}
|
|
188
|
+
catch (error) {
|
|
189
|
+
try {
|
|
190
|
+
tx.abort();
|
|
191
|
+
}
|
|
192
|
+
catch { }
|
|
193
|
+
await completed.catch(() => undefined);
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
165
196
|
}
|
|
166
197
|
finally {
|
|
167
198
|
db.close();
|
|
@@ -225,7 +256,16 @@ const decryptSession = async (key, encrypted) => {
|
|
|
225
256
|
name: "AES-GCM",
|
|
226
257
|
iv: base64ToBytes(encrypted.iv),
|
|
227
258
|
}, key, base64ToBytes(encrypted.ciphertext));
|
|
228
|
-
|
|
259
|
+
const session = JSON.parse(textDecoder.decode(plaintext));
|
|
260
|
+
if (typeof session !== "object" ||
|
|
261
|
+
session === null ||
|
|
262
|
+
!("accessToken" in session) ||
|
|
263
|
+
typeof session.accessToken !== "string" ||
|
|
264
|
+
!("accountId" in session) ||
|
|
265
|
+
typeof session.accountId !== "string") {
|
|
266
|
+
throw new Error("The stored OpenAI OAuth session is malformed.");
|
|
267
|
+
}
|
|
268
|
+
return session;
|
|
229
269
|
};
|
|
230
270
|
export const createSessionStore = (options = {}) => {
|
|
231
271
|
const settings = {
|
|
@@ -234,16 +274,15 @@ export const createSessionStore = (options = {}) => {
|
|
|
234
274
|
};
|
|
235
275
|
return {
|
|
236
276
|
get: async () => {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
if (!encrypted) {
|
|
240
|
-
return null;
|
|
241
|
-
}
|
|
242
|
-
return decryptSession(await getCryptoKey(settings), encrypted);
|
|
243
|
-
}
|
|
244
|
-
catch {
|
|
277
|
+
const encrypted = await getRecord(settings, settings.sessionKey);
|
|
278
|
+
if (!encrypted) {
|
|
245
279
|
return null;
|
|
246
280
|
}
|
|
281
|
+
if (typeof encrypted.iv !== "string" ||
|
|
282
|
+
typeof encrypted.ciphertext !== "string") {
|
|
283
|
+
throw new Error("The stored OpenAI OAuth session is malformed.");
|
|
284
|
+
}
|
|
285
|
+
return decryptSession(await getCryptoKey(settings), encrypted);
|
|
247
286
|
},
|
|
248
287
|
set: async (session) => {
|
|
249
288
|
const key = await getCryptoKey(settings);
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EAEX,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,2BAA2B,GAAG;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AA6BD,eAAO,MAAM,iBAAiB,GAC7B,OAAO,OAAO,GAAG,OAAO,EACxB,UAAS,2BAAgC,KACvC,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EAEX,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,2BAA2B,GAAG;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AA6BD,eAAO,MAAM,iBAAiB,GAC7B,OAAO,OAAO,GAAG,OAAO,EACxB,UAAS,2BAAgC,KACvC,WAYF,CAAA"}
|
package/dist/server.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openai-oauth/web",
|
|
3
|
-
"version": "2.0.0-beta.
|
|
3
|
+
"version": "2.0.0-beta.4",
|
|
4
4
|
"description": "Browser credential storage and web utilities for openai-oauth.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"openai",
|
|
@@ -11,6 +11,9 @@
|
|
|
11
11
|
"web"
|
|
12
12
|
],
|
|
13
13
|
"type": "module",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=20"
|
|
16
|
+
},
|
|
14
17
|
"sideEffects": false,
|
|
15
18
|
"main": "./dist/index.js",
|
|
16
19
|
"types": "./dist/index.d.ts",
|
|
@@ -32,7 +35,7 @@
|
|
|
32
35
|
"LICENSE"
|
|
33
36
|
],
|
|
34
37
|
"scripts": {
|
|
35
|
-
"build": "tsc -p tsconfig.build.json",
|
|
38
|
+
"build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.build.json",
|
|
36
39
|
"prepublishOnly": "bun run build",
|
|
37
40
|
"typecheck": "tsc --noEmit",
|
|
38
41
|
"test": "vitest run"
|
|
@@ -41,12 +44,12 @@
|
|
|
41
44
|
"access": "public"
|
|
42
45
|
},
|
|
43
46
|
"dependencies": {
|
|
44
|
-
"@openai-oauth/core": "2.0.0-beta.
|
|
47
|
+
"@openai-oauth/core": "2.0.0-beta.4"
|
|
45
48
|
},
|
|
46
49
|
"devDependencies": {
|
|
47
|
-
"
|
|
48
|
-
"typescript": "
|
|
49
|
-
"vitest": "
|
|
50
|
+
"fake-indexeddb": "6.2.5",
|
|
51
|
+
"typescript": "5.9.2",
|
|
52
|
+
"vitest": "4.1.10"
|
|
50
53
|
},
|
|
51
54
|
"author": "EvanZhouDev",
|
|
52
55
|
"license": "AGPL-3.0-only",
|