@tern-secure/nextjs 5.1.10 → 5.1.11
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/types/app-router/admin/actions.d.ts +19 -0
- package/dist/types/app-router/admin/actions.d.ts.map +1 -0
- package/dist/types/app-router/admin/constants.d.ts +2 -0
- package/dist/types/app-router/admin/constants.d.ts.map +1 -0
- package/dist/types/app-router/admin/fnValidators.d.ts +35 -0
- package/dist/types/app-router/admin/fnValidators.d.ts.map +1 -0
- package/dist/types/app-router/admin/index.d.ts +4 -0
- package/dist/types/app-router/admin/index.d.ts.map +1 -0
- package/dist/types/app-router/admin/responses.d.ts +28 -0
- package/dist/types/app-router/admin/responses.d.ts.map +1 -0
- package/dist/types/app-router/admin/sessionHandlers.d.ts +26 -0
- package/dist/types/app-router/admin/sessionHandlers.d.ts.map +1 -0
- package/dist/types/app-router/admin/ternsecureNextjsHandler.d.ts +7 -0
- package/dist/types/app-router/admin/ternsecureNextjsHandler.d.ts.map +1 -0
- package/dist/types/app-router/admin/types.d.ts +105 -0
- package/dist/types/app-router/admin/types.d.ts.map +1 -0
- package/dist/types/app-router/admin/utils.d.ts +53 -0
- package/dist/types/app-router/admin/utils.d.ts.map +1 -0
- package/dist/types/app-router/admin/validators.d.ts +46 -0
- package/dist/types/app-router/admin/validators.d.ts.map +1 -0
- package/dist/types/app-router/client/TernSecureProvider.d.ts +25 -0
- package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -0
- package/dist/types/app-router/route-handler/internal-route.d.ts +2 -0
- package/dist/types/app-router/route-handler/internal-route.d.ts.map +1 -0
- package/dist/types/app-router/server/auth.d.ts +26 -0
- package/dist/types/app-router/server/auth.d.ts.map +1 -0
- package/dist/types/app-router/server/utils.d.ts +5 -0
- package/dist/types/app-router/server/utils.d.ts.map +1 -0
- package/dist/types/boundary/components.d.ts +2 -0
- package/dist/types/boundary/components.d.ts.map +1 -0
- package/dist/types/boundary/hooks.d.ts +2 -0
- package/dist/types/boundary/hooks.d.ts.map +1 -0
- package/dist/types/constants.d.ts +11 -0
- package/dist/types/constants.d.ts.map +1 -0
- package/dist/types/errors.d.ts +44 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/server/constant.d.ts +5 -0
- package/dist/types/server/constant.d.ts.map +1 -0
- package/dist/types/server/crypto.d.ts +3 -0
- package/dist/types/server/crypto.d.ts.map +1 -0
- package/dist/types/server/ctx-store.d.ts +24 -0
- package/dist/types/server/ctx-store.d.ts.map +1 -0
- package/dist/types/server/edge-session.d.ts +16 -0
- package/dist/types/server/edge-session.d.ts.map +1 -0
- package/dist/types/server/headers-utils.d.ts +10 -0
- package/dist/types/server/headers-utils.d.ts.map +1 -0
- package/dist/types/server/index.d.ts +7 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/server/jwt-edge.d.ts +14 -0
- package/dist/types/server/jwt-edge.d.ts.map +1 -0
- package/dist/types/server/jwt.d.ts +14 -0
- package/dist/types/server/jwt.d.ts.map +1 -0
- package/dist/types/server/nextErrors.d.ts +54 -0
- package/dist/types/server/nextErrors.d.ts.map +1 -0
- package/dist/types/server/nextFetcher.d.ts +26 -0
- package/dist/types/server/nextFetcher.d.ts.map +1 -0
- package/dist/types/server/node/SessionTernSecure.d.ts +3 -0
- package/dist/types/server/node/SessionTernSecure.d.ts.map +1 -0
- package/dist/types/server/node/auth.d.ts +23 -0
- package/dist/types/server/node/auth.d.ts.map +1 -0
- package/dist/types/server/node/index.d.ts +3 -0
- package/dist/types/server/node/index.d.ts.map +1 -0
- package/dist/types/server/node/node-session.d.ts +4 -0
- package/dist/types/server/node/node-session.d.ts.map +1 -0
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts +54 -0
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts.map +1 -0
- package/dist/types/server/protect.d.ts +26 -0
- package/dist/types/server/protect.d.ts.map +1 -0
- package/dist/types/server/redirect.d.ts +20 -0
- package/dist/types/server/redirect.d.ts.map +1 -0
- package/dist/types/server/routeMatcher.d.ts +13 -0
- package/dist/types/server/routeMatcher.d.ts.map +1 -0
- package/dist/types/server/sdk-versions.d.ts +8 -0
- package/dist/types/server/sdk-versions.d.ts.map +1 -0
- package/dist/types/server/session-store.d.ts +30 -0
- package/dist/types/server/session-store.d.ts.map +1 -0
- package/dist/types/server/ternSecureEdgeMiddleware.d.ts +47 -0
- package/dist/types/server/ternSecureEdgeMiddleware.d.ts.map +1 -0
- package/dist/types/server/ternSecureFireMiddleware.d.ts +47 -0
- package/dist/types/server/ternSecureFireMiddleware.d.ts.map +1 -0
- package/dist/types/server/types.d.ts +40 -0
- package/dist/types/server/types.d.ts.map +1 -0
- package/dist/types/server/utils.d.ts +29 -0
- package/dist/types/server/utils.d.ts.map +1 -0
- package/dist/types/types.d.ts +144 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/utils/NextCookieAdapter.d.ts +9 -0
- package/dist/types/utils/NextCookieAdapter.d.ts.map +1 -0
- package/dist/types/utils/admin-init.d.ts +2 -0
- package/dist/types/utils/admin-init.d.ts.map +1 -0
- package/dist/types/utils/allNextProviderProps.d.ts +6 -0
- package/dist/types/utils/allNextProviderProps.d.ts.map +1 -0
- package/dist/types/utils/client-init.d.ts +2 -0
- package/dist/types/utils/client-init.d.ts.map +1 -0
- package/dist/types/utils/config.d.ts +51 -0
- package/dist/types/utils/config.d.ts.map +1 -0
- package/dist/types/utils/construct.d.ts +38 -0
- package/dist/types/utils/construct.d.ts.map +1 -0
- package/dist/types/utils/create-styles.d.ts +99 -0
- package/dist/types/utils/create-styles.d.ts.map +1 -0
- package/dist/types/utils/fireconfig.d.ts +4 -0
- package/dist/types/utils/fireconfig.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +27 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/redirect.d.ts +9 -0
- package/dist/types/utils/redirect.d.ts.map +1 -0
- package/dist/types/utils/redis.d.ts +8 -0
- package/dist/types/utils/redis.d.ts.map +1 -0
- package/dist/types/utils/response.d.ts +3 -0
- package/dist/types/utils/response.d.ts.map +1 -0
- package/dist/types/utils/serverRedirectAuth.d.ts +6 -0
- package/dist/types/utils/serverRedirectAuth.d.ts.map +1 -0
- package/dist/types/utils/ternsecure-sw.d.ts +8 -0
- package/dist/types/utils/ternsecure-sw.d.ts.map +1 -0
- package/dist/types/utils/withLogger.d.ts +17 -0
- package/dist/types/utils/withLogger.d.ts.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function createSessionCookieServer(idToken: string): Promise<import("@tern-secure/types").SessionResult>;
|
|
2
|
+
export declare function clearSessionCookieServer(): Promise<import("@tern-secure/types").SessionResult>;
|
|
3
|
+
export declare function clearNextSessionCookie(): Promise<{
|
|
4
|
+
success: boolean;
|
|
5
|
+
message: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function setNextServerSession(idToken: string): Promise<{
|
|
8
|
+
success: boolean;
|
|
9
|
+
message: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function setNextServerToken(token: string): Promise<{
|
|
12
|
+
success: boolean;
|
|
13
|
+
message: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare function createNextSessionCookie(idToken: string): Promise<{
|
|
16
|
+
success: boolean;
|
|
17
|
+
message: string;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/actions.ts"],"names":[],"mappings":"AAcA,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,MAAM,uDAG9D;AAED,wBAAsB,wBAAwB,wDAG7C;AAED,wBAAsB,sBAAsB;;;GAE3C;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM;;;GAEzD;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM;;;GAErD;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM;;;GAE5D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,QAAmD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import type { AuthEndpoint, ComprehensiveValidationResult, CorsOptions, EndpointConfig, SecurityOptions, SessionSubEndpoint, ValidationConfig } from './types';
|
|
3
|
+
export interface RequestContext {
|
|
4
|
+
request: NextRequest;
|
|
5
|
+
origin: string | null;
|
|
6
|
+
host: string | null;
|
|
7
|
+
referer: string | null;
|
|
8
|
+
userAgent: string;
|
|
9
|
+
method: string;
|
|
10
|
+
pathSegments: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare function createRequestContext(request: NextRequest): RequestContext;
|
|
13
|
+
/**
|
|
14
|
+
* Main validators factory function
|
|
15
|
+
* Returns an object containing all validator functions and utilities
|
|
16
|
+
*/
|
|
17
|
+
export declare function createValidators(context: RequestContext): {
|
|
18
|
+
createValidationConfig: (overrides?: Partial<ValidationConfig>) => ValidationConfig;
|
|
19
|
+
validateRequest: (config: ValidationConfig) => Promise<ComprehensiveValidationResult>;
|
|
20
|
+
validateCors: (corsOptions: CorsOptions) => Promise<NextResponse | null>;
|
|
21
|
+
validateSecurity: (securityOptions: SecurityOptions) => Promise<NextResponse | null>;
|
|
22
|
+
validatePathStructure: () => NextResponse | null;
|
|
23
|
+
validateEndpoint: (_endpoint: AuthEndpoint, endpointConfig: EndpointConfig) => NextResponse | null;
|
|
24
|
+
validateSubEndpoint: (subEndpoint: SessionSubEndpoint | undefined, subEndpointConfig: any) => NextResponse | null;
|
|
25
|
+
validateSessionRequest: () => Promise<{
|
|
26
|
+
body: any;
|
|
27
|
+
idToken?: string;
|
|
28
|
+
csrfToken?: string;
|
|
29
|
+
error?: NextResponse;
|
|
30
|
+
}>;
|
|
31
|
+
validateIdToken: (idToken: string | undefined) => NextResponse | null;
|
|
32
|
+
validateCsrfToken: (csrfToken: string, csrfCookieValue: string | undefined) => NextResponse | null;
|
|
33
|
+
createCorsOptionsResponse: (corsOptions: CorsOptions) => NextResponse;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=fnValidators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fnValidators.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/fnValidators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG7D,OAAO,KAAK,EACV,YAAY,EACZ,6BAA6B,EAC7B,WAAW,EACX,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAazE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc;yCA4SX,OAAO,CAAC,gBAAgB,CAAC,KAAQ,gBAAgB;8BA7ErD,gBAAgB,KAAG,OAAO,CAAC,6BAA6B,CAAC;gCA5NvD,WAAW,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;wCAqDlC,eAAe,KAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;iCA0F7D,YAAY,GAAG,IAAI;kCAYxC,YAAY,kBACP,cAAc,KAC7B,YAAY,GAAG,IAAI;uCAaP,kBAAkB,GAAG,SAAS,qBACxB,GAAG,KACrB,YAAY,GAAG,IAAI;kCAgBmB,OAAO,CAAC;QAC/C,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;+BAYgC,MAAM,GAAG,SAAS,KAAG,YAAY,GAAG,IAAI;mCAhF7D,MAAM,mBACA,MAAM,GAAG,SAAS,KAClC,YAAY,GAAG,IAAI;6CAvG0B,WAAW,KAAG,YAAY;EAuS3E"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { createTernSecureNextJsHandler } from './ternsecureNextjsHandler';
|
|
2
|
+
export { clearSessionCookieServer, clearNextSessionCookie, createSessionCookieServer, createNextSessionCookie, setNextServerSession, setNextServerToken } from './actions';
|
|
3
|
+
export type { TernSecureHandlerOptions } from './types';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AAEzE,OAAO,EACH,wBAAwB,EACxB,sBAAsB,EACtB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EACrB,MAAM,WAAW,CAAA;AAElB,YAAY,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NextResponse } from 'next/server';
|
|
2
|
+
/**
|
|
3
|
+
* Standardized error response creation
|
|
4
|
+
*/
|
|
5
|
+
export declare function createApiErrorResponse(code: string, message: string, status: number): NextResponse;
|
|
6
|
+
/**
|
|
7
|
+
* Standardized success response creation
|
|
8
|
+
*/
|
|
9
|
+
export declare function createApiSuccessResponse<T>(data: T, status?: number): NextResponse;
|
|
10
|
+
/**
|
|
11
|
+
* Session verification response utilities
|
|
12
|
+
*/
|
|
13
|
+
export declare class SessionResponseHelper {
|
|
14
|
+
static createVerificationResponse(decodedSession: any): NextResponse;
|
|
15
|
+
static createUnauthorizedResponse(): NextResponse;
|
|
16
|
+
static createSessionCreationResponse(res: any): NextResponse;
|
|
17
|
+
static createRefreshResponse(refreshRes: any): NextResponse;
|
|
18
|
+
static createRevokeResponse(res: any): NextResponse;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* HTTP method response utilities
|
|
22
|
+
*/
|
|
23
|
+
export declare class HttpResponseHelper {
|
|
24
|
+
static createMethodNotAllowedResponse(): NextResponse;
|
|
25
|
+
static createNotFoundResponse(): NextResponse;
|
|
26
|
+
static createSubEndpointNotSupportedResponse(): NextResponse;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=responses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/responses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb,YAAY,CAiBd;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,GAAE,MAAY,GAAG,YAAY,CAQvF;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC,MAAM,CAAC,0BAA0B,CAAC,cAAc,EAAE,GAAG,GAAG,YAAY;IAQpE,MAAM,CAAC,0BAA0B,IAAI,YAAY;IAIjD,MAAM,CAAC,6BAA6B,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY;IAoB5D,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,GAAG,GAAG,YAAY;IAY3D,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY;CAUpD;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,MAAM,CAAC,8BAA8B,IAAI,YAAY;IAIrD,MAAM,CAAC,sBAAsB,IAAI,YAAY;IAI7C,MAAM,CAAC,qCAAqC,IAAI,YAAY;CAO7D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import type { SessionSubEndpoint, TernSecureHandlerOptions, TernSecureInternalHandlerConfig } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Session GET request handlers
|
|
5
|
+
*/
|
|
6
|
+
export declare class SessionGetHandler {
|
|
7
|
+
static handle(request: NextRequest, subEndpoint: SessionSubEndpoint, _config: Required<TernSecureHandlerOptions>): Promise<NextResponse>;
|
|
8
|
+
private static handleVerify;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Session POST request handlers
|
|
12
|
+
*/
|
|
13
|
+
export declare class SessionPostHandler {
|
|
14
|
+
static handle(request: NextRequest, subEndpoint: SessionSubEndpoint, _config: TernSecureInternalHandlerConfig): Promise<NextResponse>;
|
|
15
|
+
private static handleCreateSession;
|
|
16
|
+
private static handleRefreshSession;
|
|
17
|
+
private static handleRevokeSession;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Main session endpoint orchestrator
|
|
21
|
+
*/
|
|
22
|
+
export declare class SessionEndpointHandler {
|
|
23
|
+
static handle(request: NextRequest, method: string, subEndpoint: SessionSubEndpoint | undefined, config: Required<TernSecureHandlerOptions>): Promise<NextResponse>;
|
|
24
|
+
private static validateSubEndpoint;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=sessionHandlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionHandlers.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/sessionHandlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI7D,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,+BAA+B,EAChC,MAAM,SAAS,CAAC;AAGjB;;GAEG;AACH,qBAAa,iBAAiB;WACf,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GAC1C,OAAO,CAAC,YAAY,CAAC;mBASH,YAAY;CAiBlC;AAED;;GAEG;AACH,qBAAa,kBAAkB;WAChB,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,kBAAkB,EAC/B,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,YAAY,CAAC;mBA0BH,mBAAmB;mBAmBnB,oBAAoB;mBA0BpB,mBAAmB;CAIzC;AAED;;GAEG;AACH,qBAAa,sBAAsB;WACpB,MAAM,CACjB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,MAAM,EAAE,QAAQ,CAAC,wBAAwB,CAAC,GACzC,OAAO,CAAC,YAAY,CAAC;IA4BxB,OAAO,CAAC,MAAM,CAAC,mBAAmB;CAmBnC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { NextRequest, NextResponse } from 'next/server';
|
|
2
|
+
import type { TernSecureHandlerOptions } from './types';
|
|
3
|
+
export declare function createTernSecureNextJsHandler(options?: TernSecureHandlerOptions): {
|
|
4
|
+
GET: (request: NextRequest) => Promise<NextResponse>;
|
|
5
|
+
POST: (request: NextRequest) => Promise<NextResponse>;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=ternsecureNextjsHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ternsecureNextjsHandler.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/ternsecureNextjsHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO7D,OAAO,KAAK,EAGV,wBAAwB,EACQ,MAAM,SAAS,CAAC;AA4ClD,wBAAgB,6BAA6B,CAAC,OAAO,CAAC,EAAE,wBAAwB;mBAW9C,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC;oBAAnC,WAAW,KAAG,OAAO,CAAC,YAAY,CAAC;EA0BpE"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { type NextResponse } from 'next/server';
|
|
2
|
+
export interface CorsOptions {
|
|
3
|
+
allowedOrigins: string[] | '*';
|
|
4
|
+
allowedMethods?: string[];
|
|
5
|
+
allowedHeaders?: string[];
|
|
6
|
+
allowCredentials?: boolean;
|
|
7
|
+
maxAge?: number;
|
|
8
|
+
skipSameOrigin?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface CookieOptions {
|
|
11
|
+
name?: string;
|
|
12
|
+
domain?: string;
|
|
13
|
+
path?: string;
|
|
14
|
+
secure?: boolean;
|
|
15
|
+
httpOnly?: boolean;
|
|
16
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
17
|
+
maxAge?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RateLimitOptions {
|
|
20
|
+
windowMs?: number;
|
|
21
|
+
maxRequests?: number;
|
|
22
|
+
skipSuccessful?: boolean;
|
|
23
|
+
skipFailedRequests?: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface SecurityOptions {
|
|
26
|
+
requireCSRF?: boolean;
|
|
27
|
+
allowedReferers?: string[];
|
|
28
|
+
requiredHeaders?: Record<string, string>;
|
|
29
|
+
ipWhitelist?: string[];
|
|
30
|
+
userAgent?: {
|
|
31
|
+
block?: string[];
|
|
32
|
+
allow?: string[];
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export interface EndpointConfig {
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
methods: ('GET' | 'POST' | 'PUT' | 'DELETE')[];
|
|
38
|
+
requireAuth?: boolean;
|
|
39
|
+
rateLimit?: RateLimitOptions;
|
|
40
|
+
security?: SecurityOptions;
|
|
41
|
+
cors?: Partial<CorsOptions>;
|
|
42
|
+
}
|
|
43
|
+
export interface SessionEndpointConfig extends EndpointConfig {
|
|
44
|
+
subEndpoints?: {
|
|
45
|
+
[K in SessionSubEndpoint]?: Partial<EndpointConfig>;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export interface TernSecureHandlerOptions {
|
|
49
|
+
cors?: CorsOptions;
|
|
50
|
+
cookies?: CookieOptions;
|
|
51
|
+
rateLimit?: RateLimitOptions;
|
|
52
|
+
security?: SecurityOptions;
|
|
53
|
+
endpoints?: {
|
|
54
|
+
sessions?: SessionEndpointConfig;
|
|
55
|
+
};
|
|
56
|
+
debug?: boolean;
|
|
57
|
+
environment?: 'development' | 'production' | 'test';
|
|
58
|
+
basePath?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Define an internal config type that extends the public options
|
|
62
|
+
* with server-side only values like tenantId.
|
|
63
|
+
*/
|
|
64
|
+
export type TernSecureInternalHandlerConfig = Required<TernSecureHandlerOptions> & {
|
|
65
|
+
tenantId?: string;
|
|
66
|
+
};
|
|
67
|
+
export type AuthEndpoint = 'sessions' | 'users';
|
|
68
|
+
export type SessionSubEndpoint = 'verify' | 'createsession' | 'refresh' | 'revoke';
|
|
69
|
+
export declare const DEFAULT_CORS_OPTIONS: CorsOptions;
|
|
70
|
+
export declare const DEFAULT_COOKIE_OPTIONS: CookieOptions;
|
|
71
|
+
export declare const DEFAULT_SECURITY_OPTIONS: SecurityOptions;
|
|
72
|
+
export declare const DEFAULT_ENDPOINT_CONFIG: EndpointConfig;
|
|
73
|
+
export declare const DEFAULT_SESSIONS_CONFIG: SessionEndpointConfig;
|
|
74
|
+
export declare const DEFAULT_HANDLER_OPTIONS: Required<TernSecureHandlerOptions> & {
|
|
75
|
+
endpoints: Required<NonNullable<TernSecureHandlerOptions['endpoints']>>;
|
|
76
|
+
};
|
|
77
|
+
export interface ValidationResult {
|
|
78
|
+
error?: NextResponse;
|
|
79
|
+
data?: any;
|
|
80
|
+
}
|
|
81
|
+
export interface ValidationConfig {
|
|
82
|
+
cors?: CorsOptions;
|
|
83
|
+
security?: SecurityOptions;
|
|
84
|
+
endpoint?: {
|
|
85
|
+
name: AuthEndpoint;
|
|
86
|
+
config: EndpointConfig;
|
|
87
|
+
};
|
|
88
|
+
subEndpoint?: {
|
|
89
|
+
name: SessionSubEndpoint;
|
|
90
|
+
config: EndpointConfig;
|
|
91
|
+
};
|
|
92
|
+
requireIdToken?: boolean;
|
|
93
|
+
requireCsrfToken?: boolean;
|
|
94
|
+
}
|
|
95
|
+
export interface ComprehensiveValidationResult {
|
|
96
|
+
isValid: boolean;
|
|
97
|
+
error?: NextResponse;
|
|
98
|
+
corsResponse?: NextResponse;
|
|
99
|
+
sessionData?: {
|
|
100
|
+
body: any;
|
|
101
|
+
idToken?: string;
|
|
102
|
+
csrfToken?: string;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { NextRequest } from 'next/server';
|
|
2
|
+
/**
|
|
3
|
+
* HTTP utilities
|
|
4
|
+
*/
|
|
5
|
+
export declare class HttpUtils {
|
|
6
|
+
/**
|
|
7
|
+
* Extract client IP address from various headers
|
|
8
|
+
*/
|
|
9
|
+
static getClientIP(request: NextRequest): string;
|
|
10
|
+
/**
|
|
11
|
+
* Parse URL path segments for routing
|
|
12
|
+
*/
|
|
13
|
+
static parsePathSegments(url: URL): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Extract authentication headers
|
|
16
|
+
*/
|
|
17
|
+
static extractAuthHeaders(request: NextRequest): {
|
|
18
|
+
origin: string | null;
|
|
19
|
+
host: string | null;
|
|
20
|
+
referer: string | null;
|
|
21
|
+
userAgent: string;
|
|
22
|
+
authorization: string | null;
|
|
23
|
+
xRequestedWith: string | null;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Configuration utilities
|
|
28
|
+
*/
|
|
29
|
+
export declare class ConfigUtils {
|
|
30
|
+
/**
|
|
31
|
+
* Deep merge handler options with defaults
|
|
32
|
+
*/
|
|
33
|
+
static mergeWithDefaults(defaults: any, options?: any): any;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Cookie utilities
|
|
37
|
+
*/
|
|
38
|
+
export declare class CookieUtils {
|
|
39
|
+
static extractSessionCookies(request: NextRequest): {
|
|
40
|
+
sessionCookie: string | undefined;
|
|
41
|
+
csrfCookie: string | undefined;
|
|
42
|
+
mainSession: string | undefined;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Logging utilities for debugging
|
|
47
|
+
*/
|
|
48
|
+
export declare class LoggingUtils {
|
|
49
|
+
static logRequest(request: NextRequest, context?: string): void;
|
|
50
|
+
static logError(error: any, context?: string): void;
|
|
51
|
+
static logWarning(message: string, context?: string): void;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,qBAAa,SAAS;IACpB;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM;IAYhD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE;IAI5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,WAAW;;;;;;;;CAU/C;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,QAAQ,EAAE,GAAG,EACb,OAAO,CAAC,EAAE,GAAG,GACZ,GAAG;CAgBP;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,MAAM,CAAC,qBAAqB,CAAC,OAAO,EAAE,WAAW;;;;;CAOlD;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,MAAM;IAMxD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM;IAI5C,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;CAGpD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { NextRequest } from 'next/server';
|
|
2
|
+
import { NextResponse } from 'next/server';
|
|
3
|
+
import type { AuthEndpoint, CorsOptions, SecurityOptions, SessionSubEndpoint } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* CORS validation utilities
|
|
6
|
+
*/
|
|
7
|
+
export declare class CorsValidator {
|
|
8
|
+
static validate(request: NextRequest, corsOptions: CorsOptions): Promise<NextResponse | null>;
|
|
9
|
+
static createOptionsResponse(corsOptions: CorsOptions): NextResponse;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Security validation utilities
|
|
13
|
+
*/
|
|
14
|
+
export declare class SecurityValidator {
|
|
15
|
+
static validate(request: NextRequest, securityOptions: SecurityOptions): Promise<NextResponse | null>;
|
|
16
|
+
private static validateCsrf;
|
|
17
|
+
private static validateRequiredHeaders;
|
|
18
|
+
private static validateUserAgent;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* CSRF token validation utilities
|
|
22
|
+
*/
|
|
23
|
+
export declare class CsrfValidator {
|
|
24
|
+
static validate(csrfToken: string, csrfCookieValue: string | undefined): NextResponse | null;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Route validation utilities
|
|
28
|
+
*/
|
|
29
|
+
export declare class RouteValidator {
|
|
30
|
+
static validatePathStructure(pathSegments: string[]): NextResponse | null;
|
|
31
|
+
static validateEndpoint(_endpoint: AuthEndpoint, endpointConfig: any, method: string): NextResponse | null;
|
|
32
|
+
static validateSubEndpoint(subEndpoint: SessionSubEndpoint | undefined, subEndpointConfig: any, method: string): NextResponse | null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Request body validation utilities
|
|
36
|
+
*/
|
|
37
|
+
export declare class RequestValidator {
|
|
38
|
+
static validateSessionRequest(request: NextRequest): Promise<{
|
|
39
|
+
body: any;
|
|
40
|
+
idToken?: string;
|
|
41
|
+
csrfToken?: string;
|
|
42
|
+
error?: NextResponse;
|
|
43
|
+
}>;
|
|
44
|
+
static validateIdToken(idToken: string | undefined): NextResponse | null;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=validators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/validators.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE9F;;GAEG;AACH,qBAAa,aAAa;WACX,QAAQ,CACnB,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA0B/B,MAAM,CAAC,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY;CA4BrE;AAED;;GAEG;AACH,qBAAa,iBAAiB;WACf,QAAQ,CACnB,OAAO,EAAE,WAAW,EACpB,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqB/B,OAAO,CAAC,MAAM,CAAC,YAAY;IAwB3B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAmBtC,OAAO,CAAC,MAAM,CAAC,iBAAiB;CA4BjC;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI;CAe7F;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI;IAWzE,MAAM,CAAC,gBAAgB,CACrB,SAAS,EAAE,YAAY,EACvB,cAAc,EAAE,GAAG,EACnB,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI;IAYtB,MAAM,CAAC,mBAAmB,CACxB,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,iBAAiB,EAAE,GAAG,EACtB,MAAM,EAAE,MAAM,GACb,YAAY,GAAG,IAAI;CAevB;AAED;;GAEG;AACH,qBAAa,gBAAgB;WACd,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QACjE,IAAI,EAAE,GAAG,CAAC;QACV,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,YAAY,CAAC;KACtB,CAAC;IAYF,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,IAAI;CAUzE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { TernSecureNextProps } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Root Provider for TernSecure
|
|
5
|
+
* Use this in your Next.js App Router root layout
|
|
6
|
+
* Automatically handles client/server boundary and authentication state
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* /// app/layout.tsx
|
|
10
|
+
* import { TernSecureProvider } from '@tern/secure'
|
|
11
|
+
*
|
|
12
|
+
* export default function RootLayout({ children }) {
|
|
13
|
+
* return (
|
|
14
|
+
* <html>
|
|
15
|
+
* <body>
|
|
16
|
+
* <TernSecureProvider>
|
|
17
|
+
* {children}
|
|
18
|
+
* </TernSecureProvider>
|
|
19
|
+
* </body>
|
|
20
|
+
* </html>
|
|
21
|
+
* )
|
|
22
|
+
* }
|
|
23
|
+
*/
|
|
24
|
+
export declare function TernSecureProvider(props: React.PropsWithChildren<TernSecureNextProps>): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=TernSecureProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TernSecureProvider.d.ts","sourceRoot":"","sources":["../../../../src/app-router/client/TernSecureProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAatD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,2CAQrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-route.d.ts","sourceRoot":"","sources":["../../../../src/app-router/route-handler/internal-route.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,eAAe,EACf,WAAW,EACZ,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { AuthObject } from '@tern-secure/backend';
|
|
2
|
+
import { redirect } from 'next/navigation';
|
|
3
|
+
import { type AuthProtect } from '../../server/protect';
|
|
4
|
+
import { type RedirectFun } from '../../server/redirect';
|
|
5
|
+
import type { BaseUser } from '../../server/types';
|
|
6
|
+
export interface AuthResult {
|
|
7
|
+
user: BaseUser | null;
|
|
8
|
+
error: Error | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* `Auth` object of the currently active user and the `redirectToSignIn()` method.
|
|
12
|
+
*/
|
|
13
|
+
type Auth = AuthObject & {
|
|
14
|
+
redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;
|
|
15
|
+
redirectToSignUp: RedirectFun<ReturnType<typeof redirect>>;
|
|
16
|
+
};
|
|
17
|
+
export interface AuthFn {
|
|
18
|
+
(): Promise<Auth>;
|
|
19
|
+
protect: AuthProtect;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Get the current authenticated user from the session or token
|
|
23
|
+
*/
|
|
24
|
+
export declare const auth: AuthFn;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAQvD,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAIrD,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAe,MAAM,oBAAoB,CAAC;AAGhE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,KAAK,IAAI,GAAG,UAAU,GAAG;IACvB,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;IAC3D,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,MAAM,WAAW,MAAM;IACrB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAElB,OAAO,EAAE,WAAW,CAAC;CACtB;AAyBD;;GAEG;AACH,eAAO,MAAM,IAAI,EAAE,MAwClB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { NextRequest } from 'next/server';
|
|
2
|
+
export declare const isPrerenderingBailout: (e: unknown) => boolean;
|
|
3
|
+
export declare function buildRequestLike(): Promise<NextRequest>;
|
|
4
|
+
export declare function getScriptNonceFromHeader(cspHeaderValue: string): string | undefined;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/app-router/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,eAAO,MAAM,qBAAqB,GAAI,GAAG,OAAO,YAiB/C,CAAC;AAEF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAkB7D;AAGD,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CA0CnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../../../src/boundary/components.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,GACT,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/boundary/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,OAAO,EACP,UAAU,EACb,MAAM,oBAAoB,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const constants: {
|
|
2
|
+
readonly Headers: {
|
|
3
|
+
readonly NextRewrite: "x-middleware-rewrite";
|
|
4
|
+
readonly NextResume: "x-middleware-next";
|
|
5
|
+
readonly NextRedirect: "Location";
|
|
6
|
+
readonly NextUrl: "next-url";
|
|
7
|
+
readonly NextAction: "next-action";
|
|
8
|
+
readonly NextjsData: "x-nextjs-data";
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,SAAS;;;;;;;;;CAEZ,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { SignInResponse } from "@tern-secure/types";
|
|
2
|
+
export type ErrorCode = keyof typeof ERRORS;
|
|
3
|
+
export interface AuthErrorResponse {
|
|
4
|
+
success: false;
|
|
5
|
+
message: string;
|
|
6
|
+
code: ErrorCode;
|
|
7
|
+
}
|
|
8
|
+
export declare const ERRORS: {
|
|
9
|
+
readonly SERVER_SIDE_INITIALIZATION: "TernSecure must be initialized on the client side";
|
|
10
|
+
readonly REQUIRES_VERIFICATION: "AUTH_REQUIRES_VERIFICATION";
|
|
11
|
+
readonly AUTHENTICATED: "AUTHENTICATED";
|
|
12
|
+
readonly UNAUTHENTICATED: "UNAUTHENTICATED";
|
|
13
|
+
readonly UNVERIFIED: "UNVERIFIED";
|
|
14
|
+
readonly NOT_INITIALIZED: "TernSecure services are not initialized. Call initializeTernSecure() first";
|
|
15
|
+
readonly HOOK_CONTEXT: "Hook must be used within TernSecureProvider";
|
|
16
|
+
readonly EMAIL_NOT_VERIFIED: "EMAIL_NOT_VERIFIED";
|
|
17
|
+
readonly INVALID_CREDENTIALS: "INVALID_CREDENTIALS";
|
|
18
|
+
readonly USER_DISABLED: "USER_DISABLED";
|
|
19
|
+
readonly TOO_MANY_ATTEMPTS: "TOO_MANY_ATTEMPTS";
|
|
20
|
+
readonly NETWORK_ERROR: "NETWORK_ERROR";
|
|
21
|
+
readonly INVALID_EMAIL: "INVALID_EMAIL";
|
|
22
|
+
readonly WEAK_PASSWORD: "WEAK_PASSWORD";
|
|
23
|
+
readonly EMAIL_EXISTS: "EMAIL_EXISTS";
|
|
24
|
+
readonly POPUP_BLOCKED: "POPUP_BLOCKED";
|
|
25
|
+
readonly OPERATION_NOT_ALLOWED: "OPERATION_NOT_ALLOWED";
|
|
26
|
+
readonly EXPIRED_TOKEN: "EXPIRED_TOKEN";
|
|
27
|
+
readonly INVALID_TOKEN: "INVALID_TOKEN";
|
|
28
|
+
readonly SESSION_EXPIRED: "SESSION_EXPIRED";
|
|
29
|
+
readonly INTERNAL_ERROR: "INTERNAL_ERROR";
|
|
30
|
+
};
|
|
31
|
+
export declare class TernSecureError extends Error {
|
|
32
|
+
code: ErrorCode;
|
|
33
|
+
constructor(code: ErrorCode, message?: string);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Handles Firebase authentication errors with multiple fallback mechanisms
|
|
37
|
+
*/
|
|
38
|
+
export declare function handleFirebaseAuthError(error: unknown): AuthErrorResponse;
|
|
39
|
+
/**
|
|
40
|
+
* Type guard to check if a response is an AuthErrorResponse
|
|
41
|
+
*/
|
|
42
|
+
export declare function isAuthErrorResponse(response: unknown): response is AuthErrorResponse;
|
|
43
|
+
export declare function getErrorAlertVariant(error: SignInResponse | undefined): "destructive" | "default";
|
|
44
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,MAAM,CAAA;AAE3C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;CAsBT,CAAA;AAmBV,qBAAa,eAAgB,SAAQ,KAAK;IACxC,IAAI,EAAE,SAAS,CAAA;gBAEH,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM;CAK9C;AAiJD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAwFzE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,iBAAiB,CASpF;AAID,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,6BAsBrE"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { TernSecureProvider } from './app-router/client/TernSecureProvider';
|
|
2
|
+
export { useAuth, useIdToken, useSession, useSignIn, signIn } from './boundary/components';
|
|
3
|
+
export type { TernSecureUser, TernSecureUserData, SignInResponseTree } from '@tern-secure/types';
|
|
4
|
+
export type { UserInfo, SessionResult } from './types';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAC3E,OAAO,EACH,OAAO,EACP,UAAU,EACV,UAAU,EACV,SAAS,EACT,MAAM,EAKT,MAAM,uBAAuB,CAAA;AAE9B,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEhG,YAAY,EACR,QAAQ,EACR,aAAa,EAChB,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/server/constant.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,oBAAiC,CAAA;AACrD,eAAO,MAAM,WAAW,QAA6C,CAAC;AACtE,eAAO,MAAM,WAAW,QAA4C,CAAC;AACrE,eAAO,MAAM,WAAW,QAA4C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../src/server/crypto.ts"],"names":[],"mappings":"AAGA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI5C;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { User } from "./types";
|
|
2
|
+
interface RequestContext {
|
|
3
|
+
user: UserVerificationRequirement;
|
|
4
|
+
sessionId: string;
|
|
5
|
+
}
|
|
6
|
+
declare global {
|
|
7
|
+
var __ternSecure: {
|
|
8
|
+
context: RequestContext | null;
|
|
9
|
+
sessions: Map<string, User>;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export declare class ContextStore {
|
|
13
|
+
static setContext(context: RequestContext): void;
|
|
14
|
+
static getContext(): RequestContext | null;
|
|
15
|
+
static setSession(sessionId: string, user: User): void;
|
|
16
|
+
static getSession(sessionId: string): User | null;
|
|
17
|
+
static debug(): {
|
|
18
|
+
sessionsCount: number;
|
|
19
|
+
currentSessionId: string | null;
|
|
20
|
+
sessions: [string, User][];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=ctx-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ctx-store.d.ts","sourceRoot":"","sources":["../../../src/server/ctx-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,UAAU,cAAc;IACtB,IAAI,EAAE,2BAA2B,CAAA;IACjC,SAAS,EAAE,MAAM,CAAA;CAClB;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,YAAY,EAAE;QAChB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;QAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;KAC5B,CAAA;CACF;AAWD,qBAAa,YAAY;IACvB,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc;IAMzC,MAAM,CAAC,UAAU,IAAI,cAAc,GAAG,IAAI;IAM1C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAM/C,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAMjD,MAAM,CAAC,KAAK;;;;;CAOb"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NextRequest } from "next/server";
|
|
2
|
+
import type { BaseUser, SessionResult } from "./types";
|
|
3
|
+
export declare function verifySession(request: NextRequest): Promise<SessionResult>;
|
|
4
|
+
/**
|
|
5
|
+
* Edge-compatible token verification using Firebase Auth REST API
|
|
6
|
+
*/
|
|
7
|
+
export declare function verifyTokenEdge(idToken: string): Promise<BaseUser | null>;
|
|
8
|
+
/**
|
|
9
|
+
* Edge-compatible session cookie verification
|
|
10
|
+
*/
|
|
11
|
+
export declare function verifySessionEdge(sessionCookie: string): Promise<BaseUser | null>;
|
|
12
|
+
/**
|
|
13
|
+
* Edge-compatible session verification using Firebase Auth REST API
|
|
14
|
+
*/
|
|
15
|
+
export declare function VerifySessionWithRestApi(request: NextRequest): Promise<SessionResult>;
|
|
16
|
+
//# sourceMappingURL=edge-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-session.d.ts","sourceRoot":"","sources":["../../../src/server/edge-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,QAAQ,EAAC,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAgCxB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA+B1B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CA+B1B;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAmDxB"}
|