@strapi/core 0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828 → 0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011
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.
Potentially problematic release.
This version of @strapi/core might be problematic. Click here for more details.
- package/dist/Strapi.d.ts +1 -0
- package/dist/Strapi.d.ts.map +1 -1
- package/dist/Strapi.js +19 -14
- package/dist/Strapi.js.map +1 -1
- package/dist/Strapi.mjs +19 -14
- package/dist/Strapi.mjs.map +1 -1
- package/dist/constants.d.ts +3 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/dist/constants.mjs +4 -0
- package/dist/constants.mjs.map +1 -0
- package/dist/package.json.js +12 -11
- package/dist/package.json.js.map +1 -1
- package/dist/package.json.mjs +12 -11
- package/dist/package.json.mjs.map +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/index.mjs +2 -0
- package/dist/providers/index.mjs.map +1 -1
- package/dist/providers/session-manager.d.ts +3 -0
- package/dist/providers/session-manager.d.ts.map +1 -0
- package/dist/providers/session-manager.js +23 -0
- package/dist/providers/session-manager.js.map +1 -0
- package/dist/providers/session-manager.mjs +21 -0
- package/dist/providers/session-manager.mjs.map +1 -0
- package/dist/services/session-manager.d.ts +167 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +529 -0
- package/dist/services/session-manager.js.map +1 -0
- package/dist/services/session-manager.mjs +526 -0
- package/dist/services/session-manager.mjs.map +1 -0
- package/package.json +12 -11
- package/dist/services/document-service/utils/clean-component-join-table.js +0 -138
- package/dist/services/document-service/utils/clean-component-join-table.js.map +0 -1
- package/dist/services/document-service/utils/clean-component-join-table.mjs +0 -136
- package/dist/services/document-service/utils/clean-component-join-table.mjs.map +0 -1
package/dist/package.json.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var name = "@strapi/core";
|
|
2
|
-
var version = "0.0.0-experimental.
|
|
2
|
+
var version = "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011";
|
|
3
3
|
var description = "Core of Strapi";
|
|
4
4
|
var homepage = "https://strapi.io";
|
|
5
5
|
var bugs = {
|
|
@@ -55,14 +55,14 @@ var dependencies = {
|
|
|
55
55
|
"@koa/cors": "5.0.0",
|
|
56
56
|
"@koa/router": "12.0.2",
|
|
57
57
|
"@paralleldrive/cuid2": "2.2.2",
|
|
58
|
-
"@strapi/admin": "0.0.0-experimental.
|
|
59
|
-
"@strapi/database": "0.0.0-experimental.
|
|
60
|
-
"@strapi/generators": "0.0.0-experimental.
|
|
61
|
-
"@strapi/logger": "0.0.0-experimental.
|
|
62
|
-
"@strapi/permissions": "0.0.0-experimental.
|
|
63
|
-
"@strapi/types": "0.0.0-experimental.
|
|
64
|
-
"@strapi/typescript-utils": "0.0.0-experimental.
|
|
65
|
-
"@strapi/utils": "0.0.0-experimental.
|
|
58
|
+
"@strapi/admin": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
59
|
+
"@strapi/database": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
60
|
+
"@strapi/generators": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
61
|
+
"@strapi/logger": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
62
|
+
"@strapi/permissions": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
63
|
+
"@strapi/types": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
64
|
+
"@strapi/typescript-utils": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
65
|
+
"@strapi/utils": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
66
66
|
"@vercel/stega": "0.1.2",
|
|
67
67
|
bcryptjs: "2.4.3",
|
|
68
68
|
boxen: "5.1.2",
|
|
@@ -83,6 +83,7 @@ var dependencies = {
|
|
|
83
83
|
inquirer: "8.2.5",
|
|
84
84
|
"is-docker": "2.2.1",
|
|
85
85
|
"json-logic-js": "2.0.5",
|
|
86
|
+
jsonwebtoken: "9.0.0",
|
|
86
87
|
koa: "2.16.1",
|
|
87
88
|
"koa-body": "6.0.1",
|
|
88
89
|
"koa-compose": "4.1.0",
|
|
@@ -129,9 +130,9 @@ var devDependencies = {
|
|
|
129
130
|
"@types/node": "18.19.24",
|
|
130
131
|
"@types/node-schedule": "2.1.7",
|
|
131
132
|
"@types/statuses": "2.0.1",
|
|
132
|
-
"eslint-config-custom": "0.0.0-experimental.
|
|
133
|
+
"eslint-config-custom": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
|
|
133
134
|
supertest: "6.3.3",
|
|
134
|
-
tsconfig: "0.0.0-experimental.
|
|
135
|
+
tsconfig: "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011"
|
|
135
136
|
};
|
|
136
137
|
var engines = {
|
|
137
138
|
node: ">=18.0.0 <=22.x.x",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"package.json.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,SAAS,EAAE,QAAQ,EAQ/B,CAAC"}
|
package/dist/providers/index.js
CHANGED
|
@@ -4,6 +4,7 @@ var admin = require('./admin.js');
|
|
|
4
4
|
var coreStore = require('./coreStore.js');
|
|
5
5
|
var cron = require('./cron.js');
|
|
6
6
|
var registries = require('./registries.js');
|
|
7
|
+
var sessionManager = require('./session-manager.js');
|
|
7
8
|
var telemetry = require('./telemetry.js');
|
|
8
9
|
var webhooks = require('./webhooks.js');
|
|
9
10
|
|
|
@@ -11,6 +12,7 @@ const providers = [
|
|
|
11
12
|
registries,
|
|
12
13
|
admin,
|
|
13
14
|
coreStore,
|
|
15
|
+
sessionManager,
|
|
14
16
|
webhooks,
|
|
15
17
|
telemetry,
|
|
16
18
|
cron
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/providers/index.ts"],"sourcesContent":["import admin from './admin';\nimport coreStore from './coreStore';\nimport cron from './cron';\nimport registries from './registries';\nimport telemetry from './telemetry';\nimport webhooks from './webhooks';\n\nimport type { Provider } from './provider';\n\nexport const providers: Provider[] = [registries
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/providers/index.ts"],"sourcesContent":["import admin from './admin';\nimport coreStore from './coreStore';\nimport cron from './cron';\nimport registries from './registries';\nimport sessionManager from './session-manager';\nimport telemetry from './telemetry';\nimport webhooks from './webhooks';\n\nimport type { Provider } from './provider';\n\nexport const providers: Provider[] = [\n registries,\n admin,\n coreStore,\n sessionManager,\n webhooks,\n telemetry,\n cron,\n];\n"],"names":["providers","registries","admin","coreStore","sessionManager","webhooks","telemetry","cron"],"mappings":";;;;;;;;;;MAUaA,SAAwB,GAAA;AACnCC,IAAAA,UAAAA;AACAC,IAAAA,KAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA;;;;;"}
|
package/dist/providers/index.mjs
CHANGED
|
@@ -2,6 +2,7 @@ import admin from './admin.mjs';
|
|
|
2
2
|
import coreStore from './coreStore.mjs';
|
|
3
3
|
import cron from './cron.mjs';
|
|
4
4
|
import registries from './registries.mjs';
|
|
5
|
+
import sessionManager from './session-manager.mjs';
|
|
5
6
|
import telemetry from './telemetry.mjs';
|
|
6
7
|
import webhooks from './webhooks.mjs';
|
|
7
8
|
|
|
@@ -9,6 +10,7 @@ const providers = [
|
|
|
9
10
|
registries,
|
|
10
11
|
admin,
|
|
11
12
|
coreStore,
|
|
13
|
+
sessionManager,
|
|
12
14
|
webhooks,
|
|
13
15
|
telemetry,
|
|
14
16
|
cron
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../src/providers/index.ts"],"sourcesContent":["import admin from './admin';\nimport coreStore from './coreStore';\nimport cron from './cron';\nimport registries from './registries';\nimport telemetry from './telemetry';\nimport webhooks from './webhooks';\n\nimport type { Provider } from './provider';\n\nexport const providers: Provider[] = [registries
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/providers/index.ts"],"sourcesContent":["import admin from './admin';\nimport coreStore from './coreStore';\nimport cron from './cron';\nimport registries from './registries';\nimport sessionManager from './session-manager';\nimport telemetry from './telemetry';\nimport webhooks from './webhooks';\n\nimport type { Provider } from './provider';\n\nexport const providers: Provider[] = [\n registries,\n admin,\n coreStore,\n sessionManager,\n webhooks,\n telemetry,\n cron,\n];\n"],"names":["providers","registries","admin","coreStore","sessionManager","webhooks","telemetry","cron"],"mappings":";;;;;;;;MAUaA,SAAwB,GAAA;AACnCC,IAAAA,UAAAA;AACAC,IAAAA,KAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA,cAAAA;AACAC,IAAAA,QAAAA;AACAC,IAAAA,SAAAA;AACAC,IAAAA;;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/providers/session-manager.ts"],"names":[],"mappings":";AAYA,wBAoBG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var provider = require('./provider.js');
|
|
4
|
+
var sessionManager$1 = require('../services/session-manager.js');
|
|
5
|
+
|
|
6
|
+
var sessionManager = provider.defineProvider({
|
|
7
|
+
init (strapi) {
|
|
8
|
+
strapi.add('sessionManager', ()=>sessionManager$1.createSessionManager({
|
|
9
|
+
db: strapi.db
|
|
10
|
+
}));
|
|
11
|
+
},
|
|
12
|
+
async register (strapi) {
|
|
13
|
+
// Get JWT secret from admin auth settings (same as admin token service)
|
|
14
|
+
const adminAuth = strapi.config.get('admin.auth', {});
|
|
15
|
+
const jwtSecret = adminAuth.secret;
|
|
16
|
+
if (!jwtSecret) {
|
|
17
|
+
throw new Error('Missing admin.auth.secret configuration. The SessionManager requires a JWT secret');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
module.exports = sessionManager;
|
|
23
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Algorithm } from 'jsonwebtoken';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\ninterface AdminAuthConfig {\n secret?: string;\n options?: {\n algorithm?: Algorithm;\n [key: string]: unknown;\n };\n}\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async register(strapi) {\n // Get JWT secret from admin auth settings (same as admin token service)\n const adminAuth = strapi.config.get<AdminAuthConfig>('admin.auth', {});\n const jwtSecret = adminAuth.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","register","adminAuth","config","get","jwtSecret","secret","Error"],"mappings":";;;;;AAYA,qBAAeA,uBAAe,CAAA;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAkB,EAAA,IAC3BC,qCAAqB,CAAA;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAMC,UAASJ,MAAM,EAAA;;AAEnB,QAAA,MAAMK,YAAYL,MAAOM,CAAAA,MAAM,CAACC,GAAG,CAAkB,cAAc,EAAC,CAAA;QACpE,MAAMC,SAAAA,GAAYH,UAAUI,MAAM;AAElC,QAAA,IAAI,CAACD,SAAW,EAAA;AACd,YAAA,MAAM,IAAIE,KACR,CAAA,mFAAA,CAAA;AAEJ;AACF;AACF,CAAG,CAAA;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineProvider } from './provider.mjs';
|
|
2
|
+
import { createSessionManager } from '../services/session-manager.mjs';
|
|
3
|
+
|
|
4
|
+
var sessionManager = defineProvider({
|
|
5
|
+
init (strapi) {
|
|
6
|
+
strapi.add('sessionManager', ()=>createSessionManager({
|
|
7
|
+
db: strapi.db
|
|
8
|
+
}));
|
|
9
|
+
},
|
|
10
|
+
async register (strapi) {
|
|
11
|
+
// Get JWT secret from admin auth settings (same as admin token service)
|
|
12
|
+
const adminAuth = strapi.config.get('admin.auth', {});
|
|
13
|
+
const jwtSecret = adminAuth.secret;
|
|
14
|
+
if (!jwtSecret) {
|
|
15
|
+
throw new Error('Missing admin.auth.secret configuration. The SessionManager requires a JWT secret');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { sessionManager as default };
|
|
21
|
+
//# sourceMappingURL=session-manager.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.mjs","sources":["../../src/providers/session-manager.ts"],"sourcesContent":["import type { Algorithm } from 'jsonwebtoken';\nimport { defineProvider } from './provider';\nimport { createSessionManager } from '../services/session-manager';\n\ninterface AdminAuthConfig {\n secret?: string;\n options?: {\n algorithm?: Algorithm;\n [key: string]: unknown;\n };\n}\n\nexport default defineProvider({\n init(strapi) {\n strapi.add('sessionManager', () =>\n createSessionManager({\n db: strapi.db,\n })\n );\n },\n\n async register(strapi) {\n // Get JWT secret from admin auth settings (same as admin token service)\n const adminAuth = strapi.config.get<AdminAuthConfig>('admin.auth', {});\n const jwtSecret = adminAuth.secret;\n\n if (!jwtSecret) {\n throw new Error(\n 'Missing admin.auth.secret configuration. The SessionManager requires a JWT secret'\n );\n }\n },\n});\n"],"names":["defineProvider","init","strapi","add","createSessionManager","db","register","adminAuth","config","get","jwtSecret","secret","Error"],"mappings":";;;AAYA,qBAAeA,cAAe,CAAA;AAC5BC,IAAAA,IAAAA,CAAAA,CAAKC,MAAM,EAAA;AACTA,QAAAA,MAAAA,CAAOC,GAAG,CAAC,gBAAkB,EAAA,IAC3BC,oBAAqB,CAAA;AACnBC,gBAAAA,EAAAA,EAAIH,OAAOG;AACb,aAAA,CAAA,CAAA;AAEJ,KAAA;AAEA,IAAA,MAAMC,UAASJ,MAAM,EAAA;;AAEnB,QAAA,MAAMK,YAAYL,MAAOM,CAAAA,MAAM,CAACC,GAAG,CAAkB,cAAc,EAAC,CAAA;QACpE,MAAMC,SAAAA,GAAYH,UAAUI,MAAM;AAElC,QAAA,IAAI,CAACD,SAAW,EAAA;AACd,YAAA,MAAM,IAAIE,KACR,CAAA,mFAAA,CAAA;AAEJ;AACF;AACF,CAAG,CAAA;;;;"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import type { Algorithm } from 'jsonwebtoken';
|
|
2
|
+
import type { Database } from '@strapi/database';
|
|
3
|
+
export interface SessionProvider {
|
|
4
|
+
create(session: SessionData): Promise<SessionData>;
|
|
5
|
+
findBySessionId(sessionId: string): Promise<SessionData | null>;
|
|
6
|
+
updateBySessionId(sessionId: string, data: Partial<SessionData>): Promise<void>;
|
|
7
|
+
deleteBySessionId(sessionId: string): Promise<void>;
|
|
8
|
+
deleteExpired(): Promise<void>;
|
|
9
|
+
deleteBy(criteria: {
|
|
10
|
+
userId?: string;
|
|
11
|
+
origin?: string;
|
|
12
|
+
deviceId?: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export interface SessionData {
|
|
16
|
+
id?: string;
|
|
17
|
+
userId: string;
|
|
18
|
+
sessionId: string;
|
|
19
|
+
deviceId?: string;
|
|
20
|
+
origin: string;
|
|
21
|
+
childId?: string | null;
|
|
22
|
+
type?: 'refresh' | 'session';
|
|
23
|
+
status?: 'active' | 'rotated' | 'revoked';
|
|
24
|
+
expiresAt: Date;
|
|
25
|
+
absoluteExpiresAt?: Date | null;
|
|
26
|
+
createdAt?: Date;
|
|
27
|
+
updatedAt?: Date;
|
|
28
|
+
}
|
|
29
|
+
export interface RefreshTokenPayload {
|
|
30
|
+
userId: string;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
type: 'refresh';
|
|
33
|
+
exp: number;
|
|
34
|
+
iat: number;
|
|
35
|
+
}
|
|
36
|
+
export interface AccessTokenPayload {
|
|
37
|
+
userId: string;
|
|
38
|
+
sessionId: string;
|
|
39
|
+
type: 'access';
|
|
40
|
+
exp: number;
|
|
41
|
+
iat: number;
|
|
42
|
+
}
|
|
43
|
+
export type TokenPayload = RefreshTokenPayload | AccessTokenPayload;
|
|
44
|
+
export interface ValidateRefreshTokenResult {
|
|
45
|
+
isValid: boolean;
|
|
46
|
+
userId?: string;
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
error?: 'invalid_token' | 'token_expired' | 'session_not_found' | 'session_expired' | 'wrong_token_type';
|
|
49
|
+
}
|
|
50
|
+
export interface SessionManagerConfig {
|
|
51
|
+
jwtSecret?: string;
|
|
52
|
+
accessTokenLifespan: number;
|
|
53
|
+
maxRefreshTokenLifespan: number;
|
|
54
|
+
idleRefreshTokenLifespan: number;
|
|
55
|
+
maxSessionLifespan: number;
|
|
56
|
+
idleSessionLifespan: number;
|
|
57
|
+
algorithm?: Algorithm;
|
|
58
|
+
jwtOptions?: Record<string, unknown>;
|
|
59
|
+
}
|
|
60
|
+
declare class OriginSessionManager {
|
|
61
|
+
private sessionManager;
|
|
62
|
+
private origin;
|
|
63
|
+
constructor(sessionManager: SessionManager, origin: string);
|
|
64
|
+
generateRefreshToken(userId: string, deviceId: string | undefined, options?: {
|
|
65
|
+
type?: 'refresh' | 'session';
|
|
66
|
+
}): Promise<{
|
|
67
|
+
token: string;
|
|
68
|
+
sessionId: string;
|
|
69
|
+
absoluteExpiresAt: string;
|
|
70
|
+
}>;
|
|
71
|
+
generateAccessToken(refreshToken: string): Promise<{
|
|
72
|
+
token: string;
|
|
73
|
+
} | {
|
|
74
|
+
error: string;
|
|
75
|
+
}>;
|
|
76
|
+
rotateRefreshToken(refreshToken: string): Promise<{
|
|
77
|
+
token: string;
|
|
78
|
+
sessionId: string;
|
|
79
|
+
absoluteExpiresAt: string;
|
|
80
|
+
type: 'refresh' | 'session';
|
|
81
|
+
} | {
|
|
82
|
+
error: string;
|
|
83
|
+
}>;
|
|
84
|
+
validateAccessToken(token: string): {
|
|
85
|
+
isValid: true;
|
|
86
|
+
payload: AccessTokenPayload;
|
|
87
|
+
} | {
|
|
88
|
+
isValid: false;
|
|
89
|
+
payload: null;
|
|
90
|
+
};
|
|
91
|
+
validateRefreshToken(token: string): Promise<ValidateRefreshTokenResult>;
|
|
92
|
+
invalidateRefreshToken(userId: string, deviceId?: string): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Returns true when a session exists and is not expired for this origin.
|
|
95
|
+
* If the session exists but is expired, it will be deleted as part of this check.
|
|
96
|
+
*/
|
|
97
|
+
isSessionActive(sessionId: string): Promise<boolean>;
|
|
98
|
+
}
|
|
99
|
+
declare class SessionManager {
|
|
100
|
+
private provider;
|
|
101
|
+
private originConfigs;
|
|
102
|
+
private cleanupInvocationCounter;
|
|
103
|
+
private readonly cleanupEveryCalls;
|
|
104
|
+
constructor(provider: SessionProvider);
|
|
105
|
+
/**
|
|
106
|
+
* Define configuration for a specific origin
|
|
107
|
+
*/
|
|
108
|
+
defineOrigin(origin: string, config: SessionManagerConfig): void;
|
|
109
|
+
/**
|
|
110
|
+
* Check if an origin is defined
|
|
111
|
+
*/
|
|
112
|
+
hasOrigin(origin: string): boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Get configuration for a specific origin, throw error if not defined
|
|
115
|
+
*/
|
|
116
|
+
private getConfigForOrigin;
|
|
117
|
+
/**
|
|
118
|
+
* Get the appropriate JWT key based on the algorithm
|
|
119
|
+
*/
|
|
120
|
+
private getJwtKey;
|
|
121
|
+
generateSessionId(): string;
|
|
122
|
+
private maybeCleanupExpired;
|
|
123
|
+
/**
|
|
124
|
+
* Get the cleanup every calls threshold
|
|
125
|
+
*/
|
|
126
|
+
get cleanupThreshold(): number;
|
|
127
|
+
generateRefreshToken(userId: string, deviceId: string | undefined, origin: string, options?: {
|
|
128
|
+
type?: 'refresh' | 'session';
|
|
129
|
+
}): Promise<{
|
|
130
|
+
token: string;
|
|
131
|
+
sessionId: string;
|
|
132
|
+
absoluteExpiresAt: string;
|
|
133
|
+
}>;
|
|
134
|
+
validateAccessToken(token: string, origin: string): {
|
|
135
|
+
isValid: true;
|
|
136
|
+
payload: AccessTokenPayload;
|
|
137
|
+
} | {
|
|
138
|
+
isValid: false;
|
|
139
|
+
payload: null;
|
|
140
|
+
};
|
|
141
|
+
validateRefreshToken(token: string, origin: string): Promise<ValidateRefreshTokenResult>;
|
|
142
|
+
invalidateRefreshToken(origin: string, userId: string, deviceId?: string): Promise<void>;
|
|
143
|
+
generateAccessToken(refreshToken: string, origin: string): Promise<{
|
|
144
|
+
token: string;
|
|
145
|
+
} | {
|
|
146
|
+
error: string;
|
|
147
|
+
}>;
|
|
148
|
+
rotateRefreshToken(refreshToken: string, origin: string): Promise<{
|
|
149
|
+
token: string;
|
|
150
|
+
sessionId: string;
|
|
151
|
+
absoluteExpiresAt: string;
|
|
152
|
+
type: 'refresh' | 'session';
|
|
153
|
+
} | {
|
|
154
|
+
error: string;
|
|
155
|
+
}>;
|
|
156
|
+
/**
|
|
157
|
+
* Returns true when a session exists and is not expired.
|
|
158
|
+
* If the session exists but is expired, it will be deleted as part of this check.
|
|
159
|
+
*/
|
|
160
|
+
isSessionActive(sessionId: string, origin: string): Promise<boolean>;
|
|
161
|
+
}
|
|
162
|
+
declare const createDatabaseProvider: (db: Database, contentType: string) => SessionProvider;
|
|
163
|
+
declare const createSessionManager: ({ db, }: {
|
|
164
|
+
db: Database;
|
|
165
|
+
}) => SessionManager & ((origin: string) => OriginSessionManager);
|
|
166
|
+
export { createSessionManager, createDatabaseProvider };
|
|
167
|
+
//# sourceMappingURL=session-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/services/session-manager.ts"],"names":[],"mappings":"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"}
|