@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.

Files changed (38) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +19 -14
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +19 -14
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/constants.d.ts +3 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +6 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/constants.mjs +4 -0
  12. package/dist/constants.mjs.map +1 -0
  13. package/dist/package.json.js +12 -11
  14. package/dist/package.json.js.map +1 -1
  15. package/dist/package.json.mjs +12 -11
  16. package/dist/package.json.mjs.map +1 -1
  17. package/dist/providers/index.d.ts.map +1 -1
  18. package/dist/providers/index.js +2 -0
  19. package/dist/providers/index.js.map +1 -1
  20. package/dist/providers/index.mjs +2 -0
  21. package/dist/providers/index.mjs.map +1 -1
  22. package/dist/providers/session-manager.d.ts +3 -0
  23. package/dist/providers/session-manager.d.ts.map +1 -0
  24. package/dist/providers/session-manager.js +23 -0
  25. package/dist/providers/session-manager.js.map +1 -0
  26. package/dist/providers/session-manager.mjs +21 -0
  27. package/dist/providers/session-manager.mjs.map +1 -0
  28. package/dist/services/session-manager.d.ts +167 -0
  29. package/dist/services/session-manager.d.ts.map +1 -0
  30. package/dist/services/session-manager.js +529 -0
  31. package/dist/services/session-manager.js.map +1 -0
  32. package/dist/services/session-manager.mjs +526 -0
  33. package/dist/services/session-manager.mjs.map +1 -0
  34. package/package.json +12 -11
  35. package/dist/services/document-service/utils/clean-component-join-table.js +0 -138
  36. package/dist/services/document-service/utils/clean-component-join-table.js.map +0 -1
  37. package/dist/services/document-service/utils/clean-component-join-table.mjs +0 -136
  38. package/dist/services/document-service/utils/clean-component-join-table.mjs.map +0 -1
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/core";
2
- var version = "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828";
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.e65c671348c825470427c509f1273497b0b4b828",
59
- "@strapi/database": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
60
- "@strapi/generators": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
61
- "@strapi/logger": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
62
- "@strapi/permissions": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
63
- "@strapi/types": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
64
- "@strapi/typescript-utils": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
65
- "@strapi/utils": "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828",
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.e65c671348c825470427c509f1273497b0b4b828",
133
+ "eslint-config-custom": "0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011",
133
134
  supertest: "6.3.3",
134
- tsconfig: "0.0.0-experimental.e65c671348c825470427c509f1273497b0b4b828"
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":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,eAAO,MAAM,SAAS,EAAE,QAAQ,EAA8D,CAAC"}
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"}
@@ -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, admin, coreStore, webhooks, telemetry, cron];\n"],"names":["providers","registries","admin","coreStore","webhooks","telemetry","cron"],"mappings":";;;;;;;;;MASaA,SAAwB,GAAA;AAACC,IAAAA,UAAAA;AAAYC,IAAAA,KAAAA;AAAOC,IAAAA,SAAAA;AAAWC,IAAAA,QAAAA;AAAUC,IAAAA,SAAAA;AAAWC,IAAAA;;;;;"}
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;;;;;"}
@@ -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, admin, coreStore, webhooks, telemetry, cron];\n"],"names":["providers","registries","admin","coreStore","webhooks","telemetry","cron"],"mappings":";;;;;;;MASaA,SAAwB,GAAA;AAACC,IAAAA,UAAAA;AAAYC,IAAAA,KAAAA;AAAOC,IAAAA,SAAAA;AAAWC,IAAAA,QAAAA;AAAUC,IAAAA,SAAAA;AAAWC,IAAAA;;;;;"}
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,3 @@
1
+ declare const _default: import("./provider").Provider;
2
+ export default _default;
3
+ //# sourceMappingURL=session-manager.d.ts.map
@@ -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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"}