hono-sessions 0.3.5 → 0.3.8
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/esm/deps.d.ts +2 -1
- package/esm/deps.js +1 -0
- package/esm/src/Crypto.d.ts +14 -0
- package/esm/src/Crypto.js +14 -0
- package/esm/src/Middleware.d.ts +2 -1
- package/esm/src/Middleware.js +4 -3
- package/esm/src/Session.d.ts +6 -0
- package/esm/src/Session.js +3 -0
- package/esm/src/store/CookieStore.d.ts +3 -0
- package/esm/src/store/CookieStore.js +3 -0
- package/esm/src/store/MemoryStore.d.ts +3 -0
- package/esm/src/store/MemoryStore.js +3 -0
- package/esm/src/store/Store.d.ts +3 -0
- package/package.json +1 -1
- package/script/deps.d.ts +2 -1
- package/script/deps.js +3 -1
- package/script/src/Crypto.d.ts +14 -0
- package/script/src/Crypto.js +14 -0
- package/script/src/Middleware.d.ts +2 -1
- package/script/src/Middleware.js +3 -2
- package/script/src/Session.d.ts +6 -0
- package/script/src/Session.js +3 -0
- package/script/src/store/CookieStore.d.ts +3 -0
- package/script/src/store/CookieStore.js +3 -0
- package/script/src/store/MemoryStore.d.ts +3 -0
- package/script/src/store/MemoryStore.js +3 -0
- package/script/src/store/Store.d.ts +3 -0
package/esm/deps.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { nanoid } from 'nanoid/async';
|
|
2
|
-
export type {
|
|
2
|
+
export type { Context, MiddlewareHandler } from 'hono';
|
|
3
|
+
export { createMiddleware } from 'hono/factory';
|
|
3
4
|
export { getCookie, setCookie } from 'hono/cookie';
|
|
4
5
|
export type { CookieOptions } from 'hono/utils/cookie';
|
|
5
6
|
export * as Iron from 'iron-webcrypto';
|
package/esm/deps.js
CHANGED
package/esm/src/Crypto.d.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypt a string or object value
|
|
3
|
+
*
|
|
4
|
+
* @param password Random string at least 32 characters long
|
|
5
|
+
* @param payload String or object to encrypt
|
|
6
|
+
* @returns A promise of the encrypted string
|
|
7
|
+
*/
|
|
1
8
|
export declare function encrypt(password: string, payload: object | string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Decrypt an encrypted payload
|
|
11
|
+
*
|
|
12
|
+
* @param password Random string at least 32 characters long
|
|
13
|
+
* @param encrypted Encrypted string
|
|
14
|
+
* @returns Promise of the unencrypted value (string or object in most cases)
|
|
15
|
+
*/
|
|
2
16
|
export declare function decrypt(password: string, encrypted: string): Promise<unknown>;
|
package/esm/src/Crypto.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
import { Iron } from '../deps.js';
|
|
2
|
+
/**
|
|
3
|
+
* Encrypt a string or object value
|
|
4
|
+
*
|
|
5
|
+
* @param password Random string at least 32 characters long
|
|
6
|
+
* @param payload String or object to encrypt
|
|
7
|
+
* @returns A promise of the encrypted string
|
|
8
|
+
*/
|
|
2
9
|
export async function encrypt(password, payload) {
|
|
3
10
|
return await Iron.seal(globalThis.crypto, payload, password, Iron.defaults);
|
|
4
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Decrypt an encrypted payload
|
|
14
|
+
*
|
|
15
|
+
* @param password Random string at least 32 characters long
|
|
16
|
+
* @param encrypted Encrypted string
|
|
17
|
+
* @returns Promise of the unencrypted value (string or object in most cases)
|
|
18
|
+
*/
|
|
5
19
|
export async function decrypt(password, encrypted) {
|
|
6
20
|
return await Iron.unseal(globalThis.crypto, encrypted, { default: password }, Iron.defaults);
|
|
7
21
|
}
|
package/esm/src/Middleware.d.ts
CHANGED
|
@@ -9,5 +9,6 @@ interface SessionOptions {
|
|
|
9
9
|
cookieOptions?: CookieOptions;
|
|
10
10
|
sessionCookieName?: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
/** Function that returns a Hono-compatible session middleware */
|
|
13
|
+
export declare function sessionMiddleware(options: SessionOptions): MiddlewareHandler<any, any, {}>;
|
|
13
14
|
export {};
|
package/esm/src/Middleware.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { nanoid } from '../deps.js';
|
|
2
|
-
import { getCookie, setCookie } from '../deps.js';
|
|
2
|
+
import { getCookie, setCookie, createMiddleware } from '../deps.js';
|
|
3
3
|
import CookieStore from './store/CookieStore.js';
|
|
4
4
|
import { Session, encrypt, decrypt } from '../mod.js';
|
|
5
|
+
/** Function that returns a Hono-compatible session middleware */
|
|
5
6
|
export function sessionMiddleware(options) {
|
|
6
7
|
const store = options.store;
|
|
7
8
|
const encryptionKey = options.encryptionKey;
|
|
@@ -20,7 +21,7 @@ export function sessionMiddleware(options) {
|
|
|
20
21
|
store.cookieOptions = cookieOptions;
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
const middleware = async (c, next) => {
|
|
24
|
+
const middleware = createMiddleware(async (c, next) => {
|
|
24
25
|
const session = new Session;
|
|
25
26
|
let sid = '';
|
|
26
27
|
let session_data;
|
|
@@ -112,6 +113,6 @@ export function sessionMiddleware(options) {
|
|
|
112
113
|
? await store.persistSessionData(c, session.getCache())
|
|
113
114
|
: await store.persistSessionData(sid, session.getCache());
|
|
114
115
|
}
|
|
115
|
-
};
|
|
116
|
+
});
|
|
116
117
|
return middleware;
|
|
117
118
|
}
|
package/esm/src/Session.d.ts
CHANGED
|
@@ -2,12 +2,18 @@ interface SessionDataEntry {
|
|
|
2
2
|
value: unknown;
|
|
3
3
|
flash: boolean;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Interface for specifying the necessary data for a session entry
|
|
7
|
+
*/
|
|
5
8
|
export interface SessionData {
|
|
6
9
|
_data: Record<string, SessionDataEntry>;
|
|
7
10
|
_expire: string | null;
|
|
8
11
|
_delete: boolean;
|
|
9
12
|
_accessed: string | null;
|
|
10
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Session class with methods for interacting with the session
|
|
16
|
+
*/
|
|
11
17
|
export declare class Session {
|
|
12
18
|
private cache;
|
|
13
19
|
constructor();
|
package/esm/src/Session.js
CHANGED
package/esm/src/store/Store.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { SessionData } from "../../mod.js";
|
|
2
|
+
/**
|
|
3
|
+
* Interface for required methods in session storage drivers
|
|
4
|
+
*/
|
|
2
5
|
export default interface Store {
|
|
3
6
|
getSessionById(sessionId?: string): SessionData | null | undefined | Promise<SessionData | null | undefined>;
|
|
4
7
|
createSession(sessionId: string, initialData: SessionData): Promise<void> | void;
|
package/package.json
CHANGED
package/script/deps.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { nanoid } from 'nanoid/async';
|
|
2
|
-
export type {
|
|
2
|
+
export type { Context, MiddlewareHandler } from 'hono';
|
|
3
|
+
export { createMiddleware } from 'hono/factory';
|
|
3
4
|
export { getCookie, setCookie } from 'hono/cookie';
|
|
4
5
|
export type { CookieOptions } from 'hono/utils/cookie';
|
|
5
6
|
export * as Iron from 'iron-webcrypto';
|
package/script/deps.js
CHANGED
|
@@ -23,9 +23,11 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Iron = exports.setCookie = exports.getCookie = exports.nanoid = void 0;
|
|
26
|
+
exports.Iron = exports.setCookie = exports.getCookie = exports.createMiddleware = exports.nanoid = void 0;
|
|
27
27
|
var async_1 = require("nanoid/async");
|
|
28
28
|
Object.defineProperty(exports, "nanoid", { enumerable: true, get: function () { return async_1.nanoid; } });
|
|
29
|
+
var factory_1 = require("hono/factory");
|
|
30
|
+
Object.defineProperty(exports, "createMiddleware", { enumerable: true, get: function () { return factory_1.createMiddleware; } });
|
|
29
31
|
var cookie_1 = require("hono/cookie");
|
|
30
32
|
Object.defineProperty(exports, "getCookie", { enumerable: true, get: function () { return cookie_1.getCookie; } });
|
|
31
33
|
Object.defineProperty(exports, "setCookie", { enumerable: true, get: function () { return cookie_1.setCookie; } });
|
package/script/src/Crypto.d.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypt a string or object value
|
|
3
|
+
*
|
|
4
|
+
* @param password Random string at least 32 characters long
|
|
5
|
+
* @param payload String or object to encrypt
|
|
6
|
+
* @returns A promise of the encrypted string
|
|
7
|
+
*/
|
|
1
8
|
export declare function encrypt(password: string, payload: object | string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Decrypt an encrypted payload
|
|
11
|
+
*
|
|
12
|
+
* @param password Random string at least 32 characters long
|
|
13
|
+
* @param encrypted Encrypted string
|
|
14
|
+
* @returns Promise of the unencrypted value (string or object in most cases)
|
|
15
|
+
*/
|
|
2
16
|
export declare function decrypt(password: string, encrypted: string): Promise<unknown>;
|
package/script/src/Crypto.js
CHANGED
|
@@ -2,10 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.decrypt = exports.encrypt = void 0;
|
|
4
4
|
const deps_js_1 = require("../deps.js");
|
|
5
|
+
/**
|
|
6
|
+
* Encrypt a string or object value
|
|
7
|
+
*
|
|
8
|
+
* @param password Random string at least 32 characters long
|
|
9
|
+
* @param payload String or object to encrypt
|
|
10
|
+
* @returns A promise of the encrypted string
|
|
11
|
+
*/
|
|
5
12
|
async function encrypt(password, payload) {
|
|
6
13
|
return await deps_js_1.Iron.seal(globalThis.crypto, payload, password, deps_js_1.Iron.defaults);
|
|
7
14
|
}
|
|
8
15
|
exports.encrypt = encrypt;
|
|
16
|
+
/**
|
|
17
|
+
* Decrypt an encrypted payload
|
|
18
|
+
*
|
|
19
|
+
* @param password Random string at least 32 characters long
|
|
20
|
+
* @param encrypted Encrypted string
|
|
21
|
+
* @returns Promise of the unencrypted value (string or object in most cases)
|
|
22
|
+
*/
|
|
9
23
|
async function decrypt(password, encrypted) {
|
|
10
24
|
return await deps_js_1.Iron.unseal(globalThis.crypto, encrypted, { default: password }, deps_js_1.Iron.defaults);
|
|
11
25
|
}
|
|
@@ -9,5 +9,6 @@ interface SessionOptions {
|
|
|
9
9
|
cookieOptions?: CookieOptions;
|
|
10
10
|
sessionCookieName?: string;
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
/** Function that returns a Hono-compatible session middleware */
|
|
13
|
+
export declare function sessionMiddleware(options: SessionOptions): MiddlewareHandler<any, any, {}>;
|
|
13
14
|
export {};
|
package/script/src/Middleware.js
CHANGED
|
@@ -8,6 +8,7 @@ const deps_js_1 = require("../deps.js");
|
|
|
8
8
|
const deps_js_2 = require("../deps.js");
|
|
9
9
|
const CookieStore_js_1 = __importDefault(require("./store/CookieStore.js"));
|
|
10
10
|
const mod_js_1 = require("../mod.js");
|
|
11
|
+
/** Function that returns a Hono-compatible session middleware */
|
|
11
12
|
function sessionMiddleware(options) {
|
|
12
13
|
const store = options.store;
|
|
13
14
|
const encryptionKey = options.encryptionKey;
|
|
@@ -26,7 +27,7 @@ function sessionMiddleware(options) {
|
|
|
26
27
|
store.cookieOptions = cookieOptions;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
const middleware = async (c, next) => {
|
|
30
|
+
const middleware = (0, deps_js_2.createMiddleware)(async (c, next) => {
|
|
30
31
|
const session = new mod_js_1.Session;
|
|
31
32
|
let sid = '';
|
|
32
33
|
let session_data;
|
|
@@ -118,7 +119,7 @@ function sessionMiddleware(options) {
|
|
|
118
119
|
? await store.persistSessionData(c, session.getCache())
|
|
119
120
|
: await store.persistSessionData(sid, session.getCache());
|
|
120
121
|
}
|
|
121
|
-
};
|
|
122
|
+
});
|
|
122
123
|
return middleware;
|
|
123
124
|
}
|
|
124
125
|
exports.sessionMiddleware = sessionMiddleware;
|
package/script/src/Session.d.ts
CHANGED
|
@@ -2,12 +2,18 @@ interface SessionDataEntry {
|
|
|
2
2
|
value: unknown;
|
|
3
3
|
flash: boolean;
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Interface for specifying the necessary data for a session entry
|
|
7
|
+
*/
|
|
5
8
|
export interface SessionData {
|
|
6
9
|
_data: Record<string, SessionDataEntry>;
|
|
7
10
|
_expire: string | null;
|
|
8
11
|
_delete: boolean;
|
|
9
12
|
_accessed: string | null;
|
|
10
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Session class with methods for interacting with the session
|
|
16
|
+
*/
|
|
11
17
|
export declare class Session {
|
|
12
18
|
private cache;
|
|
13
19
|
constructor();
|
package/script/src/Session.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const deps_js_1 = require("../../deps.js");
|
|
4
4
|
const mod_js_1 = require("../../mod.js");
|
|
5
|
+
/**
|
|
6
|
+
* Cookie storage driver class
|
|
7
|
+
*/
|
|
5
8
|
class CookieStore {
|
|
6
9
|
constructor(options) {
|
|
7
10
|
Object.defineProperty(this, "encryptionKey", {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { SessionData } from "../../mod.js";
|
|
2
|
+
/**
|
|
3
|
+
* Interface for required methods in session storage drivers
|
|
4
|
+
*/
|
|
2
5
|
export default interface Store {
|
|
3
6
|
getSessionById(sessionId?: string): SessionData | null | undefined | Promise<SessionData | null | undefined>;
|
|
4
7
|
createSession(sessionId: string, initialData: SessionData): Promise<void> | void;
|