@eggjs/session 4.0.1 → 5.0.0-beta.15
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/README.md +57 -61
- package/dist/app/extend/application.d.ts +43 -0
- package/dist/app/extend/application.js +48 -0
- package/dist/app/middleware/session.d.ts +2 -0
- package/dist/app/middleware/session.js +7 -0
- package/dist/app.d.ts +10 -0
- package/dist/app.js +27 -0
- package/dist/config/config.default.d.ts +214 -0
- package/dist/config/config.default.js +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +4 -0
- package/package.json +43 -65
- package/dist/commonjs/app/extend/application.d.ts +0 -33
- package/dist/commonjs/app/extend/application.js +0 -55
- package/dist/commonjs/app/middleware/session.d.ts +0 -2
- package/dist/commonjs/app/middleware/session.js +0 -5
- package/dist/commonjs/app.d.ts +0 -6
- package/dist/commonjs/app.js +0 -29
- package/dist/commonjs/config/config.default.d.ts +0 -206
- package/dist/commonjs/config/config.default.js +0 -20
- package/dist/commonjs/index.d.ts +0 -2
- package/dist/commonjs/index.js +0 -19
- package/dist/commonjs/package.json +0 -3
- package/dist/commonjs/types.d.ts +0 -11
- package/dist/commonjs/types.js +0 -3
- package/dist/esm/app/extend/application.d.ts +0 -33
- package/dist/esm/app/extend/application.js +0 -49
- package/dist/esm/app/middleware/session.d.ts +0 -2
- package/dist/esm/app/middleware/session.js +0 -3
- package/dist/esm/app.d.ts +0 -6
- package/dist/esm/app.js +0 -26
- package/dist/esm/config/config.default.d.ts +0 -206
- package/dist/esm/config/config.default.js +0 -14
- package/dist/esm/index.d.ts +0 -2
- package/dist/esm/index.js +0 -3
- package/dist/esm/package.json +0 -3
- package/dist/esm/types.d.ts +0 -11
- package/dist/esm/types.js +0 -2
- package/dist/package.json +0 -4
- package/src/app/extend/application.ts +0 -59
- package/src/app/middleware/session.ts +0 -3
- package/src/app.ts +0 -30
- package/src/config/config.default.ts +0 -17
- package/src/index.ts +0 -3
- package/src/types.ts +0 -15
- package/src/typings/index.d.ts +0 -4
package/README.md
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
# @eggjs/session
|
|
2
2
|
|
|
3
3
|
[![NPM version][npm-image]][npm-url]
|
|
4
|
-
[](https://github.com/eggjs/session/actions/workflows/nodejs.yml)
|
|
5
|
-
[![Test coverage][codecov-image]][codecov-url]
|
|
6
4
|
[![Known Vulnerabilities][snyk-image]][snyk-url]
|
|
7
5
|
[![npm download][download-image]][download-url]
|
|
8
6
|
[](https://nodejs.org/en/download/)
|
|
@@ -11,8 +9,6 @@
|
|
|
11
9
|
|
|
12
10
|
[npm-image]: https://img.shields.io/npm/v/@eggjs/session.svg?style=flat-square
|
|
13
11
|
[npm-url]: https://npmjs.org/package/@eggjs/session
|
|
14
|
-
[codecov-image]: https://codecov.io/gh/eggjs/session/branch/master/graph/badge.svg
|
|
15
|
-
[codecov-url]: https://codecov.io/gh/eggjs/session
|
|
16
12
|
[snyk-image]: https://snyk.io/test/npm/@eggjs/session/badge.svg?style=flat-square
|
|
17
13
|
[snyk-url]: https://snyk.io/test/npm/@eggjs/session
|
|
18
14
|
[download-image]: https://img.shields.io/npm/dm/@eggjs/session.svg?style=flat-square
|
|
@@ -41,69 +37,69 @@ egg-session support external store, you can store your sessions in redis, memcac
|
|
|
41
37
|
|
|
42
38
|
For example, if you want to store session in redis, you must:
|
|
43
39
|
|
|
44
|
-
1. Dependent [@eggjs/redis](https://github.com/eggjs/redis)
|
|
40
|
+
1. Dependent [@eggjs/redis](https://github.com/eggjs/egg/tree/next/plugins/redis)
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
```bash
|
|
43
|
+
npm i --save @eggjs/redis
|
|
44
|
+
```
|
|
49
45
|
|
|
50
46
|
2. Import `@eggjs/redis` as a plugin and set the configuration
|
|
51
47
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
48
|
+
```js
|
|
49
|
+
// config/plugin.js
|
|
50
|
+
exports.redis = {
|
|
51
|
+
enable: true,
|
|
52
|
+
package: '@eggjs/redis',
|
|
53
|
+
};
|
|
54
|
+
```
|
|
59
55
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
```js
|
|
57
|
+
// config/config.default.js
|
|
58
|
+
exports.redis = {
|
|
59
|
+
// your redis configurations
|
|
60
|
+
};
|
|
61
|
+
```
|
|
66
62
|
|
|
67
63
|
3. Implement a session store with redis
|
|
68
64
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// session store can be a session store class
|
|
97
|
-
// app.sessionStore = class Store {
|
|
98
|
-
// constructor(app) {
|
|
99
|
-
// this.app = app;
|
|
100
|
-
// }
|
|
101
|
-
// async get() {}
|
|
102
|
-
// async set() {}
|
|
103
|
-
// async destroy() {}
|
|
104
|
-
// };
|
|
65
|
+
```js
|
|
66
|
+
// app.js
|
|
67
|
+
|
|
68
|
+
module.exports = app => {
|
|
69
|
+
// set redis session store
|
|
70
|
+
// session store must have 3 methods
|
|
71
|
+
// define sessionStore in `app.js` so you can access `app.redis`
|
|
72
|
+
app.sessionStore = {
|
|
73
|
+
async get(key) {
|
|
74
|
+
const res = await app.redis.get(key);
|
|
75
|
+
if (!res) return null;
|
|
76
|
+
return JSON.parse(res);
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
async set(key, value, maxAge) {
|
|
80
|
+
// maxAge not present means session cookies
|
|
81
|
+
// we can't exactly know the maxAge and just set an appropriate value like one day
|
|
82
|
+
if (!maxAge) maxAge = 24 * 60 * 60 * 1000;
|
|
83
|
+
value = JSON.stringify(value);
|
|
84
|
+
await app.redis.set(key, value, 'PX', maxAge);
|
|
85
|
+
},
|
|
86
|
+
|
|
87
|
+
async destroy(key) {
|
|
88
|
+
await app.redis.del(key);
|
|
89
|
+
},
|
|
105
90
|
};
|
|
106
|
-
|
|
91
|
+
|
|
92
|
+
// session store can be a session store class
|
|
93
|
+
// app.sessionStore = class Store {
|
|
94
|
+
// constructor(app) {
|
|
95
|
+
// this.app = app;
|
|
96
|
+
// }
|
|
97
|
+
// async get() {}
|
|
98
|
+
// async set() {}
|
|
99
|
+
// async destroy() {}
|
|
100
|
+
// };
|
|
101
|
+
};
|
|
102
|
+
```
|
|
107
103
|
|
|
108
104
|
Once you use external session store, session is strong dependent on your external store, you can't access session if your external store is down. **Use external session stores only if necessary, avoid use session as a cache, keep session lean and stored by cookie!**
|
|
109
105
|
|
|
@@ -111,13 +107,13 @@ Once you use external session store, session is strong dependent on your externa
|
|
|
111
107
|
|
|
112
108
|
Support all configurations in [koa-session](https://github.com/koajs/session).
|
|
113
109
|
|
|
114
|
-
|
|
110
|
+
- logValue
|
|
115
111
|
|
|
116
112
|
```bash
|
|
117
113
|
Support not to print the session value when session event trigger log. Default to be true.
|
|
118
114
|
```
|
|
119
115
|
|
|
120
|
-
[View the default configurations](https://github.com/eggjs/egg
|
|
116
|
+
[View the default configurations](https://github.com/eggjs/egg/tree/next/plugins/session/src/config/config.default.ts)
|
|
121
117
|
|
|
122
118
|
## Questions & Suggestions
|
|
123
119
|
|
|
@@ -129,6 +125,6 @@ Please open an issue [here](https://github.com/eggjs/egg/issues).
|
|
|
129
125
|
|
|
130
126
|
## Contributors
|
|
131
127
|
|
|
132
|
-
[](https://github.com/eggjs/egg/graphs/contributors)
|
|
133
129
|
|
|
134
130
|
Made with [contributors-img](https://contrib.rocks).
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { SessionConfig } from "../../config/config.default.js";
|
|
2
|
+
import { Application } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/app/extend/application.d.ts
|
|
5
|
+
type SessionStore = Required<SessionConfig>['store'];
|
|
6
|
+
type SessionStoreOrAppSessionStoreClass = SessionStore | {
|
|
7
|
+
new (app: Application): SessionStore;
|
|
8
|
+
};
|
|
9
|
+
declare class SessionApplication extends Application {
|
|
10
|
+
/**
|
|
11
|
+
* set session external store
|
|
12
|
+
*
|
|
13
|
+
* ```js
|
|
14
|
+
* app.sessionStore = {
|
|
15
|
+
* get(key): Promise<unknown>,
|
|
16
|
+
* set(key, data): Promise<void>,
|
|
17
|
+
* destroy(key): Promise<void>,
|
|
18
|
+
* };
|
|
19
|
+
*
|
|
20
|
+
* app.sessionStore = class SessionStore {
|
|
21
|
+
* constructor(app) {
|
|
22
|
+
* }
|
|
23
|
+
* get(key): Promise<unknown>,
|
|
24
|
+
* set(key, data): Promise<void>,
|
|
25
|
+
* destroy(key): Promise<void>,
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
* @param {Class|Object} store session store class or instance
|
|
29
|
+
*/
|
|
30
|
+
set sessionStore(store: SessionStoreOrAppSessionStoreClass | null | undefined);
|
|
31
|
+
/**
|
|
32
|
+
* get sessionStore instance
|
|
33
|
+
*/
|
|
34
|
+
get sessionStore(): SessionStore | undefined;
|
|
35
|
+
}
|
|
36
|
+
declare module 'egg' {
|
|
37
|
+
interface Application {
|
|
38
|
+
set sessionStore(store: SessionStoreOrAppSessionStoreClass | null | undefined);
|
|
39
|
+
get sessionStore(): SessionStore | undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { SessionStore, SessionStoreOrAppSessionStoreClass, SessionApplication as default };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import assert from "node:assert";
|
|
2
|
+
import { Application } from "egg";
|
|
3
|
+
|
|
4
|
+
//#region src/app/extend/application.ts
|
|
5
|
+
var SessionApplication = class extends Application {
|
|
6
|
+
/**
|
|
7
|
+
* set session external store
|
|
8
|
+
*
|
|
9
|
+
* ```js
|
|
10
|
+
* app.sessionStore = {
|
|
11
|
+
* get(key): Promise<unknown>,
|
|
12
|
+
* set(key, data): Promise<void>,
|
|
13
|
+
* destroy(key): Promise<void>,
|
|
14
|
+
* };
|
|
15
|
+
*
|
|
16
|
+
* app.sessionStore = class SessionStore {
|
|
17
|
+
* constructor(app) {
|
|
18
|
+
* }
|
|
19
|
+
* get(key): Promise<unknown>,
|
|
20
|
+
* set(key, data): Promise<void>,
|
|
21
|
+
* destroy(key): Promise<void>,
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
* @param {Class|Object} store session store class or instance
|
|
25
|
+
*/
|
|
26
|
+
set sessionStore(store) {
|
|
27
|
+
if (this.config.session.store && this.config.env !== "unittest") this.coreLogger.warn("[@eggjs/session] sessionStore already exists and will be overwrite");
|
|
28
|
+
if (!store) {
|
|
29
|
+
this.config.session.store = void 0;
|
|
30
|
+
this.coreLogger.info("[@eggjs/session] sessionStore is disabled");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (typeof store === "function") store = new store(this);
|
|
34
|
+
assert(typeof store.get === "function", "store.get must be function");
|
|
35
|
+
assert(typeof store.set === "function", "store.set must be function");
|
|
36
|
+
assert(typeof store.destroy === "function", "store.destroy must be function");
|
|
37
|
+
this.config.session.store = store;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* get sessionStore instance
|
|
41
|
+
*/
|
|
42
|
+
get sessionStore() {
|
|
43
|
+
return this.config.session.store;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
//#endregion
|
|
48
|
+
export { SessionApplication as default };
|
package/dist/app.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Application, ILifecycleBoot } from "egg";
|
|
2
|
+
|
|
3
|
+
//#region src/app.d.ts
|
|
4
|
+
declare class AppBoot implements ILifecycleBoot {
|
|
5
|
+
private readonly app;
|
|
6
|
+
constructor(app: Application);
|
|
7
|
+
configWillLoad(): void;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
10
|
+
export { AppBoot as default };
|
package/dist/app.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { SessionConfig } from "./config/config.default.js";
|
|
2
|
+
|
|
3
|
+
//#region src/app.ts
|
|
4
|
+
var AppBoot = class {
|
|
5
|
+
app;
|
|
6
|
+
constructor(app) {
|
|
7
|
+
this.app = app;
|
|
8
|
+
}
|
|
9
|
+
configWillLoad() {
|
|
10
|
+
const app = this.app;
|
|
11
|
+
SessionConfig.parse(app.config.session);
|
|
12
|
+
if (!app.config.session.httpOnly) app.coreLogger.warn("[@eggjs/session]: please set `config.session.httpOnly` to true. It is very dangerous if session can read by client JavaScript.");
|
|
13
|
+
app.config.coreMiddleware.push("session");
|
|
14
|
+
app.on("session:missed", ({ ctx, key }) => {
|
|
15
|
+
ctx.coreLogger.warn("[session][missed] key(%s)", key);
|
|
16
|
+
});
|
|
17
|
+
app.on("session:expired", ({ ctx, key, value }) => {
|
|
18
|
+
ctx.coreLogger.warn("[session][expired] key(%s) value(%j)", key, app.config.session.logValue ? value : "");
|
|
19
|
+
});
|
|
20
|
+
app.on("session:invalid", ({ ctx, key, value }) => {
|
|
21
|
+
ctx.coreLogger.warn("[session][invalid] key(%s) value(%j)", key, app.config.session.logValue ? value : "");
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
export { AppBoot as default };
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
|
|
3
|
+
//#region src/config/config.default.d.ts
|
|
4
|
+
declare const SessionConfig: z.ZodObject<{
|
|
5
|
+
key: z.ZodDefault<z.ZodString>;
|
|
6
|
+
maxAge: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodLiteral<"session">]>>;
|
|
7
|
+
autoCommit: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
overwrite: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
httpOnly: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
signed: z.ZodDefault<z.ZodBoolean>;
|
|
11
|
+
rolling: z.ZodDefault<z.ZodBoolean>;
|
|
12
|
+
renew: z.ZodDefault<z.ZodBoolean>;
|
|
13
|
+
secure: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
+
sameSite: z.ZodOptional<z.ZodString>;
|
|
15
|
+
externalKey: z.ZodOptional<z.ZodObject<{
|
|
16
|
+
get: z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodString>;
|
|
17
|
+
set: z.ZodFunction<z.ZodTuple<[z.ZodAny, z.ZodString], z.ZodUnknown>, z.ZodVoid>;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
set: (args_0: any, args_1: string, ...args: unknown[]) => void;
|
|
20
|
+
get: (args_0: any, ...args: unknown[]) => string;
|
|
21
|
+
}, {
|
|
22
|
+
set: (args_0: any, args_1: string, ...args: unknown[]) => void;
|
|
23
|
+
get: (args_0: any, ...args: unknown[]) => string;
|
|
24
|
+
}>>;
|
|
25
|
+
store: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
get: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodNumber, z.ZodObject<{
|
|
27
|
+
rolling: z.ZodBoolean;
|
|
28
|
+
ctx: z.ZodAny;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
rolling: boolean;
|
|
31
|
+
ctx?: any;
|
|
32
|
+
}, {
|
|
33
|
+
rolling: boolean;
|
|
34
|
+
ctx?: any;
|
|
35
|
+
}>], z.ZodUnknown>, z.ZodPromise<z.ZodAny>>;
|
|
36
|
+
set: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodAny, z.ZodNumber, z.ZodObject<{
|
|
37
|
+
rolling: z.ZodBoolean;
|
|
38
|
+
changed: z.ZodBoolean;
|
|
39
|
+
ctx: z.ZodAny;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
rolling: boolean;
|
|
42
|
+
changed: boolean;
|
|
43
|
+
ctx?: any;
|
|
44
|
+
}, {
|
|
45
|
+
rolling: boolean;
|
|
46
|
+
changed: boolean;
|
|
47
|
+
ctx?: any;
|
|
48
|
+
}>], z.ZodUnknown>, z.ZodPromise<z.ZodVoid>>;
|
|
49
|
+
destroy: z.ZodFunction<z.ZodTuple<[z.ZodString, z.ZodObject<{
|
|
50
|
+
ctx: z.ZodAny;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
ctx?: any;
|
|
53
|
+
}, {
|
|
54
|
+
ctx?: any;
|
|
55
|
+
}>], z.ZodUnknown>, z.ZodPromise<z.ZodVoid>>;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
set: (args_0: string, args_1: any, args_2: number, args_3: {
|
|
58
|
+
rolling: boolean;
|
|
59
|
+
changed: boolean;
|
|
60
|
+
ctx?: any;
|
|
61
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
62
|
+
get: (args_0: string, args_1: number, args_2: {
|
|
63
|
+
rolling: boolean;
|
|
64
|
+
ctx?: any;
|
|
65
|
+
}, ...args: unknown[]) => Promise<any>;
|
|
66
|
+
destroy: (args_0: string, args_1: {
|
|
67
|
+
ctx?: any;
|
|
68
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
69
|
+
}, {
|
|
70
|
+
set: (args_0: string, args_1: any, args_2: number, args_3: {
|
|
71
|
+
rolling: boolean;
|
|
72
|
+
changed: boolean;
|
|
73
|
+
ctx?: any;
|
|
74
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
75
|
+
get: (args_0: string, args_1: number, args_2: {
|
|
76
|
+
rolling: boolean;
|
|
77
|
+
ctx?: any;
|
|
78
|
+
}, ...args: unknown[]) => Promise<any>;
|
|
79
|
+
destroy: (args_0: string, args_1: {
|
|
80
|
+
ctx?: any;
|
|
81
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
82
|
+
}>>;
|
|
83
|
+
ContextStore: z.ZodOptional<z.ZodAny>;
|
|
84
|
+
encode: z.ZodDefault<z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodString>>>;
|
|
85
|
+
decode: z.ZodDefault<z.ZodFunction<z.ZodTuple<[z.ZodString], z.ZodUnknown>, z.ZodAny>>;
|
|
86
|
+
genid: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny], z.ZodUnknown>, z.ZodString>>;
|
|
87
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
88
|
+
valid: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny, z.ZodAny], z.ZodUnknown>, z.ZodAny>>;
|
|
89
|
+
beforeSave: z.ZodOptional<z.ZodFunction<z.ZodTuple<[z.ZodAny, z.ZodAny], z.ZodUnknown>, z.ZodVoid>>;
|
|
90
|
+
} & {
|
|
91
|
+
logValue: z.ZodDefault<z.ZodBoolean>;
|
|
92
|
+
}, "strip", z.ZodTypeAny, {
|
|
93
|
+
logValue: boolean;
|
|
94
|
+
key: string;
|
|
95
|
+
autoCommit: boolean;
|
|
96
|
+
overwrite: boolean;
|
|
97
|
+
httpOnly: boolean;
|
|
98
|
+
signed: boolean;
|
|
99
|
+
rolling: boolean;
|
|
100
|
+
renew: boolean;
|
|
101
|
+
encode: (args_0: any, ...args: unknown[]) => string;
|
|
102
|
+
decode: (args_0: string, ...args: unknown[]) => any;
|
|
103
|
+
maxAge?: number | "session" | undefined;
|
|
104
|
+
secure?: boolean | undefined;
|
|
105
|
+
sameSite?: string | undefined;
|
|
106
|
+
externalKey?: {
|
|
107
|
+
set: (args_0: any, args_1: string, ...args: unknown[]) => void;
|
|
108
|
+
get: (args_0: any, ...args: unknown[]) => string;
|
|
109
|
+
} | undefined;
|
|
110
|
+
store?: {
|
|
111
|
+
set: (args_0: string, args_1: any, args_2: number, args_3: {
|
|
112
|
+
rolling: boolean;
|
|
113
|
+
changed: boolean;
|
|
114
|
+
ctx?: any;
|
|
115
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
116
|
+
get: (args_0: string, args_1: number, args_2: {
|
|
117
|
+
rolling: boolean;
|
|
118
|
+
ctx?: any;
|
|
119
|
+
}, ...args: unknown[]) => Promise<any>;
|
|
120
|
+
destroy: (args_0: string, args_1: {
|
|
121
|
+
ctx?: any;
|
|
122
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
123
|
+
} | undefined;
|
|
124
|
+
ContextStore?: any;
|
|
125
|
+
genid?: ((args_0: any, ...args: unknown[]) => string) | undefined;
|
|
126
|
+
prefix?: string | undefined;
|
|
127
|
+
valid?: ((args_0: any, args_1: any, ...args: unknown[]) => any) | undefined;
|
|
128
|
+
beforeSave?: ((args_0: any, args_1: any, ...args: unknown[]) => void) | undefined;
|
|
129
|
+
}, {
|
|
130
|
+
logValue?: boolean | undefined;
|
|
131
|
+
key?: string | undefined;
|
|
132
|
+
maxAge?: number | "session" | undefined;
|
|
133
|
+
autoCommit?: boolean | undefined;
|
|
134
|
+
overwrite?: boolean | undefined;
|
|
135
|
+
httpOnly?: boolean | undefined;
|
|
136
|
+
signed?: boolean | undefined;
|
|
137
|
+
rolling?: boolean | undefined;
|
|
138
|
+
renew?: boolean | undefined;
|
|
139
|
+
secure?: boolean | undefined;
|
|
140
|
+
sameSite?: string | undefined;
|
|
141
|
+
externalKey?: {
|
|
142
|
+
set: (args_0: any, args_1: string, ...args: unknown[]) => void;
|
|
143
|
+
get: (args_0: any, ...args: unknown[]) => string;
|
|
144
|
+
} | undefined;
|
|
145
|
+
store?: {
|
|
146
|
+
set: (args_0: string, args_1: any, args_2: number, args_3: {
|
|
147
|
+
rolling: boolean;
|
|
148
|
+
changed: boolean;
|
|
149
|
+
ctx?: any;
|
|
150
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
151
|
+
get: (args_0: string, args_1: number, args_2: {
|
|
152
|
+
rolling: boolean;
|
|
153
|
+
ctx?: any;
|
|
154
|
+
}, ...args: unknown[]) => Promise<any>;
|
|
155
|
+
destroy: (args_0: string, args_1: {
|
|
156
|
+
ctx?: any;
|
|
157
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
158
|
+
} | undefined;
|
|
159
|
+
ContextStore?: any;
|
|
160
|
+
encode?: ((args_0: any, ...args: unknown[]) => string) | undefined;
|
|
161
|
+
decode?: ((args_0: string, ...args: unknown[]) => any) | undefined;
|
|
162
|
+
genid?: ((args_0: any, ...args: unknown[]) => string) | undefined;
|
|
163
|
+
prefix?: string | undefined;
|
|
164
|
+
valid?: ((args_0: any, args_1: any, ...args: unknown[]) => any) | undefined;
|
|
165
|
+
beforeSave?: ((args_0: any, args_1: any, ...args: unknown[]) => void) | undefined;
|
|
166
|
+
}>;
|
|
167
|
+
type SessionConfig = z.infer<typeof SessionConfig>;
|
|
168
|
+
declare const _default: {
|
|
169
|
+
session: {
|
|
170
|
+
logValue: boolean;
|
|
171
|
+
key: string;
|
|
172
|
+
autoCommit: boolean;
|
|
173
|
+
overwrite: boolean;
|
|
174
|
+
httpOnly: boolean;
|
|
175
|
+
signed: boolean;
|
|
176
|
+
rolling: boolean;
|
|
177
|
+
renew: boolean;
|
|
178
|
+
encode: (args_0: any, ...args: unknown[]) => string;
|
|
179
|
+
decode: (args_0: string, ...args: unknown[]) => any;
|
|
180
|
+
maxAge?: number | "session" | undefined;
|
|
181
|
+
secure?: boolean | undefined;
|
|
182
|
+
sameSite?: string | undefined;
|
|
183
|
+
externalKey?: {
|
|
184
|
+
set: (args_0: any, args_1: string, ...args: unknown[]) => void;
|
|
185
|
+
get: (args_0: any, ...args: unknown[]) => string;
|
|
186
|
+
} | undefined;
|
|
187
|
+
store?: {
|
|
188
|
+
set: (args_0: string, args_1: any, args_2: number, args_3: {
|
|
189
|
+
rolling: boolean;
|
|
190
|
+
changed: boolean;
|
|
191
|
+
ctx?: any;
|
|
192
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
193
|
+
get: (args_0: string, args_1: number, args_2: {
|
|
194
|
+
rolling: boolean;
|
|
195
|
+
ctx?: any;
|
|
196
|
+
}, ...args: unknown[]) => Promise<any>;
|
|
197
|
+
destroy: (args_0: string, args_1: {
|
|
198
|
+
ctx?: any;
|
|
199
|
+
}, ...args: unknown[]) => Promise<void>;
|
|
200
|
+
} | undefined;
|
|
201
|
+
ContextStore?: any;
|
|
202
|
+
genid?: ((args_0: any, ...args: unknown[]) => string) | undefined;
|
|
203
|
+
prefix?: string | undefined;
|
|
204
|
+
valid?: ((args_0: any, args_1: any, ...args: unknown[]) => any) | undefined;
|
|
205
|
+
beforeSave?: ((args_0: any, args_1: any, ...args: unknown[]) => void) | undefined;
|
|
206
|
+
};
|
|
207
|
+
};
|
|
208
|
+
declare module 'egg' {
|
|
209
|
+
interface EggAppConfig {
|
|
210
|
+
session: SessionConfig;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//#endregion
|
|
214
|
+
export { SessionConfig, _default as default };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import z from "zod";
|
|
2
|
+
import { SessionOptions } from "koa-session";
|
|
3
|
+
|
|
4
|
+
//#region src/config/config.default.ts
|
|
5
|
+
const SessionConfig = SessionOptions.extend({ logValue: z.boolean().default(true) });
|
|
6
|
+
var config_default_default = { session: SessionConfig.parse({
|
|
7
|
+
maxAge: 24 * 3600 * 1e3,
|
|
8
|
+
key: "EGG_SESS",
|
|
9
|
+
httpOnly: true,
|
|
10
|
+
encrypt: true
|
|
11
|
+
}) };
|
|
12
|
+
|
|
13
|
+
//#endregion
|
|
14
|
+
export { SessionConfig, config_default_default as default };
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
package/package.json
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eggjs/session",
|
|
3
|
-
"version": "
|
|
4
|
-
"publishConfig": {
|
|
5
|
-
"access": "public"
|
|
6
|
-
},
|
|
3
|
+
"version": "5.0.0-beta.15",
|
|
7
4
|
"description": "session plugin for egg",
|
|
8
5
|
"eggPlugin": {
|
|
9
|
-
"name": "session"
|
|
10
|
-
"exports": {
|
|
11
|
-
"import": "./dist/esm",
|
|
12
|
-
"require": "./dist/commonjs",
|
|
13
|
-
"typescript": "./src"
|
|
14
|
-
}
|
|
6
|
+
"name": "session"
|
|
15
7
|
},
|
|
16
8
|
"repository": {
|
|
17
9
|
"type": "git",
|
|
18
|
-
"url": "git@github.com:eggjs/
|
|
10
|
+
"url": "git@github.com:eggjs/egg.git",
|
|
11
|
+
"directory": "plugins/session"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/eggjs/egg/tree/next/plugins/session#readme",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/eggjs/egg/issues"
|
|
19
16
|
},
|
|
20
17
|
"author": "dead_horse",
|
|
21
18
|
"keywords": [
|
|
@@ -26,67 +23,48 @@
|
|
|
26
23
|
"cookie"
|
|
27
24
|
],
|
|
28
25
|
"engines": {
|
|
29
|
-
"node": ">= 18.
|
|
26
|
+
"node": ">= 22.18.0"
|
|
27
|
+
},
|
|
28
|
+
"type": "module",
|
|
29
|
+
"exports": {
|
|
30
|
+
".": "./dist/index.js",
|
|
31
|
+
"./app": "./dist/app.js",
|
|
32
|
+
"./app/extend/application": "./dist/app/extend/application.js",
|
|
33
|
+
"./app/middleware/session": "./dist/app/middleware/session.js",
|
|
34
|
+
"./config/config.default": "./dist/config/config.default.js",
|
|
35
|
+
"./package.json": "./package.json"
|
|
36
|
+
},
|
|
37
|
+
"publishConfig": {
|
|
38
|
+
"access": "public"
|
|
30
39
|
},
|
|
31
40
|
"dependencies": {
|
|
32
|
-
"@eggjs/core": "^6.3.1",
|
|
33
41
|
"koa-session": "^7.0.2",
|
|
34
42
|
"zod": "^3.24.1"
|
|
35
43
|
},
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"egg": "4.1.0-beta.15"
|
|
46
|
+
},
|
|
36
47
|
"devDependencies": {
|
|
37
|
-
"@arethetypeswrong/cli": "^0.17.1",
|
|
38
|
-
"@eggjs/bin": "7",
|
|
39
|
-
"@eggjs/mock": "^6.0.5",
|
|
40
48
|
"@eggjs/redis": "^3.0.0",
|
|
41
|
-
"@
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"rimraf": "6",
|
|
49
|
-
"snap-shot-it": "^7.9.10",
|
|
50
|
-
"tshy": "3",
|
|
51
|
-
"tshy-after": "1",
|
|
52
|
-
"typescript": "5"
|
|
53
|
-
},
|
|
54
|
-
"scripts": {
|
|
55
|
-
"lint": "eslint --cache src test --ext .ts",
|
|
56
|
-
"pretest": "npm run clean && npm run lint -- --fix",
|
|
57
|
-
"test": "egg-bin test",
|
|
58
|
-
"test:snapshot:update": "SNAPSHOT_UPDATE=1 egg-bin test",
|
|
59
|
-
"preci": "npm run clean && npm run lint",
|
|
60
|
-
"ci": "egg-bin cov",
|
|
61
|
-
"postci": "npm run prepublishOnly && npm run clean",
|
|
62
|
-
"clean": "rimraf dist",
|
|
63
|
-
"prepublishOnly": "tshy && tshy-after && attw --pack"
|
|
64
|
-
},
|
|
65
|
-
"type": "module",
|
|
66
|
-
"tshy": {
|
|
67
|
-
"exports": {
|
|
68
|
-
".": "./src/index.ts",
|
|
69
|
-
"./package.json": "./package.json"
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
"exports": {
|
|
73
|
-
".": {
|
|
74
|
-
"import": {
|
|
75
|
-
"types": "./dist/esm/index.d.ts",
|
|
76
|
-
"default": "./dist/esm/index.js"
|
|
77
|
-
},
|
|
78
|
-
"require": {
|
|
79
|
-
"types": "./dist/commonjs/index.d.ts",
|
|
80
|
-
"default": "./dist/commonjs/index.js"
|
|
81
|
-
}
|
|
82
|
-
},
|
|
83
|
-
"./package.json": "./package.json"
|
|
49
|
+
"@types/node": "24.5.2",
|
|
50
|
+
"tsdown": "^0.15.4",
|
|
51
|
+
"typescript": "5.9.2",
|
|
52
|
+
"vitest": "4.0.0-beta.13",
|
|
53
|
+
"@eggjs/supertest": "9.0.0-beta.15",
|
|
54
|
+
"@eggjs/tsconfig": "3.1.0-beta.15",
|
|
55
|
+
"@eggjs/mock": "7.0.0-beta.15"
|
|
84
56
|
},
|
|
85
57
|
"files": [
|
|
86
|
-
"dist"
|
|
87
|
-
"src"
|
|
58
|
+
"dist"
|
|
88
59
|
],
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
|
|
60
|
+
"main": "./dist/index.js",
|
|
61
|
+
"module": "./dist/index.js",
|
|
62
|
+
"types": "./dist/index.d.ts",
|
|
63
|
+
"scripts": {
|
|
64
|
+
"build": "tsdown",
|
|
65
|
+
"typecheck": "tsc --noEmit",
|
|
66
|
+
"lint": "oxlint --type-aware",
|
|
67
|
+
"lint:fix": "npm run lint -- --fix",
|
|
68
|
+
"test": "npm run lint:fix && vitest"
|
|
69
|
+
}
|
|
70
|
+
}
|