@nlabs/reaktor 0.10.0 → 0.10.1
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/.env +1 -0
- package/.env.example +1 -0
- package/DATABASE_I18N_GUIDE.md +434 -0
- package/TEST_UTILITIES_GUIDE.md +360 -0
- package/coverage/index.html +46 -76
- package/index.js +1 -1
- package/jest.config.js +17 -0
- package/jest.setup.js +36 -0
- package/lex.config.cjs +2 -2
- package/lib/actions/apps.js +17 -239
- package/lib/actions/connections.js +6 -89
- package/lib/actions/content.js +17 -0
- package/lib/actions/conversations.js +19 -336
- package/lib/actions/dynamodb.js +2 -150
- package/lib/actions/email.js +2 -152
- package/lib/actions/files.js +5 -283
- package/lib/actions/groups.js +19 -259
- package/lib/actions/images.js +31 -700
- package/lib/actions/index.js +2 -66
- package/lib/actions/ios.js +9 -162
- package/lib/actions/locations.js +7 -122
- package/lib/actions/messages.js +21 -196
- package/lib/actions/notifications.js +2 -59
- package/lib/actions/payments.js +11 -464
- package/lib/actions/posts.js +75 -527
- package/lib/actions/profiles.js +8 -0
- package/lib/actions/reactions.js +25 -312
- package/lib/actions/s3.js +2 -133
- package/lib/actions/search.js +5 -90
- package/lib/actions/sms.js +2 -108
- package/lib/actions/statistics.js +6 -60
- package/lib/actions/subscriptions.js +12 -0
- package/lib/actions/tags.js +19 -287
- package/lib/actions/users.js +64 -764
- package/lib/actions/websockets.js +14 -158
- package/lib/adapters/arangoAdapter.js +2 -46
- package/lib/adapters/contentAdapter.js +2 -0
- package/lib/adapters/fileAdapter.js +2 -76
- package/lib/adapters/imageAdapter.js +2 -40
- package/lib/adapters/messageAdapter.js +2 -49
- package/lib/adapters/postAdapter.js +2 -70
- package/lib/adapters/reaktorAdapter.js +2 -44
- package/lib/adapters/tagAdapter.js +2 -50
- package/lib/adapters/userAdapter.js +2 -115
- package/lib/config.js +2 -125
- package/lib/handlers/graphqlHandler.js +2 -0
- package/lib/index.js +2 -66
- package/lib/lambdas/actions/websockets.js +14 -116
- package/lib/lambdas/authorizer.js +2 -67
- package/lib/lambdas/connection.js +2 -91
- package/lib/lambdas/utils/message.js +2 -42
- package/lib/lambdas/utils/websocket.js +2 -105
- package/lib/mocks/conversation.js +2 -35
- package/lib/mocks/file.js +2 -38
- package/lib/mocks/group.js +2 -47
- package/lib/mocks/image.js +2 -44
- package/lib/mocks/post.js +2 -55
- package/lib/mocks/tag.js +2 -37
- package/lib/mocks/user.js +2 -88
- package/lib/mutations/index.js +2 -26
- package/lib/mutations/locations.integration.js +2 -0
- package/lib/mutations/locations.js +2 -44
- package/lib/mutations/messages.integration.js +2 -0
- package/lib/mutations/messages.js +2 -86
- package/lib/mutations/posts.integration.js +2 -0
- package/lib/mutations/posts.js +2 -53
- package/lib/mutations/profiles.integration.js +2 -0
- package/lib/mutations/profiles.js +2 -0
- package/lib/mutations/reactions.integration.js +2 -0
- package/lib/mutations/reactions.js +2 -51
- package/lib/mutations/statistics.integration.js +2 -0
- package/lib/mutations/statistics.js +2 -39
- package/lib/mutations/subscriptions.integration.js +2 -0
- package/lib/mutations/subscriptions.js +2 -56
- package/lib/mutations/tags.integration.js +2 -0
- package/lib/mutations/tags.js +2 -120
- package/lib/mutations/users.integration.js +2 -0
- package/lib/mutations/users.js +2 -116
- package/lib/objectTypes/app.js +2 -173
- package/lib/objectTypes/bankAccount.js +2 -76
- package/lib/objectTypes/connection.js +2 -48
- package/lib/objectTypes/conversation.js +2 -77
- package/lib/objectTypes/creditCard.js +2 -86
- package/lib/objectTypes/document.js +2 -46
- package/lib/objectTypes/error.js +2 -46
- package/lib/objectTypes/external.js +2 -74
- package/lib/objectTypes/file.js +2 -100
- package/lib/objectTypes/filter.js +2 -43
- package/lib/objectTypes/group.js +2 -123
- package/lib/objectTypes/iapSubscription.js +2 -40
- package/lib/objectTypes/image.js +2 -129
- package/lib/objectTypes/index.js +2 -68
- package/lib/objectTypes/location.js +2 -109
- package/lib/objectTypes/message.js +2 -96
- package/lib/objectTypes/passcode.js +2 -42
- package/lib/objectTypes/plan.js +2 -95
- package/lib/objectTypes/post.js +2 -125
- package/lib/objectTypes/profile.js +2 -0
- package/lib/objectTypes/reaction.js +2 -61
- package/lib/objectTypes/relation.js +2 -49
- package/lib/objectTypes/search.js +2 -72
- package/lib/objectTypes/statistics.js +2 -39
- package/lib/objectTypes/subscription.js +2 -117
- package/lib/objectTypes/tag.js +2 -65
- package/lib/objectTypes/user.js +2 -144
- package/lib/queries/index.js +2 -33
- package/lib/queries/locations.integration.js +2 -0
- package/lib/queries/locations.js +2 -45
- package/lib/queries/messages.integration.js +2 -0
- package/lib/queries/messages.js +2 -52
- package/lib/queries/posts.integration.js +2 -0
- package/lib/queries/posts.js +2 -154
- package/lib/queries/reactions.integration.js +2 -0
- package/lib/queries/reactions.js +2 -56
- package/lib/queries/statistics.js +2 -39
- package/lib/queries/subscriptions.js +2 -44
- package/lib/queries/tags.integration.js +2 -0
- package/lib/queries/tags.js +2 -75
- package/lib/queries/users.integration.js +2 -0
- package/lib/queries/users.js +2 -64
- package/lib/templates/email/layout.js +3 -25
- package/lib/templates/email/passwordForgot.js +3 -25
- package/lib/templates/email/passwordRecovery.js +3 -25
- package/lib/templates/email/verifyEmail.js +3 -25
- package/lib/templates/email/welcome.js +3 -25
- package/lib/templates/sms/passwordForgot.js +2 -24
- package/lib/templates/sms/passwordRecovery.js +2 -24
- package/lib/templates/sms/verifyEmail.js +2 -24
- package/lib/templates/sms/verifyPhone.js +2 -24
- package/lib/templates/sms/welcome.js +2 -24
- package/lib/types/apps.types.js +2 -32
- package/lib/types/arangodb.types.js +1 -16
- package/lib/types/auth.types.js +1 -16
- package/lib/types/connections.types.js +1 -16
- package/lib/types/content.types.js +1 -0
- package/lib/types/conversations.types.js +1 -16
- package/lib/types/email.types.js +1 -16
- package/lib/types/error.types.js +2 -44
- package/lib/types/files.types.js +1 -16
- package/lib/types/google.types.js +1 -16
- package/lib/types/groups.types.js +1 -16
- package/lib/types/images.types.js +1 -16
- package/lib/types/index.js +2 -60
- package/lib/types/locations.types.js +1 -16
- package/lib/types/messages.types.js +1 -16
- package/lib/types/notifications.types.js +1 -16
- package/lib/types/payments.types.js +1 -16
- package/lib/types/posts.types.js +1 -16
- package/lib/types/profiles.types.js +1 -0
- package/lib/types/statistics.types.js +1 -16
- package/lib/types/tags.types.js +1 -16
- package/lib/types/users.types.js +1 -16
- package/lib/types/websockets.types.js +1 -16
- package/lib/utils/adapterUtils.js +2 -45
- package/lib/utils/analyticsUtils.js +2 -72
- package/lib/utils/arangodbUtils.js +5 -163
- package/lib/utils/authUtils.js +2 -0
- package/lib/utils/contextUtils.js +2 -0
- package/lib/utils/dbI18n.example.js +6 -0
- package/lib/utils/dbI18n.js +2 -0
- package/lib/utils/googleTranslate.js +2 -0
- package/lib/utils/graphqlUtils.js +2 -0
- package/lib/utils/index.js +2 -30
- package/lib/utils/languageDetection.js +2 -0
- package/lib/utils/localeUtils.example.js +2 -0
- package/lib/utils/localeUtils.js +2 -0
- package/lib/utils/middlewareUtils.js +2 -0
- package/lib/utils/sessionUtils.js +2 -0
- package/lib/utils/stripeUtils.js +2 -43
- package/lib/utils/templateUtils.js +2 -0
- package/lib/utils/testUtils.js +2 -0
- package/lib/utils/translationQueue.example.js +2 -0
- package/lib/utils/translationQueue.js +2 -0
- package/package.json +27 -24
- package/.prettierrc.js +0 -4
- package/lib/actions/apps.d.ts +0 -25
- package/lib/actions/connections.d.ts +0 -4
- package/lib/actions/conversations.d.ts +0 -14
- package/lib/actions/dynamodb.d.ts +0 -8
- package/lib/actions/email.d.ts +0 -5
- package/lib/actions/files.d.ts +0 -19
- package/lib/actions/groups.d.ts +0 -14
- package/lib/actions/images.d.ts +0 -26
- package/lib/actions/index.d.ts +0 -23
- package/lib/actions/ios.d.ts +0 -7
- package/lib/actions/locations.d.ts +0 -6
- package/lib/actions/messages.d.ts +0 -14
- package/lib/actions/notifications.d.ts +0 -5
- package/lib/actions/payments.d.ts +0 -10
- package/lib/actions/personas.d.ts +0 -3
- package/lib/actions/personas.js +0 -110
- package/lib/actions/posts.d.ts +0 -22
- package/lib/actions/reactions.d.ts +0 -30
- package/lib/actions/s3.d.ts +0 -7
- package/lib/actions/search.d.ts +0 -3
- package/lib/actions/sms.d.ts +0 -9
- package/lib/actions/statistics.d.ts +0 -3
- package/lib/actions/subscription.d.ts +0 -7
- package/lib/actions/subscription.js +0 -208
- package/lib/actions/tags.d.ts +0 -34
- package/lib/actions/users.d.ts +0 -72
- package/lib/actions/websockets.d.ts +0 -20
- package/lib/adapters/arangoAdapter.d.ts +0 -2
- package/lib/adapters/fileAdapter.d.ts +0 -3
- package/lib/adapters/imageAdapter.d.ts +0 -2
- package/lib/adapters/messageAdapter.d.ts +0 -2
- package/lib/adapters/postAdapter.d.ts +0 -2
- package/lib/adapters/reaktorAdapter.d.ts +0 -6
- package/lib/adapters/tagAdapter.d.ts +0 -2
- package/lib/adapters/userAdapter.d.ts +0 -2
- package/lib/config.d.ts +0 -20
- package/lib/index.d.ts +0 -12
- package/lib/lambdas/actions/websockets.d.ts +0 -7
- package/lib/lambdas/authorizer.d.ts +0 -20
- package/lib/lambdas/connection.d.ts +0 -12
- package/lib/lambdas/utils/message.d.ts +0 -1
- package/lib/lambdas/utils/websocket.d.ts +0 -7
- package/lib/mocks/conversation.d.ts +0 -8
- package/lib/mocks/file.d.ts +0 -11
- package/lib/mocks/group.d.ts +0 -17
- package/lib/mocks/image.d.ts +0 -3
- package/lib/mocks/post.d.ts +0 -38
- package/lib/mocks/tag.d.ts +0 -2
- package/lib/mocks/user.d.ts +0 -4
- package/lib/mutations/index.d.ts +0 -3
- package/lib/mutations/locations.d.ts +0 -2
- package/lib/mutations/messages.d.ts +0 -2
- package/lib/mutations/personas.d.ts +0 -2
- package/lib/mutations/personas.js +0 -100
- package/lib/mutations/posts.d.ts +0 -2
- package/lib/mutations/reactions.d.ts +0 -2
- package/lib/mutations/statistics.d.ts +0 -2
- package/lib/mutations/subscriptions.d.ts +0 -2
- package/lib/mutations/tags.d.ts +0 -2
- package/lib/mutations/users.d.ts +0 -1
- package/lib/objectTypes/app.d.ts +0 -3
- package/lib/objectTypes/bankAccount.d.ts +0 -1
- package/lib/objectTypes/connection.d.ts +0 -1
- package/lib/objectTypes/conversation.d.ts +0 -2
- package/lib/objectTypes/creditCard.d.ts +0 -1
- package/lib/objectTypes/document.d.ts +0 -1
- package/lib/objectTypes/error.d.ts +0 -1
- package/lib/objectTypes/external.d.ts +0 -1
- package/lib/objectTypes/file.d.ts +0 -2
- package/lib/objectTypes/filter.d.ts +0 -1
- package/lib/objectTypes/group.d.ts +0 -3
- package/lib/objectTypes/iapSubscription.d.ts +0 -1
- package/lib/objectTypes/image.d.ts +0 -2
- package/lib/objectTypes/index.d.ts +0 -24
- package/lib/objectTypes/location.d.ts +0 -2
- package/lib/objectTypes/message.d.ts +0 -2
- package/lib/objectTypes/passcode.d.ts +0 -1
- package/lib/objectTypes/persona.d.ts +0 -3
- package/lib/objectTypes/persona.js +0 -87
- package/lib/objectTypes/plan.d.ts +0 -2
- package/lib/objectTypes/post.d.ts +0 -2
- package/lib/objectTypes/reaction.d.ts +0 -2
- package/lib/objectTypes/relation.d.ts +0 -1
- package/lib/objectTypes/search.d.ts +0 -1
- package/lib/objectTypes/statistics.d.ts +0 -1
- package/lib/objectTypes/subscription.d.ts +0 -2
- package/lib/objectTypes/tag.d.ts +0 -2
- package/lib/objectTypes/user.d.ts +0 -4
- package/lib/queries/index.d.ts +0 -3
- package/lib/queries/locations.d.ts +0 -2
- package/lib/queries/messages.d.ts +0 -2
- package/lib/queries/posts.d.ts +0 -2
- package/lib/queries/reactions.d.ts +0 -2
- package/lib/queries/statistics.d.ts +0 -2
- package/lib/queries/subscriptions.d.ts +0 -2
- package/lib/queries/tags.d.ts +0 -2
- package/lib/queries/users.d.ts +0 -1
- package/lib/templates/email/layout.d.ts +0 -2
- package/lib/templates/email/passwordForgot.d.ts +0 -2
- package/lib/templates/email/passwordRecovery.d.ts +0 -2
- package/lib/templates/email/verifyEmail.d.ts +0 -2
- package/lib/templates/email/welcome.d.ts +0 -2
- package/lib/templates/sms/passwordForgot.d.ts +0 -2
- package/lib/templates/sms/passwordRecovery.d.ts +0 -2
- package/lib/templates/sms/verifyEmail.d.ts +0 -2
- package/lib/templates/sms/verifyPhone.d.ts +0 -2
- package/lib/templates/sms/welcome.d.ts +0 -2
- package/lib/types/apps.types.d.ts +0 -46
- package/lib/types/arangodb.types.d.ts +0 -34
- package/lib/types/auth.types.d.ts +0 -9
- package/lib/types/connections.types.d.ts +0 -5
- package/lib/types/conversations.types.d.ts +0 -27
- package/lib/types/email.types.d.ts +0 -13
- package/lib/types/error.types.d.ts +0 -20
- package/lib/types/files.types.d.ts +0 -23
- package/lib/types/google.types.d.ts +0 -29
- package/lib/types/groups.types.d.ts +0 -18
- package/lib/types/images.types.d.ts +0 -52
- package/lib/types/index.d.ts +0 -20
- package/lib/types/locations.types.d.ts +0 -18
- package/lib/types/messages.types.d.ts +0 -16
- package/lib/types/notifications.types.d.ts +0 -19
- package/lib/types/payments.types.d.ts +0 -109
- package/lib/types/personas.types.d.ts +0 -32
- package/lib/types/personas.types.js +0 -16
- package/lib/types/posts.types.d.ts +0 -28
- package/lib/types/statistics.types.d.ts +0 -3
- package/lib/types/tags.types.d.ts +0 -15
- package/lib/types/users.types.d.ts +0 -79
- package/lib/types/websockets.types.d.ts +0 -18
- package/lib/utils/adapterUtils.d.ts +0 -1
- package/lib/utils/analyticsUtils.d.ts +0 -21
- package/lib/utils/arangodbUtils.d.ts +0 -66
- package/lib/utils/auth.d.ts +0 -21
- package/lib/utils/auth.js +0 -57
- package/lib/utils/index.d.ts +0 -5
- package/lib/utils/session.d.ts +0 -18
- package/lib/utils/session.js +0 -60
- package/lib/utils/stripeUtils.d.ts +0 -3
package/lib/actions/apps.js
CHANGED
|
@@ -1,242 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var apps_exports = {};
|
|
19
|
-
__export(apps_exports, {
|
|
20
|
-
addApp: () => addApp,
|
|
21
|
-
deactivateApp: () => deactivateApp,
|
|
22
|
-
deleteApp: () => deleteApp,
|
|
23
|
-
getApp: () => getApp,
|
|
24
|
-
getAppOptional: () => getAppOptional,
|
|
25
|
-
getApps: () => getApps,
|
|
26
|
-
parseAppOptions: () => parseAppOptions,
|
|
27
|
-
updateApp: () => updateApp
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(apps_exports);
|
|
30
|
-
var import_utils = require("@nlabs/utils");
|
|
31
|
-
var import_arangojs = require("arangojs");
|
|
32
|
-
var import_error = require("../types/error.types");
|
|
33
|
-
var import_analyticsUtils = require("../utils/analyticsUtils");
|
|
34
|
-
var import_arangodbUtils = require("../utils/arangodbUtils");
|
|
35
|
-
var import_session = require("../utils/session");
|
|
36
|
-
const eventCategory = "apps";
|
|
37
|
-
const getAppOptional = (fields = []) => fields.reduce((selects, field) => {
|
|
38
|
-
if (field.includes("Count")) {
|
|
39
|
-
return (0, import_arangodbUtils.selectReactionCountByType)("apps", "a", field, selects);
|
|
40
|
-
}
|
|
41
|
-
return selects;
|
|
42
|
-
}, { objects: [], queries: [] });
|
|
43
|
-
const parseAppOptions = (options = {}) => {
|
|
44
|
-
const {
|
|
45
|
-
from = 0,
|
|
46
|
-
to = 30
|
|
47
|
-
} = options;
|
|
48
|
-
const limit = (0, import_arangodbUtils.getLimit)(from, to);
|
|
49
|
-
return {
|
|
50
|
-
...options,
|
|
51
|
-
limit
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
const addApp = async (context, app) => {
|
|
55
|
-
const action = "addUser";
|
|
56
|
-
const { database } = context;
|
|
57
|
-
const { email, name, phone } = app;
|
|
58
|
-
const formatName = (0, import_utils.parseString)(name);
|
|
59
|
-
const formatEmail = (0, import_utils.parseEmail)(email);
|
|
60
|
-
const formatPhone = (0, import_utils.parsePhone)(phone);
|
|
61
|
-
if (!formatName) {
|
|
62
|
-
return (0, import_analyticsUtils.logException)({
|
|
63
|
-
action,
|
|
64
|
-
category: eventCategory,
|
|
65
|
-
params: { name },
|
|
66
|
-
value: import_error.ErrorTypes.INVALID_ARGUMENTS
|
|
67
|
-
}, context);
|
|
68
|
-
}
|
|
69
|
-
const filters = [`a.name == "${formatName}"`];
|
|
70
|
-
if (formatEmail) {
|
|
71
|
-
filters.push(`a.email == "${formatEmail}"`);
|
|
72
|
-
}
|
|
73
|
-
const checkQuery = `FOR u IN users
|
|
74
|
-
FILTER ${filters.join(" || ")}
|
|
75
|
-
RETURN u`;
|
|
76
|
-
try {
|
|
77
|
-
const existingApps = await database.query(checkQuery).then((cursor) => cursor.all());
|
|
78
|
-
if (existingApps.length) {
|
|
79
|
-
return (0, import_analyticsUtils.logException)({
|
|
80
|
-
action,
|
|
81
|
-
category: eventCategory,
|
|
82
|
-
params: { name },
|
|
83
|
-
value: import_error.ErrorTypes.EXISTING_ITEM
|
|
84
|
-
}, context);
|
|
85
|
-
}
|
|
86
|
-
} catch (error) {
|
|
87
|
-
return (0, import_analyticsUtils.logError)({
|
|
88
|
-
action,
|
|
89
|
-
category: eventCategory,
|
|
90
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
91
|
-
params: { name }
|
|
92
|
-
}, error, context);
|
|
93
|
-
}
|
|
94
|
-
const insert = {
|
|
95
|
-
_key: (0, import_utils.createHash)(name, null),
|
|
96
|
-
active: true,
|
|
97
|
-
added: Date.now(),
|
|
98
|
-
email: formatEmail,
|
|
99
|
-
modified: Date.now(),
|
|
100
|
-
name: formatName,
|
|
101
|
-
phone: formatPhone
|
|
102
|
-
};
|
|
103
|
-
const insertQuery = import_arangojs.aql`INSERT ${insert} IN apps RETURN NEW`;
|
|
104
|
-
return await database.query(insertQuery).then((cursor) => cursor.next() || {}).catch((error) => (0, import_analyticsUtils.logError)({
|
|
105
|
-
action,
|
|
106
|
-
category: eventCategory,
|
|
107
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
108
|
-
params: { name }
|
|
109
|
-
}, error, context));
|
|
110
|
-
};
|
|
111
|
-
const updateApp = async (context, app) => {
|
|
112
|
-
const action = "updateApp";
|
|
113
|
-
const { database } = context;
|
|
114
|
-
const { _key, _id, id, appId, ...updated } = app;
|
|
115
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
116
|
-
const appQuery = import_arangojs.aql`LET a = DOCUMENT(${appDocId})
|
|
117
|
-
UPDATE a WITH ${updated} IN apps
|
|
118
|
-
RETURN NEW`;
|
|
119
|
-
return await database.query(appQuery).then((cursor) => cursor.next()).catch(
|
|
120
|
-
(error) => (0, import_analyticsUtils.logError)({
|
|
121
|
-
action,
|
|
122
|
-
category: eventCategory,
|
|
123
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
124
|
-
params: { app }
|
|
125
|
-
}, error, context)
|
|
126
|
-
);
|
|
127
|
-
};
|
|
128
|
-
const deleteApp = async (context, app) => {
|
|
129
|
-
const action = "deleteApp";
|
|
130
|
-
const { database, session } = context;
|
|
131
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
132
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
133
|
-
if (!isAdmin) {
|
|
134
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
135
|
-
}
|
|
136
|
-
const aqlQuery = import_arangojs.aql`FOR a IN apps
|
|
137
|
-
FILTER a._id == \"${appDocId}\"
|
|
1
|
+
import{createHash as q,parseArangoId as $,parseEmail as _,parseId as U,parsePhone as j,parseString as f}from"@nlabs/utils";import{aql as g}from"arangojs";import{ErrorTypes as o}from"../types/error.types";import{logError as E,logException as h,UserError as I}from"../utils/analyticsUtils";import{getDocId as O,getLimit as w,selectReactionCountByType as x,useDb as R}from"../utils/arangodbUtils";import{isAdminUser as N}from"../utils/sessionUtils";const l="apps",S=(e=[])=>e.reduce((t,r)=>r.includes("Count")?x("apps","a",r,t):t,{objects:[],queries:[]}),D=(e={})=>{const{from:t=0,to:r=30}=e,a=w(t,r);return{...e,limit:a}},v=async(e,t)=>{const r="addUser",{databaseName:a}=e,{email:m,name:n,phone:i}=t,p=f(n),s=_(m),c=j(i);if(!p)return h({action:r,category:l,params:{name:n},value:o.INVALID_ARGUMENTS},e);const y=[`a.name == "${p}"`];s&&y.push(`a.email == "${s}"`);const A=`FOR u IN users
|
|
2
|
+
FILTER ${y.join(" || ")}
|
|
3
|
+
RETURN u`;try{if((await R(a).query(A).then(b=>b.all())).length)return h({action:r,category:l,params:{name:n},value:o.EXISTING_ITEM},e)}catch(u){return E({action:r,category:l,label:o.DATABASE_ERROR,params:{name:n}},u,e)}const T={_key:q(n,null),active:!0,added:Date.now(),email:s,modified:Date.now(),name:p,phone:c},d=g`INSERT ${T} IN apps RETURN NEW`;return await R(a).query(d).then(u=>u.next()||{}).catch(u=>E({action:r,category:l,label:o.DATABASE_ERROR,params:{name:n}},u,e))},F=async(e,t)=>{const r="updateApp",{databaseName:a}=e,{_key:m,_id:n,id:i,appId:p,...s}=t,c=O("apps",t),y=g`LET a = DOCUMENT(${c})
|
|
4
|
+
UPDATE a WITH ${s} IN apps
|
|
5
|
+
RETURN NEW`;return await R(a).query(y).then(A=>A.next()).catch(A=>E({action:r,category:l,label:o.DATABASE_ERROR,params:{app:t}},A,e))},M=async(e,t)=>{const r="deleteApp",{databaseName:a,session:m}=e,n=N(m),i=O("apps",t);if(!n)return Promise.reject(new I(o.INVALID_SESSION));const p=g`FOR a IN apps
|
|
6
|
+
FILTER a._id == \"${i}\"
|
|
138
7
|
LIMIT 1
|
|
139
8
|
REMOVE a IN apps
|
|
140
|
-
RETURN OLD`;
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
label:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
const action = "deactivateApp";
|
|
150
|
-
const { database, session } = context;
|
|
151
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
152
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
153
|
-
if (!isAdmin) {
|
|
154
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
155
|
-
}
|
|
156
|
-
const updated = {
|
|
157
|
-
active: false
|
|
158
|
-
};
|
|
159
|
-
const aqlQuery = import_arangojs.aql`UPDATE ${appDocId} WITH ${updated} IN apps LIMIT 1 RETURN NEW`;
|
|
160
|
-
return database.query(aqlQuery).then((cursor) => cursor.next()).catch(
|
|
161
|
-
(error) => (0, import_analyticsUtils.logError)({
|
|
162
|
-
action,
|
|
163
|
-
category: eventCategory,
|
|
164
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
165
|
-
params: app
|
|
166
|
-
}, error, context)
|
|
167
|
-
);
|
|
168
|
-
};
|
|
169
|
-
const getApp = (context, options) => {
|
|
170
|
-
const action = "getApp";
|
|
171
|
-
const { database, fields, session } = context;
|
|
172
|
-
const { id, key, name } = parseAppOptions(options);
|
|
173
|
-
const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
|
|
174
|
-
const filterBy = ["a.active == true"];
|
|
175
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
176
|
-
if (!isAdmin) {
|
|
177
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
178
|
-
}
|
|
179
|
-
if (id) {
|
|
180
|
-
filterBy.push(`a._id == "${(0, import_utils.parseArangoId)(id)}"`);
|
|
181
|
-
}
|
|
182
|
-
if (key) {
|
|
183
|
-
filterBy.push(`a._key == "apps/${(0, import_utils.parseId)(key)}"`);
|
|
184
|
-
}
|
|
185
|
-
if (name) {
|
|
186
|
-
filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
|
|
187
|
-
}
|
|
188
|
-
const aqlQuery = `FOR a IN apps
|
|
189
|
-
FILTER ${filterBy.join(" && ")}
|
|
190
|
-
${selectQueries.join("\n")}
|
|
191
|
-
RETURN MERGE(a, {${selectObjects.join(", ")}})`;
|
|
192
|
-
return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => {
|
|
193
|
-
(0, import_analyticsUtils.logError)({
|
|
194
|
-
action,
|
|
195
|
-
category: eventCategory,
|
|
196
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
197
|
-
params: options
|
|
198
|
-
}, error, context);
|
|
199
|
-
return null;
|
|
200
|
-
});
|
|
201
|
-
};
|
|
202
|
-
const getApps = async (context, options) => {
|
|
203
|
-
const action = "getApps";
|
|
204
|
-
const { database, fields, session } = context;
|
|
205
|
-
const { limit, name } = parseAppOptions(options);
|
|
206
|
-
const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
|
|
207
|
-
const filterBy = ["a.active == true"];
|
|
208
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
209
|
-
if (!isAdmin) {
|
|
210
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
211
|
-
}
|
|
212
|
-
if (name) {
|
|
213
|
-
filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
|
|
214
|
-
}
|
|
215
|
-
const aqlQuery = `FOR a IN apps
|
|
216
|
-
FILTER ${filterBy.join(" && ")}
|
|
217
|
-
${selectQueries.join("\n")}
|
|
218
|
-
${limit.aql}
|
|
9
|
+
RETURN OLD`;return R(a).query(p).then(s=>s.next()).catch(s=>E({action:r,category:l,label:o.DATABASE_ERROR,params:t},s,e))},V=(e,t)=>{const r="deactivateApp",{databaseName:a,session:m}=e,n=N(m),i=O("apps",t);if(!n)return Promise.reject(new I(o.INVALID_SESSION));const s=g`UPDATE ${i} WITH ${{active:!1}} IN apps LIMIT 1 RETURN NEW`;return R(a).query(s).then(c=>c.next()).catch(c=>E({action:r,category:l,label:o.DATABASE_ERROR,params:t},c,e))},W=(e,t)=>{const r="getApp",{databaseName:a,fields:m,session:n}=e,{id:i,key:p,name:s}=D(t),{objects:c,queries:y}=S(m),A=["a.active == true"];if(!N(n))return Promise.reject(new I(o.INVALID_SESSION));i&&A.push(`a._id == "${$(i)}"`),p&&A.push(`a._key == "apps/${U(p)}"`),s&&A.push(`CONTAINS(a.name, "${f(s)}")`);const d=`FOR a IN apps
|
|
10
|
+
FILTER ${A.join(" && ")}
|
|
11
|
+
${y.join(`
|
|
12
|
+
`)}
|
|
13
|
+
RETURN MERGE(a, {${c.join(", ")}})`;return R(a).query(d).then(u=>u.next()).catch(u=>(E({action:r,category:l,label:o.DATABASE_ERROR,params:t},u,e),null))},G=async(e,t)=>{const r="getApps",{databaseName:a,fields:m,session:n}=e,{limit:i,name:p}=D(t),{objects:s,queries:c}=S(m),y=["a.active == true"];if(!N(n))return Promise.reject(new I(o.INVALID_SESSION));p&&y.push(`CONTAINS(a.name, "${f(p)}")`);const T=`FOR a IN apps
|
|
14
|
+
FILTER ${y.join(" && ")}
|
|
15
|
+
${c.join(`
|
|
16
|
+
`)}
|
|
17
|
+
${i.aql}
|
|
219
18
|
SORT a.name
|
|
220
|
-
RETURN MERGE(a, {${
|
|
221
|
-
return database.query(aqlQuery).then((cursor) => cursor.all()).catch((error) => {
|
|
222
|
-
(0, import_analyticsUtils.logError)({
|
|
223
|
-
action,
|
|
224
|
-
category: eventCategory,
|
|
225
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
226
|
-
params: options
|
|
227
|
-
}, error, context);
|
|
228
|
-
return [];
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
232
|
-
0 && (module.exports = {
|
|
233
|
-
addApp,
|
|
234
|
-
deactivateApp,
|
|
235
|
-
deleteApp,
|
|
236
|
-
getApp,
|
|
237
|
-
getAppOptional,
|
|
238
|
-
getApps,
|
|
239
|
-
parseAppOptions,
|
|
240
|
-
updateApp
|
|
241
|
-
});
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9uLCBVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0RG9jSWQsIGdldExpbWl0LCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlfSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZW1haWwsIG5hbWUsIHBob25lfSA9IGFwcDtcbiAgY29uc3QgZm9ybWF0TmFtZSA9IHBhcnNlU3RyaW5nKG5hbWUpO1xuICBjb25zdCBmb3JtYXRFbWFpbCA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZSA9IHBhcnNlUGhvbmUocGhvbmUpO1xuXG4gIGlmKCFmb3JtYXROYW1lKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge25hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gW2BhLm5hbWUgPT0gXCIke2Zvcm1hdE5hbWV9XCJgXTtcblxuICBpZihmb3JtYXRFbWFpbCkge1xuICAgIGZpbHRlcnMucHVzaChgYS5lbWFpbCA9PSBcIiR7Zm9ybWF0RW1haWx9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IGNoZWNrUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignIHx8ICcpfVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nQXBwcyA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICBwaG9uZTogZm9ybWF0UGhvbmVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIHx8IHt9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIGFwcElkLCAuLi51cGRhdGVkfSA9IGFwcDtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG4gIGNvbnN0IGFwcFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYSA9IERPQ1VNRU5UKCR7YXBwRG9jSWR9KVxuICAgIFVQREFURSBhIFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFwcFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT5cbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczoge2FwcH1cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiBhLl9pZCA9PSBcXFwiJHthcHBEb2NJZH1cXFwiXG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBhIElOIGFwcHNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZUFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlYWN0aXZhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBpZihpZCkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2lkID09IFwiJHtwYXJzZUFyYW5nb0lkKGlkKX1cImApO1xuICB9XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5fa2V5ID09IFwiYXBwcy8ke3BhcnNlSWQoa2V5KX1cImApO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIHVua25vd24gYXMgQXBwVHlwZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwcyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgbmFtZX0gPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsnYS5hY3RpdmUgPT0gdHJ1ZSddO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFNPUlQgYS5uYW1lXG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEFwcFR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtB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
|
|
19
|
+
RETURN MERGE(a, {${s.join(", ")}})`;return R(a).query(T).then(d=>d.all()).catch(d=>(E({action:r,category:l,label:o.DATABASE_ERROR,params:t},d,e),[]))};export{v as addApp,V as deactivateApp,M as deleteApp,W as getApp,S as getAppOptional,G as getApps,D as parseAppOptions,F as updateApp};
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzLnR5cGVzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9uLCBVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0RG9jSWQsIGdldExpbWl0LCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlLCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5pbXBvcnQge2lzQWRtaW5Vc2VyfSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge2VtYWlsLCBuYW1lLCBwaG9uZX0gPSBhcHA7XG4gIGNvbnN0IGZvcm1hdE5hbWUgPSBwYXJzZVN0cmluZyhuYW1lKTtcbiAgY29uc3QgZm9ybWF0RW1haWwgPSBwYXJzZUVtYWlsKGVtYWlsKTtcbiAgY29uc3QgZm9ybWF0UGhvbmUgPSBwYXJzZVBob25lKHBob25lKTtcblxuICBpZighZm9ybWF0TmFtZSkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtgYS5uYW1lID09IFwiJHtmb3JtYXROYW1lfVwiYF07XG5cbiAgaWYoZm9ybWF0RW1haWwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYGEuZW1haWwgPT0gXCIke2Zvcm1hdEVtYWlsfVwiYCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyB8fCAnKX1cbiAgICBSRVRVUk4gdWA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBleGlzdGluZ0FwcHMgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICBwaG9uZTogZm9ybWF0UGhvbmVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGluc2VydFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkgfHwge30pXG4gICAgLmNhdGNoKChlcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHBhcmFtczoge25hbWV9XG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3VwZGF0ZUFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIGFwcElkLCAuLi51cGRhdGVkfSA9IGFwcDtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG4gIGNvbnN0IGFwcFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYSA9IERPQ1VNRU5UKCR7YXBwRG9jSWR9KVxuICAgIFVQREFURSBhIFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXBwUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiB7YXBwfVxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZUFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiBhLl9pZCA9PSBcXFwiJHthcHBEb2NJZH1cXFwiXG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBhIElOIGFwcHNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IGFwcCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWFjdGl2YXRlQXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVhY3RpdmF0ZUFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IGFwcCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpXG4gICAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHAgPSAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBpZihpZCkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2lkID09IFwiJHtwYXJzZUFyYW5nb0lkKGlkKX1cImApO1xuICB9XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5fa2V5ID09IFwiYXBwcy8ke3BhcnNlSWQoa2V5KX1cImApO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkgYXMgdW5rbm93biBhcyBBcHBUeXBlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IG9wdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFwcHMgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRBcHBzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgbmFtZX0gPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsnYS5hY3RpdmUgPT0gdHJ1ZSddO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFNPUlQgYS5uYW1lXG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgQXBwVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IG9wdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAg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QyxLQUU3QyxPQUFPNUMsRUFBTWdCLENBQVksRUFBRSxNQUFNd0IsQ0FBUSxFQUN0QyxLQUFNZixHQUFXQSxFQUFPLElBQUksQ0FBeUIsRUFDckQsTUFBT0MsSUFDTmhDLEVBQVMsQ0FDUCxPQUFBcUIsRUFDQSxTQUFVYixFQUNWLE1BQU9ULEVBQVcsZUFDbEIsT0FBUWUsQ0FDVixFQUFHa0IsRUFBT2IsQ0FBTyxFQUNWLENBQUMsRUFDVCxDQUNMIiwKICAibmFtZXMiOiBbImNyZWF0ZUhhc2giLCAicGFyc2VBcmFuZ29JZCIsICJwYXJzZUVtYWlsIiwgInBhcnNlSWQiLCAicGFyc2VQaG9uZSIsICJwYXJzZVN0cmluZyIsICJhcWwiLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJsb2dFeGNlcHRpb24iLCAiVXNlckVycm9yIiwgImdldERvY0lkIiwgImdldExpbWl0IiwgInNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUiLCAidXNlRGIiLCAiaXNBZG1pblVzZXIiLCAiZXZlbnRDYXRlZ29yeSIsICJnZXRBcHBPcHRpb25hbCIsICJmaWVsZHMiLCAic2VsZWN0cyIsICJmaWVsZCIsICJwYXJzZUFwcE9wdGlvbnMiLCAib3B0aW9ucyIsICJmcm9tIiwgInRvIiwgImxpbWl0IiwgImFkZEFwcCIsICJjb250ZXh0IiwgImFwcCIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgImVtYWlsIiwgIm5hbWUiLCAicGhvbmUiLCAiZm9ybWF0TmFtZSIsICJmb3JtYXRFbWFpbCIsICJmb3JtYXRQaG9uZSIsICJmaWx0ZXJzIiwgImNoZWNrUXVlcnkiLCAiY3Vyc29yIiwgImVycm9yIiwgImluc2VydCIsICJpbnNlcnRRdWVyeSIsICJ1cGRhdGVBcHAiLCAiX2tleSIsICJfaWQiLCAiaWQiLCAiYXBwSWQiLCAidXBkYXRlZCIsICJhcHBEb2NJZCIsICJhcHBRdWVyeSIsICJkZWxldGVBcHAiLCAic2Vzc2lvbiIsICJpc0FkbWluIiwgImFxbFF1ZXJ5IiwgImRlYWN0aXZhdGVBcHAiLCAiZ2V0QXBwIiwgImtleSIsICJzZWxlY3RPYmplY3RzIiwgInNlbGVjdFF1ZXJpZXMiLCAiZmlsdGVyQnkiLCAiZ2V0QXBwcyJdCn0K
|
|
@@ -1,90 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var connections_exports = {};
|
|
19
|
-
__export(connections_exports, {
|
|
20
|
-
addConnection: () => addConnection,
|
|
21
|
-
deleteConnection: () => deleteConnection,
|
|
22
|
-
getConnection: () => getConnection
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(connections_exports);
|
|
25
|
-
var import_utils = require("@nlabs/utils");
|
|
26
|
-
var import_aql = require("arangojs/aql");
|
|
27
|
-
var import_error = require("../types/error.types");
|
|
28
|
-
var import_utils2 = require("../utils");
|
|
29
|
-
const eventCategory = "connections";
|
|
30
|
-
const addConnection = (context, fromType, fromId, toType, toId, value) => {
|
|
31
|
-
const action = "addConnection";
|
|
32
|
-
const { database } = context;
|
|
33
|
-
const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
|
|
34
|
-
const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
|
|
35
|
-
const insert = {
|
|
36
|
-
_from: formatFromDocId,
|
|
37
|
-
_to: formatToDocId,
|
|
38
|
-
isDirect: true,
|
|
39
|
-
type: toType,
|
|
40
|
-
value: !!value ? (0, import_utils.parseString)(value, 32) : void 0
|
|
41
|
-
};
|
|
42
|
-
const aqlQry = import_aql.aql`INSERT ${insert} IN hasConnection`;
|
|
43
|
-
return database.query(aqlQry).then(() => true).catch((error) => {
|
|
44
|
-
(0, import_utils2.logError)({
|
|
45
|
-
action,
|
|
46
|
-
category: eventCategory,
|
|
47
|
-
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
48
|
-
}, error, context);
|
|
49
|
-
return false;
|
|
50
|
-
});
|
|
51
|
-
};
|
|
52
|
-
const getConnection = (context, fromType, fromId, toType, toId) => {
|
|
53
|
-
const action = "getConnection";
|
|
54
|
-
const { database } = context;
|
|
55
|
-
const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
|
|
56
|
-
const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
|
|
57
|
-
const aqlQry = import_aql.aql`FOR hc in hasConnection
|
|
58
|
-
FILTER hc._from == ${formatFromDocId} && hc._to == ${formatToDocId}
|
|
59
|
-
LIMIT 1`;
|
|
60
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_utils2.logError)({
|
|
61
|
-
action,
|
|
62
|
-
category: eventCategory,
|
|
63
|
-
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
64
|
-
}, error, context));
|
|
65
|
-
};
|
|
66
|
-
const deleteConnection = (context, fromType, fromId, toType, toId) => {
|
|
67
|
-
const action = "deleteReactionByItem";
|
|
68
|
-
const { database } = context;
|
|
69
|
-
const formatFromDocId = (0, import_utils.parseArangoId)(`${fromType}/${fromId}`);
|
|
70
|
-
const formatToDocId = (0, import_utils.parseArangoId)(`${toType}/${toId}`);
|
|
71
|
-
const aqlQry = import_aql.aql`FOR hc in hasConnection
|
|
72
|
-
FILTER hc._from == ${formatFromDocId} && hc._to == ${formatToDocId}
|
|
1
|
+
import{parseArangoId as e,parseString as I}from"@nlabs/utils";import{aql as p}from"arangojs";import{ErrorTypes as y}from"../types/error.types";import{logError as f}from"../utils/analyticsUtils";import{useDb as d}from"../utils/arangodbUtils";const A="connections",q=(t,s,i,n,c,r)=>{const a="addConnection",{databaseName:g}=t,m=e(`${s}/${i}`),l=e(`${n}/${c}`),o={_from:m,_to:l,isDirect:!0,type:n,value:r?I(r,32):void 0},h=p`INSERT ${o} IN hasConnection`;return d(g).query(h).then(()=>!0).catch(u=>(f({action:a,category:A,label:y.DATABASE_ERROR},u,t),!1))},D=(t,s,i,n,c)=>{const r="getConnection",{databaseName:a}=t,g=e(`${s}/${i}`),m=e(`${n}/${c}`),l=p`FOR hc in hasConnection
|
|
2
|
+
FILTER hc._from == ${g} && hc._to == ${m}
|
|
3
|
+
LIMIT 1`;return d(a).query(l).then(o=>o.next()).catch(o=>f({action:r,category:A,label:y.DATABASE_ERROR},o,t))},b=(t,s,i,n,c)=>{const r="deleteReactionByItem",{databaseName:a}=t,g=e(`${s}/${i}`),m=e(`${n}/${c}`),l=p`FOR hc in hasConnection
|
|
4
|
+
FILTER hc._from == ${g} && hc._to == ${m}
|
|
73
5
|
LIMIT 1
|
|
74
|
-
REMOVE hc IN hasConnection`;
|
|
75
|
-
|
|
76
|
-
(0, import_utils2.logError)({
|
|
77
|
-
action,
|
|
78
|
-
category: eventCategory,
|
|
79
|
-
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
80
|
-
}, error, context);
|
|
81
|
-
return false;
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
85
|
-
0 && (module.exports = {
|
|
86
|
-
addConnection,
|
|
87
|
-
deleteConnection,
|
|
88
|
-
getConnection
|
|
89
|
-
});
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29ubmVjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbCwgdHlwZSBBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0LCBDb25uZWN0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29ubmVjdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgYWRkQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmcsXG4gIHZhbHVlPzogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkQ29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG4gIGNvbnN0IGluc2VydCA9IHtcbiAgICBfZnJvbTogZm9ybWF0RnJvbURvY0lkLFxuICAgIF90bzogZm9ybWF0VG9Eb2NJZCxcbiAgICBpc0RpcmVjdDogdHJ1ZSxcbiAgICB0eXBlOiB0b1R5cGUsXG4gICAgdmFsdWU6ICEhdmFsdWUgPyBwYXJzZVN0cmluZyh2YWx1ZSwgMzIpIDogdW5kZWZpbmVkXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBoYXNDb25uZWN0aW9uYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb25uZWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBmcm9tVHlwZTogc3RyaW5nLFxuICBmcm9tSWQ6IHN0cmluZyxcbiAgdG9UeXBlOiBzdHJpbmcsXG4gIHRvSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxDb25uZWN0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRDb25uZWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBoYyBpbiBoYXNDb25uZWN0aW9uXG4gICAgRklMVEVSIGhjLl9mcm9tID09ICR7Zm9ybWF0RnJvbURvY0lkfSAmJiBoYy5fdG8gPT0gJHtmb3JtYXRUb0RvY0lkfVxuICAgIExJTUlUIDFgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQ29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmdcbik6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuXG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgaW4gaGFzQ29ubmVjdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke2Zvcm1hdEZyb21Eb2NJZH0gJiYgaGMuX3RvID09ICR7Zm9ybWF0VG9Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKCkgPT4gdHJ1ZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBeUM7QUFDekMsaUJBQWlDO0FBRWpDLG1CQUF5QjtBQUN6QixJQUFBQSxnQkFBdUI7QUFJdkIsTUFBTSxnQkFBd0I7QUFFdkIsTUFBTSxnQkFBZ0IsQ0FDM0IsU0FDQSxVQUNBLFFBQ0EsUUFDQSxNQUNBLFVBQ3FCO0FBQ3JCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFNBQVEsSUFBSTtBQUVuQixRQUFNLHNCQUEwQiw0QkFBYyxHQUFHLFFBQVEsSUFBSSxNQUFNLEVBQUU7QUFDckUsUUFBTSxvQkFBd0IsNEJBQWMsR0FBRyxNQUFNLElBQUksSUFBSSxFQUFFO0FBQy9ELFFBQU0sU0FBUztBQUFBLElBQ2IsT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLElBQ0wsVUFBVTtBQUFBLElBQ1YsTUFBTTtBQUFBLElBQ04sT0FBTyxDQUFDLENBQUMsWUFBUSwwQkFBWSxPQUFPLEVBQUUsSUFBSTtBQUFBLEVBQzVDO0FBQ0EsUUFBTSxTQUFtQix3QkFBYSxNQUFNO0FBRTVDLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxNQUFNLElBQUksRUFDZixNQUFNLENBQUMsVUFBaUI7QUFDdkIsZ0NBQVM7QUFBQSxNQUNQO0FBQUEsTUFDQSxVQUFVO0FBQUEsTUFDVixPQUFPLHdCQUFXO0FBQUEsSUFDcEIsR0FBRyxPQUFPLE9BQU87QUFDakIsV0FBTztBQUFBLEVBQ1QsQ0FBQztBQUNMO0FBRU8sTUFBTSxnQkFBZ0IsQ0FDM0IsU0FDQSxVQUNBLFFBQ0EsUUFDQSxTQUM0QjtBQUM1QixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFFbkIsUUFBTSxzQkFBMEIsNEJBQWMsR0FBRyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3JFLFFBQU0sb0JBQXdCLDRCQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRTtBQUUvRCxRQUFNLFNBQW1CO0FBQUEseUJBQ0YsZUFBZSxpQkFBaUIsYUFBYTtBQUFBO0FBR3BFLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQUMsRUFDOUIsTUFBTSxDQUFDLGNBQWlCLHdCQUFTO0FBQUEsSUFDaEM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLE9BQU8sd0JBQVc7QUFBQSxFQUNwQixHQUFHLE9BQU8sT0FBTyxDQUFDO0FBQ3RCO0FBRU8sTUFBTSxtQkFBbUIsQ0FDOUIsU0FDQSxVQUNBLFFBQ0EsUUFDQSxTQUNxQjtBQUNyQixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFFbkIsUUFBTSxzQkFBMEIsNEJBQWMsR0FBRyxRQUFRLElBQUksTUFBTSxFQUFFO0FBQ3JFLFFBQU0sb0JBQXdCLDRCQUFjLEdBQUcsTUFBTSxJQUFJLElBQUksRUFBRTtBQUUvRCxRQUFNLFNBQW1CO0FBQUEseUJBQ0YsZUFBZSxpQkFBaUIsYUFBYTtBQUFBO0FBQUE7QUFJcEUsU0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLE1BQU0sSUFBSSxFQUNmLE1BQU0sQ0FBQyxVQUFpQjtBQUN2QixnQ0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxJQUNwQixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0w7IiwKICAibmFtZXMiOiBbImltcG9ydF91dGlscyJdCn0K
|
|
6
|
+
REMOVE hc IN hasConnection`;return d(a).query(l).then(()=>!0).catch(o=>(f({action:r,category:A,label:y.DATABASE_ERROR},o,t),!1))};export{q as addConnection,b as deleteConnection,D as getConnection};
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29ubmVjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dCwgQ29ubmVjdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2Nvbm5lY3Rpb25zJztcblxuZXhwb3J0IGNvbnN0IGFkZENvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nLFxuICB2YWx1ZT86IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcbiAgY29uc3QgaW5zZXJ0ID0ge1xuICAgIF9mcm9tOiBmb3JtYXRGcm9tRG9jSWQsXG4gICAgX3RvOiBmb3JtYXRUb0RvY0lkLFxuICAgIGlzRGlyZWN0OiB0cnVlLFxuICAgIHR5cGU6IHRvVHlwZSxcbiAgICB2YWx1ZTogISF2YWx1ZSA/IHBhcnNlU3RyaW5nKHZhbHVlLCAzMikgOiB1bmRlZmluZWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmdcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICBjb25zdCBmb3JtYXRGcm9tRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGhjIGluIGhhc0Nvbm5lY3Rpb25cbiAgICBGSUxURVIgaGMuX2Zyb20gPT0gJHtmb3JtYXRGcm9tRG9jSWR9ICYmIGhjLl90byA9PSAke2Zvcm1hdFRvRG9jSWR9XG4gICAgTElNSVQgMWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlUmVhY3Rpb25CeUl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgaW4gaGFzQ29ubmVjdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke2Zvcm1hdEZyb21Eb2NJZH0gJiYgaGMuX3RvID09ICR7Zm9ybWF0VG9Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxpQkFBQUEsRUFBZSxlQUFBQyxNQUFrQixlQUN6QyxPQUFRLE9BQUFDLE1BQVUsV0FFbEIsT0FBUSxjQUFBQyxNQUFpQix1QkFDekIsT0FBUSxZQUFBQyxNQUFlLDBCQUN2QixPQUFRLFNBQUFDLE1BQVkseUJBS3BCLE1BQU1DLEVBQXdCLGNBRWpCQyxFQUFnQixDQUMzQkMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsSUFDcUIsQ0FDckIsTUFBTUMsRUFBaUIsZ0JBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJUCxFQUVqQlEsRUFBMEJoQixFQUFjLEdBQUdTLENBQVEsSUFBSUMsQ0FBTSxFQUFFLEVBQy9ETyxFQUF3QmpCLEVBQWMsR0FBR1csQ0FBTSxJQUFJQyxDQUFJLEVBQUUsRUFDekRNLEVBQVMsQ0FDYixNQUFPRixFQUNQLElBQUtDLEVBQ0wsU0FBVSxHQUNWLEtBQU1OLEVBQ04sTUFBU0UsRUFBUVosRUFBWVksRUFBTyxFQUFFLEVBQUksTUFDNUMsRUFDTU0sRUFBbUJqQixXQUFhZ0IsQ0FBTSxvQkFFNUMsT0FBT2IsRUFBTVUsQ0FBWSxFQUFFLE1BQU1JLENBQU0sRUFDcEMsS0FBSyxJQUFNLEVBQUksRUFDZixNQUFPQyxJQUNOaEIsRUFBUyxDQUNQLE9BQUFVLEVBQ0EsU0FBVVIsRUFDVixNQUFPSCxFQUFXLGNBQ3BCLEVBQUdpQixFQUFPWixDQUFPLEVBQ1YsR0FDUixDQUNMLEVBRWFhLEVBQWdCLENBQzNCYixFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxJQUM0QixDQUM1QixNQUFNRSxFQUFpQixnQkFDakIsQ0FBQyxhQUFBQyxDQUFZLEVBQUlQLEVBRWpCUSxFQUEwQmhCLEVBQWMsR0FBR1MsQ0FBUSxJQUFJQyxDQUFNLEVBQUUsRUFDL0RPLEVBQXdCakIsRUFBYyxHQUFHVyxDQUFNLElBQUlDLENBQUksRUFBRSxFQUV6RE8sRUFBbUJqQjtBQUFBLHlCQUNGYyxDQUFlLGlCQUFpQkMsQ0FBYTtBQUFBLGFBR3BFLE9BQU9aLEVBQU1VLENBQVksRUFBRSxNQUFNSSxDQUFNLEVBQ3BDLEtBQU1HLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9GLEdBQWlCaEIsRUFBUyxDQUNoQyxPQUFBVSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0gsRUFBVyxjQUNwQixFQUFHaUIsRUFBT1osQ0FBTyxDQUFDLENBQ3RCLEVBRWFlLEVBQW1CLENBQzlCZixFQUNBQyxFQUNBQyxFQUNBQyxFQUNBQyxJQUNxQixDQUNyQixNQUFNRSxFQUFpQix1QkFDakIsQ0FBQyxhQUFBQyxDQUFZLEVBQUlQLEVBQ2pCUSxFQUEwQmhCLEVBQWMsR0FBR1MsQ0FBUSxJQUFJQyxDQUFNLEVBQUUsRUFDL0RPLEVBQXdCakIsRUFBYyxHQUFHVyxDQUFNLElBQUlDLENBQUksRUFBRSxFQUV6RE8sRUFBbUJqQjtBQUFBLHlCQUNGYyxDQUFlLGlCQUFpQkMsQ0FBYTtBQUFBO0FBQUEsZ0NBSXBFLE9BQU9aLEVBQU1VLENBQVksRUFBRSxNQUFNSSxDQUFNLEVBQ3BDLEtBQUssSUFBTSxFQUFJLEVBQ2YsTUFBT0MsSUFDTmhCLEVBQVMsQ0FDUCxPQUFBVSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0gsRUFBVyxjQUNwQixFQUFHaUIsRUFBT1osQ0FBTyxFQUNWLEdBQ1IsQ0FDTCIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlU3RyaW5nIiwgImFxbCIsICJFcnJvclR5cGVzIiwgImxvZ0Vycm9yIiwgInVzZURiIiwgImV2ZW50Q2F0ZWdvcnkiLCAiYWRkQ29ubmVjdGlvbiIsICJjb250ZXh0IiwgImZyb21UeXBlIiwgImZyb21JZCIsICJ0b1R5cGUiLCAidG9JZCIsICJ2YWx1ZSIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgImZvcm1hdEZyb21Eb2NJZCIsICJmb3JtYXRUb0RvY0lkIiwgImluc2VydCIsICJhcWxRcnkiLCAiZXJyb3IiLCAiZ2V0Q29ubmVjdGlvbiIsICJjdXJzb3IiLCAiZGVsZXRlQ29ubmVjdGlvbiJdCn0K
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import{createHash as $,parseString as u}from"@nlabs/utils";import{aql as N}from"arangojs";import{parseContentFromDb as A,parseContentInput as O}from"../adapters/contentAdapter";import{Config as b}from"../config";import{ErrorTypes as T}from"../types/error.types";import{logError as R}from"../utils/analyticsUtils";import{useDb as v}from"../utils/arangodbUtils";import{translateText as x}from"../utils/googleTranslate";import{extractLanguage as E,isRegionalLocale as q}from"../utils/localeUtils";const w="content",D=(e={})=>{const{category:t,isActive:o=!0,key:r,locale:c}=e;return{category:t?u(t,100):void 0,isActive:o,key:r?u(r,200):void 0,locale:c}},C=async(e,t,o="en")=>{const r="getContent",{databaseName:c}=e,s=u(t,200),n=u(o,5),p=N`
|
|
2
|
+
FOR c IN content
|
|
3
|
+
FILTER c.key == ${s} && c.locale == ${n} && c.isActive == true
|
|
4
|
+
LIMIT 1
|
|
5
|
+
RETURN c
|
|
6
|
+
`;try{const a=await v(c).query(p).then(i=>i.next()).catch(i=>R({action:r,category:w,label:T.DATABASE_ERROR},i,e));return a?A(a):null}catch(a){throw a}},j=async(e,t,o,r="en")=>{const c=b.get("app.locale")||"en";try{let s=await C(e,t,r);if(s?.content)return s.content;if(q(r)){const n=E(r);if(s=await C(e,t,n),s?.content)return h(e,{key:t,content:s.content,locale:r,description:`Extracted from ${n}`}).catch(p=>{}),s.content}if(r===c)return o&&h(e,{key:t,content:o,locale:r,description:"Auto-generated from fallback"}).catch(n=>{}),o||t;try{let n=await C(e,t,c),p;if(n?.content)p=n.content;else{if(q(c)){const i=E(c);n=await C(e,t,i)}if(n?.content)p=n.content;else if(o)p=o,h(e,{key:t,content:o,locale:c,description:"Auto-generated from fallback"}).catch(i=>{});else return t}const a=await x(p,E(r),E(c));return h(e,{key:t,content:a,locale:r,description:`Auto-translated from ${c}`}).catch(i=>{}),a}catch{return o||t}}catch{return o||t}},h=async(e,t)=>{const o="addContent",{databaseName:r,session:c}=e,s=Date.now(),n=O(t),{key:p,locale:a="en",content:i,description:y,category:l,isActive:f=!0}=n,d=$(`content-${p}-${a}`),I={_id:`content/${d}`,_key:d,added:s,key:u(p,200),locale:a,content:u(i,1e4),description:y?u(y,500):void 0,category:l?u(l,100):void 0,isActive:f,modified:s,userId:c?.userId},m=N`INSERT ${I} IN content RETURN NEW`;try{const g=await v(r).query(m).then(L=>L.next()).catch(L=>R({action:o,category:w,label:T.DATABASE_ERROR},L,e));return A(g)}catch(g){throw g}},K=async(e,t)=>{const o="updateContent",{databaseName:r}=e,c=Date.now(),s=O(t),{contentId:n,key:p,locale:a="en",content:i,description:y,category:l,isActive:f}=s;if(!n)throw new Error("Content ID is required for update");const d={content:u(i,1e4),modified:c};y!==void 0&&(d.description=y?u(y,500):void 0),l!==void 0&&(d.category=l?u(l,100):void 0),f!==void 0&&(d.isActive=f);const I=N`
|
|
7
|
+
FOR c IN content
|
|
8
|
+
FILTER c._key == ${n}
|
|
9
|
+
UPDATE c WITH ${d} IN content
|
|
10
|
+
RETURN NEW
|
|
11
|
+
`;try{const m=await v(r).query(I).then(g=>g.next()).catch(g=>R({action:o,category:w,label:T.DATABASE_ERROR},g,e));if(!m)throw new Error("Content not found or access denied");return A(m)}catch(m){throw m}},M=async(e,t={})=>{const o="searchContent",{databaseName:r}=e,{category:c,isActive:s,key:n,locale:p}=D(t),a=[],i={};n&&(a.push("c.key == @key"),i.key=n),p&&(a.push("c.locale == @locale"),i.locale=p),c&&(a.push("c.category == @category"),i.category=c),s!==void 0&&(a.push("c.isActive == @isActive"),i.isActive=s);const l=`
|
|
12
|
+
FOR c IN content
|
|
13
|
+
${a.length>0?`FILTER ${a.join(" && ")}`:""}
|
|
14
|
+
SORT c.key, c.locale
|
|
15
|
+
RETURN c
|
|
16
|
+
`;try{return(await v(r).query(l,i).then(d=>d.all()).catch(d=>R({action:o,category:w,label:T.DATABASE_ERROR},d,e))).map(d=>A(d))}catch(f){throw f}};export{h as addContent,C as getContent,j as getContentWithFallback,D as parseContentOptions,M as searchContent,K as updateContent};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29udGVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtwYXJzZUNvbnRlbnRGcm9tRGIsIHBhcnNlQ29udGVudElucHV0fSBmcm9tICcuLi9hZGFwdGVycy9jb250ZW50QWRhcHRlcic7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5pbXBvcnQge3RyYW5zbGF0ZVRleHR9IGZyb20gJy4uL3V0aWxzL2dvb2dsZVRyYW5zbGF0ZSc7XG5pbXBvcnQge2V4dHJhY3RMYW5ndWFnZSwgaXNSZWdpb25hbExvY2FsZX0gZnJvbSAnLi4vdXRpbHMvbG9jYWxlVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudElucHV0VHlwZSwgQ29udGVudE9wdGlvbnMsIENvbnRlbnRUeXBlLCBMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29udGVudCc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRPcHRpb25zID0gKG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGlzQWN0aXZlID0gdHJ1ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB7XG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQsXG4gICAgaXNBY3RpdmUsXG4gICAga2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsXG4gICAgbG9jYWxlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGxvY2FsZTogc3RyaW5nID0gJ2VuJ1xuKTogUHJvbWlzZTxDb250ZW50VHlwZSB8IG51bGw+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0S2V5OiBzdHJpbmcgPSBwYXJzZVN0cmluZyhrZXksIDIwMCk7XG4gIGNvbnN0IGZvcm1hdExvY2FsZTogc3RyaW5nID0gcGFyc2VTdHJpbmcobG9jYWxlLCA1KTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5rZXkgPT0gJHtmb3JtYXRLZXl9ICYmIGMubG9jYWxlID09ICR7Zm9ybWF0TG9jYWxlfSAmJiBjLmlzQWN0aXZlID09IHRydWVcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGNcbiAgYDtcblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQ6IENvbnRlbnRUeXBlIHwgbnVsbCA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gY29udGVudCA/IHBhcnNlQ29udGVudEZyb21EYihjb250ZW50KSA6IG51bGw7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRlbnRXaXRoRmFsbGJhY2sgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBmYWxsYmFja0NvbnRlbnQ6IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBhcHBMb2NhbGUgPSAoQ29uZmlnLmdldCgnYXBwLmxvY2FsZScpIHx8ICdlbicpIGFzIExvY2FsZTtcblxuICB0cnkge1xuICAgIGxldCBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxvY2FsZSk7XG5cbiAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUobG9jYWxlKSkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKTtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbGFuZ3VhZ2UgYXMgTG9jYWxlKTtcblxuICAgICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogY29udGVudC5jb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEV4dHJhY3RlZCBmcm9tICR7bGFuZ3VhZ2V9YFxuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGV4dHJhY3RlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYobG9jYWxlID09PSBhcHBMb2NhbGUpIHtcbiAgICAgIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMb2NhbGUpO1xuICAgICAgbGV0IHNvdXJjZVRleHQ6IHN0cmluZztcblxuICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoaXNSZWdpb25hbExvY2FsZShhcHBMb2NhbGUpKSB7XG4gICAgICAgICAgY29uc3QgYXBwTGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKTtcbiAgICAgICAgICBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExhbmd1YWdlIGFzIExvY2FsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgICAgfSBlbHNlIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBmYWxsYmFja0NvbnRlbnQ7XG5cbiAgICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICAgIGxvY2FsZTogYXBwTG9jYWxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBhcyBkZWZhdWx0IGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRUZXh0ID0gYXdhaXQgdHJhbnNsYXRlVGV4dChzb3VyY2VUZXh0LCBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKSwgZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSkpO1xuXG4gICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAga2V5LFxuICAgICAgICBjb250ZW50OiB0cmFuc2xhdGVkVGV4dCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEF1dG8tdHJhbnNsYXRlZCBmcm9tICR7YXBwTG9jYWxlfWBcbiAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHRyYW5zbGF0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cmFuc2xhdGVkVGV4dDtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zbGF0aW9uIGVycm9yOicsIHRyYW5zbGF0aW9uRXJyb3IpO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjb250ZW50IGZyb20gZGF0YWJhc2U6JywgZXJyb3IpO1xuICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7a2V5LCBsb2NhbGUgPSAnZW4nLCBjb250ZW50LCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnksIGlzQWN0aXZlID0gdHJ1ZX0gPSBwYXJzZWRDb250ZW50O1xuXG4gIGNvbnN0IGNvbnRlbnRJZCA9IGNyZWF0ZUhhc2goYGNvbnRlbnQtJHtrZXl9LSR7bG9jYWxlfWApO1xuICBjb25zdCBpbnNlcnQ6IENvbnRlbnRUeXBlID0ge1xuICAgIF9pZDogYGNvbnRlbnQvJHtjb250ZW50SWR9YCxcbiAgICBfa2V5OiBjb250ZW50SWQsXG4gICAgYWRkZWQ6IG5vdyxcbiAgICBrZXk6IHBhcnNlU3RyaW5nKGtleSwgMjAwKSxcbiAgICBsb2NhbGUsXG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiA/IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApIDogdW5kZWZpbmVkLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yeSA/IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApIDogdW5kZWZpbmVkLFxuICAgIGlzQWN0aXZlLFxuICAgIG1vZGlmaWVkOiBub3csXG4gICAgdXNlcklkOiBzZXNzaW9uPy51c2VySWRcbiAgfTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gY29udGVudCBSRVRVUk4gTkVXYDtcblxuICB0cnkge1xuICAgIGNvbnN0IHNhdmVkQ29udGVudDogQ29udGVudFR5cGUgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuXG4gICAgcmV0dXJuIHBhcnNlQ29udGVudEZyb21EYihzYXZlZENvbnRlbnQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVDb250ZW50ID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBjb250ZW50SW5wdXQ6IENvbnRlbnRJbnB1dFR5cGVcbik6IFByb21pc2U8Q29udGVudFR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlQ29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgcGFyc2VkQ29udGVudCA9IHBhcnNlQ29udGVudElucHV0KGNvbnRlbnRJbnB1dCk7XG4gIGNvbnN0IHtjb250ZW50SWQsIGtleSwgbG9jYWxlID0gJ2VuJywgY29udGVudCwgZGVzY3JpcHRpb24sIGNhdGVnb3J5LCBpc0FjdGl2ZX0gPSBwYXJzZWRDb250ZW50O1xuXG4gIGlmKCFjb250ZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHVwZGF0ZScpO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlOiBhbnkgPSB7XG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcblxuICBpZihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihjYXRlZ29yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmNhdGVnb3J5ID0gY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gIH1cblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5fa2V5ID09ICR7Y29udGVudElkfVxuICAgIFVQREFURSBjIFdJVEggJHt1cGRhdGV9IElOIGNvbnRlbnRcbiAgICBSRVRVUk4gTkVXXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1cGRhdGVkQ29udGVudDogQ29udGVudFR5cGUgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuXG4gICAgaWYoIXVwZGF0ZWRDb250ZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgbm90IGZvdW5kIG9yIGFjY2VzcyBkZW5pZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHVwZGF0ZWRDb250ZW50KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDb250ZW50VHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3NlYXJjaENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtjYXRlZ29yeSwgaXNBY3RpdmUsIGtleSwgbG9jYWxlfSA9IHBhcnNlQ29udGVudE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgY29uc3QgZmlsdGVyQ29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgYmluZFZhcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2Mua2V5ID09IEBrZXknKTtcbiAgICBiaW5kVmFycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZihsb2NhbGUpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2MubG9jYWxlID09IEBsb2NhbGUnKTtcbiAgICBiaW5kVmFycy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICBpZihjYXRlZ29yeSkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5jYXRlZ29yeSA9PSBAY2F0ZWdvcnknKTtcbiAgICBiaW5kVmFycy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICB9XG5cbiAgaWYoaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5pc0FjdGl2ZSA9PSBAaXNBY3RpdmUnKTtcbiAgICBiaW5kVmFycy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gZmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwID8gYEZJTFRFUiAke2ZpbHRlckNvbmRpdGlvbnMuam9pbignICYmICcpfWAgOiAnJztcblxuICBjb25zdCBhcWxRdWVyeSA9IGBcbiAgICBGT1IgYyBJTiBjb250ZW50XG4gICAgJHtmaWx0ZXJDbGF1c2V9XG4gICAgU09SVCBjLmtleSwgYy5sb2NhbGVcbiAgICBSRVRVUk4gY1xuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudExpc3QgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXVlcnksIGJpbmRWYXJzKVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gKGNvbnRlbnRMaXN0IGFzIENvbnRlbnRUeXBlW10pLm1hcCgoY29udGVudCkgPT4gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsY0FBQUEsRUFBWSxlQUFBQyxNQUFrQixlQUN0QyxPQUFRLE9BQUFDLE1BQVUsV0FHbEIsT0FBUSxzQkFBQUMsRUFBb0IscUJBQUFDLE1BQXdCLDZCQUNwRCxPQUFRLFVBQUFDLE1BQWEsWUFDckIsT0FBUSxjQUFBQyxNQUFpQix1QkFDekIsT0FBUSxZQUFBQyxNQUFlLDBCQUN2QixPQUFRLFNBQUFDLE1BQVkseUJBQ3BCLE9BQVEsaUJBQUFDLE1BQW9CLDJCQUM1QixPQUFRLG1CQUFBQyxFQUFpQixvQkFBQUMsTUFBdUIsdUJBS2hELE1BQU1DLEVBQXdCLFVBRWpCQyxFQUFzQixDQUFDQyxFQUEwQixDQUFDLElBQU0sQ0FDbkUsS0FBTSxDQUNKLFNBQUFDLEVBQ0EsU0FBQUMsRUFBVyxHQUNYLElBQUFDLEVBQ0EsT0FBQUMsQ0FDRixFQUFJSixFQUVKLE1BQU8sQ0FDTCxTQUFVQyxFQUFXZCxFQUFZYyxFQUFVLEdBQUcsRUFBSSxPQUNsRCxT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LEVBQUssT0FBQUMsQ0FBTSxFQUFJTCxFQUFvQkMsQ0FBTyxFQUUvRHFDLEVBQTZCLENBQUMsRUFDOUJDLEVBQWdDLENBQUMsRUFFcENuQyxJQUNEa0MsRUFBaUIsS0FBSyxlQUFlLEVBQ3JDQyxFQUFTLElBQU1uQyxHQUdkQyxJQUNEaUMsRUFBaUIsS0FBSyxxQkFBcUIsRUFDM0NDLEVBQVMsT0FBU2xDLEdBR2pCSCxJQUNEb0MsRUFBaUIsS0FBSyx5QkFBeUIsRUFDL0NDLEVBQVMsU0FBV3JDLEdBR25CQyxJQUFhLFNBQ2RtQyxFQUFpQixLQUFLLHlCQUF5QixFQUMvQ0MsRUFBUyxTQUFXcEMsR0FLdEIsTUFBTXFDLEVBQVc7QUFBQTtBQUFBLE1BRklGLEVBQWlCLE9BQVMsRUFBSSxVQUFVQSxFQUFpQixLQUFLLE1BQU0sQ0FBQyxHQUFLLEVBSS9FO0FBQUE7QUFBQTtBQUFBLElBS2hCLEdBQUksQ0FVRixPQVRvQixNQUFNM0MsRUFBTWMsQ0FBWSxFQUN6QyxNQUFNK0IsRUFBVUQsQ0FBUSxFQUN4QixLQUFNekIsR0FBV0EsRUFBTyxJQUFJLENBQUMsRUFDN0IsTUFBT0MsR0FBaUJyQixFQUFTLENBQ2hDLE9BQUFjLEVBQ0EsU0FBVVQsRUFDVixNQUFPTixFQUFXLGNBQ3BCLEVBQUdzQixFQUFPUixDQUFPLENBQUMsR0FFa0IsSUFBS00sR0FBWXZCLEVBQW1CdUIsQ0FBTyxDQUFDLENBQ3BGLE9BQVFFLEVBQU8sQ0FDYixNQUFNQSxDQUNSLENBQ0YiLAogICJuYW1lcyI6IFsiY3JlYXRlSGFzaCIsICJwYXJzZVN0cmluZyIsICJhcWwiLCAicGFyc2VDb250ZW50RnJvbURiIiwgInBhcnNlQ29udGVudElucHV0IiwgIkNvbmZpZyIsICJFcnJvclR5cGVzIiwgImxvZ0Vycm9yIiwgInVzZURiIiwgInRyYW5zbGF0ZVRleHQiLCAiZXh0cmFjdExhbmd1YWdlIiwgImlzUmVnaW9uYWxMb2NhbGUiLCAiZXZlbnRDYXRlZ29yeSIsICJwYXJzZUNvbnRlbnRPcHRpb25zIiwgIm9wdGlvbnMiLCAiY2F0ZWdvcnkiLCAiaXNBY3RpdmUiLCAia2V5IiwgImxvY2FsZSIsICJnZXRDb250ZW50IiwgImNvbnRleHQiLCAiYWN0aW9uIiwgImRhdGFiYXNlTmFtZSIsICJmb3JtYXRLZXkiLCAiZm9ybWF0TG9jYWxlIiwgImFxbFFyeSIsICJjb250ZW50IiwgImN1cnNvciIsICJlcnJvciIsICJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwgImZhbGxiYWNrQ29udGVudCIsICJhcHBMb2NhbGUiLCAibGFuZ3VhZ2UiLCAiYWRkQ29udGVudCIsICJzYXZlRXJyb3IiLCAic291cmNlQ29udGVudCIsICJzb3VyY2VUZXh0IiwgImFwcExhbmd1YWdlIiwgInRyYW5zbGF0ZWRUZXh0IiwgImNvbnRlbnRJbnB1dCIsICJzZXNzaW9uIiwgIm5vdyIsICJwYXJzZWRDb250ZW50IiwgImRlc2NyaXB0aW9uIiwgImNvbnRlbnRJZCIsICJpbnNlcnQiLCAic2F2ZWRDb250ZW50IiwgInVwZGF0ZUNvbnRlbnQiLCAidXBkYXRlIiwgInVwZGF0ZWRDb250ZW50IiwgInNlYXJjaENvbnRlbnQiLCAiZmlsdGVyQ29uZGl0aW9ucyIsICJiaW5kVmFycyIsICJhcWxRdWVyeSJdCn0K
|