@scefira/dfw 1.5.4 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/cjs/lib/APIManager.d.ts.map +1 -1
  2. package/dist/cjs/lib/APIManager.js +103 -49
  3. package/dist/cjs/lib/APIManager.js.map +1 -1
  4. package/dist/cjs/lib/DFWSessionStore.d.ts +23 -6
  5. package/dist/cjs/lib/DFWSessionStore.d.ts.map +1 -1
  6. package/dist/cjs/lib/DFWSessionStore.js +214 -58
  7. package/dist/cjs/lib/DFWSessionStore.js.map +1 -1
  8. package/dist/cjs/modules/DFWSessionModule.d.ts.map +1 -1
  9. package/dist/cjs/modules/DFWSessionModule.js +9 -1
  10. package/dist/cjs/modules/DFWSessionModule.js.map +1 -1
  11. package/dist/cjs/prisma/internal/class.js +2 -2
  12. package/dist/cjs/prisma/internal/class.js.map +1 -1
  13. package/dist/cjs/prisma/internal/prismaNamespace.d.ts +1 -0
  14. package/dist/cjs/prisma/internal/prismaNamespace.d.ts.map +1 -1
  15. package/dist/cjs/prisma/internal/prismaNamespace.js +1 -0
  16. package/dist/cjs/prisma/internal/prismaNamespace.js.map +1 -1
  17. package/dist/cjs/prisma/internal/prismaNamespaceBrowser.d.ts +1 -0
  18. package/dist/cjs/prisma/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  19. package/dist/cjs/prisma/internal/prismaNamespaceBrowser.js +1 -0
  20. package/dist/cjs/prisma/internal/prismaNamespaceBrowser.js.map +1 -1
  21. package/dist/cjs/prisma/models/dfw_session.d.ts +36 -1
  22. package/dist/cjs/prisma/models/dfw_session.d.ts.map +1 -1
  23. package/dist/cjs/test.repository.d.ts +2 -1
  24. package/dist/cjs/test.repository.d.ts.map +1 -1
  25. package/dist/cjs/types/DFWConfig.d.ts +6 -4
  26. package/dist/cjs/types/DFWConfig.d.ts.map +1 -1
  27. package/dist/esm/lib/APIManager.d.ts.map +1 -1
  28. package/dist/esm/lib/APIManager.js +102 -51
  29. package/dist/esm/lib/APIManager.js.map +1 -1
  30. package/dist/esm/lib/DFWSessionStore.d.ts +23 -6
  31. package/dist/esm/lib/DFWSessionStore.d.ts.map +1 -1
  32. package/dist/esm/lib/DFWSessionStore.js +200 -56
  33. package/dist/esm/lib/DFWSessionStore.js.map +1 -1
  34. package/dist/esm/modules/DFWSessionModule.d.ts.map +1 -1
  35. package/dist/esm/modules/DFWSessionModule.js +9 -1
  36. package/dist/esm/modules/DFWSessionModule.js.map +1 -1
  37. package/dist/esm/prisma/internal/class.js +2 -2
  38. package/dist/esm/prisma/internal/class.js.map +1 -1
  39. package/dist/esm/prisma/internal/prismaNamespace.d.ts +1 -0
  40. package/dist/esm/prisma/internal/prismaNamespace.d.ts.map +1 -1
  41. package/dist/esm/prisma/internal/prismaNamespace.js +1 -0
  42. package/dist/esm/prisma/internal/prismaNamespace.js.map +1 -1
  43. package/dist/esm/prisma/internal/prismaNamespaceBrowser.d.ts +1 -0
  44. package/dist/esm/prisma/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  45. package/dist/esm/prisma/internal/prismaNamespaceBrowser.js +1 -0
  46. package/dist/esm/prisma/internal/prismaNamespaceBrowser.js.map +1 -1
  47. package/dist/esm/prisma/models/dfw_session.d.ts +36 -1
  48. package/dist/esm/prisma/models/dfw_session.d.ts.map +1 -1
  49. package/dist/esm/test.repository.d.ts +2 -1
  50. package/dist/esm/test.repository.d.ts.map +1 -1
  51. package/dist/esm/types/DFWConfig.d.ts +6 -4
  52. package/dist/esm/types/DFWConfig.d.ts.map +1 -1
  53. package/package.json +1 -1
  54. package/prisma/SESSION-STORE.md +41 -0
  55. package/prisma/schema/dfw.prisma +1 -0
@@ -2,10 +2,10 @@ import chalk from "chalk";
2
2
  import passport from "passport";
3
3
  import session from "express-session";
4
4
  import fileUpload from "express-fileupload";
5
- import { v7 as uuid7 } from 'uuid';
5
+ import { v7 as uuid7 } from "uuid";
6
6
  import bodyParser from "body-parser";
7
7
  import { DFWPassportStrategy } from "#lib/DFWPassportStrategy";
8
- import { DFWSessionStore } from "#lib/DFWSessionStore";
8
+ import { DFWSessionStore, sessionCookieOptions } from "#lib/DFWSessionStore";
9
9
  import { DFWUtils } from "#lib/DFWUtils";
10
10
  export class APIManager {
11
11
  constructor(DFW) {
@@ -15,34 +15,42 @@ export class APIManager {
15
15
  const config = this.DFW.config;
16
16
  const APIRouter = this.DFW.routerAPILayer;
17
17
  //// PASSPORT AND SESSION ////
18
+ if (process.env.NODE_ENV === "production" &&
19
+ !config.session?.secret) {
20
+ DFWUtils.log("[DFW] Warning: using the default session secret in production");
21
+ }
18
22
  APIRouter.use(session({
19
23
  rolling: config.session?.rolling ?? false,
20
- name: 'stk',
21
- secret: config.session?.secret ?? 'default',
24
+ name: "stk",
25
+ secret: config.session?.secret ?? "default",
22
26
  genid: () => uuid7(),
23
27
  resave: false,
24
28
  saveUninitialized: false,
25
29
  store: new DFWSessionStore(this.DFW),
26
- cookie: {
27
- secure: false,
28
- maxAge: 1000 * 60 * 60 * 24 * 180, //6 Months
29
- ...config.session?.cookieOptions
30
- }
30
+ cookie: sessionCookieOptions(config)
31
31
  }));
32
32
  APIRouter.use(passport.initialize());
33
33
  APIRouter.use(passport.session());
34
34
  if (config.session?.authenticators?.dfw !== false) {
35
- passport.use('dfw', DFWPassportStrategy(this.DFW));
35
+ passport.use("dfw", DFWPassportStrategy(this.DFW));
36
36
  }
37
- passport.serializeUser(async ({ id }, done) => {
37
+ passport.serializeUser(({ id }, done) => {
38
38
  done(null, id);
39
39
  });
40
- passport.deserializeUser(async (idUser, done) => {
40
+ passport.deserializeUser((idUser, done) => {
41
41
  done(null, { id: idUser });
42
42
  });
43
43
  //// DFW API Schema ////
44
44
  APIRouter.use(((req, res, next) => {
45
45
  const callbackStack = [];
46
+ let responseFinished = false;
47
+ const runCallback = (callback) => {
48
+ void Promise.resolve()
49
+ .then(callback)
50
+ .catch((error) => {
51
+ console.error("[DFW] Callback error:", error);
52
+ });
53
+ };
46
54
  const dfw = {
47
55
  db: this.DFW.db,
48
56
  getSession: () => ({
@@ -50,80 +58,123 @@ export class APIManager {
50
58
  user: req.user?.id,
51
59
  id: req.sessionID
52
60
  }),
53
- addCallback: (cb) => {
54
- callbackStack.push(cb);
61
+ addCallback: (callback) => {
62
+ // Run immediately if the response already finished.
63
+ if (responseFinished) {
64
+ runCallback(callback);
65
+ return;
66
+ }
67
+ callbackStack.push(callback);
55
68
  }
56
69
  };
57
70
  req.dfw = dfw;
71
+ // All post-response callbacks are handled in one place.
58
72
  res.once("finish", () => {
59
- callbackStack.forEach((cb) => {
60
- void Promise.resolve()
61
- .then(cb)
62
- .catch((error) => {
63
- console.error("[DFW] Callback error:", error);
64
- });
65
- });
73
+ responseFinished = true;
74
+ for (const callback of callbackStack.splice(0)) {
75
+ runCallback(callback);
76
+ }
66
77
  });
67
78
  next();
68
79
  }));
69
80
  APIRouter.use(this.DFW.routerAPIContainer);
70
- APIRouter.use((err, _1, res, _2) => {
71
- if (process.env.NODE_ENV == "development")
81
+ //// ERROR HANDLER ////
82
+ APIRouter.use((err, _req, res, next) => {
83
+ // Let Express handle errors after the response has started.
84
+ if (res.headersSent) {
85
+ return next(err);
86
+ }
87
+ if (process.env.NODE_ENV === "development") {
72
88
  DFWUtils.log(err, true);
73
- const errorStatus = res.statusCode === 200 ? 500 : res.statusCode;
74
- if (typeof err === "object" && err.message) {
75
- res.status(errorStatus).json({ error: err.message, stack: process.env.NODE_ENV == "development" ? err.stack : null }).end();
76
89
  }
77
- else {
78
- res.status(errorStatus).json({ error: err }).end();
90
+ const explicitStatus = typeof err?.status === "number"
91
+ ? err.status
92
+ : typeof err?.statusCode === "number"
93
+ ? err.statusCode
94
+ : undefined;
95
+ const currentStatus = res.statusCode >= 400 &&
96
+ res.statusCode <= 599
97
+ ? res.statusCode
98
+ : undefined;
99
+ const errorStatus = explicitStatus >= 400 &&
100
+ explicitStatus <= 599
101
+ ? explicitStatus
102
+ : currentStatus ?? 500;
103
+ if (typeof err === "object" &&
104
+ err !== null &&
105
+ err.message) {
106
+ res.status(errorStatus).json({
107
+ error: err.message,
108
+ stack: process.env.NODE_ENV === "development"
109
+ ? err.stack
110
+ : null
111
+ });
112
+ return;
79
113
  }
114
+ res.status(errorStatus).json({
115
+ error: err
116
+ });
80
117
  });
81
118
  }
82
119
  addListener(path, params) {
83
120
  const APIContainer = this.DFW.routerAPIContainer;
84
- const method = params.method ?? 'get';
121
+ const method = params.method ?? "get";
85
122
  const mainFunction = params.fn;
86
123
  if (!params.middleware && !mainFunction) {
87
124
  DFWUtils.log(`Unable to set listener for [${method}] ${path} listener and middleware are undefined`);
88
125
  return;
89
126
  }
90
- this.DFW.server[method](path, this.DFW.routerAPILayer); // Install api layer in this route
91
- // Body Parser
92
- if (['post', 'put', 'patch', 'delete'].includes(method) && params.disableBodyParser !== true)
127
+ // Install the API layer only for registered API routes.
128
+ this.DFW.server[method](path, this.DFW.routerAPILayer);
129
+ // Body parser
130
+ if (["post", "put", "patch", "delete"].includes(method) &&
131
+ params.disableBodyParser !== true) {
93
132
  APIContainer[method](path, bodyParser.json());
94
- // file upload middleware
95
- if (params.upload)
96
- APIContainer[method](path, fileUpload(typeof params.upload === 'boolean' ? {} : params.upload));
97
- // plugged middlewares and handlers
133
+ }
134
+ // File upload middleware
135
+ if (params.upload) {
136
+ APIContainer[method](path, fileUpload(typeof params.upload === "boolean"
137
+ ? {}
138
+ : params.upload));
139
+ }
140
+ // Plugged middlewares and handlers
98
141
  if (params.middleware) {
99
- const middlewares = Array.isArray(params.middleware) ? params.middleware : [params.middleware];
142
+ const middlewares = Array.isArray(params.middleware)
143
+ ? params.middleware
144
+ : [params.middleware];
100
145
  APIContainer[method](path, ...middlewares);
101
146
  }
102
147
  if (mainFunction) {
103
148
  APIContainer[method](path, async (req, res, next) => {
104
149
  try {
105
- // calling the listener
106
- const data = await mainFunction(req.dfw, req, res).catch(next);
150
+ const data = await mainFunction(req.dfw, req, res);
107
151
  if (params.callback) {
108
- res.on('finish', () => {
109
- params.callback?.(req, data).catch((e) => {
110
- console.error('Error in callback:', e);
111
- });
112
- });
152
+ req.dfw.addCallback(() => params.callback(req, data));
113
153
  }
114
- if (!res.finished && !params.disableAutoSend) {
115
- if (data)
116
- res.json(data).end();
117
- else
154
+ if (!params.disableAutoSend &&
155
+ !res.writableEnded) {
156
+ /*
157
+ * If the handler already started the response,
158
+ * only finish it instead of trying to replace it.
159
+ */
160
+ if (res.headersSent) {
161
+ res.end();
162
+ return;
163
+ }
164
+ if (data !== undefined) {
165
+ res.json(data);
166
+ }
167
+ else {
118
168
  res.end();
169
+ }
119
170
  }
120
171
  }
121
- catch (e) {
122
- next(e);
172
+ catch (error) {
173
+ next(error);
123
174
  }
124
175
  });
125
176
  }
126
- DFWUtils.log(`${chalk.yellow(method.toUpperCase().padEnd(7, ' '))} ${chalk.green(path)}`);
177
+ DFWUtils.log(`${chalk.yellow(method.toUpperCase().padEnd(7, " "))} ${chalk.green(path)}`);
127
178
  }
128
179
  }
129
180
  //# sourceMappingURL=APIManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"APIManager.js","sourceRoot":"","sources":["../../../src/lib/APIManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"APIManager.js","sourceRoot":"","sources":["../../../src/lib/APIManager.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,28 @@
1
+ import type { Request } from "express";
2
+ import session, { type CookieOptions, type SessionData } from "express-session";
3
+ import type { DFWConfig } from "#types/DFWConfig";
1
4
  import type { DFWCore } from "./DFWCore.js";
2
- import { Store } from "express-session";
3
- export declare class DFWSessionStore extends Store {
4
- private db;
5
- private cache;
5
+ export declare function sessionCookieOptions(config: DFWConfig): CookieOptions;
6
+ export declare class DFWSessionStore extends session.Store {
7
+ private readonly db;
8
+ private readonly cookieOptions;
9
+ private readonly rolling;
10
+ private readonly loadedSessions;
11
+ private readonly cache;
12
+ private readonly pendingReads;
6
13
  constructor(DFW: DFWCore<any>);
7
- get(sid: string, callback: (err: any, session?: any) => void): void;
8
- set(sid: string, sessionData: any, callback?: (err?: any) => void): void;
14
+ private expiration;
15
+ private legacySession;
16
+ private readSession;
17
+ private serialize;
18
+ private findSession;
19
+ private invalidate;
20
+ get(sid: string, callback: (err: any, session?: SessionData | null) => void): void;
21
+ createSession(req: Request, sessionData: SessionData): session.Session & SessionData;
22
+ set(sid: string, sessionData: SessionData, callback?: (err?: any) => void): void;
23
+ touch(sid: string, sessionData: SessionData, callback?: (err?: any) => void): void;
24
+ private touchSession;
9
25
  destroy(sid: string, callback?: (err?: any) => void): void;
26
+ private reportError;
10
27
  }
11
28
  //# sourceMappingURL=DFWSessionStore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DFWSessionStore.d.ts","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAGxC,qBAAa,eAAgB,SAAQ,KAAK;IAEtC,OAAO,CAAC,EAAE,CAAc;IAExB,OAAO,CAAC,KAAK,CAA8B;gBAE/B,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;IAM7B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IA+BnE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAmBxE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;CAc7D"}
1
+ {"version":3,"file":"DFWSessionStore.d.ts","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,OAAO,EAAE,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAe5C,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,aAAa,CAMrE;AAED,qBAAa,eAAgB,SAAQ,OAAO,CAAC,KAAK;IAC9C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA8B;IAC7D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsD;IAC5E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoD;gBAErE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;IAQ7B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,WAAW;IAmCnB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,WAAW;IA+BnB,OAAO,CAAC,UAAU;IAKlB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAYlF,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,WAAW;IASpF,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAiChF,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;YAYpE,YAAY;IAmC1B,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI;IAY1D,OAAO,CAAC,WAAW;CAItB"}
@@ -1,75 +1,219 @@
1
- import { Store } from "express-session";
2
- import { createLRU } from 'lru.min';
3
- export class DFWSessionStore extends Store {
1
+ import session, {} from "express-session";
2
+ import { createLRU } from "lru.min";
3
+ const SESSION_CACHE_IDLE_MS = 60 * 60 * 1000;
4
+ export function sessionCookieOptions(config) {
5
+ return {
6
+ secure: false,
7
+ maxAge: 1000 * 60 * 60 * 24 * 180,
8
+ ...config.session?.cookieOptions
9
+ };
10
+ }
11
+ export class DFWSessionStore extends session.Store {
4
12
  constructor(DFW) {
5
13
  super();
14
+ this.loadedSessions = new WeakSet();
15
+ this.pendingReads = new Map();
6
16
  this.db = DFW.db;
17
+ this.cookieOptions = sessionCookieOptions(DFW.config);
18
+ this.rolling = DFW.config.session?.rolling ?? false;
7
19
  this.cache = createLRU({ max: DFW.config.session?.cacheSize ?? 200 });
8
20
  }
9
- get(sid, callback) {
10
- if (this.cache.has(sid)) {
11
- if (process.env.NODE_ENV === 'development')
12
- console.log(`read session (cache) ${sid}`);
13
- callback(null, this.cache.get(sid));
14
- return;
21
+ expiration(sessionData) {
22
+ return sessionData.cookie.expires ?? null;
23
+ }
24
+ legacySession(idUser) {
25
+ const cookie = Object.assign(new session.Cookie(), this.cookieOptions);
26
+ return Object.assign({ cookie }, { passport: { user: idUser } });
27
+ }
28
+ readSession(record) {
29
+ if (record.data === null) {
30
+ return { data: this.legacySession(record.idUser), expiresAt: record.expiresAt };
15
31
  }
16
- if (process.env.NODE_ENV === 'development')
17
- console.log(`read session ${sid}`);
18
- this.db.dfw_session.findFirst({
19
- select: { idUser: true },
20
- where: {
21
- id: sid,
22
- OR: [
23
- { expiresAt: null },
24
- { expiresAt: { gt: new Date() } },
25
- ],
32
+ const stored = JSON.parse(record.data);
33
+ let data = stored;
34
+ let expiresAt = record.expiresAt;
35
+ if (typeof stored === "object" && stored !== null && "__dfwSessionStore" in stored) {
36
+ if (stored.__dfwSessionStore !== 1 || !("session" in stored) ||
37
+ !("expiresAt" in stored) ||
38
+ (typeof stored.expiresAt !== "string" && stored.expiresAt !== null)) {
39
+ throw new Error("Invalid stored session data");
40
+ }
41
+ data = stored.session;
42
+ expiresAt = stored.expiresAt === null ? null : new Date(stored.expiresAt);
43
+ if (expiresAt !== null && !Number.isFinite(expiresAt.getTime())) {
44
+ throw new Error("Invalid stored session data");
26
45
  }
27
- }).then((sessionObj) => {
28
- if (sessionObj) {
29
- const passportSession = { cookie: {}, passport: { user: sessionObj.idUser } };
30
- this.cache.set(sid, passportSession);
31
- callback(null, passportSession);
46
+ if (record.expiresAt !== null && (expiresAt === null ||
47
+ record.expiresAt.getTime() < Date.UTC(expiresAt.getUTCFullYear(), expiresAt.getUTCMonth(), expiresAt.getUTCDate()))) {
48
+ expiresAt = record.expiresAt;
49
+ }
50
+ }
51
+ if (typeof data !== "object" || data === null || !("cookie" in data) ||
52
+ typeof data.cookie !== "object" || data.cookie === null ||
53
+ !("originalMaxAge" in data.cookie) ||
54
+ (typeof data.cookie.originalMaxAge !== "number" && data.cookie.originalMaxAge !== null)) {
55
+ throw new Error("Invalid stored session data");
56
+ }
57
+ return { data: data, expiresAt };
58
+ }
59
+ serialize(sessionData, expiresAt) {
60
+ return JSON.stringify({
61
+ __dfwSessionStore: 1,
62
+ session: sessionData,
63
+ expiresAt: expiresAt?.toISOString() ?? null
64
+ });
65
+ }
66
+ findSession(sid) {
67
+ const cached = this.cache.get(sid);
68
+ if (cached) {
69
+ const now = Date.now();
70
+ if (now - cached.lastAccess <= SESSION_CACHE_IDLE_MS) {
71
+ cached.lastAccess = now;
72
+ return Promise.resolve(cached.record);
32
73
  }
33
- else {
34
- this.cache.set(sid, null);
35
- callback(null, null);
74
+ this.cache.delete(sid);
75
+ }
76
+ const existing = this.pendingReads.get(sid);
77
+ if (existing)
78
+ return existing;
79
+ const pending = this.db.dfw_session.findFirst({
80
+ select: { idUser: true, data: true, expiresAt: true },
81
+ where: { id: sid }
82
+ }).then((record) => {
83
+ if (this.pendingReads.get(sid) === pending) {
84
+ this.pendingReads.delete(sid);
85
+ if (record)
86
+ this.cache.set(sid, { record, lastAccess: Date.now() });
36
87
  }
37
- }).catch((e) => {
38
- callback(e);
88
+ return record;
89
+ }, (error) => {
90
+ if (this.pendingReads.get(sid) === pending)
91
+ this.pendingReads.delete(sid);
92
+ throw error;
39
93
  });
94
+ this.pendingReads.set(sid, pending);
95
+ return pending;
96
+ }
97
+ invalidate(sid) {
98
+ this.cache.delete(sid);
99
+ this.pendingReads.delete(sid);
100
+ }
101
+ get(sid, callback) {
102
+ this.findSession(sid).then((record) => {
103
+ if (!record)
104
+ return null;
105
+ const stored = this.readSession(record);
106
+ if (stored.expiresAt !== null && stored.expiresAt.getTime() <= Date.now()) {
107
+ if (this.cache.peek(sid)?.record === record)
108
+ this.invalidate(sid);
109
+ return null;
110
+ }
111
+ return stored.data;
112
+ }).then((data) => callback(null, data), (error) => callback(error));
113
+ }
114
+ createSession(req, sessionData) {
115
+ if (sessionData.cookie.secure === "auto") {
116
+ sessionData.cookie.secure = req.secure;
117
+ }
118
+ const result = super.createSession(req, sessionData);
119
+ this.loadedSessions.add(result);
120
+ return result;
40
121
  }
41
122
  set(sid, sessionData, callback) {
42
- if (process.env.NODE_ENV === 'development')
43
- console.log(`setting session ${sid} ${JSON.stringify(sessionData)}`);
44
- this.cache.set(sid, sessionData);
45
- this.db.dfw_session.upsert({
46
- create: {
47
- id: sid,
48
- idUser: sessionData.passport?.user,
49
- },
50
- update: {
51
- idUser: sessionData.passport?.user,
52
- },
53
- where: {
54
- id: sid
123
+ try {
124
+ const passport = sessionData.passport;
125
+ const expiresAt = this.expiration(sessionData);
126
+ const values = {
127
+ idUser: passport?.user ?? null,
128
+ data: this.serialize(sessionData, expiresAt),
129
+ expiresAt
130
+ };
131
+ const loaded = this.loadedSessions.has(sessionData);
132
+ this.loadedSessions.add(sessionData);
133
+ this.invalidate(sid);
134
+ const write = loaded
135
+ ? this.db.dfw_session.updateMany({ where: { id: sid }, data: values }).then((result) => {
136
+ if (result.count === 0)
137
+ throw new Error("Cannot save a destroyed session");
138
+ })
139
+ : this.db.dfw_session.upsert({
140
+ create: { id: sid, ...values },
141
+ update: values,
142
+ where: { id: sid }
143
+ });
144
+ write.then(() => {
145
+ this.invalidate(sid);
146
+ callback?.();
147
+ }, (error) => {
148
+ this.invalidate(sid);
149
+ this.reportError(error, callback);
150
+ });
151
+ }
152
+ catch (error) {
153
+ this.reportError(error, callback);
154
+ }
155
+ }
156
+ touch(sid, sessionData, callback) {
157
+ if (!this.rolling) {
158
+ callback?.();
159
+ return;
160
+ }
161
+ this.touchSession(sid, sessionData)
162
+ .then(() => callback?.(), (error) => {
163
+ this.invalidate(sid);
164
+ this.reportError(error, callback);
165
+ });
166
+ }
167
+ async touchSession(sid, sessionData) {
168
+ for (let attempt = 0; attempt < 5; attempt++) {
169
+ const record = await this.findSession(sid);
170
+ if (!record)
171
+ return;
172
+ if (record.data === null)
173
+ return;
174
+ const stored = this.readSession(record);
175
+ if (stored.expiresAt !== null && stored.expiresAt.getTime() <= Date.now()) {
176
+ if (this.cache.peek(sid)?.record === record)
177
+ this.invalidate(sid);
178
+ return;
179
+ }
180
+ const expiresAt = this.expiration(sessionData);
181
+ const data = this.serialize({ ...stored.data, cookie: sessionData.cookie }, expiresAt);
182
+ const result = await this.db.dfw_session.updateMany({
183
+ where: { id: sid, data: record.data, expiresAt: record.expiresAt },
184
+ data: { data, expiresAt }
185
+ });
186
+ if (result.count > 0) {
187
+ const cached = this.cache.peek(sid);
188
+ if (cached?.record === record) {
189
+ cached.record = {
190
+ ...record,
191
+ data,
192
+ expiresAt: expiresAt === null ? null : new Date(Date.UTC(expiresAt.getUTCFullYear(), expiresAt.getUTCMonth(), expiresAt.getUTCDate()))
193
+ };
194
+ }
195
+ return;
55
196
  }
56
- }).then(() => {
57
- callback && callback();
58
- }).catch(e => callback && callback(e));
197
+ this.invalidate(sid);
198
+ }
199
+ throw new Error("Could not update session expiration after concurrent changes");
59
200
  }
60
201
  destroy(sid, callback) {
61
- if (process.env.NODE_ENV === 'development')
62
- console.log(`deleting session ${sid}`);
63
- this.cache.delete(sid);
64
- this.db.dfw_session.deleteMany({
65
- where: {
66
- id: sid
67
- },
68
- }).then(() => {
69
- callback && callback();
70
- }).catch((e) => {
71
- callback && callback(e);
202
+ this.invalidate(sid);
203
+ this.db.dfw_session.deleteMany({ where: { id: sid } })
204
+ .then(() => {
205
+ this.invalidate(sid);
206
+ callback?.();
207
+ }, (error) => {
208
+ this.invalidate(sid);
209
+ this.reportError(error, callback);
72
210
  });
73
211
  }
212
+ reportError(error, callback) {
213
+ if (callback)
214
+ callback(error);
215
+ else
216
+ console.error("[DFW] Session store error:", error);
217
+ }
74
218
  }
75
219
  //# sourceMappingURL=DFWSessionStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DFWSessionStore.js","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DFWSessionStore.js","sourceRoot":"","sources":["../../../src/lib/DFWSessionStore.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DFWSessionModule.d.ts","sourceRoot":"","sources":["../../../src/modules/DFWSessionModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,YAAY,CAAC;gBAC7C,GAAG,EAAE,OAAO;IAIxB,uBAAuB,GAAU,yCAAyC,UAAU,CAAC,YAAY,CAAC,+EAY9F;IAED,UAAU,GAAU,KAAK,UAAU,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,mBASxD;IAED,WAAW,GAAU,KAAK,UAAU,mBASnC;CACP"}
1
+ {"version":3,"file":"DFWSessionModule.d.ts","sourceRoot":"","sources":["../../../src/modules/DFWSessionModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,YAAY,CAAC;gBAC7C,GAAG,EAAE,OAAO;IAIxB,uBAAuB,GAAU,yCAAyC,UAAU,CAAC,YAAY,CAAC,+EAY9F;IAED,UAAU,GAAU,KAAK,UAAU,EAAE,MAAM;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,mBASxD;IAED,WAAW,GAAU,KAAK,UAAU,mBAWnC;CACP"}