@cabin-id/nextjs 0.1.6 → 0.2.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/dist/cjs/api/{getUserInfo.js → endpoints/AbstractApi.js} +14 -18
- package/dist/cjs/api/endpoints/AbstractApi.js.map +1 -0
- package/dist/cjs/api/endpoints/UserApi.js +40 -0
- package/dist/cjs/api/endpoints/UserApi.js.map +1 -0
- package/dist/cjs/api/endpoints/index.js +32 -0
- package/dist/cjs/api/endpoints/index.js.map +1 -0
- package/dist/cjs/api/factory.js +60 -0
- package/dist/cjs/api/factory.js.map +1 -0
- package/dist/cjs/api/request.js +97 -0
- package/dist/cjs/api/request.js.map +1 -0
- package/dist/cjs/component.client.js +2 -2
- package/dist/cjs/component.client.js.map +1 -1
- package/dist/cjs/component.server.js +5 -2
- package/dist/cjs/component.server.js.map +1 -1
- package/dist/cjs/components/SignInButton.js +15 -6
- package/dist/cjs/components/SignInButton.js.map +1 -1
- package/dist/cjs/constants.js +20 -19
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/hooks/createContextAndHook.js +62 -0
- package/dist/cjs/hooks/createContextAndHook.js.map +1 -0
- package/dist/cjs/hooks/useSafeLayoutEffect.js +40 -0
- package/dist/cjs/hooks/useSafeLayoutEffect.js.map +1 -0
- package/dist/cjs/hooks/useUser.js +9 -16
- package/dist/cjs/hooks/useUser.js.map +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/provider/context.js +62 -0
- package/dist/cjs/provider/context.js.map +1 -0
- package/dist/cjs/provider/core.provider.js +49 -0
- package/dist/cjs/provider/core.provider.js.map +1 -0
- package/dist/cjs/{client/provider.js → provider/main.provider.js} +9 -20
- package/dist/cjs/provider/main.provider.js.map +1 -0
- package/dist/cjs/server/auth.js +31 -7
- package/dist/cjs/server/auth.js.map +1 -1
- package/dist/cjs/{client/request.js → server/client.js} +12 -20
- package/dist/cjs/server/client.js.map +1 -0
- package/dist/cjs/server/createGetAuth.js +45 -0
- package/dist/cjs/server/createGetAuth.js.map +1 -0
- package/dist/cjs/server/createRedirect.js +36 -35
- package/dist/cjs/server/createRedirect.js.map +1 -1
- package/dist/cjs/server/errors.js +110 -0
- package/dist/cjs/server/errors.js.map +1 -0
- package/dist/cjs/server/getCurrentUser.js +3 -10
- package/dist/cjs/server/getCurrentUser.js.map +1 -1
- package/dist/cjs/server/index.js +32 -0
- package/dist/cjs/server/index.js.map +1 -0
- package/dist/cjs/server/middleware.js +122 -102
- package/dist/cjs/server/middleware.js.map +1 -1
- package/dist/cjs/server/protect.js +69 -0
- package/dist/cjs/server/protect.js.map +1 -0
- package/dist/cjs/server/routeMatcher.js +1 -0
- package/dist/cjs/server/routeMatcher.js.map +1 -1
- package/dist/cjs/server/serverRedirectWithAuth.js +2 -2
- package/dist/cjs/server/serverRedirectWithAuth.js.map +1 -1
- package/dist/cjs/server/type.js.map +1 -1
- package/dist/cjs/server/utils.js +58 -0
- package/dist/cjs/server/utils.js.map +1 -1
- package/dist/cjs/styles/global.css +30 -2
- package/dist/cjs/styles/global.css.map +1 -1
- package/dist/cjs/tokens/authObjects.js +45 -0
- package/dist/cjs/tokens/authObjects.js.map +1 -0
- package/dist/cjs/tokens/authStatus.js +86 -0
- package/dist/cjs/tokens/authStatus.js.map +1 -0
- package/dist/cjs/tokens/authenticateContext.js +69 -0
- package/dist/cjs/tokens/authenticateContext.js.map +1 -0
- package/dist/cjs/tokens/cabinIdRequest.js +79 -0
- package/dist/cjs/tokens/cabinIdRequest.js.map +1 -0
- package/dist/cjs/tokens/cabinIdUrl.js +36 -0
- package/dist/cjs/tokens/cabinIdUrl.js.map +1 -0
- package/dist/cjs/tokens/request.js +58 -0
- package/dist/cjs/tokens/request.js.map +1 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/createCabinIdClient.js +38 -0
- package/dist/cjs/utils/createCabinIdClient.js.map +1 -0
- package/dist/cjs/utils/http.js +31 -0
- package/dist/cjs/utils/http.js.map +1 -0
- package/dist/cjs/utils/initial.js +51 -0
- package/dist/cjs/utils/initial.js.map +1 -0
- package/dist/cjs/utils.js +10 -0
- package/dist/cjs/utils.js.map +1 -1
- package/dist/esm/api/endpoints/AbstractApi.js +14 -0
- package/dist/esm/api/endpoints/AbstractApi.js.map +1 -0
- package/dist/esm/api/endpoints/UserApi.js +16 -0
- package/dist/esm/api/endpoints/UserApi.js.map +1 -0
- package/dist/esm/api/endpoints/index.js +7 -0
- package/dist/esm/api/endpoints/index.js.map +1 -0
- package/dist/esm/api/factory.js +35 -0
- package/dist/esm/api/factory.js.map +1 -0
- package/dist/esm/api/request.js +63 -0
- package/dist/esm/api/request.js.map +1 -0
- package/dist/esm/component.client.js +1 -1
- package/dist/esm/component.client.js.map +1 -1
- package/dist/esm/component.server.js +3 -1
- package/dist/esm/component.server.js.map +1 -1
- package/dist/esm/components/SignInButton.js +17 -8
- package/dist/esm/components/SignInButton.js.map +1 -1
- package/dist/esm/constants.js +16 -15
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/hooks/createContextAndHook.js +27 -0
- package/dist/esm/hooks/createContextAndHook.js.map +1 -0
- package/dist/esm/hooks/useSafeLayoutEffect.js +6 -0
- package/dist/esm/hooks/useSafeLayoutEffect.js.map +1 -0
- package/dist/esm/hooks/useUser.js +12 -6
- package/dist/esm/hooks/useUser.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/provider/context.js +24 -0
- package/dist/esm/provider/context.js.map +1 -0
- package/dist/esm/provider/core.provider.js +15 -0
- package/dist/esm/provider/core.provider.js.map +1 -0
- package/dist/esm/provider/main.provider.js +11 -0
- package/dist/esm/provider/main.provider.js.map +1 -0
- package/dist/esm/server/auth.js +32 -8
- package/dist/esm/server/auth.js.map +1 -1
- package/dist/esm/server/client.js +11 -0
- package/dist/esm/server/client.js.map +1 -0
- package/dist/esm/server/createGetAuth.js +23 -0
- package/dist/esm/server/createGetAuth.js.map +1 -0
- package/dist/esm/server/createRedirect.js +36 -35
- package/dist/esm/server/createRedirect.js.map +1 -1
- package/dist/esm/server/errors.js +78 -0
- package/dist/esm/server/errors.js.map +1 -0
- package/dist/esm/server/getCurrentUser.js +3 -10
- package/dist/esm/server/getCurrentUser.js.map +1 -1
- package/dist/esm/server/index.js +7 -0
- package/dist/esm/server/index.js.map +1 -0
- package/dist/esm/server/middleware.js +125 -106
- package/dist/esm/server/middleware.js.map +1 -1
- package/dist/esm/server/protect.js +45 -0
- package/dist/esm/server/protect.js.map +1 -0
- package/dist/esm/server/routeMatcher.js +1 -0
- package/dist/esm/server/routeMatcher.js.map +1 -1
- package/dist/esm/server/serverRedirectWithAuth.js +2 -2
- package/dist/esm/server/serverRedirectWithAuth.js.map +1 -1
- package/dist/esm/server/utils.js +54 -1
- package/dist/esm/server/utils.js.map +1 -1
- package/dist/esm/styles/global.css +30 -2
- package/dist/esm/styles/global.css.map +1 -1
- package/dist/esm/tokens/authObjects.js +20 -0
- package/dist/esm/tokens/authObjects.js.map +1 -0
- package/dist/esm/tokens/authStatus.js +59 -0
- package/dist/esm/tokens/authStatus.js.map +1 -0
- package/dist/esm/tokens/authenticateContext.js +45 -0
- package/dist/esm/tokens/authenticateContext.js.map +1 -0
- package/dist/esm/tokens/cabinIdRequest.js +55 -0
- package/dist/esm/tokens/cabinIdRequest.js.map +1 -0
- package/dist/esm/tokens/cabinIdUrl.js +12 -0
- package/dist/esm/tokens/cabinIdUrl.js.map +1 -0
- package/dist/esm/tokens/request.js +34 -0
- package/dist/esm/tokens/request.js.map +1 -0
- package/dist/esm/utils/createCabinIdClient.js +17 -0
- package/dist/esm/utils/createCabinIdClient.js.map +1 -0
- package/dist/esm/utils/http.js +7 -0
- package/dist/esm/utils/http.js.map +1 -0
- package/dist/esm/utils/initial.js +26 -0
- package/dist/esm/utils/initial.js.map +1 -0
- package/dist/esm/utils.js +9 -0
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/api/endpoints/AbstractApi.d.ts +7 -0
- package/dist/types/api/endpoints/AbstractApi.d.ts.map +1 -0
- package/dist/types/api/endpoints/UserApi.d.ts +6 -0
- package/dist/types/api/endpoints/UserApi.d.ts.map +1 -0
- package/dist/types/api/endpoints/index.d.ts +3 -0
- package/dist/types/api/endpoints/index.d.ts.map +1 -0
- package/dist/types/api/factory.d.ts +35 -0
- package/dist/types/api/factory.d.ts.map +1 -0
- package/dist/types/api/request.d.ts +33 -0
- package/dist/types/api/request.d.ts.map +1 -0
- package/dist/types/component.client.d.ts +1 -1
- package/dist/types/component.client.d.ts.map +1 -1
- package/dist/types/component.server.d.ts +1 -0
- package/dist/types/component.server.d.ts.map +1 -1
- package/dist/types/components/SignInButton.d.ts.map +1 -1
- package/dist/types/constants.d.ts +11 -10
- package/dist/types/constants.d.ts.map +1 -1
- package/dist/types/hooks/createContextAndHook.d.ts +18 -0
- package/dist/types/hooks/createContextAndHook.d.ts.map +1 -0
- package/dist/types/hooks/useSafeLayoutEffect.d.ts +3 -0
- package/dist/types/hooks/useSafeLayoutEffect.d.ts.map +1 -0
- package/dist/types/hooks/useUser.d.ts +16 -1
- package/dist/types/hooks/useUser.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/provider/context.d.ts +15 -0
- package/dist/types/provider/context.d.ts.map +1 -0
- package/dist/types/provider/core.provider.d.ts +6 -0
- package/dist/types/provider/core.provider.d.ts.map +1 -0
- package/dist/types/provider/main.provider.d.ts +5 -0
- package/dist/types/provider/main.provider.d.ts.map +1 -0
- package/dist/types/server/auth.d.ts +10 -3
- package/dist/types/server/auth.d.ts.map +1 -1
- package/dist/types/server/client.d.ts +3 -0
- package/dist/types/server/client.d.ts.map +1 -0
- package/dist/types/server/createGetAuth.d.ts +5 -0
- package/dist/types/server/createGetAuth.d.ts.map +1 -0
- package/dist/types/server/createRedirect.d.ts.map +1 -1
- package/dist/types/server/errors.d.ts +10 -0
- package/dist/types/server/errors.d.ts.map +1 -0
- package/dist/types/server/getCurrentUser.d.ts.map +1 -1
- package/dist/types/server/index.d.ts +3 -0
- package/dist/types/server/index.d.ts.map +1 -0
- package/dist/types/server/middleware.d.ts +22 -77
- package/dist/types/server/middleware.d.ts.map +1 -1
- package/dist/types/server/protect.d.ts +34 -0
- package/dist/types/server/protect.d.ts.map +1 -0
- package/dist/types/server/routeMatcher.d.ts +4 -4
- package/dist/types/server/serverRedirectWithAuth.d.ts +2 -1
- package/dist/types/server/serverRedirectWithAuth.d.ts.map +1 -1
- package/dist/types/server/type.d.ts +10 -1
- package/dist/types/server/type.d.ts.map +1 -1
- package/dist/types/server/utils.d.ts +10 -3
- package/dist/types/server/utils.d.ts.map +1 -1
- package/dist/types/tokens/authObjects.d.ts +37 -0
- package/dist/types/tokens/authObjects.d.ts.map +1 -0
- package/dist/types/tokens/authStatus.d.ts +51 -0
- package/dist/types/tokens/authStatus.d.ts.map +1 -0
- package/dist/types/tokens/authenticateContext.d.ts +40 -0
- package/dist/types/tokens/authenticateContext.d.ts.map +1 -0
- package/dist/types/tokens/cabinIdRequest.d.ts +24 -0
- package/dist/types/tokens/cabinIdRequest.d.ts.map +1 -0
- package/dist/types/tokens/cabinIdUrl.d.ts +18 -0
- package/dist/types/tokens/cabinIdUrl.d.ts.map +1 -0
- package/dist/types/tokens/request.d.ts +4 -0
- package/dist/types/tokens/request.d.ts.map +1 -0
- package/dist/types/types.d.ts +1 -3
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/createCabinIdClient.d.ts +5 -0
- package/dist/types/utils/createCabinIdClient.d.ts.map +1 -0
- package/dist/types/utils/http.d.ts +4 -0
- package/dist/types/utils/http.d.ts.map +1 -0
- package/dist/types/utils/initial.d.ts +8 -0
- package/dist/types/utils/initial.d.ts.map +1 -0
- package/dist/types/utils.d.ts +1 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +6 -2
- package/server/package.json +5 -0
- package/dist/cjs/api/getUserInfo.js.map +0 -1
- package/dist/cjs/client/provider.js.map +0 -1
- package/dist/cjs/client/request.js.map +0 -1
- package/dist/esm/api/getUserInfo.js +0 -18
- package/dist/esm/api/getUserInfo.js.map +0 -1
- package/dist/esm/client/provider.js +0 -21
- package/dist/esm/client/provider.js.map +0 -1
- package/dist/esm/client/request.js +0 -19
- package/dist/esm/client/request.js.map +0 -1
- package/dist/types/api/getUserInfo.d.ts +0 -2
- package/dist/types/api/getUserInfo.d.ts.map +0 -1
- package/dist/types/client/provider.d.ts +0 -7
- package/dist/types/client/provider.d.ts.map +0 -1
- package/dist/types/client/request.d.ts +0 -3
- package/dist/types/client/request.d.ts.map +0 -1
|
@@ -2,10 +2,10 @@ export declare const API_URL = "https://api.cabinid.dev/";
|
|
|
2
2
|
export declare const API_VERSION = "v1";
|
|
3
3
|
export declare const PUBLISHABLE_KEY: string;
|
|
4
4
|
export declare const SECRET_KEY: string;
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
export declare const
|
|
5
|
+
export declare const SIGN_IN_URL: string;
|
|
6
|
+
export declare const SIGN_UP_URL: string;
|
|
7
|
+
export declare const AFTER_SIGN_IN_URL: string;
|
|
8
|
+
export declare const AFTER_SIGN_UP_URL: string;
|
|
9
9
|
export declare const baseApiUrl: string;
|
|
10
10
|
export declare const frontendApi: string | null;
|
|
11
11
|
/**
|
|
@@ -13,12 +13,12 @@ export declare const frontendApi: string | null;
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const constants: {
|
|
15
15
|
readonly Attributes: {
|
|
16
|
-
readonly AuthToken: "
|
|
17
|
-
readonly AuthSignature: "
|
|
18
|
-
readonly AuthStatus: "
|
|
19
|
-
readonly AuthReason: "
|
|
20
|
-
readonly AuthMessage: "
|
|
21
|
-
readonly
|
|
16
|
+
readonly AuthToken: "__cabinIdAuthToken";
|
|
17
|
+
readonly AuthSignature: "__cabinIdAuthSignature";
|
|
18
|
+
readonly AuthStatus: "__cabinIdAuthStatus";
|
|
19
|
+
readonly AuthReason: "__cabinIdAuthReason";
|
|
20
|
+
readonly AuthMessage: "__cabinIdAuthMessage";
|
|
21
|
+
readonly CabinIdUrl: "__cabinIdUrl";
|
|
22
22
|
};
|
|
23
23
|
readonly Cookies: {
|
|
24
24
|
readonly Session: "__session";
|
|
@@ -54,6 +54,7 @@ export declare const constants: {
|
|
|
54
54
|
readonly QueryParams: {
|
|
55
55
|
readonly UserId: "user_id";
|
|
56
56
|
readonly Token: "token";
|
|
57
|
+
readonly CabinIdRedirectUrl: "__cabin_id_redirect_url";
|
|
57
58
|
};
|
|
58
59
|
readonly NextHeaders: {
|
|
59
60
|
readonly NextRewrite: "x-middleware-rewrite";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,6BAA6B,CAAC;AAElD,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,eAAe,QACyB,CAAC;AACtD,eAAO,MAAM,UAAU,QAAyC,CAAC;AACjE,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,OAAO,6BAA6B,CAAC;AAElD,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,eAAe,QACyB,CAAC;AACtD,eAAO,MAAM,UAAU,QAAyC,CAAC;AACjE,eAAO,MAAM,WAAW,QAC6B,CAAC;AACtD,eAAO,MAAM,WAAW,QAC6B,CAAC;AACtD,eAAO,MAAM,iBAAiB,QAC4B,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAC4B,CAAC;AAE3D,eAAO,MAAM,UAAU,QAAkC,CAAC;AAC1D,eAAO,MAAM,WAAW,eAAuC,CAAC;AA8DhE;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare function assertContextExists(contextVal: unknown, msgOrCtx: string | React.Context<any>): asserts contextVal;
|
|
3
|
+
type Options = {
|
|
4
|
+
assertCtxFn?: (v: unknown, msg: string) => void;
|
|
5
|
+
};
|
|
6
|
+
type ContextOf<T> = React.Context<{
|
|
7
|
+
value: T;
|
|
8
|
+
} | undefined>;
|
|
9
|
+
type UseCtxFn<T> = () => T;
|
|
10
|
+
/**
|
|
11
|
+
* Creates and returns a Context and two hooks that return the context value.
|
|
12
|
+
* The Context type is derived from the type passed in by the user.
|
|
13
|
+
* The first hook returned guarantees that the context exists so the returned value is always CtxValue
|
|
14
|
+
* The second hook makes no guarantees, so the returned value can be CtxValue | undefined
|
|
15
|
+
*/
|
|
16
|
+
export declare const createContextAndHook: <CtxVal>(displayName: string, options?: Options) => [ContextOf<CtxVal>, UseCtxFn<CtxVal>, UseCtxFn<CtxVal | Partial<CtxVal>>];
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=createContextAndHook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createContextAndHook.d.ts","sourceRoot":"","sources":["../../../src/hooks/createContextAndHook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAIlH;AAED,KAAK,OAAO,GAAG;IAAE,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,CAAC;AACnE,KAAK,SAAS,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,SAAS,CAAC,CAAC;AAC5D,KAAK,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,wBAClB,MAAM,YACT,OAAO,KAChB,CAAC,UAAU,MAAM,CAAC,EAAE,SAAS,MAAM,CAAC,EAAE,SAAS,MAAM,GAAG,QAAQ,MAAM,CAAC,CAAC,CAiB1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeLayoutEffect.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSafeLayoutEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,eAAO,MAAM,mBAAmB,wBAA0E,CAAC"}
|
|
@@ -1,2 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import { User } from '../types';
|
|
2
|
+
type UseUserReturn = {
|
|
3
|
+
isLoaded: false;
|
|
4
|
+
isSignedIn: undefined;
|
|
5
|
+
user: undefined;
|
|
6
|
+
} | {
|
|
7
|
+
isLoaded: true;
|
|
8
|
+
isSignedIn: false;
|
|
9
|
+
user: null;
|
|
10
|
+
} | {
|
|
11
|
+
isLoaded: true;
|
|
12
|
+
isSignedIn: true;
|
|
13
|
+
user: User;
|
|
14
|
+
};
|
|
15
|
+
export declare const useUser: () => UseUserReturn;
|
|
16
|
+
export {};
|
|
2
17
|
//# sourceMappingURL=useUser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useUser.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,KAAK,aAAa,GACd;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,GAC3D;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,GACjD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC;AAErD,eAAO,MAAM,OAAO,QAAO,aAc1B,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import './styles/global.css';
|
|
2
2
|
export { auth } from './server/auth';
|
|
3
3
|
export { currentUser } from './server/getCurrentUser';
|
|
4
|
-
export { CabinIDProvider } from './
|
|
4
|
+
export { CabinIDProvider } from './provider/main.provider';
|
|
5
5
|
export { useUser } from './hooks';
|
|
6
6
|
export { authMiddleware } from './server/middleware';
|
|
7
7
|
export { SignInButton } from './components';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { User } from '../types';
|
|
3
|
+
export type LoadedCabinId = {
|
|
4
|
+
user: User | null;
|
|
5
|
+
userId: string | null;
|
|
6
|
+
};
|
|
7
|
+
declare const CabinIdInstanceContext: React.Context<{
|
|
8
|
+
value: LoadedCabinId;
|
|
9
|
+
} | undefined>, useCabinIDInstanceContext: () => LoadedCabinId;
|
|
10
|
+
declare const UserContext: React.Context<{
|
|
11
|
+
value: User | null | undefined;
|
|
12
|
+
} | undefined>, useUserContext: () => User | null | undefined;
|
|
13
|
+
declare function useAssertWrappedByCabinIdProvider(displayNameOrFn: string | (() => void)): void;
|
|
14
|
+
export { CabinIdInstanceContext, UserContext, useCabinIDInstanceContext, useUserContext, useAssertWrappedByCabinIdProvider, };
|
|
15
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/provider/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,QAAA,MAAO,sBAAsB;;gBAAE,yBAAyB,qBACO,CAAC;AAChE,QAAA,MAAO,WAAW;;gBAAE,cAAc,+BAElB,CAAC;AAEjB,iBAAS,iCAAiC,CACxC,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,GACrC,IAAI,CAaN;AAED,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,yBAAyB,EACzB,cAAc,EACd,iCAAiC,GAClC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { PropsWithChildren } from 'react';
|
|
3
|
+
import { LoadedCabinId } from './context';
|
|
4
|
+
declare const CabinIDCoreProvider: ({ children, ...rest }: PropsWithChildren<LoadedCabinId>) => React.JSX.Element;
|
|
5
|
+
export { CabinIDCoreProvider };
|
|
6
|
+
//# sourceMappingURL=core.provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.provider.d.ts","sourceRoot":"","sources":["../../../src/provider/core.provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAA0B,aAAa,EAAe,MAAM,WAAW,CAAC;AAE/E,QAAA,MAAM,mBAAmB,0BAGtB,kBAAkB,aAAa,CAAC,sBAUlC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.provider.d.ts","sourceRoot":"","sources":["../../../src/provider/main.provider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,QAAA,MAAM,eAAe,iBAAwB,kBAAkB,GAAG,CAAC,+BAGlE,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
}
|
|
1
|
+
import { redirect } from 'next/navigation';
|
|
2
|
+
import { AuthObject } from '../tokens/authObjects';
|
|
3
|
+
import { RedirectFun } from './createRedirect';
|
|
4
|
+
import { AuthProtect } from './protect';
|
|
5
|
+
type Auth = AuthObject & {
|
|
6
|
+
protect: AuthProtect;
|
|
7
|
+
redirectToSignIn: RedirectFun<ReturnType<typeof redirect>>;
|
|
8
|
+
};
|
|
9
|
+
export declare const auth: () => Auth;
|
|
10
|
+
export {};
|
|
4
11
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/server/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AAMvD,KAAK,IAAI,GAAG,UAAU,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC;CAC5D,CAAC;AAEF,eAAO,MAAM,IAAI,QAAO,IAgCvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/server/client.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,aAAa,sDAIjB,CAAC;AAEH,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AuthObject } from '../tokens/authObjects';
|
|
2
|
+
import { RequestLike } from './type';
|
|
3
|
+
export declare const createGetAuth: () => (req: RequestLike) => AuthObject;
|
|
4
|
+
export declare const getAuth: (req: RequestLike) => AuthObject;
|
|
5
|
+
//# sourceMappingURL=createGetAuth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createGetAuth.d.ts","sourceRoot":"","sources":["../../../src/server/createGetAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAGX,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,eAAO,MAAM,aAAa,cAElB,WAAW,KAAG,UAWnB,CAAC;AAEJ,eAAO,MAAM,OAAO,QAbZ,WAAW,KAAG,UAagB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createRedirect.d.ts","sourceRoot":"","sources":["../../../src/server/createRedirect.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC;AACvE,KAAK,gBAAgB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,WAAW,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,KAAK,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"createRedirect.d.ts","sourceRoot":"","sources":["../../../src/server/createRedirect.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,CAAC,cAAc,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,cAAc,CAAC;AACvE,KAAK,gBAAgB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,WAAW,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,KAAK,UAAU,CAAC;AAuChF;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,EAAE,GAAG,GAAG,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC;CAC1B,KAAK;IACJ,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;CAC3C,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cA0C5B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const missingDomainAndProxy = "\nMissing domain and proxyUrl. A satellite application needs to specify a domain or a proxyUrl.\n\n1) With middleware\n e.g. export default clerkMiddleware({domain:'YOUR_DOMAIN',isSatellite:true}); // or the deprecated authMiddleware()\n2) With environment variables e.g.\n NEXT_PUBLIC_CLERK_DOMAIN='YOUR_DOMAIN'\n NEXT_PUBLIC_CLERK_IS_SATELLITE='true'\n ";
|
|
2
|
+
export declare const missingSignInUrlInDev = "\nInvalid signInUrl. A satellite application requires a signInUrl for development instances.\nCheck if signInUrl is missing from your configuration or if it is not an absolute URL\n\n1) With middleware\n e.g. export default clerkMiddleware({signInUrl:'SOME_URL', isSatellite:true}); // or the deprecated authMiddleware()\n2) With environment variables e.g.\n NEXT_PUBLIC_CLERK_SIGN_IN_URL='SOME_URL'\n NEXT_PUBLIC_CLERK_IS_SATELLITE='true'";
|
|
3
|
+
export declare const receivedRequestForIgnoredRoute: (url: string, matcher: string) => string;
|
|
4
|
+
export declare const getAuthAuthHeaderMissing: () => string;
|
|
5
|
+
export declare const authAuthHeaderMissing: (helperName?: string) => string;
|
|
6
|
+
export declare const clockSkewDetected: (verifyMessage: string) => string;
|
|
7
|
+
export declare const infiniteRedirectLoopDetected: () => string;
|
|
8
|
+
export declare const informAboutProtectedRouteInfo: (path: string, hasPublicRoutes: boolean, hasIgnoredRoutes: boolean, isApiRoute: boolean, defaultIgnoredRoutes: string[]) => string;
|
|
9
|
+
export declare const authSignatureInvalid = "Clerk: Unable to verify request, this usually means the Clerk middleware did not run. Ensure Clerk's middleware is properly integrated and matches the current route. For more information, see: https://clerk.com/docs/nextjs/middleware. (code=auth_signature_invalid)";
|
|
10
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/server/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,gXAQ9B,CAAC;AAEL,eAAO,MAAM,qBAAqB,kcAQO,CAAC;AAE1C,eAAO,MAAM,8BAA8B,QAAS,MAAM,WAAW,MAAM,WAQ1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,cAAyC,CAAC;AAE/E,eAAO,MAAM,qBAAqB,iCAKjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,kBAAmB,MAAM,WAOtC,CAAC;AAElB,eAAO,MAAM,4BAA4B,cAYxC,CAAC;AAEF,eAAO,MAAM,6BAA6B,SAClC,MAAM,mBACK,OAAO,oBACN,OAAO,cACb,OAAO,wBACG,MAAM,EAAE,WA6B/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,6QAA6Q,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCurrentUser.d.ts","sourceRoot":"","sources":["../../../src/server/getCurrentUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"getCurrentUser.d.ts","sourceRoot":"","sources":["../../../src/server/getCurrentUser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAIhC,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAIxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,88 +1,33 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export type AuthenticateRequestOptions = {
|
|
11
|
-
publishableKey?: string;
|
|
12
|
-
secretKey?: string;
|
|
13
|
-
domain?: string;
|
|
14
|
-
isSatellite?: boolean;
|
|
15
|
-
proxyUrl?: string;
|
|
16
|
-
signInUrl?: string;
|
|
17
|
-
signUpUrl?: string;
|
|
18
|
-
afterSignInUrl?: string;
|
|
19
|
-
afterSignUpUrl?: string;
|
|
1
|
+
import { NextMiddleware } from 'next/server';
|
|
2
|
+
import { NextMiddlewareEvtParam, NextMiddlewareRequestParam, NextMiddlewareReturn } from './type';
|
|
3
|
+
import { AuthProtect } from './protect';
|
|
4
|
+
import { RedirectFun } from './createRedirect';
|
|
5
|
+
import { AuthObject } from '../tokens/authObjects';
|
|
6
|
+
import { AuthenticateRequestOptions } from '../api/factory';
|
|
7
|
+
export type CabinIdMiddlewareAuthObject = AuthObject & {
|
|
8
|
+
protect: AuthProtect;
|
|
9
|
+
redirectToSignIn: RedirectFun<Response>;
|
|
20
10
|
};
|
|
21
|
-
type
|
|
22
|
-
|
|
23
|
-
* A function that is called before the authentication middleware is executed.
|
|
24
|
-
* If a redirect response is returned, the middleware will respect it and redirect the user.
|
|
25
|
-
* If false is returned, the auth middleware will not execute and the request will be handled as if the auth middleware was not present.
|
|
26
|
-
*/
|
|
27
|
-
beforeAuth?: BeforeAuthHandler;
|
|
28
|
-
/**
|
|
29
|
-
* A function that is called after the authentication middleware is executed.
|
|
30
|
-
* This function has access to the auth object and can be used to execute logic based on the auth state.
|
|
31
|
-
*/
|
|
32
|
-
afterAuth?: AfterAuthHandler;
|
|
11
|
+
export type CabinIdMiddlewareAuth = () => CabinIdMiddlewareAuthObject;
|
|
12
|
+
export interface AuthMiddleware {
|
|
33
13
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* Path patterns and regular expressions are supported, for example: `['/foo', '/bar(.*)'] or `[/^\/foo\/.*$/]`
|
|
37
|
-
* The sign in and sign up URLs are included by default, unless a function is provided.
|
|
38
|
-
* For more information, see: https://clerk.com/docs
|
|
14
|
+
* @example
|
|
15
|
+
* export default clerkMiddleware((auth, request, event) => { ... }, options);
|
|
39
16
|
*/
|
|
40
|
-
|
|
17
|
+
(handler: CabinIdMiddlewareHandler, options?: CabinIdMiddlewareOptions): NextMiddleware;
|
|
41
18
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* For improved performance, these routes should be skipped using the default config.matcher instead.
|
|
19
|
+
* @example
|
|
20
|
+
* export default clerkMiddleware(options);
|
|
45
21
|
*/
|
|
46
|
-
|
|
22
|
+
(options?: CabinIdMiddlewareOptions): NextMiddleware;
|
|
47
23
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* If omitted, the following heuristics will be used to determine an API endpoint:
|
|
52
|
-
* - The route path is ['/api/(.*)', '/trpc/(.*)'],
|
|
53
|
-
* - or the request has `Content-Type` set to `application/json`,
|
|
54
|
-
* - or the request method is not one of: `GET`, `OPTIONS` ,` HEAD`
|
|
55
|
-
*
|
|
56
|
-
* @default undefined
|
|
24
|
+
* @example
|
|
25
|
+
* export default clerkMiddleware;
|
|
57
26
|
*/
|
|
58
|
-
|
|
59
|
-
};
|
|
60
|
-
export interface AuthMiddleware {
|
|
61
|
-
(params?: AuthMiddlewareParams): NextMiddleware;
|
|
27
|
+
(request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam): NextMiddlewareReturn;
|
|
62
28
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
* but it will match the root route (/) and any routes that start with /api or /trpc.
|
|
66
|
-
*/
|
|
67
|
-
export declare const DEFAULT_CONFIG_MATCHER: string[];
|
|
68
|
-
/**
|
|
69
|
-
* Any routes matching this path will be ignored by the middleware.
|
|
70
|
-
* This is the inverted version of DEFAULT_CONFIG_MATCHER.
|
|
71
|
-
*/
|
|
72
|
-
export declare const DEFAULT_IGNORED_ROUTES: string[];
|
|
73
|
-
/**
|
|
74
|
-
* Any routes matching this path will be treated as API endpoints by the middleware.
|
|
75
|
-
*/
|
|
76
|
-
export declare const DEFAULT_API_ROUTES: string[];
|
|
77
|
-
type IgnoredRoutesParam = Array<RegExp | string> | RegExp | string | ((req: NextRequest) => boolean);
|
|
78
|
-
type ApiRoutesParam = IgnoredRoutesParam;
|
|
29
|
+
type CabinIdMiddlewareHandler = (auth: CabinIdMiddlewareAuth, request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam) => NextMiddlewareReturn;
|
|
30
|
+
export type CabinIdMiddlewareOptions = AuthenticateRequestOptions;
|
|
79
31
|
declare const authMiddleware: AuthMiddleware;
|
|
80
|
-
declare const createApiRoutes: (apiRoutes: RouteMatcherParam | undefined) => ((req: NextRequest) => boolean);
|
|
81
|
-
export declare const createDefaultAfterAuth: (isPublicRoute: ReturnType<typeof createRouteMatcher>, isApiRoute: ReturnType<typeof createApiRoutes>, options: {
|
|
82
|
-
signInUrl: string;
|
|
83
|
-
signUpUrl: string;
|
|
84
|
-
publishableKey: string;
|
|
85
|
-
secretKey: string;
|
|
86
|
-
}) => (auth: any, req: NextRequest) => NextResponse<unknown>;
|
|
87
32
|
export { authMiddleware };
|
|
88
33
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/server/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgB,MAAM,aAAa,CAAC;AAS3D,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,WAAW,EAAiB,MAAM,WAAW,CAAC;AACvD,OAAO,EAAkB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAQ5D,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG;IACrD,OAAO,EAAE,WAAW,CAAC;IACrB,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,2BAA2B,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,CACE,OAAO,EAAE,wBAAwB,EACjC,OAAO,CAAC,EAAE,wBAAwB,GACjC,cAAc,CAAC;IAClB;;;OAGG;IACH,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,cAAc,CAAC;IACrD;;;OAGG;IACH,CACE,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,GAC5B,oBAAoB,CAAC;CACzB;AAED,KAAK,wBAAwB,GAAG,CAC9B,IAAI,EAAE,qBAAqB,EAC3B,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,KAC1B,oBAAoB,CAAC;AAE1B,MAAM,MAAM,wBAAwB,GAAG,0BAA0B,CAAC;AAuBlE,QAAA,MAAM,cAAc,EAAE,cA2GrB,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AuthObject, SignedInAuthObject } from '../tokens/authObjects';
|
|
2
|
+
import { RedirectFun } from './createRedirect';
|
|
3
|
+
type AuthProtectOptions = {
|
|
4
|
+
unauthorizedUrl?: string;
|
|
5
|
+
unauthenticatedUrl?: string;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Throws a Nextjs notFound error if user is not authenticated or authorized.
|
|
9
|
+
*/
|
|
10
|
+
export interface AuthProtect {
|
|
11
|
+
(options?: AuthProtectOptions): SignedInAuthObject;
|
|
12
|
+
}
|
|
13
|
+
export declare const createProtect: (opts: {
|
|
14
|
+
request: Request;
|
|
15
|
+
authObject: AuthObject;
|
|
16
|
+
/**
|
|
17
|
+
* middleware and pages throw a notFound error if signed out
|
|
18
|
+
* but the middleware needs to throw an error it can catch
|
|
19
|
+
* use this callback to customise the behavior
|
|
20
|
+
*/
|
|
21
|
+
notFound: () => never;
|
|
22
|
+
/**
|
|
23
|
+
* see {@link notFound} above
|
|
24
|
+
*/
|
|
25
|
+
redirect: (url: string) => void;
|
|
26
|
+
/**
|
|
27
|
+
* protect() in middleware redirects to signInUrl if signed out
|
|
28
|
+
* protect() in pages throws a notFound error if signed out
|
|
29
|
+
* use this callback to customise the behavior
|
|
30
|
+
*/
|
|
31
|
+
redirectToSignIn: RedirectFun<unknown>;
|
|
32
|
+
}) => AuthProtect;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=protect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../../src/server/protect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,KAAK,kBAAkB,GAAG;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,WAAW;IAW1B,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;CACpD;AAED,eAAO,MAAM,aAAa,SAAU;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,KAAK,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC;;;;OAIG;IACH,gBAAgB,EAAE,YAAY,OAAO,CAAC,CAAC;CACxC,KAAG,WA+DH,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type Link from
|
|
2
|
-
import type { NextRequest } from
|
|
3
|
-
import type { Autocomplete } from
|
|
1
|
+
import type Link from 'next/link';
|
|
2
|
+
import type { NextRequest } from 'next/server';
|
|
3
|
+
import type { Autocomplete } from '../types';
|
|
4
4
|
type WithPathPatternWildcard<T> = `${T & string}(.*)`;
|
|
5
|
-
type NextTypedRoute<T = Parameters<typeof Link>[
|
|
5
|
+
type NextTypedRoute<T = Parameters<typeof Link>['0']['href']> = T extends string ? T : never;
|
|
6
6
|
type RouteMatcherWithNextTypedRoutes = Autocomplete<WithPathPatternWildcard<NextTypedRoute> | NextTypedRoute>;
|
|
7
7
|
export type RouteMatcherParam = Array<RegExp | RouteMatcherWithNextTypedRoutes> | RegExp | RouteMatcherWithNextTypedRoutes | ((req: NextRequest) => boolean);
|
|
8
8
|
export declare const createRouteMatcher: (routes: RouteMatcherParam) => (req: NextRequest) => boolean;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { CabinIdRequest } from 'src/tokens/cabinIdRequest';
|
|
2
|
+
export declare const serverRedirectWithAuth: (cabinIdRequest: CabinIdRequest, res: Response) => Response;
|
|
2
3
|
//# sourceMappingURL=serverRedirectWithAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverRedirectWithAuth.d.ts","sourceRoot":"","sources":["../../../src/server/serverRedirectWithAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"serverRedirectWithAuth.d.ts","sourceRoot":"","sources":["../../../src/server/serverRedirectWithAuth.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,eAAO,MAAM,sBAAsB,mBACjB,cAAc,OACzB,QAAQ,aAed,CAAC"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { IncomingMessage } from 'http';
|
|
3
|
+
import type { NextApiRequest } from 'next';
|
|
4
|
+
import type { NextApiRequestCookies } from 'next/dist/server/api-utils';
|
|
5
|
+
import type { NextMiddleware, NextRequest } from 'next/server';
|
|
6
|
+
type GsspRequest = IncomingMessage & {
|
|
7
|
+
cookies: NextApiRequestCookies;
|
|
8
|
+
};
|
|
9
|
+
export type RequestLike = NextRequest | NextApiRequest | GsspRequest;
|
|
2
10
|
export type NextMiddlewareRequestParam = Parameters<NextMiddleware>['0'];
|
|
3
11
|
export type NextMiddlewareEvtParam = Parameters<NextMiddleware>['1'];
|
|
4
12
|
export type NextMiddlewareReturn = ReturnType<NextMiddleware>;
|
|
13
|
+
export {};
|
|
5
14
|
//# sourceMappingURL=type.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/server/type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"type.d.ts","sourceRoot":"","sources":["../../../src/server/type.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/D,KAAK,WAAW,GAAG,eAAe,GAAG;IAAE,OAAO,EAAE,qBAAqB,CAAA;CAAE,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,cAAc,GAAG,WAAW,CAAC;AAErE,MAAM,MAAM,0BAA0B,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;AACzE,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -1,10 +1,17 @@
|
|
|
1
|
-
import { NextResponse } from 'next/server';
|
|
2
|
-
import
|
|
1
|
+
import { NextResponse, NextRequest } from 'next/server';
|
|
2
|
+
import { constants } from '../constants';
|
|
3
|
+
import { CabinIdRequest } from '../tokens/cabinIdRequest';
|
|
4
|
+
import { RequestLike } from './type';
|
|
3
5
|
export declare function assertKey(key: string, onError: () => never): string;
|
|
4
6
|
export declare const apiEndpointUnauthorizedNextResponse: () => NextResponse<null>;
|
|
5
7
|
export declare const redirectAdapter: (url: string | URL) => NextResponse<unknown>;
|
|
6
8
|
export declare const setRequestHeadersOnNextResponse: (res: NextResponse | Response, req: Request, newHeaders: Record<string, string>) => void;
|
|
7
9
|
type RequestState = any;
|
|
8
|
-
export declare function decorateRequest(req:
|
|
10
|
+
export declare function decorateRequest(req: CabinIdRequest, res: Response, requestState: RequestState, secretKey: string): Response;
|
|
11
|
+
export declare const buildRequestLike: () => NextRequest;
|
|
12
|
+
export declare function getCustomAttributeFromRequest(req: RequestLike, key: string): string | null | undefined;
|
|
13
|
+
export declare function getAuthKeyFromRequest(req: RequestLike, key: keyof typeof constants.Attributes): string | null | undefined;
|
|
14
|
+
export declare function getHeader(req: RequestLike, name: string): string | null | undefined;
|
|
15
|
+
export declare function getCookie(req: RequestLike, name: string): string | undefined;
|
|
9
16
|
export {};
|
|
10
17
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/server/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,GAAG,MAAM,CAMnE;AAED,eAAO,MAAM,mCAAmC,0BAE/C,CAAC;AAEF,eAAO,MAAM,eAAe,QAAS,MAAM,GAAG,GAAG,0BAIhD,CAAC;AAKF,eAAO,MAAM,+BAA+B,QACrC,YAAY,GAAG,QAAQ,OACvB,OAAO,cACA,OAAO,MAAM,EAAE,MAAM,CAAC,SAoBnC,CAAC;AASF,KAAK,YAAY,GAAG,GAAG,CAAC;AAGxB,wBAAgB,eAAe,CAC7B,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,MAAM,GAChB,QAAQ,CAkDV;AAED,eAAO,MAAM,gBAAgB,mBA0B5B,CAAC;AAEF,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,IAAI,GAAG,SAAS,CAG3B;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,MAAM,OAAO,SAAS,CAAC,UAAU,GACrC,MAAM,GAAG,IAAI,GAAG,SAAS,CAK3B;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,WAAW,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,GAAG,SAAS,CAa3B;AAeD,wBAAgB,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAkB5E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { CreateBackendApiOptions } from '../api/factory';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export type SignedInAuthObjectOptions = CreateBackendApiOptions & {
|
|
6
|
+
token: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export type SignedInAuthObject = {
|
|
12
|
+
userId: string;
|
|
13
|
+
sessionToken: string;
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export type SignedOutAuthObject = {
|
|
19
|
+
userId: null;
|
|
20
|
+
sessionToken: null;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
export type AuthObject = SignedInAuthObject | SignedOutAuthObject;
|
|
26
|
+
/**
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export declare function signedInAuthObject({ userId, sessionToken, }: {
|
|
30
|
+
userId: string;
|
|
31
|
+
sessionToken: string;
|
|
32
|
+
}): SignedInAuthObject;
|
|
33
|
+
/**
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export declare function signedOutAuthObject(): SignedOutAuthObject;
|
|
37
|
+
//# sourceMappingURL=authObjects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authObjects.d.ts","sourceRoot":"","sources":["../../../src/tokens/authObjects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,GAAG;IAChE,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,kBAAkB,GAAG,mBAAmB,CAAC;AAElE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,YAAY,GACb,EAAE;IACD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,kBAAkB,CAKrB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,mBAAmB,CAKzD"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { SignedInAuthObject, SignedOutAuthObject } from './authObjects';
|
|
2
|
+
import { AuthenticateContext } from './authenticateContext';
|
|
3
|
+
export declare const AuthStatus: {
|
|
4
|
+
readonly SignedIn: "signed-in";
|
|
5
|
+
readonly SignedOut: "signed-out";
|
|
6
|
+
readonly Handshake: "handshake";
|
|
7
|
+
};
|
|
8
|
+
export type AuthStatus = (typeof AuthStatus)[keyof typeof AuthStatus];
|
|
9
|
+
export type SignedInState = {
|
|
10
|
+
status: typeof AuthStatus.SignedIn;
|
|
11
|
+
proxyUrl?: string;
|
|
12
|
+
publishableKey: string;
|
|
13
|
+
signInUrl: string;
|
|
14
|
+
signUpUrl: string;
|
|
15
|
+
afterSignInUrl: string;
|
|
16
|
+
afterSignUpUrl: string;
|
|
17
|
+
isSignedIn: true;
|
|
18
|
+
toAuth: () => SignedInAuthObject;
|
|
19
|
+
headers: Headers;
|
|
20
|
+
token: string;
|
|
21
|
+
};
|
|
22
|
+
export type SignedOutState = {
|
|
23
|
+
status: typeof AuthStatus.SignedOut;
|
|
24
|
+
proxyUrl?: string;
|
|
25
|
+
publishableKey: string;
|
|
26
|
+
signInUrl: string;
|
|
27
|
+
signUpUrl: string;
|
|
28
|
+
afterSignInUrl: string;
|
|
29
|
+
afterSignUpUrl: string;
|
|
30
|
+
isSignedIn: false;
|
|
31
|
+
toAuth: () => SignedOutAuthObject;
|
|
32
|
+
headers: Headers;
|
|
33
|
+
token: null;
|
|
34
|
+
};
|
|
35
|
+
export declare const AuthErrorReason: {
|
|
36
|
+
readonly ClientUATWithoutSessionToken: "client-uat-but-no-session-token";
|
|
37
|
+
readonly DevBrowserMissing: "dev-browser-missing";
|
|
38
|
+
readonly DevBrowserSync: "dev-browser-sync";
|
|
39
|
+
readonly PrimaryRespondsToSyncing: "primary-responds-to-syncing";
|
|
40
|
+
readonly SatelliteCookieNeedsSyncing: "satellite-needs-syncing";
|
|
41
|
+
readonly SessionTokenAndUATMissing: "session-token-and-uat-missing";
|
|
42
|
+
readonly SessionTokenMissing: "session-token-missing";
|
|
43
|
+
readonly SessionTokenOutdated: "session-token-outdated";
|
|
44
|
+
readonly SessionTokenWithoutClientUAT: "session-token-but-no-client-uat";
|
|
45
|
+
readonly UnexpectedError: "unexpected-error";
|
|
46
|
+
};
|
|
47
|
+
export type AuthErrorReason = (typeof AuthErrorReason)[keyof typeof AuthErrorReason];
|
|
48
|
+
export type RequestState = SignedInState | SignedOutState;
|
|
49
|
+
export declare function signedIn(authenticateContext: AuthenticateContext, headers: Headers | undefined, token: string): SignedInState;
|
|
50
|
+
export declare function signedOut(authenticateContext: AuthenticateContext, headers?: Headers): SignedOutState;
|
|
51
|
+
//# sourceMappingURL=authStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authStatus.d.ts","sourceRoot":"","sources":["../../../src/tokens/authStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,OAAO,UAAU,CAAC,QAAQ,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,kBAAkB,CAAC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,OAAO,UAAU,CAAC,SAAS,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,KAAK,CAAC;IAClB,MAAM,EAAE,MAAM,mBAAmB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;;;;;CAWlB,CAAC;AAEX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,cAAc,CAAC;AAE1D,wBAAgB,QAAQ,CACtB,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,qBAAyB,EAChC,KAAK,EAAE,MAAM,GACZ,aAAa,CAkBf;AAED,wBAAgB,SAAS,CACvB,mBAAmB,EAAE,mBAAmB,EACxC,OAAO,GAAE,OAAuB,GAC/B,cAAc,CAchB"}
|