@nlabs/reaktor 0.8.1 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc.js +4 -0
- package/README.md +10 -1
- package/coverage/actions/groups.ts.html +1039 -0
- package/coverage/actions/images.ts.html +2500 -0
- package/coverage/actions/index.html +131 -0
- package/coverage/actions/tags.ts.html +1000 -0
- package/coverage/adapters/arangoAdapter.ts.html +151 -0
- package/coverage/adapters/index.html +146 -0
- package/coverage/adapters/reaktorAdapter.ts.html +127 -0
- package/coverage/adapters/tagAdapter.ts.html +160 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +6 -0
- package/coverage/coverage-final.json +1 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +221 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +101 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +196 -0
- package/coverage/lcov.info +0 -0
- package/coverage/mocks/file.ts.html +118 -0
- package/coverage/mocks/group.ts.html +145 -0
- package/coverage/mocks/image.ts.html +136 -0
- package/coverage/mocks/index.html +146 -0
- package/coverage/mocks/post.ts.html +169 -0
- package/coverage/mocks/tag.ts.html +121 -0
- package/coverage/mocks/user.ts.html +268 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +196 -0
- package/coverage/types/error.ts.html +145 -0
- package/coverage/types/index.html +116 -0
- package/coverage/utils/adapterUtils.ts.html +151 -0
- package/coverage/utils/analyticsUtils.ts.html +292 -0
- package/coverage/utils/arangodbUtils.ts.html +463 -0
- package/coverage/utils/index.html +146 -0
- package/dist/actions/apps.js +242 -0
- package/dist/actions/connections.js +90 -0
- package/dist/actions/conversations.js +350 -0
- package/dist/actions/dynamodb.js +150 -0
- package/dist/actions/email.js +152 -0
- package/dist/actions/files.js +283 -0
- package/dist/actions/groups.js +292 -0
- package/dist/actions/images.js +735 -0
- package/dist/actions/index.js +66 -0
- package/dist/actions/ios.js +164 -0
- package/dist/actions/locations.js +122 -0
- package/dist/actions/messages.js +208 -0
- package/dist/actions/notifications.js +59 -0
- package/dist/actions/payments.js +497 -0
- package/dist/actions/personas.js +110 -0
- package/dist/actions/posts.js +595 -0
- package/dist/actions/reactions.js +322 -0
- package/dist/actions/s3.js +133 -0
- package/dist/actions/search.js +90 -0
- package/dist/actions/sms.js +108 -0
- package/dist/actions/statistics.js +62 -0
- package/dist/actions/subscription.js +220 -0
- package/dist/actions/tags.js +292 -0
- package/dist/actions/users.js +784 -0
- package/dist/actions/websockets.js +174 -0
- package/dist/adapters/arangoAdapter.js +46 -0
- package/dist/adapters/fileAdapter.js +76 -0
- package/dist/adapters/imageAdapter.js +40 -0
- package/dist/adapters/messageAdapter.js +49 -0
- package/dist/adapters/postAdapter.js +70 -0
- package/dist/adapters/reaktorAdapter.js +44 -0
- package/dist/adapters/tagAdapter.js +50 -0
- package/dist/adapters/userAdapter.js +115 -0
- package/dist/config.js +125 -0
- package/dist/index.js +66 -0
- package/dist/lambdas/actions/websockets.js +132 -0
- package/dist/lambdas/authorizer.js +67 -0
- package/dist/lambdas/connection.js +91 -0
- package/dist/lambdas/utils/message.js +42 -0
- package/dist/lambdas/utils/websocket.js +105 -0
- package/dist/mocks/conversation.js +35 -0
- package/dist/mocks/file.js +38 -0
- package/dist/mocks/group.js +47 -0
- package/dist/mocks/image.js +44 -0
- package/dist/mocks/nlabs.png +0 -0
- package/dist/mocks/post.js +55 -0
- package/dist/mocks/tag.js +37 -0
- package/dist/mocks/user.js +88 -0
- package/dist/mutations/index.js +26 -0
- package/dist/mutations/locations.js +44 -0
- package/dist/mutations/messages.js +86 -0
- package/dist/mutations/personas.js +100 -0
- package/dist/mutations/posts.js +53 -0
- package/dist/mutations/reactions.js +51 -0
- package/dist/mutations/statistics.js +39 -0
- package/dist/mutations/subscriptions.js +56 -0
- package/dist/mutations/tags.js +120 -0
- package/dist/mutations/users.js +116 -0
- package/dist/objectTypes/app.js +173 -0
- package/dist/objectTypes/bankAccount.js +76 -0
- package/dist/objectTypes/connection.js +48 -0
- package/dist/objectTypes/conversation.js +77 -0
- package/dist/objectTypes/creditCard.js +86 -0
- package/dist/objectTypes/document.js +46 -0
- package/dist/objectTypes/error.js +46 -0
- package/dist/objectTypes/external.js +74 -0
- package/dist/objectTypes/file.js +100 -0
- package/dist/objectTypes/filter.js +43 -0
- package/dist/objectTypes/group.js +123 -0
- package/dist/objectTypes/iapSubscription.js +40 -0
- package/dist/objectTypes/image.js +129 -0
- package/dist/objectTypes/index.js +68 -0
- package/dist/objectTypes/location.js +109 -0
- package/dist/objectTypes/message.js +96 -0
- package/dist/objectTypes/passcode.js +42 -0
- package/dist/objectTypes/persona.js +87 -0
- package/dist/objectTypes/plan.js +95 -0
- package/dist/objectTypes/post.js +125 -0
- package/dist/objectTypes/reaction.js +61 -0
- package/dist/objectTypes/relation.js +49 -0
- package/dist/objectTypes/search.js +72 -0
- package/dist/objectTypes/statistics.js +39 -0
- package/dist/objectTypes/subscription.js +117 -0
- package/dist/objectTypes/tag.js +65 -0
- package/dist/objectTypes/user.js +144 -0
- package/dist/queries/index.js +33 -0
- package/dist/queries/locations.js +45 -0
- package/dist/queries/messages.js +52 -0
- package/dist/queries/posts.js +154 -0
- package/dist/queries/reactions.js +56 -0
- package/dist/queries/statistics.js +39 -0
- package/dist/queries/subscriptions.js +44 -0
- package/dist/queries/tags.js +75 -0
- package/dist/queries/users.js +64 -0
- package/dist/templates/email/layout.js +302 -0
- package/dist/templates/email/passwordForgot.js +38 -0
- package/dist/templates/email/passwordRecovery.js +35 -0
- package/dist/templates/email/verifyEmail.js +38 -0
- package/dist/templates/email/welcome.js +38 -0
- package/dist/templates/sms/passwordForgot.js +24 -0
- package/dist/templates/sms/passwordRecovery.js +24 -0
- package/dist/templates/sms/verifyEmail.js +24 -0
- package/dist/templates/sms/verifyPhone.js +24 -0
- package/dist/templates/sms/welcome.js +24 -0
- package/dist/types/apps.js +32 -0
- package/dist/types/arangodb.js +16 -0
- package/{lib → dist}/types/auth.js +1 -1
- package/{lib → dist}/types/connections.js +1 -1
- package/{lib → dist}/types/conversations.js +1 -1
- package/{lib → dist}/types/email.js +1 -1
- package/dist/types/error.js +44 -0
- package/{lib → dist}/types/files.js +1 -1
- package/dist/types/google.js +16 -0
- package/{lib → dist}/types/groups.js +1 -1
- package/dist/types/images.js +16 -0
- package/dist/types/index.js +60 -0
- package/{lib → dist}/types/locations.js +1 -1
- package/dist/types/messages.js +16 -0
- package/{lib → dist}/types/notifications.js +1 -1
- package/dist/types/payments.js +16 -0
- package/dist/types/personas.js +16 -0
- package/dist/types/posts.js +16 -0
- package/{lib → dist}/types/statistics.js +1 -1
- package/{lib → dist}/types/tags.js +1 -1
- package/dist/types/users.js +16 -0
- package/dist/types/websockets.js +16 -0
- package/dist/utils/adapterUtils.js +45 -0
- package/dist/utils/analyticsUtils.js +72 -0
- package/dist/utils/arangodbUtils.js +165 -0
- package/dist/utils/auth.js +57 -0
- package/dist/utils/index.js +30 -0
- package/dist/utils/session.js +60 -0
- package/jest.setup.js +0 -0
- package/jpg:- +0 -0
- package/lex.config.cjs +13 -0
- package/lib/actions/apps.d.ts +25 -0
- package/lib/actions/apps.js +242 -0
- package/lib/actions/connections.d.ts +4 -0
- package/lib/actions/connections.js +90 -0
- package/lib/actions/conversations.d.ts +12 -12
- package/lib/actions/conversations.js +147 -131
- package/lib/actions/dynamodb.d.ts +8 -8
- package/lib/actions/dynamodb.js +35 -32
- package/lib/actions/email.d.ts +3 -5
- package/lib/actions/email.js +33 -63
- package/lib/actions/files.d.ts +17 -14
- package/lib/actions/files.js +184 -202
- package/lib/actions/groups.d.ts +4 -4
- package/lib/actions/groups.js +47 -45
- package/lib/actions/images.d.ts +17 -13
- package/lib/actions/images.js +325 -264
- package/lib/actions/index.d.ts +3 -0
- package/lib/actions/index.js +7 -1
- package/lib/actions/ios.js +11 -10
- package/lib/actions/locations.d.ts +5 -2
- package/lib/actions/locations.js +41 -37
- package/lib/actions/messages.d.ts +4 -3
- package/lib/actions/messages.js +35 -32
- package/lib/actions/notifications.d.ts +2 -2
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/payments.d.ts +2 -2
- package/lib/actions/payments.js +87 -83
- package/lib/actions/personas.d.ts +3 -0
- package/lib/actions/personas.js +110 -0
- package/lib/actions/posts.d.ts +11 -10
- package/lib/actions/posts.js +186 -152
- package/lib/actions/reactions.d.ts +5 -5
- package/lib/actions/reactions.js +30 -28
- package/lib/actions/s3.d.ts +7 -7
- package/lib/actions/s3.js +37 -32
- package/lib/actions/search.d.ts +3 -3
- package/lib/actions/search.js +13 -11
- package/lib/actions/sms.d.ts +9 -3
- package/lib/actions/sms.js +60 -34
- package/lib/actions/statistics.d.ts +3 -2
- package/lib/actions/statistics.js +21 -18
- package/lib/actions/subscription.d.ts +2 -2
- package/lib/actions/subscription.js +32 -39
- package/lib/actions/tags.d.ts +23 -20
- package/lib/actions/tags.js +161 -205
- package/lib/actions/users.d.ts +50 -22
- package/lib/actions/users.js +441 -217
- package/lib/actions/websockets.d.ts +19 -5
- package/lib/actions/websockets.js +89 -61
- package/lib/adapters/arangoAdapter.d.ts +2 -0
- package/lib/adapters/arangoAdapter.js +46 -0
- package/lib/adapters/fileAdapter.d.ts +3 -0
- package/lib/adapters/fileAdapter.js +76 -0
- package/lib/adapters/imageAdapter.d.ts +2 -0
- package/lib/adapters/imageAdapter.js +40 -0
- package/lib/adapters/messageAdapter.d.ts +2 -0
- package/lib/adapters/messageAdapter.js +49 -0
- package/lib/adapters/postAdapter.d.ts +2 -0
- package/lib/adapters/postAdapter.js +70 -0
- package/lib/adapters/reaktorAdapter.d.ts +6 -0
- package/lib/adapters/reaktorAdapter.js +44 -0
- package/lib/adapters/tagAdapter.d.ts +2 -0
- package/lib/adapters/tagAdapter.js +50 -0
- package/lib/adapters/userAdapter.d.ts +2 -0
- package/lib/adapters/userAdapter.js +115 -0
- package/lib/config.js +16 -17
- package/lib/index.d.ts +7 -0
- package/lib/index.js +44 -8
- package/lib/lambdas/actions/websockets.d.ts +7 -6
- package/lib/lambdas/actions/websockets.js +15 -11
- package/lib/lambdas/authorizer.js +4 -4
- package/lib/lambdas/connection.js +20 -20
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +8 -7
- package/lib/mocks/conversation.d.ts +8 -0
- package/lib/mocks/conversation.js +35 -0
- package/lib/mocks/file.d.ts +11 -0
- package/lib/mocks/file.js +38 -0
- package/lib/mocks/group.d.ts +17 -0
- package/lib/mocks/group.js +47 -0
- package/lib/mocks/image.d.ts +3 -0
- package/lib/mocks/image.js +44 -0
- package/lib/mocks/nlabs.png +0 -0
- package/lib/mocks/post.d.ts +38 -0
- package/lib/mocks/post.js +55 -0
- package/lib/mocks/tag.d.ts +2 -0
- package/lib/mocks/tag.js +37 -0
- package/lib/mocks/user.d.ts +4 -0
- package/lib/mocks/user.js +88 -0
- package/lib/mutations/index.d.ts +3 -0
- package/lib/mutations/index.js +26 -0
- package/lib/mutations/locations.d.ts +2 -0
- package/lib/mutations/locations.js +44 -0
- package/lib/mutations/messages.d.ts +2 -0
- package/lib/mutations/messages.js +86 -0
- package/lib/mutations/personas.d.ts +2 -0
- package/lib/mutations/personas.js +100 -0
- package/lib/mutations/posts.d.ts +2 -0
- package/lib/mutations/posts.js +53 -0
- package/lib/mutations/reactions.d.ts +2 -0
- package/lib/mutations/reactions.js +51 -0
- package/lib/mutations/statistics.d.ts +2 -0
- package/lib/mutations/statistics.js +39 -0
- package/lib/mutations/subscriptions.d.ts +2 -0
- package/lib/mutations/subscriptions.js +56 -0
- package/lib/mutations/tags.d.ts +2 -0
- package/lib/mutations/tags.js +120 -0
- package/lib/mutations/users.d.ts +1 -0
- package/lib/mutations/users.js +116 -0
- package/lib/objectTypes/app.d.ts +3 -0
- package/lib/objectTypes/app.js +173 -0
- package/lib/objectTypes/bankAccount.d.ts +1 -0
- package/lib/objectTypes/bankAccount.js +76 -0
- package/lib/objectTypes/connection.d.ts +1 -0
- package/lib/objectTypes/connection.js +48 -0
- package/lib/objectTypes/conversation.d.ts +2 -0
- package/lib/objectTypes/conversation.js +77 -0
- package/lib/objectTypes/creditCard.d.ts +1 -0
- package/lib/objectTypes/creditCard.js +86 -0
- package/lib/objectTypes/document.d.ts +1 -0
- package/lib/objectTypes/document.js +46 -0
- package/lib/objectTypes/error.d.ts +1 -0
- package/lib/objectTypes/error.js +46 -0
- package/lib/objectTypes/external.d.ts +1 -0
- package/lib/objectTypes/external.js +74 -0
- package/lib/objectTypes/file.d.ts +2 -0
- package/lib/objectTypes/file.js +100 -0
- package/lib/objectTypes/filter.d.ts +1 -0
- package/lib/objectTypes/filter.js +43 -0
- package/lib/objectTypes/group.d.ts +3 -0
- package/lib/objectTypes/group.js +123 -0
- package/lib/objectTypes/iapSubscription.d.ts +1 -0
- package/lib/objectTypes/iapSubscription.js +40 -0
- package/lib/objectTypes/image.d.ts +2 -0
- package/lib/objectTypes/image.js +129 -0
- package/lib/objectTypes/index.d.ts +24 -0
- package/lib/objectTypes/index.js +68 -0
- package/lib/objectTypes/location.d.ts +2 -0
- package/lib/objectTypes/location.js +109 -0
- package/lib/objectTypes/message.d.ts +2 -0
- package/lib/objectTypes/message.js +96 -0
- package/lib/objectTypes/passcode.d.ts +1 -0
- package/lib/objectTypes/passcode.js +42 -0
- package/lib/objectTypes/persona.d.ts +3 -0
- package/lib/objectTypes/persona.js +87 -0
- package/lib/objectTypes/plan.d.ts +2 -0
- package/lib/objectTypes/plan.js +95 -0
- package/lib/objectTypes/post.d.ts +2 -0
- package/lib/objectTypes/post.js +125 -0
- package/lib/objectTypes/reaction.d.ts +2 -0
- package/lib/objectTypes/reaction.js +61 -0
- package/lib/objectTypes/relation.d.ts +1 -0
- package/lib/objectTypes/relation.js +49 -0
- package/lib/objectTypes/search.d.ts +1 -0
- package/lib/objectTypes/search.js +72 -0
- package/lib/objectTypes/statistics.d.ts +1 -0
- package/lib/objectTypes/statistics.js +39 -0
- package/lib/objectTypes/subscription.d.ts +2 -0
- package/lib/objectTypes/subscription.js +117 -0
- package/lib/objectTypes/tag.d.ts +2 -0
- package/lib/objectTypes/tag.js +65 -0
- package/lib/objectTypes/user.d.ts +4 -0
- package/lib/objectTypes/user.js +144 -0
- package/lib/queries/index.d.ts +3 -0
- package/lib/queries/index.js +33 -0
- package/lib/queries/locations.d.ts +2 -0
- package/lib/queries/locations.js +45 -0
- package/lib/queries/messages.d.ts +2 -0
- package/lib/queries/messages.js +52 -0
- package/lib/queries/posts.d.ts +2 -0
- package/lib/queries/posts.js +154 -0
- package/lib/queries/reactions.d.ts +2 -0
- package/lib/queries/reactions.js +56 -0
- package/lib/queries/statistics.d.ts +2 -0
- package/lib/queries/statistics.js +39 -0
- package/lib/queries/subscriptions.d.ts +2 -0
- package/lib/queries/subscriptions.js +44 -0
- package/lib/queries/tags.d.ts +2 -0
- package/lib/queries/tags.js +75 -0
- package/lib/queries/users.d.ts +1 -0
- package/lib/queries/users.js +64 -0
- package/lib/types/{apps.d.ts → apps.types.d.ts} +19 -17
- package/lib/types/apps.types.js +32 -0
- package/lib/types/arangodb.types.d.ts +34 -0
- package/lib/types/arangodb.types.js +16 -0
- package/lib/types/auth.types.d.ts +9 -0
- package/lib/types/auth.types.js +16 -0
- package/lib/types/connections.types.d.ts +5 -0
- package/lib/types/connections.types.js +16 -0
- package/lib/types/conversations.types.d.ts +27 -0
- package/lib/types/conversations.types.js +16 -0
- package/lib/types/email.types.d.ts +13 -0
- package/lib/types/email.types.js +16 -0
- package/lib/types/error.types.d.ts +20 -0
- package/lib/types/error.types.js +44 -0
- package/lib/types/{files.d.ts → files.types.d.ts} +9 -12
- package/lib/types/files.types.js +16 -0
- package/lib/types/google.types.d.ts +29 -0
- package/lib/types/google.types.js +16 -0
- package/lib/types/{groups.d.ts → groups.types.d.ts} +6 -10
- package/lib/types/groups.types.js +16 -0
- package/lib/types/images.types.d.ts +52 -0
- package/lib/types/images.types.js +16 -0
- package/lib/types/index.d.ts +20 -18
- package/lib/types/index.js +41 -37
- package/lib/types/{locations.d.ts → locations.types.d.ts} +4 -6
- package/lib/types/locations.types.js +16 -0
- package/lib/types/messages.types.d.ts +16 -0
- package/lib/types/messages.types.js +16 -0
- package/lib/types/notifications.types.d.ts +19 -0
- package/lib/types/notifications.types.js +16 -0
- package/lib/types/{payments.d.ts → payments.types.d.ts} +13 -19
- package/lib/types/payments.types.js +16 -0
- package/lib/types/personas.types.d.ts +32 -0
- package/lib/types/personas.types.js +16 -0
- package/lib/types/posts.types.d.ts +28 -0
- package/lib/types/posts.types.js +16 -0
- package/lib/types/statistics.types.d.ts +3 -0
- package/lib/types/statistics.types.js +16 -0
- package/lib/types/tags.types.d.ts +15 -0
- package/lib/types/tags.types.js +16 -0
- package/lib/types/{users.d.ts → users.types.d.ts} +21 -22
- package/lib/types/users.types.js +16 -0
- package/lib/types/{websocket.d.ts → websockets.types.d.ts} +7 -3
- package/lib/types/websockets.types.js +16 -0
- package/lib/utils/adapterUtils.d.ts +1 -0
- package/lib/utils/adapterUtils.js +45 -0
- package/lib/utils/analyticsUtils.d.ts +21 -0
- package/lib/utils/analyticsUtils.js +72 -0
- package/lib/utils/arangodbUtils.d.ts +66 -0
- package/lib/utils/arangodbUtils.js +165 -0
- package/lib/utils/auth.d.ts +19 -3
- package/lib/utils/auth.js +20 -30
- package/lib/utils/index.d.ts +3 -4
- package/lib/utils/index.js +7 -9
- package/lib/utils/session.d.ts +10 -10
- package/lib/utils/session.js +15 -3
- package/lib/utils/stripeUtils.d.ts +3 -0
- package/lib/utils/{graphql.js → stripeUtils.js} +12 -15
- package/package.json +38 -30
- package/lib/types/apps.js +0 -16
- package/lib/types/arangodb.d.ts +0 -17
- package/lib/types/arangodb.js +0 -16
- package/lib/types/auth.d.ts +0 -7
- package/lib/types/connections.d.ts +0 -8
- package/lib/types/conversations.d.ts +0 -16
- package/lib/types/email.d.ts +0 -12
- package/lib/types/google.d.ts +0 -27
- package/lib/types/google.js +0 -16
- package/lib/types/images.d.ts +0 -42
- package/lib/types/images.js +0 -16
- package/lib/types/messages.d.ts +0 -27
- package/lib/types/messages.js +0 -16
- package/lib/types/notifications.d.ts +0 -19
- package/lib/types/payments.js +0 -16
- package/lib/types/posts.d.ts +0 -47
- package/lib/types/posts.js +0 -16
- package/lib/types/statistics.d.ts +0 -3
- package/lib/types/tags.d.ts +0 -15
- package/lib/types/users.js +0 -16
- package/lib/types/websocket.js +0 -16
- package/lib/utils/analytics.d.ts +0 -14
- package/lib/utils/analytics.js +0 -88
- package/lib/utils/arangodb.d.ts +0 -9
- package/lib/utils/arangodb.js +0 -118
- package/lib/utils/graphql.d.ts +0 -1
- package/lib/utils/objects.d.ts +0 -3
- package/lib/utils/objects.js +0 -59
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ApiContext,
|
|
1
|
+
import type { ApiContext, ArangoDbCollection, ArangoDbLimit, UserType, UserReactionQuery } from '../types';
|
|
2
2
|
export type ReactionDirection = 'INBOUND' | 'OUTBOUND';
|
|
3
3
|
export interface Reaction {
|
|
4
4
|
readonly _from?: string;
|
|
@@ -8,7 +8,7 @@ export interface Reaction {
|
|
|
8
8
|
readonly count?: number;
|
|
9
9
|
readonly id?: string;
|
|
10
10
|
readonly name?: string;
|
|
11
|
-
readonly type?:
|
|
11
|
+
readonly type?: ArangoDbCollection;
|
|
12
12
|
readonly value?: string;
|
|
13
13
|
}
|
|
14
14
|
export interface ReactionOptions {
|
|
@@ -16,7 +16,7 @@ export interface ReactionOptions {
|
|
|
16
16
|
readonly to?: number;
|
|
17
17
|
}
|
|
18
18
|
export declare const parseReactionOptions: (options?: ReactionOptions) => {
|
|
19
|
-
limit:
|
|
19
|
+
limit: ArangoDbLimit;
|
|
20
20
|
};
|
|
21
21
|
export declare const addReaction: (context: ApiContext, itemId: string, reaction?: Reaction, allowDuplicate?: boolean) => Promise<Reaction>;
|
|
22
22
|
export declare const deleteReaction: (context: ApiContext, reactionId: string) => Promise<Reaction>;
|
|
@@ -24,7 +24,7 @@ export declare const deleteReactionByItem: (context: ApiContext, itemId: string,
|
|
|
24
24
|
export declare const updateReaction: (context: ApiContext, reaction?: Reaction) => Promise<Reaction>;
|
|
25
25
|
export declare const getReactionCount: (context: ApiContext, itemId: string, reactionName: string) => Promise<Reaction>;
|
|
26
26
|
export declare const getReactionCountByUser: (context: ApiContext, itemId: string, itemType: string, reactionName: string) => Promise<Reaction[]>;
|
|
27
|
-
export declare const getGroupUsersByReaction: (context: ApiContext, params?: UserReactionQuery) => Promise<
|
|
28
|
-
export declare const getReactionsByItem: (context: ApiContext, itemId: string, reactionName: string, options: ReactionOptions) => Promise<
|
|
27
|
+
export declare const getGroupUsersByReaction: (context: ApiContext, params?: UserReactionQuery) => Promise<UserType[]>;
|
|
28
|
+
export declare const getReactionsByItem: (context: ApiContext, itemId: string, reactionName: string, options: ReactionOptions) => Promise<UserType[]>;
|
|
29
29
|
export declare const getItemsByReaction: (context: ApiContext, itemId: string, reactionName: string, options: ReactionOptions) => Promise<Reaction[]>;
|
|
30
30
|
export declare const hasReaction: (context: ApiContext, itemId: string, reactionName: string, direction?: ReactionDirection) => Promise<boolean>;
|
package/lib/actions/reactions.js
CHANGED
|
@@ -32,7 +32,9 @@ __export(reactions_exports, {
|
|
|
32
32
|
module.exports = __toCommonJS(reactions_exports);
|
|
33
33
|
var import_utils = require("@nlabs/utils");
|
|
34
34
|
var import_arangojs = require("arangojs");
|
|
35
|
-
var
|
|
35
|
+
var import_error = require("../types/error.types");
|
|
36
|
+
var import_analyticsUtils = require("../utils/analyticsUtils");
|
|
37
|
+
var import_arangodbUtils = require("../utils/arangodbUtils");
|
|
36
38
|
const eventCategory = "reactions";
|
|
37
39
|
const parseReactionOptions = (options = {}) => {
|
|
38
40
|
const {
|
|
@@ -40,14 +42,14 @@ const parseReactionOptions = (options = {}) => {
|
|
|
40
42
|
to = 30
|
|
41
43
|
} = options;
|
|
42
44
|
return {
|
|
43
|
-
limit: (0,
|
|
45
|
+
limit: (0, import_arangodbUtils.getLimit)(from, to)
|
|
44
46
|
};
|
|
45
47
|
};
|
|
46
48
|
const addReaction = (context, itemId, reaction = {}, allowDuplicate = false) => {
|
|
47
49
|
const action = "addReaction";
|
|
48
50
|
const { database, session: { userId: sessionId } } = context;
|
|
49
51
|
if (!sessionId) {
|
|
50
|
-
return (0,
|
|
52
|
+
return (0, import_analyticsUtils.logException)({
|
|
51
53
|
action,
|
|
52
54
|
category: eventCategory,
|
|
53
55
|
label: "unauthorized",
|
|
@@ -84,10 +86,10 @@ const addReaction = (context, itemId, reaction = {}, allowDuplicate = false) =>
|
|
|
84
86
|
return edgeCollection.save(edge, { returnNew: true }).then(() => edge);
|
|
85
87
|
}).catch((error) => {
|
|
86
88
|
console.log("addReaction::error", error);
|
|
87
|
-
return (0,
|
|
89
|
+
return (0, import_analyticsUtils.logError)({
|
|
88
90
|
action,
|
|
89
91
|
category: eventCategory,
|
|
90
|
-
label:
|
|
92
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
91
93
|
}, error, context).then(() => null);
|
|
92
94
|
});
|
|
93
95
|
}
|
|
@@ -97,7 +99,7 @@ const deleteReaction = (context, reactionId) => {
|
|
|
97
99
|
const action = "deleteReaction";
|
|
98
100
|
const { database, session: { userId: sessionId } } = context;
|
|
99
101
|
if (!sessionId) {
|
|
100
|
-
return (0,
|
|
102
|
+
return (0, import_analyticsUtils.logException)({
|
|
101
103
|
action,
|
|
102
104
|
category: eventCategory,
|
|
103
105
|
label: "unauthorized",
|
|
@@ -111,17 +113,17 @@ const deleteReaction = (context, reactionId) => {
|
|
|
111
113
|
LIMIT 1
|
|
112
114
|
REMOVE r IN hasReaction
|
|
113
115
|
RETURN OLD`;
|
|
114
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0,
|
|
116
|
+
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
115
117
|
action,
|
|
116
118
|
category: eventCategory,
|
|
117
|
-
label:
|
|
119
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
118
120
|
}, error, context).then(() => null));
|
|
119
121
|
};
|
|
120
122
|
const deleteReactionByItem = (context, itemId, reactionName) => {
|
|
121
123
|
const action = "deleteReactionByItem";
|
|
122
124
|
const { database, session: { userId: sessionId } } = context;
|
|
123
125
|
if (!sessionId) {
|
|
124
|
-
return (0,
|
|
126
|
+
return (0, import_analyticsUtils.logException)({
|
|
125
127
|
action,
|
|
126
128
|
category: eventCategory,
|
|
127
129
|
label: "unauthorized",
|
|
@@ -136,17 +138,17 @@ const deleteReactionByItem = (context, itemId, reactionName) => {
|
|
|
136
138
|
LIMIT 1
|
|
137
139
|
REMOVE r IN hasReaction
|
|
138
140
|
RETURN OLD`;
|
|
139
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0,
|
|
141
|
+
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
140
142
|
action,
|
|
141
143
|
category: eventCategory,
|
|
142
|
-
label:
|
|
144
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
143
145
|
}, error, context).then(() => null));
|
|
144
146
|
};
|
|
145
147
|
const updateReaction = (context, reaction = {}) => {
|
|
146
148
|
const action = "updateReaction";
|
|
147
149
|
const { database, session: { userId: sessionId } } = context;
|
|
148
150
|
if (!sessionId) {
|
|
149
|
-
return (0,
|
|
151
|
+
return (0, import_analyticsUtils.logException)({
|
|
150
152
|
action,
|
|
151
153
|
category: eventCategory,
|
|
152
154
|
label: "unauthorized",
|
|
@@ -176,10 +178,10 @@ const updateReaction = (context, reaction = {}) => {
|
|
|
176
178
|
UPDATE ${update}
|
|
177
179
|
LIMIT 1
|
|
178
180
|
RETURN NEW`;
|
|
179
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0,
|
|
181
|
+
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
180
182
|
action,
|
|
181
183
|
category: eventCategory,
|
|
182
|
-
label:
|
|
184
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
183
185
|
}, error, context).then(() => null));
|
|
184
186
|
};
|
|
185
187
|
const getReactionCount = (context, itemId, reactionName) => {
|
|
@@ -191,10 +193,10 @@ const getReactionCount = (context, itemId, reactionName) => {
|
|
|
191
193
|
FILTER r.name == ${formatReactionName}
|
|
192
194
|
COLLECT WITH COUNT INTO count
|
|
193
195
|
RETURN count`;
|
|
194
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0,
|
|
196
|
+
return database.query(aqlQry).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
195
197
|
action,
|
|
196
198
|
category: eventCategory,
|
|
197
|
-
label:
|
|
199
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
198
200
|
}, error, context).then(() => void 0));
|
|
199
201
|
};
|
|
200
202
|
const getReactionCountByUser = (context, itemId, itemType, reactionName) => {
|
|
@@ -207,17 +209,17 @@ const getReactionCountByUser = (context, itemId, itemType, reactionName) => {
|
|
|
207
209
|
FILTER r.name == ${formatReactionName} && r._from == ${sessionDocId}
|
|
208
210
|
COLLECT reactionValue = r.value INTO reactionItems
|
|
209
211
|
RETURN MERGE(r, {count: LENGTH(reactionItems[*].r.value)})`;
|
|
210
|
-
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0,
|
|
212
|
+
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
211
213
|
action,
|
|
212
214
|
category: eventCategory,
|
|
213
|
-
label:
|
|
215
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
214
216
|
}, error, context).then(() => []));
|
|
215
217
|
};
|
|
216
218
|
const getGroupUsersByReaction = (context, params = {}) => {
|
|
217
219
|
const action = "getGroupUsersByReaction";
|
|
218
220
|
const { database, session: { userId: sessionId } } = context;
|
|
219
221
|
if (!sessionId) {
|
|
220
|
-
return (0,
|
|
222
|
+
return (0, import_analyticsUtils.logException)({
|
|
221
223
|
action,
|
|
222
224
|
category: eventCategory,
|
|
223
225
|
label: "unauthorized",
|
|
@@ -247,10 +249,10 @@ const getGroupUsersByReaction = (context, params = {}) => {
|
|
|
247
249
|
FOR u IN users
|
|
248
250
|
FILTER ${filterStr}
|
|
249
251
|
RETURN u`;
|
|
250
|
-
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0,
|
|
252
|
+
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
251
253
|
action,
|
|
252
254
|
category: eventCategory,
|
|
253
|
-
label:
|
|
255
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
254
256
|
}, error, context).then(() => []));
|
|
255
257
|
};
|
|
256
258
|
const getReactionsByItem = (context, itemId, reactionName, options) => {
|
|
@@ -263,10 +265,10 @@ const getReactionsByItem = (context, itemId, reactionName, options) => {
|
|
|
263
265
|
FILTER r.name == "${formatReactionName}"
|
|
264
266
|
${limit.aql}
|
|
265
267
|
RETURN MERGE(i, {reaction: r})`;
|
|
266
|
-
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0,
|
|
268
|
+
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
267
269
|
action,
|
|
268
270
|
category: eventCategory,
|
|
269
|
-
label:
|
|
271
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
270
272
|
}, error, context).then(() => []));
|
|
271
273
|
};
|
|
272
274
|
const getItemsByReaction = (context, itemId, reactionName, options) => {
|
|
@@ -279,10 +281,10 @@ const getItemsByReaction = (context, itemId, reactionName, options) => {
|
|
|
279
281
|
FILTER r.name == ${formatReactionName}
|
|
280
282
|
${limit.aql}
|
|
281
283
|
RETURN MERGE(u, {reaction: r})`;
|
|
282
|
-
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0,
|
|
284
|
+
return database.query(aqlQry).then((cursor) => cursor.all()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
283
285
|
action,
|
|
284
286
|
category: eventCategory,
|
|
285
|
-
label:
|
|
287
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
286
288
|
}, error, context).then(() => []));
|
|
287
289
|
};
|
|
288
290
|
const hasReaction = (context, itemId, reactionName, direction = "OUTBOUND") => {
|
|
@@ -297,10 +299,10 @@ const hasReaction = (context, itemId, reactionName, direction = "OUTBOUND") => {
|
|
|
297
299
|
LIMIT 1
|
|
298
300
|
RETURN r`;
|
|
299
301
|
console.log({ aqlQry });
|
|
300
|
-
return database.query(aqlQry).then((cursor) => cursor.next()).then((reactions) => reactions ? reactions.value === "true" : false).catch((error) => (0,
|
|
302
|
+
return database.query(aqlQry).then((cursor) => cursor.next()).then((reactions) => reactions ? reactions.value === "true" : false).catch((error) => (0, import_analyticsUtils.logError)({
|
|
301
303
|
action,
|
|
302
304
|
category: eventCategory,
|
|
303
|
-
label:
|
|
305
|
+
label: import_error.ErrorTypes.DATABASE_ERROR
|
|
304
306
|
}, error, context).then(() => false));
|
|
305
307
|
};
|
|
306
308
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -317,4 +319,4 @@ const hasReaction = (context, itemId, reactionName, direction = "OUTBOUND") => {
|
|
|
317
319
|
parseReactionOptions,
|
|
318
320
|
updateReaction
|
|
319
321
|
});
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQXJhbmdvSWQsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9uJztcbmltcG9ydCB7QXJyYXlDdXJzb3J9IGZyb20gJ2FyYW5nb2pzL2N1cnNvcic7XG5cbmltcG9ydCB7QXBpQ29udGV4dCwgQXBwQ29sbGVjdGlvblR5cGVzLCBRdWVyeUZpbHRlciwgVXNlciwgVXNlclJlYWN0aW9uUXVlcnl9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7Z2V0TGltaXQsIGxvZ0Vycm9yLCBsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3JlYWN0aW9ucyc7XG5cbmV4cG9ydCB0eXBlIFJlYWN0aW9uRGlyZWN0aW9uID0gJ0lOQk9VTkQnIHwgJ09VVEJPVU5EJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWFjdGlvbiB7XG4gIHJlYWRvbmx5IF9mcm9tPzogc3RyaW5nO1xuICByZWFkb25seSBfa2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBfdG8/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFkZGVkPzogbnVtYmVyO1xuICByZWFkb25seSBjb3VudD86IG51bWJlcjtcbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHR5cGU/OiBBcHBDb2xsZWN0aW9uVHlwZXM7XG4gIHJlYWRvbmx5IHZhbHVlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uT3B0aW9ucyB7XG4gIHJlYWRvbmx5IGZyb20/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRvPzogbnVtYmVyO1xufVxuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFjdGlvbk9wdGlvbnMgPSAob3B0aW9uczogUmVhY3Rpb25PcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG5cbiAgcmV0dXJuIHtcbiAgICBsaW1pdDogZ2V0TGltaXQoZnJvbSwgdG8pXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgYWRkUmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSxcbiAgYWxsb3dEdXBsaWNhdGU6IGJvb2xlYW4gPSBmYWxzZVxuKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBuYW1lOiBpdGVtTmFtZSA9ICdsaWtlJyxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUNvbGxlY3Rpb246IEVkZ2VDb2xsZWN0aW9uID0gZGF0YWJhc2UuY29sbGVjdGlvbignaGFzUmVhY3Rpb24nKTtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2Zvcm1hdEl0ZW1JZH0tJHtzZXNzaW9uSWR9YCk7XG4gIGNvbnN0IGVkZ2U6IFJlYWN0aW9uID0ge1xuICAgIF9mcm9tOiBzZXNzaW9uRG9jSWQsXG4gICAgX2tleTogZWRnZUlkLFxuICAgIF90bzogZm9ybWF0SXRlbUlkLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIG5hbWU6IGZvcm1hdFJlYWN0aW9uTmFtZSxcbiAgICB2YWx1ZTogaXRlbVZhbHVlICE9PSB1bmRlZmluZWQgPyBmb3JtYXRWYWx1ZSA6IHVuZGVmaW5lZFxuICB9O1xuXG4gIC8vIENoZWNrIGZvciBkdXBsaWNhdGVzIGlmIG5vdCBhbGxvd2VkXG4gIGlmKCFhbGxvd0R1cGxpY2F0ZSkge1xuICAgIC8vIFF1ZXJ5XG4gICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgciBJTiBoYXNSZWFjdGlvblxuICAgICAgRklMVEVSIHIuX2Zyb20gPT0gJHtzZXNzaW9uRG9jSWR9ICYmIHIuX3RvID09ICR7Zm9ybWF0SXRlbUlkfSAmJiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRVRVUk4gcmA7XG5cbiAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAudGhlbigocmVhY3Rpb24pID0+IHtcbiAgICAgICAgaWYoISFyZWFjdGlvbikge1xuICAgICAgICAgIHJldHVybiByZWFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdhZGRSZWFjdGlvbjo6ZXJyb3InLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBlZGdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25JZDogc3RyaW5nID0gYGhhc1JlYWN0aW9uLyR7cGFyc2VJZChyZWFjdGlvbklkKX1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlUmVhY3Rpb25CeUl0ZW0gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZ1xuKTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVSZWFjdGlvbkJ5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGZvcm1hdEl0ZW1Eb2NJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHIgaW4gaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5fZnJvbSA9PSAke2Zvcm1hdFNlc3Npb25JZH0gJiYgci5fdG8gPT0gJHtmb3JtYXRJdGVtRG9jSWR9ICYmIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBMSU1JVCAxXG4gICAgUkVNT1ZFIHIgSU4gaGFzUmVhY3Rpb25cbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHJlYWN0aW9uOiBSZWFjdGlvbiA9IHt9KTogUHJvbWlzZTxSZWFjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVSZWFjdGlvbic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuXG4gIGlmKCFzZXNzaW9uSWQpIHtcbiAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICd1bmF1dGhvcml6ZWQnLFxuICAgICAgdmFsdWU6ICdpbnZhbGlkX3Nlc3Npb24nXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpZDogaXRlbUlkLFxuICAgIG5hbWU6IGl0ZW1OYW1lLFxuICAgIHZhbHVlOiBpdGVtVmFsdWVcbiAgfSA9IHJlYWN0aW9uO1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXROYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIoaXRlbU5hbWUsIDMyKTtcbiAgY29uc3QgZm9ybWF0VmFsdWU6IHN0cmluZyA9IHBhcnNlU3RyaW5nKGl0ZW1WYWx1ZSwgMzIpO1xuICBjb25zdCBlZGdlSWQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYHJlYWN0aW9uLSR7Zm9ybWF0SWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCB1cGRhdGU6IFJlYWN0aW9uID0ge1xuICAgIG5hbWU6IGZvcm1hdE5hbWUsXG4gICAgdmFsdWU6IGZvcm1hdFZhbHVlXG4gIH07XG4gIGNvbnN0IGluc2VydDogUmVhY3Rpb24gPSB7XG4gICAgLi4udXBkYXRlLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKVxuICB9O1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUICR7e19pZDogZm9ybWF0SWR9fVxuICAgIElOU0VSVCAke2luc2VydH1cbiAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogYW55ID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgIENPTExFQ1QgV0lUSCBDT1VOVCBJTlRPIGNvdW50XG4gICAgUkVUVVJOIGNvdW50YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gdW5kZWZpbmVkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25Db3VudEJ5VXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBhbnkgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaSwgciBJTiBJTkJPVU5EICR7Zm9ybWF0SXRlbUlkfSBoYXNSZWFjdGlvblxuICAgICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX0gJiYgci5fZnJvbSA9PSAke3Nlc3Npb25Eb2NJZH1cbiAgICAgIENPTExFQ1QgcmVhY3Rpb25WYWx1ZSA9IHIudmFsdWUgSU5UTyByZWFjdGlvbkl0ZW1zXG4gICAgICBSRVRVUk4gTUVSR0Uociwge2NvdW50OiBMRU5HVEgocmVhY3Rpb25JdGVtc1sqXS5yLnZhbHVlKX0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEdyb3VwVXNlcnNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3Qge2ZpbHRlcnMgPSBbXSwgaWQ6IGdyb3VwSWQsIHZhbHVlfTogVXNlclJlYWN0aW9uUXVlcnkgPSBwYXJhbXM7XG4gIGNvbnN0IHJlYWN0aW9uID0gcGFyc2VDaGFyKHZhbHVlLCAzMik7XG4gIGNvbnN0IGdyb3VwRG9jSWQgPSBwYXJzZUFyYW5nb0lkKGdyb3VwSWQpO1xuICBjb25zdCBmaWx0ZXJTdHI6IHN0cmluZyA9IGZpbHRlcnNcbiAgICAubWFwKChmaWx0ZXI6IFF1ZXJ5RmlsdGVyKSA9PiB7XG4gICAgICBjb25zdCB7Y29uZGl0aW9uYWwsIG5hbWUsIHZhbHVlOiBxdWVyeVZhbHVlfTogUXVlcnlGaWx0ZXIgPSBmaWx0ZXI7XG4gICAgICBsZXQgZmlsdGVyQ29uZDogc3RyaW5nID0gY29uZGl0aW9uYWw7XG5cbiAgICAgIGlmKGNvbmRpdGlvbmFsICE9PSAnPj0nICYmIGNvbmRpdGlvbmFsICE9PSAnPD0nICYmIGNvbmRpdGlvbmFsICE9PSAnPicgJiYgY29uZGl0aW9uYWwgIT09ICc8Jykge1xuICAgICAgICBmaWx0ZXJDb25kID0gJz09JztcbiAgICAgIH1cblxuICAgICAgc3dpdGNoKG5hbWUpIHtcbiAgICAgICAgY2FzZSAnYWRkZWQnOlxuICAgICAgICAgIHJldHVybiBgci5hZGRlZCAke2ZpbHRlckNvbmR9ICR7cGFyc2VOdW0ocXVlcnlWYWx1ZSl9YDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfSlcbiAgICAuY29uY2F0KFtcbiAgICAgIGByLnZhbHVlID09IFwiJHtyZWFjdGlvbn1cImAsXG4gICAgICAndS5faWQgPT0gci5fZnJvbSdcbiAgICBdKVxuICAgIC5qb2luKCcgJiYgJyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGcsIHIgSU4gSU5CT1VORCBcIiR7Z3JvdXBEb2NJZH1cIiBoYXNSZWFjdGlvblxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiAke2ZpbHRlclN0cn1cbiAgICAgIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlYWN0aW9uc0J5SXRlbSA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnNcbik6IFByb21pc2U8VXNlcltdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uc0J5SXRlbSc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25OYW1lOiBzdHJpbmcgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVJlYWN0aW9uT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gSU5CT1VORCBcIiR7Zm9ybWF0SXRlbUlkfVwiIGhhc1JlYWN0aW9uXG4gICAgRklMVEVSIHIubmFtZSA9PSBcIiR7Zm9ybWF0UmVhY3Rpb25OYW1lfVwiXG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKGksIHtyZWFjdGlvbjogcn0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEl0ZW1zQnlSZWFjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nLFxuICBvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnNcbik6IFByb21pc2U8UmVhY3Rpb25bXT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdnZXRJdGVtc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VSZWFjdGlvbk9wdGlvbnMob3B0aW9ucyk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIHUsIHIgSU4gT1VUQk9VTkQgXCIke2Zvcm1hdEl0ZW1JZH1cIiBoYXNSZWFjdGlvblxuICAgIEZJTFRFUiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKHUsIHtyZWFjdGlvbjogcn0pYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3I6IEFycmF5Q3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6ICdkYl9lcnJvcidcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc1JlYWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogUmVhY3Rpb25EaXJlY3Rpb24gPSAnT1VUQk9VTkQnXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnaGFzUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdERpcmVjdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdPVVRCT1VORCcgOiAnSU5CT1VORCc7XG4gIGNvbnN0IGl0ZW1EaXJlY3Rpb246IHN0cmluZyA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdyLl90bycgOiAnci5fZnJvbSc7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gJHtmb3JtYXREaXJlY3Rpb259IFwiJHtzZXNzaW9uRG9jSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtyZWFjdGlvbk5hbWV9XCIgJiYgJHtpdGVtRGlyZWN0aW9ufSA9PSBcIiR7Zm9ybWF0SXRlbUlkfVwiXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiByYDtcblxuICBjb25zb2xlLmxvZyh7YXFsUXJ5fSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcjogQXJyYXlDdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHJlYWN0aW9ucykgPT4gKHJlYWN0aW9ucyA/IHJlYWN0aW9ucy52YWx1ZSA9PT0gJ3RydWUnIDogZmFsc2UpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnZGJfZXJyb3InXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gZmFsc2UpKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLG1CQUFtRjtBQUNuRixzQkFBa0I7QUFNbEIsSUFBQUEsZ0JBQStDO0FBRS9DLE1BQU0sZ0JBQXdCO0FBcUJ2QixNQUFNLHVCQUF1QixDQUFDLFVBQTJCLENBQUMsTUFBTTtBQUNyRSxRQUFNO0FBQUEsSUFDSixPQUFPO0FBQUEsSUFDUCxLQUFLO0FBQUEsRUFDUCxJQUFJO0FBRUosU0FBTztBQUFBLElBQ0wsV0FBTyx3QkFBUyxNQUFNLEVBQUU7QUFBQSxFQUMxQjtBQUNGO0FBRU8sTUFBTSxjQUFjLENBQ3pCLFNBQ0EsUUFDQSxXQUFxQixDQUFDLEdBQ3RCLGlCQUEwQixVQUNKO0FBQ3RCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFVBQVUsU0FBUyxFQUFDLFFBQVEsVUFBUyxFQUFDLElBQUk7QUFFakQsTUFBRyxDQUFDLFdBQVc7QUFDYixlQUFPLDRCQUFhO0FBQUEsTUFDbEI7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxJQUNULEdBQUcsT0FBTyxFQUFFLEtBQUssTUFBTSxJQUFJO0FBQUEsRUFDN0I7QUFFQSxRQUFNO0FBQUEsSUFDSixNQUFNLFdBQVc7QUFBQSxJQUNqQixPQUFPO0FBQUEsRUFDVCxJQUFJO0FBQ0osUUFBTSxtQkFBdUIsNEJBQWMsTUFBTTtBQUNqRCxRQUFNLHlCQUE2Qix3QkFB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
|
|
322
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcmVhY3Rpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUFyYW5nb0lkLCBwYXJzZUNoYXIsIHBhcnNlSWQsIHBhcnNlTnVtLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHtnZXRMaW1pdH0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0LCBBcmFuZ29EYkNvbGxlY3Rpb24sIEFyYW5nb0RiTGltaXQsIFF1ZXJ5RmlsdGVyLCBVc2VyVHlwZSwgVXNlclJlYWN0aW9uUXVlcnl9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB0eXBlIHtFZGdlQ29sbGVjdGlvbn0gZnJvbSAnYXJhbmdvanMvY29sbGVjdGlvbnMnO1xuXG5jb25zdCBldmVudENhdGVnb3J5OiBzdHJpbmcgPSAncmVhY3Rpb25zJztcblxuZXhwb3J0IHR5cGUgUmVhY3Rpb25EaXJlY3Rpb24gPSAnSU5CT1VORCcgfCAnT1VUQk9VTkQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlYWN0aW9uIHtcbiAgcmVhZG9ubHkgX2Zyb20/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IF9rZXk/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IF90bz86IHN0cmluZztcbiAgcmVhZG9ubHkgYWRkZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvdW50PzogbnVtYmVyO1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgdHlwZT86IEFyYW5nb0RiQ29sbGVjdGlvbjtcbiAgcmVhZG9ubHkgdmFsdWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVhY3Rpb25PcHRpb25zIHtcbiAgcmVhZG9ubHkgZnJvbT86IG51bWJlcjtcbiAgcmVhZG9ubHkgdG8/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjb25zdCBwYXJzZVJlYWN0aW9uT3B0aW9ucyA9IChvcHRpb25zOiBSZWFjdGlvbk9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCB7XG4gICAgZnJvbSA9IDAsXG4gICAgdG8gPSAzMFxuICB9ID0gb3B0aW9ucztcblxuICByZXR1cm4ge1xuICAgIGxpbWl0OiBnZXRMaW1pdChmcm9tLCB0bykgYXMgQXJhbmdvRGJMaW1pdFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFJlYWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb246IFJlYWN0aW9uID0ge30sXG4gIGFsbG93RHVwbGljYXRlOiBib29sZWFuID0gZmFsc2Vcbik6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnYWRkUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgbmFtZTogaXRlbU5hbWUgPSAnbGlrZScsXG4gICAgdmFsdWU6IGl0ZW1WYWx1ZVxuICB9ID0gcmVhY3Rpb247XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihpdGVtTmFtZSwgMzIpO1xuICBjb25zdCBmb3JtYXRWYWx1ZTogc3RyaW5nID0gcGFyc2VTdHJpbmcoaXRlbVZhbHVlLCAzMik7XG4gIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oJ2hhc1JlYWN0aW9uJyk7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGVkZ2VJZDogc3RyaW5nID0gY3JlYXRlSGFzaChgcmVhY3Rpb24tJHtmb3JtYXRJdGVtSWR9LSR7c2Vzc2lvbklkfWApO1xuICBjb25zdCBlZGdlOiBSZWFjdGlvbiA9IHtcbiAgICBfZnJvbTogc2Vzc2lvbkRvY0lkLFxuICAgIF9rZXk6IGVkZ2VJZCxcbiAgICBfdG86IGZvcm1hdEl0ZW1JZCxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBuYW1lOiBmb3JtYXRSZWFjdGlvbk5hbWUsXG4gICAgdmFsdWU6IGl0ZW1WYWx1ZSAhPT0gdW5kZWZpbmVkID8gZm9ybWF0VmFsdWUgOiB1bmRlZmluZWRcbiAgfTtcblxuICAvLyBDaGVjayBmb3IgZHVwbGljYXRlcyBpZiBub3QgYWxsb3dlZFxuICBpZighYWxsb3dEdXBsaWNhdGUpIHtcbiAgICAvLyBRdWVyeVxuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIHIgSU4gaGFzUmVhY3Rpb25cbiAgICAgIEZJTFRFUiByLl9mcm9tID09ICR7c2Vzc2lvbkRvY0lkfSAmJiByLl90byA9PSAke2Zvcm1hdEl0ZW1JZH0gJiYgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHJgO1xuXG4gICAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAudGhlbigocmVhY3Rpb24pID0+IHtcbiAgICAgICAgaWYoISFyZWFjdGlvbikge1xuICAgICAgICAgIHJldHVybiByZWFjdGlvbjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdhZGRSZWFjdGlvbjo6ZXJyb3InLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICAgICAgfSk7XG4gIH1cblxuICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBlZGdlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25JZDogc3RyaW5nID0gYGhhc1JlYWN0aW9uLyR7cGFyc2VJZChyZWFjdGlvbklkKX1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHIgPSBET0NVTUVOVCgke2Zvcm1hdFJlYWN0aW9uSWR9KVxuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWxldGVSZWFjdGlvbkJ5SXRlbSA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlbGV0ZVJlYWN0aW9uQnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgaWYoIXNlc3Npb25JZCkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ3VuYXV0aG9yaXplZCcsXG4gICAgICB2YWx1ZTogJ2ludmFsaWRfc2Vzc2lvbidcbiAgICB9LCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0U2Vzc2lvbklkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgZm9ybWF0SXRlbURvY0lkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSk7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgciBpbiBoYXNSZWFjdGlvblxuICAgIEZJTFRFUiByLl9mcm9tID09ICR7Zm9ybWF0U2Vzc2lvbklkfSAmJiByLl90byA9PSAke2Zvcm1hdEl0ZW1Eb2NJZH0gJiYgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgIExJTUlUIDFcbiAgICBSRU1PVkUgciBJTiBoYXNSZWFjdGlvblxuICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVSZWFjdGlvbiA9IChjb250ZXh0OiBBcGlDb250ZXh0LCByZWFjdGlvbjogUmVhY3Rpb24gPSB7fSk6IFByb21pc2U8UmVhY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAndXBkYXRlUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgaWQ6IGl0ZW1JZCxcbiAgICBuYW1lOiBpdGVtTmFtZSxcbiAgICB2YWx1ZTogaXRlbVZhbHVlXG4gIH0gPSByZWFjdGlvbjtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlQXJhbmdvSWQoaXRlbUlkKTtcbiAgY29uc3QgZm9ybWF0TmFtZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1OYW1lLCAzMik7XG4gIGNvbnN0IGZvcm1hdFZhbHVlOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhpdGVtVmFsdWUsIDMyKTtcbiAgY29uc3QgZWRnZUlkOiBzdHJpbmcgPSBjcmVhdGVIYXNoKGByZWFjdGlvbi0ke2Zvcm1hdElkfS0ke3Nlc3Npb25JZH1gKTtcbiAgY29uc3QgdXBkYXRlOiBSZWFjdGlvbiA9IHtcbiAgICBuYW1lOiBmb3JtYXROYW1lLFxuICAgIHZhbHVlOiBmb3JtYXRWYWx1ZVxuICB9O1xuICBjb25zdCBpbnNlcnQ6IFJlYWN0aW9uID0ge1xuICAgIC4uLnVwZGF0ZSxcbiAgICBfa2V5OiBlZGdlSWQsXG4gICAgYWRkZWQ6IERhdGUubm93KClcbiAgfTtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCAke3tfaWQ6IGZvcm1hdElkfX1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudCA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldFJlYWN0aW9uQ291bnQnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdFJlYWN0aW9uTmFtZSA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBpLCByIElOIElOQk9VTkQgJHtmb3JtYXRJdGVtSWR9IGhhc1JlYWN0aW9uXG4gICAgRklMVEVSIHIubmFtZSA9PSAke2Zvcm1hdFJlYWN0aW9uTmFtZX1cbiAgICBDT0xMRUNUIFdJVEggQ09VTlQgSU5UTyBjb3VudFxuICAgIFJFVFVSTiBjb3VudGA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gdW5kZWZpbmVkKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVhY3Rpb25Db3VudEJ5VXNlciA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgaXRlbUlkOiBzdHJpbmcsXG4gIGl0ZW1UeXBlOiBzdHJpbmcsXG4gIHJlYWN0aW9uTmFtZTogc3RyaW5nXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFJlYWN0aW9uQ291bnRCeVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWUgPSBwYXJzZUNoYXIocmVhY3Rpb25OYW1lLCAzMik7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZCA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGksIHIgSU4gSU5CT1VORCAke2Zvcm1hdEl0ZW1JZH0gaGFzUmVhY3Rpb25cbiAgICAgIEZJTFRFUiByLm5hbWUgPT0gJHtmb3JtYXRSZWFjdGlvbk5hbWV9ICYmIHIuX2Zyb20gPT0gJHtzZXNzaW9uRG9jSWR9XG4gICAgICBDT0xMRUNUIHJlYWN0aW9uVmFsdWUgPSByLnZhbHVlIElOVE8gcmVhY3Rpb25JdGVtc1xuICAgICAgUkVUVVJOIE1FUkdFKHIsIHtjb3VudDogTEVOR1RIKHJlYWN0aW9uSXRlbXNbKl0uci52YWx1ZSl9KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyb3VwVXNlcnNCeVJlYWN0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBhcmFtczogVXNlclJlYWN0aW9uUXVlcnkgPSB7fSk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0R3JvdXBVc2Vyc0J5UmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICBpZighc2Vzc2lvbklkKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAndW5hdXRob3JpemVkJyxcbiAgICAgIHZhbHVlOiAnaW52YWxpZF9zZXNzaW9uJ1xuICAgIH0sIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gIH1cblxuICBjb25zdCB7ZmlsdGVycyA9IFtdLCBpZDogZ3JvdXBJZCwgdmFsdWV9OiBVc2VyUmVhY3Rpb25RdWVyeSA9IHBhcmFtcztcbiAgY29uc3QgcmVhY3Rpb24gPSBwYXJzZUNoYXIodmFsdWUsIDMyKTtcbiAgY29uc3QgZ3JvdXBEb2NJZCA9IHBhcnNlQXJhbmdvSWQoZ3JvdXBJZCk7XG4gIGNvbnN0IGZpbHRlclN0cjogc3RyaW5nID0gZmlsdGVyc1xuICAgIC5tYXAoKGZpbHRlcjogUXVlcnlGaWx0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHtjb25kaXRpb25hbCwgbmFtZSwgdmFsdWU6IHF1ZXJ5VmFsdWV9OiBRdWVyeUZpbHRlciA9IGZpbHRlcjtcbiAgICAgIGxldCBmaWx0ZXJDb25kOiBzdHJpbmcgPSBjb25kaXRpb25hbDtcblxuICAgICAgaWYoY29uZGl0aW9uYWwgIT09ICc+PScgJiYgY29uZGl0aW9uYWwgIT09ICc8PScgJiYgY29uZGl0aW9uYWwgIT09ICc+JyAmJiBjb25kaXRpb25hbCAhPT0gJzwnKSB7XG4gICAgICAgIGZpbHRlckNvbmQgPSAnPT0nO1xuICAgICAgfVxuXG4gICAgICBzd2l0Y2gobmFtZSkge1xuICAgICAgICBjYXNlICdhZGRlZCc6XG4gICAgICAgICAgcmV0dXJuIGByLmFkZGVkICR7ZmlsdGVyQ29uZH0gJHtwYXJzZU51bShxdWVyeVZhbHVlKX1gO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICB9KVxuICAgIC5jb25jYXQoW1xuICAgICAgYHIudmFsdWUgPT0gXCIke3JlYWN0aW9ufVwiYCxcbiAgICAgICd1Ll9pZCA9PSByLl9mcm9tJ1xuICAgIF0pXG4gICAgLmpvaW4oJyAmJiAnKTtcblxuICAvLyBRdWVyeVxuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgZywgciBJTiBJTkJPVU5EIFwiJHtncm91cERvY0lkfVwiIGhhc1JlYWN0aW9uXG4gICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgRklMVEVSICR7ZmlsdGVyU3RyfVxuICAgICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWFjdGlvbnNCeUl0ZW0gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0UmVhY3Rpb25zQnlJdGVtJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlUmVhY3Rpb25PcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgaSwgciBJTiBJTkJPVU5EIFwiJHtmb3JtYXRJdGVtSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtmb3JtYXRSZWFjdGlvbk5hbWV9XCJcbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gTUVSR0UoaSwge3JlYWN0aW9uOiByfSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gW10pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRJdGVtc0J5UmVhY3Rpb24gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIGl0ZW1JZDogc3RyaW5nLFxuICByZWFjdGlvbk5hbWU6IHN0cmluZyxcbiAgb3B0aW9uczogUmVhY3Rpb25PcHRpb25zXG4pOiBQcm9taXNlPFJlYWN0aW9uW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0SXRlbXNCeVJlYWN0aW9uJztcbiAgY29uc3Qge2RhdGFiYXNlfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdEl0ZW1JZDogc3RyaW5nID0gcGFyc2VBcmFuZ29JZChpdGVtSWQpO1xuICBjb25zdCBmb3JtYXRSZWFjdGlvbk5hbWU6IHN0cmluZyA9IHBhcnNlQ2hhcihyZWFjdGlvbk5hbWUsIDMyKTtcbiAgY29uc3Qge2xpbWl0fSA9IHBhcnNlUmVhY3Rpb25PcHRpb25zKG9wdGlvbnMpO1xuXG4gIC8vIFF1ZXJ5XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiB1LCByIElOIE9VVEJPVU5EIFwiJHtmb3JtYXRJdGVtSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09ICR7Zm9ybWF0UmVhY3Rpb25OYW1lfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFJFVFVSTiBNRVJHRSh1LCB7cmVhY3Rpb246IHJ9KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBbXSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhc1JlYWN0aW9uID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBpdGVtSWQ6IHN0cmluZyxcbiAgcmVhY3Rpb25OYW1lOiBzdHJpbmcsXG4gIGRpcmVjdGlvbjogUmVhY3Rpb25EaXJlY3Rpb24gPSAnT1VUQk9VTkQnXG4pOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnaGFzUmVhY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtzZXNzaW9uSWR9YDtcbiAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGl0ZW1JZCk7XG4gIGNvbnN0IGZvcm1hdERpcmVjdGlvbiA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdPVVRCT1VORCcgOiAnSU5CT1VORCc7XG4gIGNvbnN0IGl0ZW1EaXJlY3Rpb246IHN0cmluZyA9IGRpcmVjdGlvbiA9PT0gJ09VVEJPVU5EJyA/ICdyLl90bycgOiAnci5fZnJvbSc7XG5cbiAgLy8gUXVlcnlcbiAgY29uc3QgYXFsUXJ5OiBzdHJpbmcgPSBgRk9SIGksIHIgSU4gJHtmb3JtYXREaXJlY3Rpb259IFwiJHtzZXNzaW9uRG9jSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBGSUxURVIgci5uYW1lID09IFwiJHtyZWFjdGlvbk5hbWV9XCIgJiYgJHtpdGVtRGlyZWN0aW9ufSA9PSBcIiR7Zm9ybWF0SXRlbUlkfVwiXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiByYDtcblxuICBjb25zb2xlLmxvZyh7YXFsUXJ5fSk7XG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigocmVhY3Rpb25zKSA9PiAocmVhY3Rpb25zID8gcmVhY3Rpb25zLnZhbHVlID09PSAndHJ1ZScgOiBmYWxzZSkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBmYWxzZSkpO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBSUEsbUJBQW1GO0FBQ25GLHNCQUFrQjtBQUdsQixtQkFBeUI7QUFDekIsNEJBQXFDO0FBQ3JDLDJCQUF1QjtBQUt2QixNQUFNLGdCQUF3QjtBQXFCdkIsTUFBTSx1QkFBdUIsQ0FBQyxVQUEyQixDQUFDLE1BQU07QUFDckUsUUFBTTtBQUFBLElBQ0osT0FBTztBQUFBLElBQ1AsS0FBSztBQUFBLEVBQ1AsSUFBSTtBQUVKLFNBQU87QUFBQSxJQUNMLFdBQU8sK0JBQVMsTUFBTSxFQUFFO0FBQUEsRUFDMUI7QUFDRjtBQUVPLE1BQU0sY0FBYyxDQUN6QixTQUNBLFFBQ0EsV0FBcUIsQ0FBQyxHQUN0QixpQkFBMEIsVUFDSjtBQUN0QixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxVQUFVLFNBQVMsRUFBQyxRQUFRLFVB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QUMsY0FBaUIsZ0NBQVM7QUFBQSxJQUNoQztBQUFBLElBQ0EsVUFBVTtBQUFBLElBQ1YsT0FBTyx3QkFBVztBQUFBLEVBQ3BCLEdBQUcsT0FBTyxPQUFPLEVBQUUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3JDO0FBRU8sTUFBTSxxQkFBcUIsQ0FDaEMsU0FDQSxRQUNBLGNBQ0EsWUFDd0I7QUFDeEIsUUFBTSxTQUFpQjtBQUN2QixRQUFNLEVBQUMsU0FBUSxJQUFJO0FBQ25CLFFBQU0sbUJBQXVCLDRCQUFjLE1BQU07QUFDakQsUUFBTSx5QkFBNkIsd0JBQVUsY0FBYyxFQUFFO0FBQzdELFFBQU0sRUFBQyxNQUFLLElBQUkscUJBQXFCLE9BQU87QUFHNUMsUUFBTSxTQUFpQix5QkFBeUIsWUFBWTtBQUFBLHVCQUN2QyxrQkFBa0I7QUFBQSxNQUNuQyxNQUFNLEdBQUc7QUFBQTtBQUdiLFNBQU8sU0FBUyxNQUFNLE1BQU0sRUFDekIsS0FBSyxDQUFDLFdBQVcsT0FBTyxJQUFJLENBQUMsRUFDN0IsTUFBTSxDQUFDLGNBQWlCLGdDQUFTO0FBQUEsSUFDaEM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLE9BQU8sd0JBQVc7QUFBQSxFQUNwQixHQUFHLE9BQU8sT0FBTyxFQUFFLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztBQUNyQztBQUVPLE1BQU0sY0FBYyxDQUN6QixTQUNBLFFBQ0EsY0FDQSxZQUErQixlQUNWO0FBQ3JCLFFBQU0sU0FBaUI7QUFDdkIsUUFBTSxFQUFDLFVBQVUsU0FBUyxFQUFDLFFBQVEsVUFBUyxFQUFDLElBQUk7QUFDakQsUUFBTSxlQUF1QixTQUFTLFNBQVM7QUFDL0MsUUFBTSxtQkFBdUIsNEJBQWMsTUFBTTtBQUNqRCxRQUFNLGtCQUFrQixjQUFjLGFBQWEsYUFBYTtBQUNoRSxRQUFNLGdCQUF3QixjQUFjLGFBQWEsVUFBVTtBQUduRSxRQUFNLFNBQWlCLGVBQWUsZUFBZSxLQUFLLFlBQVk7QUFBQSx3QkFDaEQsWUFBWSxRQUFRLGFBQWEsUUFBUSxZQUFZO0FBQUE7QUFBQTtBQUkzRSxVQUFRLElBQUksRUFBQyxPQUFNLENBQUM7QUFDcEIsU0FBTyxTQUFTLE1BQU0sTUFBTSxFQUN6QixLQUFLLENBQUMsV0FBVyxPQUFPLEtBQUssQ0FBQyxFQUM5QixLQUFLLENBQUMsY0FBZSxZQUFZLFVBQVUsVUFBVSxTQUFTLEtBQU0sRUFDcEUsTUFBTSxDQUFDLGNBQWlCLGdDQUFTO0FBQUEsSUFDaEM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLE9BQU8sd0JBQVc7QUFBQSxFQUNwQixHQUFHLE9BQU8sT0FBTyxFQUFFLEtBQUssTUFBTSxLQUFLLENBQUM7QUFDeEM7IiwKICAibmFtZXMiOiBbInJlYWN0aW9uIl0KfQo=
|
package/lib/actions/s3.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const s3Get: (params:
|
|
3
|
-
export declare const s3Head: (params:
|
|
4
|
-
export declare const s3Put: (params:
|
|
5
|
-
export declare const s3Delete: (params:
|
|
6
|
-
export declare const s3DeleteList: (params:
|
|
7
|
-
export declare const s3GetSignedUrl: (params?: any) => string
|
|
1
|
+
import { DeleteObjectCommandInput, DeleteObjectCommandOutput, DeleteObjectsCommandInput, DeleteObjectsCommandOutput, GetObjectCommandInput, GetObjectCommandOutput, HeadObjectCommandInput, HeadObjectCommandOutput, PutObjectCommandInput, PutObjectCommandOutput } from '@aws-sdk/client-s3';
|
|
2
|
+
export declare const s3Get: (params: GetObjectCommandInput) => Promise<GetObjectCommandOutput>;
|
|
3
|
+
export declare const s3Head: (params: HeadObjectCommandInput) => Promise<HeadObjectCommandOutput>;
|
|
4
|
+
export declare const s3Put: (params: PutObjectCommandInput) => Promise<PutObjectCommandOutput>;
|
|
5
|
+
export declare const s3Delete: (params: DeleteObjectCommandInput) => Promise<DeleteObjectCommandOutput>;
|
|
6
|
+
export declare const s3DeleteList: (params: DeleteObjectsCommandInput) => Promise<DeleteObjectsCommandOutput>;
|
|
7
|
+
export declare const s3GetSignedUrl: (params?: any) => Promise<string>;
|
package/lib/actions/s3.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
1
|
var __defProp = Object.defineProperty;
|
|
3
2
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
4
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
5
|
var __export = (target, all) => {
|
|
8
6
|
for (var name in all)
|
|
@@ -16,14 +14,6 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
14
|
}
|
|
17
15
|
return to;
|
|
18
16
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
-
mod
|
|
26
|
-
));
|
|
27
17
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
18
|
var s3_exports = {};
|
|
29
19
|
__export(s3_exports, {
|
|
@@ -35,13 +25,16 @@ __export(s3_exports, {
|
|
|
35
25
|
s3Put: () => s3Put
|
|
36
26
|
});
|
|
37
27
|
module.exports = __toCommonJS(s3_exports);
|
|
38
|
-
var
|
|
28
|
+
var import_client_s3 = require("@aws-sdk/client-s3");
|
|
29
|
+
var import_s3_request_presigner = require("@aws-sdk/s3-request-presigner");
|
|
39
30
|
var import_config = require("../config");
|
|
40
31
|
const s3Get = (params) => new Promise((resolve, reject) => {
|
|
41
|
-
|
|
42
|
-
|
|
32
|
+
const s3 = new import_client_s3.S3({
|
|
33
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
34
|
+
region: import_config.Config.get("aws.region")
|
|
35
|
+
});
|
|
43
36
|
if (!params.Bucket) {
|
|
44
|
-
params.Bucket = import_config.Config.get("aws.
|
|
37
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
45
38
|
}
|
|
46
39
|
s3.getObject(params, (error, output) => {
|
|
47
40
|
if (error) {
|
|
@@ -51,10 +44,12 @@ const s3Get = (params) => new Promise((resolve, reject) => {
|
|
|
51
44
|
});
|
|
52
45
|
});
|
|
53
46
|
const s3Head = (params) => new Promise((resolve, reject) => {
|
|
54
|
-
|
|
55
|
-
|
|
47
|
+
const s3 = new import_client_s3.S3({
|
|
48
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
49
|
+
region: import_config.Config.get("aws.region")
|
|
50
|
+
});
|
|
56
51
|
if (!params.Bucket) {
|
|
57
|
-
params.Bucket = import_config.Config.get("aws.
|
|
52
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
58
53
|
}
|
|
59
54
|
s3.headObject(params, (error, output) => {
|
|
60
55
|
if (error) {
|
|
@@ -64,10 +59,12 @@ const s3Head = (params) => new Promise((resolve, reject) => {
|
|
|
64
59
|
});
|
|
65
60
|
});
|
|
66
61
|
const s3Put = (params) => new Promise((resolve, reject) => {
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
const s3 = new import_client_s3.S3({
|
|
63
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
64
|
+
region: import_config.Config.get("aws.region")
|
|
65
|
+
});
|
|
69
66
|
if (!params.Bucket) {
|
|
70
|
-
params.Bucket = import_config.Config.get("aws.
|
|
67
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
71
68
|
}
|
|
72
69
|
if (!params.StorageClass) {
|
|
73
70
|
params.StorageClass = "REDUCED_REDUNDANCY";
|
|
@@ -80,10 +77,12 @@ const s3Put = (params) => new Promise((resolve, reject) => {
|
|
|
80
77
|
});
|
|
81
78
|
});
|
|
82
79
|
const s3Delete = (params) => new Promise((resolve, reject) => {
|
|
83
|
-
|
|
84
|
-
|
|
80
|
+
const s3 = new import_client_s3.S3({
|
|
81
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
82
|
+
region: import_config.Config.get("aws.region")
|
|
83
|
+
});
|
|
85
84
|
if (!params.Bucket) {
|
|
86
|
-
params.Bucket = import_config.Config.get("aws.
|
|
85
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
87
86
|
}
|
|
88
87
|
s3.deleteObject(params, (error, output) => {
|
|
89
88
|
if (error) {
|
|
@@ -93,10 +92,12 @@ const s3Delete = (params) => new Promise((resolve, reject) => {
|
|
|
93
92
|
});
|
|
94
93
|
});
|
|
95
94
|
const s3DeleteList = (params) => new Promise((resolve, reject) => {
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
const s3 = new import_client_s3.S3({
|
|
96
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
97
|
+
region: import_config.Config.get("aws.region")
|
|
98
|
+
});
|
|
98
99
|
if (!params.Bucket) {
|
|
99
|
-
params.Bucket = import_config.Config.get("aws.
|
|
100
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
100
101
|
}
|
|
101
102
|
s3.deleteObjects(params, (error, output) => {
|
|
102
103
|
if (error) {
|
|
@@ -105,16 +106,20 @@ const s3DeleteList = (params) => new Promise((resolve, reject) => {
|
|
|
105
106
|
return resolve(output);
|
|
106
107
|
});
|
|
107
108
|
});
|
|
108
|
-
const s3GetSignedUrl = (params = {}) => {
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
const s3GetSignedUrl = async (params = {}) => {
|
|
110
|
+
const s3 = new import_client_s3.S3({
|
|
111
|
+
credentials: import_config.Config.get("aws.credentials"),
|
|
112
|
+
region: import_config.Config.get("aws.region")
|
|
113
|
+
});
|
|
111
114
|
if (!params.Expires) {
|
|
112
115
|
params.Expires = 12 * 60 * 60;
|
|
113
116
|
}
|
|
114
117
|
if (!params.Bucket) {
|
|
115
|
-
params.Bucket = import_config.Config.get("aws.
|
|
118
|
+
params.Bucket = import_config.Config.get("aws.s3.bucket");
|
|
116
119
|
}
|
|
117
|
-
return
|
|
120
|
+
return await (0, import_s3_request_presigner.getSignedUrl)(s3, new import_client_s3.GetObjectCommand(params), {
|
|
121
|
+
expiresIn: params.Expires
|
|
122
|
+
});
|
|
118
123
|
};
|
|
119
124
|
// Annotate the CommonJS export names for ESM import in node:
|
|
120
125
|
0 && (module.exports = {
|
|
@@ -125,4 +130,4 @@ const s3GetSignedUrl = (params = {}) => {
|
|
|
125
130
|
s3Head,
|
|
126
131
|
s3Put
|
|
127
132
|
});
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvczMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBEZWxldGVPYmplY3RDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdENvbW1hbmRPdXRwdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQsXG4gIERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0LFxuICBHZXRPYmplY3RDb21tYW5kLFxuICBHZXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIEdldE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIEhlYWRPYmplY3RDb21tYW5kSW5wdXQsXG4gIEhlYWRPYmplY3RDb21tYW5kT3V0cHV0LFxuICBQdXRPYmplY3RDb21tYW5kSW5wdXQsXG4gIFB1dE9iamVjdENvbW1hbmRPdXRwdXQsXG4gIFMzXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5pbXBvcnQge2dldFNpZ25lZFVybH0gZnJvbSAnQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXInO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcblxuLy8gY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ3MzJztcbmV4cG9ydCBjb25zdCBzM0dldCA9IChwYXJhbXM6IEdldE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8R2V0T2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMyh7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuczMuYnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuZ2V0T2JqZWN0KHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBHZXRPYmplY3RDb21tYW5kT3V0cHV0KSA9PiB7XG4gICAgICBpZihlcnJvcikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM0hlYWQgPSAocGFyYW1zOiBIZWFkT2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxIZWFkT2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzOiBTMyA9IG5ldyBTMyh7XG4gICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICAgIH0pO1xuXG4gICAgaWYoIXBhcmFtcy5CdWNrZXQpIHtcbiAgICAgIHBhcmFtcy5CdWNrZXQgPSBDb25maWcuZ2V0KCdhd3MuczMuYnVja2V0Jyk7XG4gICAgfVxuXG4gICAgczMuaGVhZE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogSGVhZE9iamVjdENvbW1hbmRPdXRwdXQpID0+IHtcbiAgICAgIGlmKGVycm9yKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyb3IpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc29sdmUob3V0cHV0KTtcbiAgICB9KTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBzM1B1dCA9IChwYXJhbXM6IFB1dE9iamVjdENvbW1hbmRJbnB1dCk6IFByb21pc2U8UHV0T2JqZWN0Q29tbWFuZE91dHB1dD4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHMzID0gbmV3IFMzKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5zMy5idWNrZXQnKTtcbiAgICB9XG5cbiAgICBpZighcGFyYW1zLlN0b3JhZ2VDbGFzcykge1xuICAgICAgcGFyYW1zLlN0b3JhZ2VDbGFzcyA9ICdSRURVQ0VEX1JFRFVOREFOQ1knO1xuICAgIH1cblxuICAgIHMzLnB1dE9iamVjdChwYXJhbXMsIChlcnJvcjogRXJyb3IsIG91dHB1dDogUHV0T2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlID0gKHBhcmFtczogRGVsZXRlT2JqZWN0Q29tbWFuZElucHV0KTogUHJvbWlzZTxEZWxldGVPYmplY3RDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gbmV3IFMzKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5zMy5idWNrZXQnKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3QocGFyYW1zLCAoZXJyb3IsIG91dHB1dDogRGVsZXRlT2JqZWN0Q29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzRGVsZXRlTGlzdCA9IChwYXJhbXM6IERlbGV0ZU9iamVjdHNDb21tYW5kSW5wdXQpOiBQcm9taXNlPERlbGV0ZU9iamVjdHNDb21tYW5kT3V0cHV0PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczM6IFMzID0gbmV3IFMzKHtcbiAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgfSk7XG5cbiAgICBpZighcGFyYW1zLkJ1Y2tldCkge1xuICAgICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5zMy5idWNrZXQnKTtcbiAgICB9XG5cbiAgICBzMy5kZWxldGVPYmplY3RzKHBhcmFtcywgKGVycm9yOiBFcnJvciwgb3V0cHV0OiBEZWxldGVPYmplY3RzQ29tbWFuZE91dHB1dCkgPT4ge1xuICAgICAgaWYoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuZXhwb3J0IGNvbnN0IHMzR2V0U2lnbmVkVXJsID0gYXN5bmMgKHBhcmFtczogYW55ID0ge30pOiBQcm9taXNlPHN0cmluZz4gPT4ge1xuICBjb25zdCBzMzogUzMgPSBuZXcgUzMoe1xuICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICByZWdpb246IENvbmZpZy5nZXQoJ2F3cy5yZWdpb24nKVxuICB9KTtcblxuICBpZighcGFyYW1zLkV4cGlyZXMpIHtcbiAgICBwYXJhbXMuRXhwaXJlcyA9IDEyICogNjAgKiA2MDtcbiAgfVxuXG4gIGlmKCFwYXJhbXMuQnVja2V0KSB7XG4gICAgcGFyYW1zLkJ1Y2tldCA9IENvbmZpZy5nZXQoJ2F3cy5zMy5idWNrZXQnKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBnZXRTaWduZWRVcmwoczMsIG5ldyBHZXRPYmplY3RDb21tYW5kKHBhcmFtcyksIHtcbiAgICBleHBpcmVzSW46IHBhcmFtcy5FeHBpcmVzXG4gIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFJQSx1QkFhTztBQUNQLGtDQUEyQjtBQUUzQixvQkFBcUI7QUFHZCxNQUFNLFFBQVEsQ0FBQyxXQUNwQixJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFDL0IsUUFBTSxLQUFTLElBQUksb0JBQUc7QUFBQSxJQUNwQixhQUFhLHFCQUFPLElBQUksaUJBQWlCO0FBQUEsSUFDekMsUUFBUSxxQkFBTyxJQUFJLFlBQVk7QUFBQSxFQUNqQyxDQUFDO0FBRUQsTUFBRyxDQUFDLE9BQU8sUUFBUTtBQUNqQixXQUFPLFNBQVMscUJBQU8sSUFBSSxlQUFlO0FBQUEsRUFDNUM7QUFFQSxLQUFHLFVBQVUsUUFBUSxDQUFDLE9BQWMsV0FBbUM7QUFDckUsUUFBRyxPQUFPO0FBQ1IsYUFBTyxPQUFPLEtBQUs7QUFBQSxJQUNyQjtBQUVBLFdBQU8sUUFBUSxNQUFNO0FBQUEsRUFDdkIsQ0FBQztBQUNILENBQUM7QUFFSSxNQUFNLFNBQVMsQ0FBQyxXQUNyQixJQUFJLFFBQVEsQ0FBQyxTQUFTLFdBQVc7QUFD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
|
package/lib/actions/search.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ApiContext } from '../types/auth';
|
|
2
|
-
import {
|
|
3
|
-
export declare const getSearchList: (context: ApiContext, query: string, from: number, to: number) => Promise<
|
|
1
|
+
import type { ApiContext } from '../types/auth.types';
|
|
2
|
+
import type { UserType } from '../types/users.types';
|
|
3
|
+
export declare const getSearchList: (context: ApiContext, query: string, from: number, to: number) => Promise<UserType[]>;
|
package/lib/actions/search.js
CHANGED
|
@@ -31,10 +31,12 @@ __export(search_exports, {
|
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(search_exports);
|
|
33
33
|
var import_arangojs = require("arangojs");
|
|
34
|
-
var import_flatten = __toESM(require("lodash/flatten"));
|
|
35
|
-
var import_uniqBy = __toESM(require("lodash/uniqBy"));
|
|
36
|
-
var
|
|
37
|
-
var
|
|
34
|
+
var import_flatten = __toESM(require("lodash/flatten"), 1);
|
|
35
|
+
var import_uniqBy = __toESM(require("lodash/uniqBy"), 1);
|
|
36
|
+
var import_users = require("./users");
|
|
37
|
+
var import_error = require("../types/error.types");
|
|
38
|
+
var import_analyticsUtils = require("../utils/analyticsUtils");
|
|
39
|
+
var import_arangodbUtils = require("../utils/arangodbUtils");
|
|
38
40
|
const eventCategory = "search";
|
|
39
41
|
const getSearchList = (context, query, from, to) => {
|
|
40
42
|
const action = "getList";
|
|
@@ -58,26 +60,26 @@ const getSearchList = (context, query, from, to) => {
|
|
|
58
60
|
const { _id: itemId, name: itemName } = item;
|
|
59
61
|
const collectionIdList = itemId.split("/");
|
|
60
62
|
const collection = collectionIdList[0];
|
|
61
|
-
const name = collection === "users" ? (0,
|
|
63
|
+
const name = collection === "users" ? (0, import_users.getDisplayName)(item) : itemName;
|
|
62
64
|
return { ...item, name };
|
|
63
65
|
});
|
|
64
66
|
});
|
|
65
67
|
}
|
|
66
|
-
const limit = (0,
|
|
68
|
+
const limit = (0, import_arangodbUtils.getLimit)(from, to);
|
|
67
69
|
const aqlQry = `FOR u IN users
|
|
68
70
|
FILTER u.phone == "${query}"
|
|
69
71
|
${limit.aql}
|
|
70
72
|
RETURN u`;
|
|
71
|
-
return database.query(aqlQry).then((cursor) => cursor.all()).then((list = []) => list.map((item
|
|
73
|
+
return database.query(aqlQry).then((cursor) => cursor.all()).then((list = []) => list.map((item) => {
|
|
72
74
|
const { _id: itemId, name: itemName } = item;
|
|
73
75
|
const collectionIdList = itemId.split("/");
|
|
74
76
|
const collection = collectionIdList[0];
|
|
75
|
-
const name = collection === "users" ? (0,
|
|
77
|
+
const name = collection === "users" ? (0, import_users.getDisplayName)(item) : itemName;
|
|
76
78
|
return { ...item, name };
|
|
77
|
-
})).catch((error) => (0,
|
|
79
|
+
})).catch((error) => (0, import_analyticsUtils.logException)({
|
|
78
80
|
action,
|
|
79
81
|
category: eventCategory,
|
|
80
|
-
label:
|
|
82
|
+
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
81
83
|
value: error.message
|
|
82
84
|
}, context).then(() => null));
|
|
83
85
|
};
|
|
@@ -85,4 +87,4 @@ const getSearchList = (context, query, from, to) => {
|
|
|
85
87
|
0 && (module.exports = {
|
|
86
88
|
getSearchList
|
|
87
89
|
});
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvc2VhcmNoLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgZmxhdHRlbiBmcm9tICdsb2Rhc2gvZmxhdHRlbic7XG5pbXBvcnQgdW5pcUJ5IGZyb20gJ2xvZGFzaC91bmlxQnknO1xuXG5pbXBvcnQge2dldERpc3BsYXlOYW1lfSBmcm9tICcuL3VzZXJzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtsb2dFeGNlcHRpb259IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0TGltaXR9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJMaW1pdH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMnO1xuaW1wb3J0IHR5cGUge1VzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdzZWFyY2gnO1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoTGlzdCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBxdWVyeTogc3RyaW5nLCBmcm9tOiBudW1iZXIsIHRvOiBudW1iZXIpOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0TGlzdCc7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCBpc1N0cmluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgaWYoaXNTdHJpbmcpIHtcbiAgICBjb25zdCBmaWVsZHM6IHtjb2xsZWN0aW9uOiBzdHJpbmcsIGZpZWxkOiBzdHJpbmd9W10gPSBbXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICdmaXJzdCd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnbGFzdCd9LFxuICAgICAge2NvbGxlY3Rpb246ICd1c2VycycsIGZpZWxkOiAnZW1haWwnfSxcbiAgICAgIHtjb2xsZWN0aW9uOiAndXNlcnMnLCBmaWVsZDogJ3VzZXJuYW1lJ30sXG4gICAgICB7Y29sbGVjdGlvbjogJ3VzZXJzJywgZmllbGQ6ICduYW1lJ31cbiAgICBdO1xuXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGZpZWxkcy5tYXAoKG9iaikgPT4ge1xuICAgICAgY29uc3QgcXJ5OiBzdHJpbmcgPSBgcHJlZml4OiR7cXVlcnl9YDtcbiAgICAgIGNvbnN0IHVzZXJRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB1IElOIEZVTExURVhUKCR7b2JqLmNvbGxlY3Rpb259LCAke29iai5maWVsZH0sICR7cXJ5fSwgNTApIFJFVFVSTiB1YDtcbiAgICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeSh1c2VyUXJ5KS50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSk7XG4gICAgfSkpXG4gICAgICAudGhlbigocmVzdWx0cykgPT4ge1xuICAgICAgICBjb25zdCBsaXN0ID0gdW5pcUJ5KGZsYXR0ZW4ocmVzdWx0cyksICdfa2V5Jyk7XG5cbiAgICAgICAgcmV0dXJuIGxpc3QubWFwKChpdGVtOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHtfaWQ6IGl0ZW1JZCwgbmFtZTogaXRlbU5hbWV9ID0gaXRlbTtcbiAgICAgICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZC5zcGxpdCgnLycpO1xuICAgICAgICAgIGNvbnN0IGNvbGxlY3Rpb246IHN0cmluZyA9IGNvbGxlY3Rpb25JZExpc3RbMF07XG4gICAgICAgICAgY29uc3QgbmFtZTogc3RyaW5nID0gY29sbGVjdGlvbiA9PT0gJ3VzZXJzJyA/IGdldERpc3BsYXlOYW1lKGl0ZW0pIDogaXRlbU5hbWU7XG5cbiAgICAgICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiB1IElOIHVzZXJzXG4gICAgICAgIEZJTFRFUiB1LnBob25lID09IFwiJHtxdWVyeX1cIlxuICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBVc2VyVHlwZVtdID0gW10pID0+IGxpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB7X2lkOiBpdGVtSWQsIG5hbWU6IGl0ZW1OYW1lfSA9IGl0ZW07XG4gICAgICBjb25zdCBjb2xsZWN0aW9uSWRMaXN0OiBzdHJpbmdbXSA9IGl0ZW1JZC5zcGxpdCgnLycpO1xuICAgICAgY29uc3QgY29sbGVjdGlvbjogc3RyaW5nID0gY29sbGVjdGlvbklkTGlzdFswXTtcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IGNvbGxlY3Rpb24gPT09ICd1c2VycycgPyBnZXREaXNwbGF5TmFtZShpdGVtKSA6IGl0ZW1OYW1lO1xuXG4gICAgICByZXR1cm4gey4uLml0ZW0sIG5hbWV9O1xuICAgIH0pKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgIHZhbHVlOiBlcnJvci5tZXNzYWdlXG4gICAgfSwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUlBLHNCQUFrQjtBQUVsQixxQkFBb0I7QUFDcEIsb0JBQW1CO0FBRW5CLG1CQUE2QjtBQUM3QixtQkFBeUI7QUFDekIsNEJBQTJCO0FBQzNCLDJCQUF1QjtBQU12QixNQUFNLGdCQUF3QjtBQUV2QixNQUFNLGdCQUFnQixDQUFDLFNBQXFCLE9BQWUsTUFBYyxPQUFvQztBQUNsSCxRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxTQUFRLElBQUk7QUFDbkIsUUFBTSxXQUFvQjtBQUUxQixNQUFHLFVBQVU7QUFDWCxVQUFNLFNBQWdEO0FBQUEsTUFDcEQsRUFBQyxZQUFZLFNBQVMsT0FBTyxRQUFPO0FBQUEsTUFDcEMsRUFBQyxZQUFZLFNBQVMsT0FBTyxPQUFNO0FBQUEsTUFDbkMsRUFBQyxZQUFZLFNBQVMsT0FBTyxRQUFPO0FBQUEsTUFDcEMsRUFBQyxZQUFZLFNBQVMsT0FBTyxXQUFVO0FBQUEsTUFDdkMsRUFBQyxZQUFZLFNBQVMsT0FBTyxPQUFNO0FBQUEsSUFDckM7QUFFQSxXQUFPLFFBQVEsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRO0FBQ3JDLFlBQU0sTUFBYyxVQUFVLEtBQUs7QUFDbkMsWUFBTSxVQUFvQix3Q0FBd0IsSUFBSSxVQUFVLEtBQUssSUFBSSxLQUFLLEtBQUssR0FBRztBQUN0RixhQUFPLFNBQVMsTUFBTSxPQUFPLEVBQUUsS0FBSyxDQUFDLFdBQVcsT0FBTyxJQUFJLENBQUM7QUFBQSxJQUM5RCxDQUFDLENBQUMsRUFDQyxLQUFLLENBQUMsWUFBWTtBQUNqQixZQUFNLFdBQU8sY0FBQUEsYUFBTyxlQUFBQyxTQUFRLE9BQU8sR0FBRyxNQUFNO0FBRTVDLGFBQU8sS0FBSyxJQUFJLENBQUMsU0FBbUI7QUFDbEMsY0FBTSxFQUFDLEtBQUssUUFBUSxNQUFNLFNBQVEsSUFBSTtBQUN0QyxjQUFNLG1CQUE2QixPQUFPLE1BQU0sR0FBRztBQUNuRCxjQUFNLGFBQXFCLGlCQUFpQixDQUFDO0FBQzdDLGNBQU0sT0FBZSxlQUFlLGNBQVUsNkJBQWUsSUFBSSxJQUFJO0FBRXJFLGVBQU8sRUFBQyxHQUFHLE1BQU0sS0FBSTtBQUFBLE1BQ3ZCLENBQUM7QUFBQSxJQUNILENBQUM7QUFBQSxFQUNMO0FBRUEsUUFBTSxZQUF1QiwrQkFBUyxNQUFNLEVBQUU7QUFDOUMsUUFBTSxTQUFpQjtBQUFBLDZCQUNJLEtBQUs7QUFBQSxVQUN4QixNQUFNLEdBQUc7QUFBQTtBQUdqQixTQUFPLFNBQVMsTUFBTSxNQUFNLEVBQ3pCLEtBQUssQ0FBQyxXQUFXLE9BQU8sSUFBSSxDQUFDLEVBQzdCLEtBQUssQ0FBQyxPQUFtQixDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsU0FBUztBQUNsRCxVQUFNLEVBQUMsS0FBSyxRQUFRLE1BQU0sU0FBUSxJQUFJO0FBQ3RDLFVBQU0sbUJBQTZCLE9BQU8sTUFBTSxHQUFHO0FBQ25ELFVBQU0sYUFBcUIsaUJBQWlCLENBQUM7QUFDN0MsVUFBTSxPQUFlLGVBQWUsY0FBVSw2QkFBZSxJQUFJLElBQUk7QUFFckUsV0FBTyxFQUFDLEdBQUcsTUFBTSxLQUFJO0FBQUEsRUFDdkIsQ0FBQyxDQUFDLEVBQ0QsTUFBTSxDQUFDLGNBQWlCLG9DQUFhO0FBQUEsSUFDcEM7QUFBQSxJQUNBLFVBQVU7QUFBQSxJQUNWLE9BQU8sd0JBQVc7QUFBQSxJQUNsQixPQUFPLE1BQU07QUFBQSxFQUNmLEdBQUcsT0FBTyxFQUFFLEtBQUssTUFBTSxJQUFJLENBQUM7QUFDaEM7IiwKICAibmFtZXMiOiBbInVuaXFCeSIsICJmbGF0dGVuIl0KfQo=
|