@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,73 @@
|
|
1
|
+
export class Sharding {
|
2
|
+
constructor(adapters) {
|
3
|
+
this.count = 0;
|
4
|
+
this.crc32Table = (() => {
|
5
|
+
let c;
|
6
|
+
const table = [];
|
7
|
+
for (let n = 0; n < 256; n++) {
|
8
|
+
c = n;
|
9
|
+
for (let k = 0; k < 8; k++) {
|
10
|
+
c = ((c & 1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));
|
11
|
+
}
|
12
|
+
table[n] = c;
|
13
|
+
}
|
14
|
+
return table;
|
15
|
+
})();
|
16
|
+
if (adapters.length === 0) {
|
17
|
+
throw new Error('No adapters provided');
|
18
|
+
}
|
19
|
+
this.count = adapters.length;
|
20
|
+
this.adapters = adapters;
|
21
|
+
}
|
22
|
+
async load(key, ttl, hash = '') {
|
23
|
+
const adapter = this.getAdapter(key);
|
24
|
+
return await adapter.load(key, ttl, hash);
|
25
|
+
}
|
26
|
+
async save(key, data, hash = '') {
|
27
|
+
return this.getAdapter(key).save(key, data, hash);
|
28
|
+
}
|
29
|
+
async list(key) {
|
30
|
+
return this.getAdapter(key).list(key);
|
31
|
+
}
|
32
|
+
async purge(key, hash = '') {
|
33
|
+
return this.getAdapter(key).purge(key, hash);
|
34
|
+
}
|
35
|
+
async flush() {
|
36
|
+
let result = true;
|
37
|
+
for (const adapter of this.adapters) {
|
38
|
+
result = await adapter.flush() ? result : false;
|
39
|
+
}
|
40
|
+
return result;
|
41
|
+
}
|
42
|
+
async ping() {
|
43
|
+
for (const adapter of this.adapters) {
|
44
|
+
if (!adapter.ping()) {
|
45
|
+
return false;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
return true;
|
49
|
+
}
|
50
|
+
async getSize() {
|
51
|
+
let size = 0;
|
52
|
+
for (const adapter of this.adapters) {
|
53
|
+
size += await adapter.getSize();
|
54
|
+
}
|
55
|
+
return size;
|
56
|
+
}
|
57
|
+
getAdapter(key) {
|
58
|
+
const hash = this.crc32(key);
|
59
|
+
const index = hash % this.count;
|
60
|
+
return this.adapters[index];
|
61
|
+
}
|
62
|
+
crc32(str) {
|
63
|
+
let crc = 0 ^ (-1);
|
64
|
+
for (let i = 0; i < str.length; i++) {
|
65
|
+
crc = (crc >>> 8) ^ this.crc32Table[(crc ^ str.charCodeAt(i)) & 0xff];
|
66
|
+
}
|
67
|
+
return (crc ^ (-1)) >>> 0;
|
68
|
+
}
|
69
|
+
async delWithStart(pattern) {
|
70
|
+
return 0;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2hhcmRpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL0NhY2hlL0FkYXB0ZXJzL1NoYXJkaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVJLE1BQU0sT0FBTyxRQUFRO0lBSWpCLFlBQVksUUFBbUI7UUFGckIsVUFBSyxHQUFXLENBQUMsQ0FBQztRQXVFcEIsZUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ3ZCLElBQUksQ0FBUyxDQUFDO1lBQ2QsTUFBTSxLQUFLLEdBQWEsRUFBRSxDQUFDO1lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDTixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7b0JBQ3pCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxDQUFDO2dCQUNELEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUEvRUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFB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QUssQ0FBQyxZQUFZLENBQUMsT0FBZTtRQUM5QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FjSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vQWRhcHRlclwiO1xuXG4gICAgZXhwb3J0IGNsYXNzIFNoYXJkaW5nIGltcGxlbWVudHMgQWRhcHRlciB7XG4gICAgICAgIHByb3RlY3RlZCBhZGFwdGVyczogQWRhcHRlcltdO1xuICAgICAgICBwcm90ZWN0ZWQgY291bnQ6IG51bWJlciA9IDA7XG5cbiAgICAgICAgY29uc3RydWN0b3IoYWRhcHRlcnM6IEFkYXB0ZXJbXSkge1xuICAgICAgICAgICAgaWYgKGFkYXB0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gYWRhcHRlcnMgcHJvdmlkZWQnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jb3VudCA9IGFkYXB0ZXJzLmxlbmd0aDtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRlcnMgPSBhZGFwdGVycztcbiAgICAgICAgfVxuXG4gICAgICBhc3luYyAgbG9hZChrZXk6IHN0cmluZywgdHRsOiBudW1iZXIsIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgICAgIGNvbnN0IGFkYXB0ZXIgPSAgdGhpcy5nZXRBZGFwdGVyKGtleSk7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgYWRhcHRlci5sb2FkKGtleSwgdHRsLCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIHNhdmUoa2V5OiBzdHJpbmcsIGRhdGE6IGFueSwgaGFzaDogc3RyaW5nID0gJycpOiBQcm9taXNlPGJvb2xlYW4gfCBzdHJpbmcgfCBhbnlbXT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWRhcHRlcihrZXkpLnNhdmUoa2V5LCBkYXRhLCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGxpc3Qoa2V5OiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGFwdGVyKGtleSkubGlzdChrZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgcHVyZ2Uoa2V5OiBzdHJpbmcsIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRBZGFwdGVyKGtleSkucHVyZ2Uoa2V5LCBoYXNoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycykge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGFkYXB0ZXIuZmx1c2goKSA/IHJlc3VsdCA6IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFkYXB0ZXIgb2YgdGhpcy5hZGFwdGVycykge1xuICAgICAgICAgICAgICAgIGlmICghYWRhcHRlci5waW5nKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZ2V0U2l6ZSgpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICAgICAgbGV0IHNpemUgPSAwO1xuICAgICAgICAgICAgZm9yIChjb25zdCBhZGFwdGVyIG9mIHRoaXMuYWRhcHRlcnMpIHtcbiAgICAgICAgICAgICAgICBzaXplICs9IGF3YWl0IGFkYXB0ZXIuZ2V0U2l6ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNpemU7XG4gICAgICAgIH1cblxuICAgICAgICBwcm90ZWN0ZWQgZ2V0QWRhcHRlcihrZXk6IHN0cmluZyk6IEFkYXB0ZXIge1xuICAgICAgICAgICAgY29uc3QgaGFzaCA9IHRoaXMuY3JjMzIoa2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gaGFzaCAlIHRoaXMuY291bnQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyc1tpbmRleF07XG4gICAgICAgIH1cblxuICAgICAgICBwcml2YXRlIGNyYzMyKHN0cjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgICAgIGxldCBjcmMgPSAwIF4gKC0xKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY3JjID0gKGNyYyA+Pj4gOCkgXiB0aGlzLmNyYzMyVGFibGVbKGNyYyBeIHN0ci5jaGFyQ29kZUF0KGkpKSAmIDB4ZmZdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIChjcmMgXiAoLTEpKSA+Pj4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGRlbFdpdGhTdGFydChwYXR0ZXJuOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIHByaXZhdGUgY3JjMzJUYWJsZSA9ICgoKSA9PiB7XG4gICAgICAgICAgICBsZXQgYzogbnVtYmVyO1xuICAgICAgICAgICAgY29uc3QgdGFibGU6IG51bWJlcltdID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBuID0gMDsgbiA8IDI1NjsgbisrKSB7XG4gICAgICAgICAgICAgICAgYyA9IG47XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCA4OyBrKyspIHtcbiAgICAgICAgICAgICAgICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGFibGVbbl0gPSBjO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRhYmxlO1xuICAgICAgICB9KSgpO1xuICAgIH1cbiJdfQ==
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { Adapter } from "./Adapter";
|
2
|
+
export declare class Cache {
|
3
|
+
private adapter;
|
4
|
+
static caseSensitive: boolean;
|
5
|
+
constructor(adapter: Adapter);
|
6
|
+
private constructKey;
|
7
|
+
static setCaseSensitivity(value: boolean): boolean;
|
8
|
+
load(key: string | string[], ttl?: number, hash?: string): Promise<any>;
|
9
|
+
save(key: string | string[], data: any, hash?: string): Promise<boolean | string | any[]>;
|
10
|
+
list(key: string | string[]): Promise<string[]>;
|
11
|
+
purge(key: string | string[], hash?: string): Promise<boolean>;
|
12
|
+
flush(): Promise<boolean>;
|
13
|
+
ping(): Promise<boolean>;
|
14
|
+
getSize(): Promise<number>;
|
15
|
+
delWithStart(keys: string | string[]): Promise<number>;
|
16
|
+
}
|
@@ -0,0 +1,52 @@
|
|
1
|
+
export class Cache {
|
2
|
+
constructor(adapter) {
|
3
|
+
this.adapter = adapter;
|
4
|
+
}
|
5
|
+
constructKey(key) {
|
6
|
+
if (Array.isArray(key)) {
|
7
|
+
key = key.join(':');
|
8
|
+
}
|
9
|
+
return key;
|
10
|
+
}
|
11
|
+
static setCaseSensitivity(value) {
|
12
|
+
return this.caseSensitive = value;
|
13
|
+
}
|
14
|
+
async load(key, ttl = 60 * 60 * 24, hash = '') {
|
15
|
+
key = this.constructKey(key);
|
16
|
+
key = Cache.caseSensitive ? key : key.toLowerCase();
|
17
|
+
hash = Cache.caseSensitive ? hash : hash.toLowerCase();
|
18
|
+
return await this.adapter.load(key, ttl, hash);
|
19
|
+
}
|
20
|
+
async save(key, data, hash = '') {
|
21
|
+
key = this.constructKey(key);
|
22
|
+
key = Cache.caseSensitive ? key : key.toLowerCase();
|
23
|
+
hash = Cache.caseSensitive ? hash : hash.toLowerCase();
|
24
|
+
return this.adapter.save(key, data, hash);
|
25
|
+
}
|
26
|
+
async list(key) {
|
27
|
+
key = this.constructKey(key);
|
28
|
+
key = Cache.caseSensitive ? key : key.toLowerCase();
|
29
|
+
return this.adapter.list(key);
|
30
|
+
}
|
31
|
+
async purge(key, hash = '') {
|
32
|
+
key = this.constructKey(key);
|
33
|
+
key = Cache.caseSensitive ? key : key.toLowerCase();
|
34
|
+
hash = Cache.caseSensitive ? hash : hash.toLowerCase();
|
35
|
+
return this.adapter.purge(key, hash);
|
36
|
+
}
|
37
|
+
async flush() {
|
38
|
+
return this.adapter.flush();
|
39
|
+
}
|
40
|
+
async ping() {
|
41
|
+
return this.adapter.ping();
|
42
|
+
}
|
43
|
+
async getSize() {
|
44
|
+
return this.adapter.getSize();
|
45
|
+
}
|
46
|
+
async delWithStart(keys) {
|
47
|
+
const pattern = this.constructKey(keys);
|
48
|
+
return this.adapter.delWithStart(pattern);
|
49
|
+
}
|
50
|
+
}
|
51
|
+
Cache.caseSensitive = false;
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL0NhY2hlL0NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxLQUFLO0lBSWQsWUFBWSxPQUFnQjtRQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUMzQixDQUFDO0lBRU8sWUFBWSxDQUFDLEdBQVE7UUFDekIsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDckIsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEIsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFjO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBc0IsRUFBRSxNQUFjLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLE9BQWUsRUFBRTtRQUNuRixHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQXNCLEVBQUUsSUFBUyxFQUFFLE9BQWUsRUFBRTtRQUVsRSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFzQjtRQUNwQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFcEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFzQixFQUFFLE9BQWUsRUFBRTtRQUV4RCxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUU3QixHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sS0FBSyxDQUFDLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUF1QjtRQUM3QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7QUFwRWEsbUJBQWEsR0FBWSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZGFwdGVyIH0gZnJvbSBcIi4vQWRhcHRlclwiO1xuXG5cbmV4cG9ydCBjbGFzcyBDYWNoZSB7XG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBBZGFwdGVyO1xuICAgIHB1YmxpYyBzdGF0aWMgY2FzZVNlbnNpdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoYWRhcHRlcjogQWRhcHRlcikge1xuICAgICAgICB0aGlzLmFkYXB0ZXIgPSBhZGFwdGVyO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uc3RydWN0S2V5KGtleTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoa2V5KSkge1xuICAgICAgICAgICAga2V5ID0ga2V5LmpvaW4oJzonKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzZXRDYXNlU2Vuc2l0aXZpdHkodmFsdWU6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2FzZVNlbnNpdGl2ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkKGtleTogc3RyaW5nIHwgc3RyaW5nW10sIHR0bDogbnVtYmVyID0gNjAgKiA2MCAqIDI0LCBoYXNoOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGtleSA9IHRoaXMuY29uc3RydWN0S2V5KGtleSk7XG4gICAgICAgIGtleSA9IENhY2hlLmNhc2VTZW5zaXRpdmUgPyBrZXkgOiBrZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaGFzaCA9IENhY2hlLmNhc2VTZW5zaXRpdmUgPyBoYXNoIDogaGFzaC50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmFkYXB0ZXIubG9hZChrZXksIHR0bCwgaGFzaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHNhdmUoa2V5OiBzdHJpbmcgfCBzdHJpbmdbXSwgZGF0YTogYW55LCBoYXNoOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8Ym9vbGVhbiB8IHN0cmluZyB8IGFueVtdPiB7XG5cbiAgICAgICAga2V5ID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5KTtcblxuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGhhc2ggPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8gaGFzaCA6IGhhc2gudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnNhdmUoa2V5LCBkYXRhLCBoYXNoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbGlzdChrZXk6IHN0cmluZyB8IHN0cmluZ1tdKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBrZXkgPSB0aGlzLmNvbnN0cnVjdEtleShrZXkpO1xuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYWRhcHRlci5saXN0KGtleSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHB1cmdlKGtleTogc3RyaW5nIHwgc3RyaW5nW10sIGhhc2g6IHN0cmluZyA9ICcnKTogUHJvbWlzZTxib29sZWFuPiB7XG5cbiAgICAgICAga2V5ID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5KTtcblxuICAgICAgICBrZXkgPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8ga2V5IDoga2V5LnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGhhc2ggPSBDYWNoZS5jYXNlU2Vuc2l0aXZlID8gaGFzaCA6IGhhc2gudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLnB1cmdlKGtleSwgaGFzaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGFwdGVyLmZsdXNoKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHBpbmcoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucGluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRTaXplKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZ2V0U2l6ZSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkZWxXaXRoU3RhcnQoa2V5czogc3RyaW5nIHwgc3RyaW5nW10pOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCBwYXR0ZXJuID0gdGhpcy5jb25zdHJ1Y3RLZXkoa2V5cyk7XG4gICAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuZGVsV2l0aFN0YXJ0KHBhdHRlcm4pO1xuICAgIH1cbn0iXX0=
|
@@ -0,0 +1,5 @@
|
|
1
|
+
export * from './Cache';
|
2
|
+
export * from './Adapters/None';
|
3
|
+
export * from './Adapters/Sharding';
|
4
|
+
export * from './Adapters/Memory';
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL0NhY2hlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9DYWNoZSc7XG5leHBvcnQgKiBmcm9tICcuL0FkYXB0ZXJzL05vbmUnO1xuZXhwb3J0ICogZnJvbSAnLi9BZGFwdGVycy9TaGFyZGluZyc7XG5leHBvcnQgKiBmcm9tICcuL0FkYXB0ZXJzL01lbW9yeSc7Il19
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvQ2FjaGUvdGVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiIl19
|
@@ -0,0 +1,38 @@
|
|
1
|
+
export declare class Registry {
|
2
|
+
/**
|
3
|
+
* List of all callbacks
|
4
|
+
*/
|
5
|
+
protected callbacks: {
|
6
|
+
[key: string]: () => any;
|
7
|
+
};
|
8
|
+
/**
|
9
|
+
* List of all fresh resources
|
10
|
+
*/
|
11
|
+
protected fresh: {
|
12
|
+
[key: string]: boolean;
|
13
|
+
};
|
14
|
+
/**
|
15
|
+
* List of all connections
|
16
|
+
*/
|
17
|
+
protected registry: {
|
18
|
+
[key: string]: {
|
19
|
+
[key: string]: any;
|
20
|
+
};
|
21
|
+
};
|
22
|
+
/**
|
23
|
+
* Current context
|
24
|
+
*/
|
25
|
+
protected _context: string;
|
26
|
+
/**
|
27
|
+
* Set a new connection callback
|
28
|
+
*/
|
29
|
+
set(name: string, callback: () => any, fresh?: boolean): this;
|
30
|
+
/**
|
31
|
+
* If connection has been created returns it, otherwise create and then return it
|
32
|
+
*/
|
33
|
+
get(name: string, fresh?: boolean): any;
|
34
|
+
/**
|
35
|
+
* Set the current context
|
36
|
+
*/
|
37
|
+
context(name: string): this;
|
38
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
export class Registry {
|
2
|
+
constructor() {
|
3
|
+
/**
|
4
|
+
* List of all callbacks
|
5
|
+
*/
|
6
|
+
this.callbacks = {};
|
7
|
+
/**
|
8
|
+
* List of all fresh resources
|
9
|
+
*/
|
10
|
+
this.fresh = {};
|
11
|
+
/**
|
12
|
+
* List of all connections
|
13
|
+
*/
|
14
|
+
this.registry = {
|
15
|
+
'default': {},
|
16
|
+
};
|
17
|
+
/**
|
18
|
+
* Current context
|
19
|
+
*/
|
20
|
+
this._context = 'default';
|
21
|
+
}
|
22
|
+
/**
|
23
|
+
* Set a new connection callback
|
24
|
+
*/
|
25
|
+
set(name, callback, fresh = false) {
|
26
|
+
if (this.registry[this._context].hasOwnProperty(name)) {
|
27
|
+
delete this.registry[this._context][name];
|
28
|
+
}
|
29
|
+
this.fresh[name] = fresh;
|
30
|
+
this.callbacks[name] = callback;
|
31
|
+
return this;
|
32
|
+
}
|
33
|
+
/**
|
34
|
+
* If connection has been created returns it, otherwise create and then return it
|
35
|
+
*/
|
36
|
+
get(name, fresh = false) {
|
37
|
+
if (!this.registry[this._context].hasOwnProperty(name) || fresh || this.fresh[name]) {
|
38
|
+
if (!this.callbacks.hasOwnProperty(name)) {
|
39
|
+
throw new Error(`No callback named "${name}" found when trying to create connection`);
|
40
|
+
}
|
41
|
+
this.registry[this._context][name] = this.callbacks[name]();
|
42
|
+
}
|
43
|
+
return this.registry[this._context][name];
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Set the current context
|
47
|
+
*/
|
48
|
+
context(name) {
|
49
|
+
if (!this.registry.hasOwnProperty(name)) {
|
50
|
+
this.registry[name] = {};
|
51
|
+
}
|
52
|
+
this._context = name;
|
53
|
+
return this;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVnaXN0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL1JlZ2lzdHJ5L1JlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNJLE1BQU0sT0FBTyxRQUFRO0lBQXJCO1FBQ0k7O1dBRUc7UUFDTyxjQUFTLEdBQWlDLEVBQUUsQ0FBQztRQUV2RDs7V0FFRztRQUNPLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRWpEOztXQUVHO1FBQ08sYUFBUSxHQUE4QztZQUM1RCxTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBRUY7O1dBRUc7UUFDTyxhQUFRLEdBQVcsU0FBUyxDQUFDO0lBMkMzQyxDQUFDO0lBekNHOztPQUVHO0lBQ0ksR0FBRyxDQUFDLElBQVksRUFBRSxRQUFtQixFQUFFLFFBQWlCLEtBQUs7UUFDaEUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUVoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxHQUFHLENBQUMsSUFBWSxFQUFFLFFBQWlCLEtBQUs7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xGLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUN2QyxNQUFNLElBQUksS0FBSyxDQUFDLHNCQUFzQixJQUFJLDBDQUEwQyxDQUFDLENBQUM7WUFDMUYsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPLENBQUMsSUFBWTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiXG4gICAgZXhwb3J0IGNsYXNzIFJlZ2lzdHJ5IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIExpc3Qgb2YgYWxsIGNhbGxiYWNrc1xuICAgICAgICAgKi9cbiAgICAgICAgcHJvdGVjdGVkIGNhbGxiYWNrczogeyBba2V5OiBzdHJpbmddOiAoKSA9PiBhbnkgfSA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMaXN0IG9mIGFsbCBmcmVzaCByZXNvdXJjZXNcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCBmcmVzaDogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH0gPSB7fTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTGlzdCBvZiBhbGwgY29ubmVjdGlvbnNcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCByZWdpc3RyeTogeyBba2V5OiBzdHJpbmddOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IH0gPSB7XG4gICAgICAgICAgICAnZGVmYXVsdCc6IHt9LFxuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDdXJyZW50IGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIHByb3RlY3RlZCBfY29udGV4dDogc3RyaW5nID0gJ2RlZmF1bHQnO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXQgYSBuZXcgY29ubmVjdGlvbiBjYWxsYmFja1xuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIGNhbGxiYWNrOiAoKSA9PiBhbnksIGZyZXNoOiBib29sZWFuID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMucmVnaXN0cnlbdGhpcy5fY29udGV4dF1bbmFtZV07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZnJlc2hbbmFtZV0gPSBmcmVzaDtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2tzW25hbWVdID0gY2FsbGJhY2s7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIGNvbm5lY3Rpb24gaGFzIGJlZW4gY3JlYXRlZCByZXR1cm5zIGl0LCBvdGhlcndpc2UgY3JlYXRlIGFuZCB0aGVuIHJldHVybiBpdFxuICAgICAgICAgKi9cbiAgICAgICAgcHVibGljIGdldChuYW1lOiBzdHJpbmcsIGZyZXNoOiBib29sZWFuID0gZmFsc2UpOiBhbnkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdLmhhc093blByb3BlcnR5KG5hbWUpIHx8IGZyZXNoIHx8IHRoaXMuZnJlc2hbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuY2FsbGJhY2tzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2FsbGJhY2sgbmFtZWQgXCIke25hbWV9XCIgZm91bmQgd2hlbiB0cnlpbmcgdG8gY3JlYXRlIGNvbm5lY3Rpb25gKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdHJ5W3RoaXMuX2NvbnRleHRdW25hbWVdID0gdGhpcy5jYWxsYmFja3NbbmFtZV0oKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVnaXN0cnlbdGhpcy5fY29udGV4dF1bbmFtZV07XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2V0IHRoZSBjdXJyZW50IGNvbnRleHRcbiAgICAgICAgICovXG4gICAgICAgIHB1YmxpYyBjb250ZXh0KG5hbWU6IHN0cmluZyk6IHRoaXMge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlZ2lzdHJ5Lmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWdpc3RyeVtuYW1lXSA9IHt9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jb250ZXh0ID0gbmFtZTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG4iXX0=
|
@@ -0,0 +1 @@
|
|
1
|
+
export * from './Registry';
|
@@ -0,0 +1,2 @@
|
|
1
|
+
export * from './Registry';
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL1JlZ2lzdHJ5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9SZWdpc3RyeSc7Il19
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { Cache, Memory } from "./Cache";
|
2
|
+
import { Registry } from "./Registry";
|
3
|
+
export const registry = new Registry();
|
4
|
+
registry.set('cache', () => {
|
5
|
+
const memoryAdapter = new Memory();
|
6
|
+
const cacheProvider = new Cache(memoryAdapter);
|
7
|
+
return cacheProvider;
|
8
|
+
});
|
9
|
+
export class Services {
|
10
|
+
static get Cache() {
|
11
|
+
return registry.get('cache');
|
12
|
+
}
|
13
|
+
}
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL1NlcnZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLdEMsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7QUFFdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFO0lBR3ZCLE1BQU0sYUFBYSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7SUFFbkMsTUFBTSxhQUFhLEdBQUcsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFL0MsT0FBTyxhQUFhLENBQUM7QUFFekIsQ0FBQyxDQUFDLENBQUE7QUFFRixNQUFNLE9BQU8sUUFBUTtJQUNWLE1BQU0sS0FBSyxLQUFLO1FBQ25CLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQyxDQUFDO0NBRUoiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZSwgTWVtb3J5IH0gZnJvbSBcIi4vQ2FjaGVcIjtcbmltcG9ydCB7IFJlZ2lzdHJ5IH0gZnJvbSBcIi4vUmVnaXN0cnlcIjtcblxuXG5cblxuZXhwb3J0IGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7XG5cbnJlZ2lzdHJ5LnNldCgnY2FjaGUnLCAoKSA9PiB7XG4gIFxuXG4gICAgY29uc3QgbWVtb3J5QWRhcHRlciA9IG5ldyBNZW1vcnkoKTtcblxuICAgIGNvbnN0IGNhY2hlUHJvdmlkZXIgPSBuZXcgQ2FjaGUobWVtb3J5QWRhcHRlcik7XG5cbiAgICByZXR1cm4gY2FjaGVQcm92aWRlcjtcblxufSlcblxuZXhwb3J0IGNsYXNzIFNlcnZpY2VzIHtcbiAgICBwdWJsaWMgc3RhdGljIGdldCBDYWNoZSgpOiBDYWNoZSB7XG4gICAgICAgIHJldHVybiByZWdpc3RyeS5nZXQoJ2NhY2hlJyk7XG4gICAgfVxuICAgXG59Il19
|
@@ -0,0 +1,23 @@
|
|
1
|
+
/**
|
2
|
+
*
|
3
|
+
* @param text Value to be encrypted
|
4
|
+
* @param key Key used to encrypt value must be 32 bytes for AES256 encryption algorithm
|
5
|
+
*
|
6
|
+
* @returns Encrypted value using key
|
7
|
+
*/
|
8
|
+
export declare const symmetricEncrypt: (text: string, key: string) => string;
|
9
|
+
/**
|
10
|
+
*
|
11
|
+
* @param text Value to decrypt
|
12
|
+
* @param key Key used to decrypt value must be 32 bytes for AES256 encryption algorithm
|
13
|
+
*/
|
14
|
+
export declare const symmetricDecrypt: (text: string, key: string) => string;
|
15
|
+
export declare const getHash: (key: string) => string;
|
16
|
+
export declare const encryptAES128: (encryptionKey: string, data: string) => string;
|
17
|
+
export declare const decryptAES128: (encryptionKey: string, data: string) => string;
|
18
|
+
export declare const generateLocalSignedUrl: (fileName: string, environmentId: string, fileType: string) => {
|
19
|
+
signature: string;
|
20
|
+
uuid: string;
|
21
|
+
timestamp: number;
|
22
|
+
};
|
23
|
+
export declare const validateLocalSignedUrl: (uuid: string, fileName: string, environmentId: string, fileType: string, timestamp: number, signature: string, secret: string) => boolean;
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import crypto from "crypto";
|
2
|
+
import { createCipheriv, createDecipheriv, createHash, createHmac, randomBytes } from "crypto";
|
3
|
+
import { getEnv } from "./env";
|
4
|
+
const ALGORITHM = "aes256";
|
5
|
+
const INPUT_ENCODING = "utf8";
|
6
|
+
const OUTPUT_ENCODING = "hex";
|
7
|
+
const IV_LENGTH = 16; // AES blocksize
|
8
|
+
/**
|
9
|
+
*
|
10
|
+
* @param text Value to be encrypted
|
11
|
+
* @param key Key used to encrypt value must be 32 bytes for AES256 encryption algorithm
|
12
|
+
*
|
13
|
+
* @returns Encrypted value using key
|
14
|
+
*/
|
15
|
+
export const symmetricEncrypt = (text, key) => {
|
16
|
+
const BUFFER_ENCODING = getEnv().ENCRYPTION_KEY.length === 32 ? "latin1" : "hex";
|
17
|
+
const _key = Buffer.from(key, BUFFER_ENCODING);
|
18
|
+
const iv = crypto.randomBytes(IV_LENGTH);
|
19
|
+
// @ts-ignore -- the package needs to be built
|
20
|
+
const cipher = crypto.createCipheriv(ALGORITHM, _key, iv);
|
21
|
+
let ciphered = cipher.update(text, INPUT_ENCODING, OUTPUT_ENCODING);
|
22
|
+
ciphered += cipher.final(OUTPUT_ENCODING);
|
23
|
+
const ciphertext = iv.toString(OUTPUT_ENCODING) + ":" + ciphered;
|
24
|
+
return ciphertext;
|
25
|
+
};
|
26
|
+
/**
|
27
|
+
*
|
28
|
+
* @param text Value to decrypt
|
29
|
+
* @param key Key used to decrypt value must be 32 bytes for AES256 encryption algorithm
|
30
|
+
*/
|
31
|
+
export const symmetricDecrypt = (text, key) => {
|
32
|
+
const BUFFER_ENCODING = getEnv().ENCRYPTION_KEY.length === 32 ? "latin1" : "hex";
|
33
|
+
const _key = Buffer.from(key, BUFFER_ENCODING);
|
34
|
+
const components = text.split(":");
|
35
|
+
const iv_from_ciphertext = Buffer.from(components.shift() || "", OUTPUT_ENCODING);
|
36
|
+
// @ts-ignore -- the package needs to be built
|
37
|
+
const decipher = crypto.createDecipheriv(ALGORITHM, _key, iv_from_ciphertext);
|
38
|
+
let deciphered = decipher.update(components.join(":"), OUTPUT_ENCODING, INPUT_ENCODING);
|
39
|
+
deciphered += decipher.final(INPUT_ENCODING);
|
40
|
+
return deciphered;
|
41
|
+
};
|
42
|
+
export const getHash = (key) => createHash("sha256").update(key).digest("hex");
|
43
|
+
// create an aes128 encryption function
|
44
|
+
export const encryptAES128 = (encryptionKey, data) => {
|
45
|
+
// @ts-ignore -- the package needs to be built
|
46
|
+
const cipher = createCipheriv("aes-128-ecb", Buffer.from(encryptionKey, "base64"), "");
|
47
|
+
let encrypted = cipher.update(data, "utf-8", "hex");
|
48
|
+
encrypted += cipher.final("hex");
|
49
|
+
return encrypted;
|
50
|
+
};
|
51
|
+
// create an aes128 decryption function
|
52
|
+
export const decryptAES128 = (encryptionKey, data) => {
|
53
|
+
// @ts-ignore -- the package needs to be built
|
54
|
+
const cipher = createDecipheriv("aes-128-ecb", Buffer.from(encryptionKey, "base64"), "");
|
55
|
+
let decrypted = cipher.update(data, "hex", "utf-8");
|
56
|
+
decrypted += cipher.final("utf-8");
|
57
|
+
return decrypted;
|
58
|
+
};
|
59
|
+
export const generateLocalSignedUrl = (fileName, environmentId, fileType) => {
|
60
|
+
const uuid = randomBytes(16).toString("hex");
|
61
|
+
const timestamp = Date.now();
|
62
|
+
const data = `${uuid}:${fileName}:${environmentId}:${fileType}:${timestamp}`;
|
63
|
+
const signature = createHmac("sha256", getEnv().ENCRYPTION_KEY).update(data).digest("hex");
|
64
|
+
return { signature, uuid, timestamp };
|
65
|
+
};
|
66
|
+
export const validateLocalSignedUrl = (uuid, fileName, environmentId, fileType, timestamp, signature, secret) => {
|
67
|
+
const data = `${uuid}:${fileName}:${environmentId}:${fileType}:${timestamp}`;
|
68
|
+
const expectedSignature = createHmac("sha256", secret).update(data).digest("hex");
|
69
|
+
if (expectedSignature !== signature) {
|
70
|
+
return false;
|
71
|
+
}
|
72
|
+
// valid for 5 minutes
|
73
|
+
if (Date.now() - timestamp > 1000 * 60 * 5) {
|
74
|
+
return false;
|
75
|
+
}
|
76
|
+
return true;
|
77
|
+
};
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8sRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUcvQixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUM7QUFDM0IsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0FBQzlCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQztBQUU5QixNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7QUFFdEM7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxJQUFZLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxlQUFlLEdBQUcsTUFBTSxFQUFFLENBQUMsY0FBZSxDQUFDLE1BQU0sS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ2xGLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFekMsOENBQThDO0lBQzlDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMxRCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDcEUsUUFBUSxJQUFJLE1BQU0sQ0FBQyxLQUFL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XCI7XG5pbXBvcnQgeyBjcmVhdGVDaXBoZXJpdiwgY3JlYXRlRGVjaXBoZXJpdiwgY3JlYXRlSGFzaCwgY3JlYXRlSG1hYywgcmFuZG9tQnl0ZXMgfSBmcm9tIFwiY3J5cHRvXCI7XG5pbXBvcnQgeyBnZXRFbnYgfSBmcm9tIFwiLi9lbnZcIjtcblxuXG5jb25zdCBBTEdPUklUSE0gPSBcImFlczI1NlwiO1xuY29uc3QgSU5QVVRfRU5DT0RJTkcgPSBcInV0ZjhcIjtcbmNvbnN0IE9VVFBVVF9FTkNPRElORyA9IFwiaGV4XCI7XG5cbmNvbnN0IElWX0xFTkdUSCA9IDE2OyAvLyBBRVMgYmxvY2tzaXplXG5cbi8qKlxuICpcbiAqIEBwYXJhbSB0ZXh0IFZhbHVlIHRvIGJlIGVuY3J5cHRlZFxuICogQHBhcmFtIGtleSBLZXkgdXNlZCB0byBlbmNyeXB0IHZhbHVlIG11c3QgYmUgMzIgYnl0ZXMgZm9yIEFFUzI1NiBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICpcbiAqIEByZXR1cm5zIEVuY3J5cHRlZCB2YWx1ZSB1c2luZyBrZXlcbiAqL1xuZXhwb3J0IGNvbnN0IHN5bW1ldHJpY0VuY3J5cHQgPSAodGV4dDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBCVUZGRVJfRU5DT0RJTkcgPSBnZXRFbnYoKS5FTkNSWVBUSU9OX0tFWSEubGVuZ3RoID09PSAzMiA/IFwibGF0aW4xXCIgOiBcImhleFwiO1xuICBjb25zdCBfa2V5ID0gQnVmZmVyLmZyb20oa2V5LCBCVUZGRVJfRU5DT0RJTkcpO1xuICBjb25zdCBpdiA9IGNyeXB0by5yYW5kb21CeXRlcyhJVl9MRU5HVEgpO1xuXG4gIC8vIEB0cy1pZ25vcmUgLS0gdGhlIHBhY2thZ2UgbmVlZHMgdG8gYmUgYnVpbHRcbiAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KEFMR09SSVRITSwgX2tleSwgaXYpO1xuICBsZXQgY2lwaGVyZWQgPSBjaXBoZXIudXBkYXRlKHRleHQsIElOUFVUX0VOQ09ESU5HLCBPVVRQVVRfRU5DT0RJTkcpO1xuICBjaXBoZXJlZCArPSBjaXBoZXIuZmluYWwoT1VUUFVUX0VOQ09ESU5HKTtcbiAgY29uc3QgY2lwaGVydGV4dCA9IGl2LnRvU3RyaW5nKE9VVFBVVF9FTkNPRElORykgKyBcIjpcIiArIGNpcGhlcmVkO1xuXG4gIHJldHVybiBjaXBoZXJ0ZXh0O1xufTtcblxuLyoqXG4gKlxuICogQHBhcmFtIHRleHQgVmFsdWUgdG8gZGVjcnlwdFxuICogQHBhcmFtIGtleSBLZXkgdXNlZCB0byBkZWNyeXB0IHZhbHVlIG11c3QgYmUgMzIgYnl0ZXMgZm9yIEFFUzI1NiBlbmNyeXB0aW9uIGFsZ29yaXRobVxuICovXG5leHBvcnQgY29uc3Qgc3ltbWV0cmljRGVjcnlwdCA9ICh0ZXh0OiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IEJVRkZFUl9FTkNPRElORyA9IGdldEVudigpLkVOQ1JZUFRJT05fS0VZIS5sZW5ndGggPT09IDMyID8gXCJsYXRpbjFcIiA6IFwiaGV4XCI7XG4gIGNvbnN0IF9rZXkgPSBCdWZmZXIuZnJvbShrZXksIEJVRkZFUl9FTkNPRElORyk7XG5cbiAgY29uc3QgY29tcG9uZW50cyA9IHRleHQuc3BsaXQoXCI6XCIpO1xuICBjb25zdCBpdl9mcm9tX2NpcGhlcnRleHQgPSBCdWZmZXIuZnJvbShjb21wb25lbnRzLnNoaWZ0KCkgfHwgXCJcIiwgT1VUUFVUX0VOQ09ESU5HKTtcbiAgLy8gQHRzLWlnbm9yZSAtLSB0aGUgcGFja2FnZSBuZWVkcyB0byBiZSBidWlsdFxuICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KEFMR09SSVRITSwgX2tleSwgaXZfZnJvbV9jaXBoZXJ0ZXh0KTtcbiAgbGV0IGRlY2lwaGVyZWQgPSBkZWNpcGhlci51cGRhdGUoY29tcG9uZW50cy5qb2luKFwiOlwiKSwgT1VUUFVUX0VOQ09ESU5HLCBJTlBVVF9FTkNPRElORyk7XG4gIGRlY2lwaGVyZWQgKz0gZGVjaXBoZXIuZmluYWwoSU5QVVRfRU5DT0RJTkcpO1xuXG4gIHJldHVybiBkZWNpcGhlcmVkO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhhc2ggPSAoa2V5OiBzdHJpbmcpOiBzdHJpbmcgPT4gY3JlYXRlSGFzaChcInNoYTI1NlwiKS51cGRhdGUoa2V5KS5kaWdlc3QoXCJoZXhcIik7XG5cbi8vIGNyZWF0ZSBhbiBhZXMxMjggZW5jcnlwdGlvbiBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IGVuY3J5cHRBRVMxMjggPSAoZW5jcnlwdGlvbktleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBAdHMtaWdub3JlIC0tIHRoZSBwYWNrYWdlIG5lZWRzIHRvIGJlIGJ1aWx0XG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZUNpcGhlcml2KFwiYWVzLTEyOC1lY2JcIiwgQnVmZmVyLmZyb20oZW5jcnlwdGlvbktleSwgXCJiYXNlNjRcIiksIFwiXCIpO1xuICBsZXQgZW5jcnlwdGVkID0gY2lwaGVyLnVwZGF0ZShkYXRhLCBcInV0Zi04XCIsIFwiaGV4XCIpO1xuICBlbmNyeXB0ZWQgKz0gY2lwaGVyLmZpbmFsKFwiaGV4XCIpO1xuICByZXR1cm4gZW5jcnlwdGVkO1xufTtcbi8vIGNyZWF0ZSBhbiBhZXMxMjggZGVjcnlwdGlvbiBmdW5jdGlvblxuZXhwb3J0IGNvbnN0IGRlY3J5cHRBRVMxMjggPSAoZW5jcnlwdGlvbktleTogc3RyaW5nLCBkYXRhOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAvLyBAdHMtaWdub3JlIC0tIHRoZSBwYWNrYWdlIG5lZWRzIHRvIGJlIGJ1aWx0XG4gIGNvbnN0IGNpcGhlciA9IGNyZWF0ZURlY2lwaGVyaXYoXCJhZXMtMTI4LWVjYlwiLCBCdWZmZXIuZnJvbShlbmNyeXB0aW9uS2V5LCBcImJhc2U2NFwiKSwgXCJcIik7XG4gIGxldCBkZWNyeXB0ZWQgPSBjaXBoZXIudXBkYXRlKGRhdGEsIFwiaGV4XCIsIFwidXRmLThcIik7XG4gIGRlY3J5cHRlZCArPSBjaXBoZXIuZmluYWwoXCJ1dGYtOFwiKTtcbiAgcmV0dXJuIGRlY3J5cHRlZDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUxvY2FsU2lnbmVkVXJsID0gKFxuICBmaWxlTmFtZTogc3RyaW5nLFxuICBlbnZpcm9ubWVudElkOiBzdHJpbmcsXG4gIGZpbGVUeXBlOiBzdHJpbmdcbik6IHsgc2lnbmF0dXJlOiBzdHJpbmc7IHV1aWQ6IHN0cmluZzsgdGltZXN0YW1wOiBudW1iZXIgfSA9PiB7XG4gIGNvbnN0IHV1aWQgPSByYW5kb21CeXRlcygxNikudG9TdHJpbmcoXCJoZXhcIik7XG4gIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XG4gIGNvbnN0IGRhdGEgPSBgJHt1dWlkfToke2ZpbGVOYW1lfToke2Vudmlyb25tZW50SWR9OiR7ZmlsZVR5cGV9OiR7dGltZXN0YW1wfWA7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGNyZWF0ZUhtYWMoXCJzaGEyNTZcIiwgZ2V0RW52KCkuRU5DUllQVElPTl9LRVkhKS51cGRhdGUoZGF0YSkuZGlnZXN0KFwiaGV4XCIpO1xuICByZXR1cm4geyBzaWduYXR1cmUsIHV1aWQsIHRpbWVzdGFtcCB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlTG9jYWxTaWduZWRVcmwgPSAoXG4gIHV1aWQ6IHN0cmluZyxcbiAgZmlsZU5hbWU6IHN0cmluZyxcbiAgZW52aXJvbm1lbnRJZDogc3RyaW5nLFxuICBmaWxlVHlwZTogc3RyaW5nLFxuICB0aW1lc3RhbXA6IG51bWJlcixcbiAgc2lnbmF0dXJlOiBzdHJpbmcsXG4gIHNlY3JldDogc3RyaW5nXG4pOiBib29sZWFuID0+IHtcbiAgY29uc3QgZGF0YSA9IGAke3V1aWR9OiR7ZmlsZU5hbWV9OiR7ZW52aXJvbm1lbnRJZH06JHtmaWxlVHlwZX06JHt0aW1lc3RhbXB9YDtcbiAgY29uc3QgZXhwZWN0ZWRTaWduYXR1cmUgPSBjcmVhdGVIbWFjKFwic2hhMjU2XCIsIHNlY3JldCkudXBkYXRlKGRhdGEpLmRpZ2VzdChcImhleFwiKTtcblxuICBpZiAoZXhwZWN0ZWRTaWduYXR1cmUgIT09IHNpZ25hdHVyZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIHZhbGlkIGZvciA1IG1pbnV0ZXNcbiAgaWYgKERhdGUubm93KCkgLSB0aW1lc3RhbXAgPiAxMDAwICogNjAgKiA1KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIl19
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const getEnv: () => any;
|
package/dist/lib/env.js
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
import { createEnv } from "@t3-oss/env-nextjs";
|
2
|
+
import { z } from "zod";
|
3
|
+
export const getEnv = (() => {
|
4
|
+
let env = {};
|
5
|
+
return () => {
|
6
|
+
if (env == null) {
|
7
|
+
env = createEnv({
|
8
|
+
/*
|
9
|
+
* Serverside Environment variables, not available on the client.
|
10
|
+
* Will throw if you access these variables on the client.
|
11
|
+
*/
|
12
|
+
server: {
|
13
|
+
APPCONDA_ENDPOINT: z.string(),
|
14
|
+
APPCONDA_CLIENT_ENDPOINT: z.string(),
|
15
|
+
_SERVICE_TOKEN: z.string(),
|
16
|
+
ENTERPRISE_LICENSE_KEY: z.string(),
|
17
|
+
NEXTAUTH_SECRET: z.string().min(1),
|
18
|
+
ENCRYPTION_KEY: z.string().length(64).or(z.string().length(32)),
|
19
|
+
CRON_SECRET: z.string().min(10),
|
20
|
+
_ADMIN_DOMAIN: z.string().optional(),
|
21
|
+
/* AI_AZURE_LLM_API_KEY: z.string().optional(),
|
22
|
+
AI_AZURE_EMBEDDINGS_DEPLOYMENT_ID: z.string().optional(),
|
23
|
+
AI_AZURE_LLM_DEPLOYMENT_ID: z.string().optional(),
|
24
|
+
AI_AZURE_EMBEDDINGS_RESSOURCE_NAME: z.string().optional(),
|
25
|
+
AI_AZURE_LLM_RESSOURCE_NAME: z.string().optional(),
|
26
|
+
AIRTABLE_CLIENT_ID: z.string().optional(),
|
27
|
+
AZUREAD_CLIENT_ID: z.string().optional(),
|
28
|
+
AZUREAD_CLIENT_SECRET: z.string().optional(),
|
29
|
+
AZUREAD_TENANT_ID: z.string().optional(),
|
30
|
+
CRON_SECRET: z.string().min(10),
|
31
|
+
CUSTOMER_IO_API_KEY: z.string().optional(),
|
32
|
+
CUSTOMER_IO_SITE_ID: z.string().optional(),
|
33
|
+
DATABASE_URL: z.string().url(),
|
34
|
+
DEBUG: z.enum(["1", "0"]).optional(),
|
35
|
+
DEFAULT_ORGANIZATION_ID: z.string().optional(),
|
36
|
+
DEFAULT_ORGANIZATION_ROLE: z.enum(["owner", "manager", "member", "billing"]).optional(),
|
37
|
+
E2E_TESTING: z.enum(["1", "0"]).optional(),
|
38
|
+
EMAIL_AUTH_DISABLED: z.enum(["1", "0"]).optional(),
|
39
|
+
EMAIL_VERIFICATION_DISABLED: z.enum(["1", "0"]).optional(),
|
40
|
+
|
41
|
+
ENTERPRISE_LICENSE_KEY: z.string().optional(),
|
42
|
+
FORMBRICKS_ENCRYPTION_KEY: z.string().length(24).or(z.string().length(0)).optional(),
|
43
|
+
GITHUB_ID: z.string().optional(),
|
44
|
+
GITHUB_SECRET: z.string().optional(),
|
45
|
+
GOOGLE_CLIENT_ID: z.string().optional(),
|
46
|
+
GOOGLE_CLIENT_SECRET: z.string().optional(),
|
47
|
+
GOOGLE_SHEETS_CLIENT_ID: z.string().optional(),
|
48
|
+
GOOGLE_SHEETS_CLIENT_SECRET: z.string().optional(),
|
49
|
+
GOOGLE_SHEETS_REDIRECT_URL: z.string().optional(),
|
50
|
+
HTTP_PROXY: z.string().url().optional(),
|
51
|
+
HTTPS_PROXY: z.string().url().optional(),
|
52
|
+
IMPRINT_URL: z
|
53
|
+
.string()
|
54
|
+
.url()
|
55
|
+
.optional()
|
56
|
+
.or(z.string().refine((str) => str === "")),
|
57
|
+
IMPRINT_ADDRESS: z.string().optional(),
|
58
|
+
INVITE_DISABLED: z.enum(["1", "0"]).optional(),
|
59
|
+
INTERCOM_SECRET_KEY: z.string().optional(),
|
60
|
+
IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(),
|
61
|
+
MAIL_FROM: z.string().email().optional(),
|
62
|
+
|
63
|
+
NOTION_OAUTH_CLIENT_ID: z.string().optional(),
|
64
|
+
NOTION_OAUTH_CLIENT_SECRET: z.string().optional(),
|
65
|
+
OIDC_CLIENT_ID: z.string().optional(),
|
66
|
+
OIDC_CLIENT_SECRET: z.string().optional(),
|
67
|
+
OIDC_DISPLAY_NAME: z.string().optional(),
|
68
|
+
OIDC_ISSUER: z.string().optional(),
|
69
|
+
OIDC_SIGNING_ALGORITHM: z.string().optional(),
|
70
|
+
OPENTELEMETRY_LISTENER_URL: z.string().optional(),
|
71
|
+
REDIS_URL: z.string().optional(),
|
72
|
+
REDIS_HTTP_URL: z.string().optional(),
|
73
|
+
PASSWORD_RESET_DISABLED: z.enum(["1", "0"]).optional(),
|
74
|
+
PRIVACY_URL: z
|
75
|
+
.string()
|
76
|
+
.url()
|
77
|
+
.optional()
|
78
|
+
.or(z.string().refine((str) => str === "")),
|
79
|
+
RATE_LIMITING_DISABLED: z.enum(["1", "0"]).optional(),
|
80
|
+
S3_ACCESS_KEY: z.string().optional(),
|
81
|
+
S3_BUCKET_NAME: z.string().optional(),
|
82
|
+
S3_REGION: z.string().optional(),
|
83
|
+
S3_SECRET_KEY: z.string().optional(),
|
84
|
+
S3_ENDPOINT_URL: z.string().optional(),
|
85
|
+
S3_FORCE_PATH_STYLE: z.enum(["1", "0"]).optional(),
|
86
|
+
SHORT_URL_BASE: z.string().url().optional().or(z.string().length(0)),
|
87
|
+
SIGNUP_DISABLED: z.enum(["1", "0"]).optional(),
|
88
|
+
SLACK_CLIENT_ID: z.string().optional(),
|
89
|
+
SLACK_CLIENT_SECRET: z.string().optional(),
|
90
|
+
SMTP_HOST: z.string().min(1).optional(),
|
91
|
+
SMTP_PORT: z.string().min(1).optional(),
|
92
|
+
SMTP_SECURE_ENABLED: z.enum(["1", "0"]).optional(),
|
93
|
+
SMTP_USER: z.string().min(1).optional(),
|
94
|
+
SMTP_PASSWORD: z.string().min(1).optional(),
|
95
|
+
SMTP_AUTHENTICATED: z.enum(["1", "0"]).optional(),
|
96
|
+
SMTP_REJECT_UNAUTHORIZED_TLS: z.enum(["1", "0"]).optional(),
|
97
|
+
STRIPE_SECRET_KEY: z.string().optional(),
|
98
|
+
STRIPE_WEBHOOK_SECRET: z.string().optional(),
|
99
|
+
TELEMETRY_DISABLED: z.enum(["1", "0"]).optional(),
|
100
|
+
TERMS_URL: z
|
101
|
+
.string()
|
102
|
+
.url()
|
103
|
+
.optional()
|
104
|
+
.or(z.string().refine((str) => str === "")),
|
105
|
+
TURNSTILE_SECRET_KEY: z.string().optional(),
|
106
|
+
UPLOADS_DIR: z.string().min(1).optional(),
|
107
|
+
VERCEL_URL: z.string().optional(),
|
108
|
+
|
109
|
+
ADMIN_URL: z.string().url().optional(),
|
110
|
+
UNSPLASH_ACCESS_KEY: z.string().optional(),
|
111
|
+
LANGFUSE_SECRET_KEY: z.string().optional(),
|
112
|
+
LANGFUSE_PUBLIC_KEY: z.string().optional(),
|
113
|
+
LANGFUSE_BASEURL: z.string().optional(), */
|
114
|
+
},
|
115
|
+
/*
|
116
|
+
* Due to how Next.js bundles environment variables on Edge and Client,
|
117
|
+
* we need to manually destructure them to make sure all are included in bundle.
|
118
|
+
*
|
119
|
+
* 💡 You'll get type errors if not all variables from `server` & `client` are included here.
|
120
|
+
*/
|
121
|
+
runtimeEnv: {
|
122
|
+
APPCONDA_ENDPOINT: process.env.APPCONDA_ENDPOINT,
|
123
|
+
APPCONDA_CLIENT_ENDPOINT: process.env.APPCONDA_CLIENT_ENDPOINT,
|
124
|
+
_SERVICE_TOKEN: process.env._SERVICE_TOKEN,
|
125
|
+
ENTERPRISE_LICENSE_KEY: process.env.ENTERPRISE_LICENSE_KEY,
|
126
|
+
NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
|
127
|
+
ENCRYPTION_KEY: process.env.ENCRYPTION_KEY,
|
128
|
+
CRON_SECRET: process.env.CRON_SECRET,
|
129
|
+
_ADMIN_DOMAIN: process.env._ADMIN_DOMAIN,
|
130
|
+
},
|
131
|
+
});
|
132
|
+
console.log(env);
|
133
|
+
}
|
134
|
+
return env;
|
135
|
+
};
|
136
|
+
})();
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9lbnYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFHeEIsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxFQUFFO0lBQ3hCLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztJQUNsQixPQUFPLEdBQUcsRUFBRTtRQUNSLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2QsR0FBRyxHQUFHLFNBQVMsQ0FBQztnQkFDWjs7O21CQUdHO2dCQUNILE1BQU0sRUFBRTtvQkFDSixpQkFBaUIsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUM3Qix3QkFBd0IsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO29CQUNwQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDMUIsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtvQkFDbEMsZUFBZSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUNsQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDL0QsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMvQixhQUFhLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtvQkFDcEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytEQTRGMkM7aUJBQzlDO2dCQUVEOzs7OzttQkFLRztnQkFDSCxVQUFVLEVBQUU7b0JBQ1IsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUI7b0JBQ2hELHdCQUF3QixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCO29CQUM5RCxjQUFjLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjO29CQUMxQyxzQkFBc0IsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQjtvQkFDMUQsZUFBZSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZTtvQkFDNUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYztvQkFDMUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVztvQkFDcEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYTtpQkFDM0M7YUFDSixDQUFDLENBQUM7WUFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUVmLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbnYgfSBmcm9tIFwiQHQzLW9zcy9lbnYtbmV4dGpzXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5cbmV4cG9ydCBjb25zdCBnZXRFbnYgPSAoKCkgPT4ge1xuICAgIGxldCBlbnY6IGFueSA9IHt9O1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGlmIChlbnYgPT0gbnVsbCkge1xuICAgICAgICAgICAgZW52ID0gY3JlYXRlRW52KHtcbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICAqIFNlcnZlcnNpZGUgRW52aXJvbm1lbnQgdmFyaWFibGVzLCBub3QgYXZhaWxhYmxlIG9uIHRoZSBjbGllbnQuXG4gICAgICAgICAgICAgICAgICogV2lsbCB0aHJvdyBpZiB5b3UgYWNjZXNzIHRoZXNlIHZhcmlhYmxlcyBvbiB0aGUgY2xpZW50LlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHNlcnZlcjoge1xuICAgICAgICAgICAgICAgICAgICBBUFBDT05EQV9FTkRQT0lOVDogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgQVBQQ09OREFfQ0xJRU5UX0VORFBPSU5UOiB6LnN0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICBfU0VSVklDRV9UT0tFTjogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgRU5URVJQUklTRV9MSUNFTlNFX0tFWTogei5zdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgICAgTkVYVEFVVEhfU0VDUkVUOiB6LnN0cmluZygpLm1pbigxKSxcbiAgICAgICAgICAgICAgICAgICAgRU5DUllQVElPTl9LRVk6IHouc3RyaW5nKCkubGVuZ3RoKDY0KS5vcih6LnN0cmluZygpLmxlbmd0aCgzMikpLFxuICAgICAgICAgICAgICAgICAgICBDUk9OX1NFQ1JFVDogei5zdHJpbmcoKS5taW4oMTApLFxuICAgICAgICAgICAgICAgICAgICBfQURNSU5fRE9NQUlOOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIC8qIEFJX0FaVVJFX0xMTV9BUElfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFJX0FaVVJFX0VNQkVERElOR1NfREVQTE9ZTUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSV9BWlVSRV9MTE1fREVQTE9ZTUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSV9BWlVSRV9FTUJFRERJTkdTX1JFU1NPVVJDRV9OQU1FOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFJX0FaVVJFX0xMTV9SRVNTT1VSQ0VfTkFNRTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBBSVJUQUJMRV9DTElFTlRfSUQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQVpVUkVBRF9DTElFTlRfSUQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQVpVUkVBRF9DTElFTlRfU0VDUkVUOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEFaVVJFQURfVEVOQU5UX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIENST05fU0VDUkVUOiB6LnN0cmluZygpLm1pbigxMCksXG4gICAgICAgICAgICAgICAgICAgIENVU1RPTUVSX0lPX0FQSV9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgQ1VTVE9NRVJfSU9fU0lURV9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBEQVRBQkFTRV9VUkw6IHouc3RyaW5nKCkudXJsKCksXG4gICAgICAgICAgICAgICAgICAgIERFQlVHOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIERFRkFVTFRfT1JHQU5JWkFUSU9OX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIERFRkFVTFRfT1JHQU5JWkFUSU9OX1JPTEU6IHouZW51bShbXCJvd25lclwiLCBcIm1hbmFnZXJcIiwgXCJtZW1iZXJcIiwgXCJiaWxsaW5nXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBFMkVfVEVTVElORzogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBFTUFJTF9BVVRIX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEVNQUlMX1ZFUklGSUNBVElPTl9ESVNBQkxFRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBFTlRFUlBSSVNFX0xJQ0VOU0VfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEZPUk1CUklDS1NfRU5DUllQVElPTl9LRVk6IHouc3RyaW5nKCkubGVuZ3RoKDI0KS5vcih6LnN0cmluZygpLmxlbmd0aCgwKSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR0lUSFVCX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIEdJVEhVQl9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR09PR0xFX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfQ0xJRU5UX1NFQ1JFVDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfU0hFRVRTX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBHT09HTEVfU0hFRVRTX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgR09PR0xFX1NIRUVUU19SRURJUkVDVF9VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSFRUUF9QUk9YWTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBIVFRQU19QUk9YWTogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBJTVBSSU5UX1VSTDogelxuICAgICAgICAgICAgICAgICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIC51cmwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yKHouc3RyaW5nKCkucmVmaW5lKChzdHIpID0+IHN0ciA9PT0gXCJcIikpLFxuICAgICAgICAgICAgICAgICAgICBJTVBSSU5UX0FERFJFU1M6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSU5WSVRFX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIElOVEVSQ09NX1NFQ1JFVF9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgSVNfRk9STUJSSUNLU19DTE9VRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBNQUlMX0ZST006IHouc3RyaW5nKCkuZW1haWwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgTk9USU9OX09BVVRIX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBOT1RJT05fT0FVVEhfQ0xJRU5UX1NFQ1JFVDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPSURDX0NMSUVOVF9JRDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPSURDX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19ESVNQTEFZX05BTUU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19JU1NVRVI6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgT0lEQ19TSUdOSU5HX0FMR09SSVRITTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBPUEVOVEVMRU1FVFJZX0xJU1RFTkVSX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBSRURJU19VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUkVESVNfSFRUUF9VUkw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRfUkVTRVRfRElTQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgUFJJVkFDWV9VUkw6IHpcbiAgICAgICAgICAgICAgICAgICAgICAuc3RyaW5nKClcbiAgICAgICAgICAgICAgICAgICAgICAudXJsKClcbiAgICAgICAgICAgICAgICAgICAgICAub3B0aW9uYWwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcih6LnN0cmluZygpLnJlZmluZSgoc3RyKSA9PiBzdHIgPT09IFwiXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgUkFURV9MSU1JVElOR19ESVNBQkxFRDogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19BQ0NFU1NfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX0JVQ0tFVF9OQU1FOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX1JFR0lPTjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19TRUNSRVRfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFMzX0VORFBPSU5UX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTM19GT1JDRV9QQVRIX1NUWUxFOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNIT1JUX1VSTF9CQVNFOiB6LnN0cmluZygpLnVybCgpLm9wdGlvbmFsKCkub3Ioei5zdHJpbmcoKS5sZW5ndGgoMCkpLFxuICAgICAgICAgICAgICAgICAgICBTSUdOVVBfRElTQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU0xBQ0tfQ0xJRU5UX0lEOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNMQUNLX0NMSUVOVF9TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9IT1NUOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX1BPUlQ6IHouc3RyaW5nKCkubWluKDEpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFNNVFBfU0VDVVJFX0VOQUJMRUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9VU0VSOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX1BBU1NXT1JEOiB6LnN0cmluZygpLm1pbigxKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTTVRQX0FVVEhFTlRJQ0FURUQ6IHouZW51bShbXCIxXCIsIFwiMFwiXSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgU01UUF9SRUpFQ1RfVU5BVVRIT1JJWkVEX1RMUzogei5lbnVtKFtcIjFcIiwgXCIwXCJdKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTVFJJUEVfU0VDUkVUX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBTVFJJUEVfV0VCSE9PS19TRUNSRVQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgVEVMRU1FVFJZX0RJU0FCTEVEOiB6LmVudW0oW1wiMVwiLCBcIjBcIl0pLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIFRFUk1TX1VSTDogelxuICAgICAgICAgICAgICAgICAgICAgIC5zdHJpbmcoKVxuICAgICAgICAgICAgICAgICAgICAgIC51cmwoKVxuICAgICAgICAgICAgICAgICAgICAgIC5vcHRpb25hbCgpXG4gICAgICAgICAgICAgICAgICAgICAgLm9yKHouc3RyaW5nKCkucmVmaW5lKChzdHIpID0+IHN0ciA9PT0gXCJcIikpLFxuICAgICAgICAgICAgICAgICAgICBUVVJOU1RJTEVfU0VDUkVUX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBVUExPQURTX0RJUjogei5zdHJpbmcoKS5taW4oMSkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgVkVSQ0VMX1VSTDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIEFETUlOX1VSTDogei5zdHJpbmcoKS51cmwoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBVTlNQTEFTSF9BQ0NFU1NfS0VZOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgICAgICAgICAgICAgICAgIExBTkdGVVNFX1NFQ1JFVF9LRVk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICAgICAgICAgICAgICAgICAgTEFOR0ZVU0VfUFVCTElDX0tFWTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgICAgICAgICAgICAgICAgICBMQU5HRlVTRV9CQVNFVVJMOiB6LnN0cmluZygpLm9wdGlvbmFsKCksICovXG4gICAgICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgICAgICogRHVlIHRvIGhvdyBOZXh0LmpzIGJ1bmRsZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIEVkZ2UgYW5kIENsaWVudCxcbiAgICAgICAgICAgICAgICAgKiB3ZSBuZWVkIHRvIG1hbnVhbGx5IGRlc3RydWN0dXJlIHRoZW0gdG8gbWFrZSBzdXJlIGFsbCBhcmUgaW5jbHVkZWQgaW4gYnVuZGxlLlxuICAgICAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgICAgICog8J+SoSBZb3UnbGwgZ2V0IHR5cGUgZXJyb3JzIGlmIG5vdCBhbGwgdmFyaWFibGVzIGZyb20gYHNlcnZlcmAgJiBgY2xpZW50YCBhcmUgaW5jbHVkZWQgaGVyZS5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBydW50aW1lRW52OiB7XG4gICAgICAgICAgICAgICAgICAgIEFQUENPTkRBX0VORFBPSU5UOiBwcm9jZXNzLmVudi5BUFBDT05EQV9FTkRQT0lOVCxcbiAgICAgICAgICAgICAgICAgICAgQVBQQ09OREFfQ0xJRU5UX0VORFBPSU5UOiBwcm9jZXNzLmVudi5BUFBDT05EQV9DTElFTlRfRU5EUE9JTlQsXG4gICAgICAgICAgICAgICAgICAgIF9TRVJWSUNFX1RPS0VOOiBwcm9jZXNzLmVudi5fU0VSVklDRV9UT0tFTixcbiAgICAgICAgICAgICAgICAgICAgRU5URVJQUklTRV9MSUNFTlNFX0tFWTogcHJvY2Vzcy5lbnYuRU5URVJQUklTRV9MSUNFTlNFX0tFWSxcbiAgICAgICAgICAgICAgICAgICAgTkVYVEFVVEhfU0VDUkVUOiBwcm9jZXNzLmVudi5ORVhUQVVUSF9TRUNSRVQsXG4gICAgICAgICAgICAgICAgICAgIEVOQ1JZUFRJT05fS0VZOiBwcm9jZXNzLmVudi5FTkNSWVBUSU9OX0tFWSxcbiAgICAgICAgICAgICAgICAgICAgQ1JPTl9TRUNSRVQ6IHByb2Nlc3MuZW52LkNST05fU0VDUkVULFxuICAgICAgICAgICAgICAgICAgICBfQURNSU5fRE9NQUlOOiBwcm9jZXNzLmVudi5fQURNSU5fRE9NQUlOLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVudik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW52O1xuXG4gICAgfTtcbn0pKCk7XG5cblxuXG5cbiJdfQ==
|