@eggjs/cookies 4.0.0-beta.34 → 4.0.0-beta.36

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/cookies.js CHANGED
@@ -1,290 +1,230 @@
1
- import assert from 'node:assert';
2
- import { base64decode, base64encode } from 'utility';
3
- import { isSameSiteNoneCompatible } from 'should-send-same-site-none';
4
- import { Keygrip } from "./keygrip.js";
5
1
  import { Cookie } from "./cookie.js";
6
2
  import { CookieError } from "./error.js";
7
- const keyCache = new Map();
3
+ import { Keygrip } from "./keygrip.js";
4
+ import assert from "node:assert";
5
+ import { isSameSiteNoneCompatible } from "should-send-same-site-none";
6
+ import { base64decode, base64encode } from "utility";
7
+
8
+ //#region src/cookies.ts
9
+ const keyCache = /* @__PURE__ */ new Map();
8
10
  /**
9
- * cookies for egg
10
- * extend pillarjs/cookies, add encrypt and decrypt
11
- */
12
- export class Cookies {
13
- #keysArray;
14
- #keys;
15
- #defaultCookieOptions;
16
- #autoChips;
17
- ctx;
18
- app;
19
- secure;
20
- #parseChromiumResult;
21
- constructor(ctx, keys, defaultCookieOptions) {
22
- this.#keysArray = keys;
23
- // default cookie options
24
- this.#defaultCookieOptions = defaultCookieOptions;
25
- this.#autoChips = defaultCookieOptions?.autoChips;
26
- this.ctx = ctx;
27
- this.secure = this.ctx.secure;
28
- this.app = ctx.app;
29
- }
30
- get keys() {
31
- if (!this.#keys) {
32
- assert(Array.isArray(this.#keysArray), '.keys required for encrypt/sign cookies');
33
- const cache = keyCache.get(this.#keysArray);
34
- if (cache) {
35
- this.#keys = cache;
36
- }
37
- else {
38
- this.#keys = new Keygrip(this.#keysArray);
39
- keyCache.set(this.#keysArray, this.#keys);
40
- }
41
- }
42
- return this.#keys;
43
- }
44
- /**
45
- * get cookie value by name
46
- * @param {String} name - cookie's name
47
- * @param {Object} opts - cookies' options
48
- * - {Boolean} signed - default to true
49
- * - {Boolean} encrypt - default to false
50
- * @return {String} value - cookie's value
51
- */
52
- get(name, opts = {}) {
53
- let value = this._get(name, opts);
54
- if (value === undefined && this.#autoChips) {
55
- // try to read _CHIPS-${name} prefix cookie
56
- value = this._get(this.#formatChipsCookieName(name), opts);
57
- }
58
- return value;
59
- }
60
- _get(name, opts) {
61
- const signed = computeSigned(opts);
62
- const header = this.ctx.get('cookie');
63
- if (!header)
64
- return;
65
- const match = header.match(getPattern(name));
66
- if (!match)
67
- return;
68
- let value = match[1];
69
- if (!opts.encrypt && !signed)
70
- return value;
71
- // signed
72
- if (signed) {
73
- const sigName = name + '.sig';
74
- const sigValue = this.get(sigName, { signed: false });
75
- if (!sigValue)
76
- return;
77
- const raw = name + '=' + value;
78
- const index = this.keys.verify(raw, sigValue);
79
- if (index < 0) {
80
- // can not match any key, remove ${name}.sig
81
- this.set(sigName, null, { path: '/', signed: false, overwrite: true });
82
- return;
83
- }
84
- if (index > 0) {
85
- // not signed by the first key, update sigValue
86
- this.set(sigName, this.keys.sign(raw), {
87
- signed: false,
88
- overwrite: true,
89
- });
90
- }
91
- return value;
92
- }
93
- // encrypt
94
- value = base64decode(value, true, 'buffer');
95
- const res = this.keys.decrypt(value);
96
- return res ? res.value.toString() : undefined;
97
- }
98
- set(name, value, opts) {
99
- opts = {
100
- ...this.#defaultCookieOptions,
101
- ...opts,
102
- };
103
- const signed = computeSigned(opts);
104
- const shouldIgnoreSecureError = opts && opts.ignoreSecureError;
105
- value = value || '';
106
- if (!shouldIgnoreSecureError) {
107
- if (!this.secure && opts.secure) {
108
- throw new CookieError('Cannot send secure cookie over unencrypted connection');
109
- }
110
- }
111
- let headers = this.ctx.response.get('set-cookie') || [];
112
- if (!Array.isArray(headers)) {
113
- headers = [headers];
114
- }
115
- // encrypt
116
- if (opts.encrypt) {
117
- value = value && base64encode(this.keys.encrypt(value), true);
118
- }
119
- // http://browsercookielimits.squawky.net/
120
- if (value.length > 4093) {
121
- this.app.emit('cookieLimitExceed', { name, value, ctx: this.ctx });
122
- }
123
- // https://github.com/linsight/should-send-same-site-none
124
- // fixed SameSite=None: Known Incompatible Clients
125
- const userAgent = this.ctx.get('user-agent');
126
- let isSameSiteNone = false;
127
- // disable autoChips if partitioned enable
128
- let autoChips = !opts.partitioned && this.#autoChips;
129
- if (opts.sameSite && typeof opts.sameSite === 'string' && opts.sameSite.toLowerCase() === 'none') {
130
- isSameSiteNone = true;
131
- if (opts.secure === false || !this.secure || (userAgent && !this.isSameSiteNoneCompatible(userAgent))) {
132
- // Non-secure context or Incompatible clients, don't send SameSite=None property
133
- opts.sameSite = false;
134
- isSameSiteNone = false;
135
- }
136
- }
137
- if (autoChips || opts.partitioned) {
138
- // allow to set partitioned: secure=true and sameSite=none and chrome >= 118
139
- if (!isSameSiteNone ||
140
- opts.secure === false ||
141
- !this.secure ||
142
- (userAgent && !this.isPartitionedCompatible(userAgent))) {
143
- // Non-secure context or Incompatible clients, don't send partitioned property
144
- autoChips = false;
145
- opts.partitioned = false;
146
- }
147
- }
148
- // remove unpartitioned same name cookie first
149
- if (opts.partitioned && opts.removeUnpartitioned) {
150
- const overwrite = opts.overwrite;
151
- if (overwrite) {
152
- opts.overwrite = false;
153
- headers = ignoreCookiesByName(headers, name);
154
- }
155
- const removeCookieOpts = {
156
- ...opts,
157
- partitioned: false,
158
- };
159
- const removeUnpartitionedCookie = new Cookie(name, '', removeCookieOpts);
160
- // if user not set secure, reset secure to ctx.secure
161
- if (opts.secure === undefined) {
162
- removeUnpartitionedCookie.attrs.secure = this.secure;
163
- }
164
- headers = pushCookie(headers, removeUnpartitionedCookie);
165
- // signed
166
- if (signed) {
167
- removeUnpartitionedCookie.name += '.sig';
168
- headers = ignoreCookiesByNameAndPath(headers, removeUnpartitionedCookie.name, removeUnpartitionedCookie.attrs.path);
169
- headers = pushCookie(headers, removeUnpartitionedCookie);
170
- }
171
- }
172
- else if (autoChips) {
173
- // add _CHIPS-${name} prefix cookie
174
- const newCookieName = this.#formatChipsCookieName(name);
175
- const newCookieOpts = {
176
- ...opts,
177
- partitioned: true,
178
- };
179
- const newPartitionedCookie = new Cookie(newCookieName, value, newCookieOpts);
180
- // if user not set secure, reset secure to ctx.secure
181
- if (opts.secure === undefined)
182
- newPartitionedCookie.attrs.secure = this.secure;
183
- headers = pushCookie(headers, newPartitionedCookie);
184
- // signed
185
- if (signed) {
186
- newPartitionedCookie.value = value && this.keys.sign(newPartitionedCookie.toString());
187
- newPartitionedCookie.name += '.sig';
188
- headers = ignoreCookiesByNameAndPath(headers, newPartitionedCookie.name, newPartitionedCookie.attrs.path);
189
- headers = pushCookie(headers, newPartitionedCookie);
190
- }
191
- }
192
- const cookie = new Cookie(name, value, opts);
193
- // if user not set secure, reset secure to ctx.secure
194
- if (opts.secure === undefined) {
195
- cookie.attrs.secure = this.secure;
196
- }
197
- headers = pushCookie(headers, cookie);
198
- // signed
199
- if (signed) {
200
- cookie.value = value && this.keys.sign(cookie.toString());
201
- cookie.name += '.sig';
202
- headers = pushCookie(headers, cookie);
203
- }
204
- this.ctx.set('set-cookie', headers);
205
- return this;
206
- }
207
- #formatChipsCookieName(name) {
208
- return `_CHIPS-${name}`;
209
- }
210
- #parseChromiumAndMajorVersion(userAgent) {
211
- if (!this.#parseChromiumResult) {
212
- this.#parseChromiumResult = parseChromiumAndMajorVersion(userAgent);
213
- }
214
- return this.#parseChromiumResult;
215
- }
216
- isSameSiteNoneCompatible(userAgent) {
217
- // Chrome >= 80.0.0.0
218
- const result = this.#parseChromiumAndMajorVersion(userAgent);
219
- if (result.chromium) {
220
- return result.majorVersion >= 80;
221
- }
222
- return isSameSiteNoneCompatible(userAgent);
223
- }
224
- isPartitionedCompatible(userAgent) {
225
- // support: Chrome >= 114.0.0.0
226
- // default enable: Chrome >= 118.0.0.0
227
- // https://developers.google.com/privacy-sandbox/3pcd/chips
228
- const result = this.#parseChromiumAndMajorVersion(userAgent);
229
- if (result.chromium) {
230
- return result.majorVersion >= 118;
231
- }
232
- return false;
233
- }
234
- }
235
- // https://github.com/linsight/should-send-same-site-none/blob/master/index.js#L86
11
+ * cookies for egg
12
+ * extend pillarjs/cookies, add encrypt and decrypt
13
+ */
14
+ var Cookies = class {
15
+ #keysArray;
16
+ #keys;
17
+ #defaultCookieOptions;
18
+ #autoChips;
19
+ ctx;
20
+ app;
21
+ secure;
22
+ #parseChromiumResult;
23
+ constructor(ctx, keys, defaultCookieOptions) {
24
+ this.#keysArray = keys;
25
+ this.#defaultCookieOptions = defaultCookieOptions;
26
+ this.#autoChips = defaultCookieOptions?.autoChips;
27
+ this.ctx = ctx;
28
+ this.secure = this.ctx.secure;
29
+ this.app = ctx.app;
30
+ }
31
+ get keys() {
32
+ if (!this.#keys) {
33
+ assert(Array.isArray(this.#keysArray), ".keys required for encrypt/sign cookies");
34
+ const cache = keyCache.get(this.#keysArray);
35
+ if (cache) this.#keys = cache;
36
+ else {
37
+ this.#keys = new Keygrip(this.#keysArray);
38
+ keyCache.set(this.#keysArray, this.#keys);
39
+ }
40
+ }
41
+ return this.#keys;
42
+ }
43
+ /**
44
+ * get cookie value by name
45
+ * @param {String} name - cookie's name
46
+ * @param {Object} opts - cookies' options
47
+ * - {Boolean} signed - default to true
48
+ * - {Boolean} encrypt - default to false
49
+ * @return {String} value - cookie's value
50
+ */
51
+ get(name, opts = {}) {
52
+ let value = this._get(name, opts);
53
+ if (value === void 0 && this.#autoChips) value = this._get(this.#formatChipsCookieName(name), opts);
54
+ return value;
55
+ }
56
+ _get(name, opts) {
57
+ const signed = computeSigned(opts);
58
+ const header = this.ctx.get("cookie");
59
+ if (!header) return;
60
+ const match = header.match(getPattern(name));
61
+ if (!match) return;
62
+ let value = match[1];
63
+ if (!opts.encrypt && !signed) return value;
64
+ if (signed) {
65
+ const sigName = name + ".sig";
66
+ const sigValue = this.get(sigName, { signed: false });
67
+ if (!sigValue) return;
68
+ const raw = name + "=" + value;
69
+ const index = this.keys.verify(raw, sigValue);
70
+ if (index < 0) {
71
+ this.set(sigName, null, {
72
+ path: "/",
73
+ signed: false,
74
+ overwrite: true
75
+ });
76
+ return;
77
+ }
78
+ if (index > 0) this.set(sigName, this.keys.sign(raw), {
79
+ signed: false,
80
+ overwrite: true
81
+ });
82
+ return value;
83
+ }
84
+ value = base64decode(value, true, "buffer");
85
+ const res = this.keys.decrypt(value);
86
+ return res ? res.value.toString() : void 0;
87
+ }
88
+ set(name, value, opts) {
89
+ opts = {
90
+ ...this.#defaultCookieOptions,
91
+ ...opts
92
+ };
93
+ const signed = computeSigned(opts);
94
+ const shouldIgnoreSecureError = opts && opts.ignoreSecureError;
95
+ value = value || "";
96
+ if (!shouldIgnoreSecureError) {
97
+ if (!this.secure && opts.secure) throw new CookieError("Cannot send secure cookie over unencrypted connection");
98
+ }
99
+ let headers = this.ctx.response.get("set-cookie") || [];
100
+ if (!Array.isArray(headers)) headers = [headers];
101
+ if (opts.encrypt) value = value && base64encode(this.keys.encrypt(value), true);
102
+ if (value.length > 4093) this.app.emit("cookieLimitExceed", {
103
+ name,
104
+ value,
105
+ ctx: this.ctx
106
+ });
107
+ const userAgent = this.ctx.get("user-agent");
108
+ let isSameSiteNone = false;
109
+ let autoChips = !opts.partitioned && this.#autoChips;
110
+ if (opts.sameSite && typeof opts.sameSite === "string" && opts.sameSite.toLowerCase() === "none") {
111
+ isSameSiteNone = true;
112
+ if (opts.secure === false || !this.secure || userAgent && !this.isSameSiteNoneCompatible(userAgent)) {
113
+ opts.sameSite = false;
114
+ isSameSiteNone = false;
115
+ }
116
+ }
117
+ if (autoChips || opts.partitioned) {
118
+ if (!isSameSiteNone || opts.secure === false || !this.secure || userAgent && !this.isPartitionedCompatible(userAgent)) {
119
+ autoChips = false;
120
+ opts.partitioned = false;
121
+ }
122
+ }
123
+ if (opts.partitioned && opts.removeUnpartitioned) {
124
+ if (opts.overwrite) {
125
+ opts.overwrite = false;
126
+ headers = ignoreCookiesByName(headers, name);
127
+ }
128
+ const removeUnpartitionedCookie = new Cookie(name, "", {
129
+ ...opts,
130
+ partitioned: false
131
+ });
132
+ if (opts.secure === void 0) removeUnpartitionedCookie.attrs.secure = this.secure;
133
+ headers = pushCookie(headers, removeUnpartitionedCookie);
134
+ if (signed) {
135
+ removeUnpartitionedCookie.name += ".sig";
136
+ headers = ignoreCookiesByNameAndPath(headers, removeUnpartitionedCookie.name, removeUnpartitionedCookie.attrs.path);
137
+ headers = pushCookie(headers, removeUnpartitionedCookie);
138
+ }
139
+ } else if (autoChips) {
140
+ const newCookieName = this.#formatChipsCookieName(name);
141
+ const newCookieOpts = {
142
+ ...opts,
143
+ partitioned: true
144
+ };
145
+ const newPartitionedCookie = new Cookie(newCookieName, value, newCookieOpts);
146
+ if (opts.secure === void 0) newPartitionedCookie.attrs.secure = this.secure;
147
+ headers = pushCookie(headers, newPartitionedCookie);
148
+ if (signed) {
149
+ newPartitionedCookie.value = value && this.keys.sign(newPartitionedCookie.toString());
150
+ newPartitionedCookie.name += ".sig";
151
+ headers = ignoreCookiesByNameAndPath(headers, newPartitionedCookie.name, newPartitionedCookie.attrs.path);
152
+ headers = pushCookie(headers, newPartitionedCookie);
153
+ }
154
+ }
155
+ const cookie = new Cookie(name, value, opts);
156
+ if (opts.secure === void 0) cookie.attrs.secure = this.secure;
157
+ headers = pushCookie(headers, cookie);
158
+ if (signed) {
159
+ cookie.value = value && this.keys.sign(cookie.toString());
160
+ cookie.name += ".sig";
161
+ headers = pushCookie(headers, cookie);
162
+ }
163
+ this.ctx.set("set-cookie", headers);
164
+ return this;
165
+ }
166
+ #formatChipsCookieName(name) {
167
+ return `_CHIPS-${name}`;
168
+ }
169
+ #parseChromiumAndMajorVersion(userAgent) {
170
+ if (!this.#parseChromiumResult) this.#parseChromiumResult = parseChromiumAndMajorVersion(userAgent);
171
+ return this.#parseChromiumResult;
172
+ }
173
+ isSameSiteNoneCompatible(userAgent) {
174
+ const result = this.#parseChromiumAndMajorVersion(userAgent);
175
+ if (result.chromium) return result.majorVersion >= 80;
176
+ return isSameSiteNoneCompatible(userAgent);
177
+ }
178
+ isPartitionedCompatible(userAgent) {
179
+ const result = this.#parseChromiumAndMajorVersion(userAgent);
180
+ if (result.chromium) return result.majorVersion >= 118;
181
+ return false;
182
+ }
183
+ };
236
184
  function parseChromiumAndMajorVersion(userAgent) {
237
- const m = /Chrom[^ /]{1,100}\/(\d{1,100}?)\./.exec(userAgent);
238
- if (!m) {
239
- return { chromium: false, majorVersion: 0 };
240
- }
241
- // Extract digits from first capturing group.
242
- return { chromium: true, majorVersion: parseInt(m[1]) };
185
+ const m = /Chrom[^ /]{1,100}\/(\d{1,100}?)\./.exec(userAgent);
186
+ if (!m) return {
187
+ chromium: false,
188
+ majorVersion: 0
189
+ };
190
+ return {
191
+ chromium: true,
192
+ majorVersion: parseInt(m[1])
193
+ };
243
194
  }
244
- const _patternCache = new Map();
195
+ const _patternCache = /* @__PURE__ */ new Map();
245
196
  function getPattern(name) {
246
- const cache = _patternCache.get(name);
247
- if (cache) {
248
- return cache;
249
- }
250
- const reg = new RegExp('(?:^|;) *' + name.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&') + '=([^;]*)');
251
- _patternCache.set(name, reg);
252
- return reg;
197
+ const cache = _patternCache.get(name);
198
+ if (cache) return cache;
199
+ const reg = /* @__PURE__ */ new RegExp("(?:^|;) *" + name.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&") + "=([^;]*)");
200
+ _patternCache.set(name, reg);
201
+ return reg;
253
202
  }
254
203
  function computeSigned(opts) {
255
- // encrypt default to false, signed default to true.
256
- // disable singed when encrypt is true.
257
- if (opts.encrypt)
258
- return false;
259
- return opts.signed !== false;
204
+ if (opts.encrypt) return false;
205
+ return opts.signed !== false;
260
206
  }
261
207
  function pushCookie(cookies, cookie) {
262
- if (cookie.attrs.overwrite) {
263
- cookies = ignoreCookiesByName(cookies, cookie.name);
264
- }
265
- cookies.push(cookie.toHeader());
266
- return cookies;
208
+ if (cookie.attrs.overwrite) cookies = ignoreCookiesByName(cookies, cookie.name);
209
+ cookies.push(cookie.toHeader());
210
+ return cookies;
267
211
  }
268
212
  function ignoreCookiesByName(cookies, name) {
269
- const prefix = `${name}=`;
270
- return cookies.filter((c) => !c.startsWith(prefix));
213
+ const prefix = `${name}=`;
214
+ return cookies.filter((c) => !c.startsWith(prefix));
271
215
  }
272
216
  function ignoreCookiesByNameAndPath(cookies, name, path) {
273
- if (!path) {
274
- return ignoreCookiesByName(cookies, name);
275
- }
276
- const prefix = `${name}=`;
277
- // foo=hello; path=/path1; samesite=none
278
- const includedPath = `; path=${path};`;
279
- // foo=hello; path=/path1
280
- const endsWithPath = `; path=${path}`;
281
- return cookies.filter((c) => {
282
- if (c.startsWith(prefix)) {
283
- if (c.includes(includedPath) || c.endsWith(endsWithPath)) {
284
- return false;
285
- }
286
- }
287
- return true;
288
- });
217
+ if (!path) return ignoreCookiesByName(cookies, name);
218
+ const prefix = `${name}=`;
219
+ const includedPath = `; path=${path};`;
220
+ const endsWithPath = `; path=${path}`;
221
+ return cookies.filter((c) => {
222
+ if (c.startsWith(prefix)) {
223
+ if (c.includes(includedPath) || c.endsWith(endsWithPath)) return false;
224
+ }
225
+ return true;
226
+ });
289
227
  }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29va2llcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb29raWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUVqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNyRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUV0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxNQUFNLEVBQXlCLE1BQU0sYUFBYSxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFekMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQXFCLENBQUM7QUFvQjlDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBQ1QsVUFBVSxDQUFXO0lBQzlCLEtBQUssQ0FBVTtJQUNOLHFCQUFxQixDQUF3QjtJQUM3QyxVQUFVLENBQVc7SUFDckIsR0FBRyxDQUFzQjtJQUN6QixHQUFHLENBQXNCO0lBQ3pCLE1BQU0sQ0FBVTtJQUN6QixvQkFBb0IsQ0FBdUI7SUFFM0MsWUFBWSxHQUF3QixFQUFFLElBQWMsRUFBRSxvQkFBMkM7UUFDL0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIseUJBQXlCO1FBQ3pCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxvQkFBb0IsQ0FBQztRQUNsRCxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFvQixFQUFFLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFDOUIsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLElB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
228
+
229
+ //#endregion
230
+ export { Cookies };
package/dist/error.d.ts CHANGED
@@ -1,3 +1,6 @@
1
- export declare class CookieError extends Error {
2
- constructor(message: string, options?: ErrorOptions);
1
+ //#region src/error.d.ts
2
+ declare class CookieError extends Error {
3
+ constructor(message: string, options?: ErrorOptions);
3
4
  }
5
+ //#endregion
6
+ export { CookieError };
package/dist/error.js CHANGED
@@ -1,10 +1,11 @@
1
- export class CookieError extends Error {
2
- constructor(message, options) {
3
- super(message, options);
4
- this.name = this.constructor.name;
5
- if ('captureStackTrace' in Error) {
6
- Error.captureStackTrace(this, this.constructor);
7
- }
8
- }
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXJyb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVksU0FBUSxLQUFLO0lBQ3BDLFlBQVksT0FBZSxFQUFFLE9BQXNCO1FBQ2pELEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztRQUNsQyxJQUFJLG1CQUFtQixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0NBQ0YifQ==
1
+ //#region src/error.ts
2
+ var CookieError = class extends Error {
3
+ constructor(message, options) {
4
+ super(message, options);
5
+ this.name = this.constructor.name;
6
+ if ("captureStackTrace" in Error) Error.captureStackTrace(this, this.constructor);
7
+ }
8
+ };
9
+
10
+ //#endregion
11
+ export { CookieError };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- export * from './cookies.ts';
2
- export * from './cookie.ts';
3
- export * from './error.ts';
4
- export * from './keygrip.ts';
1
+ import { Cookie, CookieSetOptions } from "./cookie.js";
2
+ import { Keygrip } from "./keygrip.js";
3
+ import { CookieGetOptions, Cookies, DefaultCookieOptions } from "./cookies.js";
4
+ import { CookieError } from "./error.js";
5
+ export { Cookie, CookieError, CookieGetOptions, CookieSetOptions, Cookies, DefaultCookieOptions, Keygrip };
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
- export * from "./cookies.js";
2
- export * from "./cookie.js";
3
- export * from "./error.js";
4
- export * from "./keygrip.js";
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxjQUFjLENBQUMifQ==
1
+ import { Cookie } from "./cookie.js";
2
+ import { CookieError } from "./error.js";
3
+ import { Keygrip } from "./keygrip.js";
4
+ import { Cookies } from "./cookies.js";
5
+
6
+ export { Cookie, CookieError, Cookies, Keygrip };
package/dist/keygrip.d.ts CHANGED
@@ -1,11 +1,14 @@
1
- export declare class Keygrip {
2
- #private;
3
- constructor(keys: string[]);
4
- encrypt(data: string, key?: string): Buffer;
5
- decrypt(data: string | Buffer): {
6
- value: Buffer;
7
- index: number;
8
- } | false;
9
- sign(data: string | Buffer, key?: string): string;
10
- verify(data: string, digest: string): number;
1
+ //#region src/keygrip.d.ts
2
+ declare class Keygrip {
3
+ #private;
4
+ constructor(keys: string[]);
5
+ encrypt(data: string, key?: string): Buffer;
6
+ decrypt(data: string | Buffer): {
7
+ value: Buffer;
8
+ index: number;
9
+ } | false;
10
+ sign(data: string | Buffer, key?: string): string;
11
+ verify(data: string, digest: string): number;
11
12
  }
13
+ //#endregion
14
+ export { Keygrip };