@appconda/nextjs 1.0.115 → 1.0.117
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/actions/actionClient.d.ts +10 -0
- package/dist/actions/actionClient.js +41 -0
- package/dist/actions/auth.d.ts +1 -0
- package/dist/actions/auth.js +7 -0
- package/dist/actions/authOptions.d.ts +5 -0
- package/dist/actions/authOptions.js +235 -0
- package/dist/actions/index.d.ts +3 -0
- package/dist/actions/index.js +4 -0
- package/dist/actions/nextAuthHandler.d.ts +1 -0
- package/dist/actions/nextAuthHandler.js +6 -0
- package/dist/client.d.ts +141 -0
- package/dist/client.js +335 -0
- package/dist/decorators/Cache.d.ts +1 -0
- package/dist/decorators/Cache.js +79 -0
- package/dist/decorators/CacheKey.d.ts +1 -0
- package/dist/decorators/CacheKey.js +9 -0
- package/dist/decorators/Invalidate.d.ts +1 -0
- package/dist/decorators/Invalidate.js +47 -0
- package/dist/enums/api-service.d.ts +13 -0
- package/dist/enums/api-service.js +15 -0
- package/dist/enums/api.d.ts +5 -0
- package/dist/enums/api.js +7 -0
- package/dist/enums/auth-method.d.ts +9 -0
- package/dist/enums/auth-method.js +11 -0
- package/dist/enums/browser.d.ts +16 -0
- package/dist/enums/browser.js +18 -0
- package/dist/enums/compression.d.ts +5 -0
- package/dist/enums/compression.js +7 -0
- package/dist/enums/credit-card.d.ts +18 -0
- package/dist/enums/credit-card.js +20 -0
- package/dist/enums/database-usage-range.d.ts +5 -0
- package/dist/enums/database-usage-range.js +7 -0
- package/dist/enums/email-template-locale.d.ts +133 -0
- package/dist/enums/email-template-locale.js +135 -0
- package/dist/enums/email-template-type.d.ts +9 -0
- package/dist/enums/email-template-type.js +11 -0
- package/dist/enums/entities/EntityLimitType.d.ts +4 -0
- package/dist/enums/entities/EntityLimitType.js +6 -0
- package/dist/enums/entities/PropertyAttributeName.d.ts +27 -0
- package/dist/enums/entities/PropertyAttributeName.js +29 -0
- package/dist/enums/entities/PropertyCondition.d.ts +7 -0
- package/dist/enums/entities/PropertyCondition.js +10 -0
- package/dist/enums/entities/PropertyType.d.ts +12 -0
- package/dist/enums/entities/PropertyType.js +18 -0
- package/dist/enums/entities/PropertyValueType.d.ts +6 -0
- package/dist/enums/entities/PropertyValueType.js +8 -0
- package/dist/enums/entities/RowAccess.d.ts +2 -0
- package/dist/enums/entities/RowAccess.js +2 -0
- package/dist/enums/entities/ViewFilterCondition.d.ts +12 -0
- package/dist/enums/entities/ViewFilterCondition.js +14 -0
- package/dist/enums/execution-method.d.ts +8 -0
- package/dist/enums/execution-method.js +10 -0
- package/dist/enums/flag.d.ts +197 -0
- package/dist/enums/flag.js +199 -0
- package/dist/enums/function-usage-range.d.ts +5 -0
- package/dist/enums/function-usage-range.js +7 -0
- package/dist/enums/image-format.d.ts +7 -0
- package/dist/enums/image-format.js +9 -0
- package/dist/enums/image-gravity.d.ts +11 -0
- package/dist/enums/image-gravity.js +13 -0
- package/dist/enums/index-type.d.ts +5 -0
- package/dist/enums/index-type.js +7 -0
- package/dist/enums/messaging-provider-type.d.ts +5 -0
- package/dist/enums/messaging-provider-type.js +7 -0
- package/dist/enums/name.d.ts +14 -0
- package/dist/enums/name.js +16 -0
- package/dist/enums/o-auth-provider copy.d.ts +41 -0
- package/dist/enums/o-auth-provider copy.js +43 -0
- package/dist/enums/password-hash.d.ts +13 -0
- package/dist/enums/password-hash.js +15 -0
- package/dist/enums/platform-type.d.ts +17 -0
- package/dist/enums/platform-type.js +19 -0
- package/dist/enums/project-usage-range.d.ts +4 -0
- package/dist/enums/project-usage-range.js +6 -0
- package/dist/enums/region.d.ts +4 -0
- package/dist/enums/region.js +6 -0
- package/dist/enums/relation-mutate.d.ts +5 -0
- package/dist/enums/relation-mutate.js +7 -0
- package/dist/enums/relationship-type.d.ts +6 -0
- package/dist/enums/relationship-type.js +8 -0
- package/dist/enums/resource-type.d.ts +4 -0
- package/dist/enums/resource-type.js +6 -0
- package/dist/enums/runtime.d.ts +48 -0
- package/dist/enums/runtime.js +50 -0
- package/dist/enums/s-m-t-p-secure.d.ts +3 -0
- package/dist/enums/s-m-t-p-secure.js +5 -0
- package/dist/enums/shared/ApplicationLayout.d.ts +4 -0
- package/dist/enums/shared/ApplicationLayout.js +6 -0
- package/dist/enums/shared/Colors.d.ts +24 -0
- package/dist/enums/shared/Colors.js +26 -0
- package/dist/enums/shared/InputType.d.ts +6 -0
- package/dist/enums/shared/InputType.js +8 -0
- package/dist/enums/shared/Periodicity.d.ts +7 -0
- package/dist/enums/shared/Periodicity.js +9 -0
- package/dist/enums/shared/SvgIcon.d.ts +37 -0
- package/dist/enums/shared/SvgIcon.js +39 -0
- package/dist/enums/shared/Theme.d.ts +4 -0
- package/dist/enums/shared/Theme.js +6 -0
- package/dist/enums/sms-template-locale.d.ts +133 -0
- package/dist/enums/sms-template-locale.js +135 -0
- package/dist/enums/sms-template-type.d.ts +6 -0
- package/dist/enums/sms-template-type.js +8 -0
- package/dist/enums/smtp-encryption.d.ts +5 -0
- package/dist/enums/smtp-encryption.js +7 -0
- package/dist/enums/storage-usage-range.d.ts +5 -0
- package/dist/enums/storage-usage-range.js +7 -0
- package/dist/enums/subscriptions/PricingModel.d.ts +11 -0
- package/dist/enums/subscriptions/PricingModel.js +12 -0
- package/dist/enums/subscriptions/SubscriptionBillingPeriod.d.ts +10 -0
- package/dist/enums/subscriptions/SubscriptionBillingPeriod.js +11 -0
- package/dist/enums/subscriptions/SubscriptionFeatureLimitType.d.ts +10 -0
- package/dist/enums/subscriptions/SubscriptionFeatureLimitType.js +13 -0
- package/dist/enums/subscriptions/SubscriptionPriceType.d.ts +7 -0
- package/dist/enums/subscriptions/SubscriptionPriceType.js +8 -0
- package/dist/enums/tenants/LinkedAccountStatus.d.ts +5 -0
- package/dist/enums/tenants/LinkedAccountStatus.js +7 -0
- package/dist/enums/tenants/TenantUserJoined.d.ts +6 -0
- package/dist/enums/tenants/TenantUserJoined.js +8 -0
- package/dist/enums/tenants/TenantUserStatus.d.ts +6 -0
- package/dist/enums/tenants/TenantUserStatus.js +8 -0
- package/dist/enums/tenants/TenantUserType.d.ts +5 -0
- package/dist/enums/tenants/TenantUserType.js +7 -0
- package/dist/enums/user-usage-range.d.ts +5 -0
- package/dist/enums/user-usage-range.js +7 -0
- package/dist/getAppcondaClient.d.ts +2 -0
- package/dist/getAppcondaClient.js +44 -0
- package/dist/getSDKForCurrentUser.d.ts +43 -0
- package/dist/getSDKForCurrentUser.js +76 -0
- package/dist/getSDKForService.d.ts +6 -0
- package/dist/getSDKForService.js +51 -0
- package/dist/getSDKForTenant.d.ts +20 -0
- package/dist/getSDKForTenant.js +44 -0
- package/dist/id.d.ts +20 -0
- package/dist/id.js +45 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.js +42 -0
- package/dist/inputFile.d.ts +6 -0
- package/dist/inputFile.js +17 -0
- package/dist/lib/Cache/Adapter.d.ts +10 -0
- package/dist/lib/Cache/Adapter.js +2 -0
- package/dist/lib/Cache/Adapters/Filesystem.d.ts +16 -0
- package/dist/lib/Cache/Adapters/Filesystem.js +103 -0
- package/dist/lib/Cache/Adapters/Memory.d.ts +18 -0
- package/dist/lib/Cache/Adapters/Memory.js +47 -0
- package/dist/lib/Cache/Adapters/None.d.ts +12 -0
- package/dist/lib/Cache/Adapters/None.js +28 -0
- package/dist/lib/Cache/Adapters/Sharding.d.ts +17 -0
- package/dist/lib/Cache/Adapters/Sharding.js +73 -0
- package/dist/lib/Cache/Cache.d.ts +16 -0
- package/dist/lib/Cache/Cache.js +52 -0
- package/dist/lib/Cache/index.d.ts +4 -0
- package/dist/lib/Cache/index.js +5 -0
- package/dist/lib/Cache/test.d.ts +0 -0
- package/dist/lib/Cache/test.js +1 -0
- package/dist/lib/Registry/Registry.d.ts +38 -0
- package/dist/lib/Registry/Registry.js +56 -0
- package/dist/lib/Registry/index.d.ts +1 -0
- package/dist/lib/Registry/index.js +2 -0
- package/dist/lib/Services.d.ts +6 -0
- package/dist/lib/Services.js +14 -0
- package/dist/lib/crypto.d.ts +23 -0
- package/dist/lib/crypto.js +78 -0
- package/dist/lib/env.d.ts +1 -0
- package/dist/lib/env.js +137 -0
- package/dist/lib/errors.d.ts +70 -0
- package/dist/lib/errors.js +76 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/jwt.d.ts +12 -0
- package/dist/lib/jwt.js +103 -0
- package/dist/models.d.ts +3272 -0
- package/dist/models.js +2 -0
- package/dist/modules/account/actions.d.ts +31 -0
- package/dist/modules/account/actions.js +18 -0
- package/dist/modules/account/enums/authentication-factor.d.ts +6 -0
- package/dist/modules/account/enums/authentication-factor.js +8 -0
- package/dist/modules/account/enums/authenticator-type.d.ts +3 -0
- package/dist/modules/account/enums/authenticator-type.js +5 -0
- package/dist/modules/account/enums/o-auth-provider.d.ts +41 -0
- package/dist/modules/account/enums/o-auth-provider.js +43 -0
- package/dist/modules/account/index.d.ts +3 -0
- package/dist/modules/account/index.js +4 -0
- package/dist/modules/account/schema.d.ts +17 -0
- package/dist/modules/account/schema.js +8 -0
- package/dist/modules/account/service.d.ts +530 -0
- package/dist/modules/account/service.js +1260 -0
- package/dist/modules/account/types.d.ts +411 -0
- package/dist/modules/account/types.js +2 -0
- package/dist/modules/acl/service.d.ts +26 -0
- package/dist/modules/acl/service.js +27 -0
- package/dist/modules/agent/action.d.ts +57 -0
- package/dist/modules/agent/action.js +64 -0
- package/dist/modules/agent/index.d.ts +4 -0
- package/dist/modules/agent/index.js +5 -0
- package/dist/modules/agent/schema.d.ts +48 -0
- package/dist/modules/agent/schema.js +21 -0
- package/dist/modules/agent/service.d.ts +12 -0
- package/dist/modules/agent/service.js +22 -0
- package/dist/modules/agent/types.d.ts +11 -0
- package/dist/modules/agent/types.js +2 -0
- package/dist/modules/ai/index.d.ts +1 -0
- package/dist/modules/ai/index.js +2 -0
- package/dist/modules/ai/node/actions.d.ts +4 -0
- package/dist/modules/ai/node/actions.js +16 -0
- package/dist/modules/ai/node/index.d.ts +2 -0
- package/dist/modules/ai/node/index.js +3 -0
- package/dist/modules/ai/node/service.d.ts +5 -0
- package/dist/modules/ai/node/service.js +12 -0
- package/dist/modules/index.d.ts +6 -0
- package/dist/modules/index.js +7 -0
- package/dist/modules/task/action.d.ts +201 -0
- package/dist/modules/task/action.js +147 -0
- package/dist/modules/task/index.d.ts +4 -0
- package/dist/modules/task/index.js +5 -0
- package/dist/modules/task/schema.d.ts +107 -0
- package/dist/modules/task/schema.js +44 -0
- package/dist/modules/task/service.d.ts +19 -0
- package/dist/modules/task/service.js +43 -0
- package/dist/modules/task/types.d.ts +84 -0
- package/dist/modules/task/types.js +2 -0
- package/dist/modules/tenant/actions.d.ts +49 -0
- package/dist/modules/tenant/actions.js +38 -0
- package/dist/modules/tenant/index.d.ts +3 -0
- package/dist/modules/tenant/index.js +4 -0
- package/dist/modules/tenant/tenant.d.ts +32 -0
- package/dist/modules/tenant/tenant.js +125 -0
- package/dist/modules/tenant/types.d.ts +11 -0
- package/dist/modules/tenant/types.js +2 -0
- package/dist/modules/waitlist/action.d.ts +71 -0
- package/dist/modules/waitlist/action.js +78 -0
- package/dist/modules/waitlist/index.d.ts +4 -0
- package/dist/modules/waitlist/index.js +5 -0
- package/dist/modules/waitlist/schema.d.ts +39 -0
- package/dist/modules/waitlist/schema.js +18 -0
- package/dist/modules/waitlist/service.d.ts +13 -0
- package/dist/modules/waitlist/service.js +28 -0
- package/dist/modules/waitlist/types.d.ts +14 -0
- package/dist/modules/waitlist/types.js +2 -0
- package/dist/permission.d.ts +43 -0
- package/dist/permission.js +54 -0
- package/dist/query.d.ts +194 -0
- package/dist/query.js +204 -0
- package/dist/role.d.ts +70 -0
- package/dist/role.js +94 -0
- package/dist/schemas/nodes.d.ts +0 -0
- package/dist/schemas/nodes.js +1 -0
- package/dist/service-client.d.ts +7 -0
- package/dist/service-client.js +14 -0
- package/dist/service.d.ts +11 -0
- package/dist/service.js +23 -0
- package/dist/services/applets.d.ts +9 -0
- package/dist/services/applets.js +40 -0
- package/dist/services/avatars.d.ts +115 -0
- package/dist/services/avatars.js +251 -0
- package/dist/services/chat-flow.d.ts +7 -0
- package/dist/services/chat-flow.js +26 -0
- package/dist/services/community.d.ts +19 -0
- package/dist/services/community.js +69 -0
- package/dist/services/configuration.d.ts +5 -0
- package/dist/services/configuration.js +11 -0
- package/dist/services/databases.d.ts +613 -0
- package/dist/services/databases.js +1736 -0
- package/dist/services/functions.d.ts +319 -0
- package/dist/services/functions.js +810 -0
- package/dist/services/graphql.d.ts +25 -0
- package/dist/services/graphql.js +57 -0
- package/dist/services/health.d.ts +231 -0
- package/dist/services/health.js +463 -0
- package/dist/services/locale.d.ts +80 -0
- package/dist/services/locale.js +144 -0
- package/dist/services/messaging.d.ts +685 -0
- package/dist/services/messaging.js +1920 -0
- package/dist/services/permissions.d.ts +20 -0
- package/dist/services/permissions.js +90 -0
- package/dist/services/pricing.d.ts +15 -0
- package/dist/services/pricing.js +21 -0
- package/dist/services/projects.d.ts +542 -0
- package/dist/services/projects.js +1526 -0
- package/dist/services/roles.d.ts +19 -0
- package/dist/services/roles.js +72 -0
- package/dist/services/schema.d.ts +17 -0
- package/dist/services/schema.js +48 -0
- package/dist/services/storage.d.ts +189 -0
- package/dist/services/storage.js +474 -0
- package/dist/services/subscription.d.ts +15 -0
- package/dist/services/subscription.js +30 -0
- package/dist/services/teams.d.ts +167 -0
- package/dist/services/teams.js +395 -0
- package/dist/services/tenant-subscription.d.ts +12 -0
- package/dist/services/tenant-subscription.js +52 -0
- package/dist/services/users.d.ts +499 -0
- package/dist/services/users.js +1283 -0
- package/package.json +3 -3
- package/src/modules/task/action.ts +2 -2
@@ -0,0 +1,10 @@
|
|
1
|
+
export declare const actionClient: import("next-safe-action").SafeActionClient<string, undefined, undefined, undefined, {}, undefined, undefined, undefined, readonly [], {
|
2
|
+
formErrors: string[];
|
3
|
+
fieldErrors: {};
|
4
|
+
} | undefined, readonly []>;
|
5
|
+
export declare const authenticatedActionClient: import("next-safe-action").SafeActionClient<string, undefined, undefined, undefined, {
|
6
|
+
user: import("..").Models.User<import("..").Models.Preferences>;
|
7
|
+
}, undefined, undefined, undefined, readonly [], {
|
8
|
+
formErrors: string[];
|
9
|
+
fieldErrors: {};
|
10
|
+
} | undefined, readonly []>;
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { getServerSession } from "next-auth";
|
2
|
+
import { DEFAULT_SERVER_ERROR_MESSAGE, createSafeActionClient } from "next-safe-action";
|
3
|
+
import { authOptions } from "./authOptions";
|
4
|
+
import { AuthenticationError, AuthorizationError } from "../lib/errors";
|
5
|
+
import { getSDKForCurrentUser } from "../getSDKForCurrentUser";
|
6
|
+
export const actionClient = createSafeActionClient({
|
7
|
+
handleServerError(e) {
|
8
|
+
/* if (
|
9
|
+
e instanceof ResourceNotFoundError ||
|
10
|
+
e instanceof AuthorizationError ||
|
11
|
+
e instanceof InvalidInputError ||
|
12
|
+
e instanceof UnknownError ||
|
13
|
+
e instanceof AuthenticationError ||
|
14
|
+
e instanceof OperationNotAllowedError ||
|
15
|
+
e instanceof AppcondaException
|
16
|
+
) {
|
17
|
+
return e.message;
|
18
|
+
} */
|
19
|
+
// eslint-disable-next-line no-console -- This error needs to be logged for debugging server-side errors
|
20
|
+
console.error("SERVER ERROR: ", e);
|
21
|
+
return DEFAULT_SERVER_ERROR_MESSAGE;
|
22
|
+
},
|
23
|
+
});
|
24
|
+
export const authenticatedActionClient = actionClient.use(async ({ next }) => {
|
25
|
+
const options = authOptions();
|
26
|
+
const session = options ? await getServerSession(options) : null;
|
27
|
+
//@ts-ignore
|
28
|
+
if (!session?.user) {
|
29
|
+
throw new AuthenticationError("Not authenticated");
|
30
|
+
}
|
31
|
+
//@ts-ignore
|
32
|
+
const userId = session.user.id;
|
33
|
+
// Get the SDK and use users.get method to fetch the user
|
34
|
+
const { users } = await getSDKForCurrentUser();
|
35
|
+
const user = await users.get(userId);
|
36
|
+
if (!user) {
|
37
|
+
throw new AuthorizationError("User not found");
|
38
|
+
}
|
39
|
+
return next({ ctx: { user } });
|
40
|
+
});
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbnMvYWN0aW9uQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUM3QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN4RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUcvRCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsc0JBQXNCLENBQUM7SUFDakQsaUJBQWlCLENBQUMsQ0FBUTtRQUN4Qjs7Ozs7Ozs7OztZQVVJO1FBRUosd0dBQXdHO1FBQ3hHLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBR0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO0lBQzNFLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLFlBQVk7SUFDWixJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBSSxtQkFBbUIsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxZQUFZO0lBQ1osTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFFL0IseURBQXlEO0lBQ3pELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLG9CQUFvQixFQUFFLENBQUM7SUFDL0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNqQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHsgZ2V0U2VydmVyU2Vzc2lvbiB9IGZyb20gXCJuZXh0LWF1dGhcIjtcbmltcG9ydCB7IERFRkFVTFRfU0VSVkVSX0VSUk9SX01FU1NBR0UsIGNyZWF0ZVNhZmVBY3Rpb25DbGllbnQgfSBmcm9tIFwibmV4dC1zYWZlLWFjdGlvblwiO1xuaW1wb3J0IHsgYXV0aE9wdGlvbnMgfSBmcm9tIFwiLi9hdXRoT3B0aW9uc1wiO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25FcnJvciwgQXV0aG9yaXphdGlvbkVycm9yIH0gZnJvbSBcIi4uL2xpYi9lcnJvcnNcIjtcbmltcG9ydCB7IGdldFNES0ZvckN1cnJlbnRVc2VyIH0gZnJvbSBcIi4uL2dldFNES0ZvckN1cnJlbnRVc2VyXCI7XG5cblxuZXhwb3J0IGNvbnN0IGFjdGlvbkNsaWVudCA9IGNyZWF0ZVNhZmVBY3Rpb25DbGllbnQoe1xuICBoYW5kbGVTZXJ2ZXJFcnJvcihlOiBFcnJvcikge1xuICAgIC8qIGlmIChcbiAgICAgIGUgaW5zdGFuY2VvZiBSZXNvdXJjZU5vdEZvdW5kRXJyb3IgfHxcbiAgICAgIGUgaW5zdGFuY2VvZiBBdXRob3JpemF0aW9uRXJyb3IgfHxcbiAgICAgIGUgaW5zdGFuY2VvZiBJbnZhbGlkSW5wdXRFcnJvciB8fFxuICAgICAgZSBpbnN0YW5jZW9mIFVua25vd25FcnJvciB8fFxuICAgICAgZSBpbnN0YW5jZW9mIEF1dGhlbnRpY2F0aW9uRXJyb3IgfHxcbiAgICAgIGUgaW5zdGFuY2VvZiBPcGVyYXRpb25Ob3RBbGxvd2VkRXJyb3IgfHxcbiAgICAgIGUgaW5zdGFuY2VvZiBBcHBjb25kYUV4Y2VwdGlvblxuICAgICkge1xuICAgICAgcmV0dXJuIGUubWVzc2FnZTtcbiAgICB9ICovXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZSAtLSBUaGlzIGVycm9yIG5lZWRzIHRvIGJlIGxvZ2dlZCBmb3IgZGVidWdnaW5nIHNlcnZlci1zaWRlIGVycm9yc1xuICAgIGNvbnNvbGUuZXJyb3IoXCJTRVJWRVIgRVJST1I6IFwiLCBlKTtcbiAgICByZXR1cm4gREVGQVVMVF9TRVJWRVJfRVJST1JfTUVTU0FHRTtcbiAgfSxcbn0pO1xuXG5cbmV4cG9ydCBjb25zdCBhdXRoZW50aWNhdGVkQWN0aW9uQ2xpZW50ID0gYWN0aW9uQ2xpZW50LnVzZShhc3luYyAoeyBuZXh0IH0pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGF1dGhPcHRpb25zKCk7XG4gIGNvbnN0IHNlc3Npb24gPSBvcHRpb25zID8gYXdhaXQgZ2V0U2VydmVyU2Vzc2lvbihvcHRpb25zKSA6IG51bGw7XG4gIC8vQHRzLWlnbm9yZVxuICBpZiAoIXNlc3Npb24/LnVzZXIpIHtcbiAgICB0aHJvdyBuZXcgQXV0aGVudGljYXRpb25FcnJvcihcIk5vdCBhdXRoZW50aWNhdGVkXCIpO1xuICB9XG5cbiAgLy9AdHMtaWdub3JlXG4gIGNvbnN0IHVzZXJJZCA9IHNlc3Npb24udXNlci5pZDtcblxuICAvLyBHZXQgdGhlIFNESyBhbmQgdXNlIHVzZXJzLmdldCBtZXRob2QgdG8gZmV0Y2ggdGhlIHVzZXJcbiAgY29uc3QgeyB1c2VycyB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgY29uc3QgdXNlciA9IGF3YWl0IHVzZXJzLmdldCh1c2VySWQpO1xuICBpZiAoIXVzZXIpIHtcbiAgICB0aHJvdyBuZXcgQXV0aG9yaXphdGlvbkVycm9yKFwiVXNlciBub3QgZm91bmRcIik7XG4gIH1cblxuICByZXR1cm4gbmV4dCh7IGN0eDogeyB1c2VyIH0gfSk7XG59KTtcbiJdfQ==
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const auth: () => Promise<unknown>;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { getServerSession } from "next-auth";
|
2
|
+
import { authOptions } from "./authOptions";
|
3
|
+
export const auth = async () => {
|
4
|
+
const options = authOptions();
|
5
|
+
return options ? await getServerSession(options) : null;
|
6
|
+
};
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL2F1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBRyxFQUFFO0lBQzFCLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxDQUFDO0lBQzlCLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDNUQsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0U2VydmVyU2Vzc2lvbiB9IGZyb20gXCJuZXh0LWF1dGhcIlxuaW1wb3J0IHsgYXV0aE9wdGlvbnMgfSBmcm9tIFwiLi9hdXRoT3B0aW9uc1wiO1xuXG5leHBvcnQgY29uc3QgYXV0aCA9IGFzeW5jICgpPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBhdXRoT3B0aW9ucygpO1xuICAgIHJldHVybiBvcHRpb25zID8gYXdhaXQgZ2V0U2VydmVyU2Vzc2lvbihvcHRpb25zKSA6IG51bGw7XG59XG4iXX0=
|
@@ -0,0 +1,235 @@
|
|
1
|
+
import CredentialsProvider from "next-auth/providers/credentials";
|
2
|
+
import { cookies } from "next/headers";
|
3
|
+
import { getAppcondaClient } from "../getAppcondaClient";
|
4
|
+
import { Account } from "../modules/account/service";
|
5
|
+
import { getEnv } from "../lib/env";
|
6
|
+
import { getSDKForCurrentUser } from "../getSDKForCurrentUser";
|
7
|
+
import { Query } from "../query";
|
8
|
+
/* const getEnv = () => {
|
9
|
+
return {
|
10
|
+
APPCONDA_ENDPOINT: 'process.env.APPCONDA_ENDPOINT',
|
11
|
+
APPCONDA_CLIENT_ENDPOINT: 'process.env.APPCONDA_CLIENT_ENDPOINT',
|
12
|
+
_SERVICE_TOKEN: 'process.env._SERVICE_TOKEN',
|
13
|
+
ENTERPRISE_LICENSE_KEY: 'process.env.ENTERPRISE_LICENSE_KEY',
|
14
|
+
};
|
15
|
+
}; */
|
16
|
+
export async function signIn({ userName, password }) {
|
17
|
+
const adminClient = await getAppcondaClient();
|
18
|
+
const account = new Account(adminClient);
|
19
|
+
const session = await account.createEmailPasswordSession(userName, password);
|
20
|
+
const c = await cookies();
|
21
|
+
c.set('a_session', session.secret, {
|
22
|
+
path: "/",
|
23
|
+
httpOnly: true,
|
24
|
+
sameSite: "strict",
|
25
|
+
secure: true,
|
26
|
+
});
|
27
|
+
return session;
|
28
|
+
}
|
29
|
+
export const authOptions = (() => {
|
30
|
+
let options = null;
|
31
|
+
return () => {
|
32
|
+
if (options == null) {
|
33
|
+
options = {
|
34
|
+
providers: [
|
35
|
+
CredentialsProvider({
|
36
|
+
id: "credentials",
|
37
|
+
// The name to display on the sign in form (e.g. "Sign in with...")
|
38
|
+
name: "Credentials",
|
39
|
+
// The credentials is used to generate a suitable form on the sign in page.
|
40
|
+
// You can specify whatever fields you are expecting to be submitted.
|
41
|
+
// e.g. domain, username, password, 2FA token, etc.
|
42
|
+
// You can pass any HTML attribute to the <input> tag through the object.
|
43
|
+
credentials: {
|
44
|
+
email: {
|
45
|
+
label: "Email Address",
|
46
|
+
type: "email",
|
47
|
+
placeholder: "Your email address",
|
48
|
+
},
|
49
|
+
password: {
|
50
|
+
label: "Password",
|
51
|
+
type: "password",
|
52
|
+
placeholder: "Your password",
|
53
|
+
},
|
54
|
+
totpCode: { label: "Two-factor Code", type: "input", placeholder: "Code from authenticator app" },
|
55
|
+
backupCode: { label: "Backup Code", type: "input", placeholder: "Two-factor backup code" },
|
56
|
+
},
|
57
|
+
async authorize(credentials, _req) {
|
58
|
+
debugger;
|
59
|
+
let user;
|
60
|
+
const appcondaSession = await signIn({ userName: credentials?.email, password: credentials?.password });
|
61
|
+
console.log(credentials);
|
62
|
+
/* try {
|
63
|
+
user = await prisma.user.findUnique({
|
64
|
+
where: {
|
65
|
+
email: credentials?.email,
|
66
|
+
},
|
67
|
+
});
|
68
|
+
} catch (e) {
|
69
|
+
console.error(e);
|
70
|
+
throw Error("Internal server error. Please try again later");
|
71
|
+
}
|
72
|
+
if (!user || !credentials) {
|
73
|
+
throw new Error("Invalid credentials");
|
74
|
+
}
|
75
|
+
if (!user.password) {
|
76
|
+
throw new Error("Invalid credentials");
|
77
|
+
}
|
78
|
+
|
79
|
+
const isValid = await verifyPassword(credentials.password, user.password);
|
80
|
+
|
81
|
+
if (!isValid) {
|
82
|
+
throw new Error("Invalid credentials");
|
83
|
+
}
|
84
|
+
|
85
|
+
if (user.twoFactorEnabled && credentials.backupCode) {
|
86
|
+
if (!ENCRYPTION_KEY) {
|
87
|
+
console.error("Missing encryption key; cannot proceed with backup code login.");
|
88
|
+
throw new Error("Internal Server Error");
|
89
|
+
}
|
90
|
+
|
91
|
+
if (!user.backupCodes) throw new Error("No backup codes found");
|
92
|
+
|
93
|
+
const backupCodes = JSON.parse(symmetricDecrypt(user.backupCodes, ENCRYPTION_KEY));
|
94
|
+
|
95
|
+
// check if user-supplied code matches one
|
96
|
+
const index = backupCodes.indexOf(credentials.backupCode.replaceAll("-", ""));
|
97
|
+
if (index === -1) throw new Error("Invalid backup code");
|
98
|
+
|
99
|
+
// delete verified backup code and re-encrypt remaining
|
100
|
+
backupCodes[index] = null;
|
101
|
+
await prisma.user.update({
|
102
|
+
where: {
|
103
|
+
id: user.id,
|
104
|
+
},
|
105
|
+
data: {
|
106
|
+
backupCodes: symmetricEncrypt(JSON.stringify(backupCodes), ENCRYPTION_KEY),
|
107
|
+
},
|
108
|
+
});
|
109
|
+
} else if (user.twoFactorEnabled) {
|
110
|
+
if (!credentials.totpCode) {
|
111
|
+
throw new Error("second factor required");
|
112
|
+
}
|
113
|
+
|
114
|
+
if (!user.twoFactorSecret) {
|
115
|
+
throw new Error("Internal Server Error");
|
116
|
+
}
|
117
|
+
|
118
|
+
if (!ENCRYPTION_KEY) {
|
119
|
+
throw new Error("Internal Server Error");
|
120
|
+
}
|
121
|
+
|
122
|
+
const secret = symmetricDecrypt(user.twoFactorSecret, ENCRYPTION_KEY);
|
123
|
+
if (secret.length !== 32) {
|
124
|
+
throw new Error("Internal Server Error");
|
125
|
+
}
|
126
|
+
|
127
|
+
const isValidToken = (await import("./totp")).totpAuthenticatorCheck(credentials.totpCode, secret);
|
128
|
+
if (!isValidToken) {
|
129
|
+
throw new Error("Invalid second factor code");
|
130
|
+
}
|
131
|
+
} */
|
132
|
+
console.log("asafdf");
|
133
|
+
return {
|
134
|
+
id: appcondaSession.userId,
|
135
|
+
email: appcondaSession.providerUid,
|
136
|
+
emailVerified: true,
|
137
|
+
imageUrl: "",
|
138
|
+
};
|
139
|
+
},
|
140
|
+
}),
|
141
|
+
CredentialsProvider({
|
142
|
+
id: "token",
|
143
|
+
// The name to display on the sign in form (e.g. "Sign in with...")
|
144
|
+
name: "Token",
|
145
|
+
// The credentials is used to generate a suitable form on the sign in page.
|
146
|
+
// You can specify whatever fields you are expecting to be submitted.
|
147
|
+
// e.g. domain, username, password, 2FA token, etc.
|
148
|
+
// You can pass any HTML attribute to the <input> tag through the object.
|
149
|
+
credentials: {
|
150
|
+
token: {
|
151
|
+
label: "Verification Token",
|
152
|
+
type: "string",
|
153
|
+
},
|
154
|
+
},
|
155
|
+
async authorize(credentials, _req) {
|
156
|
+
let user;
|
157
|
+
/* try {
|
158
|
+
if (!credentials?.token) {
|
159
|
+
throw new Error("Token not found");
|
160
|
+
}
|
161
|
+
const { id } = await verifyToken(credentials?.token);
|
162
|
+
user = await prisma.user.findUnique({
|
163
|
+
where: {
|
164
|
+
id: id,
|
165
|
+
},
|
166
|
+
});
|
167
|
+
} catch (e) {
|
168
|
+
console.error(e);
|
169
|
+
throw new Error("Either a user does not match the provided token or the token is invalid");
|
170
|
+
}
|
171
|
+
|
172
|
+
if (!user) {
|
173
|
+
throw new Error("Either a user does not match the provided token or the token is invalid");
|
174
|
+
}
|
175
|
+
|
176
|
+
if (user.emailVerified) {
|
177
|
+
throw new Error("Email already verified");
|
178
|
+
}
|
179
|
+
|
180
|
+
user = await updateUser(user.id, { emailVerified: new Date() }); */
|
181
|
+
return user || null;
|
182
|
+
},
|
183
|
+
}),
|
184
|
+
// Conditionally add enterprise SSO providers
|
185
|
+
...(getEnv().ENTERPRISE_LICENSE_KEY ? [] : []),
|
186
|
+
],
|
187
|
+
callbacks: {
|
188
|
+
async jwt({ token }) {
|
189
|
+
const { users } = await getSDKForCurrentUser();
|
190
|
+
const userList = await users.list([Query.equal("email", token.email)]);
|
191
|
+
const user = userList.users[0] ?? {};
|
192
|
+
/* const existingUser = await getUserByEmail(token?.email!);
|
193
|
+
|
194
|
+
if (!existingUser) {
|
195
|
+
return token;
|
196
|
+
} */
|
197
|
+
return {
|
198
|
+
...token,
|
199
|
+
//@ts-ignore
|
200
|
+
profile: { id: user.$id, ...user },
|
201
|
+
};
|
202
|
+
},
|
203
|
+
async session({ session, token }) {
|
204
|
+
//@ts-ignore
|
205
|
+
session.user.id = token?.id;
|
206
|
+
//@ts-ignore
|
207
|
+
session.user = token.profile;
|
208
|
+
return session;
|
209
|
+
},
|
210
|
+
//@ts-ignore
|
211
|
+
async signIn({ user, account }) {
|
212
|
+
/* if (account?.provider === "credentials" || account?.provider === "token") {
|
213
|
+
// check if user's email is verified or not
|
214
|
+
if (!user.emailVerified && !EMAIL_VERIFICATION_DISABLED) {
|
215
|
+
throw new Error("Email Verification is Pending");
|
216
|
+
}
|
217
|
+
return true;
|
218
|
+
}
|
219
|
+
if (ENTERPRISE_LICENSE_KEY) {
|
220
|
+
return handleSSOCallback({ user, account });
|
221
|
+
} */
|
222
|
+
return true;
|
223
|
+
},
|
224
|
+
},
|
225
|
+
pages: {
|
226
|
+
signIn: "/auth/login",
|
227
|
+
signOut: "/auth/logout",
|
228
|
+
error: "/auth/login", // Error code passed in query string as ?error=
|
229
|
+
},
|
230
|
+
};
|
231
|
+
}
|
232
|
+
return options;
|
233
|
+
};
|
234
|
+
})();
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aE9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy9hdXRoT3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVqQzs7Ozs7OztLQU9LO0FBRUwsTUFBTSxDQUFDLEtBQUssVUFBVSxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUEwQztJQUN6RixNQUFNLFdBQVcsR0FBRyxNQUFNLGlCQUFpQixFQUFFLENBQUM7SUFFOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBRTdFLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxFQUFFLENBQUM7SUFFMUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNqQyxJQUFJLEVBQUUsR0FBRztRQUNULFFBQVEsRUFBRSxJQUFJO1FBQ2QsUUFBUSxFQUFFLFFBQVE7UUFDbEIsTUFBTSxFQUFFLElBQUk7S0FDYixDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQztBQUVqQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1B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QUssQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFNLENBQUMsQ0FBQyxDQUFDLENBQUE7d0JBRXZFLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUVyQzs7Ozs2QkFJSzt3QkFFTCxPQUFPOzRCQUNMLEdBQUcsS0FBSzs0QkFDUixZQUFZOzRCQUNaLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxFQUFFO3lCQUNuQyxDQUFDO29CQUNKLENBQUM7b0JBQ0QsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7d0JBQzlCLFlBQVk7d0JBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQzt3QkFDNUIsWUFBWTt3QkFDWixPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7d0JBRTdCLE9BQU8sT0FBTyxDQUFDO29CQUNqQixDQUFDO29CQUNELFlBQVk7b0JBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQTBDO3dCQUNwRTs7Ozs7Ozs7OzhCQVNNO3dCQUNOLE9BQU8sSUFBSSxDQUFDO29CQUNkLENBQUM7aUJBQ0Y7Z0JBQ0QsS0FBSyxFQUFFO29CQUNMLE1BQU0sRUFBRSxhQUFhO29CQUNyQixPQUFPLEVBQUUsY0FBYztvQkFDdkIsS0FBSyxFQUFFLGFBQWEsRUFBRSwrQ0FBK0M7aUJBQ3RFO2FBQ0YsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDLENBQUE7QUFDSCxDQUFDLENBQUMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOZXh0QXV0aE9wdGlvbnMgfSBmcm9tIFwibmV4dC1hdXRoXCI7XG5pbXBvcnQgQ3JlZGVudGlhbHNQcm92aWRlciBmcm9tIFwibmV4dC1hdXRoL3Byb3ZpZGVycy9jcmVkZW50aWFsc1wiO1xuaW1wb3J0IHsgY29va2llcyB9IGZyb20gXCJuZXh0L2hlYWRlcnNcIjtcbmltcG9ydCB7IGdldEFwcGNvbmRhQ2xpZW50IH0gZnJvbSBcIi4uL2dldEFwcGNvbmRhQ2xpZW50XCI7XG5pbXBvcnQgeyBBY2NvdW50IH0gZnJvbSBcIi4uL21vZHVsZXMvYWNjb3VudC9zZXJ2aWNlXCI7XG5pbXBvcnQgeyBnZXRFbnYgfSBmcm9tIFwiLi4vbGliL2VudlwiO1xuaW1wb3J0IHsgZ2V0U0RLRm9yQ3VycmVudFVzZXIgfSBmcm9tIFwiLi4vZ2V0U0RLRm9yQ3VycmVudFVzZXJcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbi8qIGNvbnN0IGdldEVudiA9ICgpID0+IHtcbiAgcmV0dXJuIHtcbiAgICBBUFBDT05EQV9FTkRQT0lOVDogJ3Byb2Nlc3MuZW52LkFQUENPTkRBX0VORFBPSU5UJyxcbiAgICBBUFBDT05EQV9DTElFTlRfRU5EUE9JTlQ6ICdwcm9jZXNzLmVudi5BUFBDT05EQV9DTElFTlRfRU5EUE9JTlQnLFxuICAgIF9TRVJWSUNFX1RPS0VOOiAncHJvY2Vzcy5lbnYuX1NFUlZJQ0VfVE9LRU4nLFxuICAgIEVOVEVSUFJJU0VfTElDRU5TRV9LRVk6ICdwcm9jZXNzLmVudi5FTlRFUlBSSVNFX0xJQ0VOU0VfS0VZJyxcbiAgfTtcbn07ICovXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzaWduSW4oeyB1c2VyTmFtZSwgcGFzc3dvcmQgfTogeyB1c2VyTmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH0pIHtcbiAgY29uc3QgYWRtaW5DbGllbnQgPSBhd2FpdCBnZXRBcHBjb25kYUNsaWVudCgpO1xuXG4gIGNvbnN0IGFjY291bnQgPSBuZXcgQWNjb3VudChhZG1pbkNsaWVudCk7XG5cbiAgY29uc3Qgc2Vzc2lvbiA9IGF3YWl0IGFjY291bnQuY3JlYXRlRW1haWxQYXNzd29yZFNlc3Npb24odXNlck5hbWUsIHBhc3N3b3JkKTtcblxuICBjb25zdCBjID0gYXdhaXQgY29va2llcygpO1xuXG4gIGMuc2V0KCdhX3Nlc3Npb24nLCBzZXNzaW9uLnNlY3JldCwge1xuICAgIHBhdGg6IFwiL1wiLFxuICAgIGh0dHBPbmx5OiB0cnVlLFxuICAgIHNhbWVTaXRlOiBcInN0cmljdFwiLFxuICAgIHNlY3VyZTogdHJ1ZSxcbiAgfSk7XG5cbiAgcmV0dXJuIHNlc3Npb247XG5cbn1cblxuZXhwb3J0IGNvbnN0IGF1dGhPcHRpb25zID0gKCgpID0+IHtcbiAgbGV0IG9wdGlvbnMgOiBhbnk9IG51bGw7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBpZiAob3B0aW9ucyA9PSBudWxsKSB7XG4gICAgICBvcHRpb25zID0ge1xuICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICBDcmVkZW50aWFsc1Byb3ZpZGVyKHtcbiAgICAgICAgICAgIGlkOiBcImNyZWRlbnRpYWxzXCIsXG4gICAgICAgICAgICAvLyBUaGUgbmFtZSB0byBkaXNwbGF5IG9uIHRoZSBzaWduIGluIGZvcm0gKGUuZy4gXCJTaWduIGluIHdpdGguLi5cIilcbiAgICAgICAgICAgIG5hbWU6IFwiQ3JlZGVudGlhbHNcIixcbiAgICAgICAgICAgIC8vIFRoZSBjcmVkZW50aWFscyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgc3VpdGFibGUgZm9ybSBvbiB0aGUgc2lnbiBpbiBwYWdlLlxuICAgICAgICAgICAgLy8gWW91IGNhbiBzcGVjaWZ5IHdoYXRldmVyIGZpZWxkcyB5b3UgYXJlIGV4cGVjdGluZyB0byBiZSBzdWJtaXR0ZWQuXG4gICAgICAgICAgICAvLyBlLmcuIGRvbWFpbiwgdXNlcm5hbWUsIHBhc3N3b3JkLCAyRkEgdG9rZW4sIGV0Yy5cbiAgICAgICAgICAgIC8vIFlvdSBjYW4gcGFzcyBhbnkgSFRNTCBhdHRyaWJ1dGUgdG8gdGhlIDxpbnB1dD4gdGFnIHRocm91Z2ggdGhlIG9iamVjdC5cbiAgICAgICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICAgIGVtYWlsOiB7XG4gICAgICAgICAgICAgICAgbGFiZWw6IFwiRW1haWwgQWRkcmVzc1wiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJZb3VyIGVtYWlsIGFkZHJlc3NcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcGFzc3dvcmQ6IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJQYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogXCJZb3VyIHBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHRvdHBDb2RlOiB7IGxhYmVsOiBcIlR3by1mYWN0b3IgQ29kZVwiLCB0eXBlOiBcImlucHV0XCIsIHBsYWNlaG9sZGVyOiBcIkNvZGUgZnJvbSBhdXRoZW50aWNhdG9yIGFwcFwiIH0sXG4gICAgICAgICAgICAgIGJhY2t1cENvZGU6IHsgbGFiZWw6IFwiQmFja3VwIENvZGVcIiwgdHlwZTogXCJpbnB1dFwiLCBwbGFjZWhvbGRlcjogXCJUd28tZmFjdG9yIGJhY2t1cCBjb2RlXCIgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyBhdXRob3JpemUoY3JlZGVudGlhbHMsIF9yZXEpIHtcbiAgICAgICAgICAgICAgZGVidWdnZXI7XG4gICAgICAgICAgICAgIGxldCB1c2VyO1xuICAgICAgICAgICAgICBjb25zdCBhcHBjb25kYVNlc3Npb24gPSBhd2FpdCBzaWduSW4oeyB1c2VyTmFtZTogY3JlZGVudGlhbHM/LmVtYWlsIGFzIHN0cmluZywgcGFzc3dvcmQ6IGNyZWRlbnRpYWxzPy5wYXNzd29yZCBhcyBzdHJpbmcgfSk7XG5cbiAgICAgICAgICAgICAgY29uc29sZS5sb2coY3JlZGVudGlhbHMpO1xuICAgICAgICAgICAgICAvKiAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHByaXNtYS51c2VyLmZpbmRVbmlxdWUoe1xuICAgICAgICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgICAgICBlbWFpbDogY3JlZGVudGlhbHM/LmVtYWlsLFxuICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkludGVybmFsIHNlcnZlciBlcnJvci4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlclwiKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGlmICghdXNlciB8fCAhY3JlZGVudGlhbHMpIHtcbiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBjcmVkZW50aWFsc1wiKTtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgIGlmICghdXNlci5wYXNzd29yZCkge1xuICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNyZWRlbnRpYWxzXCIpO1xuICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZCA9IGF3YWl0IHZlcmlmeVBhc3N3b3JkKGNyZWRlbnRpYWxzLnBhc3N3b3JkLCB1c2VyLnBhc3N3b3JkKTtcbiAgICAgICBcbiAgICAgICAgICAgICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGNyZWRlbnRpYWxzXCIpO1xuICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgaWYgKHVzZXIudHdvRmFjdG9yRW5hYmxlZCAmJiBjcmVkZW50aWFscy5iYWNrdXBDb2RlKSB7XG4gICAgICAgICAgICAgICAgIGlmICghRU5DUllQVElPTl9LRVkpIHtcbiAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiTWlzc2luZyBlbmNyeXB0aW9uIGtleTsgY2Fubm90IHByb2NlZWQgd2l0aCBiYWNrdXAgY29kZSBsb2dpbi5cIik7XG4gICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIpO1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgXG4gICAgICAgICAgICAgICAgIGlmICghdXNlci5iYWNrdXBDb2RlcykgdGhyb3cgbmV3IEVycm9yKFwiTm8gYmFja3VwIGNvZGVzIGZvdW5kXCIpO1xuICAgICAgIFxuICAgICAgICAgICAgICAgICBjb25zdCBiYWNrdXBDb2RlcyA9IEpTT04ucGFyc2Uoc3ltbWV0cmljRGVjcnlwdCh1c2VyLmJhY2t1cENvZGVzLCBFTkNSWVBUSU9OX0tFWSkpO1xuICAgICAgIFxuICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiB1c2VyLXN1cHBsaWVkIGNvZGUgbWF0Y2hlcyBvbmVcbiAgICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBiYWNrdXBDb2Rlcy5pbmRleE9mKGNyZWRlbnRpYWxzLmJhY2t1cENvZGUucmVwbGFjZUFsbChcIi1cIiwgXCJcIikpO1xuICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJhY2t1cCBjb2RlXCIpO1xuICAgICAgIFxuICAgICAgICAgICAgICAgICAvLyBkZWxldGUgdmVyaWZpZWQgYmFja3VwIGNvZGUgYW5kIHJlLWVuY3J5cHQgcmVtYWluaW5nXG4gICAgICAgICAgICAgICAgIGJhY2t1cENvZGVzW2luZGV4XSA9IG51bGw7XG4gICAgICAgICAgICAgICAgIGF3YWl0IHByaXNtYS51c2VyLnVwZGF0ZSh7XG4gICAgICAgICAgICAgICAgICAgd2hlcmU6IHtcbiAgICAgICAgICAgICAgICAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgYmFja3VwQ29kZXM6IHN5bW1ldHJpY0VuY3J5cHQoSlNPTi5zdHJpbmdpZnkoYmFja3VwQ29kZXMpLCBFTkNSWVBUSU9OX0tFWSksXG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVzZXIudHdvRmFjdG9yRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgICBpZiAoIWNyZWRlbnRpYWxzLnRvdHBDb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwic2Vjb25kIGZhY3RvciByZXF1aXJlZFwiKTtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgICBpZiAoIXVzZXIudHdvRmFjdG9yU2VjcmV0KSB7XG4gICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIpO1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgXG4gICAgICAgICAgICAgICAgIGlmICghRU5DUllQVElPTl9LRVkpIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIik7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICBcbiAgICAgICAgICAgICAgICAgY29uc3Qgc2VjcmV0ID0gc3ltbWV0cmljRGVjcnlwdCh1c2VyLnR3b0ZhY3RvclNlY3JldCwgRU5DUllQVElPTl9LRVkpO1xuICAgICAgICAgICAgICAgICBpZiAoc2VjcmV0Lmxlbmd0aCAhPT0gMzIpIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnRlcm5hbCBTZXJ2ZXIgRXJyb3JcIik7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICBcbiAgICAgICAgICAgICAgICAgY29uc3QgaXNWYWxpZFRva2VuID0gKGF3YWl0IGltcG9ydChcIi4vdG90cFwiKSkudG90cEF1dGhlbnRpY2F0b3JDaGVjayhjcmVkZW50aWFscy50b3RwQ29kZSwgc2VjcmV0KTtcbiAgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkVG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIHNlY29uZCBmYWN0b3IgY29kZVwiKTtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgfSAqL1xuXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiYXNhZmRmXCIpXG5cbiAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogYXBwY29uZGFTZXNzaW9uLnVzZXJJZCxcbiAgICAgICAgICAgICAgICBlbWFpbDogYXBwY29uZGFTZXNzaW9uLnByb3ZpZGVyVWlkLFxuICAgICAgICAgICAgICAgIGVtYWlsVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgaW1hZ2VVcmw6IFwiXCIsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIENyZWRlbnRpYWxzUHJvdmlkZXIoe1xuICAgICAgICAgICAgaWQ6IFwidG9rZW5cIixcbiAgICAgICAgICAgIC8vIFRoZSBuYW1lIHRvIGRpc3BsYXkgb24gdGhlIHNpZ24gaW4gZm9ybSAoZS5nLiBcIlNpZ24gaW4gd2l0aC4uLlwiKVxuICAgICAgICAgICAgbmFtZTogXCJUb2tlblwiLFxuICAgICAgICAgICAgLy8gVGhlIGNyZWRlbnRpYWxzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgYSBzdWl0YWJsZSBmb3JtIG9uIHRoZSBzaWduIGluIHBhZ2UuXG4gICAgICAgICAgICAvLyBZb3UgY2FuIHNwZWNpZnkgd2hhdGV2ZXIgZmllbGRzIHlvdSBhcmUgZXhwZWN0aW5nIHRvIGJlIHN1Ym1pdHRlZC5cbiAgICAgICAgICAgIC8vIGUuZy4gZG9tYWluLCB1c2VybmFtZSwgcGFzc3dvcmQsIDJGQSB0b2tlbiwgZXRjLlxuICAgICAgICAgICAgLy8gWW91IGNhbiBwYXNzIGFueSBIVE1MIGF0dHJpYnV0ZSB0byB0aGUgPGlucHV0PiB0YWcgdGhyb3VnaCB0aGUgb2JqZWN0LlxuICAgICAgICAgICAgY3JlZGVudGlhbHM6IHtcbiAgICAgICAgICAgICAgdG9rZW46IHtcbiAgICAgICAgICAgICAgICBsYWJlbDogXCJWZXJpZmljYXRpb24gVG9rZW5cIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFzeW5jIGF1dGhvcml6ZShjcmVkZW50aWFscywgX3JlcSkge1xuXG4gICAgICAgICAgICAgIGxldCB1c2VyO1xuICAgICAgICAgICAgICAvKiAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgaWYgKCFjcmVkZW50aWFscz8udG9rZW4pIHtcbiAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUb2tlbiBub3QgZm91bmRcIik7XG4gICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgY29uc3QgeyBpZCB9ID0gYXdhaXQgdmVyaWZ5VG9rZW4oY3JlZGVudGlhbHM/LnRva2VuKTtcbiAgICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHByaXNtYS51c2VyLmZpbmRVbmlxdWUoe1xuICAgICAgICAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgICAgICBpZDogaWQsXG4gICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciBhIHVzZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHRva2VuIG9yIHRoZSB0b2tlbiBpcyBpbnZhbGlkXCIpO1xuICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciBhIHVzZXIgZG9lcyBub3QgbWF0Y2ggdGhlIHByb3ZpZGVkIHRva2VuIG9yIHRoZSB0b2tlbiBpcyBpbnZhbGlkXCIpO1xuICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgaWYgKHVzZXIuZW1haWxWZXJpZmllZCkge1xuICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFbWFpbCBhbHJlYWR5IHZlcmlmaWVkXCIpO1xuICAgICAgICAgICAgICAgfVxuICAgICAgIFxuICAgICAgICAgICAgICAgdXNlciA9IGF3YWl0IHVwZGF0ZVVzZXIodXNlci5pZCwgeyBlbWFpbFZlcmlmaWVkOiBuZXcgRGF0ZSgpIH0pOyAqL1xuXG4gICAgICAgICAgICAgIHJldHVybiB1c2VyIHx8IG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC8vIENvbmRpdGlvbmFsbHkgYWRkIGVudGVycHJpc2UgU1NPIHByb3ZpZGVyc1xuICAgICAgICAgIC4uLihnZXRFbnYoKS5FTlRFUlBSSVNFX0xJQ0VOU0VfS0VZID8gW10gOiBbXSksXG4gICAgICAgIF0sXG4gICAgICAgIGNhbGxiYWNrczoge1xuICAgICAgICAgIGFzeW5jIGp3dCh7IHRva2VuIH0pIHtcblxuICAgICAgICAgICAgY29uc3QgeyB1c2VycyB9ID0gYXdhaXQgZ2V0U0RLRm9yQ3VycmVudFVzZXIoKTtcbiAgICAgICAgICAgIGNvbnN0IHVzZXJMaXN0ID0gYXdhaXQgdXNlcnMubGlzdChbUXVlcnkuZXF1YWwoXCJlbWFpbFwiLCB0b2tlbi5lbWFpbCEpXSlcblxuICAgICAgICAgICAgY29uc3QgdXNlciA9IHVzZXJMaXN0LnVzZXJzWzBdID8/IHt9O1xuXG4gICAgICAgICAgICAvKiAgY29uc3QgZXhpc3RpbmdVc2VyID0gYXdhaXQgZ2V0VXNlckJ5RW1haWwodG9rZW4/LmVtYWlsISk7XG4gICAgICAgXG4gICAgICAgICAgICAgaWYgKCFleGlzdGluZ1VzZXIpIHtcbiAgICAgICAgICAgICAgIHJldHVybiB0b2tlbjtcbiAgICAgICAgICAgICB9ICovXG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLnRva2VuLFxuICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgICAgcHJvZmlsZTogeyBpZDogdXNlci4kaWQsIC4uLnVzZXIgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSxcbiAgICAgICAgICBhc3luYyBzZXNzaW9uKHsgc2Vzc2lvbiwgdG9rZW4gfSkge1xuICAgICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgICBzZXNzaW9uLnVzZXIuaWQgPSB0b2tlbj8uaWQ7XG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcbiAgICAgICAgICAgIHNlc3Npb24udXNlciA9IHRva2VuLnByb2ZpbGU7XG5cbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgICAgYXN5bmMgc2lnbkluKHsgdXNlciwgYWNjb3VudCB9OiB7IHVzZXI6IGFueTsgYWNjb3VudDogQWNjb3VudCB8IG51bGwgfSkge1xuICAgICAgICAgICAgLyogICBpZiAoYWNjb3VudD8ucHJvdmlkZXIgPT09IFwiY3JlZGVudGlhbHNcIiB8fCBhY2NvdW50Py5wcm92aWRlciA9PT0gXCJ0b2tlblwiKSB7XG4gICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgdXNlcidzIGVtYWlsIGlzIHZlcmlmaWVkIG9yIG5vdFxuICAgICAgICAgICAgICAgIGlmICghdXNlci5lbWFpbFZlcmlmaWVkICYmICFFTUFJTF9WRVJJRklDQVRJT05fRElTQUJMRUQpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtYWlsIFZlcmlmaWNhdGlvbiBpcyBQZW5kaW5nXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoRU5URVJQUklTRV9MSUNFTlNFX0tFWSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBoYW5kbGVTU09DYWxsYmFjayh7IHVzZXIsIGFjY291bnQgfSk7XG4gICAgICAgICAgICAgIH0gKi9cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHBhZ2VzOiB7XG4gICAgICAgICAgc2lnbkluOiBcIi9hdXRoL2xvZ2luXCIsXG4gICAgICAgICAgc2lnbk91dDogXCIvYXV0aC9sb2dvdXRcIixcbiAgICAgICAgICBlcnJvcjogXCIvYXV0aC9sb2dpblwiLCAvLyBFcnJvciBjb2RlIHBhc3NlZCBpbiBxdWVyeSBzdHJpbmcgYXMgP2Vycm9yPVxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxufSkoKTtcbiJdfQ==
|
@@ -0,0 +1,4 @@
|
|
1
|
+
export * from "./actionClient";
|
2
|
+
export * from "./auth";
|
3
|
+
export * from "./nextAuthHandler";
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWN0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hY3Rpb25DbGllbnRcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dGhcIjtcbmV4cG9ydCAqIGZyb20gXCIuL25leHRBdXRoSGFuZGxlclwiO1xuIl19
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const getHandler: () => any;
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import NextAuth from "next-auth";
|
2
|
+
import { authOptions } from "./authOptions";
|
3
|
+
export const getHandler = () => {
|
4
|
+
return NextAuth(authOptions());
|
5
|
+
};
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dEF1dGhIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FjdGlvbnMvbmV4dEF1dGhIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUU7SUFDM0IsT0FBTyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQTtBQUNsQyxDQUFDLENBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuaW1wb3J0IE5leHRBdXRoIGZyb20gXCJuZXh0LWF1dGhcIjtcbmltcG9ydCB7IGF1dGhPcHRpb25zIH0gZnJvbSBcIi4vYXV0aE9wdGlvbnNcIjtcblxuZXhwb3J0IGNvbnN0IGdldEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgcmV0dXJuIE5leHRBdXRoKGF1dGhPcHRpb25zKCkpXG59IDtcblxuIl19
|
package/dist/client.d.ts
ADDED
@@ -0,0 +1,141 @@
|
|
1
|
+
import { Models } from './models';
|
2
|
+
type Payload = {
|
3
|
+
[key: string]: any;
|
4
|
+
};
|
5
|
+
type UploadProgress = {
|
6
|
+
$id: string;
|
7
|
+
progress: number;
|
8
|
+
sizeUploaded: number;
|
9
|
+
chunksTotal: number;
|
10
|
+
chunksUploaded: number;
|
11
|
+
};
|
12
|
+
type Headers = {
|
13
|
+
[key: string]: string;
|
14
|
+
};
|
15
|
+
declare class AppcondaException extends Error {
|
16
|
+
code: number;
|
17
|
+
response: string;
|
18
|
+
type: string;
|
19
|
+
constructor(message: string, code?: number, type?: string, response?: string);
|
20
|
+
}
|
21
|
+
declare class Client {
|
22
|
+
static CHUNK_SIZE: number;
|
23
|
+
config: {
|
24
|
+
endpoint: string;
|
25
|
+
selfSigned: boolean;
|
26
|
+
project: string;
|
27
|
+
mode: string;
|
28
|
+
key: string;
|
29
|
+
jwt: string;
|
30
|
+
locale: string;
|
31
|
+
session: string;
|
32
|
+
forwardeduseragent: string;
|
33
|
+
};
|
34
|
+
headers: Headers;
|
35
|
+
/**
|
36
|
+
* Set Endpoint
|
37
|
+
*
|
38
|
+
* Your project endpoint
|
39
|
+
*
|
40
|
+
* @param {string} endpoint
|
41
|
+
*
|
42
|
+
* @returns {this}
|
43
|
+
*/
|
44
|
+
setEndpoint(endpoint: string): this;
|
45
|
+
/**
|
46
|
+
* Set self-signed
|
47
|
+
*
|
48
|
+
* @param {boolean} selfSigned
|
49
|
+
*
|
50
|
+
* @returns {this}
|
51
|
+
*/
|
52
|
+
setSelfSigned(selfSigned: boolean): this;
|
53
|
+
/**
|
54
|
+
* Add header
|
55
|
+
*
|
56
|
+
* @param {string} header
|
57
|
+
* @param {string} value
|
58
|
+
*
|
59
|
+
* @returns {this}
|
60
|
+
*/
|
61
|
+
addHeader(header: string, value: string): this;
|
62
|
+
/**
|
63
|
+
* Set Project
|
64
|
+
*
|
65
|
+
* Your project ID
|
66
|
+
*
|
67
|
+
* @param value string
|
68
|
+
*
|
69
|
+
* @return {this}
|
70
|
+
*/
|
71
|
+
setProject(value: string): this;
|
72
|
+
/**
|
73
|
+
* Set Mode
|
74
|
+
*
|
75
|
+
* @param value string
|
76
|
+
*
|
77
|
+
* @return {this}
|
78
|
+
*/
|
79
|
+
setMode(value: string): this;
|
80
|
+
/**
|
81
|
+
* Set Key
|
82
|
+
*
|
83
|
+
* Your secret API key
|
84
|
+
*
|
85
|
+
* @param value string
|
86
|
+
*
|
87
|
+
* @return {this}
|
88
|
+
*/
|
89
|
+
setKey(value: string): this;
|
90
|
+
/**
|
91
|
+
* Set JWT
|
92
|
+
*
|
93
|
+
* Your secret JSON Web Token
|
94
|
+
*
|
95
|
+
* @param value string
|
96
|
+
*
|
97
|
+
* @return {this}
|
98
|
+
*/
|
99
|
+
setJWT(value: string): this;
|
100
|
+
/**
|
101
|
+
* Set Locale
|
102
|
+
*
|
103
|
+
* @param value string
|
104
|
+
*
|
105
|
+
* @return {this}
|
106
|
+
*/
|
107
|
+
setLocale(value: string): this;
|
108
|
+
/**
|
109
|
+
* Set Session
|
110
|
+
*
|
111
|
+
* The user session to authenticate with
|
112
|
+
*
|
113
|
+
* @param value string
|
114
|
+
*
|
115
|
+
* @return {this}
|
116
|
+
*/
|
117
|
+
setSession(value: string): this;
|
118
|
+
/**
|
119
|
+
* Set ForwardedUserAgent
|
120
|
+
*
|
121
|
+
* The user agent string of the client that made the request
|
122
|
+
*
|
123
|
+
* @param value string
|
124
|
+
*
|
125
|
+
* @return {this}
|
126
|
+
*/
|
127
|
+
setForwardedUserAgent(value: string): this;
|
128
|
+
setFallbackCookies(value: string): this;
|
129
|
+
prepareRequest(method: string, url: URL, headers?: Headers, params?: Payload): {
|
130
|
+
uri: string;
|
131
|
+
options: RequestInit;
|
132
|
+
};
|
133
|
+
chunkedUpload(method: string, url: URL, headers: Headers | undefined, originalPayload: Payload | undefined, onProgress: (progress: UploadProgress) => void): Promise<any>;
|
134
|
+
redirect(method: string, url: URL, headers?: Headers, params?: Payload): Promise<string>;
|
135
|
+
call(method: string, url: URL, headers?: Headers, params?: Payload, responseType?: string): Promise<any>;
|
136
|
+
static flatten(data: Payload, prefix?: string): Payload;
|
137
|
+
}
|
138
|
+
export { Client, AppcondaException };
|
139
|
+
export { Query } from './query';
|
140
|
+
export type { Models, Payload, UploadProgress };
|
141
|
+
export type { QueryTypes, QueryTypesList } from './query';
|