@nlabs/reaktor 0.10.2 → 0.10.5
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/coverage/block-navigation.js +1 -1
- package/coverage/index.html +23 -23
- package/coverage/sorter.js +21 -7
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/notifications.d.ts +2 -2
- package/lib/actions/videos.d.ts +25 -0
- package/lib/mocks/video.d.ts +3 -0
- package/lib/types/arangodb.types.d.ts +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/videos.types.d.ts +46 -0
- package/lib/utils/stripeUtils.d.ts +1 -1
- package/package.json +21 -22
- package/lib/actions/apps.js +0 -20
- package/lib/actions/connections.js +0 -7
- package/lib/actions/content.js +0 -17
- package/lib/actions/conversations.js +0 -33
- package/lib/actions/dynamodb.js +0 -2
- package/lib/actions/email.js +0 -2
- package/lib/actions/files.js +0 -5
- package/lib/actions/groups.js +0 -52
- package/lib/actions/images.js +0 -66
- package/lib/actions/index.js +0 -2
- package/lib/actions/ios.js +0 -11
- package/lib/actions/locations.js +0 -7
- package/lib/actions/messages.js +0 -33
- package/lib/actions/notifications.js +0 -2
- package/lib/actions/payments.js +0 -32
- package/lib/actions/posts.js +0 -143
- package/lib/actions/profiles.js +0 -8
- package/lib/actions/reactions.js +0 -35
- package/lib/actions/s3.js +0 -2
- package/lib/actions/search.js +0 -5
- package/lib/actions/sms.js +0 -2
- package/lib/actions/statistics.js +0 -8
- package/lib/actions/subscriptions.js +0 -12
- package/lib/actions/tags.js +0 -24
- package/lib/actions/users.js +0 -87
- package/lib/actions/websockets.js +0 -30
- package/lib/adapters/arangoAdapter.js +0 -2
- package/lib/adapters/contentAdapter.js +0 -2
- package/lib/adapters/fileAdapter.js +0 -2
- package/lib/adapters/imageAdapter.js +0 -2
- package/lib/adapters/index.js +0 -2
- package/lib/adapters/messageAdapter.js +0 -2
- package/lib/adapters/postAdapter.js +0 -2
- package/lib/adapters/reaktorAdapter.js +0 -2
- package/lib/adapters/tagAdapter.js +0 -2
- package/lib/adapters/userAdapter.js +0 -2
- package/lib/config.js +0 -2
- package/lib/handlers/graphqlHandler.js +0 -2
- package/lib/index.js +0 -2
- package/lib/lambdas/actions/websockets.js +0 -30
- package/lib/lambdas/authorizer.js +0 -2
- package/lib/lambdas/connection.js +0 -2
- package/lib/lambdas/utils/message.js +0 -2
- package/lib/lambdas/utils/websocket.js +0 -2
- package/lib/mocks/conversation.js +0 -2
- package/lib/mocks/file.js +0 -2
- package/lib/mocks/group.js +0 -2
- package/lib/mocks/image.js +0 -2
- package/lib/mocks/post.js +0 -2
- package/lib/mocks/tag.js +0 -2
- package/lib/mocks/user.js +0 -2
- package/lib/mutations/content.js +0 -2
- package/lib/mutations/index.js +0 -2
- package/lib/mutations/locations.js +0 -2
- package/lib/mutations/messages.js +0 -2
- package/lib/mutations/posts.js +0 -2
- package/lib/mutations/profiles.js +0 -2
- package/lib/mutations/reactions.js +0 -2
- package/lib/mutations/statistics.js +0 -2
- package/lib/mutations/subscriptions.js +0 -2
- package/lib/mutations/tags.js +0 -2
- package/lib/mutations/users.js +0 -2
- package/lib/objectTypes/app.js +0 -2
- package/lib/objectTypes/bankAccount.js +0 -2
- package/lib/objectTypes/connection.js +0 -2
- package/lib/objectTypes/content.js +0 -2
- package/lib/objectTypes/conversation.js +0 -2
- package/lib/objectTypes/creditCard.js +0 -2
- package/lib/objectTypes/document.js +0 -2
- package/lib/objectTypes/error.js +0 -2
- package/lib/objectTypes/external.js +0 -2
- package/lib/objectTypes/file.js +0 -2
- package/lib/objectTypes/filter.js +0 -2
- package/lib/objectTypes/group.js +0 -2
- package/lib/objectTypes/iapSubscription.js +0 -2
- package/lib/objectTypes/image.js +0 -2
- package/lib/objectTypes/index.js +0 -2
- package/lib/objectTypes/location.js +0 -2
- package/lib/objectTypes/message.js +0 -2
- package/lib/objectTypes/passcode.js +0 -2
- package/lib/objectTypes/plan.js +0 -2
- package/lib/objectTypes/post.js +0 -2
- package/lib/objectTypes/profile.js +0 -2
- package/lib/objectTypes/reaction.js +0 -2
- package/lib/objectTypes/relation.js +0 -2
- package/lib/objectTypes/search.js +0 -2
- package/lib/objectTypes/statistics.js +0 -2
- package/lib/objectTypes/subscription.js +0 -2
- package/lib/objectTypes/tag.js +0 -2
- package/lib/objectTypes/user.js +0 -2
- package/lib/queries/content.js +0 -2
- package/lib/queries/index.js +0 -2
- package/lib/queries/locations.js +0 -2
- package/lib/queries/messages.js +0 -2
- package/lib/queries/posts.js +0 -2
- package/lib/queries/reactions.js +0 -2
- package/lib/queries/statistics.js +0 -2
- package/lib/queries/subscriptions.js +0 -2
- package/lib/queries/tags.js +0 -2
- package/lib/queries/users.js +0 -2
- package/lib/templates/email/layout.js +0 -280
- package/lib/templates/email/passwordForgot.js +0 -16
- package/lib/templates/email/passwordRecovery.js +0 -13
- package/lib/templates/email/verifyEmail.js +0 -16
- package/lib/templates/email/welcome.js +0 -16
- package/lib/templates/sms/passwordForgot.js +0 -2
- package/lib/templates/sms/passwordRecovery.js +0 -2
- package/lib/templates/sms/verifyEmail.js +0 -2
- package/lib/templates/sms/verifyPhone.js +0 -2
- package/lib/templates/sms/welcome.js +0 -2
- package/lib/types/apps.types.js +0 -2
- package/lib/types/arangodb.types.js +0 -1
- package/lib/types/auth.types.js +0 -1
- package/lib/types/connections.types.js +0 -1
- package/lib/types/content.types.js +0 -1
- package/lib/types/conversations.types.js +0 -1
- package/lib/types/email.types.js +0 -1
- package/lib/types/error.types.js +0 -2
- package/lib/types/files.types.js +0 -1
- package/lib/types/google.types.js +0 -1
- package/lib/types/groups.types.js +0 -1
- package/lib/types/images.types.js +0 -1
- package/lib/types/index.js +0 -2
- package/lib/types/locations.types.js +0 -1
- package/lib/types/messages.types.js +0 -1
- package/lib/types/notifications.types.js +0 -1
- package/lib/types/payments.types.js +0 -1
- package/lib/types/posts.types.js +0 -1
- package/lib/types/profiles.types.js +0 -1
- package/lib/types/statistics.types.js +0 -1
- package/lib/types/tags.types.js +0 -1
- package/lib/types/users.types.js +0 -1
- package/lib/types/websockets.types.js +0 -1
- package/lib/utils/adapterUtils.js +0 -2
- package/lib/utils/analyticsUtils.js +0 -2
- package/lib/utils/arangodbUtils.js +0 -7
- package/lib/utils/authUtils.js +0 -2
- package/lib/utils/contextUtils.js +0 -2
- package/lib/utils/dbI18n.example.js +0 -6
- package/lib/utils/dbI18n.js +0 -2
- package/lib/utils/googleTranslate.js +0 -2
- package/lib/utils/graphqlUtils.js +0 -2
- package/lib/utils/index.js +0 -2
- package/lib/utils/languageDetection.js +0 -2
- package/lib/utils/localeUtils.example.js +0 -2
- package/lib/utils/localeUtils.js +0 -2
- package/lib/utils/middlewareUtils.js +0 -2
- package/lib/utils/sessionUtils.js +0 -2
- package/lib/utils/stripeUtils.js +0 -2
- package/lib/utils/templateUtils.js +0 -2
- package/lib/utils/testUtils.js +0 -2
- package/lib/utils/translationQueue.example.js +0 -2
- package/lib/utils/translationQueue.js +0 -2
|
@@ -9,7 +9,7 @@ var jumpToCode = (function init() {
|
|
|
9
9
|
// We don't want to select elements that are direct descendants of another match
|
|
10
10
|
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
|
|
11
11
|
|
|
12
|
-
//
|
|
12
|
+
// Selector that finds elements on the page to which we can jump
|
|
13
13
|
var selector =
|
|
14
14
|
fileListingElements.join(', ') +
|
|
15
15
|
', ' +
|
package/coverage/index.html
CHANGED
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">77.13% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>2139/2773</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">67.61% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>906/1340</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">74.69% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>543/727</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">77.23% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>2076/2688</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -94,18 +94,18 @@
|
|
|
94
94
|
</tr>
|
|
95
95
|
|
|
96
96
|
<tr>
|
|
97
|
-
<td class="file
|
|
98
|
-
<td data-value="
|
|
99
|
-
<div class="chart"><div class="cover-fill" style="width:
|
|
97
|
+
<td class="file medium" data-value="src/actions"><a href="src/actions/index.html">src/actions</a></td>
|
|
98
|
+
<td data-value="78.87" class="pic medium">
|
|
99
|
+
<div class="chart"><div class="cover-fill" style="width: 78%"></div><div class="cover-empty" style="width: 22%"></div></div>
|
|
100
100
|
</td>
|
|
101
|
-
<td data-value="
|
|
102
|
-
<td data-value="
|
|
103
|
-
<td data-value="61.
|
|
104
|
-
<td data-value="
|
|
105
|
-
<td data-value="
|
|
106
|
-
<td data-value="
|
|
107
|
-
<td data-value="
|
|
108
|
-
<td data-value="
|
|
101
|
+
<td data-value="78.87" class="pct medium">78.87%</td>
|
|
102
|
+
<td data-value="2059" class="abs medium">1624/2059</td>
|
|
103
|
+
<td data-value="61.19" class="pct medium">61.19%</td>
|
|
104
|
+
<td data-value="786" class="abs medium">481/786</td>
|
|
105
|
+
<td data-value="78.59" class="pct medium">78.59%</td>
|
|
106
|
+
<td data-value="528" class="abs medium">415/528</td>
|
|
107
|
+
<td data-value="78.72" class="pct medium">78.72%</td>
|
|
108
|
+
<td data-value="2016" class="abs medium">1587/2016</td>
|
|
109
109
|
</tr>
|
|
110
110
|
|
|
111
111
|
<tr>
|
|
@@ -129,13 +129,13 @@
|
|
|
129
129
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
|
130
130
|
</td>
|
|
131
131
|
<td data-value="100" class="pct high">100%</td>
|
|
132
|
-
<td data-value="
|
|
132
|
+
<td data-value="14" class="abs high">14/14</td>
|
|
133
133
|
<td data-value="50" class="pct medium">50%</td>
|
|
134
|
-
<td data-value="
|
|
134
|
+
<td data-value="8" class="abs medium">4/8</td>
|
|
135
135
|
<td data-value="100" class="pct high">100%</td>
|
|
136
136
|
<td data-value="0" class="abs high">0/0</td>
|
|
137
137
|
<td data-value="100" class="pct high">100%</td>
|
|
138
|
-
<td data-value="
|
|
138
|
+
<td data-value="14" class="abs high">14/14</td>
|
|
139
139
|
</tr>
|
|
140
140
|
|
|
141
141
|
<tr>
|
|
@@ -206,7 +206,7 @@
|
|
|
206
206
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
207
207
|
Code coverage generated by
|
|
208
208
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
209
|
-
at 2025-
|
|
209
|
+
at 2025-10-04T14:30:00.992Z
|
|
210
210
|
</div>
|
|
211
211
|
<script src="prettify.js"></script>
|
|
212
212
|
<script>
|
package/coverage/sorter.js
CHANGED
|
@@ -27,17 +27,31 @@ var addSorting = (function() {
|
|
|
27
27
|
function onFilterInput() {
|
|
28
28
|
const searchValue = document.getElementById('fileSearch').value;
|
|
29
29
|
const rows = document.getElementsByTagName('tbody')[0].children;
|
|
30
|
+
|
|
31
|
+
// Try to create a RegExp from the searchValue. If it fails (invalid regex),
|
|
32
|
+
// it will be treated as a plain text search
|
|
33
|
+
let searchRegex;
|
|
34
|
+
try {
|
|
35
|
+
searchRegex = new RegExp(searchValue, 'i'); // 'i' for case-insensitive
|
|
36
|
+
} catch (error) {
|
|
37
|
+
searchRegex = null;
|
|
38
|
+
}
|
|
39
|
+
|
|
30
40
|
for (let i = 0; i < rows.length; i++) {
|
|
31
41
|
const row = rows[i];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
row.style.display = '';
|
|
42
|
+
let isMatch = false;
|
|
43
|
+
|
|
44
|
+
if (searchRegex) {
|
|
45
|
+
// If a valid regex was created, use it for matching
|
|
46
|
+
isMatch = searchRegex.test(row.textContent);
|
|
38
47
|
} else {
|
|
39
|
-
|
|
48
|
+
// Otherwise, fall back to the original plain text search
|
|
49
|
+
isMatch = row.textContent
|
|
50
|
+
.toLowerCase()
|
|
51
|
+
.includes(searchValue.toLowerCase());
|
|
40
52
|
}
|
|
53
|
+
|
|
54
|
+
row.style.display = isMatch ? '' : 'none';
|
|
41
55
|
}
|
|
42
56
|
}
|
|
43
57
|
|
package/lib/actions/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
3
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { Responses } from 'apn';
|
|
6
6
|
import type { NotificationType } from '../types/notifications.types.js';
|
|
7
|
-
export declare const getApnProvider: () =>
|
|
7
|
+
export declare const getApnProvider: () => any;
|
|
8
8
|
export declare const pushNotification: (deviceTokens: string[], note: NotificationType) => Promise<Responses>;
|
|
9
9
|
export declare const clearBadges: (deviceTokens: string[]) => Promise<Responses>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import { PutObjectCommandInput } from '@aws-sdk/client-s3';
|
|
6
|
+
import type { ArangoDbLimit } from '../types/arangodb.types.js';
|
|
7
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
8
|
+
import type { VideoEdgeType, VideoOptions, VideoType, VideoUrlData } from '../types/videos.types.js';
|
|
9
|
+
export declare const parseVideoOptions: (options?: VideoOptions) => {
|
|
10
|
+
limit: ArangoDbLimit;
|
|
11
|
+
type: string;
|
|
12
|
+
};
|
|
13
|
+
export declare const getVideoOptional: (fields?: string[]) => any;
|
|
14
|
+
export declare const getVideosByUser: (context: ApiContext, userId: string, from?: number, to?: number) => Promise<VideoType[]>;
|
|
15
|
+
export declare const getVideoCountByItem: (context: ApiContext, itemId: string) => Promise<number>;
|
|
16
|
+
export declare const getVideosByItem: (context: ApiContext, itemId: string, options?: VideoOptions) => Promise<VideoType[]>;
|
|
17
|
+
export declare const getVideo: (context: ApiContext, videoId: string) => Promise<VideoType>;
|
|
18
|
+
export declare const getPathUserVideos: (userId: string, videoId: string, videoType: string, dir?: string) => string;
|
|
19
|
+
export declare const getAppVideoUrl: ({ bucket, directory, isThumb, type, typeId, videoId }: VideoUrlData) => string;
|
|
20
|
+
export declare const getVideoUrl: ({ bucket, imageDir, videoDir, videoId, type, typeId, urlType }: any) => Promise<string>;
|
|
21
|
+
export declare const saveVideo: (context: ApiContext, videoId: string, buffer: Buffer, fileType?: string, s3Options?: PutObjectCommandInput) => Promise<VideoType>;
|
|
22
|
+
export declare const addVideo: (context: ApiContext, video: VideoType, s3Options?: PutObjectCommandInput) => Promise<VideoType>;
|
|
23
|
+
export declare const addVideoEdge: (context: ApiContext, videoEdge: VideoEdgeType) => Promise<object>;
|
|
24
|
+
export declare const updateVideo: (context: ApiContext, video: VideoType, s3Options?: PutObjectCommandInput) => Promise<VideoType>;
|
|
25
|
+
export declare const deleteVideo: (context: ApiContext, videoId: string) => Promise<VideoType>;
|
|
@@ -6,7 +6,7 @@ export type RangeType = {
|
|
|
6
6
|
readonly from: number;
|
|
7
7
|
readonly to: number;
|
|
8
8
|
};
|
|
9
|
-
export type ArangoDbCollection = 'apps' | 'conversations' | 'content' | 'files' | 'groups' | 'images' | 'locations' | 'messages' | 'notifications' | 'payments' | 'posts' | 'reactions' | 'subscriptions' | 'tags' | 'users';
|
|
9
|
+
export type ArangoDbCollection = 'apps' | 'conversations' | 'content' | 'files' | 'groups' | 'images' | 'videos' | 'locations' | 'messages' | 'notifications' | 'payments' | 'posts' | 'reactions' | 'subscriptions' | 'tags' | 'users';
|
|
10
10
|
export type ArangoDbPathObject = {
|
|
11
11
|
readonly collection?: ArangoDbCollection;
|
|
12
12
|
readonly itemObj?: Record<string, unknown>;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import type { PutObjectCommandInput } from '@aws-sdk/client-s3';
|
|
6
|
+
import type { ArangoDbCollection, EdgeType } from './arangodb.types.js';
|
|
7
|
+
import type { FileType } from './files.types.js';
|
|
8
|
+
export interface VideoType extends FileType {
|
|
9
|
+
readonly bucket?: string;
|
|
10
|
+
readonly durationMs?: number;
|
|
11
|
+
readonly externalId?: string;
|
|
12
|
+
readonly externalUrl?: string;
|
|
13
|
+
readonly height?: number;
|
|
14
|
+
readonly posterId?: string;
|
|
15
|
+
readonly provider?: 'youtube' | 'vimeo' | 'other';
|
|
16
|
+
readonly s3Options?: PutObjectCommandInput;
|
|
17
|
+
readonly streamType?: 'hls' | 'progressive';
|
|
18
|
+
readonly thumb?: string;
|
|
19
|
+
readonly fileType?: string;
|
|
20
|
+
readonly transcoded?: boolean;
|
|
21
|
+
readonly type?: 'video' | 'external';
|
|
22
|
+
readonly url?: string;
|
|
23
|
+
readonly videoId?: string;
|
|
24
|
+
readonly width?: number;
|
|
25
|
+
}
|
|
26
|
+
export type VideoUrlData = {
|
|
27
|
+
readonly bucket?: string;
|
|
28
|
+
readonly directory?: string;
|
|
29
|
+
readonly isThumb?: boolean;
|
|
30
|
+
readonly type?: ArangoDbCollection;
|
|
31
|
+
readonly typeId?: string;
|
|
32
|
+
readonly urlType?: 'dev' | 'public' | 'signed';
|
|
33
|
+
readonly videoDir?: string;
|
|
34
|
+
readonly videoId?: string;
|
|
35
|
+
readonly userId?: string;
|
|
36
|
+
};
|
|
37
|
+
export type VideoEdgeType = EdgeType & {
|
|
38
|
+
readonly itemId?: string;
|
|
39
|
+
readonly itemType?: ArangoDbCollection;
|
|
40
|
+
readonly videoId?: string;
|
|
41
|
+
};
|
|
42
|
+
export type VideoOptions = {
|
|
43
|
+
readonly from?: number;
|
|
44
|
+
readonly to?: number;
|
|
45
|
+
readonly type?: string;
|
|
46
|
+
};
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
4
|
*/
|
|
5
5
|
import stripe from 'stripe';
|
|
6
|
-
export declare const stripeApiVersion = "2025-
|
|
6
|
+
export declare const stripeApiVersion = "2025-09-30.clover";
|
|
7
7
|
export declare const getStripeClient: () => stripe;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlabs/reaktor",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.5",
|
|
4
4
|
"description": "Reaktor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -39,58 +39,57 @@
|
|
|
39
39
|
"publish:tags": "git push --tags && git push origin HEAD",
|
|
40
40
|
"test:unit": "stage=test lex test",
|
|
41
41
|
"test": "npm run test:unit",
|
|
42
|
-
"update": "lex update --interactive",
|
|
42
|
+
"update": "lex update --interactive --package-manager npm",
|
|
43
43
|
"watch": "lex compile --remove --watch"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@aws-sdk/client-apigatewaymanagementapi": "^3.
|
|
47
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
48
|
-
"@aws-sdk/client-s3": "^3.
|
|
49
|
-
"@aws-sdk/client-ses": "^3.
|
|
50
|
-
"@aws-sdk/client-sns": "^3.
|
|
51
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
46
|
+
"@aws-sdk/client-apigatewaymanagementapi": "^3.901.0",
|
|
47
|
+
"@aws-sdk/client-dynamodb": "^3.902.0",
|
|
48
|
+
"@aws-sdk/client-s3": "^3.901.0",
|
|
49
|
+
"@aws-sdk/client-ses": "^3.901.0",
|
|
50
|
+
"@aws-sdk/client-sns": "^3.901.0",
|
|
51
|
+
"@aws-sdk/s3-request-presigner": "^3.901.0",
|
|
52
52
|
"@nlabs/arkhamjs": "^3.31.7",
|
|
53
53
|
"@nlabs/rip-hunter": "^3.0.2",
|
|
54
54
|
"@nlabs/utils": "^2.8.4",
|
|
55
|
-
"@types/aws-lambda": "^8.10.
|
|
56
|
-
"apn": "^2.
|
|
55
|
+
"@types/aws-lambda": "^8.10.155",
|
|
56
|
+
"apn": "^2.0.0",
|
|
57
57
|
"arangojs": "^10.1.2",
|
|
58
58
|
"aws-sdk": "^2.1692.0",
|
|
59
59
|
"child_process": "^1.0.2",
|
|
60
|
-
"core-js": "^3.45.
|
|
60
|
+
"core-js": "^3.45.1",
|
|
61
61
|
"file-type": "^21.0.0",
|
|
62
62
|
"gm": "^1.25.1",
|
|
63
|
-
"google-libphonenumber": "^3.2.
|
|
64
|
-
"googleapis": "
|
|
63
|
+
"google-libphonenumber": "^3.2.43",
|
|
64
|
+
"googleapis": "161.0.0",
|
|
65
65
|
"graphql": "^16.11.0",
|
|
66
66
|
"graphql-compose": "^9.1.0",
|
|
67
67
|
"graphql-fields": "^2.0.3",
|
|
68
|
-
"i18next": "^25.3
|
|
68
|
+
"i18next": "^25.5.3",
|
|
69
69
|
"jsonwebtoken": "^9.0.2",
|
|
70
|
-
"luxon": "^3.7.
|
|
70
|
+
"luxon": "^3.7.2",
|
|
71
71
|
"mime-types": "^3.0.1",
|
|
72
72
|
"net": "^1.0.2",
|
|
73
|
-
"node-yelp": "^0.0.3",
|
|
74
73
|
"numeral": "^2.0.6",
|
|
75
74
|
"sanitize-html": "^2.17.0",
|
|
76
75
|
"spawn-sync": "^2.0.0",
|
|
77
|
-
"stripe": "^
|
|
76
|
+
"stripe": "^19.1.0",
|
|
78
77
|
"tls": "0.0.1",
|
|
79
78
|
"to": "^0.2.9",
|
|
80
79
|
"typed-promisify": "^0.4.0",
|
|
81
80
|
"universal-analytics": "^0.5.3",
|
|
82
|
-
"zod": "^4.
|
|
81
|
+
"zod": "^4.1.11"
|
|
83
82
|
},
|
|
84
83
|
"devDependencies": {
|
|
85
|
-
"@jest/globals": "^
|
|
86
|
-
"@nlabs/lex": "^1.
|
|
84
|
+
"@jest/globals": "^30.2.0",
|
|
85
|
+
"@nlabs/lex": "^1.50.1",
|
|
87
86
|
"@types/history": "^5.0.0",
|
|
88
87
|
"@types/jest": "^30.0.0",
|
|
89
88
|
"@types/luxon": "^3.7.1",
|
|
90
|
-
"@types/node": "^24.2
|
|
89
|
+
"@types/node": "^24.6.2",
|
|
91
90
|
"@types/stripe": "^8.0.417",
|
|
92
91
|
"@types/twilio": "^3.19.3",
|
|
93
92
|
"graphql-tools": "^9.0.20",
|
|
94
|
-
"typescript": "^5.9.
|
|
93
|
+
"typescript": "^5.9.3"
|
|
95
94
|
}
|
|
96
95
|
}
|
package/lib/actions/apps.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{aql as g}from"arangojs";import{logError as E,logException as S,UserError as I}from"../utils/analyticsUtils.js";import{getDocId as f,getLimit as w,selectReactionCountByType as b,useDb as R}from"../utils/arangodbUtils.js";import{isAdminUser as N}from"../utils/sessionUtils.js";import{createHash as j,parseArangoId as $,parseEmail as _,parseId as U,parsePhone as x,parseString as h}from"@nlabs/utils/parsers/strings";import{ErrorTypes as p}from"../types/error.types.js";const l="apps",O=(e=[])=>e.reduce((t,s)=>s.includes("Count")?b("apps","a",s,t):t,{objects:[],queries:[]}),D=(e={})=>{const{from:t=0,to:s=30}=e,n=w(t,s);return{...e,limit:n}},v=async(e,t)=>{const s="addUser",{databaseName:n}=e,{email:m="",name:a="",phone:i=""}=t,o=h(a),r=_(m),c=x(i);if(!o)throw S({action:s,category:l,params:{name:a},value:p.INVALID_ARGUMENTS},e);const u=[`a.name == "${o}"`];r&&u.push(`a.email == "${r}"`);const A=`FOR u IN users
|
|
2
|
-
FILTER ${u.join(" || ")}
|
|
3
|
-
RETURN u`;try{if((await R(n).query(A).then(q=>q.all())).length)throw S({action:s,category:l,params:{name:a},value:p.EXISTING_ITEM},e)}catch(y){throw E({action:s,category:l,label:p.DATABASE_ERROR,params:{name:a}},y,e)}const T={_key:j(a),active:!0,added:Date.now(),email:r,modified:Date.now(),name:o,phone:c},d=g`INSERT ${T} IN apps RETURN NEW`;return await R(n).query(d).then(y=>y.next()||{}).catch(y=>E({action:s,category:l,label:p.DATABASE_ERROR,params:{name:a}},y,e))},F=async(e,t)=>{const s="updateApp",{databaseName:n}=e,{_key:m,_id:a,id:i,appId:o,...r}=t,c=f("apps",t),u=g`LET a = DOCUMENT(${c})
|
|
4
|
-
UPDATE a WITH ${r} IN apps
|
|
5
|
-
RETURN NEW`;return await R(n).query(u).then(A=>A.next()).catch(A=>E({action:s,category:l,label:p.DATABASE_ERROR,params:{app:t}},A,e))},M=async(e,t)=>{const s="deleteApp",{databaseName:n,session:m={}}=e,a=N(m),i=f("apps",t);if(!a)return Promise.reject(new I(p.INVALID_SESSION));const o=g`FOR a IN apps
|
|
6
|
-
FILTER a._id == \"${i}\"
|
|
7
|
-
LIMIT 1
|
|
8
|
-
REMOVE a IN apps
|
|
9
|
-
RETURN OLD`;return R(n).query(o).then(r=>r.next()).catch(r=>{throw E({action:s,category:l,label:p.DATABASE_ERROR,params:t},r,e)})},V=(e,t)=>{const s="deactivateApp",{databaseName:n,session:m={}}=e,a=N(m),i=f("apps",t);if(!a)return Promise.reject(new I(p.INVALID_SESSION));const r=g`UPDATE ${i} WITH ${{active:!1}} IN apps LIMIT 1 RETURN NEW`;return R(n).query(r).then(c=>c.next()).catch(c=>{throw E({action:s,category:l,label:p.DATABASE_ERROR,params:t},c,e)})},W=(e,t)=>{const s="getApp",{databaseName:n,fields:m,session:a={}}=e,{id:i,key:o,name:r}=D(t),{objects:c,queries:u}=O(m),A=["a.active == true"];if(!N(a))return Promise.reject(new I(p.INVALID_SESSION));i&&A.push(`a._id == "${$(i)}"`),o&&A.push(`a._key == "apps/${U(o)}"`),r&&A.push(`CONTAINS(a.name, "${h(r)}")`);const d=`FOR a IN apps
|
|
10
|
-
FILTER ${A.join(" && ")}
|
|
11
|
-
${u.join(`
|
|
12
|
-
`)}
|
|
13
|
-
RETURN MERGE(a, {${c.join(", ")}})`;return R(n).query(d).then(y=>y.next()).catch(y=>{throw E({action:s,category:l,label:p.DATABASE_ERROR,params:t},y,e)})},G=async(e,t)=>{const s="getApps",{databaseName:n,fields:m,session:a={}}=e,{limit:i,name:o}=D(t),{objects:r,queries:c}=O(m),u=["a.active == true"];if(!N(a))return Promise.reject(new I(p.INVALID_SESSION));o&&u.push(`CONTAINS(a.name, "${h(o)}")`);const T=`FOR a IN apps
|
|
14
|
-
FILTER ${u.join(" && ")}
|
|
15
|
-
${c.join(`
|
|
16
|
-
`)}
|
|
17
|
-
${i.aql}
|
|
18
|
-
SORT a.name
|
|
19
|
-
RETURN MERGE(a, {${r.join(", ")}})`;return R(n).query(T).then(d=>d.all()).catch(d=>{throw E({action:s,category:l,label:p.DATABASE_ERROR,params:t},d,e)})};export{v as addApp,V as deactivateApp,M as deleteApp,W as getApp,O as getAppOptional,G as getApps,D as parseAppOptions,F as updateApp};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQgdHlwZSB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5cbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbiwgVXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5pbXBvcnQge2dldERvY0lkLCBnZXRMaW1pdCwgc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSwgdXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuaW1wb3J0IHtpc0FkbWluVXNlcn0gZnJvbSAnLi4vdXRpbHMvc2Vzc2lvblV0aWxzLmpzJztcblxuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUFyYW5nb0lkLCBwYXJzZUVtYWlsLCBwYXJzZUlkLCBwYXJzZVBob25lLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQgdHlwZSB7QXBwVHlwZX0gZnJvbSAnLi4vdHlwZXMvYXBwcy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1Nlc3Npb259IGZyb20gJy4uL3V0aWxzL3Nlc3Npb25VdGlscy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdhcHBzJztcblxuZXhwb3J0IGludGVyZmFjZSBBcHBPcHRpb25zIHtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGtleT86IHN0cmluZztcbiAgcmVhZG9ubHkgZnJvbT86IG51bWJlcjtcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdG8/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBPcHRpb25hbCA9IChmaWVsZHM6IHN0cmluZ1tdID0gW10pID0+XG4gIGZpZWxkcy5yZWR1Y2UoKHNlbGVjdHMsIGZpZWxkOiBzdHJpbmcpID0+IHtcbiAgICBpZihmaWVsZC5pbmNsdWRlcygnQ291bnQnKSkge1xuICAgICAgcmV0dXJuIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUoJ2FwcHMnLCAnYScsIGZpZWxkLCBzZWxlY3RzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2VsZWN0cztcbiAgfSwge29iamVjdHM6IFtdLCBxdWVyaWVzOiBbXX0pO1xuXG5leHBvcnQgY29uc3QgcGFyc2VBcHBPcHRpb25zID0gKG9wdGlvbnM6IEFwcE9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgbGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5vcHRpb25zLFxuICAgIGxpbWl0XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZFVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtlbWFpbCA9ICcnLCBuYW1lID0gJycsIHBob25lID0gJyd9ID0gYXBwO1xuICBjb25zdCBmb3JtYXROYW1lID0gcGFyc2VTdHJpbmcobmFtZSk7XG4gIGNvbnN0IGZvcm1hdEVtYWlsID0gcGFyc2VFbWFpbChlbWFpbCk7XG4gIGNvbnN0IGZvcm1hdFBob25lID0gcGFyc2VQaG9uZShwaG9uZSk7XG5cbiAgaWYoIWZvcm1hdE5hbWUpIHtcbiAgICB0aHJvdyBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLklOVkFMSURfQVJHVU1FTlRTXG4gICAgfSwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtgYS5uYW1lID09IFwiJHtmb3JtYXROYW1lfVwiYF07XG5cbiAgaWYoZm9ybWF0RW1haWwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYGEuZW1haWwgPT0gXCIke2Zvcm1hdEVtYWlsfVwiYCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyB8fCAnKX1cbiAgICBSRVRVUk4gdWA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBleGlzdGluZ0FwcHMgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IGxvZ0V4Y2VwdGlvbih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHBhcmFtczoge25hbWV9LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5FWElTVElOR19JVEVNXG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgcGFyYW1zOiB7bmFtZX1cbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gIH1cblxuICBjb25zdCBpbnNlcnQ6IEFwcFR5cGUgPSB7XG4gICAgX2tleTogY3JlYXRlSGFzaChuYW1lKSxcbiAgICBhY3RpdmU6IHRydWUsXG4gICAgYWRkZWQ6IERhdGUubm93KCksXG4gICAgZW1haWw6IGZvcm1hdEVtYWlsLFxuICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpLFxuICAgIG5hbWU6IGZvcm1hdE5hbWUsXG4gICAgcGhvbmU6IGZvcm1hdFBob25lXG4gIH07XG5cbiAgY29uc3QgaW5zZXJ0UXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gYXBwcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIHx8IHt9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtfa2V5LCBfaWQsIGlkLCBhcHBJZCwgLi4udXBkYXRlZH0gPSBhcHA7XG4gIGNvbnN0IGFwcERvY0lkID0gZ2V0RG9jSWQoJ2FwcHMnLCBhcHApO1xuICBjb25zdCBhcHBRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGEgPSBET0NVTUVOVCgke2FwcERvY0lkfSlcbiAgICBVUERBVEUgYSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwc1xuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFwcFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT5cbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczoge2FwcH1cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uID0ge319ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24gYXMgU2Vzc2lvbik7XG4gIGNvbnN0IGFwcERvY0lkID0gZ2V0RG9jSWQoJ2FwcHMnLCBhcHApO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgYSBJTiBhcHBzXG4gICAgRklMVEVSIGEuX2lkID09IFxcXCIke2FwcERvY0lkfVxcXCJcbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGEgSU4gYXBwc1xuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT57XG4gICAgICB0aHJvdyBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SLFxuICAgICAgICBwYXJhbXM6IGFwcCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlYWN0aXZhdGVBcHAgPSAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWFjdGl2YXRlQXBwJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczogYXBwIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIGZpZWxkcywgc2Vzc2lvbiA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIGlmKGlkKSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5faWQgPT0gXCIke3BhcnNlQXJhbmdvSWQoaWQpfVwiYCk7XG4gIH1cblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBhLl9rZXkgPT0gXCJhcHBzLyR7cGFyc2VJZChrZXkpfVwiYCk7XG4gIH1cblxuICBpZihuYW1lKSB7XG4gICAgZmlsdGVyQnkucHVzaChgQ09OVEFJTlMoYS5uYW1lLCBcIiR7cGFyc2VTdHJpbmcobmFtZSl9XCIpYCk7XG4gIH1cblxuICAvLyBHZXQgZGF0YSBmcm9tIGRhdGFiYXNlXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSBhcyB1bmtub3duIGFzIEFwcFR5cGUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczogb3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFwcHMgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgb3B0aW9ucz86IEFwcE9wdGlvbnMpOiBQcm9taXNlPEFwcFR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRBcHBzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzLCBzZXNzaW9uID0ge319ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uIGFzIFNlc3Npb24pO1xuXG4gIGlmKCFpc0FkbWluKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBVc2VyRXJyb3IoRXJyb3JUeXBlcy5JTlZBTElEX1NFU1NJT04pKTtcbiAgfVxuXG4gIGlmKG5hbWUpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBDT05UQUlOUyhhLm5hbWUsIFwiJHtwYXJzZVN0cmluZyhuYW1lKX1cIilgKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgU09SVCBhLm5hbWVcbiAgICBSRVRVUk4gTUVSR0UoYSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBBcHBUeXBlW10pXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczogb3B0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICAgIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsT0FBQUEsTUFBVSxXQUdsQixPQUFRLFlBQUFDLEVBQVUsZ0JBQUFDLEVBQWMsYUFBQUMsTUFBZ0IsNkJBQ2hELE9BQVEsWUFBQUMsRUFBVSxZQUFBQyxFQUFVLDZCQUFBQyxFQUEyQixTQUFBQyxNQUFZLDRCQUNuRSxPQUFRLGVBQUFDLE1BQWtCLDJCQUUxQixPQUFRLGNBQUFDLEVBQVksaUJBQUFDLEVBQWUsY0FBQUMsRUFBWSxXQUFBQyxFQUFTLGNBQUFDLEVBQVksZUFBQUMsTUFBa0IsK0JBR3RGLE9BQVEsY0FBQUMsTUFBaUIsMEJBSXpCLE1BQU1DLEVBQXdCLE9BVWpCQyxFQUFpQixDQUFDQyxFQUFtQixDQUFDLElBQ2pEQSxFQUFPLE9BQU8sQ0FBQ0MsRUFBU0MsSUFDbkJBLEVBQU0sU0FBUyxPQUFPLEVBQ2hCZCxFQUEwQixPQUFRLElBQUtjLEVBQU9ELENBQU8sRUFHdkRBLEVBQ04sQ0FBQyxRQUFTLENBQUMsRUFBRyxRQUFTLENBQUMsQ0FBQyxDQUFDLEVBRWxCRSxFQUFrQixDQUFDQyxFQUFzQixDQUFDLElBQU0sQ0FDM0QsS0FBTSxDQUNKLEtBQUFDLEVBQU8sRUFDUCxHQUFBQyxFQUFLLEVBQ1AsRUFBSUYsRUFDRUcsRUFBUXBCLEVBQVNrQixFQUFNQyxDQUFFLEVBRS9CLE1BQU8sQ0FDTCxHQUFHRixFQUNILE1BQUFHLENBQ0YsQ0FDRixFQUVhQyxFQUFTLE1BQU9DLEVBQXFCQyxJQUFvQyxDQUNwRixNQUFNQyxFQUFTLFVBQ1QsQ0FBQyxhQUFBQyxDQUFZLEVBQUlILEVBQ2pC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UUFBUSxPQUFPLElBQUlqRCxFQUFVWSxFQUFXLGVBQWUsQ0FBQyxFQUc5RGlCLEdBQ0Q0QixFQUFTLEtBQUsscUJBQXFCOUMsRUFBWWtCLENBQUksQ0FBQyxJQUFJLEVBRzFELE1BQU1zQixFQUFtQjtBQUFBLGFBQ2RNLEVBQVMsS0FBSyxNQUFNLENBQUM7QUFBQSxNQUM1QkQsRUFBYyxLQUFLO0FBQUEsQ0FBSSxDQUFDO0FBQUEsTUFDeEJsQyxFQUFNLEdBQUc7QUFBQTtBQUFBLHVCQUVRaUMsRUFBYyxLQUFLLElBQUksQ0FBQyxLQUU3QyxPQUFPbkQsRUFBTXVCLENBQVksRUFBRSxNQUFNd0IsQ0FBUSxFQUN0QyxLQUFNZixHQUFXQSxFQUFPLElBQUksQ0FBeUIsRUFDckQsTUFBT0MsR0FBaUIsQ0FDdkIsTUFBTXZDLEVBQVMsQ0FDYixPQUFBNEIsRUFDQSxTQUFVYixFQUNWLE1BQU9ELEVBQVcsZUFDbEIsT0FBUU8sQ0FDVixFQUFHa0IsRUFBT2IsQ0FBTyxDQUNuQixDQUFDLENBQ0wiLAogICJuYW1lcyI6IFsiYXFsIiwgImxvZ0Vycm9yIiwgImxvZ0V4Y2VwdGlvbiIsICJVc2VyRXJyb3IiLCAiZ2V0RG9jSWQiLCAiZ2V0TGltaXQiLCAic2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSIsICJ1c2VEYiIsICJpc0FkbWluVXNlciIsICJjcmVhdGVIYXNoIiwgInBhcnNlQXJhbmdvSWQiLCAicGFyc2VFbWFpbCIsICJwYXJzZUlkIiwgInBhcnNlUGhvbmUiLCAicGFyc2VTdHJpbmciLCAiRXJyb3JUeXBlcyIsICJldmVudENhdGVnb3J5IiwgImdldEFwcE9wdGlvbmFsIiwgImZpZWxkcyIsICJzZWxlY3RzIiwgImZpZWxkIiwgInBhcnNlQXBwT3B0aW9ucyIsICJvcHRpb25zIiwgImZyb20iLCAidG8iLCAibGltaXQiLCAiYWRkQXBwIiwgImNvbnRleHQiLCAiYXBwIiwgImFjdGlvbiIsICJkYXRhYmFzZU5hbWUiLCAiZW1haWwiLCAibmFtZSIsICJwaG9uZSIsICJmb3JtYXROYW1lIiwgImZvcm1hdEVtYWlsIiwgImZvcm1hdFBob25lIiwgImZpbHRlcnMiLCAiY2hlY2tRdWVyeSIsICJjdXJzb3IiLCAiZXJyb3IiLCAiaW5zZXJ0IiwgImluc2VydFF1ZXJ5IiwgInVwZGF0ZUFwcCIsICJfa2V5IiwgIl9pZCIsICJpZCIsICJhcHBJZCIsICJ1cGRhdGVkIiwgImFwcERvY0lkIiwgImFwcFF1ZXJ5IiwgImRlbGV0ZUFwcCIsICJzZXNzaW9uIiwgImlzQWRtaW4iLCAiYXFsUXVlcnkiLCAiZGVhY3RpdmF0ZUFwcCIsICJnZXRBcHAiLCAia2V5IiwgInNlbGVjdE9iamVjdHMiLCAic2VsZWN0UXVlcmllcyIsICJmaWx0ZXJCeSIsICJnZXRBcHBzIl0KfQo=
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as e,parseString as I}from"@nlabs/utils/parsers/strings";import{aql as y}from"arangojs";import{ErrorTypes as l}from"../types/error.types.js";import{logError as f}from"../utils/analyticsUtils.js";import{useDb as d}from"../utils/arangodbUtils.js";const h="connections",q=(t,s,i,n,c,r)=>{const a="addConnection",{databaseName:m}=t,g=e(`${s}/${i}`),p=e(`${n}/${c}`),o={_from:g,_to:p,isDirect:!0,type:n,value:r?I(r,32):void 0},u=y`INSERT ${o} IN hasConnection`;return d(m).query(u).then(()=>!0).catch(A=>(f({action:a,category:h,label:l.DATABASE_ERROR},A,t),!1))},D=(t,s,i,n,c)=>{const r="getConnection",{databaseName:a}=t,m=e(`${s}/${i}`),g=e(`${n}/${c}`),p=y`FOR hc in hasConnection
|
|
2
|
-
FILTER hc._from == ${m} && hc._to == ${g}
|
|
3
|
-
LIMIT 1`;return d(a).query(p).then(o=>o.next()).catch(o=>f({action:r,category:h,label:l.DATABASE_ERROR},o,t))},b=(t,s,i,n,c)=>{const r="deleteReactionByItem",{databaseName:a}=t,m=e(`${s}/${i}`),g=e(`${n}/${c}`),p=y`FOR hc in hasConnection
|
|
4
|
-
FILTER hc._from == ${m} && hc._to == ${g}
|
|
5
|
-
LIMIT 1
|
|
6
|
-
REMOVE hc IN hasConnection`;return d(a).query(p).then(()=>!0).catch(o=>(f({action:r,category:h,label:l.DATABASE_ERROR},o,t),!1))};export{q as addConnection,b as deleteConnection,D as getConnection};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29ubmVjdGlvbnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIlxuaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29ubmVjdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL2Nvbm5lY3Rpb25zLnR5cGVzLmpzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2Nvbm5lY3Rpb25zJztcblxuZXhwb3J0IGNvbnN0IGFkZENvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nLFxuICB2YWx1ZT86IHN0cmluZ1xuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZENvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG5cbiAgY29uc3QgZm9ybWF0RnJvbURvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke2Zyb21UeXBlfS8ke2Zyb21JZH1gKTtcbiAgY29uc3QgZm9ybWF0VG9Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHt0b1R5cGV9LyR7dG9JZH1gKTtcbiAgY29uc3QgaW5zZXJ0ID0ge1xuICAgIF9mcm9tOiBmb3JtYXRGcm9tRG9jSWQsXG4gICAgX3RvOiBmb3JtYXRUb0RvY0lkLFxuICAgIGlzRGlyZWN0OiB0cnVlLFxuICAgIHR5cGU6IHRvVHlwZSxcbiAgICB2YWx1ZTogISF2YWx1ZSA/IHBhcnNlU3RyaW5nKHZhbHVlLCAzMikgOiB1bmRlZmluZWRcbiAgfTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgZnJvbVR5cGU6IHN0cmluZyxcbiAgZnJvbUlkOiBzdHJpbmcsXG4gIHRvVHlwZTogc3RyaW5nLFxuICB0b0lkOiBzdHJpbmdcbik6IFByb21pc2U8Q29ubmVjdGlvblR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29ubmVjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcblxuICBjb25zdCBmb3JtYXRGcm9tRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7ZnJvbVR5cGV9LyR7ZnJvbUlkfWApO1xuICBjb25zdCBmb3JtYXRUb0RvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGAke3RvVHlwZX0vJHt0b0lkfWApO1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGhjIGluIGhhc0Nvbm5lY3Rpb25cbiAgICBGSUxURVIgaGMuX2Zyb20gPT0gJHtmb3JtYXRGcm9tRG9jSWR9ICYmIGhjLl90byA9PSAke2Zvcm1hdFRvRG9jSWR9XG4gICAgTElNSVQgMWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNvbm5lY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGZyb21UeXBlOiBzdHJpbmcsXG4gIGZyb21JZDogc3RyaW5nLFxuICB0b1R5cGU6IHN0cmluZyxcbiAgdG9JZDogc3RyaW5nXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZGVsZXRlUmVhY3Rpb25CeUl0ZW0nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEZyb21Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChgJHtmcm9tVHlwZX0vJHtmcm9tSWR9YCk7XG4gIGNvbnN0IGZvcm1hdFRvRG9jSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoYCR7dG9UeXBlfS8ke3RvSWR9YCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaGMgaW4gaGFzQ29ubmVjdGlvblxuICAgIEZJTFRFUiBoYy5fZnJvbSA9PSAke2Zvcm1hdEZyb21Eb2NJZH0gJiYgaGMuX3RvID09ICR7Zm9ybWF0VG9Eb2NJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIGhjIElOIGhhc0Nvbm5lY3Rpb25gO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQ0EsT0FBUSxpQkFBQUEsRUFBZSxlQUFBQyxNQUFrQiwrQkFDekMsT0FBUSxPQUFBQyxNQUFVLFdBRWxCLE9BQVEsY0FBQUMsTUFBaUIsMEJBQ3pCLE9BQVEsWUFBQUMsTUFBZSw2QkFDdkIsT0FBUSxTQUFBQyxNQUFZLDRCQU1wQixNQUFNQyxFQUF3QixjQUVqQkMsRUFBZ0IsQ0FDM0JDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLElBQ3FCLENBQ3JCLE1BQU1DLEVBQWlCLGdCQUNqQixDQUFDLGFBQUFDLENBQVksRUFBSVAsRUFFakJRLEVBQTBCaEIsRUFBYyxHQUFHUyxDQUFRLElBQUlDLENBQU0sRUFBRSxFQUMvRE8sRUFBd0JqQixFQUFjLEdBQUdXLENBQU0sSUFBSUMsQ0FBSSxFQUFFLEVBQ3pETSxFQUFTLENBQ2IsTUFBT0YsRUFDUCxJQUFLQyxFQUNMLFNBQVUsR0FDVixLQUFNTixFQUNOLE1BQVNFLEVBQVFaLEVBQVlZLEVBQU8sRUFBRSxFQUFJLE1BQzVDLEVBQ01NLEVBQW1CakIsV0FBYWdCLENBQU0sb0JBRTVDLE9BQU9iLEVBQU1VLENBQVksRUFBRSxNQUFNSSxDQUFNLEVBQ3BDLEtBQUssSUFBTSxFQUFJLEVBQ2YsTUFBT0MsSUFDTmhCLEVBQVMsQ0FDUCxPQUFBVSxFQUNBLFNBQVVSLEVBQ1YsTUFBT0gsRUFBVyxjQUNwQixFQUFHaUIsRUFBT1osQ0FBTyxFQUNWLEdBQ1IsQ0FDTCxFQUVhYSxFQUFnQixDQUMzQmIsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsSUFDNEIsQ0FDNUIsTUFBTUUsRUFBaUIsZ0JBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJUCxFQUVqQlEsRUFBMEJoQixFQUFjLEdBQUdTLENBQVEsSUFBSUMsQ0FBTSxFQUFFLEVBQy9ETyxFQUF3QmpCLEVBQWMsR0FBR1csQ0FBTSxJQUFJQyxDQUFJLEVBQUUsRUFFekRPLEVBQW1CakI7QUFBQSx5QkFDRmMsQ0FBZSxpQkFBaUJDLENBQWE7QUFBQSxhQUdwRSxPQUFPWixFQUFNVSxDQUFZLEVBQUUsTUFBTUksQ0FBTSxFQUNwQyxLQUFNRyxHQUFXQSxFQUFPLEtBQUssQ0FBQyxFQUM5QixNQUFPRixHQUFpQmhCLEVBQVMsQ0FDaEMsT0FBQVUsRUFDQSxTQUFVUixFQUNWLE1BQU9ILEVBQVcsY0FDcEIsRUFBR2lCLEVBQU9aLENBQU8sQ0FBQyxDQUN0QixFQUVhZSxFQUFtQixDQUM5QmYsRUFDQUMsRUFDQUMsRUFDQUMsRUFDQUMsSUFDcUIsQ0FDckIsTUFBTUUsRUFBaUIsdUJBQ2pCLENBQUMsYUFBQUMsQ0FBWSxFQUFJUCxFQUNqQlEsRUFBMEJoQixFQUFjLEdBQUdTLENBQVEsSUFBSUMsQ0FBTSxFQUFFLEVBQy9ETyxFQUF3QmpCLEVBQWMsR0FBR1csQ0FBTSxJQUFJQyxDQUFJLEVBQUUsRUFFekRPLEVBQW1CakI7QUFBQSx5QkFDRmMsQ0FBZSxpQkFBaUJDLENBQWE7QUFBQTtBQUFBLGdDQUlwRSxPQUFPWixFQUFNVSxDQUFZLEVBQUUsTUFBTUksQ0FBTSxFQUNwQyxLQUFLLElBQU0sRUFBSSxFQUNmLE1BQU9DLElBQ05oQixFQUFTLENBQ1AsT0FBQVUsRUFDQSxTQUFVUixFQUNWLE1BQU9ILEVBQVcsY0FDcEIsRUFBR2lCLEVBQU9aLENBQU8sRUFDVixHQUNSLENBQ0wiLAogICJuYW1lcyI6IFsicGFyc2VBcmFuZ29JZCIsICJwYXJzZVN0cmluZyIsICJhcWwiLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJ1c2VEYiIsICJldmVudENhdGVnb3J5IiwgImFkZENvbm5lY3Rpb24iLCAiY29udGV4dCIsICJmcm9tVHlwZSIsICJmcm9tSWQiLCAidG9UeXBlIiwgInRvSWQiLCAidmFsdWUiLCAiYWN0aW9uIiwgImRhdGFiYXNlTmFtZSIsICJmb3JtYXRGcm9tRG9jSWQiLCAiZm9ybWF0VG9Eb2NJZCIsICJpbnNlcnQiLCAiYXFsUXJ5IiwgImVycm9yIiwgImdldENvbm5lY3Rpb24iLCAiY3Vyc29yIiwgImRlbGV0ZUNvbm5lY3Rpb24iXQp9Cg==
|
package/lib/actions/content.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import{createHash as $,parseString as u}from"@nlabs/utils/parsers/strings";import{aql as L}from"arangojs";import{parseContentFromDb as h,parseContentInput as q}from"../adapters/contentAdapter.js";import{Config as b}from"../config.js";import{ErrorTypes as A}from"../types/error.types.js";import{logError as T}from"../utils/analyticsUtils.js";import{useDb as R}from"../utils/arangodbUtils.js";import{translateText as x}from"../utils/googleTranslate.js";import{extractLanguage as m,isRegionalLocale as N}from"../utils/localeUtils.js";const v="content",D=(e={})=>{const{category:t,isActive:a=!0,key:o,locale:s}=e;return{category:t?u(t,100):void 0,isActive:a,key:o?u(o,200):void 0,locale:s}},E=async(e,t,a="en")=>{const o="getContent",{databaseName:s}=e,i=u(t,200),r=u(a,5),p=L`
|
|
2
|
-
FOR c IN content
|
|
3
|
-
FILTER c.key == ${i} && c.locale == ${r} && c.isActive == true
|
|
4
|
-
LIMIT 1
|
|
5
|
-
RETURN c
|
|
6
|
-
`;try{const n=await R(s).query(p).then(c=>c.next()).catch(c=>T({action:o,category:v,label:A.DATABASE_ERROR},c,e));return n?h(n):null}catch(n){throw n}},H=async(e,t,a,o="en")=>{const s=b.get("app.locale")||"en";try{let i=await E(e,t,o);if(i?.content)return i.content;if(N(o)){const r=m(o);if(i=await E(e,t,r),i?.content)return C(e,{key:t,content:i.content,locale:o,description:`Extracted from ${r}`}).catch(p=>{}),i.content}if(o===s)return a&&C(e,{key:t,content:a,locale:o,description:"Auto-generated from fallback"}).catch(r=>{}),a||t;try{let r=await E(e,t,s),p;if(r?.content)p=r.content;else{if(N(s)){const c=m(s);r=await E(e,t,c)}if(r?.content)p=r.content;else if(a)p=a,C(e,{key:t,content:a,locale:s,description:"Auto-generated from fallback"}).catch(c=>{});else return t}const n=await x(p,m(o),m(s));return C(e,{key:t,content:n,locale:o,description:`Auto-translated from ${s}`}).catch(c=>{}),n}catch{return a||t}}catch{return a||t}},C=async(e,t)=>{const a="addContent",{databaseName:o,session:s}=e,i=Date.now(),r=q(t),{key:p,locale:n="en",content:c,description:y,category:l,isActive:g=!0}=r,d=$(`content-${p}-${n}`),f={_id:`content/${d}`,_key:d,added:i,key:u(p,200),locale:n,content:u(c,1e4),description:y?u(y,500):void 0,category:l?u(l,100):void 0,isActive:g,modified:i,userId:s?.userId},O=L`INSERT ${f} IN content RETURN NEW`;try{const w=await R(o).query(O).then(I=>I.next()).catch(I=>T({action:a,category:v,label:A.DATABASE_ERROR},I,e));return h(w)}catch(w){throw w}},K=async(e,t)=>{const a="updateContent",{databaseName:o}=e,s=Date.now(),i=q(t),{contentId:r,content:p,description:n,category:c,isActive:y}=i;if(!r)throw new Error("Content ID is required for update");const l={content:u(p,1e4),modified:s};n!==void 0&&(l.description=n?u(n,500):void 0),c!==void 0&&(l.category=c?u(c,100):void 0),y!==void 0&&(l.isActive=y);const g=L`
|
|
7
|
-
FOR c IN content
|
|
8
|
-
FILTER c._key == ${r}
|
|
9
|
-
UPDATE c WITH ${l} IN content
|
|
10
|
-
RETURN NEW
|
|
11
|
-
`;try{const d=await R(o).query(g).then(f=>f.next()).catch(f=>T({action:a,category:v,label:A.DATABASE_ERROR},f,e));if(!d)throw new Error("Content not found or access denied");return h(d)}catch(d){throw d}},M=async(e,t={})=>{const a="searchContent",{databaseName:o}=e,{category:s,isActive:i,key:r,locale:p}=D(t),n=[],c={};r&&(n.push("c.key == @key"),c.key=r),p&&(n.push("c.locale == @locale"),c.locale=p),s&&(n.push("c.category == @category"),c.category=s),i!==void 0&&(n.push("c.isActive == @isActive"),c.isActive=i);const l=`
|
|
12
|
-
FOR c IN content
|
|
13
|
-
${n.length>0?`FILTER ${n.join(" && ")}`:""}
|
|
14
|
-
SORT c.key, c.locale
|
|
15
|
-
RETURN c
|
|
16
|
-
`;try{return(await R(o).query(l,c).then(d=>d.all()).catch(d=>T({action:a,category:v,label:A.DATABASE_ERROR},d,e))).map(d=>h(d))}catch(g){throw g}};export{C as addContent,E as getContent,H as getContentWithFallback,D as parseContentOptions,M as searchContent,K as updateContent};
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvY29udGVudC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB0eXBlIHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtwYXJzZUNvbnRlbnRGcm9tRGIsIHBhcnNlQ29udGVudElucHV0fSBmcm9tICcuLi9hZGFwdGVycy9jb250ZW50QWRhcHRlci5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge3RyYW5zbGF0ZVRleHR9IGZyb20gJy4uL3V0aWxzL2dvb2dsZVRyYW5zbGF0ZS5qcyc7XG5pbXBvcnQge2V4dHJhY3RMYW5ndWFnZSwgaXNSZWdpb25hbExvY2FsZX0gZnJvbSAnLi4vdXRpbHMvbG9jYWxlVXRpbHMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudElucHV0VHlwZSwgQ29udGVudE9wdGlvbnMsIENvbnRlbnRUeXBlLCBMb2NhbGV9IGZyb20gJy4uL3R5cGVzL2NvbnRlbnQudHlwZXMuanMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAnY29udGVudCc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRPcHRpb25zID0gKG9wdGlvbnM6IENvbnRlbnRPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGNhdGVnb3J5LFxuICAgIGlzQWN0aXZlID0gdHJ1ZSxcbiAgICBrZXksXG4gICAgbG9jYWxlXG4gIH0gPSBvcHRpb25zO1xuXG4gIHJldHVybiB7XG4gICAgY2F0ZWdvcnk6IGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQsXG4gICAgaXNBY3RpdmUsXG4gICAga2V5OiBrZXkgPyBwYXJzZVN0cmluZyhrZXksIDIwMCkgOiB1bmRlZmluZWQsXG4gICAgbG9jYWxlXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAga2V5OiBzdHJpbmcsXG4gIGxvY2FsZTogc3RyaW5nID0gJ2VuJ1xuKTogUHJvbWlzZTxDb250ZW50VHlwZSB8IG51bGw+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0Q29udGVudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0S2V5OiBzdHJpbmcgPSBwYXJzZVN0cmluZyhrZXksIDIwMCk7XG4gIGNvbnN0IGZvcm1hdExvY2FsZTogc3RyaW5nID0gcGFyc2VTdHJpbmcobG9jYWxlLCA1KTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5rZXkgPT0gJHtmb3JtYXRLZXl9ICYmIGMubG9jYWxlID09ICR7Zm9ybWF0TG9jYWxlfSAmJiBjLmlzQWN0aXZlID09IHRydWVcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIGNcbiAgYDtcblxuICB0cnkge1xuICAgIGNvbnN0IGNvbnRlbnQ6IENvbnRlbnRUeXBlIHwgbnVsbCA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gY29udGVudCA/IHBhcnNlQ29udGVudEZyb21EYihjb250ZW50KSA6IG51bGw7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRlbnRXaXRoRmFsbGJhY2sgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGtleTogc3RyaW5nLFxuICBmYWxsYmFja0NvbnRlbnQ6IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBhcHBMb2NhbGUgPSAoQ29uZmlnLmdldCgnYXBwLmxvY2FsZScpIHx8ICdlbicpIGFzIExvY2FsZTtcblxuICB0cnkge1xuICAgIGxldCBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGxvY2FsZSk7XG5cbiAgICBpZihjb250ZW50Py5jb250ZW50KSB7XG4gICAgICByZXR1cm4gY29udGVudC5jb250ZW50O1xuICAgIH1cblxuICAgIGlmKGlzUmVnaW9uYWxMb2NhbGUobG9jYWxlKSkge1xuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKTtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50KGNvbnRleHQsIGtleSwgbGFuZ3VhZ2UgYXMgTG9jYWxlKTtcblxuICAgICAgaWYoY29udGVudD8uY29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogY29udGVudC5jb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYEV4dHJhY3RlZCBmcm9tICR7bGFuZ3VhZ2V9YFxuICAgICAgICB9KS5jYXRjaCgoc2F2ZUVycm9yKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGV4dHJhY3RlZCBjb250ZW50OicsIHNhdmVFcnJvcik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBjb250ZW50LmNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYobG9jYWxlID09PSBhcHBMb2NhbGUpIHtcbiAgICAgIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgY29udGVudDogZmFsbGJhY2tDb250ZW50LFxuICAgICAgICAgIGxvY2FsZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0F1dG8tZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2snXG4gICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgZmFsbGJhY2sgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbGxiYWNrQ29udGVudCB8fCBrZXk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBsZXQgc291cmNlQ29udGVudCA9IGF3YWl0IGdldENvbnRlbnQoY29udGV4dCwga2V5LCBhcHBMb2NhbGUpO1xuICAgICAgbGV0IHNvdXJjZVRleHQ6IHN0cmluZztcblxuICAgICAgaWYoc291cmNlQ29udGVudD8uY29udGVudCkge1xuICAgICAgICBzb3VyY2VUZXh0ID0gc291cmNlQ29udGVudC5jb250ZW50O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYoaXNSZWdpb25hbExvY2FsZShhcHBMb2NhbGUpKSB7XG4gICAgICAgICAgY29uc3QgYXBwTGFuZ3VhZ2UgPSBleHRyYWN0TGFuZ3VhZ2UoYXBwTG9jYWxlKTtcbiAgICAgICAgICBzb3VyY2VDb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudChjb250ZXh0LCBrZXksIGFwcExhbmd1YWdlIGFzIExvY2FsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZihzb3VyY2VDb250ZW50Py5jb250ZW50KSB7XG4gICAgICAgICAgc291cmNlVGV4dCA9IHNvdXJjZUNvbnRlbnQuY29udGVudDtcbiAgICAgICAgfSBlbHNlIGlmKGZhbGxiYWNrQ29udGVudCkge1xuICAgICAgICAgIHNvdXJjZVRleHQgPSBmYWxsYmFja0NvbnRlbnQ7XG5cbiAgICAgICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbGxiYWNrQ29udGVudCxcbiAgICAgICAgICAgIGxvY2FsZTogYXBwTG9jYWxlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdBdXRvLWdlbmVyYXRlZCBmcm9tIGZhbGxiYWNrJ1xuICAgICAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNhdmluZyBmYWxsYmFjayBhcyBkZWZhdWx0IGNvbnRlbnQ6Jywgc2F2ZUVycm9yKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyYW5zbGF0ZWRUZXh0ID0gYXdhaXQgdHJhbnNsYXRlVGV4dChzb3VyY2VUZXh0LCBleHRyYWN0TGFuZ3VhZ2UobG9jYWxlKSwgZXh0cmFjdExhbmd1YWdlKGFwcExvY2FsZSkpO1xuXG4gICAgICBhZGRDb250ZW50KGNvbnRleHQsIHtcbiAgICAgICAga2V5LFxuICAgICAgICBjb250ZW50OiB0cmFuc2xhdGVkVGV4dCxcbiAgICAgICAgbG9jYWxlLFxuICAgICAgICBkZXNjcmlwdGlvbjogYEF1dG8tdHJhbnNsYXRlZCBmcm9tICR7YXBwTG9jYWxlfWBcbiAgICAgIH0pLmNhdGNoKChzYXZlRXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIHRyYW5zbGF0ZWQgY29udGVudDonLCBzYXZlRXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cmFuc2xhdGVkVGV4dDtcbiAgICB9IGNhdGNoKHRyYW5zbGF0aW9uRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1RyYW5zbGF0aW9uIGVycm9yOicsIHRyYW5zbGF0aW9uRXJyb3IpO1xuXG4gICAgICByZXR1cm4gZmFsbGJhY2tDb250ZW50IHx8IGtleTtcbiAgICB9XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBjb250ZW50IGZyb20gZGF0YWJhc2U6JywgZXJyb3IpO1xuICAgIHJldHVybiBmYWxsYmFja0NvbnRlbnQgfHwga2V5O1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgY29udGVudElucHV0OiBDb250ZW50SW5wdXRUeXBlXG4pOiBQcm9taXNlPENvbnRlbnRUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIGNvbnN0IHBhcnNlZENvbnRlbnQgPSBwYXJzZUNvbnRlbnRJbnB1dChjb250ZW50SW5wdXQpO1xuICBjb25zdCB7a2V5LCBsb2NhbGUgPSAnZW4nLCBjb250ZW50LCBkZXNjcmlwdGlvbiwgY2F0ZWdvcnksIGlzQWN0aXZlID0gdHJ1ZX0gPSBwYXJzZWRDb250ZW50O1xuICBjb25zdCBjb250ZW50SWQgPSBjcmVhdGVIYXNoKGBjb250ZW50LSR7a2V5fS0ke2xvY2FsZX1gKTtcbiAgY29uc3QgaW5zZXJ0OiBDb250ZW50VHlwZSA9IHtcbiAgICBfaWQ6IGBjb250ZW50LyR7Y29udGVudElkfWAsXG4gICAgX2tleTogY29udGVudElkLFxuICAgIGFkZGVkOiBub3csXG4gICAga2V5OiBwYXJzZVN0cmluZyhrZXksIDIwMCksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKGNvbnRlbnQsIDEwMDAwKSxcbiAgICBkZXNjcmlwdGlvbjogKGRlc2NyaXB0aW9uID8gcGFyc2VTdHJpbmcoZGVzY3JpcHRpb24sIDUwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyxcbiAgICBjYXRlZ29yeTogKGNhdGVnb3J5ID8gcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCkgOiB1bmRlZmluZWQpIGFzIHN0cmluZyxcbiAgICBpc0FjdGl2ZSxcbiAgICBtb2RpZmllZDogbm93LFxuICAgIHVzZXJJZDogc2Vzc2lvbj8udXNlcklkIGFzIHN0cmluZ1xuICB9O1xuXG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBjb250ZW50IFJFVFVSTiBORVdgO1xuXG4gIHRyeSB7XG4gICAgY29uc3Qgc2F2ZWRDb250ZW50OiBDb250ZW50VHlwZSA9IGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSlcbiAgICAgIC5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHNhdmVkQ29udGVudCk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZUNvbnRlbnQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGNvbnRlbnRJbnB1dDogQ29udGVudElucHV0VHlwZVxuKTogUHJvbWlzZTxDb250ZW50VHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVDb250ZW50JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICBjb25zdCBwYXJzZWRDb250ZW50ID0gcGFyc2VDb250ZW50SW5wdXQoY29udGVudElucHV0KTtcbiAgY29uc3Qge2NvbnRlbnRJZCwgY29udGVudCwgZGVzY3JpcHRpb24sIGNhdGVnb3J5LCBpc0FjdGl2ZX0gPSBwYXJzZWRDb250ZW50O1xuXG4gIGlmKCFjb250ZW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgSUQgaXMgcmVxdWlyZWQgZm9yIHVwZGF0ZScpO1xuICB9XG5cbiAgY29uc3QgdXBkYXRlOiBhbnkgPSB7XG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudCwgMTAwMDApLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcblxuICBpZihkZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24gPyBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihjYXRlZ29yeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmNhdGVnb3J5ID0gY2F0ZWdvcnkgPyBwYXJzZVN0cmluZyhjYXRlZ29yeSwgMTAwKSA6IHVuZGVmaW5lZDtcbiAgfVxuICBpZihpc0FjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgdXBkYXRlLmlzQWN0aXZlID0gaXNBY3RpdmU7XG4gIH1cblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFxuICAgIEZPUiBjIElOIGNvbnRlbnRcbiAgICBGSUxURVIgYy5fa2V5ID09ICR7Y29udGVudElkfVxuICAgIFVQREFURSBjIFdJVEggJHt1cGRhdGV9IElOIGNvbnRlbnRcbiAgICBSRVRVUk4gTkVXXG4gIGA7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCB1cGRhdGVkQ29udGVudDogQ29udGVudFR5cGUgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCkpO1xuXG4gICAgaWYoIXVwZGF0ZWRDb250ZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvbnRlbnQgbm90IGZvdW5kIG9yIGFjY2VzcyBkZW5pZWQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VDb250ZW50RnJvbURiKHVwZGF0ZWRDb250ZW50KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2VhcmNoQ29udGVudCA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxDb250ZW50VHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3NlYXJjaENvbnRlbnQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtjYXRlZ29yeSwgaXNBY3RpdmUsIGtleSwgbG9jYWxlfSA9IHBhcnNlQ29udGVudE9wdGlvbnMob3B0aW9ucyk7XG5cbiAgY29uc3QgZmlsdGVyQ29uZGl0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgYmluZFZhcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBpZihrZXkpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2Mua2V5ID09IEBrZXknKTtcbiAgICBiaW5kVmFycy5rZXkgPSBrZXk7XG4gIH1cblxuICBpZihsb2NhbGUpIHtcbiAgICBmaWx0ZXJDb25kaXRpb25zLnB1c2goJ2MubG9jYWxlID09IEBsb2NhbGUnKTtcbiAgICBiaW5kVmFycy5sb2NhbGUgPSBsb2NhbGU7XG4gIH1cblxuICBpZihjYXRlZ29yeSkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5jYXRlZ29yeSA9PSBAY2F0ZWdvcnknKTtcbiAgICBiaW5kVmFycy5jYXRlZ29yeSA9IGNhdGVnb3J5O1xuICB9XG5cbiAgaWYoaXNBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuICAgIGZpbHRlckNvbmRpdGlvbnMucHVzaCgnYy5pc0FjdGl2ZSA9PSBAaXNBY3RpdmUnKTtcbiAgICBiaW5kVmFycy5pc0FjdGl2ZSA9IGlzQWN0aXZlO1xuICB9XG5cbiAgY29uc3QgZmlsdGVyQ2xhdXNlID0gZmlsdGVyQ29uZGl0aW9ucy5sZW5ndGggPiAwID8gYEZJTFRFUiAke2ZpbHRlckNvbmRpdGlvbnMuam9pbignICYmICcpfWAgOiAnJztcblxuICBjb25zdCBhcWxRdWVyeSA9IGBcbiAgICBGT1IgYyBJTiBjb250ZW50XG4gICAgJHtmaWx0ZXJDbGF1c2V9XG4gICAgU09SVCBjLmtleSwgYy5sb2NhbGVcbiAgICBSRVRVUk4gY1xuICBgO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY29udGVudExpc3QgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpXG4gICAgICAucXVlcnkoYXFsUXVlcnksIGJpbmRWYXJzKVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG5cbiAgICByZXR1cm4gKGNvbnRlbnRMaXN0IGFzIENvbnRlbnRUeXBlW10pLm1hcCgoY29udGVudCkgPT4gcGFyc2VDb250ZW50RnJvbURiKGNvbnRlbnQpKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsY0FBQUEsRUFBWSxlQUFBQyxNQUFrQiwrQkFDdEMsT0FBUSxPQUFBQyxNQUFVLFdBR2xCLE9BQVEsc0JBQUFDLEVBQW9CLHFCQUFBQyxNQUF3QixnQ0FDcEQsT0FBUSxVQUFBQyxNQUFhLGVBQ3JCLE9BQVEsY0FBQUMsTUFBaUIsMEJBQ3pCLE9BQVEsWUFBQUMsTUFBZSw2QkFDdkIsT0FBUSxTQUFBQyxNQUFZLDRCQUNwQixPQUFRLGlCQUFBQyxNQUFvQiw4QkFDNUIsT0FBUSxtQkFBQUMsRUFBaUIsb0JBQUFDLE1BQXVCLDBCQUtoRCxNQUFNQyxFQUF3QixVQUVqQkMsRUFBc0IsQ0FBQ0MsRUFBMEIsQ0FBQyxJQUFNLENBQ25FLEtBQU0sQ0FDSixTQUFBQyxFQUNBLFNBQUFDLEVBQVcsR0FDWCxJQUFBQyxFQUNBLE9BQUFDLENBQ0Ys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QixDQUFDLFNBQUFMLEVBQVUsU0FBQUMsRUFBVSxJQUFBQyxFQUFLLE9BQUFDLENBQU0sRUFBSUwsRUFBb0JDLENBQU8sRUFFL0RxQyxFQUE2QixDQUFDLEVBQzlCQyxFQUFnQyxDQUFDLEVBRXBDbkMsSUFDRGtDLEVBQWlCLEtBQUssZUFBZSxFQUNyQ0MsRUFBUyxJQUFNbkMsR0FHZEMsSUFDRGlDLEVBQWlCLEtBQUsscUJBQXFCLEVBQzNDQyxFQUFTLE9BQVNsQyxHQUdqQkgsSUFDRG9DLEVBQWlCLEtBQUsseUJBQXlCLEVBQy9DQyxFQUFTLFNBQVdyQyxHQUduQkMsSUFBYSxTQUNkbUMsRUFBaUIsS0FBSyx5QkFBeUIsRUFDL0NDLEVBQVMsU0FBV3BDLEdBS3RCLE1BQU1xQyxFQUFXO0FBQUE7QUFBQSxNQUZJRixFQUFpQixPQUFTLEVBQUksVUFBVUEsRUFBaUIsS0FBSyxNQUFNLENBQUMsR0FBSyxFQUkvRTtBQUFBO0FBQUE7QUFBQSxJQUtoQixHQUFJLENBVUYsT0FUb0IsTUFBTTNDLEVBQU1jLENBQVksRUFDekMsTUFBTStCLEVBQVVELENBQVEsRUFDeEIsS0FBTXpCLEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLE1BQU9DLEdBQWlCckIsRUFBUyxDQUNoQyxPQUFBYyxFQUNBLFNBQVVULEVBQ1YsTUFBT04sRUFBVyxjQUNwQixFQUFHc0IsRUFBT1IsQ0FBTyxDQUFDLEdBRWtCLElBQUtNLEdBQVl2QixFQUFtQnVCLENBQU8sQ0FBQyxDQUNwRixPQUFRRSxFQUFPLENBQ2IsTUFBTUEsQ0FDUixDQUNGIiwKICAibmFtZXMiOiBbImNyZWF0ZUhhc2giLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgInBhcnNlQ29udGVudEZyb21EYiIsICJwYXJzZUNvbnRlbnRJbnB1dCIsICJDb25maWciLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJ1c2VEYiIsICJ0cmFuc2xhdGVUZXh0IiwgImV4dHJhY3RMYW5ndWFnZSIsICJpc1JlZ2lvbmFsTG9jYWxlIiwgImV2ZW50Q2F0ZWdvcnkiLCAicGFyc2VDb250ZW50T3B0aW9ucyIsICJvcHRpb25zIiwgImNhdGVnb3J5IiwgImlzQWN0aXZlIiwgImtleSIsICJsb2NhbGUiLCAiZ2V0Q29udGVudCIsICJjb250ZXh0IiwgImFjdGlvbiIsICJkYXRhYmFzZU5hbWUiLCAiZm9ybWF0S2V5IiwgImZvcm1hdExvY2FsZSIsICJhcWxRcnkiLCAiY29udGVudCIsICJjdXJzb3IiLCAiZXJyb3IiLCAiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsICJmYWxsYmFja0NvbnRlbnQiLCAiYXBwTG9jYWxlIiwgImxhbmd1YWdlIiwgImFkZENvbnRlbnQiLCAic2F2ZUVycm9yIiwgInNvdXJjZUNvbnRlbnQiLCAic291cmNlVGV4dCIsICJhcHBMYW5ndWFnZSIsICJ0cmFuc2xhdGVkVGV4dCIsICJjb250ZW50SW5wdXQiLCAic2Vzc2lvbiIsICJub3ciLCAicGFyc2VkQ29udGVudCIsICJkZXNjcmlwdGlvbiIsICJjb250ZW50SWQiLCAiaW5zZXJ0IiwgInNhdmVkQ29udGVudCIsICJ1cGRhdGVDb250ZW50IiwgInVwZGF0ZSIsICJ1cGRhdGVkQ29udGVudCIsICJzZWFyY2hDb250ZW50IiwgImZpbHRlckNvbmRpdGlvbnMiLCAiYmluZFZhcnMiLCAiYXFsUXVlcnkiXQp9Cg==
|