@plasius/api 1.0.1 → 1.0.3
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/CHANGELOG.md +31 -1
- package/README.md +9 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/cookies.d.ts +13 -0
- package/dist/utils/cookies.d.ts.map +1 -0
- package/dist/utils/cookies.js +32 -0
- package/dist/utils/cookies.js.map +1 -0
- package/dist/utils/session.d.ts +25 -0
- package/dist/utils/session.d.ts.map +1 -0
- package/dist/utils/session.js +62 -0
- package/dist/utils/session.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,34 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
18
18
|
- **Security**
|
|
19
19
|
- (placeholder)
|
|
20
20
|
|
|
21
|
+
## [1.0.3] - 2026-02-28
|
|
22
|
+
|
|
23
|
+
- **Added**
|
|
24
|
+
- (placeholder)
|
|
25
|
+
|
|
26
|
+
- **Changed**
|
|
27
|
+
- (placeholder)
|
|
28
|
+
|
|
29
|
+
- **Fixed**
|
|
30
|
+
- (placeholder)
|
|
31
|
+
|
|
32
|
+
- **Security**
|
|
33
|
+
- (placeholder)
|
|
34
|
+
|
|
35
|
+
## [1.0.2] - 2026-02-28
|
|
36
|
+
|
|
37
|
+
- **Added**
|
|
38
|
+
- Generic session helper utilities (`ensureSession`, `createSessionCookie`, `getSessionIdFromRequest`) compatible with middleware usage.
|
|
39
|
+
|
|
40
|
+
- **Changed**
|
|
41
|
+
- `withSession` middleware now delegates to shared `utils/session` helpers while preserving existing cookie defaults.
|
|
42
|
+
|
|
43
|
+
- **Fixed**
|
|
44
|
+
- (placeholder)
|
|
45
|
+
|
|
46
|
+
- **Security**
|
|
47
|
+
- (placeholder)
|
|
48
|
+
|
|
21
49
|
## [1.0.1] - 2026-02-28
|
|
22
50
|
|
|
23
51
|
### Added
|
|
@@ -61,6 +89,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
|
61
89
|
|
|
62
90
|
- Initial public release scaffold for `@plasius/api`.
|
|
63
91
|
|
|
64
|
-
[Unreleased]: https://github.com/Plasius-LTD/api/compare/v1.0.
|
|
92
|
+
[Unreleased]: https://github.com/Plasius-LTD/api/compare/v1.0.3...HEAD
|
|
65
93
|
[1.0.0]: https://github.com/Plasius-LTD/api/releases/tag/v1.0.0
|
|
66
94
|
[1.0.1]: https://github.com/Plasius-LTD/api/releases/tag/v1.0.1
|
|
95
|
+
[1.0.2]: https://github.com/Plasius-LTD/api/releases/tag/v1.0.2
|
|
96
|
+
[1.0.3]: https://github.com/Plasius-LTD/api/releases/tag/v1.0.3
|
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Public generic API helper package.
|
|
|
15
15
|
|
|
16
16
|
- Public helper exports compiled to `dist/**`
|
|
17
17
|
- Reusable transport-security helper utilities
|
|
18
|
+
- Reusable session helper utilities compatible with `withSession` middleware
|
|
18
19
|
- Governance/legal materials (`docs/**`, `legal/**`)
|
|
19
20
|
|
|
20
21
|
## Package Boundary (Public by Design)
|
|
@@ -33,6 +34,14 @@ Public generic API helper package.
|
|
|
33
34
|
- `shouldEnforceHttps()`
|
|
34
35
|
- These helpers support strict header policy and HTTPS enforcement behavior for callers.
|
|
35
36
|
|
|
37
|
+
## Session Helper Baseline
|
|
38
|
+
|
|
39
|
+
- Exports helper functions:
|
|
40
|
+
- `ensureSession(request, options?)`
|
|
41
|
+
- `getSessionIdFromRequest(request, cookieName?)`
|
|
42
|
+
- `createSessionCookie(sessionId, options?)`
|
|
43
|
+
- `withSession` middleware is implemented using these helpers and keeps secure defaults (`HttpOnly`, `Secure`, `SameSite=None`, `Path=/`).
|
|
44
|
+
|
|
36
45
|
## Install
|
|
37
46
|
|
|
38
47
|
```bash
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { applyBaselineSecurityHeaders, isHttpsRequest, isInsecureLocalRequest, shouldEnforceHttps, } from "./middleware/transportSecurity.js";
|
|
2
2
|
export { decodeOAuthReturnToState, parseEncodedState, verifyState, } from "./utils/state.js";
|
|
3
3
|
export { generatePkceCodeChallenge, generatePkceCodeVerifier, generatePkceCookieId, getPkceCookieName, isValidPkceCodeVerifier, isValidPkceCookieId, } from "./utils/oauth-pkce.js";
|
|
4
|
+
export { DEFAULT_SESSION_COOKIE_NAME, createSessionCookie, ensureSession, getSessionIdFromRequest, } from "./utils/session.js";
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,cAAc,EACd,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,EACb,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidPkceCookieId = exports.isValidPkceCodeVerifier = exports.getPkceCookieName = exports.generatePkceCookieId = exports.generatePkceCodeVerifier = exports.generatePkceCodeChallenge = exports.verifyState = exports.parseEncodedState = exports.decodeOAuthReturnToState = exports.shouldEnforceHttps = exports.isInsecureLocalRequest = exports.isHttpsRequest = exports.applyBaselineSecurityHeaders = void 0;
|
|
3
|
+
exports.getSessionIdFromRequest = exports.ensureSession = exports.createSessionCookie = exports.DEFAULT_SESSION_COOKIE_NAME = exports.isValidPkceCookieId = exports.isValidPkceCodeVerifier = exports.getPkceCookieName = exports.generatePkceCookieId = exports.generatePkceCodeVerifier = exports.generatePkceCodeChallenge = exports.verifyState = exports.parseEncodedState = exports.decodeOAuthReturnToState = exports.shouldEnforceHttps = exports.isInsecureLocalRequest = exports.isHttpsRequest = exports.applyBaselineSecurityHeaders = void 0;
|
|
4
4
|
var transportSecurity_js_1 = require("./middleware/transportSecurity.js");
|
|
5
5
|
Object.defineProperty(exports, "applyBaselineSecurityHeaders", { enumerable: true, get: function () { return transportSecurity_js_1.applyBaselineSecurityHeaders; } });
|
|
6
6
|
Object.defineProperty(exports, "isHttpsRequest", { enumerable: true, get: function () { return transportSecurity_js_1.isHttpsRequest; } });
|
|
@@ -17,4 +17,9 @@ Object.defineProperty(exports, "generatePkceCookieId", { enumerable: true, get:
|
|
|
17
17
|
Object.defineProperty(exports, "getPkceCookieName", { enumerable: true, get: function () { return oauth_pkce_js_1.getPkceCookieName; } });
|
|
18
18
|
Object.defineProperty(exports, "isValidPkceCodeVerifier", { enumerable: true, get: function () { return oauth_pkce_js_1.isValidPkceCodeVerifier; } });
|
|
19
19
|
Object.defineProperty(exports, "isValidPkceCookieId", { enumerable: true, get: function () { return oauth_pkce_js_1.isValidPkceCookieId; } });
|
|
20
|
+
var session_js_1 = require("./utils/session.js");
|
|
21
|
+
Object.defineProperty(exports, "DEFAULT_SESSION_COOKIE_NAME", { enumerable: true, get: function () { return session_js_1.DEFAULT_SESSION_COOKIE_NAME; } });
|
|
22
|
+
Object.defineProperty(exports, "createSessionCookie", { enumerable: true, get: function () { return session_js_1.createSessionCookie; } });
|
|
23
|
+
Object.defineProperty(exports, "ensureSession", { enumerable: true, get: function () { return session_js_1.ensureSession; } });
|
|
24
|
+
Object.defineProperty(exports, "getSessionIdFromRequest", { enumerable: true, get: function () { return session_js_1.getSessionIdFromRequest; } });
|
|
20
25
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0EAK2C;AAJzC,oIAAA,4BAA4B,OAAA;AAC5B,sHAAA,cAAc,OAAA;AACd,8HAAA,sBAAsB,OAAA;AACtB,0HAAA,kBAAkB,OAAA;AAGpB,6CAI0B;AAHxB,oHAAA,wBAAwB,OAAA;AACxB,6GAAA,iBAAiB,OAAA;AACjB,uGAAA,WAAW,OAAA;AAGb,uDAO+B;AAN7B,0HAAA,yBAAyB,OAAA;AACzB,yHAAA,wBAAwB,OAAA;AACxB,qHAAA,oBAAoB,OAAA;AACpB,kHAAA,iBAAiB,OAAA;AACjB,wHAAA,uBAAuB,OAAA;AACvB,oHAAA,mBAAmB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,0EAK2C;AAJzC,oIAAA,4BAA4B,OAAA;AAC5B,sHAAA,cAAc,OAAA;AACd,8HAAA,sBAAsB,OAAA;AACtB,0HAAA,kBAAkB,OAAA;AAGpB,6CAI0B;AAHxB,oHAAA,wBAAwB,OAAA;AACxB,6GAAA,iBAAiB,OAAA;AACjB,uGAAA,WAAW,OAAA;AAGb,uDAO+B;AAN7B,0HAAA,yBAAyB,OAAA;AACzB,yHAAA,wBAAwB,OAAA;AACxB,qHAAA,oBAAoB,OAAA;AACpB,kHAAA,iBAAiB,OAAA;AACjB,wHAAA,uBAAuB,OAAA;AACvB,oHAAA,mBAAmB,OAAA;AAGrB,iDAK4B;AAJ1B,yHAAA,2BAA2B,OAAA;AAC3B,iHAAA,mBAAmB,OAAA;AACnB,2GAAA,aAAa,OAAA;AACb,qHAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { HttpRequest } from "@azure/functions";
|
|
2
|
+
interface CookieOptions {
|
|
3
|
+
httpOnly?: boolean;
|
|
4
|
+
secure?: boolean;
|
|
5
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
6
|
+
maxAge?: number;
|
|
7
|
+
path?: string;
|
|
8
|
+
domain?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function setCookie(name: string, value: string, options?: CookieOptions): string;
|
|
11
|
+
export declare function getCookie(request: HttpRequest, name: string): string | undefined;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=cookies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/utils/cookies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,aAAkB,GAC1B,MAAM,CAWR;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,SAAS,CAUpB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setCookie = setCookie;
|
|
4
|
+
exports.getCookie = getCookie;
|
|
5
|
+
function setCookie(name, value, options = {}) {
|
|
6
|
+
let cookie = `${name}=${encodeURIComponent(value)}`;
|
|
7
|
+
if (options.maxAge !== undefined)
|
|
8
|
+
cookie += `; Max-Age=${options.maxAge}`;
|
|
9
|
+
if (options.httpOnly)
|
|
10
|
+
cookie += "; HttpOnly";
|
|
11
|
+
if (options.secure)
|
|
12
|
+
cookie += "; Secure";
|
|
13
|
+
if (options.sameSite)
|
|
14
|
+
cookie += `; SameSite=${options.sameSite}`;
|
|
15
|
+
if (options.domain)
|
|
16
|
+
cookie += `; Domain=${options.domain}`;
|
|
17
|
+
cookie += `; Path=${options.path ?? "/"}`;
|
|
18
|
+
return cookie;
|
|
19
|
+
}
|
|
20
|
+
function getCookie(request, name) {
|
|
21
|
+
const cookies = request.headers.get("cookie") || request.headers.get("Cookie");
|
|
22
|
+
if (!cookies)
|
|
23
|
+
return undefined;
|
|
24
|
+
const cookiePairs = cookies.split(";").map((c) => c.trim());
|
|
25
|
+
for (const pair of cookiePairs) {
|
|
26
|
+
const [key, ...vals] = pair.split("=");
|
|
27
|
+
if (key === name)
|
|
28
|
+
return decodeURIComponent(vals.join("="));
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=cookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/utils/cookies.ts"],"names":[],"mappings":";;AAWA,8BAeC;AAED,8BAaC;AA9BD,SAAgB,SAAS,CACvB,IAAY,EACZ,KAAa,EACb,UAAyB,EAAE;IAE3B,IAAI,MAAM,GAAG,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;IAEpD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,aAAa,OAAO,CAAC,MAAM,EAAE,CAAC;IAC1E,IAAI,OAAO,CAAC,QAAQ;QAAE,MAAM,IAAI,YAAY,CAAC;IAC7C,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,UAAU,CAAC;IACzC,IAAI,OAAO,CAAC,QAAQ;QAAE,MAAM,IAAI,cAAc,OAAO,CAAC,QAAQ,EAAE,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM;QAAE,MAAM,IAAI,YAAY,OAAO,CAAC,MAAM,EAAE,CAAC;IAC3D,MAAM,IAAI,UAAU,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CACvB,OAAoB,EACpB,IAAY;IAEZ,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Cookie, HttpRequest } from "@azure/functions";
|
|
2
|
+
export declare const DEFAULT_SESSION_COOKIE_NAME = "sessionId";
|
|
3
|
+
export interface SessionCookieOptions {
|
|
4
|
+
domain?: string;
|
|
5
|
+
httpOnly?: boolean;
|
|
6
|
+
maxAge?: number;
|
|
7
|
+
path?: string;
|
|
8
|
+
sameSite?: "Strict" | "Lax" | "None";
|
|
9
|
+
secure?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface SessionOptions {
|
|
12
|
+
cookieName?: string;
|
|
13
|
+
cookieOptions?: SessionCookieOptions;
|
|
14
|
+
generateSessionId?: () => string;
|
|
15
|
+
}
|
|
16
|
+
export interface SessionResult {
|
|
17
|
+
cookie?: Cookie;
|
|
18
|
+
cookieName: string;
|
|
19
|
+
isNew: boolean;
|
|
20
|
+
sessionId: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function getSessionIdFromRequest(request: HttpRequest, cookieName?: string): string | undefined;
|
|
23
|
+
export declare function createSessionCookie(sessionId: string, options?: SessionOptions): Cookie;
|
|
24
|
+
export declare function ensureSession(request: HttpRequest, options?: SessionOptions): SessionResult;
|
|
25
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI5D,eAAO,MAAM,2BAA2B,cAAc,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,UAAU,GAAE,MAAoC,GAC/C,MAAM,GAAG,SAAS,CAEpB;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,cAAmB,GAC3B,MAAM,CAyBR;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,cAAmB,GAC3B,aAAa,CAuBf"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DEFAULT_SESSION_COOKIE_NAME = void 0;
|
|
4
|
+
exports.getSessionIdFromRequest = getSessionIdFromRequest;
|
|
5
|
+
exports.createSessionCookie = createSessionCookie;
|
|
6
|
+
exports.ensureSession = ensureSession;
|
|
7
|
+
const crypto_1 = require("crypto");
|
|
8
|
+
const cookies_js_1 = require("./cookies.js");
|
|
9
|
+
exports.DEFAULT_SESSION_COOKIE_NAME = "sessionId";
|
|
10
|
+
const DEFAULT_SESSION_COOKIE_OPTIONS = {
|
|
11
|
+
httpOnly: true,
|
|
12
|
+
path: "/",
|
|
13
|
+
sameSite: "None",
|
|
14
|
+
secure: true,
|
|
15
|
+
};
|
|
16
|
+
function getSessionIdFromRequest(request, cookieName = exports.DEFAULT_SESSION_COOKIE_NAME) {
|
|
17
|
+
return (0, cookies_js_1.getCookie)(request, cookieName);
|
|
18
|
+
}
|
|
19
|
+
function createSessionCookie(sessionId, options = {}) {
|
|
20
|
+
const cookieName = options.cookieName ?? exports.DEFAULT_SESSION_COOKIE_NAME;
|
|
21
|
+
const cookieOptions = {
|
|
22
|
+
...DEFAULT_SESSION_COOKIE_OPTIONS,
|
|
23
|
+
...(options.cookieOptions ?? {}),
|
|
24
|
+
};
|
|
25
|
+
const cookie = {
|
|
26
|
+
name: cookieName,
|
|
27
|
+
value: sessionId,
|
|
28
|
+
path: cookieOptions.path,
|
|
29
|
+
httpOnly: cookieOptions.httpOnly,
|
|
30
|
+
sameSite: cookieOptions.sameSite,
|
|
31
|
+
secure: cookieOptions.secure,
|
|
32
|
+
};
|
|
33
|
+
if (cookieOptions.domain) {
|
|
34
|
+
cookie.domain = cookieOptions.domain;
|
|
35
|
+
}
|
|
36
|
+
if (typeof cookieOptions.maxAge === "number") {
|
|
37
|
+
cookie.maxAge = cookieOptions.maxAge;
|
|
38
|
+
}
|
|
39
|
+
return cookie;
|
|
40
|
+
}
|
|
41
|
+
function ensureSession(request, options = {}) {
|
|
42
|
+
const cookieName = options.cookieName ?? exports.DEFAULT_SESSION_COOKIE_NAME;
|
|
43
|
+
const existingSessionId = getSessionIdFromRequest(request, cookieName);
|
|
44
|
+
if (existingSessionId) {
|
|
45
|
+
return {
|
|
46
|
+
cookieName,
|
|
47
|
+
isNew: false,
|
|
48
|
+
sessionId: existingSessionId,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const sessionId = (options.generateSessionId ?? crypto_1.randomUUID)();
|
|
52
|
+
if (!sessionId) {
|
|
53
|
+
throw new Error("Session id generator returned an empty value");
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
cookie: createSessionCookie(sessionId, options),
|
|
57
|
+
cookieName,
|
|
58
|
+
isNew: true,
|
|
59
|
+
sessionId,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/utils/session.ts"],"names":[],"mappings":";;;AAqCA,0DAKC;AAED,kDA4BC;AAED,sCA0BC;AAnGD,mCAAoC;AACpC,6CAAyC;AAE5B,QAAA,2BAA2B,GAAG,WAAW,CAAC;AAwBvD,MAAM,8BAA8B,GAEhC;IACF,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,GAAG;IACT,QAAQ,EAAE,MAAM;IAChB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,SAAgB,uBAAuB,CACrC,OAAoB,EACpB,aAAqB,mCAA2B;IAEhD,OAAO,IAAA,sBAAS,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,mBAAmB,CACjC,SAAiB,EACjB,UAA0B,EAAE;IAE5B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mCAA2B,CAAC;IACrE,MAAM,aAAa,GAAG;QACpB,GAAG,8BAA8B;QACjC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC;KACjC,CAAC;IAEF,MAAM,MAAM,GAAW;QACrB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,SAAS;QAChB,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,MAAM,EAAE,aAAa,CAAC,MAAM;KAC7B,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,IAAI,OAAO,aAAa,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC7C,MAAM,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa,CAC3B,OAAoB,EACpB,UAA0B,EAAE;IAE5B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,mCAA2B,CAAC;IACrE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAEvE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;YACL,UAAU;YACV,KAAK,EAAE,KAAK;YACZ,SAAS,EAAE,iBAAiB;SAC7B,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,mBAAU,CAAC,EAAE,CAAC;IAC9D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,MAAM,EAAE,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC;QAC/C,UAAU;QACV,KAAK,EAAE,IAAI;QACX,SAAS;KACV,CAAC;AACJ,CAAC"}
|