@cleverclouds/auth-client 0.0.0-stage → 1.0.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.
- package/AGENTS.md +379 -0
- package/README.md +450 -2
- package/dist/client.d.ts +61 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +226 -0
- package/dist/client.js.map +1 -0
- package/dist/crypto.d.ts +12 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +66 -0
- package/dist/crypto.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +49 -0
- package/dist/errors.js.map +1 -0
- package/dist/express/index.d.ts +18 -0
- package/dist/express/index.d.ts.map +1 -0
- package/dist/express/index.js +296 -0
- package/dist/express/index.js.map +1 -0
- package/dist/express/types.d.ts +70 -0
- package/dist/express/types.d.ts.map +1 -0
- package/dist/express/types.js +3 -0
- package/dist/express/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/nextjs/index.d.ts +33 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/index.js +178 -0
- package/dist/nextjs/index.js.map +1 -0
- package/dist/nextjs/types.d.ts +51 -0
- package/dist/nextjs/types.d.ts.map +1 -0
- package/dist/nextjs/types.js +3 -0
- package/dist/nextjs/types.js.map +1 -0
- package/dist/permissions.d.ts +25 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +62 -0
- package/dist/permissions.js.map +1 -0
- package/dist/types.d.ts +53 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/package.json +86 -4
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export interface NextAuthOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Name of the cookie storing the session token.
|
|
4
|
+
* Default: 'cc_session'
|
|
5
|
+
*/
|
|
6
|
+
cookieName?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Cookie store instance (e.g. from `await cookies()` or `request.cookies`).
|
|
9
|
+
*/
|
|
10
|
+
cookieStore?: {
|
|
11
|
+
get(name: string): {
|
|
12
|
+
value?: string;
|
|
13
|
+
} | undefined;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Next.js Request object or standard Web API Request.
|
|
17
|
+
*/
|
|
18
|
+
request?: Request | {
|
|
19
|
+
headers: Headers | Record<string, string>;
|
|
20
|
+
cookies?: {
|
|
21
|
+
get(name: string): {
|
|
22
|
+
value?: string;
|
|
23
|
+
} | undefined;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface ProtectRouteOptions extends NextAuthOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Optional application-scoped permission(s) required to access this route.
|
|
30
|
+
*/
|
|
31
|
+
permission?: string | string[];
|
|
32
|
+
/**
|
|
33
|
+
* If true, requires all listed permissions. If false, requires at least one.
|
|
34
|
+
* Default: true
|
|
35
|
+
*/
|
|
36
|
+
requireAllPermissions?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Optional role(s) required to access this route.
|
|
39
|
+
*/
|
|
40
|
+
role?: string | string[];
|
|
41
|
+
/**
|
|
42
|
+
* If true, redirects browser navigation requests to the Identity login page.
|
|
43
|
+
* Default: false for API routes, true when redirectUrl is provided.
|
|
44
|
+
*/
|
|
45
|
+
redirectOnUnauthorized?: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* URL to return the user to after successful login.
|
|
48
|
+
*/
|
|
49
|
+
returnTo?: string;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/nextjs/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,WAAW,CAAC,EAAE;QACZ,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,SAAS,CAAC;KACnD,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,GAAG;QAClB,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,GAAG,SAAS,CAAA;SAAE,CAAC;KACjE,CAAC;CACH;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAEzB;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nextjs/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RBAC Evaluation Helpers
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Checks if the granted permissions satisfy a required permission.
|
|
6
|
+
* Supports exact matches (e.g. "projects.create") and resource wildcards (e.g. "projects.*").
|
|
7
|
+
*/
|
|
8
|
+
export declare function hasPermission(permissions: string[], required: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Checks if granted permissions satisfy AT LEAST ONE of the required permissions.
|
|
11
|
+
*/
|
|
12
|
+
export declare function hasAnyPermission(permissions: string[], requiredList: string[]): boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Checks if granted permissions satisfy ALL of the required permissions.
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasAllPermissions(permissions: string[], requiredList: string[]): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if granted roles include a specific role slug.
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasRole(roles: string[], roleSlug: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Checks if granted roles include at least one of the role slugs.
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasAnyRole(roles: string[], roleSlugs: string[]): boolean;
|
|
25
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAgB9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAGvF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAGxF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKlE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAGxE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RBAC Evaluation Helpers
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.hasPermission = hasPermission;
|
|
7
|
+
exports.hasAnyPermission = hasAnyPermission;
|
|
8
|
+
exports.hasAllPermissions = hasAllPermissions;
|
|
9
|
+
exports.hasRole = hasRole;
|
|
10
|
+
exports.hasAnyRole = hasAnyRole;
|
|
11
|
+
/**
|
|
12
|
+
* Checks if the granted permissions satisfy a required permission.
|
|
13
|
+
* Supports exact matches (e.g. "projects.create") and resource wildcards (e.g. "projects.*").
|
|
14
|
+
*/
|
|
15
|
+
function hasPermission(permissions, required) {
|
|
16
|
+
if (!permissions || !Array.isArray(permissions) || !required) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (permissions.includes(required) || permissions.includes('*.*') || permissions.includes('*')) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
const [requiredResource, requiredAction] = required.split('.');
|
|
23
|
+
if (!requiredAction) {
|
|
24
|
+
return permissions.includes(required);
|
|
25
|
+
}
|
|
26
|
+
// Check for resource-level wildcard: e.g. "projects.*" satisfies "projects.create"
|
|
27
|
+
return permissions.includes(`${requiredResource}.*`);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Checks if granted permissions satisfy AT LEAST ONE of the required permissions.
|
|
31
|
+
*/
|
|
32
|
+
function hasAnyPermission(permissions, requiredList) {
|
|
33
|
+
if (!requiredList || !requiredList.length)
|
|
34
|
+
return false;
|
|
35
|
+
return requiredList.some((p) => hasPermission(permissions, p));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if granted permissions satisfy ALL of the required permissions.
|
|
39
|
+
*/
|
|
40
|
+
function hasAllPermissions(permissions, requiredList) {
|
|
41
|
+
if (!requiredList || !requiredList.length)
|
|
42
|
+
return false;
|
|
43
|
+
return requiredList.every((p) => hasPermission(permissions, p));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks if granted roles include a specific role slug.
|
|
47
|
+
*/
|
|
48
|
+
function hasRole(roles, roleSlug) {
|
|
49
|
+
if (!roles || !Array.isArray(roles) || !roleSlug) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
return roles.includes(roleSlug.toLowerCase()) || roles.includes(roleSlug.toUpperCase());
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Checks if granted roles include at least one of the role slugs.
|
|
56
|
+
*/
|
|
57
|
+
function hasAnyRole(roles, roleSlugs) {
|
|
58
|
+
if (!roleSlugs || !roleSlugs.length)
|
|
59
|
+
return false;
|
|
60
|
+
return roleSlugs.some((r) => hasRole(roles, r));
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAMH,sCAgBC;AAKD,4CAGC;AAKD,8CAGC;AAKD,0BAKC;AAKD,gCAGC;AAtDD;;;GAGG;AACH,SAAgB,aAAa,CAAC,WAAqB,EAAE,QAAgB;IACnE,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC7D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,mFAAmF;IACnF,OAAO,WAAW,CAAC,QAAQ,CAAC,GAAG,gBAAgB,IAAI,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,WAAqB,EAAE,YAAsB;IAC5E,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,WAAqB,EAAE,YAAsB;IAC7E,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IACxD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAgB,OAAO,CAAC,KAAe,EAAE,QAAgB;IACvD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;GAEG;AACH,SAAgB,UAAU,CAAC,KAAe,EAAE,SAAmB;IAC7D,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CleverClouds Identity — Client SDK Types
|
|
3
|
+
*/
|
|
4
|
+
export interface CleverCloudsUser {
|
|
5
|
+
id: string;
|
|
6
|
+
email: string;
|
|
7
|
+
name: string;
|
|
8
|
+
avatar?: string;
|
|
9
|
+
status: string;
|
|
10
|
+
platformRole?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ApplicationScope {
|
|
13
|
+
id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
slug: string;
|
|
16
|
+
}
|
|
17
|
+
export interface VerificationResult {
|
|
18
|
+
valid: boolean;
|
|
19
|
+
user: CleverCloudsUser;
|
|
20
|
+
application: ApplicationScope;
|
|
21
|
+
roles: string[];
|
|
22
|
+
permissions: string[];
|
|
23
|
+
}
|
|
24
|
+
export interface ClientConfig {
|
|
25
|
+
/**
|
|
26
|
+
* The base URL of CleverClouds Identity (e.g. https://auth.cleverclouds.in or http://localhost:3000)
|
|
27
|
+
*/
|
|
28
|
+
identityBaseUrl?: string;
|
|
29
|
+
/**
|
|
30
|
+
* The unique slug of this downstream application (e.g. "projects", "hr", "finance")
|
|
31
|
+
*/
|
|
32
|
+
applicationSlug: string;
|
|
33
|
+
/**
|
|
34
|
+
* The secret API key issued by CleverClouds Identity for server-to-server integration
|
|
35
|
+
*/
|
|
36
|
+
applicationApiKey: string;
|
|
37
|
+
/**
|
|
38
|
+
* The whitelisted callback URL where Identity redirects users after signing in
|
|
39
|
+
*/
|
|
40
|
+
redirectUri: string;
|
|
41
|
+
/**
|
|
42
|
+
* Optional secret used to sign downstream session cookies via HMAC-SHA256
|
|
43
|
+
*/
|
|
44
|
+
sessionSecret?: string;
|
|
45
|
+
}
|
|
46
|
+
export interface AuthorizationUrlOptions {
|
|
47
|
+
returnTo?: string;
|
|
48
|
+
state?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface CookieSignOptions {
|
|
51
|
+
ttlSeconds?: number;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,88 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cleverclouds/auth-client",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Lightweight client SDK for CleverClouds Identity with Express and Next.js middlewares",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./express": {
|
|
14
|
+
"types": "./dist/express/index.d.ts",
|
|
15
|
+
"import": "./dist/express/index.js",
|
|
16
|
+
"default": "./dist/express/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./nextjs": {
|
|
19
|
+
"types": "./dist/nextjs/index.d.ts",
|
|
20
|
+
"import": "./dist/nextjs/index.js",
|
|
21
|
+
"default": "./dist/nextjs/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./cookies": {
|
|
24
|
+
"types": "./dist/crypto.d.ts",
|
|
25
|
+
"import": "./dist/crypto.js",
|
|
26
|
+
"default": "./dist/crypto.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"license": "MIT",
|
|
30
|
+
"repository": {
|
|
31
|
+
"type": "git",
|
|
32
|
+
"url": "https://github.com/darshan-kinge/cleverclouds-oneauth.git",
|
|
33
|
+
"directory": "packages/auth-client"
|
|
34
|
+
},
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/darshan-kinge/cleverclouds-oneauth/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/darshan-kinge/cleverclouds-oneauth#readme",
|
|
39
|
+
"keywords": [
|
|
40
|
+
"cleverclouds",
|
|
41
|
+
"auth",
|
|
42
|
+
"sso",
|
|
43
|
+
"identity",
|
|
44
|
+
"nextjs",
|
|
45
|
+
"express",
|
|
46
|
+
"fastify",
|
|
47
|
+
"rbac",
|
|
48
|
+
"session-security"
|
|
49
|
+
],
|
|
50
|
+
"files": [
|
|
51
|
+
"dist",
|
|
52
|
+
"README.md",
|
|
53
|
+
"AGENTS.md"
|
|
54
|
+
],
|
|
55
|
+
"publishConfig": {
|
|
56
|
+
"access": "public"
|
|
57
|
+
},
|
|
58
|
+
"scripts": {
|
|
59
|
+
"build": "tsc",
|
|
60
|
+
"prepublishOnly": "npm run build && npm test",
|
|
61
|
+
"test": "tsx --test tests/client.test.ts tests/permissions.test.ts tests/crypto.test.ts tests/express.test.ts"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"cookie-parser": "^1.4.0",
|
|
65
|
+
"express": "^4.0.0 || ^5.0.0",
|
|
66
|
+
"next": ">=14.0.0"
|
|
67
|
+
},
|
|
68
|
+
"peerDependenciesMeta": {
|
|
69
|
+
"cookie-parser": {
|
|
70
|
+
"optional": true
|
|
71
|
+
},
|
|
72
|
+
"express": {
|
|
73
|
+
"optional": true
|
|
74
|
+
},
|
|
75
|
+
"next": {
|
|
76
|
+
"optional": true
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
"devDependencies": {
|
|
80
|
+
"@types/cookie-parser": "^1.4.8",
|
|
81
|
+
"@types/express": "^5.0.0",
|
|
82
|
+
"@types/node": "^20.17.19",
|
|
83
|
+
"cookie-parser": "^1.4.7",
|
|
84
|
+
"express": "^4.21.2",
|
|
85
|
+
"tsx": "^4.23.15",
|
|
86
|
+
"typescript": "^5"
|
|
87
|
+
}
|
|
88
|
+
}
|