sqlite-cookie-parser 1.0.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 (158) hide show
  1. package/README.md +164 -0
  2. package/dist/bravoLinuxCookie.d.ts +5 -0
  3. package/dist/bravoLinuxCookie.js +12 -0
  4. package/dist/bravoLinuxCookie.js.map +1 -0
  5. package/dist/bravoMacCookie.d.ts +5 -0
  6. package/dist/bravoMacCookie.js +12 -0
  7. package/dist/bravoMacCookie.js.map +1 -0
  8. package/dist/bravoWindowsCookie.d.ts +5 -0
  9. package/dist/bravoWindowsCookie.js +12 -0
  10. package/dist/bravoWindowsCookie.js.map +1 -0
  11. package/dist/browsers/bravo.d.ts +5 -0
  12. package/dist/browsers/bravo.js +17 -0
  13. package/dist/browsers/bravo.js.map +1 -0
  14. package/dist/browsers/chrome.d.ts +5 -0
  15. package/dist/browsers/chrome.js +17 -0
  16. package/dist/browsers/chrome.js.map +1 -0
  17. package/dist/browsers/edge.d.ts +5 -0
  18. package/dist/browsers/edge.js +17 -0
  19. package/dist/browsers/edge.js.map +1 -0
  20. package/dist/browsers/firefoxCookie.d.ts +12 -0
  21. package/dist/browsers/firefoxCookie.js +8 -0
  22. package/dist/browsers/firefoxCookie.js.map +1 -0
  23. package/dist/browsers/opera.d.ts +5 -0
  24. package/dist/browsers/opera.js +17 -0
  25. package/dist/browsers/opera.js.map +1 -0
  26. package/dist/browsers/safariCookie.d.ts +12 -0
  27. package/dist/browsers/safariCookie.js +8 -0
  28. package/dist/browsers/safariCookie.js.map +1 -0
  29. package/dist/browsers/vivaldi.d.ts +5 -0
  30. package/dist/browsers/vivaldi.js +17 -0
  31. package/dist/browsers/vivaldi.js.map +1 -0
  32. package/dist/chromeLinuxCookie.d.ts +5 -0
  33. package/dist/chromeLinuxCookie.js +12 -0
  34. package/dist/chromeLinuxCookie.js.map +1 -0
  35. package/dist/chromeMacCookie.d.ts +5 -0
  36. package/dist/chromeMacCookie.js +12 -0
  37. package/dist/chromeMacCookie.js.map +1 -0
  38. package/dist/chromeWindowsCookie.d.ts +5 -0
  39. package/dist/chromeWindowsCookie.js +12 -0
  40. package/dist/chromeWindowsCookie.js.map +1 -0
  41. package/dist/chunk-2ILP4UJD.js +69 -0
  42. package/dist/chunk-2ILP4UJD.js.map +1 -0
  43. package/dist/chunk-4G6NLIPV.js +98 -0
  44. package/dist/chunk-4G6NLIPV.js.map +1 -0
  45. package/dist/chunk-5AEUDMIX.js +68 -0
  46. package/dist/chunk-5AEUDMIX.js.map +1 -0
  47. package/dist/chunk-5AJFPLWB.js +98 -0
  48. package/dist/chunk-5AJFPLWB.js.map +1 -0
  49. package/dist/chunk-6OYYWSIJ.js +58 -0
  50. package/dist/chunk-6OYYWSIJ.js.map +1 -0
  51. package/dist/chunk-A3YGBITD.js +221 -0
  52. package/dist/chunk-A3YGBITD.js.map +1 -0
  53. package/dist/chunk-AR5Q6KM4.js +37 -0
  54. package/dist/chunk-AR5Q6KM4.js.map +1 -0
  55. package/dist/chunk-D23AYBOE.js +35 -0
  56. package/dist/chunk-D23AYBOE.js.map +1 -0
  57. package/dist/chunk-E6CQFEXM.js +98 -0
  58. package/dist/chunk-E6CQFEXM.js.map +1 -0
  59. package/dist/chunk-EPL3V4O3.js +41 -0
  60. package/dist/chunk-EPL3V4O3.js.map +1 -0
  61. package/dist/chunk-EZBYP7NP.js +58 -0
  62. package/dist/chunk-EZBYP7NP.js.map +1 -0
  63. package/dist/chunk-GRIZYEBN.js +58 -0
  64. package/dist/chunk-GRIZYEBN.js.map +1 -0
  65. package/dist/chunk-HOGGS6QP.js +35 -0
  66. package/dist/chunk-HOGGS6QP.js.map +1 -0
  67. package/dist/chunk-IXZPT56H.js +35 -0
  68. package/dist/chunk-IXZPT56H.js.map +1 -0
  69. package/dist/chunk-J2UYSXFG.js +69 -0
  70. package/dist/chunk-J2UYSXFG.js.map +1 -0
  71. package/dist/chunk-JTBFDYPY.js +244 -0
  72. package/dist/chunk-JTBFDYPY.js.map +1 -0
  73. package/dist/chunk-LTLRZZW3.js +41 -0
  74. package/dist/chunk-LTLRZZW3.js.map +1 -0
  75. package/dist/chunk-MLKERL3L.js +98 -0
  76. package/dist/chunk-MLKERL3L.js.map +1 -0
  77. package/dist/chunk-NGBAATI3.js +35 -0
  78. package/dist/chunk-NGBAATI3.js.map +1 -0
  79. package/dist/chunk-PT5JK5UI.js +98 -0
  80. package/dist/chunk-PT5JK5UI.js.map +1 -0
  81. package/dist/chunk-Q2LDNBEA.js +35 -0
  82. package/dist/chunk-Q2LDNBEA.js.map +1 -0
  83. package/dist/chunk-QCW7AUP6.js +62 -0
  84. package/dist/chunk-QCW7AUP6.js.map +1 -0
  85. package/dist/chunk-SRZIPU62.js +69 -0
  86. package/dist/chunk-SRZIPU62.js.map +1 -0
  87. package/dist/chunk-SSXWHBKV.js +69 -0
  88. package/dist/chunk-SSXWHBKV.js.map +1 -0
  89. package/dist/chunk-TWA6YYS5.js +58 -0
  90. package/dist/chunk-TWA6YYS5.js.map +1 -0
  91. package/dist/chunk-TYLH6G3Z.js +52 -0
  92. package/dist/chunk-TYLH6G3Z.js.map +1 -0
  93. package/dist/chunk-U4G74MHA.js +69 -0
  94. package/dist/chunk-U4G74MHA.js.map +1 -0
  95. package/dist/chunk-UR6BPQ2T.js +103 -0
  96. package/dist/chunk-UR6BPQ2T.js.map +1 -0
  97. package/dist/chunk-XDL34EPI.js +35 -0
  98. package/dist/chunk-XDL34EPI.js.map +1 -0
  99. package/dist/chunk-YD3PNZMV.js +447 -0
  100. package/dist/chunk-YD3PNZMV.js.map +1 -0
  101. package/dist/common.d.ts +15 -0
  102. package/dist/common.js +9 -0
  103. package/dist/common.js.map +1 -0
  104. package/dist/edgeLinuxCookie.d.ts +5 -0
  105. package/dist/edgeLinuxCookie.js +12 -0
  106. package/dist/edgeLinuxCookie.js.map +1 -0
  107. package/dist/edgeMacCookie.d.ts +5 -0
  108. package/dist/edgeMacCookie.js +12 -0
  109. package/dist/edgeMacCookie.js.map +1 -0
  110. package/dist/edgeWindowsCookie.d.ts +5 -0
  111. package/dist/edgeWindowsCookie.js +12 -0
  112. package/dist/edgeWindowsCookie.js.map +1 -0
  113. package/dist/index.d.ts +2 -0
  114. package/dist/index.js +38 -0
  115. package/dist/index.js.map +1 -0
  116. package/dist/operaLinuxCookie.d.ts +5 -0
  117. package/dist/operaLinuxCookie.js +12 -0
  118. package/dist/operaLinuxCookie.js.map +1 -0
  119. package/dist/operaMacCookie.d.ts +5 -0
  120. package/dist/operaMacCookie.js +12 -0
  121. package/dist/operaMacCookie.js.map +1 -0
  122. package/dist/operaWindowsCookie.d.ts +5 -0
  123. package/dist/operaWindowsCookie.js +12 -0
  124. package/dist/operaWindowsCookie.js.map +1 -0
  125. package/dist/publicApi.d.ts +20 -0
  126. package/dist/publicApi.js +38 -0
  127. package/dist/publicApi.js.map +1 -0
  128. package/dist/types.d.ts +98 -0
  129. package/dist/types.js +1 -0
  130. package/dist/types.js.map +1 -0
  131. package/dist/util/crypto.d.ts +9 -0
  132. package/dist/util/crypto.js +11 -0
  133. package/dist/util/crypto.js.map +1 -0
  134. package/dist/util/fileHelper.d.ts +4 -0
  135. package/dist/util/fileHelper.js +9 -0
  136. package/dist/util/fileHelper.js.map +1 -0
  137. package/dist/util/linuxKeyring.d.ts +11 -0
  138. package/dist/util/linuxKeyring.js +8 -0
  139. package/dist/util/linuxKeyring.js.map +1 -0
  140. package/dist/util/macKeyChain.d.ts +16 -0
  141. package/dist/util/macKeyChain.js +10 -0
  142. package/dist/util/macKeyChain.js.map +1 -0
  143. package/dist/util/processExecutor.d.ts +7 -0
  144. package/dist/util/processExecutor.js +7 -0
  145. package/dist/util/processExecutor.js.map +1 -0
  146. package/dist/util/windowsDpapi.d.ts +9 -0
  147. package/dist/util/windowsDpapi.js +8 -0
  148. package/dist/util/windowsDpapi.js.map +1 -0
  149. package/dist/vivaldiLinuxCookie.d.ts +5 -0
  150. package/dist/vivaldiLinuxCookie.js +12 -0
  151. package/dist/vivaldiLinuxCookie.js.map +1 -0
  152. package/dist/vivaldiMacCookie.d.ts +5 -0
  153. package/dist/vivaldiMacCookie.js +12 -0
  154. package/dist/vivaldiMacCookie.js.map +1 -0
  155. package/dist/vivaldiWindowsCookie.d.ts +5 -0
  156. package/dist/vivaldiWindowsCookie.js +12 -0
  157. package/dist/vivaldiWindowsCookie.js.map +1 -0
  158. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,164 @@
1
+ # sqlite-cookie-parser
2
+
3
+ Extract cookies from browser local storage and convert them to HTTP Cookie header format.
4
+
5
+ ## Features
6
+
7
+ - Support for 7 browsers: Chrome, Edge, Firefox, Safari, Opera, Brave, Vivaldi
8
+ - Cross-platform: macOS, Windows, Linux
9
+ - Automatic cookie decryption (Chromium-based browsers)
10
+ - Filter by origin, cookie name, expiration, and partition key (CHIPS)
11
+ - Convert cookies to HTTP `Cookie` header string
12
+ - Full TypeScript support
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install sqlite-cookie-parser
18
+ ```
19
+
20
+ ## Quick Start
21
+
22
+ ```typescript
23
+ import { getCookiesFromBrowser, toCookieHeader } from 'sqlite-cookie-parser';
24
+
25
+ // Extract cookies from Chrome for specific origins
26
+ const { cookies, warnings } = await getCookiesFromBrowser({
27
+ browserName: 'chrome',
28
+ origins: ['https://github.com'],
29
+ });
30
+
31
+ // Convert to Cookie header string
32
+ const header = toCookieHeader(cookies, { removeDuplicates: true });
33
+
34
+ // Use in HTTP request
35
+ const response = await fetch('https://github.com/api/user', {
36
+ headers: { Cookie: header },
37
+ });
38
+ ```
39
+
40
+ ## API
41
+
42
+ ### `getCookiesFromBrowser(params)`
43
+
44
+ Extract cookies from a browser's local storage.
45
+
46
+ **Parameters** (`GetCookiesFromBrowserParams`):
47
+
48
+ | Field | Type | Required | Default | Description |
49
+ |-------|------|----------|---------|-------------|
50
+ | `browserName` | `BrowserName` | Yes | - | `'chrome'` \| `'edge'` \| `'firefox'` \| `'safari'` \| `'opera'` \| `'brave'` \| `'vivaldi'` |
51
+ | `origins` | `string[]` | Yes | - | Origins to extract cookies for (e.g. `['https://example.com']`) |
52
+ | `cookieNames` | `string[]` | No | all | Filter by cookie names |
53
+ | `profile` | `string` | No | `'Default'` | Browser profile name |
54
+ | `includeExpired` | `boolean` | No | `false` | Include expired cookies |
55
+ | `includePartitioned` | `boolean` | No | `false` | Include partitioned cookies (CHIPS) |
56
+
57
+ **Returns:** `Promise<GetCookiesResult>`
58
+
59
+ ```typescript
60
+ interface GetCookiesResult {
61
+ cookies: Cookie[];
62
+ warnings: string[];
63
+ }
64
+ ```
65
+
66
+ **Examples:**
67
+
68
+ ```typescript
69
+ // Get all cookies for a domain
70
+ const { cookies } = await getCookiesFromBrowser({
71
+ browserName: 'chrome',
72
+ origins: ['https://github.com'],
73
+ });
74
+
75
+ // Filter specific cookies from Firefox
76
+ const { cookies } = await getCookiesFromBrowser({
77
+ browserName: 'firefox',
78
+ origins: ['https://example.com'],
79
+ cookieNames: ['session_id', 'csrf_token'],
80
+ });
81
+
82
+ // Use a specific profile and include expired cookies
83
+ const { cookies } = await getCookiesFromBrowser({
84
+ browserName: 'edge',
85
+ origins: ['https://example.com'],
86
+ profile: 'Profile 1',
87
+ includeExpired: true,
88
+ });
89
+ ```
90
+
91
+ ### `toCookieHeader(cookies, options)`
92
+
93
+ Convert a cookie array to an HTTP `Cookie` header string.
94
+
95
+ **Parameters:**
96
+
97
+ | Field | Type | Description |
98
+ |-------|------|-------------|
99
+ | `cookies` | `Cookie[]` | Array of cookie objects |
100
+ | `options.removeDuplicates` | `boolean` | Keep only the first occurrence of each cookie name |
101
+ | `options.sortByName` | `boolean` | Sort cookies alphabetically by name |
102
+
103
+ **Returns:** `string` (e.g. `"name1=value1; name2=value2"`)
104
+
105
+ ```typescript
106
+ const header = toCookieHeader(cookies, {
107
+ removeDuplicates: true,
108
+ sortByName: true,
109
+ });
110
+ ```
111
+
112
+ ## Cookie Object
113
+
114
+ ```typescript
115
+ interface Cookie {
116
+ name: string;
117
+ value: string | null; // null if decryption failed
118
+ domain: string;
119
+ path: string;
120
+ expires?: number; // ms since epoch, undefined for session cookies
121
+ secure: boolean;
122
+ httpOnly: boolean;
123
+ sameSite?: 'none' | 'lax' | 'strict';
124
+ partitionKey?: string; // CHIPS partition key
125
+ source: {
126
+ browser: BrowserName;
127
+ cookieFilePath: string;
128
+ };
129
+ }
130
+ ```
131
+
132
+ ## Supported Browsers & Platforms
133
+
134
+ | Browser | macOS | Windows | Linux |
135
+ |---------|-------|---------|-------|
136
+ | Chrome | Yes | Yes | Yes |
137
+ | Edge | Yes | Yes | Yes |
138
+ | Firefox | Yes | Yes | Yes |
139
+ | Safari | Yes | - | - |
140
+ | Opera | Yes | Yes | Yes |
141
+ | Brave | Yes | Yes | Yes |
142
+ | Vivaldi | Yes | Yes | Yes |
143
+
144
+ ## Cookie Decryption
145
+
146
+ Chromium-based browsers (Chrome, Edge, Opera, Brave, Vivaldi) encrypt cookie values. This library handles decryption automatically:
147
+
148
+ - **macOS**: Retrieves encryption keys from the macOS Keychain
149
+ - **Windows**: Decrypts using DPAPI via the browser's Local State file
150
+ - **Linux**: Retrieves keys from the system keyring (`secret-tool`)
151
+
152
+ Firefox and Safari do not encrypt cookie values.
153
+
154
+ If decryption fails, the cookie's `value` will be `null`.
155
+
156
+ ## Notes
157
+
158
+ - The browser should be closed while reading cookies, otherwise the database may be locked
159
+ - Requires read permission to browser profile directories
160
+ - Firefox session cookies are read from the session recovery file (`recovery.jsonlz4`)
161
+
162
+ ## License
163
+
164
+ MIT
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromBraveLinuxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromBraveLinuxSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromBraveLinuxSqlite
3
+ } from "./chunk-EZBYP7NP.js";
4
+ import "./chunk-EPL3V4O3.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromBraveLinuxSqlite
11
+ };
12
+ //# sourceMappingURL=bravoLinuxCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromBraveMacSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromBraveMacSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromBraveMacSqlite
3
+ } from "./chunk-SSXWHBKV.js";
4
+ import "./chunk-Q2LDNBEA.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromBraveMacSqlite
11
+ };
12
+ //# sourceMappingURL=bravoMacCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromBraveWindowsSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromBraveWindowsSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromBraveWindowsSqlite
3
+ } from "./chunk-PT5JK5UI.js";
4
+ import "./chunk-AR5Q6KM4.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromBraveWindowsSqlite
11
+ };
12
+ //# sourceMappingURL=bravoWindowsCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ declare function getCookiesFromBrave(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromBrave };
@@ -0,0 +1,17 @@
1
+ import {
2
+ getCookiesFromBrave
3
+ } from "../chunk-XDL34EPI.js";
4
+ import "../chunk-EZBYP7NP.js";
5
+ import "../chunk-SSXWHBKV.js";
6
+ import "../chunk-PT5JK5UI.js";
7
+ import "../chunk-Q2LDNBEA.js";
8
+ import "../chunk-AR5Q6KM4.js";
9
+ import "../chunk-EPL3V4O3.js";
10
+ import "../chunk-UR6BPQ2T.js";
11
+ import "../chunk-TYLH6G3Z.js";
12
+ import "../chunk-LTLRZZW3.js";
13
+ import "../chunk-JTBFDYPY.js";
14
+ export {
15
+ getCookiesFromBrave
16
+ };
17
+ //# sourceMappingURL=bravo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ declare function getCookiesFromChrome(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromChrome };
@@ -0,0 +1,17 @@
1
+ import {
2
+ getCookiesFromChrome
3
+ } from "../chunk-NGBAATI3.js";
4
+ import "../chunk-6OYYWSIJ.js";
5
+ import "../chunk-U4G74MHA.js";
6
+ import "../chunk-Q2LDNBEA.js";
7
+ import "../chunk-MLKERL3L.js";
8
+ import "../chunk-AR5Q6KM4.js";
9
+ import "../chunk-EPL3V4O3.js";
10
+ import "../chunk-UR6BPQ2T.js";
11
+ import "../chunk-TYLH6G3Z.js";
12
+ import "../chunk-LTLRZZW3.js";
13
+ import "../chunk-JTBFDYPY.js";
14
+ export {
15
+ getCookiesFromChrome
16
+ };
17
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ declare function getCookiesFromEdge(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromEdge };
@@ -0,0 +1,17 @@
1
+ import {
2
+ getCookiesFromEdge
3
+ } from "../chunk-D23AYBOE.js";
4
+ import "../chunk-SRZIPU62.js";
5
+ import "../chunk-E6CQFEXM.js";
6
+ import "../chunk-Q2LDNBEA.js";
7
+ import "../chunk-AR5Q6KM4.js";
8
+ import "../chunk-QCW7AUP6.js";
9
+ import "../chunk-EPL3V4O3.js";
10
+ import "../chunk-UR6BPQ2T.js";
11
+ import "../chunk-TYLH6G3Z.js";
12
+ import "../chunk-LTLRZZW3.js";
13
+ import "../chunk-JTBFDYPY.js";
14
+ export {
15
+ getCookiesFromEdge
16
+ };
17
+ //# sourceMappingURL=edge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,12 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ /**
4
+ * Get cookies from Firefox (both persistent cookies from SQLite and session cookies from sessionstore)
5
+ * @param options - Options for getting cookies
6
+ * @param origins - List of origins to filter cookies by
7
+ * @param cookieNames - Set of cookie names to filter (null for all)
8
+ * @returns Promise resolving to cookies and warnings
9
+ */
10
+ declare function getCookiesFromFirefoxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
11
+
12
+ export { getCookiesFromFirefoxSqlite };
@@ -0,0 +1,8 @@
1
+ import {
2
+ getCookiesFromFirefoxSqlite
3
+ } from "../chunk-YD3PNZMV.js";
4
+ import "../chunk-JTBFDYPY.js";
5
+ export {
6
+ getCookiesFromFirefoxSqlite
7
+ };
8
+ //# sourceMappingURL=firefoxCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ declare function getCookiesFromOpera(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromOpera };
@@ -0,0 +1,17 @@
1
+ import {
2
+ getCookiesFromOpera
3
+ } from "../chunk-HOGGS6QP.js";
4
+ import "../chunk-TWA6YYS5.js";
5
+ import "../chunk-2ILP4UJD.js";
6
+ import "../chunk-5AJFPLWB.js";
7
+ import "../chunk-Q2LDNBEA.js";
8
+ import "../chunk-AR5Q6KM4.js";
9
+ import "../chunk-EPL3V4O3.js";
10
+ import "../chunk-UR6BPQ2T.js";
11
+ import "../chunk-TYLH6G3Z.js";
12
+ import "../chunk-LTLRZZW3.js";
13
+ import "../chunk-JTBFDYPY.js";
14
+ export {
15
+ getCookiesFromOpera
16
+ };
17
+ //# sourceMappingURL=opera.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,12 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ /**
4
+ * Get cookies from Safari's Cookies.binarycookies file
5
+ * @param options - Options for getting cookies
6
+ * @param origins - List of origins to filter cookies by
7
+ * @param cookieNames - Set of cookie names to filter (null for all)
8
+ * @returns Promise resolving to cookies and warnings
9
+ */
10
+ declare function getCookiesFromSafari(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
11
+
12
+ export { getCookiesFromSafari };
@@ -0,0 +1,8 @@
1
+ import {
2
+ getCookiesFromSafari
3
+ } from "../chunk-A3YGBITD.js";
4
+ import "../chunk-JTBFDYPY.js";
5
+ export {
6
+ getCookiesFromSafari
7
+ };
8
+ //# sourceMappingURL=safariCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from '../types.js';
2
+
3
+ declare function getCookiesFromVivaldi(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromVivaldi };
@@ -0,0 +1,17 @@
1
+ import {
2
+ getCookiesFromVivaldi
3
+ } from "../chunk-IXZPT56H.js";
4
+ import "../chunk-GRIZYEBN.js";
5
+ import "../chunk-J2UYSXFG.js";
6
+ import "../chunk-4G6NLIPV.js";
7
+ import "../chunk-Q2LDNBEA.js";
8
+ import "../chunk-AR5Q6KM4.js";
9
+ import "../chunk-EPL3V4O3.js";
10
+ import "../chunk-UR6BPQ2T.js";
11
+ import "../chunk-TYLH6G3Z.js";
12
+ import "../chunk-LTLRZZW3.js";
13
+ import "../chunk-JTBFDYPY.js";
14
+ export {
15
+ getCookiesFromVivaldi
16
+ };
17
+ //# sourceMappingURL=vivaldi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromChromeLinuxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromChromeLinuxSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromChromeLinuxSqlite
3
+ } from "./chunk-6OYYWSIJ.js";
4
+ import "./chunk-EPL3V4O3.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromChromeLinuxSqlite
11
+ };
12
+ //# sourceMappingURL=chromeLinuxCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromChromeSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromChromeSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromChromeSqlite
3
+ } from "./chunk-U4G74MHA.js";
4
+ import "./chunk-Q2LDNBEA.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromChromeSqlite
11
+ };
12
+ //# sourceMappingURL=chromeMacCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,5 @@
1
+ import { GetCookiesOptions, GetCookiesResult } from './types.js';
2
+
3
+ declare function getCookiesFromChromeWindowsSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
4
+
5
+ export { getCookiesFromChromeWindowsSqlite };
@@ -0,0 +1,12 @@
1
+ import {
2
+ getCookiesFromChromeWindowsSqlite
3
+ } from "./chunk-MLKERL3L.js";
4
+ import "./chunk-AR5Q6KM4.js";
5
+ import "./chunk-UR6BPQ2T.js";
6
+ import "./chunk-TYLH6G3Z.js";
7
+ import "./chunk-LTLRZZW3.js";
8
+ import "./chunk-JTBFDYPY.js";
9
+ export {
10
+ getCookiesFromChromeWindowsSqlite
11
+ };
12
+ //# sourceMappingURL=chromeWindowsCookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,69 @@
1
+ import {
2
+ findFirstMacKeyChainPassword
3
+ } from "./chunk-Q2LDNBEA.js";
4
+ import {
5
+ decryptChomiumAES128CBCCookieValue,
6
+ getAES128CBCKey
7
+ } from "./chunk-UR6BPQ2T.js";
8
+ import {
9
+ resolveBrowserDefaultorSpecificDBPath
10
+ } from "./chunk-TYLH6G3Z.js";
11
+ import {
12
+ getCookiesFromChromiumSqliteDB
13
+ } from "./chunk-JTBFDYPY.js";
14
+
15
+ // src/operaMacCookie.ts
16
+ import { homedir } from "os";
17
+ async function getCookiesFromOperaMacSqlite(options, origins, cookieNames) {
18
+ const sqlDBPath = resolveOperaMacDBPath(options.profile);
19
+ if (!sqlDBPath) {
20
+ return {
21
+ cookies: [],
22
+ warnings: ["Could not resolve Opera cookie database path."]
23
+ };
24
+ }
25
+ const warnings = [];
26
+ const passwordResult = await findFirstMacKeyChainPassword(
27
+ ["Opera Safe Storage"],
28
+ "Opera",
29
+ 5e3,
30
+ "Opera Safe Storage"
31
+ );
32
+ if (!passwordResult.success) {
33
+ warnings.push(`Failed to get Opera decryption key: ${passwordResult.error}`);
34
+ return { cookies: [], warnings };
35
+ }
36
+ const operaPassword = passwordResult.password.trim();
37
+ if (!operaPassword) {
38
+ warnings.push("Opera decryption key is empty.");
39
+ return { cookies: [], warnings };
40
+ }
41
+ const key = getAES128CBCKey(operaPassword, 1003);
42
+ const decryptFn = (encryptedValue) => {
43
+ return decryptChomiumAES128CBCCookieValue(encryptedValue, [key]);
44
+ };
45
+ const fileOptions = {
46
+ cookieFilePath: sqlDBPath
47
+ };
48
+ fileOptions.profile = options.profile;
49
+ fileOptions.includeExpired = options.includeExpired;
50
+ const { cookies, warnings: dbWarnings } = await getCookiesFromChromiumSqliteDB(
51
+ fileOptions,
52
+ origins,
53
+ cookieNames,
54
+ "opera",
55
+ decryptFn
56
+ );
57
+ warnings.push(...dbWarnings);
58
+ return { cookies, warnings };
59
+ }
60
+ function resolveOperaMacDBPath(profile) {
61
+ const homeDir = homedir();
62
+ const rootPath = `${homeDir}/Library/Application Support/com.operasoftware.Opera`;
63
+ return resolveBrowserDefaultorSpecificDBPath([rootPath], profile);
64
+ }
65
+
66
+ export {
67
+ getCookiesFromOperaMacSqlite
68
+ };
69
+ //# sourceMappingURL=chunk-2ILP4UJD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/operaMacCookie.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { resolveBrowserDefaultorSpecificDBPath } from './util/fileHelper';\nimport { GetCookiesOptions, GetCookiesResult, GetCookiesFromFileOptions } from './types';\nimport { findFirstMacKeyChainPassword } from './util/macKeyChain';\nimport { getAES128CBCKey, decryptChomiumAES128CBCCookieValue } from './util/crypto';\nimport { getCookiesFromChromiumSqliteDB } from './common';\n\nexport async function getCookiesFromOperaMacSqlite(\n options: GetCookiesOptions,\n origins: string[],\n cookieNames: Set<string> | null\n): Promise<GetCookiesResult> {\n const sqlDBPath = resolveOperaMacDBPath(options.profile);\n if (!sqlDBPath) {\n return {\n cookies: [],\n warnings: ['Could not resolve Opera cookie database path.'],\n };\n }\n\n const warnings: string[] = [];\n\n const passwordResult = await findFirstMacKeyChainPassword(\n ['Opera Safe Storage'],\n 'Opera',\n 5000,\n 'Opera Safe Storage'\n );\n if (!passwordResult.success) {\n warnings.push(`Failed to get Opera decryption key: ${passwordResult.error}`);\n return { cookies: [], warnings };\n }\n\n const operaPassword = passwordResult.password.trim();\n if (!operaPassword) {\n warnings.push('Opera decryption key is empty.');\n return { cookies: [], warnings };\n }\n\n // iterations is 1003 for macOS Opera (same as Chrome)\n const key = getAES128CBCKey(operaPassword, 1003);\n const decryptFn = (encryptedValue: Uint8Array): string | null => {\n return decryptChomiumAES128CBCCookieValue(encryptedValue, [key]);\n };\n\n const fileOptions: GetCookiesFromFileOptions = {\n cookieFilePath: sqlDBPath,\n };\n fileOptions.profile = options.profile;\n fileOptions.includeExpired = options.includeExpired;\n\n const { cookies, warnings: dbWarnings } = await getCookiesFromChromiumSqliteDB(\n fileOptions,\n origins,\n cookieNames,\n 'opera',\n decryptFn\n );\n warnings.push(...dbWarnings);\n\n return { cookies, warnings };\n}\n\nfunction resolveOperaMacDBPath(profile?: string): string | null {\n const homeDir = homedir();\n const rootPath = `${homeDir}/Library/Application Support/com.operasoftware.Opera`;\n return resolveBrowserDefaultorSpecificDBPath([rootPath], profile);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,eAAe;AAOxB,eAAsB,6BACpB,SACA,SACA,aAC2B;AAC3B,QAAM,YAAY,sBAAsB,QAAQ,OAAO;AACvD,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,MACL,SAAS,CAAC;AAAA,MACV,UAAU,CAAC,+CAA+C;AAAA,IAC5D;AAAA,EACF;AAEA,QAAM,WAAqB,CAAC;AAE5B,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,oBAAoB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,CAAC,eAAe,SAAS;AAC3B,aAAS,KAAK,uCAAuC,eAAe,KAAK,EAAE;AAC3E,WAAO,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,EACjC;AAEA,QAAM,gBAAgB,eAAe,SAAS,KAAK;AACnD,MAAI,CAAC,eAAe;AAClB,aAAS,KAAK,gCAAgC;AAC9C,WAAO,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,EACjC;AAGA,QAAM,MAAM,gBAAgB,eAAe,IAAI;AAC/C,QAAM,YAAY,CAAC,mBAA8C;AAC/D,WAAO,mCAAmC,gBAAgB,CAAC,GAAG,CAAC;AAAA,EACjE;AAEA,QAAM,cAAyC;AAAA,IAC7C,gBAAgB;AAAA,EAClB;AACA,cAAY,UAAU,QAAQ;AAC9B,cAAY,iBAAiB,QAAQ;AAErC,QAAM,EAAE,SAAS,UAAU,WAAW,IAAI,MAAM;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,WAAS,KAAK,GAAG,UAAU;AAE3B,SAAO,EAAE,SAAS,SAAS;AAC7B;AAEA,SAAS,sBAAsB,SAAiC;AAC9D,QAAM,UAAU,QAAQ;AACxB,QAAM,WAAW,GAAG,OAAO;AAC3B,SAAO,sCAAsC,CAAC,QAAQ,GAAG,OAAO;AAClE;","names":[]}