@edge-base/ssr 0.2.4 → 0.2.6
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/dist/cookie-token-manager.d.ts +6 -0
- package/dist/cookie-token-manager.d.ts.map +1 -1
- package/dist/cookie-token-manager.js +44 -12
- package/dist/cookie-token-manager.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/server-client.d.ts +4 -3
- package/dist/server-client.d.ts.map +1 -1
- package/dist/server-client.js +4 -1
- package/dist/server-client.js.map +1 -1
- package/dist/types.d.ts +10 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -7,10 +7,16 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { ITokenManager, ITokenPair } from '@edge-base/core';
|
|
9
9
|
import type { CookieStore, CookieOptions } from './types.js';
|
|
10
|
+
export interface CookieTokenManagerOptions {
|
|
11
|
+
cookieOptions?: Partial<CookieOptions>;
|
|
12
|
+
authNamespace?: string;
|
|
13
|
+
}
|
|
10
14
|
export declare class CookieTokenManager implements ITokenManager {
|
|
11
15
|
private cookies;
|
|
12
16
|
private cookieOptions;
|
|
17
|
+
private cookieNames;
|
|
13
18
|
constructor(cookies: CookieStore, cookieOptions?: Partial<CookieOptions>);
|
|
19
|
+
constructor(cookies: CookieStore, options?: CookieTokenManagerOptions);
|
|
14
20
|
getAccessToken(refreshFn?: (refreshToken: string) => Promise<ITokenPair>): Promise<string | null> | string | null;
|
|
15
21
|
getRefreshToken(): string | null;
|
|
16
22
|
invalidateAccessToken(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-token-manager.d.ts","sourceRoot":"","sources":["../src/cookie-token-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cookie-token-manager.d.ts","sourceRoot":"","sources":["../src/cookie-token-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAO7D,MAAM,WAAW,yBAAyB;IACxC,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA2ED,qBAAa,kBAAmB,YAAW,aAAa;IAapD,OAAO,CAAC,OAAO;IAZjB,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,WAAW,CAAmB;gBAGpC,OAAO,EAAE,WAAW,EACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;gBAGtC,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,yBAAyB;IAWrC,cAAc,CACZ,SAAS,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GACxD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI;IAsBzC,eAAe,IAAI,MAAM,GAAG,IAAI;IAIhC,qBAAqB,IAAI,IAAI;IAI7B,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAcnC,WAAW,IAAI,IAAI;CAIpB"}
|
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
* Works with any framework that provides a CookieStore interface
|
|
6
6
|
* (Next.js cookies(), Nuxt useCookie, etc.).
|
|
7
7
|
*/
|
|
8
|
-
const ACCESS_TOKEN_COOKIE = 'eb_access_token';
|
|
9
|
-
const REFRESH_TOKEN_COOKIE = 'eb_refresh_token';
|
|
10
8
|
/** Default cookie options — secure, httpOnly, SameSite=Lax */
|
|
11
9
|
const DEFAULT_COOKIE_OPTIONS = {
|
|
12
10
|
httpOnly: true,
|
|
@@ -14,6 +12,37 @@ const DEFAULT_COOKIE_OPTIONS = {
|
|
|
14
12
|
sameSite: 'lax',
|
|
15
13
|
path: '/',
|
|
16
14
|
};
|
|
15
|
+
function sanitizeCookieNamespace(namespace) {
|
|
16
|
+
return namespace
|
|
17
|
+
.trim()
|
|
18
|
+
.replace(/[^!#$%&'*+.^_`|~0-9A-Za-z-]+/g, '-')
|
|
19
|
+
.replace(/-+/g, '-')
|
|
20
|
+
.replace(/^-|-$/g, '');
|
|
21
|
+
}
|
|
22
|
+
function buildCookieTokenNames(authNamespace) {
|
|
23
|
+
const sanitizedNamespace = authNamespace ? sanitizeCookieNamespace(authNamespace) : '';
|
|
24
|
+
if (!sanitizedNamespace) {
|
|
25
|
+
return {
|
|
26
|
+
accessToken: 'eb_access_token',
|
|
27
|
+
refreshToken: 'eb_refresh_token',
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
accessToken: `eb_${sanitizedNamespace}_access_token`,
|
|
32
|
+
refreshToken: `eb_${sanitizedNamespace}_refresh_token`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
function isCookieTokenManagerOptions(input) {
|
|
36
|
+
return 'cookieOptions' in input || 'authNamespace' in input;
|
|
37
|
+
}
|
|
38
|
+
function normalizeCookieTokenManagerOptions(input = {}) {
|
|
39
|
+
if (!isCookieTokenManagerOptions(input)) {
|
|
40
|
+
return {
|
|
41
|
+
cookieOptions: input,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return input;
|
|
45
|
+
}
|
|
17
46
|
function decodeJwtPayload(token) {
|
|
18
47
|
try {
|
|
19
48
|
const parts = token.split('.');
|
|
@@ -45,17 +74,20 @@ function isTokenExpired(token) {
|
|
|
45
74
|
export class CookieTokenManager {
|
|
46
75
|
cookies;
|
|
47
76
|
cookieOptions;
|
|
48
|
-
|
|
77
|
+
cookieNames;
|
|
78
|
+
constructor(cookies, input = {}) {
|
|
49
79
|
this.cookies = cookies;
|
|
50
|
-
|
|
80
|
+
const options = normalizeCookieTokenManagerOptions(input);
|
|
81
|
+
this.cookieOptions = { ...DEFAULT_COOKIE_OPTIONS, ...options.cookieOptions };
|
|
82
|
+
this.cookieNames = buildCookieTokenNames(options.authNamespace);
|
|
51
83
|
}
|
|
52
84
|
getAccessToken(refreshFn) {
|
|
53
|
-
const accessToken = this.cookies.get(
|
|
85
|
+
const accessToken = this.cookies.get(this.cookieNames.accessToken) ?? null;
|
|
54
86
|
// If we have an access token, return it directly
|
|
55
87
|
if (accessToken && !isTokenExpired(accessToken))
|
|
56
88
|
return accessToken;
|
|
57
89
|
if (accessToken) {
|
|
58
|
-
this.cookies.delete(
|
|
90
|
+
this.cookies.delete(this.cookieNames.accessToken);
|
|
59
91
|
}
|
|
60
92
|
// If no access token but we have a refresh token and a refresh function,
|
|
61
93
|
// try to refresh
|
|
@@ -69,26 +101,26 @@ export class CookieTokenManager {
|
|
|
69
101
|
return null;
|
|
70
102
|
}
|
|
71
103
|
getRefreshToken() {
|
|
72
|
-
return this.cookies.get(
|
|
104
|
+
return this.cookies.get(this.cookieNames.refreshToken) ?? null;
|
|
73
105
|
}
|
|
74
106
|
invalidateAccessToken() {
|
|
75
|
-
this.cookies.delete(
|
|
107
|
+
this.cookies.delete(this.cookieNames.accessToken);
|
|
76
108
|
}
|
|
77
109
|
setTokens(tokens) {
|
|
78
110
|
const accessMaxAge = getTokenMaxAge(tokens.accessToken) ?? 900;
|
|
79
111
|
const refreshMaxAge = getTokenMaxAge(tokens.refreshToken) ?? 60 * 60 * 24 * 28;
|
|
80
|
-
this.cookies.set(
|
|
112
|
+
this.cookies.set(this.cookieNames.accessToken, tokens.accessToken, {
|
|
81
113
|
...this.cookieOptions,
|
|
82
114
|
maxAge: accessMaxAge,
|
|
83
115
|
});
|
|
84
|
-
this.cookies.set(
|
|
116
|
+
this.cookies.set(this.cookieNames.refreshToken, tokens.refreshToken, {
|
|
85
117
|
...this.cookieOptions,
|
|
86
118
|
maxAge: refreshMaxAge,
|
|
87
119
|
});
|
|
88
120
|
}
|
|
89
121
|
clearTokens() {
|
|
90
|
-
this.cookies.delete(
|
|
91
|
-
this.cookies.delete(
|
|
122
|
+
this.cookies.delete(this.cookieNames.accessToken);
|
|
123
|
+
this.cookies.delete(this.cookieNames.refreshToken);
|
|
92
124
|
}
|
|
93
125
|
}
|
|
94
126
|
//# sourceMappingURL=cookie-token-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-token-manager.js","sourceRoot":"","sources":["../src/cookie-token-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"cookie-token-manager.js","sourceRoot":"","sources":["../src/cookie-token-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,12 +21,14 @@
|
|
|
21
21
|
* ```
|
|
22
22
|
*/
|
|
23
23
|
export { ServerEdgeBase, type ServerUser } from './server-client.js';
|
|
24
|
-
export { CookieTokenManager } from './cookie-token-manager.js';
|
|
25
|
-
export type { CookieStore, CookieOptions, ServerClientOptions } from './types.js';
|
|
24
|
+
export { CookieTokenManager, type CookieTokenManagerOptions } from './cookie-token-manager.js';
|
|
25
|
+
export type { CookieStore, CookieOptions, ServerClientOptions, ServerAuthCookieNames } from './types.js';
|
|
26
26
|
export type { ITokenPair } from '@edge-base/core';
|
|
27
27
|
export { EdgeBaseError } from '@edge-base/core';
|
|
28
|
+
export type { EdgeBaseTableMap, EdgeBaseTableRecord } from '@edge-base/core';
|
|
28
29
|
import { ServerEdgeBase } from './server-client.js';
|
|
29
30
|
import type { ServerClientOptions } from './types.js';
|
|
31
|
+
import type { EdgeBaseTableMap } from '@edge-base/core';
|
|
30
32
|
/**
|
|
31
33
|
* Create a server-side EdgeBase client with cookie-based token management.
|
|
32
34
|
*
|
|
@@ -45,5 +47,5 @@ import type { ServerClientOptions } from './types.js';
|
|
|
45
47
|
* },
|
|
46
48
|
* });
|
|
47
49
|
*/
|
|
48
|
-
export declare function createServerClient(url: string, options: ServerClientOptions): ServerEdgeBase
|
|
50
|
+
export declare function createServerClient<Schema extends EdgeBaseTableMap = EdgeBaseTableMap>(url: string, options: ServerClientOptions<Schema>): ServerEdgeBase<Schema>;
|
|
49
51
|
//# 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;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAG/
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAAE,cAAc,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAG/F,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGzG,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI7E,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,gBAAgB,GAAG,gBAAgB,EACnF,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,GACnC,cAAc,CAAC,MAAM,CAAC,CAExB"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAErE,4CAA4C;AAC5C,OAAO,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gBAAgB;AAChB,OAAO,EAAE,cAAc,EAAmB,MAAM,oBAAoB,CAAC;AAErE,4CAA4C;AAC5C,OAAO,EAAE,kBAAkB,EAAkC,MAAM,2BAA2B,CAAC;AAO/F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,kBAAkB;AAElB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAChC,GAAW,EACX,OAAoC;IAEpC,OAAO,IAAI,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/server-client.d.ts
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { DbRef, StorageClient, FunctionsClient } from '@edge-base/core';
|
|
18
18
|
import type { ITokenPair } from '@edge-base/core';
|
|
19
|
+
import type { EdgeBaseTableMap } from '@edge-base/core';
|
|
19
20
|
import type { ServerClientOptions } from './types.js';
|
|
20
21
|
/** Decoded user from JWT access token (payload only, no verification). */
|
|
21
22
|
export interface ServerUser {
|
|
@@ -34,14 +35,14 @@ export interface ServerUser {
|
|
|
34
35
|
* Exposes: db(), storage, functions, getUser(), getSession().
|
|
35
36
|
* Does NOT expose: auth signIn/signUp (client-side only), database-live, room, push.
|
|
36
37
|
*/
|
|
37
|
-
export declare class ServerEdgeBase {
|
|
38
|
+
export declare class ServerEdgeBase<Schema extends EdgeBaseTableMap = EdgeBaseTableMap> {
|
|
38
39
|
readonly storage: StorageClient;
|
|
39
40
|
readonly functions: FunctionsClient;
|
|
40
41
|
private httpClient;
|
|
41
42
|
private tokenManager;
|
|
42
43
|
private baseUrl;
|
|
43
44
|
private core;
|
|
44
|
-
constructor(url: string, options: ServerClientOptions);
|
|
45
|
+
constructor(url: string, options: ServerClientOptions<Schema>);
|
|
45
46
|
/**
|
|
46
47
|
* Access a database by namespace + optional instance ID.
|
|
47
48
|
*
|
|
@@ -49,7 +50,7 @@ export declare class ServerEdgeBase {
|
|
|
49
50
|
* const posts = await client.db('shared').table('posts').getList();
|
|
50
51
|
* const docs = await client.db('workspace', 'ws-456').table('documents').getList();
|
|
51
52
|
*/
|
|
52
|
-
db(namespace: string, id?: string): DbRef
|
|
53
|
+
db(namespace: string, id?: string): DbRef<Schema>;
|
|
53
54
|
/**
|
|
54
55
|
* Get the current authenticated user from the cookie token.
|
|
55
56
|
* Decodes the JWT payload without server verification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-client.d.ts","sourceRoot":"","sources":["../src/server-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,EACL,aAAa,EACb,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-client.d.ts","sourceRoot":"","sources":["../src/server-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,EACL,aAAa,EACb,eAAe,EAIhB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,qBAAa,cAAc,CAAC,MAAM,SAAS,gBAAgB,GAAG,gBAAgB;IAC5E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,IAAI,CAAe;gBACf,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAmB7D;;;;;;OAMG;IACH,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAIjD;;;;OAIG;IACH,OAAO,IAAI,UAAU,GAAG,IAAI;IAM5B;;;OAGG;IACH,UAAU,IAAI;QAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAOzE;;;OAGG;IACH,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIpC;;;OAGG;IACH,YAAY,IAAI,IAAI;CAIrB"}
|
package/dist/server-client.js
CHANGED
|
@@ -31,7 +31,10 @@ export class ServerEdgeBase {
|
|
|
31
31
|
core;
|
|
32
32
|
constructor(url, options) {
|
|
33
33
|
this.baseUrl = url.replace(/\/$/, '');
|
|
34
|
-
this.tokenManager = new CookieTokenManager(options.cookies,
|
|
34
|
+
this.tokenManager = new CookieTokenManager(options.cookies, {
|
|
35
|
+
cookieOptions: options.cookieOptions,
|
|
36
|
+
authNamespace: options.authNamespace,
|
|
37
|
+
});
|
|
35
38
|
this.httpClient = new HttpClient({
|
|
36
39
|
baseUrl: this.baseUrl,
|
|
37
40
|
tokenManager: options.serviceKey ? undefined : this.tokenManager,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-client.js","sourceRoot":"","sources":["../src/server-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"server-client.js","sourceRoot":"","sources":["../src/server-client.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @edge-base/ssr — Type definitions for cookie-based SSR authentication.
|
|
3
3
|
*/
|
|
4
|
+
import type { EdgeBaseTableMap } from '@edge-base/core';
|
|
4
5
|
/** Options for cookie serialization. */
|
|
5
6
|
export interface CookieOptions {
|
|
6
7
|
httpOnly?: boolean;
|
|
@@ -27,12 +28,20 @@ export interface CookieStore {
|
|
|
27
28
|
/** Delete a cookie by name. */
|
|
28
29
|
delete(name: string): void;
|
|
29
30
|
}
|
|
31
|
+
export interface ServerAuthCookieNames {
|
|
32
|
+
accessToken: string;
|
|
33
|
+
refreshToken: string;
|
|
34
|
+
}
|
|
30
35
|
/** Options for creating a server-side EdgeBase client. */
|
|
31
|
-
export interface ServerClientOptions {
|
|
36
|
+
export interface ServerClientOptions<Schema extends EdgeBaseTableMap = EdgeBaseTableMap> {
|
|
32
37
|
/** Cookie store for token persistence across requests. */
|
|
33
38
|
cookies: CookieStore;
|
|
34
39
|
/** Override default cookie options (httpOnly, secure, sameSite, path). */
|
|
35
40
|
cookieOptions?: Partial<CookieOptions>;
|
|
41
|
+
/** Schema map from typegen (for example `EdgeBaseTables`) used for table inference. */
|
|
42
|
+
schema?: Schema;
|
|
43
|
+
/** Prefix auth cookie names to avoid same-origin collisions across apps. */
|
|
44
|
+
authNamespace?: string;
|
|
36
45
|
/**
|
|
37
46
|
* Service key for admin-level access.
|
|
38
47
|
* When provided, requests use the service key instead of user tokens.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,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;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,4DAA4D;IAC5D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChE,+BAA+B;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B,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;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,qEAAqE;IACrE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7C,4DAA4D;IAC5D,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAChE,+BAA+B;IAC/B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,0DAA0D;AAC1D,MAAM,WAAW,mBAAmB,CAAC,MAAM,SAAS,gBAAgB,GAAG,gBAAgB;IACrF,0DAA0D;IAC1D,OAAO,EAAE,WAAW,CAAC;IACrB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@edge-base/ssr",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.6",
|
|
4
4
|
"description": "EdgeBase SSR helpers — cookie-based token management for server-side rendering",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@edge-base/core": "0.2.
|
|
38
|
+
"@edge-base/core": "0.2.6"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
41
|
"typescript": "^5.7.0"
|