@nlabs/reaktor 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/actions/index.html +21 -36
- package/coverage/actions/notifications.ts.html +223 -0
- package/coverage/actions/posts.ts.html +2356 -0
- package/coverage/adapters/arangoAdapter.ts.html +170 -20
- package/coverage/adapters/fileAdapter.ts.html +445 -0
- package/coverage/adapters/index.html +72 -42
- package/coverage/adapters/postAdapter.ts.html +436 -0
- package/coverage/adapters/reaktorAdapter.ts.html +201 -18
- package/coverage/adapters/tagAdapter.ts.html +274 -25
- package/coverage/adapters/userAdapter.ts.html +829 -0
- package/coverage/analyticsUtils.ts.html +286 -0
- package/coverage/config.ts.html +766 -0
- package/coverage/index.html +81 -51
- package/coverage/mocks/group.ts.html +5 -5
- package/coverage/mocks/image.ts.html +18 -12
- package/coverage/mocks/index.html +37 -7
- package/coverage/mocks/post.ts.html +8 -8
- package/coverage/mocks/tag.ts.html +2 -2
- package/coverage/mocks/user.ts.html +18 -15
- package/coverage/testUtils.ts.html +1309 -0
- package/coverage/translationQueue.ts.html +592 -0
- package/coverage/types/error.types.ts.html +148 -0
- package/coverage/types/index.html +2 -2
- package/coverage/utils/adapterUtils.ts.html +39 -27
- package/coverage/utils/analyticsUtils.ts.html +35 -41
- package/coverage/utils/authUtils.ts.html +328 -0
- package/coverage/utils/dbI18n.ts.html +280 -0
- package/coverage/utils/googleTranslate.ts.html +385 -0
- package/coverage/utils/index.html +29 -44
- package/coverage/utils/localeUtils.ts.html +193 -0
- package/coverage/utils/sessionUtils.ts.html +211 -0
- package/coverage/utils/testUtils.ts.html +1309 -0
- package/lex.config.mjs +34 -0
- package/lib/actions/apps.d.ts +25 -0
- package/lib/actions/apps.js +11 -11
- package/lib/actions/connections.d.ts +5 -0
- package/lib/actions/connections.js +6 -6
- package/lib/actions/content.d.ts +13 -0
- package/lib/actions/content.js +9 -9
- package/lib/actions/conversations.d.ts +16 -0
- package/lib/actions/conversations.js +17 -17
- package/lib/actions/dynamodb.d.ts +12 -0
- package/lib/actions/dynamodb.js +2 -2
- package/lib/actions/email.d.ts +8 -0
- package/lib/actions/email.js +2 -2
- package/lib/actions/files.d.ts +19 -0
- package/lib/actions/files.js +3 -3
- package/lib/actions/groups.d.ts +13 -0
- package/lib/actions/groups.js +15 -15
- package/lib/actions/images.d.ts +33 -0
- package/lib/actions/images.js +22 -22
- package/lib/actions/index.d.ts +27 -0
- package/lib/actions/index.js +2 -2
- package/lib/actions/ios.d.ts +7 -0
- package/lib/actions/ios.js +4 -4
- package/lib/actions/locations.d.ts +6 -0
- package/lib/actions/locations.js +3 -3
- package/lib/actions/messages.d.ts +13 -0
- package/lib/actions/messages.js +3 -3
- package/lib/actions/notifications.d.ts +9 -0
- package/lib/actions/notifications.js +2 -2
- package/lib/actions/payments.d.ts +12 -0
- package/lib/actions/payments.js +6 -6
- package/lib/actions/posts.d.ts +25 -0
- package/lib/actions/posts.js +30 -30
- package/lib/actions/profiles.d.ts +4 -0
- package/lib/actions/profiles.js +4 -4
- package/lib/actions/reactions.d.ts +32 -0
- package/lib/actions/reactions.js +16 -16
- package/lib/actions/s3.d.ts +11 -0
- package/lib/actions/s3.js +2 -2
- package/lib/actions/search.d.ts +3 -0
- package/lib/actions/search.js +3 -3
- package/lib/actions/sms.d.ts +2 -0
- package/lib/actions/sms.js +2 -2
- package/lib/actions/statistics.d.ts +4 -0
- package/lib/actions/statistics.js +4 -4
- package/lib/actions/subscriptions.d.ts +7 -0
- package/lib/actions/subscriptions.js +6 -6
- package/lib/actions/tags.d.ts +34 -0
- package/lib/actions/tags.js +6 -6
- package/lib/actions/users.d.ts +73 -0
- package/lib/actions/users.js +45 -42
- package/lib/actions/websockets.d.ts +20 -0
- package/lib/actions/websockets.js +8 -8
- package/lib/adapters/arangoAdapter.d.ts +8 -0
- package/lib/adapters/arangoAdapter.js +2 -2
- package/lib/adapters/contentAdapter.d.ts +8 -0
- package/lib/adapters/contentAdapter.js +2 -2
- package/lib/adapters/fileAdapter.d.ts +9 -0
- package/lib/adapters/fileAdapter.js +2 -2
- package/lib/adapters/imageAdapter.d.ts +8 -0
- package/lib/adapters/imageAdapter.js +2 -2
- package/lib/adapters/index.d.ts +9 -0
- package/lib/adapters/index.js +2 -0
- package/lib/adapters/messageAdapter.d.ts +8 -0
- package/lib/adapters/messageAdapter.js +2 -2
- package/lib/adapters/postAdapter.d.ts +8 -0
- package/lib/adapters/postAdapter.js +2 -2
- package/lib/adapters/reaktorAdapter.d.ts +16 -0
- package/lib/adapters/reaktorAdapter.js +2 -2
- package/lib/adapters/tagAdapter.d.ts +9 -0
- package/lib/adapters/tagAdapter.js +2 -2
- package/lib/adapters/userAdapter.d.ts +13 -0
- package/lib/adapters/userAdapter.js +2 -2
- package/lib/config.d.ts +57 -0
- package/lib/config.js +2 -2
- package/lib/handlers/graphqlHandler.d.ts +4 -0
- package/lib/handlers/graphqlHandler.js +2 -2
- package/lib/index.d.ts +19 -0
- package/lib/index.js +2 -2
- package/lib/lambdas/actions/websockets.d.ts +7 -0
- package/lib/lambdas/actions/websockets.js +6 -6
- package/lib/lambdas/authorizer.d.ts +20 -0
- package/lib/lambdas/authorizer.js +2 -2
- package/lib/lambdas/connection.d.ts +12 -0
- package/lib/lambdas/connection.js +2 -2
- package/lib/lambdas/utils/message.d.ts +1 -0
- package/lib/lambdas/utils/websocket.d.ts +7 -0
- package/lib/lambdas/utils/websocket.js +2 -2
- package/lib/mocks/conversation.d.ts +8 -0
- package/lib/mocks/file.d.ts +11 -0
- package/lib/mocks/group.d.ts +17 -0
- package/lib/mocks/group.js +2 -2
- package/lib/mocks/image.d.ts +3 -0
- package/lib/mocks/image.js +2 -2
- package/lib/mocks/post.d.ts +38 -0
- package/lib/mocks/post.js +2 -2
- package/lib/mocks/tag.d.ts +2 -0
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.d.ts +4 -0
- package/lib/mocks/user.js +2 -2
- package/lib/mutations/content.d.ts +2 -0
- package/lib/mutations/content.js +2 -0
- package/lib/mutations/index.d.ts +11 -0
- package/lib/mutations/index.js +2 -2
- package/lib/mutations/locations.d.ts +2 -0
- package/lib/mutations/locations.js +2 -2
- package/lib/mutations/messages.d.ts +2 -0
- package/lib/mutations/messages.js +2 -2
- package/lib/mutations/posts.d.ts +2 -0
- package/lib/mutations/posts.js +2 -2
- package/lib/mutations/profiles.d.ts +2 -0
- package/lib/mutations/profiles.js +2 -2
- package/lib/mutations/reactions.d.ts +2 -0
- package/lib/mutations/reactions.js +2 -2
- package/lib/mutations/statistics.d.ts +2 -0
- package/lib/mutations/statistics.js +2 -2
- package/lib/mutations/subscriptions.d.ts +2 -0
- package/lib/mutations/subscriptions.js +2 -2
- package/lib/mutations/tags.d.ts +2 -0
- package/lib/mutations/tags.js +2 -2
- package/lib/mutations/users.d.ts +1 -0
- package/lib/mutations/users.js +2 -2
- package/lib/objectTypes/app.d.ts +3 -0
- package/lib/objectTypes/app.js +2 -2
- package/lib/objectTypes/bankAccount.d.ts +1 -0
- package/lib/objectTypes/connection.d.ts +1 -0
- package/lib/objectTypes/connection.js +2 -2
- package/lib/objectTypes/content.d.ts +2 -0
- package/lib/objectTypes/content.js +2 -0
- package/lib/objectTypes/conversation.d.ts +2 -0
- package/lib/objectTypes/conversation.js +2 -2
- package/lib/objectTypes/creditCard.d.ts +1 -0
- package/lib/objectTypes/document.d.ts +1 -0
- package/lib/objectTypes/error.d.ts +1 -0
- package/lib/objectTypes/external.d.ts +1 -0
- package/lib/objectTypes/external.js +2 -2
- package/lib/objectTypes/file.d.ts +2 -0
- package/lib/objectTypes/file.js +2 -2
- package/lib/objectTypes/filter.d.ts +1 -0
- package/lib/objectTypes/group.d.ts +3 -0
- package/lib/objectTypes/group.js +2 -2
- package/lib/objectTypes/iapSubscription.d.ts +1 -0
- package/lib/objectTypes/image.d.ts +6 -0
- package/lib/objectTypes/image.js +2 -2
- package/lib/objectTypes/index.d.ts +26 -0
- package/lib/objectTypes/index.js +2 -2
- package/lib/objectTypes/location.d.ts +2 -0
- package/lib/objectTypes/location.js +2 -2
- package/lib/objectTypes/message.d.ts +2 -0
- package/lib/objectTypes/message.js +2 -2
- package/lib/objectTypes/passcode.d.ts +1 -0
- package/lib/objectTypes/passcode.js +2 -2
- package/lib/objectTypes/plan.d.ts +2 -0
- package/lib/objectTypes/plan.js +2 -2
- package/lib/objectTypes/post.d.ts +2 -0
- package/lib/objectTypes/post.js +2 -2
- package/lib/objectTypes/profile.d.ts +3 -0
- package/lib/objectTypes/profile.js +2 -2
- package/lib/objectTypes/reaction.d.ts +2 -0
- package/lib/objectTypes/reaction.js +2 -2
- package/lib/objectTypes/relation.d.ts +1 -0
- package/lib/objectTypes/relation.js +2 -2
- package/lib/objectTypes/search.d.ts +1 -0
- package/lib/objectTypes/search.js +2 -2
- package/lib/objectTypes/statistics.d.ts +1 -0
- package/lib/objectTypes/statistics.js +2 -2
- package/lib/objectTypes/subscription.d.ts +2 -0
- package/lib/objectTypes/subscription.js +2 -2
- package/lib/objectTypes/tag.d.ts +2 -0
- package/lib/objectTypes/tag.js +2 -2
- package/lib/objectTypes/user.d.ts +4 -0
- package/lib/objectTypes/user.js +2 -2
- package/lib/queries/content.d.ts +2 -0
- package/lib/queries/content.js +2 -0
- package/lib/queries/index.d.ts +10 -0
- package/lib/queries/index.js +2 -2
- package/lib/queries/locations.d.ts +2 -0
- package/lib/queries/locations.js +2 -2
- package/lib/queries/messages.d.ts +2 -0
- package/lib/queries/messages.js +2 -2
- package/lib/queries/posts.d.ts +2 -0
- package/lib/queries/posts.js +2 -2
- package/lib/queries/reactions.d.ts +2 -0
- package/lib/queries/reactions.js +2 -2
- package/lib/queries/statistics.d.ts +2 -0
- package/lib/queries/statistics.js +2 -2
- package/lib/queries/subscriptions.d.ts +2 -0
- package/lib/queries/subscriptions.js +2 -2
- package/lib/queries/tags.d.ts +2 -0
- package/lib/queries/tags.js +2 -2
- package/lib/queries/users.d.ts +1 -0
- package/lib/queries/users.js +2 -2
- package/lib/templates/email/layout.d.ts +2 -0
- package/lib/templates/email/passwordForgot.d.ts +2 -0
- package/lib/templates/email/passwordRecovery.d.ts +2 -0
- package/lib/templates/email/verifyEmail.d.ts +2 -0
- package/lib/templates/email/welcome.d.ts +2 -0
- package/lib/templates/sms/passwordForgot.d.ts +2 -0
- package/lib/templates/sms/passwordRecovery.d.ts +2 -0
- package/lib/templates/sms/verifyEmail.d.ts +2 -0
- package/lib/templates/sms/verifyPhone.d.ts +2 -0
- package/lib/templates/sms/welcome.d.ts +2 -0
- package/lib/types/apps.types.d.ts +50 -0
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.d.ts +38 -0
- package/lib/types/auth.types.d.ts +15 -0
- package/lib/types/connections.types.d.ts +9 -0
- package/lib/types/content.types.d.ts +31 -0
- package/lib/types/conversations.types.d.ts +31 -0
- package/lib/types/email.types.d.ts +17 -0
- package/lib/types/error.types.d.ts +21 -0
- package/lib/types/files.types.d.ts +27 -0
- package/lib/types/google.types.d.ts +33 -0
- package/lib/types/groups.types.d.ts +22 -0
- package/lib/types/images.types.d.ts +56 -0
- package/lib/types/index.d.ts +26 -0
- package/lib/types/index.js +2 -2
- package/lib/types/locations.types.d.ts +22 -0
- package/lib/types/messages.types.d.ts +20 -0
- package/lib/types/notifications.types.d.ts +23 -0
- package/lib/types/payments.types.d.ts +113 -0
- package/lib/types/posts.types.d.ts +32 -0
- package/lib/types/profiles.types.d.ts +20 -0
- package/lib/types/statistics.types.d.ts +3 -0
- package/lib/types/tags.types.d.ts +19 -0
- package/lib/types/users.types.d.ts +110 -0
- package/lib/types/websockets.types.d.ts +22 -0
- package/lib/utils/adapterUtils.d.ts +5 -0
- package/lib/utils/analyticsUtils.d.ts +25 -0
- package/lib/utils/analyticsUtils.js +2 -2
- package/lib/utils/arangodbUtils.d.ts +70 -0
- package/lib/utils/arangodbUtils.js +3 -3
- package/lib/utils/authUtils.d.ts +23 -0
- package/lib/utils/authUtils.js +2 -2
- package/lib/utils/contextUtils.d.ts +3 -0
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/dbI18n.d.ts +10 -0
- package/lib/utils/dbI18n.example.d.ts +20 -0
- package/lib/utils/dbI18n.example.js +3 -3
- package/lib/utils/dbI18n.js +2 -2
- package/lib/utils/googleTranslate.d.ts +6 -0
- package/lib/utils/googleTranslate.js +2 -2
- package/lib/utils/graphqlUtils.d.ts +10 -0
- package/lib/utils/graphqlUtils.js +2 -2
- package/lib/utils/index.d.ts +18 -0
- package/lib/utils/index.js +2 -2
- package/lib/utils/languageDetection.d.ts +8 -0
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.d.ts +11 -0
- package/lib/utils/localeUtils.example.d.ts +5 -0
- package/lib/utils/localeUtils.example.js +2 -2
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/middlewareUtils.d.ts +2 -0
- package/lib/utils/middlewareUtils.js +2 -2
- package/lib/utils/sessionUtils.d.ts +18 -0
- package/lib/utils/sessionUtils.js +2 -2
- package/lib/utils/stripeUtils.d.ts +7 -0
- package/lib/utils/stripeUtils.js +2 -2
- package/lib/utils/templateUtils.d.ts +3 -0
- package/lib/utils/testUtils.d.ts +95 -0
- package/lib/utils/testUtils.js +2 -2
- package/lib/utils/translationQueue.d.ts +29 -0
- package/lib/utils/translationQueue.example.d.ts +33 -0
- package/lib/utils/translationQueue.example.js +2 -2
- package/lib/utils/translationQueue.js +2 -2
- package/package.json +22 -21
- package/tsconfig.build.json +21 -0
- package/tsconfig.lint.json +33 -0
- package/tsconfig.test.json +31 -0
- package/dist/actions/apps.js +0 -242
- package/dist/actions/connections.js +0 -90
- package/dist/actions/conversations.js +0 -350
- package/dist/actions/dynamodb.js +0 -150
- package/dist/actions/email.js +0 -152
- package/dist/actions/files.js +0 -283
- package/dist/actions/groups.js +0 -292
- package/dist/actions/images.js +0 -735
- package/dist/actions/index.js +0 -66
- package/dist/actions/ios.js +0 -164
- package/dist/actions/locations.js +0 -122
- package/dist/actions/messages.js +0 -208
- package/dist/actions/notifications.js +0 -59
- package/dist/actions/payments.js +0 -497
- package/dist/actions/personas.js +0 -110
- package/dist/actions/posts.js +0 -595
- package/dist/actions/reactions.js +0 -322
- package/dist/actions/s3.js +0 -133
- package/dist/actions/search.js +0 -90
- package/dist/actions/sms.js +0 -108
- package/dist/actions/statistics.js +0 -62
- package/dist/actions/subscription.js +0 -220
- package/dist/actions/tags.js +0 -292
- package/dist/actions/users.js +0 -784
- package/dist/actions/websockets.js +0 -174
- package/dist/adapters/arangoAdapter.js +0 -46
- package/dist/adapters/fileAdapter.js +0 -76
- package/dist/adapters/imageAdapter.js +0 -40
- package/dist/adapters/messageAdapter.js +0 -49
- package/dist/adapters/postAdapter.js +0 -70
- package/dist/adapters/reaktorAdapter.js +0 -44
- package/dist/adapters/tagAdapter.js +0 -50
- package/dist/adapters/userAdapter.js +0 -115
- package/dist/config.js +0 -125
- package/dist/index.js +0 -66
- package/dist/lambdas/actions/websockets.js +0 -132
- package/dist/lambdas/authorizer.js +0 -67
- package/dist/lambdas/connection.js +0 -91
- package/dist/lambdas/utils/message.js +0 -42
- package/dist/lambdas/utils/websocket.js +0 -105
- package/dist/mocks/conversation.js +0 -35
- package/dist/mocks/file.js +0 -38
- package/dist/mocks/group.js +0 -47
- package/dist/mocks/image.js +0 -44
- package/dist/mocks/nlabs.png +0 -0
- package/dist/mocks/post.js +0 -55
- package/dist/mocks/tag.js +0 -37
- package/dist/mocks/user.js +0 -88
- package/dist/mutations/index.js +0 -26
- package/dist/mutations/locations.js +0 -44
- package/dist/mutations/messages.js +0 -86
- package/dist/mutations/personas.js +0 -100
- package/dist/mutations/posts.js +0 -53
- package/dist/mutations/reactions.js +0 -51
- package/dist/mutations/statistics.js +0 -39
- package/dist/mutations/subscriptions.js +0 -56
- package/dist/mutations/tags.js +0 -120
- package/dist/mutations/users.js +0 -116
- package/dist/objectTypes/app.js +0 -173
- package/dist/objectTypes/bankAccount.js +0 -76
- package/dist/objectTypes/connection.js +0 -48
- package/dist/objectTypes/conversation.js +0 -77
- package/dist/objectTypes/creditCard.js +0 -86
- package/dist/objectTypes/document.js +0 -46
- package/dist/objectTypes/error.js +0 -46
- package/dist/objectTypes/external.js +0 -74
- package/dist/objectTypes/file.js +0 -100
- package/dist/objectTypes/filter.js +0 -43
- package/dist/objectTypes/group.js +0 -123
- package/dist/objectTypes/iapSubscription.js +0 -40
- package/dist/objectTypes/image.js +0 -129
- package/dist/objectTypes/index.js +0 -68
- package/dist/objectTypes/location.js +0 -109
- package/dist/objectTypes/message.js +0 -96
- package/dist/objectTypes/passcode.js +0 -42
- package/dist/objectTypes/persona.js +0 -87
- package/dist/objectTypes/plan.js +0 -95
- package/dist/objectTypes/post.js +0 -125
- package/dist/objectTypes/reaction.js +0 -61
- package/dist/objectTypes/relation.js +0 -49
- package/dist/objectTypes/search.js +0 -72
- package/dist/objectTypes/statistics.js +0 -39
- package/dist/objectTypes/subscription.js +0 -117
- package/dist/objectTypes/tag.js +0 -65
- package/dist/objectTypes/user.js +0 -144
- package/dist/queries/index.js +0 -33
- package/dist/queries/locations.js +0 -45
- package/dist/queries/messages.js +0 -52
- package/dist/queries/posts.js +0 -154
- package/dist/queries/reactions.js +0 -56
- package/dist/queries/statistics.js +0 -39
- package/dist/queries/subscriptions.js +0 -44
- package/dist/queries/tags.js +0 -75
- package/dist/queries/users.js +0 -64
- package/dist/templates/email/layout.js +0 -302
- package/dist/templates/email/passwordForgot.js +0 -38
- package/dist/templates/email/passwordRecovery.js +0 -35
- package/dist/templates/email/verifyEmail.js +0 -38
- package/dist/templates/email/welcome.js +0 -38
- package/dist/templates/sms/passwordForgot.js +0 -24
- package/dist/templates/sms/passwordRecovery.js +0 -24
- package/dist/templates/sms/verifyEmail.js +0 -24
- package/dist/templates/sms/verifyPhone.js +0 -24
- package/dist/templates/sms/welcome.js +0 -24
- package/dist/types/apps.js +0 -32
- package/dist/types/arangodb.js +0 -16
- package/dist/types/auth.js +0 -16
- package/dist/types/connections.js +0 -16
- package/dist/types/conversations.js +0 -16
- package/dist/types/email.js +0 -16
- package/dist/types/error.js +0 -44
- package/dist/types/files.js +0 -16
- package/dist/types/google.js +0 -16
- package/dist/types/groups.js +0 -16
- package/dist/types/images.js +0 -16
- package/dist/types/index.js +0 -60
- package/dist/types/locations.js +0 -16
- package/dist/types/messages.js +0 -16
- package/dist/types/notifications.js +0 -16
- package/dist/types/payments.js +0 -16
- package/dist/types/personas.js +0 -16
- package/dist/types/posts.js +0 -16
- package/dist/types/statistics.js +0 -16
- package/dist/types/tags.js +0 -16
- package/dist/types/users.js +0 -16
- package/dist/types/websockets.js +0 -16
- package/dist/utils/adapterUtils.js +0 -45
- package/dist/utils/analyticsUtils.js +0 -72
- package/dist/utils/arangodbUtils.js +0 -165
- package/dist/utils/auth.js +0 -57
- package/dist/utils/index.js +0 -30
- package/dist/utils/session.js +0 -60
- package/jest.config.js +0 -17
- package/jest.setup.js +0 -36
- package/lex.config.cjs +0 -13
- package/lib/mutations/locations.integration.js +0 -2
- package/lib/mutations/messages.integration.js +0 -2
- package/lib/mutations/posts.integration.js +0 -2
- package/lib/mutations/profiles.integration.js +0 -2
- package/lib/mutations/reactions.integration.js +0 -2
- package/lib/mutations/statistics.integration.js +0 -2
- package/lib/mutations/subscriptions.integration.js +0 -2
- package/lib/mutations/tags.integration.js +0 -2
- package/lib/mutations/users.integration.js +0 -2
- package/lib/queries/locations.integration.js +0 -2
- package/lib/queries/messages.integration.js +0 -2
- package/lib/queries/posts.integration.js +0 -2
- package/lib/queries/reactions.integration.js +0 -2
- package/lib/queries/tags.integration.js +0 -2
- package/lib/queries/users.integration.js +0 -2
package/lib/actions/locations.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{get as
|
|
1
|
+
import{get as v,queryString as P}from"@nlabs/rip-hunter";import{createHash as u,parseChar as S,parseId as T}from"@nlabs/utils/parsers/strings";import{aql as I}from"arangojs";import{Config as f}from"../config.js";import{ErrorTypes as F}from"../types/error.types.js";import{logError as O}from"../utils/analyticsUtils.js";import{useDb as d}from"../utils/arangodbUtils.js";const K="locations",n=(e,a)=>{const{short_name:l=""}=e.find(r=>(r.types||[]).findIndex(o=>o===a)>=0)||{};return l},Y=(e,a)=>{const{databaseName:r,session:{userId:i}}=e,{address:o,itemId:h,itemType:E}=a,_=f.get("google.geocode.url"),A={address:o,key:f.get("google.geocode.key")},R=`${_}?${P(A)}`;return v(R).then(L=>{const{results:g=[],status:C=""}=L;if(C==="OK"&&g.length){const c=g[0],s=c?.address_components||[],N=n(s,"street_number"),$=n(s,"route"),b=Date.now(),q=S(E).toLowerCase(),x=T(h),m=c?.place_id||"",k={},G={_key:u(`post-${i}`),added:b,city:n(s,"locality"),country:n(s,"country"),formatted:c?.formatted_address,googleId:m,latitude:c?.geometry.location.lat,longitude:c?.geometry.location.lng,state:n(s,"administrative_area_level_1"),street:[N,$].filter(t=>t).join(" "),zip:n(s,"postal_code")},w=I`UPSERT {googleId: ${m}}
|
|
2
2
|
INSERT ${G}
|
|
3
3
|
UPDATE ${k}
|
|
4
|
-
IN locations RETURN NEW`;return d(r).query(w).then(t=>t.next()).then(t=>{let p;const{_key:D}=t;switch(q){case"posts":p=`posts/${x}`;break;default:p=""}if(p){const M=d(r).collection("hasLocation"),y=D,Q=`locations/${y}`,U=u(`hasLocation-${y}-${i}`),
|
|
4
|
+
IN locations RETURN NEW`;return d(r).query(w).then(t=>t.next()).then(t=>{let p;const{_key:D}=t;switch(q){case"posts":p=`posts/${x}`;break;default:p=""}if(p){const M=d(r).collection("hasLocation"),y=D,Q=`locations/${y}`,U=u(`hasLocation-${y}-${i}`),j={_from:p,_key:U,_to:Q};return M.save(j,{returnNew:!0}).then(()=>t)}return t}).catch(t=>O({action:"add",category:K,label:F.DATABASE_ERROR},t,e).then(()=>null))}return null})},Z=(e,a)=>{const{databaseName:l}=e,r=T(a),i=I`FOR l IN locations
|
|
5
5
|
FILTER l._key == ${r}
|
|
6
6
|
RETURN l`;return d(l).query(i).then(o=>o.next()).catch(o=>{throw o})};export{Y as addLocation,n as getFieldVal,Z as getLocation};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbG9jYXRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtnZXQgYXMgaHR0cEdldCwgcXVlcnlTdHJpbmd9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5cbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3IudHlwZXMnO1xuaW1wb3J0IHtHb29nbGVNYXBzQWRkcmVzc1R5cGUsIEdvb2dsZU1hcHNSZXN1bHRUeXBlfSBmcm9tICcuLi90eXBlcy9nb29nbGUudHlwZXMnO1xuaW1wb3J0IHtMb2NhdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL2xvY2F0aW9ucy50eXBlcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcblxuaW1wb3J0IHR5cGUge0VkZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcyc7XG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2xvY2F0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBnZXRGaWVsZFZhbCA9IChhZGRyZXNzQ29tcG9uZW50czogR29vZ2xlTWFwc0FkZHJlc3NUeXBlW10sIG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHtzaG9ydF9uYW1lOiBzaG9ydE5hbWUgPSAnJ30gPSBhZGRyZXNzQ29tcG9uZW50cy5maW5kKChhZGRyZXNzRmllbGQ6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZSkgPT4ge1xuICAgIGNvbnN0IHR5cGVzID0gYWRkcmVzc0ZpZWxkLnR5cGVzIHx8IFtdO1xuICAgIHJldHVybiB0eXBlcy5maW5kSW5kZXgoKGZpZWxkVHlwZTogc3RyaW5nKSA9PiBmaWVsZFR5cGUgPT09IG5hbWUpID49IDA7XG4gIH0pIHx8IHt9O1xuXG4gIHJldHVybiBzaG9ydE5hbWU7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTG9jYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgbG9jYXRpb246IExvY2F0aW9uVHlwZSk6IFByb21pc2U8TG9jYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2FkZHJlc3MsIGl0ZW1JZCwgaXRlbVR5cGV9ID0gbG9jYXRpb247XG4gIGNvbnN0IGdlb2NvZGVVcmw6IHN0cmluZyA9IENvbmZpZy5nZXQoJ2dvb2dsZS5nZW9jb2RlLnVybCcpO1xuICBjb25zdCBwYXJhbXM6IG9iamVjdCA9IHtcbiAgICBhZGRyZXNzLFxuICAgIGtleTogQ29uZmlnLmdldCgnZ29vZ2xlLmdlb2NvZGUua2V5JylcbiAgfTtcbiAgY29uc3QgdXJsOiBzdHJpbmcgPSBgJHtnZW9jb2RlVXJsfT8ke3F1ZXJ5U3RyaW5nKHBhcmFtcyl9YDtcblxuICByZXR1cm4gaHR0cEdldCh1cmwpXG4gICAgLnRoZW4oKGpzb24pID0+IHtcbiAgICAgIGNvbnN0IHtyZXN1bHRzID0gW10sIHN0YXR1cyA9ICcnfSA9IGpzb247XG5cbiAgICAgIGlmKHN0YXR1cyA9PT0gJ09LJyAmJiByZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBnZW9kYXRhOiBHb29nbGVNYXBzUmVzdWx0VHlwZSA9IHJlc3VsdHNbMF07XG4gICAgICAgIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzOiBHb29nbGVNYXBzQWRkcmVzc1R5cGVbXSA9IGdlb2RhdGE/LmFkZHJlc3NfY29tcG9uZW50cyB8fCBbXTtcblxuICAgICAgICAvLyBTdHJlZXRcbiAgICAgICAgY29uc3Qgc3RyZWV0TnVtYmVyOiBzdHJpbmcgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3N0cmVldF9udW1iZXInKTtcbiAgICAgICAgY29uc3Qgcm91dGU6IHN0cmluZyA9IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAncm91dGUnKTtcblxuICAgICAgICAvLyBMb2NhdGlvblxuICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG5cbiAgICAgICAgLy8gSXRlbVxuICAgICAgICBjb25zdCBmb3JtYXRJdGVtVHlwZTogc3RyaW5nID0gcGFyc2VDaGFyKGl0ZW1UeXBlKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBmb3JtYXRJdGVtSWQ6IHN0cmluZyA9IHBhcnNlSWQoaXRlbUlkKTtcbiAgICAgICAgY29uc3QgZ29vZ2xlSWQ6IHN0cmluZyA9IGdlb2RhdGE/LnBsYWNlX2lkIHx8ICcnO1xuICAgICAgICBjb25zdCB1cGRhdGU6IExvY2F0aW9uVHlwZSA9IHt9O1xuICAgICAgICBjb25zdCBpbnNlcnQ6IExvY2F0aW9uVHlwZSA9IHtcbiAgICAgICAgICBfa2V5OiBjcmVhdGVIYXNoKGBwb3N0LSR7c2Vzc2lvbklkfWApLFxuICAgICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgICAgY2l0eTogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdsb2NhbGl0eScpLFxuICAgICAgICAgIGNvdW50cnk6IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAnY291bnRyeScpLFxuICAgICAgICAgIGZvcm1hdHRlZDogZ2VvZGF0YT8uZm9ybWF0dGVkX2FkZHJlc3MsXG4gICAgICAgICAgZ29vZ2xlSWQsXG4gICAgICAgICAgbGF0aXR1ZGU6IGdlb2RhdGE/Lmdlb21ldHJ5LmxvY2F0aW9uLmxhdCxcbiAgICAgICAgICBsb25naXR1ZGU6IGdlb2RhdGE/Lmdlb21ldHJ5LmxvY2F0aW9uLmxuZyxcbiAgICAgICAgICBzdGF0ZTogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzEnKSxcbiAgICAgICAgICBzdHJlZXQ6IFtzdHJlZXROdW1iZXIsIHJvdXRlXS5maWx0ZXIoKG9iaikgPT4gb2JqKS5qb2luKCcgJyksXG4gICAgICAgICAgemlwOiBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3Bvc3RhbF9jb2RlJylcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUFNFUlQge2dvb2dsZUlkOiAke2dvb2dsZUlkfX1cbiAgICAgICAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgICAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgICAgICAgIElOIGxvY2F0aW9ucyBSRVRVUk4gTkVXYDtcblxuICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAudGhlbigodXBkYXRlZExvY2F0aW9uOiBMb2NhdGlvblR5cGUpID0+IHtcbiAgICAgICAgICAgIGxldCBpdGVtRG9jSWQ6IHN0cmluZztcbiAgICAgICAgICAgIGNvbnN0IHtfa2V5OiB1cGRhdGVkTG9jYXRpb25LZXl9ID0gdXBkYXRlZExvY2F0aW9uO1xuXG4gICAgICAgICAgICBzd2l0Y2goZm9ybWF0SXRlbVR5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAncG9zdHMnOlxuICAgICAgICAgICAgICAgIGl0ZW1Eb2NJZCA9IGBwb3N0cy8ke2Zvcm1hdEl0ZW1JZH1gO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGl0ZW1Eb2NJZCA9ICcnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHZhbGlkIGl0ZW0gZG9jIGlkLCBjcmVhdGUgYW4gZWRnZVxuICAgICAgICAgICAgaWYoaXRlbURvY0lkKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzTG9jYXRpb24nKTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25JZDogc3RyaW5nID0gdXBkYXRlZExvY2F0aW9uS2V5O1xuICAgICAgICAgICAgICBjb25zdCBsb2NhdGlvbkRvY0lkOiBzdHJpbmcgPSBgbG9jYXRpb25zLyR7bG9jYXRpb25JZH1gO1xuICAgICAgICAgICAgICBjb25zdCBlZGdlSWQgPSBjcmVhdGVIYXNoKGBoYXNMb2NhdGlvbi0ke2xvY2F0aW9uSWR9LSR7c2Vzc2lvbklkfWApO1xuICAgICAgICAgICAgICBjb25zdCBlZGdlOiBFZGdlVHlwZSA9IHtfZnJvbTogaXRlbURvY0lkLCBfa2V5OiBlZGdlSWQsIF90bzogbG9jYXRpb25Eb2NJZH07XG5cbiAgICAgICAgICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLnNhdmUoZWRnZSwge3JldHVybk5ldzogdHJ1ZX0pLnRoZW4oKCkgPT4gdXBkYXRlZExvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIGp1c3QgcmV0dXJuIHRoZSBuZXcgbG9jYXRpb25cbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkTG9jYXRpb247XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TG9jYXRpb24gPSAoY29udGV4dDogQXBpQ29udGV4dCwgbG9jYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxMb2NhdGlvblR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChsb2NhdGlvbklkKTtcblxuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBsIElOIGxvY2F0aW9uc1xuICAgIEZJTFRFUiBsLl9rZXkgPT0gJHtmb3JtYXRJZH1cbiAgICBSRVRVUk4gbGA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsT0FBT0EsRUFBUyxlQUFBQyxNQUFrQixvQkFDMUMsT0FBUSxjQUFBQyxFQUFZLGFBQUFDLEVBQVcsV0FBQUMsTUFBYyxlQUM3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QUFlLEtBQUtJLEVBQU0sQ0FBQyxVQUFXLEVBQUksQ0FBQyxFQUFFLEtBQUssSUFBTVAsQ0FBZSxDQUNoRixDQUdBLE9BQU9BLENBQ1QsQ0FBQyxFQUNBLE1BQU9RLEdBQWlCM0MsRUFBUyxDQUNoQyxhQUNBLFNBQVVFLEVBQ1YsTUFBT0gsRUFBVyxjQUNwQixFQUFHNEMsRUFBT2pDLENBQU8sRUFBRSxLQUFLLElBQU0sSUFBSSxDQUFDLENBQ3ZDLENBRUEsT0FBTyxJQUNULENBQUMsQ0FDTCxFQUVha0MsRUFBYyxDQUFDbEMsRUFBcUI2QixJQUE4QyxDQUM3RixLQUFNLENBQUMsYUFBQTNCLENBQVksRUFBSUYsRUFDakJtQyxFQUFtQmpELEVBQVEyQyxDQUFVLEVBRXJDTixFQUFtQnBDO0FBQUEsdUJBQ0pnRCxDQUFRO0FBQUEsY0FHN0IsT0FBTzVDLEVBQU1XLENBQVksRUFBRSxNQUFNcUIsQ0FBTSxFQUNwQyxLQUFNQyxHQUFXQSxFQUFPLEtBQUssQ0FBQyxFQUM5QixNQUFPUyxHQUFpQixDQUN2QixNQUFNQSxDQUNSLENBQUMsQ0FDTCIsCiAgIm5hbWVzIjogWyJodHRwR2V0IiwgInF1ZXJ5U3RyaW5nIiwgImNyZWF0ZUhhc2giLCAicGFyc2VDaGFyIiwgInBhcnNlSWQiLCAiYXFsIiwgIkNvbmZpZyIsICJFcnJvclR5cGVzIiwgImxvZ0Vycm9yIiwgInVzZURiIiwgImV2ZW50Q2F0ZWdvcnkiLCAiZ2V0RmllbGRWYWwiLCAiYWRkcmVzc0NvbXBvbmVudHMiLCAibmFtZSIsICJzaG9ydE5hbWUiLCAiYWRkcmVzc0ZpZWxkIiwgImZpZWxkVHlwZSIsICJhZGRMb2NhdGlvbiIsICJjb250ZXh0IiwgImxvY2F0aW9uIiwgImRhdGFiYXNlTmFtZSIsICJzZXNzaW9uSWQiLCAiYWRkcmVzcyIsICJpdGVtSWQiLCAiaXRlbVR5cGUiLCAiZ2VvY29kZVVybCIsICJwYXJhbXMiLCAidXJsIiwgImpzb24iLCAicmVzdWx0cyIsICJzdGF0dXMiLCAiZ2VvZGF0YSIsICJzdHJlZXROdW1iZXIiLCAicm91dGUiLCAibm93IiwgImZvcm1hdEl0ZW1UeXBlIiwgImZvcm1hdEl0ZW1JZCIsICJnb29nbGVJZCIsICJ1cGRhdGUiLCAiaW5zZXJ0IiwgIm9iaiIsICJhcWxRcnkiLCAiY3Vyc29yIiwgInVwZGF0ZWRMb2NhdGlvbiIsICJpdGVtRG9jSWQiLCAidXBkYXRlZExvY2F0aW9uS2V5IiwgImVkZ2VDb2xsZWN0aW9uIiwgImxvY2F0aW9uSWQiLCAibG9jYXRpb25Eb2NJZCIsICJlZGdlSWQiLCAiZWRnZSIsICJlcnJvciIsICJnZXRMb2NhdGlvbiIsICJmb3JtYXRJZCJdCn0K
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbG9jYXRpb25zLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtnZXQgYXMgaHR0cEdldCwgcXVlcnlTdHJpbmd9IGZyb20gJ0BubGFicy9yaXAtaHVudGVyJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB7R29vZ2xlTWFwc0FkZHJlc3NUeXBlLCBHb29nbGVNYXBzUmVzdWx0VHlwZX0gZnJvbSAnLi4vdHlwZXMvZ29vZ2xlLnR5cGVzLmpzJztcbmltcG9ydCB7TG9jYXRpb25UeXBlfSBmcm9tICcuLi90eXBlcy9sb2NhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHtsb2dFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5cbmltcG9ydCB0eXBlIHtFZGdlQ29sbGVjdGlvbn0gZnJvbSAnYXJhbmdvanMvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHR5cGUge0VkZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdsb2NhdGlvbnMnO1xuXG5leHBvcnQgY29uc3QgZ2V0RmllbGRWYWwgPSAoYWRkcmVzc0NvbXBvbmVudHM6IEdvb2dsZU1hcHNBZGRyZXNzVHlwZVtdLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7c2hvcnRfbmFtZTogc2hvcnROYW1lID0gJyd9ID0gYWRkcmVzc0NvbXBvbmVudHMuZmluZCgoYWRkcmVzc0ZpZWxkOiBHb29nbGVNYXBzQWRkcmVzc1R5cGUpID0+IHtcbiAgICBjb25zdCB0eXBlcyA9IGFkZHJlc3NGaWVsZC50eXBlcyB8fCBbXTtcbiAgICByZXR1cm4gdHlwZXMuZmluZEluZGV4KChmaWVsZFR5cGU6IHN0cmluZykgPT4gZmllbGRUeXBlID09PSBuYW1lKSA+PSAwO1xuICB9KSB8fCB7fTtcblxuICByZXR1cm4gc2hvcnROYW1lO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZExvY2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2F0aW9uOiBMb2NhdGlvblR5cGUpOiBQcm9taXNlPExvY2F0aW9uVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHthZGRyZXNzLCBpdGVtSWQsIGl0ZW1UeXBlfSA9IGxvY2F0aW9uO1xuICBjb25zdCBnZW9jb2RlVXJsOiBzdHJpbmcgPSBDb25maWcuZ2V0KCdnb29nbGUuZ2VvY29kZS51cmwnKTtcbiAgY29uc3QgcGFyYW1zOiBvYmplY3QgPSB7XG4gICAgYWRkcmVzcyxcbiAgICBrZXk6IENvbmZpZy5nZXQoJ2dvb2dsZS5nZW9jb2RlLmtleScpXG4gIH07XG4gIGNvbnN0IHVybDogc3RyaW5nID0gYCR7Z2VvY29kZVVybH0/JHtxdWVyeVN0cmluZyhwYXJhbXMpfWA7XG5cbiAgcmV0dXJuIGh0dHBHZXQodXJsKVxuICAgIC50aGVuKChqc29uKSA9PiB7XG4gICAgICBjb25zdCB7cmVzdWx0cyA9IFtdLCBzdGF0dXMgPSAnJ30gPSBqc29uO1xuXG4gICAgICBpZihzdGF0dXMgPT09ICdPSycgJiYgcmVzdWx0cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZ2VvZGF0YTogR29vZ2xlTWFwc1Jlc3VsdFR5cGUgPSByZXN1bHRzWzBdO1xuICAgICAgICBjb25zdCBhZGRyZXNzQ29tcG9uZW50czogR29vZ2xlTWFwc0FkZHJlc3NUeXBlW10gPSBnZW9kYXRhPy5hZGRyZXNzX2NvbXBvbmVudHMgfHwgW107XG5cbiAgICAgICAgLy8gU3RyZWV0XG4gICAgICAgIGNvbnN0IHN0cmVldE51bWJlcjogc3RyaW5nID0gZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdzdHJlZXRfbnVtYmVyJyk7XG4gICAgICAgIGNvbnN0IHJvdXRlOiBzdHJpbmcgPSBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ3JvdXRlJyk7XG5cbiAgICAgICAgLy8gTG9jYXRpb25cbiAgICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIC8vIEl0ZW1cbiAgICAgICAgY29uc3QgZm9ybWF0SXRlbVR5cGU6IHN0cmluZyA9IHBhcnNlQ2hhcihpdGVtVHlwZSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgY29uc3QgZm9ybWF0SXRlbUlkOiBzdHJpbmcgPSBwYXJzZUlkKGl0ZW1JZCk7XG4gICAgICAgIGNvbnN0IGdvb2dsZUlkOiBzdHJpbmcgPSBnZW9kYXRhPy5wbGFjZV9pZCB8fCAnJztcbiAgICAgICAgY29uc3QgdXBkYXRlOiBMb2NhdGlvblR5cGUgPSB7fTtcbiAgICAgICAgY29uc3QgaW5zZXJ0OiBMb2NhdGlvblR5cGUgPSB7XG4gICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgcG9zdC0ke3Nlc3Npb25JZH1gKSxcbiAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgIGNpdHk6IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAnbG9jYWxpdHknKSxcbiAgICAgICAgICBjb3VudHJ5OiBnZXRGaWVsZFZhbChhZGRyZXNzQ29tcG9uZW50cywgJ2NvdW50cnknKSxcbiAgICAgICAgICBmb3JtYXR0ZWQ6IGdlb2RhdGE/LmZvcm1hdHRlZF9hZGRyZXNzLFxuICAgICAgICAgIGdvb2dsZUlkLFxuICAgICAgICAgIGxhdGl0dWRlOiBnZW9kYXRhPy5nZW9tZXRyeS5sb2NhdGlvbi5sYXQsXG4gICAgICAgICAgbG9uZ2l0dWRlOiBnZW9kYXRhPy5nZW9tZXRyeS5sb2NhdGlvbi5sbmcsXG4gICAgICAgICAgc3RhdGU6IGdldEZpZWxkVmFsKGFkZHJlc3NDb21wb25lbnRzLCAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJyksXG4gICAgICAgICAgc3RyZWV0OiBbc3RyZWV0TnVtYmVyLCByb3V0ZV0uZmlsdGVyKChvYmopID0+IG9iaikuam9pbignICcpLFxuICAgICAgICAgIHppcDogZ2V0RmllbGRWYWwoYWRkcmVzc0NvbXBvbmVudHMsICdwb3N0YWxfY29kZScpXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtnb29nbGVJZDogJHtnb29nbGVJZH19XG4gICAgICAgICAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgICAgICAgICBVUERBVEUgJHt1cGRhdGV9XG4gICAgICAgICAgICBJTiBsb2NhdGlvbnMgUkVUVVJOIE5FV2A7XG5cbiAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgICAgLnRoZW4oKHVwZGF0ZWRMb2NhdGlvbjogTG9jYXRpb25UeXBlKSA9PiB7XG4gICAgICAgICAgICBsZXQgaXRlbURvY0lkOiBzdHJpbmc7XG4gICAgICAgICAgICBjb25zdCB7X2tleTogdXBkYXRlZExvY2F0aW9uS2V5fSA9IHVwZGF0ZWRMb2NhdGlvbjtcblxuICAgICAgICAgICAgc3dpdGNoKGZvcm1hdEl0ZW1UeXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ3Bvc3RzJzpcbiAgICAgICAgICAgICAgICBpdGVtRG9jSWQgPSBgcG9zdHMvJHtmb3JtYXRJdGVtSWR9YDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICBpdGVtRG9jSWQgPSAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSB2YWxpZCBpdGVtIGRvYyBpZCwgY3JlYXRlIGFuIGVkZ2VcbiAgICAgICAgICAgIGlmKGl0ZW1Eb2NJZCkge1xuICAgICAgICAgICAgICBjb25zdCBlZGdlQ29sbGVjdGlvbjogRWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oJ2hhc0xvY2F0aW9uJyk7XG4gICAgICAgICAgICAgIGNvbnN0IGxvY2F0aW9uSWQ6IHN0cmluZyA9IHVwZGF0ZWRMb2NhdGlvbktleTtcbiAgICAgICAgICAgICAgY29uc3QgbG9jYXRpb25Eb2NJZDogc3RyaW5nID0gYGxvY2F0aW9ucy8ke2xvY2F0aW9uSWR9YDtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZUlkID0gY3JlYXRlSGFzaChgaGFzTG9jYXRpb24tJHtsb2NhdGlvbklkfS0ke3Nlc3Npb25JZH1gKTtcbiAgICAgICAgICAgICAgY29uc3QgZWRnZTogRWRnZVR5cGUgPSB7X2Zyb206IGl0ZW1Eb2NJZCwgX2tleTogZWRnZUlkLCBfdG86IGxvY2F0aW9uRG9jSWR9O1xuXG4gICAgICAgICAgICAgIHJldHVybiBlZGdlQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IHVwZGF0ZWRMb2NhdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUgbmV3IGxvY2F0aW9uXG4gICAgICAgICAgICByZXR1cm4gdXBkYXRlZExvY2F0aW9uO1xuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExvY2F0aW9uID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TG9jYXRpb25UeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobG9jYXRpb25JZCk7XG5cbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgbCBJTiBsb2NhdGlvbnNcbiAgICBGSUxURVIgbC5fa2V5ID09ICR7Zm9ybWF0SWR9XG4gICAgUkVUVVJOIGxgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLE9BQU9BLEVBQVMsZUFBQUMsTUFBa0Isb0JBQzFDLE9BQVEsY0FBQUMsRUFBWSxhQUFBQyxFQUFXLFdBQUFDLE1BQWMsK0JBQzdDLE9BQVEsT0FBQUMsTUFBVSxXQUdsQixPQUFRLFVBQUFDLE1BQWEsZUFFckIsT0FBUSxjQUFBQyxNQUFpQiwwQkFHekIsT0FBUSxZQUFBQyxNQUFlLDZCQUN2QixPQUFRLFNBQUFDLE1BQVksNEJBS3BCLE1BQU1DLEVBQXdCLFlBRWpCQyxFQUFjLENBQUNDLEVBQTRDQyxJQUF5QixDQUMvRixLQUFNLENBQUMsV0FBWUMsRUFBWSxFQUFFLEVBQUlGLEVBQWtCLEtBQU1HLElBQzdDQSxFQUFhLE9BQVMsQ0FBQyxHQUN4QixVQUFXQyxHQUFzQkEsSUFBY0gsQ0FBSSxHQUFLLENBQ3RFLEdBQUssQ0FBQyxFQUVQLE9BQU9DLENBQ1QsRUFFYUcsRUFBYyxDQUFDQyxFQUFxQkMsSUFBa0QsQ0FFakcsS0FBTSxDQUFDLGFBQUFDLEVBQWMsUUFBUyxDQUFDLE9BQVFDLENBQVMsQ0FBQyxFQUFJSCxFQUMvQyxDQUFDLFFBQUFJLEVBQVMsT0FBQUMsRUFBUSxTQUFBQyxDQUFRLEVBQUlMLEVBQzlCTSxFQUFxQm5CLEVBQU8sSUFBSSxvQkFBb0IsRUFDcERvQixFQUFpQixDQUNyQixRQUFBSixFQUNBLElBQUtoQixFQUFPLElBQUksb0JBQW9CLENBQ3RDLEVBQ01xQixFQUFjLEdBQUdGLENBQVUsSUFBSXhCLEVBQVl5QixDQUFNLENBQUMsR0FFeEQsT0FBTzFCLEVBQVEyQixDQUFHLEVBQ2YsS0FBTUMsR0FBUyxDQUNkLEtBQU0sQ0FBQyxRQUFBQyxFQUFVLENBQUMsRUFBRyxPQUFBQyxFQUFTLEVBQUUsRUFBSUYsRUFFcEMsR0FBR0UsSUFBVyxNQUFRRCxFQUFRLE9BQVEsQ0FDcEMsTUFBTUUsRUFBZ0NGLEVBQVEsQ0FBQyxFQUN6Q2pCLEVBQTZDbUIsR0FBUyxvQkFBc0IsQ0FBQyxFQUc3RUMsRUFBdUJyQixFQUFZQyxFQUFtQixlQUFlLEVBQ3JFcUIsRUFBZ0J0QixFQUFZQyxFQUFtQixPQUFPLEVBR3REc0IsRUFBYyxLQUFLLElBQUksRUFHdkJDLEVBQXlCaEMsRUFBVXFCLENBQVEsRUFBRSxZQUFZLEVBQ3pEWSxFQUF1QmhDLEVBQVFtQixDQUFNLEVBQ3JDYyxFQUFtQk4sR0FBUyxVQUFZLEdBQ3hDTyxFQUF1QixDQUFDLEVBQ3hCQyxFQUF1QixDQUMzQixLQUFNckMsRUFBVyxRQUFRbUIsQ0FBUyxFQUFFLEVBQ3BDLE1BQU9hLEVBQ1AsS0FBTXZCLEVBQVlDLEVBQW1CLFVBQVUsRUFDL0MsUUFBU0QsRUFBWUMsRUFBbUIsU0FBUyxFQUNqRCxVQUFXbUIsR0FBUyxrQkFDcEIsU0FBQU0sRUFDQSxTQUFVTixHQUFTLFNBQVMsU0FBUyxJQUNyQyxVQUFXQSxHQUFTLFNBQVMsU0FBUyxJQUN0QyxNQUFPcEIsRUFBWUMsRUFBbUIsNkJBQTZCLEVBQ25FLE9BQVEsQ0FBQ29CLEVBQWNDLENBQUssRUFBRSxPQUFRTyxHQUFRQSxDQUFHLEVBQUUsS0FBSyxHQUFHLEVBQzNELElBQUs3QixFQUFZQyxFQUFtQixhQUFhLENBQ25ELEVBQ002QixFQUFtQnBDLHNCQUF3QmdDLENBQVE7QUFBQSxxQkFDNUNFLENBQU07QUFBQSxxQkFDTkQsQ0FBTTtBQUFBLHFDQUduQixPQUFPN0IsRUFBTVcsQ0FBWSxFQUFFLE1BQU1xQixDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLEtBQU1DLEdBQWtDLENBQ3ZDLElBQUlDLEVBQ0osS0FBTSxDQUFDLEtBQU1DLENBQWtCLEVBQUlGLEVBRW5DLE9BQU9SLEVBQWdCLENBQ3JCLElBQUssUUFDSFMsRUFBWSxTQUFTUixDQUFZLEdBQ2pDLE1BQ0YsUUFDRVEsRUFBWSxFQUNoQixDQUdBLEdBQUdBLEVBQVcsQ0FDWixNQUFNRSxFQUFpQ3JDLEVBQU1XLENBQVksRUFBRSxXQUFXLGFBQWEsRUFDN0UyQixFQUFxQkYsRUFDckJHLEVBQXdCLGFBQWFELENBQVUsR0FDL0NFLEVBQVMvQyxFQUFXLGVBQWU2QyxDQUFVLElBQUkxQixDQUFTLEVBQUUsRUFDNUQ2QixFQUFpQixDQUFDLE1BQU9OLEVBQVcsS0FBTUssRUFBUSxJQUFLRCxDQUFhLEVBRTFFLE9BQU9GLEVBQWUsS0FBS0ksRUFBTSxDQUFDLFVBQVcsRUFBSSxDQUFDLEVBQUUsS0FBSyxJQUFNUCxDQUFlLENBQ2hGLENBR0EsT0FBT0EsQ0FDVCxDQUFDLEVBQ0EsTUFBT1EsR0FBaUIzQyxFQUFTLENBQ2hDLGFBQ0EsU0FBVUUsRUFDVixNQUFPSCxFQUFXLGNBQ3BCLEVBQUc0QyxFQUFPakMsQ0FBTyxFQUFFLEtBQUssSUFBTSxJQUFJLENBQUMsQ0FDdkMsQ0FFQSxPQUFPLElBQ1QsQ0FBQyxDQUNMLEVBRWFrQyxFQUFjLENBQUNsQyxFQUFxQjZCLElBQThDLENBQzdGLEtBQU0sQ0FBQyxhQUFBM0IsQ0FBWSxFQUFJRixFQUNqQm1DLEVBQW1CakQsRUFBUTJDLENBQVUsRUFFckNOLEVBQW1CcEM7QUFBQSx1QkFDSmdELENBQVE7QUFBQSxjQUc3QixPQUFPNUMsRUFBTVcsQ0FBWSxFQUFFLE1BQU1xQixDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLE1BQU9TLEdBQWlCLENBQ3ZCLE1BQU1BLENBQ1IsQ0FBQyxDQUNMIiwKICAibmFtZXMiOiBbImh0dHBHZXQiLCAicXVlcnlTdHJpbmciLCAiY3JlYXRlSGFzaCIsICJwYXJzZUNoYXIiLCAicGFyc2VJZCIsICJhcWwiLCAiQ29uZmlnIiwgIkVycm9yVHlwZXMiLCAibG9nRXJyb3IiLCAidXNlRGIiLCAiZXZlbnRDYXRlZ29yeSIsICJnZXRGaWVsZFZhbCIsICJhZGRyZXNzQ29tcG9uZW50cyIsICJuYW1lIiwgInNob3J0TmFtZSIsICJhZGRyZXNzRmllbGQiLCAiZmllbGRUeXBlIiwgImFkZExvY2F0aW9uIiwgImNvbnRleHQiLCAibG9jYXRpb24iLCAiZGF0YWJhc2VOYW1lIiwgInNlc3Npb25JZCIsICJhZGRyZXNzIiwgIml0ZW1JZCIsICJpdGVtVHlwZSIsICJnZW9jb2RlVXJsIiwgInBhcmFtcyIsICJ1cmwiLCAianNvbiIsICJyZXN1bHRzIiwgInN0YXR1cyIsICJnZW9kYXRhIiwgInN0cmVldE51bWJlciIsICJyb3V0ZSIsICJub3ciLCAiZm9ybWF0SXRlbVR5cGUiLCAiZm9ybWF0SXRlbUlkIiwgImdvb2dsZUlkIiwgInVwZGF0ZSIsICJpbnNlcnQiLCAib2JqIiwgImFxbFFyeSIsICJjdXJzb3IiLCAidXBkYXRlZExvY2F0aW9uIiwgIml0ZW1Eb2NJZCIsICJ1cGRhdGVkTG9jYXRpb25LZXkiLCAiZWRnZUNvbGxlY3Rpb24iLCAibG9jYXRpb25JZCIsICJsb2NhdGlvbkRvY0lkIiwgImVkZ2VJZCIsICJlZGdlIiwgImVycm9yIiwgImdldExvY2F0aW9uIiwgImZvcm1hdElkIl0KfQo=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
2
|
+
import type { MessageInputType, MessageType } from '../types/messages.types.js';
|
|
3
|
+
export declare const getMessages: (context: ApiContext, conversationId: string, { from, to }: {
|
|
4
|
+
from: any;
|
|
5
|
+
to: any;
|
|
6
|
+
}) => Promise<MessageType[]>;
|
|
7
|
+
export declare const updateMessage: (context: ApiContext, message: MessageInputType) => Promise<MessageType>;
|
|
8
|
+
export declare const addMessage: (context: ApiContext, message: MessageInputType) => Promise<MessageType>;
|
|
9
|
+
export declare const saveMessage: (context: ApiContext, messageId: string, conversationId: string) => Promise<MessageType>;
|
|
10
|
+
export declare const unsaveMessage: (context: ApiContext, messageId: string, conversationId: string) => Promise<MessageType>;
|
|
11
|
+
export declare const deleteMessage: (context: ApiContext, messageId: string, conversationId: string) => Promise<MessageType>;
|
|
12
|
+
export declare const getMessage: (context: ApiContext, messageId: string) => Promise<MessageType>;
|
|
13
|
+
export declare const cleanMessages: (databaseName: string) => Promise<number>;
|
package/lib/actions/messages.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{createHash as
|
|
1
|
+
import{cloneDeep as N}from"@nlabs/utils/objects/clone";import{createHash as M,parseId as y,parseString as h}from"@nlabs/utils/parsers/strings";import{aql as p}from"arangojs";import{parseMessage as l}from"../adapters/messageAdapter.js";import{logError as f}from"../utils/analyticsUtils.js";import{getLimit as v,useDb as c}from"../utils/arangodbUtils.js";import{getConversation as R}from"./conversations.js";const A="messages",_=(s,o,{from:t,to:n})=>{const{databaseName:a,session:{userId:r}}=s,m=y(o),g=`users/${r}`,i=`conversations/${m}`,e=p`FOR e IN hasConversation
|
|
2
2
|
FILTER e._from == ${g} && e._to == ${i}
|
|
3
3
|
LIMIT 1
|
|
4
4
|
RETURN e`;return c(a).query(e).then(d=>d.all()).then(d=>{if(!d.length)return[];const T=v(t,n),u=`FOR m IN messages
|
|
@@ -12,7 +12,7 @@ import{createHash as N,parseId as y,parseString as M}from"@nlabs/utils";import{a
|
|
|
12
12
|
LIMIT 1
|
|
13
13
|
RETURN u
|
|
14
14
|
)
|
|
15
|
-
RETURN MERGE(m, {user: user})`;return c(a).query(u).then(I=>I.all()).catch(I=>{throw I})})},O=(s,o)=>{const{databaseName:t,session:{userId:n}}=s,{conversationId:a,files:r,images:m,messageId:g=
|
|
15
|
+
RETURN MERGE(m, {user: user})`;return c(a).query(u).then(I=>I.all()).catch(I=>{throw I})})},O=(s,o)=>{const{databaseName:t,session:{userId:n}}=s,{conversationId:a,files:r,images:m,messageId:g=M(`message-${n}`)}=o,i=y(a);if(i==="")throw new Error("required_conversationId");const e=Date.now(),d={content:h(o.content,640),files:r||[],images:m||[],modified:e},T=y(g),u={...N(d),_key:T,added:e,conversationId:i,userId:n},I=p`UPSERT {_key: ${T}, conversationId: ${i}, userId: ${n}}
|
|
16
16
|
INSERT ${u}
|
|
17
17
|
UPDATE ${d} IN messages
|
|
18
18
|
RETURN NEW`;return c(t).query(I).then(E=>E.next()).catch(E=>{throw E})},U=(s,o)=>{const{databaseName:t}=s,n=l(o),a=p`INSERT ${n} IN messages RETURN NEW`;return c(t).query(a).then(r=>r.next()).catch(r=>f({action:"addMessage",category:A,label:"addMessage"},r,s))},P=(s,o,t)=>{const{databaseName:n,session:{userId:a}}=s,r=y(o);return R(s,t).then(m=>{const{_key:g}=m,i=p`FOR m IN messages
|
|
@@ -30,4 +30,4 @@ import{createHash as N,parseId as y,parseString as M}from"@nlabs/utils";import{a
|
|
|
30
30
|
FILTER m.added < DATE_TIMESTAMP(DATE_SUBTRACT(DATE_NOW(), 60, 'day')) && LENGTH(m.saved) > 0
|
|
31
31
|
REMOVE m IN messages
|
|
32
32
|
RETURN OLD`;return c(s).query(o).then(t=>t.all()).then(t=>t.length).catch(t=>{throw t})};export{U as addMessage,S as cleanMessages,w as deleteMessage,Q as getMessage,_ as getMessages,P as saveMessage,b as unsaveMessage,O as updateMessage};
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbWVzc2FnZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuXG5pbXBvcnQge2dldENvbnZlcnNhdGlvbn0gZnJvbSAnLi9jb252ZXJzYXRpb25zJztcbmltcG9ydCB7cGFyc2VNZXNzYWdlfSBmcm9tICcuLi9hZGFwdGVycy9tZXNzYWdlQWRhcHRlcic7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscyc7XG5pbXBvcnQge2dldExpbWl0LCB1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscyc7XG5cbmltcG9ydCB0eXBlIHtBcmFuZ29EYkxpbWl0fSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcyc7XG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7Q29udmVyc2F0aW9uVHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udmVyc2F0aW9ucy50eXBlcyc7XG5pbXBvcnQgdHlwZSB7TWVzc2FnZUlucHV0VHlwZSwgTWVzc2FnZVR5cGV9IGZyb20gJy4uL3R5cGVzL21lc3NhZ2VzLnR5cGVzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ21lc3NhZ2VzJztcblxuZXhwb3J0IGNvbnN0IGdldE1lc3NhZ2VzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIHtmcm9tLCB0b30pOiBQcm9taXNlPE1lc3NhZ2VUeXBlW10+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGNvbnZlcnNhdGlvbkRvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke2Zvcm1hdENvbnZlcnNhdGlvbklkfWA7XG5cbiAgY29uc3QgY29udmVyc2F0aW9uUXJ5ID0gYXFsYEZPUiBlIElOIGhhc0NvbnZlcnNhdGlvblxuICAgIEZJTFRFUiBlLl9mcm9tID09ICR7c2Vzc2lvbkRvY0lkfSAmJiBlLl90byA9PSAke2NvbnZlcnNhdGlvbkRvY0lkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gZWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoY29udmVyc2F0aW9uUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAudGhlbigoY29udmVyc2F0aW9ucykgPT4ge1xuICAgICAgaWYoIWNvbnZlcnNhdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbGltaXQ6IEFyYW5nb0RiTGltaXQgPSBnZXRMaW1pdChmcm9tLCB0byk7XG4gICAgICBjb25zdCBhcWxRcnk6IHN0cmluZyA9IGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICAgIEZJTFRFUiBtLmNvbnZlcnNhdGlvbklkID09IFwiJHtmb3JtYXRDb252ZXJzYXRpb25JZH1cIlxuICAgICAgICAgIFNPUlQgbS5hZGRlZCBERVNDXG4gICAgICAgICAgJHtsaW1pdC5hcWx9XG4gICAgICAgICAgU09SVCBtLmFkZGVkIEFTQ1xuICAgICAgICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICAgICAgICBGT1IgdSBJTiB1c2Vyc1xuICAgICAgICAgICAgRklMVEVSIHUuX2tleSA9PSBtLnVzZXJJZFxuICAgICAgICAgICAgTElNSVQgMVxuICAgICAgICAgICAgUkVUVVJOIHVcbiAgICAgICAgICApXG4gICAgICAgICAgUkVUVVJOIE1FUkdFKG0sIHt1c2VyOiB1c2VyfSlgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtcbiAgICBjb252ZXJzYXRpb25JZCxcbiAgICBmaWxlcyxcbiAgICBpbWFnZXMsXG4gICAgbWVzc2FnZUlkID0gY3JlYXRlSGFzaChgbWVzc2FnZS0ke3Nlc3Npb25JZH1gKVxuICB9ID0gbWVzc2FnZTtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuXG4gIGlmKGZvcm1hdENvbnZlcnNhdGlvbklkID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcigncmVxdWlyZWRfY29udmVyc2F0aW9uSWQnKTtcbiAgfVxuXG4gIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgdXBkYXRlOiBNZXNzYWdlVHlwZSA9IHtcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhtZXNzYWdlLmNvbnRlbnQsIDY0MCksXG4gICAgZmlsZXM6IGZpbGVzIHx8IFtdLFxuICAgIGltYWdlczogaW1hZ2VzIHx8IFtdLFxuICAgIG1vZGlmaWVkOiBub3dcbiAgfTtcbiAgY29uc3QgZm9ybWF0TXNnSWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcbiAgY29uc3QgaW5zZXJ0OiBNZXNzYWdlVHlwZSA9IHtcbiAgICAuLi5jbG9uZURlZXAodXBkYXRlKSxcbiAgICBfa2V5OiBmb3JtYXRNc2dJZCxcbiAgICBhZGRlZDogbm93LFxuICAgIGNvbnZlcnNhdGlvbklkOiBmb3JtYXRDb252ZXJzYXRpb25JZCxcbiAgICB1c2VySWQ6IHNlc3Npb25JZFxuICB9O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7X2tleTogJHtmb3JtYXRNc2dJZH0sIGNvbnZlcnNhdGlvbklkOiAke2Zvcm1hdENvbnZlcnNhdGlvbklkfSwgdXNlcklkOiAke3Nlc3Npb25JZH19XG4gICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgIFVQREFURSAke3VwZGF0ZX0gSU4gbWVzc2FnZXNcbiAgICBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgYWRkTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlOiBNZXNzYWdlSW5wdXRUeXBlKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IG5ld01lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gcGFyc2VNZXNzYWdlKG1lc3NhZ2UpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgSU5TRVJUICR7bmV3TWVzc2FnZX0gSU4gbWVzc2FnZXMgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbjogJ2FkZE1lc3NhZ2UnLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBsYWJlbDogJ2FkZE1lc3NhZ2UnXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICBVUERBVEUgbSBXSVRIIHtzYXZlZDogQVBQRU5EKG0uc2F2ZWQsICR7c2Vzc2lvbklkfSwgdHJ1ZSl9IElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgICAgIGlmKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbWVzc2FnZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS50b0lkKS5lbWl0KCdtZXNzYWdlX3NhdmUnLCBtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdW5zYXZlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fVxuICAgICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBSRU1PVkVfVkFMVUUobS5zYXZlZCwgJHtzZXNzaW9uSWR9KX0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBSRVRVUk4gTkVXYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUpID0+IHtcbiAgICAgICAgICBpZihtZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UuaWQpLmVtaXQoJ21lc3NhZ2VfdW5zYXZlJywgbWVzc2FnZSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZU1lc3NhZ2UgPSAoY29udGV4dDogQXBpQ29udGV4dCwgbWVzc2FnZUlkOiBzdHJpbmcsIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQobWVzc2FnZUlkKTtcblxuICByZXR1cm4gZ2V0Q29udmVyc2F0aW9uKGNvbnRleHQsIGNvbnZlcnNhdGlvbklkKVxuICAgIC50aGVuKChjb252ZXJzYXRpb246IENvbnZlcnNhdGlvblR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtfa2V5OiBjb252ZXJzYXRpb25LZXl9ID0gY29udmVyc2F0aW9uO1xuICAgICAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH0gJiYgbS50byA9PSAke2NvbnZlcnNhdGlvbktleX0gJiYgbS5mcm9tID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBSRU1PVkUgbSBJTiBtZXNzYWdlc1xuICAgICAgICBSRVRVUk4gT0xEYDtcblxuICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAudGhlbigobWVzc2FnZTogTWVzc2FnZVR5cGUpID0+IHtcbiAgICAgICAgICBpZihtZXNzYWdlKSB7XG4gICAgICAgICAgICAvLyBCcm9hZGNhc3QgdG8gbWVzc2FnZSBib3hcbiAgICAgICAgICAgIC8vIGNvbnN0IG1lc3NhZ2U6IE1lc3NhZ2VUeXBlID0gTWVzc2FnZXMuZ2V0TWVzc2FnZU9iamVjdChtZXNzYWdlKTtcbiAgICAgICAgICAgIC8vIGlvLnRvKG1lc3NhZ2UudG9JZCkuZW1pdCgnbWVzc2FnZV9kZWxldGUnLCBtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgIEZJTFRFUiBtLl9rZXkgPT0gJHtmb3JtYXRJZH1cbiAgICBSRVRVUk4gbWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFuTWVzc2FnZXMgPSAoZGF0YWJhc2VOYW1lOiBzdHJpbmcpOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICAvLyBSZW1vdmUgYWxsIG1lc3NhZ2VzIHRoYXQgYXJlIG92ZXIgNjAgZGF5cyBhbmQgbm90IHNhdmVkXG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIG0uYWRkZWQgPCBEQVRFX1RJTUVTVEFNUChEQVRFX1NVQlRSQUNUKERBVEVfTk9XKCksIDYwLCAnZGF5JykpICYmIExFTkdUSChtLnNhdmVkKSA+IDBcbiAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBNZXNzYWdlVHlwZVtdKSA9PiBsaXN0Lmxlbmd0aClcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxjQUFBQSxFQUFZLFdBQUFDLEVBQVMsZUFBQUMsTUFBa0IsZUFDL0MsT0FBUSxPQUFBQyxNQUFVLFdBRWxCLE9BQU9DLE1BQWUsbUJBRXRCLE9BQVEsbUJBQUFDLE1BQXNCLGtCQUM5QixPQUFRLGdCQUFBQyxNQUFtQiw2QkFDM0IsT0FBUSxZQUFBQyxNQUFlLDBCQUN2QixPQUFRLFlBQUFDLEVBQVUsU0FBQUMsTUFBWSx5QkFPOUIsTUFBTUMsRUFBd0IsV0FFakJDLEVBQWMsQ0FBQ0MsRUFBcUJDLEVBQXdCLENBQUMsS0FBQUMsRUFBTSxHQUFBQyxDQUFFLElBQThCLENBQzlHLEtBQU0sQ0FBQyxhQUFBQyxFQUFjLFFBQVMsQ0FBQyxPQUFRQyxDQUFTLENBQUMsRUFBSUwsRUFDL0NNLEVBQStCakIsRUFBUVksQ0FBYyxFQUNyRE0sRUFBdUIsU0FBU0YsQ0FBUyxHQUN6Q0csRUFBNEIsaUJBQWlCRixDQUFvQixHQUVqRUcsRUFBa0JsQjtBQUFBLHdCQUNGZ0IsQ0FBWSxnQkFBZ0JDLENBQWlCO0FBQUE7QUFBQSxjQUluRSxPQUFPWCxFQUFNTyxDQUFZLEVBQUUsTUFBTUssQ0FBZSxFQUM3QyxLQUFNQyxHQUFXQSxFQUFPLElBQUksQ0FBQyxFQUM3QixLQUFNQyxHQUFrQixDQUN2QixHQUFHLENBQUNBLEVBQWMsT0FDaEIsTUFBTyxDQUFDLEVBR1YsTUFBTUMsRUFBdUJoQixFQUFTTSxFQUFNQyxDQUFFLEVBQ3hDVSxFQUFpQjtBQUFBLHdDQUNXUCxDQUFvQjtBQUFBO0FBQUEsWUFFaERNLEVBQU0sR0FBRztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEs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U3RCO0FBQUE7QUFBQTtBQUFBLGtCQUtmLE9BQU9NLEVBQU1PLENBQVksRUFBRSxNQUFNUyxDQUFNLEVBQ3BDLEtBQU1ILEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLEtBQU13QixHQUF3QkEsRUFBSyxNQUFNLEVBQ3pDLE1BQU9wQixHQUFpQixDQUN2QixNQUFNQSxDQUNSLENBQUMsQ0FDTCIsCiAgIm5hbWVzIjogWyJjcmVhdGVIYXNoIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgImNsb25lRGVlcCIsICJnZXRDb252ZXJzYXRpb24iLCAicGFyc2VNZXNzYWdlIiwgImxvZ0Vycm9yIiwgImdldExpbWl0IiwgInVzZURiIiwgImV2ZW50Q2F0ZWdvcnkiLCAiZ2V0TWVzc2FnZXMiLCAiY29udGV4dCIsICJjb252ZXJzYXRpb25JZCIsICJmcm9tIiwgInRvIiwgImRhdGFiYXNlTmFtZSIsICJzZXNzaW9uSWQiLCAiZm9ybWF0Q29udmVyc2F0aW9uSWQiLCAic2Vzc2lvbkRvY0lkIiwgImNvbnZlcnNhdGlvbkRvY0lkIiwgImNvbnZlcnNhdGlvblFyeSIsICJjdXJzb3IiLCAiY29udmVyc2F0aW9ucyIsICJsaW1pdCIsICJhcWxRcnkiLCAiZXJyb3IiLCAidXBkYXRlTWVzc2FnZSIsICJtZXNzYWdlIiwgImZpbGVzIiwgImltYWdlcyIsICJtZXNzYWdlSWQiLCAibm93IiwgInVwZGF0ZSIsICJmb3JtYXRNc2dJZCIsICJpbnNlcnQiLCAiYWRkTWVzc2FnZSIsICJuZXdNZXNzYWdlIiwgInNhdmVNZXNzYWdlIiwgImZvcm1hdElkIiwgImNvbnZlcnNhdGlvbiIsICJjb252ZXJzYXRpb25LZXkiLCAidW5zYXZlTWVzc2FnZSIsICJkZWxldGVNZXNzYWdlIiwgImdldE1lc3NhZ2UiLCAiY2xlYW5NZXNzYWdlcyIsICJsaXN0Il0KfQo=
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbWVzc2FnZXMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2Nsb25lRGVlcH0gZnJvbSAnQG5sYWJzL3V0aWxzL29iamVjdHMvY2xvbmUnO1xuaW1wb3J0IHtjcmVhdGVIYXNoLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtwYXJzZU1lc3NhZ2V9IGZyb20gJy4uL2FkYXB0ZXJzL21lc3NhZ2VBZGFwdGVyLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcbmltcG9ydCB7Z2V0TGltaXQsIHVzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0Q29udmVyc2F0aW9ufSBmcm9tICcuL2NvbnZlcnNhdGlvbnMuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXJhbmdvRGJMaW1pdH0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0NvbnZlcnNhdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL2NvbnZlcnNhdGlvbnMudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge01lc3NhZ2VJbnB1dFR5cGUsIE1lc3NhZ2VUeXBlfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlcy50eXBlcy5qcyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdtZXNzYWdlcyc7XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlcyA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCB7ZnJvbSwgdG99KTogUHJvbWlzZTxNZXNzYWdlVHlwZVtdPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0Q29udmVyc2F0aW9uSWQ6IHN0cmluZyA9IHBhcnNlSWQoY29udmVyc2F0aW9uSWQpO1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuICBjb25zdCBjb252ZXJzYXRpb25Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMvJHtmb3JtYXRDb252ZXJzYXRpb25JZH1gO1xuICBjb25zdCBjb252ZXJzYXRpb25RcnkgPSBhcWxgRk9SIGUgSU4gaGFzQ29udmVyc2F0aW9uXG4gICAgRklMVEVSIGUuX2Zyb20gPT0gJHtzZXNzaW9uRG9jSWR9ICYmIGUuX3RvID09ICR7Y29udmVyc2F0aW9uRG9jSWR9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBlYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShjb252ZXJzYXRpb25RcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChjb252ZXJzYXRpb25zKSA9PiB7XG4gICAgICBpZighY29udmVyc2F0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBsaW1pdDogQXJhbmdvRGJMaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcbiAgICAgIGNvbnN0IGFxbFFyeTogc3RyaW5nID0gYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICAgICAgRklMVEVSIG0uY29udmVyc2F0aW9uSWQgPT0gXCIke2Zvcm1hdENvbnZlcnNhdGlvbklkfVwiXG4gICAgICAgICAgU09SVCBtLmFkZGVkIERFU0NcbiAgICAgICAgICAke2xpbWl0LmFxbH1cbiAgICAgICAgICBTT1JUIG0uYWRkZWQgQVNDXG4gICAgICAgICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgICAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICAgICAgICBGSUxURVIgdS5fa2V5ID09IG0udXNlcklkXG4gICAgICAgICAgICBMSU1JVCAxXG4gICAgICAgICAgICBSRVRVUk4gdVxuICAgICAgICAgIClcbiAgICAgICAgICBSRVRVUk4gTUVSR0UobSwge3VzZXI6IHVzZXJ9KWA7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2U6IE1lc3NhZ2VJbnB1dFR5cGUpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge1xuICAgIGNvbnZlcnNhdGlvbklkLFxuICAgIGZpbGVzLFxuICAgIGltYWdlcyxcbiAgICBtZXNzYWdlSWQgPSBjcmVhdGVIYXNoKGBtZXNzYWdlLSR7c2Vzc2lvbklkfWApXG4gIH0gPSBtZXNzYWdlO1xuICBjb25zdCBmb3JtYXRDb252ZXJzYXRpb25JZDogc3RyaW5nID0gcGFyc2VJZChjb252ZXJzYXRpb25JZCk7XG5cbiAgaWYoZm9ybWF0Q29udmVyc2F0aW9uSWQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdyZXF1aXJlZF9jb252ZXJzYXRpb25JZCcpO1xuICB9XG5cbiAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICBjb25zdCB1cGRhdGU6IE1lc3NhZ2VUeXBlID0ge1xuICAgIGNvbnRlbnQ6IHBhcnNlU3RyaW5nKG1lc3NhZ2UuY29udGVudCwgNjQwKSxcbiAgICBmaWxlczogZmlsZXMgfHwgW10sXG4gICAgaW1hZ2VzOiBpbWFnZXMgfHwgW10sXG4gICAgbW9kaWZpZWQ6IG5vd1xuICB9O1xuICBjb25zdCBmb3JtYXRNc2dJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuICBjb25zdCBpbnNlcnQ6IE1lc3NhZ2VUeXBlID0ge1xuICAgIC4uLmNsb25lRGVlcCh1cGRhdGUpLFxuICAgIF9rZXk6IGZvcm1hdE1zZ0lkLFxuICAgIGFkZGVkOiBub3csXG4gICAgY29udmVyc2F0aW9uSWQ6IGZvcm1hdENvbnZlcnNhdGlvbklkLFxuICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHtfa2V5OiAke2Zvcm1hdE1zZ0lkfSwgY29udmVyc2F0aW9uSWQ6ICR7Zm9ybWF0Q29udmVyc2F0aW9uSWR9LCB1c2VySWQ6ICR7c2Vzc2lvbklkfX1cbiAgICBJTlNFUlQgJHtpbnNlcnR9XG4gICAgVVBEQVRFICR7dXBkYXRlfSBJTiBtZXNzYWdlc1xuICAgIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2U6IE1lc3NhZ2VJbnB1dFR5cGUpOiBQcm9taXNlPE1lc3NhZ2VUeXBlPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgbmV3TWVzc2FnZTogTWVzc2FnZVR5cGUgPSBwYXJzZU1lc3NhZ2UobWVzc2FnZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBJTlNFUlQgJHtuZXdNZXNzYWdlfSBJTiBtZXNzYWdlcyBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uOiAnYWRkTWVzc2FnZScsXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiAnYWRkTWVzc2FnZSdcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2VJZDogc3RyaW5nLCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1lc3NhZ2VJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252ZXJzYXRpb25JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgbSBJTiBtZXNzYWdlc1xuICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgIFVQREFURSBtIFdJVEgge3NhdmVkOiBBUFBFTkQobS5zYXZlZCwgJHtzZXNzaW9uSWR9LCB0cnVlKX0gSU4gbWVzc2FnZXNcbiAgICAgICAgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKSA9PiB7XG4gICAgICAgICAgaWYobWVzc2FnZSkge1xuICAgICAgICAgICAgLy8gQnJvYWRjYXN0IHRvIG1lc3NhZ2UgYm94XG4gICAgICAgICAgICAvLyBjb25zdCBtZXNzYWdlOiBNZXNzYWdlVHlwZSA9IE1lc3NhZ2VzLmdldE1lc3NhZ2VPYmplY3QobWVzc2FnZSk7XG4gICAgICAgICAgICAvLyBpby50byhtZXNzYWdlLnRvSWQpLmVtaXQoJ21lc3NhZ2Vfc2F2ZScsIG1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCB1bnNhdmVNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2VJZDogc3RyaW5nLCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1lc3NhZ2VJZCk7XG5cbiAgcmV0dXJuIGdldENvbnZlcnNhdGlvbihjb250ZXh0LCBjb252ZXJzYXRpb25JZClcbiAgICAudGhlbigoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25UeXBlKSA9PiB7XG4gICAgICBjb25zdCB7X2tleTogY29udmVyc2F0aW9uS2V5fSA9IGNvbnZlcnNhdGlvbjtcbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgICBGSUxURVIgbS5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIG0udG8gPT0gJHtjb252ZXJzYXRpb25LZXl9XG4gICAgICAgICAgVVBEQVRFIG0gV0lUSCB7c2F2ZWQ6IFJFTU9WRV9WQUxVRShtLnNhdmVkLCAke3Nlc3Npb25JZH0pfSBJTiBtZXNzYWdlc1xuICAgICAgICAgIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgICAgIGlmKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbWVzc2FnZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS5pZCkuZW1pdCgnbWVzc2FnZV91bnNhdmUnLCBtZXNzYWdlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlTWVzc2FnZSA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBtZXNzYWdlSWQ6IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZyk6IFByb21pc2U8TWVzc2FnZVR5cGU+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRJZDogc3RyaW5nID0gcGFyc2VJZChtZXNzYWdlSWQpO1xuXG4gIHJldHVybiBnZXRDb252ZXJzYXRpb24oY29udGV4dCwgY29udmVyc2F0aW9uSWQpXG4gICAgLnRoZW4oKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge19rZXk6IGNvbnZlcnNhdGlvbktleX0gPSBjb252ZXJzYXRpb247XG4gICAgICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIG0gSU4gbWVzc2FnZXNcbiAgICAgICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfSAmJiBtLnRvID09ICR7Y29udmVyc2F0aW9uS2V5fSAmJiBtLmZyb20gPT0gJHtzZXNzaW9uSWR9XG4gICAgICAgIFJFTU9WRSBtIElOIG1lc3NhZ2VzXG4gICAgICAgIFJFVFVSTiBPTERgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChtZXNzYWdlOiBNZXNzYWdlVHlwZSkgPT4ge1xuICAgICAgICAgIGlmKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgIC8vIEJyb2FkY2FzdCB0byBtZXNzYWdlIGJveFxuICAgICAgICAgICAgLy8gY29uc3QgbWVzc2FnZTogTWVzc2FnZVR5cGUgPSBNZXNzYWdlcy5nZXRNZXNzYWdlT2JqZWN0KG1lc3NhZ2UpO1xuICAgICAgICAgICAgLy8gaW8udG8obWVzc2FnZS50b0lkKS5lbWl0KCdtZXNzYWdlX2RlbGV0ZScsIG1lc3NhZ2UpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRNZXNzYWdlID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG1lc3NhZ2VJZDogc3RyaW5nKTogUHJvbWlzZTxNZXNzYWdlVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdElkOiBzdHJpbmcgPSBwYXJzZUlkKG1lc3NhZ2VJZCk7XG5cbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgRklMVEVSIG0uX2tleSA9PSAke2Zvcm1hdElkfVxuICAgIFJFVFVSTiBtYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2xlYW5NZXNzYWdlcyA9IChkYXRhYmFzZU5hbWU6IHN0cmluZyk6IFByb21pc2U8bnVtYmVyPiA9PiB7XG4gIC8vIFJlbW92ZSBhbGwgbWVzc2FnZXMgdGhhdCBhcmUgb3ZlciA2MCBkYXlzIGFuZCBub3Qgc2F2ZWRcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBtIElOIG1lc3NhZ2VzXG4gICAgICBGSUxURVIgbS5hZGRlZCA8IERBVEVfVElNRVNUQU1QKERBVEVfU1VCVFJBQ1QoREFURV9OT1coKSwgNjAsICdkYXknKSkgJiYgTEVOR1RIKG0uc2F2ZWQpID4gMFxuICAgICAgUkVNT1ZFIG0gSU4gbWVzc2FnZXNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLnRoZW4oKGxpc3Q6IE1lc3NhZ2VUeXBlW10pID0+IGxpc3QubGVuZ3RoKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUFRLGFBQUFBLE1BQWdCLDZCQUN4QixPQUFRLGNBQUFDLEVBQVksV0FBQUMsRUFBUyxlQUFBQyxNQUFrQiwrQkFDL0MsT0FBUSxPQUFBQyxNQUFVLFdBR2xCLE9BQVEsZ0JBQUFDLE1BQW1CLGdDQUMzQixPQUFRLFlBQUFDLE1BQWUsNkJBQ3ZCLE9BQVEsWUFBQUMsRUFBVSxTQUFBQyxNQUFZLDRCQUM5QixPQUFRLG1CQUFBQyxNQUFzQixxQkFPOUIsTUFBTUMsRUFBd0IsV0FFakJDLEVBQWMsQ0FBQ0MsRUFBcUJDLEVBQXdCLENBQUMsS0FBQUMsRUFBTSxHQUFBQyxDQUFFLElBQThCLENBQzlHLEtBQU0sQ0FBQyxhQUFBQyxFQUFjLFFBQVMsQ0FBQyxPQUFRQyxDQUFTLENBQUMsRUFBSUwsRUFDL0NNLEVBQStCaEIsRUFBUVcsQ0FBYyxFQUNyRE0sRUFBdUIsU0FBU0YsQ0FBUyxHQUN6Q0csRUFBNEIsaUJBQWlCRixDQUFvQixHQUNqRUcsRUFBa0JqQjtBQUFBLHdCQUNGZSxDQUFZLGdCQUFnQkMsQ0FBaUI7QUFBQTtBQUFBLGNBSW5FLE9BQU9aLEVBQU1RLENBQVksRUFBRSxNQUFNSyxDQUFlLEVBQzdDLEtBQU1DLEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLEtBQU1DLEdBQWtCLENBQ3ZCLEdBQUcsQ0FBQ0EsRUFBYyxPQUNoQixNQUFPLENBQUMsRUFHVixNQUFNQyxFQUF1QmpCLEVBQVNPLEVBQU1DLENBQUUsRUFDeENVLEVBQWlCO0FBQUEsd0NBQ1dQLENBQW9CO0FBQUE7QUFBQSxZ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TUFBTUEsQ0FDUixDQUFDLENBQ0wsRUFFYW1CLEVBQWlCN0IsR0FBMEMsQ0FFdEUsTUFBTVMsRUFBU3JCO0FBQUE7QUFBQTtBQUFBLGtCQUtmLE9BQU9JLEVBQU1RLENBQVksRUFBRSxNQUFNUyxDQUFNLEVBQ3BDLEtBQU1ILEdBQVdBLEVBQU8sSUFBSSxDQUFDLEVBQzdCLEtBQU13QixHQUF3QkEsRUFBSyxNQUFNLEVBQ3pDLE1BQU9wQixHQUFpQixDQUN2QixNQUFNQSxDQUNSLENBQUMsQ0FDTCIsCiAgIm5hbWVzIjogWyJjbG9uZURlZXAiLCAiY3JlYXRlSGFzaCIsICJwYXJzZUlkIiwgInBhcnNlU3RyaW5nIiwgImFxbCIsICJwYXJzZU1lc3NhZ2UiLCAibG9nRXJyb3IiLCAiZ2V0TGltaXQiLCAidXNlRGIiLCAiZ2V0Q29udmVyc2F0aW9uIiwgImV2ZW50Q2F0ZWdvcnkiLCAiZ2V0TWVzc2FnZXMiLCAiY29udGV4dCIsICJjb252ZXJzYXRpb25JZCIsICJmcm9tIiwgInRvIiwgImRhdGFiYXNlTmFtZSIsICJzZXNzaW9uSWQiLCAiZm9ybWF0Q29udmVyc2F0aW9uSWQiLCAic2Vzc2lvbkRvY0lkIiwgImNvbnZlcnNhdGlvbkRvY0lkIiwgImNvbnZlcnNhdGlvblFyeSIsICJjdXJzb3IiLCAiY29udmVyc2F0aW9ucyIsICJsaW1pdCIsICJhcWxRcnkiLCAiZXJyb3IiLCAidXBkYXRlTWVzc2FnZSIsICJtZXNzYWdlIiwgImZpbGVzIiwgImltYWdlcyIsICJtZXNzYWdlSWQiLCAibm93IiwgInVwZGF0ZSIsICJmb3JtYXRNc2dJZCIsICJpbnNlcnQiLCAiYWRkTWVzc2FnZSIsICJuZXdNZXNzYWdlIiwgInNhdmVNZXNzYWdlIiwgImZvcm1hdElkIiwgImNvbnZlcnNhdGlvbiIsICJjb252ZXJzYXRpb25LZXkiLCAidW5zYXZlTWVzc2FnZSIsICJkZWxldGVNZXNzYWdlIiwgImdldE1lc3NhZ2UiLCAiY2xlYW5NZXNzYWdlcyIsICJsaXN0Il0KfQo=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/
|
|
5
|
+
import { Provider, Responses } from 'apn';
|
|
6
|
+
import type { NotificationType } from '../types/notifications.types.js';
|
|
7
|
+
export declare const getApnProvider: () => Provider;
|
|
8
|
+
export declare const pushNotification: (deviceTokens: string[], note: NotificationType) => Promise<Responses>;
|
|
9
|
+
export declare const clearBadges: (deviceTokens: string[]) => Promise<Responses>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Notification as a,Provider as p}from"apn";import{Config as o}from"../config";const r=()=>new p({ca:o.get("app.apn.ca"),cert:o.get("app.apn.cert"),key:o.get("app.apn.key"),production:o.get("environment")==="prod"}),f=(n,t)=>{const i=r(),e=new a;return e.topic=o.get("app.apn.id"),e.alert=t.message,t.data&&(e.mutableContent=!0,e.payload=t.data),t.badge!==void 0&&(e.badge=t.badge),i.send(e,n)},g=n=>{const t=r(),i=new a;return i.badge=0,t.send(i,n)};export{g as clearBadges,r as getApnProvider,f as pushNotification};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import{Notification as a,Provider as p}from"apn";import{Config as o}from"../config.js";const r=()=>new p({ca:o.get("app.apn.ca"),cert:o.get("app.apn.cert"),key:o.get("app.apn.key"),production:o.get("environment")==="prod"}),f=(n,t)=>{const i=r(),e=new a;return e.topic=o.get("app.apn.id"),e.alert=t.message,t.data&&(e.mutableContent=!0,e.payload=t.data),t.badge!==void 0&&(e.badge=t.badge),i.send(e,n)},g=n=>{const t=r(),i=new a;return i.badge=0,t.send(i,n)};export{g as clearBadges,r as getApnProvider,f as pushNotification};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvbm90aWZpY2F0aW9ucy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbi8vIGNvbnN0IGV2ZW50Q2F0ZWdvcnk6IHN0cmluZyA9ICdub3RpZmljYXRpb25zJztcbi8vIFB1c2ggTm90aWZpY2F0aW9uc1xuaW1wb3J0IHtOb3RpZmljYXRpb24gYXMgQVBOTm90aWZpY2F0aW9uLCBQcm92aWRlciwgUmVzcG9uc2VzfSBmcm9tICdhcG4nO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcblxuaW1wb3J0IHR5cGUge05vdGlmaWNhdGlvblR5cGV9IGZyb20gJy4uL3R5cGVzL25vdGlmaWNhdGlvbnMudHlwZXMuanMnO1xuXG5leHBvcnQgY29uc3QgZ2V0QXBuUHJvdmlkZXIgPSAoKSA9PiBuZXcgUHJvdmlkZXIoe1xuICBjYTogQ29uZmlnLmdldCgnYXBwLmFwbi5jYScpLFxuICBjZXJ0OiBDb25maWcuZ2V0KCdhcHAuYXBuLmNlcnQnKSxcbiAga2V5OiBDb25maWcuZ2V0KCdhcHAuYXBuLmtleScpLFxuICBwcm9kdWN0aW9uOiBDb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpID09PSAncHJvZCdcbn0pO1xuXG5leHBvcnQgY29uc3QgcHVzaE5vdGlmaWNhdGlvbiA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdLCBub3RlOiBOb3RpZmljYXRpb25UeXBlKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyOiBQcm92aWRlciA9IGdldEFwblByb3ZpZGVyKCk7XG4gIGNvbnN0IG5vdGlmaWNhdGlvbjogQVBOTm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24udG9waWMgPSBDb25maWcuZ2V0KCdhcHAuYXBuLmlkJyk7XG4gIG5vdGlmaWNhdGlvbi5hbGVydCA9IG5vdGUubWVzc2FnZTtcblxuICBpZihub3RlLmRhdGEpIHtcbiAgICBub3RpZmljYXRpb24ubXV0YWJsZUNvbnRlbnQgPSB0cnVlO1xuICAgIG5vdGlmaWNhdGlvbi5wYXlsb2FkID0gbm90ZS5kYXRhO1xuICB9XG5cbiAgaWYobm90ZS5iYWRnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgbm90aWZpY2F0aW9uLmJhZGdlID0gbm90ZS5iYWRnZTtcbiAgfVxuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhckJhZGdlcyA9IChkZXZpY2VUb2tlbnM6IHN0cmluZ1tdKTogUHJvbWlzZTxSZXNwb25zZXM+ID0+IHtcbiAgLy8gUHVzaCBub3RpZmljYXRpb24gdG8gZGV2aWNlXG4gIGNvbnN0IHByb3ZpZGVyID0gZ2V0QXBuUHJvdmlkZXIoKTtcbiAgY29uc3Qgbm90aWZpY2F0aW9uID0gbmV3IEFQTk5vdGlmaWNhdGlvbigpO1xuICBub3RpZmljYXRpb24uYmFkZ2UgPSAwO1xuXG4gIHJldHVybiBwcm92aWRlci5zZW5kKG5vdGlmaWNhdGlvbiwgZGV2aWNlVG9rZW5zKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFNQSxPQUFRLGdCQUFnQkEsRUFBaUIsWUFBQUMsTUFBMEIsTUFFbkUsT0FBUSxVQUFBQyxNQUFhLGVBSWQsTUFBTUMsRUFBaUIsSUFBTSxJQUFJRixFQUFTLENBQy9DLEdBQUlDLEVBQU8sSUFBSSxZQUFZLEVBQzNCLEtBQU1BLEVBQU8sSUFBSSxjQUFjLEVBQy9CLElBQUtBLEVBQU8sSUFBSSxhQUFhLEVBQzdCLFdBQVlBLEVBQU8sSUFBSSxhQUFhLElBQU0sTUFDNUMsQ0FBQyxFQUVZRSxFQUFtQixDQUFDQyxFQUF3QkMsSUFBK0MsQ0FFdEcsTUFBTUMsRUFBcUJKLEVBQWUsRUFDcENLLEVBQWdDLElBQUlSLEVBQzFDLE9BQUFRLEVBQWEsTUFBUU4sRUFBTyxJQUFJLFlBQVksRUFDNUNNLEVBQWEsTUFBUUYsRUFBSyxRQUV2QkEsRUFBSyxPQUNORSxFQUFhLGVBQWlCLEdBQzlCQSxFQUFhLFFBQVVGLEVBQUssTUFHM0JBLEVBQUssUUFBVSxTQUNoQkUsRUFBYSxNQUFRRixFQUFLLE9BR3JCQyxFQUFTLEtBQUtDLEVBQWNILENBQVksQ0FDakQsRUFFYUksRUFBZUosR0FBK0MsQ0FFekUsTUFBTUUsRUFBV0osRUFBZSxFQUMxQkssRUFBZSxJQUFJUixFQUN6QixPQUFBUSxFQUFhLE1BQVEsRUFFZEQsRUFBUyxLQUFLQyxFQUFjSCxDQUFZLENBQ2pEIiwKICAibmFtZXMiOiBbIkFQTk5vdGlmaWNhdGlvbiIsICJQcm92aWRlciIsICJDb25maWciLCAiZ2V0QXBuUHJvdmlkZXIiLCAicHVzaE5vdGlmaWNhdGlvbiIsICJkZXZpY2VUb2tlbnMiLCAibm90ZSIsICJwcm92aWRlciIsICJub3RpZmljYXRpb24iLCAiY2xlYXJCYWRnZXMiXQp9Cg==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ApiContext } from '../types/auth.types.js';
|
|
2
|
+
import { PaymentBankAccount, PaymentCardType, PaymentCharge, PaymentTransfer } from '../types/payments.types.js';
|
|
3
|
+
import { UserType } from '../types/users.types.js';
|
|
4
|
+
export declare const addCustomerAccount: (context: ApiContext) => Promise<boolean>;
|
|
5
|
+
export declare const addBankAccount: (context: ApiContext, bankAccount: PaymentBankAccount) => Promise<boolean>;
|
|
6
|
+
export declare const addCreditCard: (context: ApiContext, card: PaymentCardType) => Promise<UserType>;
|
|
7
|
+
export declare const updateCreditCard: (context: ApiContext, card: PaymentCardType) => Promise<PaymentCardType>;
|
|
8
|
+
export declare const getCreditCards: (context: ApiContext) => Promise<PaymentCardType[]>;
|
|
9
|
+
export declare const deleteCreditCard: (context: ApiContext, cardId: string) => Promise<boolean>;
|
|
10
|
+
export declare const deleteBankAccount: (context: ApiContext, bankId: string) => Promise<boolean>;
|
|
11
|
+
export declare const createPaymentTransfer: (context: ApiContext, transfer: PaymentTransfer) => Promise<PaymentTransfer>;
|
|
12
|
+
export declare const createPaymentHold: (context: ApiContext, payment: PaymentCharge) => Promise<PaymentCharge>;
|
package/lib/actions/payments.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{createHash as Y,parseChar as
|
|
1
|
+
import{parseNum as A}from"@nlabs/utils/parsers/numbers";import{createHash as Y,parseChar as x,parseId as K,parseString as B,parseVarChar as _}from"@nlabs/utils/parsers/strings";import{aql as T}from"arangojs";import{ErrorTypes as V}from"../types/error.types.js";import{logError as L,UserError as h}from"../utils/analyticsUtils.js";import{useDb as I}from"../utils/arangodbUtils.js";import{getStripeClient as N}from"../utils/stripeUtils.js";import{getUser as H}from"./users.js";const M="payments",pe=r=>{const t="addCustomerAccount",{databaseName:c,session:{userId:n,username:s}={}}=r;return N().customers.create({metadata:{userId:n,username:s}}).then(o=>{const d={modified:Date.now(),stripeCustomerId:o.id},m=T`UPDATE ${n} WITH ${d} IN users LIMIT 1 RETURN NEW`;return I(c).query(m).then(y=>y.next()).then(y=>!!y).catch(y=>L({action:t,category:M,label:V.DATABASE_ERROR},y,r).then(()=>null))})},le=(r,t)=>{const c="addPaymentAccountBank",{databaseName:n,session:{userId:s}={}}=r,{accountNumber:a,fullName:o,routing:u}=t,d=B(a,32);if(d==="")throw new h("required_account_number");const m=_(o,128);if(m==="")throw new h("required_full_name");const y=B(u,32);if(y==="")throw new h("required_routing_number");return H(r,{userId:s}).then(p=>{const{stripeAccountId:l}=p,f=N();return f.tokens.create({bank_account:{account_holder_name:m,account_holder_type:"individual",account_number:d,country:"US",currency:"USD",routing_number:y}}).then(e=>f.customers.createSource(l,{source:e.id})).then(e=>{const i=Date.now(),E={bankAccount:t,bankFullName:m,bankId:e.id,bankRouting:y,modified:i},b=T`UPDATE ${s} WITH ${E} IN users LIMIT 1 RETURN NEW`;return I(n).query(b).then(g=>g.next()).then(g=>g)}).catch(e=>e.message==="A bank account with that routing number and account number already exists for this customer."?L({action:c,category:M,label:"bank_account_exists"},e,r).then(()=>null):L({action:c,category:M,label:"payment_error"},e,r).then(()=>null))})},fe=(r,t)=>{const c="addCreditCard",{databaseName:n,session:{userId:s}}=r;return H(r,{userId:s}).then(a=>{const{stripeAccountId:o}=a,{accountNumber:u,city:d,country:m,cvc:y,expMonth:p,expYear:l,fullName:f,street1:e,street2:i,state:E,zip:b}=t,g=A(u,16);if(!g)throw new h("required_credit_card_number");const P=A(p,2);if(!P)throw new h("required_credit_card_exp_month");const q=A(l,2);if(!q)throw new h("required_credit_card_exp_year");const U=A(y,3),C={},v=_(d,32);v&&(C.city=v);const S=x(m,2);S&&(C.country=S);const R=_(f,32);R&&(C.fullName=R);const k=_(e,32);k&&(C.street1=k);const F=_(i,32);F&&(C.street2=F);const Q=x(E,2);Q&&(C.state=Q);const $=_(b,10);$&&(C.zip=$);const W=N();return W.tokens.create({card:{address_city:v,address_country:S,address_line1:k,address_line2:F,address_state:Q,address_zip:$,cvc:U.toString(),exp_month:P.toString(),exp_year:q.toString(),name:f,number:g.toString()}}).then(D=>W.customers.createSource(o,{source:D.id})).then(D=>{const O=D,Z=O.brand||"",j=O.cvc_check||"",G=O.last4||"",z=Date.now(),J={...C,_key:Y(`user-payment-${s}`),accountNumber:G,added:z,brand:Z,cvcCheck:j,expMonth:p,expYear:l,modified:z,userId:s},X=T`INSERT ${J} IN creditCards RETURN NEW`;return I(n).query(X).then(w=>w.next()).then(w=>{if(w){const{_id:ee,_key:re}=t,te=I(n).collection("hasPayment"),ne=Y(`payment-${re}`),se={_from:`users/${s}`,_key:ne,_to:ee};return te.save(se,{returnNew:!0}).then(()=>t)}return w}).catch(w=>L({action:c,category:M,label:"payment_error"},w,r).then(()=>null))})})},Ce=(r,t)=>{const{databaseName:c,session:{userId:n}}=r,{city:s,country:a,expMonth:o,expYear:u,fullName:d,id:m,street1:y,state:p,zip:l}=t,f=K(m);if(f)throw new h("required_credit_card_id");const e={},i=A(o,2),E=A(u,2),b=_(s,32),g=x(a,2),P=_(d,32),q=B(y,32),U=x(p,2),C=_(l,10);i&&(e.expMonth=i),E&&(e.expYear=E),b&&(e.city=b),g&&(e.country=g),P&&(e.fullName=P),q&&(e.street1=q),U&&(e.state=U),C&&(e.zip=C);const S=T`
|
|
2
2
|
LET updatedCard = FIRST(
|
|
3
3
|
FOR c IN creditCards
|
|
4
|
-
FILTER c._key == ${
|
|
4
|
+
FILTER c._key == ${f} && c.userId == ${n}
|
|
5
5
|
UPDATE c WITH ${e} IN creditCards
|
|
6
6
|
LIMIT 1
|
|
7
7
|
RETURN NEW
|
|
@@ -12,9 +12,9 @@ import{createHash as Y,parseChar as U,parseId as K,parseNum as P,parseString as
|
|
|
12
12
|
LIMIT 1
|
|
13
13
|
RETURN u
|
|
14
14
|
)
|
|
15
|
-
RETURN {user: user, card: updatedCard}`;return
|
|
15
|
+
RETURN {user: user, card: updatedCard}`;return I(c).query(S).then(R=>R.next()).then((R={card:{},user:{}})=>{const k=R.card,{user:F}=R;if(!k)throw new h("not_found");const{stripeCustomerId:Q}=F,{stripeId:$}=t,W=N(),D={address_city:b,address_country:g,address_line1:q,address_state:U,address_zip:C,exp_month:i.toString(),exp_year:E.toString(),name:P};return W.customers.updateSource(Q,$,D).then(()=>t).catch(O=>{throw new h("payment_error")})})},Ie=r=>{const t="getCreditCards",{databaseName:c,session:{userId:n}}=r,s=T`FOR c IN creditCards
|
|
16
16
|
FILTER c.userId == ${n}
|
|
17
|
-
RETURN c`;return
|
|
17
|
+
RETURN c`;return I(c).query(s).then(a=>a.all()).then((a=[])=>a).catch(a=>L({action:t,category:M,label:V.DATABASE_ERROR},a,r).then(()=>null))},he=(r,t)=>{const{databaseName:c,session:{userId:n}}=r,s=K(t),a=T`
|
|
18
18
|
LET card = FIRST(
|
|
19
19
|
FOR c IN creditCards
|
|
20
20
|
FILTER c._key == ${s} && c.userId == ${n}
|
|
@@ -28,5 +28,5 @@ import{createHash as Y,parseChar as U,parseId as K,parseNum as P,parseString as
|
|
|
28
28
|
LIMIT 1
|
|
29
29
|
RETURN u
|
|
30
30
|
)
|
|
31
|
-
RETURN {user: user, card: card}`;return
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcGF5bWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlQ2hhciwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nLCBwYXJzZVZhckNoYXJ9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcbmltcG9ydCBzdHJpcGUgZnJvbSAnc3RyaXBlJztcblxuaW1wb3J0IHtBcGlDb250ZXh0LCBQYXltZW50QmFua0FjY291bnQsIFBheW1lbnRDYXJkVHlwZSwgUGF5bWVudENoYXJnZSwgUGF5bWVudFRyYW5zZmVyLCBVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge2dldFVzZXJ9IGZyb20gJy4vdXNlcnMnO1xuaW1wb3J0IHtsb2dFcnJvciwgVXNlckVycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscyc7XG5pbXBvcnQge2dldFN0cmlwZUNsaWVudH0gZnJvbSAnLi4vdXRpbHMvc3RyaXBlVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7RWRnZUNvbGxlY3Rpb259IGZyb20gJ2FyYW5nb2pzL2NvbGxlY3Rpb25zJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICdwYXltZW50cyc7XG5cbmV4cG9ydCBjb25zdCBhZGRDdXN0b21lckFjY291bnQgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8Ym9vbGVhbj4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkQ3VzdG9tZXJBY2NvdW50JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkLCB1c2VybmFtZX19ID0gY29udGV4dDtcblxuICBjb25zdCBzdHJpcGVDbGllbnQgPSBnZXRTdHJpcGVDbGllbnQoKTtcblxuICByZXR1cm4gc3RyaXBlQ2xpZW50LmN1c3RvbWVyc1xuICAgIC5jcmVhdGUoe1xuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWQsXG4gICAgICAgIHVzZXJuYW1lXG4gICAgICB9XG4gICAgfSlcbiAgICAudGhlbigoY3VzdG9tZXIpID0+IHtcbiAgICAgIC8vIENyZWF0ZSBzZXNzaW9uXG4gICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gICAgICBjb25zdCB1cGRhdGU6IFVzZXJUeXBlID0ge1xuICAgICAgICBtb2RpZmllZDogbm93LFxuICAgICAgICBzdHJpcGVDdXN0b21lcklkOiBjdXN0b21lci5pZFxuICAgICAgfTtcblxuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHtzZXNzaW9uSWR9IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzIExJTUlUIDEgUkVUVVJOIE5FV2A7XG5cbiAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgLnRoZW4oKHVwZGF0ZWRVc2VyOiBVc2VyVHlwZSkgPT4gISF1cGRhdGVkVXNlcilcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZEJhbmtBY2NvdW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGJhbmtBY2NvdW50OiBQYXltZW50QmFua0FjY291bnQpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZFBheW1lbnRBY2NvdW50QmFuayc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICAvLyBQYXJhbXNcbiAgY29uc3Qge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgZnVsbE5hbWUsXG4gICAgcm91dGluZ1xuICB9ID0gYmFua0FjY291bnQ7XG5cbiAgY29uc3QgZm9ybWF0QWNjb3VudDogc3RyaW5nID0gcGFyc2VTdHJpbmcoYWNjb3VudE51bWJlciwgMzIpO1xuXG4gIGlmKGZvcm1hdEFjY291bnQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfYWNjb3VudF9udW1iZXInKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdEZ1bGxOYW1lOiBzdHJpbmcgPSBwYXJzZVZhckNoYXIoZnVsbE5hbWUsIDEyOCk7XG5cbiAgaWYoZm9ybWF0RnVsbE5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfZnVsbF9uYW1lJyk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRSb3V0aW5nOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhyb3V0aW5nLCAzMik7XG5cbiAgaWYoZm9ybWF0Um91dGluZyA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdyZXF1aXJlZF9yb3V0aW5nX251bWJlcicpO1xuICB9XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogc2Vzc2lvbklkfSlcbiAgICAudGhlbigodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtzdHJpcGVBY2NvdW50SWR9ID0gdXNlcjtcbiAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gICAgICAvLyBDcmVhdGUgYSB0b2tlbiBmaXJzdCwgdGhlbiB1c2UgdGhlIHRva2VuIGFzIHRoZSBzb3VyY2VcbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQudG9rZW5zLmNyZWF0ZSh7XG4gICAgICAgIGJhbmtfYWNjb3VudDoge1xuICAgICAgICAgIGFjY291bnRfaG9sZGVyX25hbWU6IGZvcm1hdEZ1bGxOYW1lLFxuICAgICAgICAgIGFjY291bnRfaG9sZGVyX3R5cGU6ICdpbmRpdmlkdWFsJyxcbiAgICAgICAgICBhY2NvdW50X251bWJlcjogZm9ybWF0QWNjb3VudCxcbiAgICAgICAgICBjb3VudHJ5OiAnVVMnLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICByb3V0aW5nX251bWJlcjogZm9ybWF0Um91dGluZ1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgICAudGhlbigodG9rZW4pID0+IHN0cmlwZUNsaWVudC5jdXN0b21lcnMuY3JlYXRlU291cmNlKFxuICAgICAgICAgIHN0cmlwZUFjY291bnRJZCxcbiAgICAgICAgICB7c291cmNlOiB0b2tlbi5pZH1cbiAgICAgICAgKSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHtcbiAgICAgICAgICAvLyBVc2UgdHlwZSBhc3NlcnRpb24gZm9yIGNhcmQgcHJvcGVydGllc1xuICAgICAgICAgIGNvbnN0IGNhcmRTb3VyY2UgPSBhY2NvdW50IGFzIHVua25vd24gYXMgQ2FyZDtcbiAgICAgICAgICBjb25zdCBicmFuZCA9IGNhcmRTb3VyY2UuYnJhbmQgfHwgJyc7XG4gICAgICAgICAgY29uc3QgY3ZjQ2hlY2sgPSBjYXJkU291cmNlLmN2Y19jaGVjayB8fCAnJztcbiAgICAgICAgICBjb25zdCBsYXN0NCA9IGNhcmRTb3VyY2UubGFzdDQgfHwgJyc7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgc2Vzc2lvblxuICAgICAgICAgIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgICAgICBiYW5rQWNjb3VudCxcbiAgICAgICAgICAgIGJhbmtGdWxsTmFtZTogZm9ybWF0RnVsbE5hbWUsXG4gICAgICAgICAgICBiYW5rSWQ6IGFjY291bnQuaWQsXG4gICAgICAgICAgICBiYW5rUm91dGluZzogZm9ybWF0Um91dGluZyxcbiAgICAgICAgICAgIG1vZGlmaWVkOiBub3dcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHtzZXNzaW9uSWR9IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzIExJTUlUIDEgUkVUVVJOIE5FV2A7XG5cbiAgICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAgICAgLnRoZW4oKHVwZGF0ZWRVc2VyOiBVc2VyVHlwZSkgPT4gdXBkYXRlZFVzZXIpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yLm1lc3NhZ2U7XG5cbiAgICAgICAgICBpZihtc2cgPT09ICdBIGJhbmsgYWNjb3VudCB3aXRoIHRoYXQgcm91dGluZyBudW1iZXIgYW5kIGFjY291bnQgbnVtYmVyICcgK1xuICAgICAgICAgICdhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBjdXN0b21lci4nKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgICBsYWJlbDogJ2JhbmtfYWNjb3VudF9leGlzdHMnXG4gICAgICAgICAgICB9LCBlcnJvciwgY29udGV4dCkudGhlbigoKSA9PiBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgICAgbGFiZWw6ICdwYXltZW50X2Vycm9yJ1xuICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDcmVkaXRDYXJkID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNhcmQ6IFBheW1lbnRDYXJkVHlwZSk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZENyZWRpdENhcmQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogc2Vzc2lvbklkfSlcbiAgICAudGhlbigodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgIC8vIFVzZXJcbiAgICAgIGNvbnN0IHtzdHJpcGVBY2NvdW50SWR9ID0gdXNlcjtcblxuICAgICAgLy8gQ2FyZFxuICAgICAgY29uc3Qge1xuICAgICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgICBjaXR5LFxuICAgICAgICBjb3VudHJ5LFxuICAgICAgICBjdmMsXG4gICAgICAgIGV4cE1vbnRoLFxuICAgICAgICBleHBZZWFyLFxuICAgICAgICBmdWxsTmFtZSxcbiAgICAgICAgc3RyZWV0MSxcbiAgICAgICAgc3RyZWV0MixcbiAgICAgICAgc3RhdGUsXG4gICAgICAgIHppcFxuICAgICAgfTogUGF5bWVudENhcmRUeXBlID0gY2FyZDtcblxuICAgICAgY29uc3QgZm9ybWF0TnVtYmVyOiBudW1iZXIgPSBwYXJzZU51bShhY2NvdW50TnVtYmVyLCAxNik7XG5cbiAgICAgIGlmKCFmb3JtYXROdW1iZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfY3JlZGl0X2NhcmRfbnVtYmVyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdEV4cE1vbnRoOiBudW1iZXIgPSBwYXJzZU51bShleHBNb250aCwgMik7XG5cbiAgICAgIGlmKCFmb3JtYXRFeHBNb250aCkge1xuICAgICAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdyZXF1aXJlZF9jcmVkaXRfY2FyZF9leHBfbW9udGgnKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0RXhwWWVhcjogbnVtYmVyID0gcGFyc2VOdW0oZXhwWWVhciwgMik7XG5cbiAgICAgIGlmKCFmb3JtYXRFeHBZZWFyKSB7XG4gICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ3JlcXVpcmVkX2NyZWRpdF9jYXJkX2V4cF95ZWFyJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdEN2YzogbnVtYmVyID0gcGFyc2VOdW0oY3ZjLCAzKTtcblxuICAgICAgLy8gQWRkcmVzc1xuICAgICAgY29uc3QgcGF5bWVudENhcmQ6IFBheW1lbnRDYXJkVHlwZSA9IHt9O1xuICAgICAgY29uc3QgZm9ybWF0Q2l0eTogc3RyaW5nID0gcGFyc2VWYXJDaGFyKGNpdHksIDMyKTtcblxuICAgICAgaWYoZm9ybWF0Q2l0eSkge1xuICAgICAgICBwYXltZW50Q2FyZC5jaXR5ID0gZm9ybWF0Q2l0eTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0Q291bnRyeTogc3RyaW5nID0gcGFyc2VDaGFyKGNvdW50cnksIDIpO1xuXG4gICAgICBpZihmb3JtYXRDb3VudHJ5KSB7XG4gICAgICAgIHBheW1lbnRDYXJkLmNvdW50cnkgPSBmb3JtYXRDb3VudHJ5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRGdWxsTmFtZTogc3RyaW5nID0gcGFyc2VWYXJDaGFyKGZ1bGxOYW1lLCAzMik7XG5cbiAgICAgIGlmKGZvcm1hdEZ1bGxOYW1lKSB7XG4gICAgICAgIHBheW1lbnRDYXJkLmZ1bGxOYW1lID0gZm9ybWF0RnVsbE5hbWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFN0cmVldDE6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihzdHJlZXQxLCAzMik7XG5cbiAgICAgIGlmKGZvcm1hdFN0cmVldDEpIHtcbiAgICAgICAgcGF5bWVudENhcmQuc3RyZWV0MSA9IGZvcm1hdFN0cmVldDE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFN0cmVldDI6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihzdHJlZXQyLCAzMik7XG5cbiAgICAgIGlmKGZvcm1hdFN0cmVldDIpIHtcbiAgICAgICAgcGF5bWVudENhcmQuc3RyZWV0MiA9IGZvcm1hdFN0cmVldDI7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFN0YXRlOiBzdHJpbmcgPSBwYXJzZUNoYXIoc3RhdGUsIDIpO1xuXG4gICAgICBpZihmb3JtYXRTdGF0ZSkge1xuICAgICAgICBwYXltZW50Q2FyZC5zdGF0ZSA9IGZvcm1hdFN0YXRlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRaaXA6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcih6aXAsIDEwKTtcblxuICAgICAgaWYoZm9ybWF0WmlwKSB7XG4gICAgICAgIHBheW1lbnRDYXJkLnppcCA9IGZvcm1hdFppcDtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gZ2V0U3RyaXBlQ2xpZW50KCk7XG5cbiAgICAgIC8vIENyZWF0ZSBhIHRva2VuIGZpcnN0LCB0aGVuIHVzZSB0aGUgdG9rZW4gYXMgdGhlIHNvdXJjZVxuICAgICAgcmV0dXJuIHN0cmlwZUNsaWVudC50b2tlbnMuY3JlYXRlKHtcbiAgICAgICAgY2FyZDoge1xuICAgICAgICAgIGFkZHJlc3NfY2l0eTogZm9ybWF0Q2l0eSxcbiAgICAgICAgICBhZGRyZXNzX2NvdW50cnk6IGZvcm1hdENvdW50cnksXG4gICAgICAgICAgYWRkcmVzc19saW5lMTogZm9ybWF0U3RyZWV0MSxcbiAgICAgICAgICBhZGRyZXNzX2xpbmUyOiBmb3JtYXRTdHJlZXQyLFxuICAgICAgICAgIGFkZHJlc3Nfc3RhdGU6IGZvcm1hdFN0YXRlLFxuICAgICAgICAgIGFkZHJlc3NfemlwOiBmb3JtYXRaaXAsXG4gICAgICAgICAgY3ZjOiBmb3JtYXRDdmMudG9TdHJpbmcoKSxcbiAgICAgICAgICBleHBfbW9udGg6IGZvcm1hdEV4cE1vbnRoLnRvU3RyaW5nKCksXG4gICAgICAgICAgZXhwX3llYXI6IGZvcm1hdEV4cFllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgICBuYW1lOiBmdWxsTmFtZSxcbiAgICAgICAgICBudW1iZXI6IGZvcm1hdE51bWJlci50b1N0cmluZygpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAgIC50aGVuKCh0b2tlbikgPT4gc3RyaXBlQ2xpZW50LmN1c3RvbWVycy5jcmVhdGVTb3VyY2UoXG4gICAgICAgICAgc3RyaXBlQWNjb3VudElkLFxuICAgICAgICAgIHtzb3VyY2U6IHRva2VuLmlkfVxuICAgICAgICApKVxuICAgICAgICAudGhlbigobmV3U291cmNlKSA9PiB7XG4gICAgICAgIC8vIFVzZSB0eXBlIGFzc2VydGlvbiBmb3IgY2FyZCBwcm9wZXJ0aWVzXG4gICAgICAgICAgY29uc3QgY2FyZFNvdXJjZSA9IG5ld1NvdXJjZSBhcyB1bmtub3duIGFzIENhcmQ7XG4gICAgICAgICAgY29uc3QgYnJhbmQgPSBjYXJkU291cmNlLmJyYW5kIHx8ICcnO1xuICAgICAgICAgIGNvbnN0IGN2Y0NoZWNrID0gY2FyZFNvdXJjZS5jdmNfY2hlY2sgfHwgJyc7XG4gICAgICAgICAgY29uc3QgbGFzdDQgPSBjYXJkU291cmNlLmxhc3Q0IHx8ICcnO1xuXG4gICAgICAgICAgLy8gQ3JlYXRlIHNlc3Npb25cbiAgICAgICAgICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gICAgICAgICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgICAgICAgLi4ucGF5bWVudENhcmQsXG4gICAgICAgICAgICBfa2V5OiBjcmVhdGVIYXNoKGB1c2VyLXBheW1lbnQtJHtzZXNzaW9uSWR9YCksXG4gICAgICAgICAgICBhY2NvdW50TnVtYmVyOiBsYXN0NCxcbiAgICAgICAgICAgIGFkZGVkOiBub3csXG4gICAgICAgICAgICBicmFuZCxcbiAgICAgICAgICAgIGN2Y0NoZWNrLFxuICAgICAgICAgICAgZXhwTW9udGgsXG4gICAgICAgICAgICBleHBZZWFyLFxuICAgICAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBpbnNlcnRBcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gY3JlZGl0Q2FyZHMgUkVUVVJOIE5FV2A7XG5cbiAgICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShpbnNlcnRBcWxRcnkpXG4gICAgICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAgICAgLnRoZW4oKG5ld0NhcmQ6IFBheW1lbnRDYXJkVHlwZSkgPT4ge1xuICAgICAgICAgICAgICBpZihuZXdDYXJkKSB7XG4gICAgICAgICAgICAgIC8vIEFkZCBsaW5rZWQgZWRnZVxuICAgICAgICAgICAgICAgIGNvbnN0IHtfaWQ6IGNhcmRJZCwgX2tleTogY2FyZEtleX0gPSBjYXJkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzUGF5bWVudCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VJZCA9IGNyZWF0ZUhhc2goYHBheW1lbnQtJHtjYXJkS2V5fWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2UgPSB7XG4gICAgICAgICAgICAgICAgICBfZnJvbTogYHVzZXJzLyR7c2Vzc2lvbklkfWAsXG4gICAgICAgICAgICAgICAgICBfa2V5OiBlZGdlSWQsXG4gICAgICAgICAgICAgICAgICBfdG86IGNhcmRJZFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBjYXJkKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdDYXJkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICAgIGxhYmVsOiAncGF5bWVudF9lcnJvcidcbiAgICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ3JlZGl0Q2FyZCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjYXJkOiBQYXltZW50Q2FyZFR5cGUpOiBQcm9taXNlPFBheW1lbnRDYXJkVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgY29uc3Qge1xuICAgIGNpdHksXG4gICAgY291bnRyeSxcbiAgICBleHBNb250aCxcbiAgICBleHBZZWFyLFxuICAgIGZ1bGxOYW1lLFxuICAgIGlkLFxuICAgIHN0cmVldDEsXG4gICAgc3RhdGUsXG4gICAgemlwXG4gIH06IFBheW1lbnRDYXJkVHlwZSA9IGNhcmQ7XG5cbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQoaWQpO1xuXG4gIGlmKGZvcm1hdElkKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfY3JlZGl0X2NhcmRfaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHBheW1lbnRDYXJkOiBQYXltZW50Q2FyZFR5cGUgPSB7fTtcbiAgY29uc3QgZm9ybWF0RXhwTW9udGg6IG51bWJlciA9IHBhcnNlTnVtKGV4cE1vbnRoLCAyKTtcbiAgY29uc3QgZm9ybWF0RXhwWWVhcjogbnVtYmVyID0gcGFyc2VOdW0oZXhwWWVhciwgMik7XG4gIGNvbnN0IGZvcm1hdENpdHk6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihjaXR5LCAzMik7XG4gIGNvbnN0IGZvcm1hdENvdW50cnk6IHN0cmluZyA9IHBhcnNlQ2hhcihjb3VudHJ5LCAyKTtcbiAgY29uc3QgZm9ybWF0RnVsbE5hbWU6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihmdWxsTmFtZSwgMzIpO1xuICBjb25zdCBmb3JtYXRTdHJlZXQxOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhzdHJlZXQxLCAzMik7XG4gIGNvbnN0IGZvcm1hdFN0YXRlOiBzdHJpbmcgPSBwYXJzZUNoYXIoc3RhdGUsIDIpO1xuICBjb25zdCBmb3JtYXRaaXA6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcih6aXAsIDEwKTtcblxuICBpZihmb3JtYXRFeHBNb250aCkge1xuICAgIHBheW1lbnRDYXJkLmV4cE1vbnRoID0gZm9ybWF0RXhwTW9udGg7XG4gIH1cblxuICBpZihmb3JtYXRFeHBZZWFyKSB7XG4gICAgcGF5bWVudENhcmQuZXhwWWVhciA9IGZvcm1hdEV4cFllYXI7XG4gIH1cblxuICBpZihmb3JtYXRDaXR5KSB7XG4gICAgcGF5bWVudENhcmQuY2l0eSA9IGZvcm1hdENpdHk7XG4gIH1cblxuICBpZihmb3JtYXRDb3VudHJ5KSB7XG4gICAgcGF5bWVudENhcmQuY291bnRyeSA9IGZvcm1hdENvdW50cnk7XG4gIH1cblxuICBpZihmb3JtYXRGdWxsTmFtZSkge1xuICAgIHBheW1lbnRDYXJkLmZ1bGxOYW1lID0gZm9ybWF0RnVsbE5hbWU7XG4gIH1cblxuICBpZihmb3JtYXRTdHJlZXQxKSB7XG4gICAgcGF5bWVudENhcmQuc3RyZWV0MSA9IGZvcm1hdFN0cmVldDE7XG4gIH1cblxuICBpZihmb3JtYXRTdGF0ZSkge1xuICAgIHBheW1lbnRDYXJkLnN0YXRlID0gZm9ybWF0U3RhdGU7XG4gIH1cblxuICBpZihmb3JtYXRaaXApIHtcbiAgICBwYXltZW50Q2FyZC56aXAgPSBmb3JtYXRaaXA7XG4gIH1cblxuICBjb25zdCB1cGRhdGUgPSBwYXltZW50Q2FyZDtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgIExFVCB1cGRhdGVkQ2FyZCA9IEZJUlNUKFxuICAgICAgICBGT1IgYyBJTiBjcmVkaXRDYXJkc1xuICAgICAgICBGSUxURVIgYy5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBVUERBVEUgYyBXSVRIICR7dXBkYXRlfSBJTiBjcmVkaXRDYXJkc1xuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFJFVFVSTiBORVdcbiAgICAgIClcbiAgICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICAgIEZJTFRFUiB1Ll9rZXkgPT0gJHtzZXNzaW9uSWR9XG4gICAgICAgIExJTUlUIDFcbiAgICAgICAgUkVUVVJOIHVcbiAgICAgIClcbiAgICAgIFJFVFVSTiB7dXNlcjogdXNlciwgY2FyZDogdXBkYXRlZENhcmR9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigocmVzdWx0cyA9IHtjYXJkOiB7fSwgdXNlcjoge319KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkQ2FyZDogUGF5bWVudENhcmRUeXBlID0gcmVzdWx0cy5jYXJkO1xuICAgICAgY29uc3Qge3VzZXJ9ID0gcmVzdWx0cztcblxuICAgICAgaWYoIXVwZGF0ZWRDYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ25vdF9mb3VuZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7c3RyaXBlQ3VzdG9tZXJJZH0gPSB1c2VyO1xuICAgICAgY29uc3Qge3N0cmlwZUlkfSA9IGNhcmQ7XG4gICAgICBjb25zdCBzdHJpcGVDbGllbnQgPSBnZXRTdHJpcGVDbGllbnQoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZTogc3RyaXBlLkN1c3RvbWVyVXBkYXRlU291cmNlUGFyYW1zID0ge1xuICAgICAgICBhZGRyZXNzX2NpdHk6IGZvcm1hdENpdHksXG4gICAgICAgIGFkZHJlc3NfY291bnRyeTogZm9ybWF0Q291bnRyeSxcbiAgICAgICAgYWRkcmVzc19saW5lMTogZm9ybWF0U3RyZWV0MSxcbiAgICAgICAgYWRkcmVzc19zdGF0ZTogZm9ybWF0U3RhdGUsXG4gICAgICAgIGFkZHJlc3NfemlwOiBmb3JtYXRaaXAsXG4gICAgICAgIGV4cF9tb250aDogZm9ybWF0RXhwTW9udGgudG9TdHJpbmcoKSxcbiAgICAgICAgZXhwX3llYXI6IGZvcm1hdEV4cFllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogZm9ybWF0RnVsbE5hbWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzXG4gICAgICAgIC51cGRhdGVTb3VyY2Uoc3RyaXBlQ3VzdG9tZXJJZCwgc3RyaXBlSWQsIHVwZGF0ZSlcbiAgICAgICAgLnRoZW4oKCkgPT4gY2FyZClcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygncGF5bWVudHM6OnVwZGF0ZUNhcmQ6OmVycm9yJywgZXJyb3IpO1xuICAgICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ3BheW1lbnRfZXJyb3InKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3JlZGl0Q2FyZHMgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8UGF5bWVudENhcmRUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldENyZWRpdENhcmRzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjIElOIGNyZWRpdENhcmRzXG4gICAgRklMVEVSIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgIFJFVFVSTiBjYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBQYXltZW50Q2FyZFR5cGVbXSA9IFtdKSA9PiBsaXN0KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNyZWRpdENhcmQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgY2FyZElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDYXJkSWQ6IHN0cmluZyA9IHBhcnNlSWQoY2FyZElkKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBMRVQgY2FyZCA9IEZJUlNUKFxuICAgICAgRk9SIGMgSU4gY3JlZGl0Q2FyZHNcbiAgICAgIEZJTFRFUiBjLl9rZXkgPT0gJHtmb3JtYXRDYXJkSWR9ICYmIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIGMgSU4gY3JlZGl0Q2FyZHNcbiAgICAgIFJFVFVSTiBPTERcbiAgICApXG4gICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgdS5fa2V5ID09ICR7c2Vzc2lvbklkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHVcbiAgICApXG4gICAgUkVUVVJOIHt1c2VyOiB1c2VyLCBjYXJkOiBjYXJkfWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHJlc3VsdCA9IHtjYXJkOiB7fSwgdXNlcjoge319KSA9PiB7XG4gICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2NhcmQsIHVzZXJ9ID0gcmVzdWx0O1xuICAgICAgY29uc3Qge19rZXk6IGNhcmRLZXl9ID0gY2FyZDtcblxuICAgICAgLy8gUmVtb3ZlIGxpbmtlZCBlZGdlc1xuICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oJ2hhc1BheW1lbnQnKTtcblxuICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLm91dEVkZ2VzKGNhcmRLZXksIHt9KVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBFeHRyYWN0IGVkZ2VzIGZyb20gdGhlIHJlc3BvbnNlXG4gICAgICAgICAgY29uc3QgZWRnZXMgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSA/IHJlc3BvbnNlIDogW107XG5cbiAgICAgICAgICBpZihlZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBlZGdlcy5tYXAoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7X2tleTogZWRnZUtleX0gPSBlZGdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUFxbFFyeTogQXFsUXVlcnkgPSBhcWxgUkVNT1ZFIHtfa2V5OiR7ZWRnZUtleX19IElOIGhhc1BheW1lbnRgO1xuICAgICAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KHJlbW92ZUFxbFFyeSk7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gU3RyaXBlXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gZ2V0U3RyaXBlQ2xpZW50KCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LmN1c3RvbWVyc1xuICAgICAgICAgICAgICAgICAgLmRlbGV0ZVNvdXJjZSh1c2VyLnN0cmlwZUN1c3RvbWVySWQsIGNhcmQuc3RyaXBlSWQpXG4gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3BheW1lbnRzOjpkZWxldGVDYXJkOjplcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncGF5bWVudF9lcnJvcicpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUJhbmtBY2NvdW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGJhbmtJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICAvLyBDbGVhbiBkYlxuICBjb25zdCB1cGRhdGU6IFVzZXJUeXBlID0ge1xuICAgIGJhbmtBY2NvdW50OiAnJyxcbiAgICBiYW5rRnVsbE5hbWU6ICcnLFxuICAgIGJhbmtJZDogJycsXG4gICAgYmFua1JvdXRpbmc6ICcnLFxuICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7c2Vzc2lvbklkfSBXSVRIICR7dXBkYXRlfSBJTiB1c2VycyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge3N0cmlwZUFjY291bnRJZH0gPSB1c2VyO1xuICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gZ2V0U3RyaXBlQ2xpZW50KCk7XG5cbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzXG4gICAgICAgIC5kZWxldGVTb3VyY2Uoc3RyaXBlQWNjb3VudElkLCBiYW5rSWQpXG4gICAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlc29sdmUoZmFsc2UpKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXltZW50VHJhbnNmZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdHJhbnNmZXI6IFBheW1lbnRUcmFuc2Zlcik6IFByb21pc2U8UGF5bWVudFRyYW5zZmVyPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2Ftb3VudCwgY3VycmVuY3l9ID0gdHJhbnNmZXI7XG4gIGNvbnN0IGZvcm1hdEFtb3VudDogbnVtYmVyID0gcGFyc2VOdW0oYW1vdW50KTtcbiAgY29uc3QgZm9ybWF0Q3VycmVuY3k6IHN0cmluZyA9IHBhcnNlQ2hhcihjdXJyZW5jeSwgMywgJ1VTRCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogc2Vzc2lvbklkfSlcbiAgICAudGhlbigodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtzdHJpcGVBY2NvdW50SWR9ID0gdXNlcjtcbiAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LnRyYW5zZmVyc1xuICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICBhbW91bnQ6IGZvcm1hdEFtb3VudCxcbiAgICAgICAgICBjdXJyZW5jeTogZm9ybWF0Q3VycmVuY3ksXG4gICAgICAgICAgZGVzdGluYXRpb246IHN0cmlwZUFjY291bnRJZFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoc3RyaXBlVHJhbnNmZXIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhzdHJpcGVUcmFuc2Zlcik7XG4gICAgICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGNvbnN0IGluc2VydDogUGF5bWVudFRyYW5zZmVyID0ge1xuICAgICAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgICAgIGFtb3VudDogZm9ybWF0QW1vdW50LFxuICAgICAgICAgICAgY3VycmVuY3k6IGZvcm1hdEN1cnJlbmN5LFxuICAgICAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdHJhbnNmZXJzIFJFVFVSTiBORVdgO1xuXG4gICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAgIC50aGVuKChuZXdUcmFuc2ZlcjogUGF5bWVudFRyYW5zZmVyKSA9PiBuZXdUcmFuc2Zlcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBheW1lbnRIb2xkID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBheW1lbnQ6IFBheW1lbnRDaGFyZ2UpOiBQcm9taXNlPFBheW1lbnRDaGFyZ2U+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7YW1vdW50LCBjYXB0dXJlLCBjYXJkSWQsIGN1cnJlbmN5LCBkZXNjcmlwdGlvbn0gPSBwYXltZW50O1xuICBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IHBhcnNlQ2hhcihjdXJyZW5jeSwgMywgJ1VTRCcpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gIHJldHVybiBzdHJpcGVDbGllbnQuY2hhcmdlc1xuICAgIC5jcmVhdGUoe1xuICAgICAgYW1vdW50LFxuICAgICAgY2FwdHVyZSxcbiAgICAgIGN1cnJlbmN5OiBmb3JtYXRDdXJyZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgc291cmNlOiBjYXJkSWRcbiAgICB9KVxuICAgIC50aGVuKChzdHJpcGVDaGFyZ2UpID0+IHtcbiAgICAgIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGluc2VydDogUGF5bWVudENoYXJnZSA9IHtcbiAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBjYXB0dXJlLFxuICAgICAgICBjYXJkSWQsXG4gICAgICAgIGNoYXJnZUZhaWxDb2RlOiBzdHJpcGVDaGFyZ2UuZmFpbHVyZV9jb2RlLFxuICAgICAgICBjaGFyZ2VGYWlsTXNnOiBzdHJpcGVDaGFyZ2UuZmFpbHVyZV9tZXNzYWdlLFxuICAgICAgICBjaGFyZ2VJZDogc3RyaXBlQ2hhcmdlLmlkLFxuICAgICAgICBjaGFyZ2VTdGF0dXM6IHN0cmlwZUNoYXJnZS5zdGF0dXMsXG4gICAgICAgIGN1cnJlbmN5OiBmb3JtYXRDdXJyZW5jeSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICB9O1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHBheW1lbnRzIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChuZXdQYXltZW50OiBQYXltZW50Q2hhcmdlKSA9PiBuZXdQYXltZW50KTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygncGF5bWVudHM6OmNyZWF0ZUhvbGQ6OmVycm9yJywgZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncGF5bWVudF9lcnJvcicpO1xuICAgIH0pO1xufTtcblxuaW50ZXJmYWNlIENhcmQge1xuICBpZDogc3RyaW5nO1xuICBicmFuZD86IHN0cmluZztcbiAgY3ZjX2NoZWNrPzogc3RyaW5nO1xuICBsYXN0ND86IHN0cmluZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsY0FBQUEsRUFBWSxhQUFBQyxFQUFXLFdBQUFDLEVBQVMsWUFBQUMsRUFBVSxlQUFBQyxFQUFhLGdCQUFBQyxNQUFtQixlQUNsRixPQUFRLE9BQUFDLE1BQVUsV0FLbEIsT0FBUSxjQUFBQyxNQUFpQix1QkFDekIsT0FBUSxTQUFBQyxNQUFZLFdBQ3BCLE9BQVEsV0FBQUMsTUFBYyxVQUN0QixPQUFRLFlBQUFDLEVBQVUsYUFBQUMsTUFBZ0IsMEJBQ2xDLE9BQVEsbUJBQUFDLE1BQXNCLHVCQUk5QixNQUFNQyxFQUFnQixXQUVUQyxHQUFzQkMsR0FBMEMsQ0FDM0UsTUFBTUMsRUFBUyxxQkFDVCxDQUFDLGFBQUFDLEVBQWMsUUFBUyxDQUFDLE9BQVFDLEVBQVcsU0FBQUMsQ0FBUSxDQUFDLEVBQUlKLEVBSS9ELE9BRnFCSCxFQUFnQixFQUVqQixVQUNqQixPQUFPLENBQ04sU0FBVSxDQUNSLE9BQVFNLEVBQ1IsU0FBQUMsQ0FDRixDQUNGLENBQUMsRUFDQSxLQUFNQyxHQUFhLENBR2xCLE1BQU1DLEVBQW1CLENBQ3ZCLFNBRmtCLEtBQUssSUFBSSxFQUczQixpQkFBa0JELEVBQVMsRUFDN0IsRUFFTUUsRUFBbUJoQixXQUFhWSxDQUFTLFNBQVNHLENBQU0sK0JBRTlELE9BQU9iLEVBQU1TLENBQVksRUFBRSxNQUFNSyxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLEtBQU1DLEdBQTBCLENBQUMsQ0FBQ0EsQ0FBVyxFQUM3QyxNQUFPQyxHQUFpQmYsRUFBUyxDQUNoQyxPQUFBTSxFQUNBLFNBQVVILEVBQ1YsTUFBT04sRUFBVyxjQUNwQixFQUFHa0IsRUFBT1YsQ0FBTyxFQUFFLEtBQUssSUFBTSxJQUFJLENBQUMsQ0FDdkMsQ0FBQyxDQUNMLEVBRWFXLEdBQWlCLENBQUNYLEVBQXFC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LEtBQU1tRixHQUE4QkEsQ0FBVSxDQUNuRCxDQUFDLEVBQ0EsTUFBT2pGLEdBQWlCLENBRXZCLE1BQU0sSUFBSWQsRUFBVSxlQUFlLENBQ3JDLENBQUMsQ0FDTCIsCiAgIm5hbWVzIjogWyJjcmVhdGVIYXNoIiwgInBhcnNlQ2hhciIsICJwYXJzZUlkIiwgInBhcnNlTnVtIiwgInBhcnNlU3RyaW5nIiwgInBhcnNlVmFyQ2hhciIsICJhcWwiLCAiRXJyb3JUeXBlcyIsICJ1c2VEYiIsICJnZXRVc2VyIiwgImxvZ0Vycm9yIiwgIlVzZXJFcnJvciIsICJnZXRTdHJpcGVDbGllbnQiLCAiZXZlbnRDYXRlZ29yeSIsICJhZGRDdXN0b21lckFjY291bnQiLCAiY29udGV4dCIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgInNlc3Npb25JZCIsICJ1c2VybmFtZSIsICJjdXN0b21lciIsICJ1cGRhdGUiLCAiYXFsUXJ5IiwgImN1cnNvciIsICJ1cGRhdGVkVXNlciIsICJlcnJvciIsICJhZGRCYW5rQWNjb3VudCIsICJiYW5rQWNjb3VudCIsICJhY2NvdW50TnVtYmVyIiwgImZ1bGxOYW1lIiwgInJvdXRpbmciLCAiZm9ybWF0QWNjb3VudCIsICJmb3JtYXRGdWxsTmFtZSIsICJmb3JtYXRSb3V0aW5nIiwgInVzZXIiLCAic3RyaXBlQWNjb3VudElkIiwgInN0cmlwZUNsaWVudCIsICJ0b2tlbiIsICJhY2NvdW50IiwgImNhcmRTb3VyY2UiLCAiYnJhbmQiLCAiY3ZjQ2hlY2siLCAibGFzdDQiLCAibm93IiwgImFkZENyZWRpdENhcmQiLCAiY2FyZCIsICJjaXR5IiwgImNvdW50cnkiLCAiY3ZjIiwgImV4cE1vbnRoIiwgImV4cFllYXIiLCAic3RyZWV0MSIsICJzdHJlZXQyIiwgInN0YXRlIiwgInppcCIsICJmb3JtYXROdW1iZXIiLCAiZm9ybWF0RXhwTW9udGgiLCAiZm9ybWF0RXhwWWVhciIsICJmb3JtYXRDdmMiLCAicGF5bWVudENhcmQiLCAiZm9ybWF0Q2l0eSIsICJmb3JtYXRDb3VudHJ5IiwgImZvcm1hdFN0cmVldDEiLCAiZm9ybWF0U3RyZWV0MiIsICJmb3JtYXRTdGF0ZSIsICJmb3JtYXRaaXAiLCAibmV3U291cmNlIiwgImluc2VydCIsICJpbnNlcnRBcWxRcnkiLCAibmV3Q2FyZCIsICJjYXJkSWQiLCAiY2FyZEtleSIsICJlZGdlQ29sbGVjdGlvbiIsICJlZGdlSWQiLCAiZWRnZSIsICJ1cGRhdGVDcmVkaXRDYXJkIiwgImlkIiwgImZvcm1hdElkIiwgInJlc3VsdHMiLCAidXBkYXRlZENhcmQiLCAic3RyaXBlQ3VzdG9tZXJJZCIsICJzdHJpcGVJZCIsICJnZXRDcmVkaXRDYXJkcyIsICJsaXN0IiwgImRlbGV0ZUNyZWRpdENhcmQiLCAiZm9ybWF0Q2FyZElkIiwgInJlc3VsdCIsICJyZXNwb25zZSIsICJlZGdlcyIsICJlZGdlS2V5IiwgInJlbW92ZUFxbFFyeSIsICJkZWxldGVCYW5rQWNjb3VudCIsICJiYW5rSWQiLCAiY3JlYXRlUGF5bWVudFRyYW5zZmVyIiwgInRyYW5zZmVyIiwgImFtb3VudCIsICJjdXJyZW5jeSIsICJmb3JtYXRBbW91bnQiLCAiZm9ybWF0Q3VycmVuY3kiLCAic3RyaXBlVHJhbnNmZXIiLCAibmV3VHJhbnNmZXIiLCAiY3JlYXRlUGF5bWVudEhvbGQiLCAicGF5bWVudCIsICJjYXB0dXJlIiwgImRlc2NyaXB0aW9uIiwgInN0cmlwZUNoYXJnZSIsICJuZXdQYXltZW50Il0KfQo=
|
|
31
|
+
RETURN {user: user, card: card}`;return I(c).query(a).then(o=>o.next()).then((o={card:{},user:{}})=>{if(!o)return!1;const{card:u,user:d}=o,{_key:m}=u;return I(c).collection("hasPayment").outEdges(m,{}).then(async p=>{const l=Array.isArray(p)?p:[];return l.length?(await Promise.all(l.map(f=>{const{_key:e}=f,i=T`REMOVE {_key:${e}} IN hasPayment`;return I(c).query(i)})).then(()=>N().customers.deleteSource(d.stripeCustomerId,u.stripeId).then(()=>!0).catch(e=>{throw new h("payment_error")})),!0):!1})})},ge=(r,t)=>{const{databaseName:c,session:{userId:n}}=r,s={bankAccount:"",bankFullName:"",bankId:"",bankRouting:"",modified:Date.now()},a=T`UPDATE ${n} WITH ${s} IN users LIMIT 1 RETURN NEW`;return I(c).query(a).then(o=>o.next()).then(o=>{const{stripeAccountId:u}=o;return N().customers.deleteSource(u,t).then(()=>!0).catch(()=>Promise.resolve(!1))})},Te=(r,t)=>{const{databaseName:c,session:{userId:n}}=r,{amount:s,currency:a}=t,o=A(s),u=x(a,3,"USD").toUpperCase();return H(r,{userId:n}).then(d=>{const{stripeAccountId:m}=d;return N().transfers.create({amount:o,currency:u,destination:m}).then(p=>{const l=Date.now(),e=T`INSERT ${{added:l,amount:o,currency:u,modified:l,userId:n}} IN transfers RETURN NEW`;return I(c).query(e).then(i=>i.next()).then(i=>i)})})},_e=(r,t)=>{const{databaseName:c,session:{userId:n}}=r,{amount:s,capture:a,cardId:o,currency:u,description:d}=t,m=x(u,3,"USD").toUpperCase();return N().charges.create({amount:s,capture:a,currency:m,description:d,source:o}).then(p=>{const l=Date.now(),f={added:l,amount:s,capture:a,cardId:o,chargeFailCode:p.failure_code,chargeFailMsg:p.failure_message,chargeId:p.id,chargeStatus:p.status,currency:m,description:d,modified:l,userId:n},e=T`INSERT ${f} IN payments RETURN NEW`;return I(c).query(e).then(i=>i.next()).then(i=>i)}).catch(p=>{throw new h("payment_error")})};export{le as addBankAccount,fe as addCreditCard,pe as addCustomerAccount,_e as createPaymentHold,Te as createPaymentTransfer,ge as deleteBankAccount,he as deleteCreditCard,Ie as getCreditCards,Ce as updateCreditCard};
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvcGF5bWVudHMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlTnVtfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9udW1iZXJzJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VDaGFyLCBwYXJzZUlkLCBwYXJzZVN0cmluZywgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuaW1wb3J0IHN0cmlwZSBmcm9tICdzdHJpcGUnO1xuXG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQge1BheW1lbnRCYW5rQWNjb3VudCwgUGF5bWVudENhcmRUeXBlLCBQYXltZW50Q2hhcmdlLCBQYXltZW50VHJhbnNmZXJ9IGZyb20gJy4uL3R5cGVzL3BheW1lbnRzLnR5cGVzLmpzJztcbmltcG9ydCB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3IsIFVzZXJFcnJvcn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldFN0cmlwZUNsaWVudH0gZnJvbSAnLi4vdXRpbHMvc3RyaXBlVXRpbHMuanMnO1xuaW1wb3J0IHtnZXRVc2VyfSBmcm9tICcuL3VzZXJzLmpzJztcblxuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5cbmNvbnN0IGV2ZW50Q2F0ZWdvcnkgPSAncGF5bWVudHMnO1xuXG5leHBvcnQgY29uc3QgYWRkQ3VzdG9tZXJBY2NvdW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2FkZEN1c3RvbWVyQWNjb3VudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZCwgdXNlcm5hbWV9ID0ge319ID0gY29udGV4dDtcblxuICBjb25zdCBzdHJpcGVDbGllbnQgPSBnZXRTdHJpcGVDbGllbnQoKTtcblxuICByZXR1cm4gc3RyaXBlQ2xpZW50LmN1c3RvbWVyc1xuICAgIC5jcmVhdGUoe1xuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgdXNlcklkOiBzZXNzaW9uSWQsXG4gICAgICAgIHVzZXJuYW1lXG4gICAgICB9XG4gICAgfSBhcyBhbnkpXG4gICAgLnRoZW4oKGN1c3RvbWVyKSA9PiB7XG4gICAgICAvLyBDcmVhdGUgc2Vzc2lvblxuICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgICAgY29uc3QgdXBkYXRlOiBVc2VyVHlwZSA9IHtcbiAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgc3RyaXBlQ3VzdG9tZXJJZDogY3VzdG9tZXIuaWRcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7c2Vzc2lvbklkfSBXSVRIICR7dXBkYXRlfSBJTiB1c2VycyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKCh1cGRhdGVkVXNlcjogVXNlclR5cGUpID0+ICEhdXBkYXRlZFVzZXIpXG4gICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRCYW5rQWNjb3VudCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBiYW5rQWNjb3VudDogUGF5bWVudEJhbmtBY2NvdW50KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdhZGRQYXltZW50QWNjb3VudEJhbmsnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9ID0ge319ID0gY29udGV4dDtcblxuICAvLyBQYXJhbXNcbiAgY29uc3Qge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgZnVsbE5hbWUsXG4gICAgcm91dGluZ1xuICB9ID0gYmFua0FjY291bnQ7XG5cbiAgY29uc3QgZm9ybWF0QWNjb3VudDogc3RyaW5nID0gcGFyc2VTdHJpbmcoYWNjb3VudE51bWJlciwgMzIpO1xuXG4gIGlmKGZvcm1hdEFjY291bnQgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfYWNjb3VudF9udW1iZXInKTtcbiAgfVxuXG4gIGNvbnN0IGZvcm1hdEZ1bGxOYW1lOiBzdHJpbmcgPSBwYXJzZVZhckNoYXIoZnVsbE5hbWUsIDEyOCk7XG5cbiAgaWYoZm9ybWF0RnVsbE5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfZnVsbF9uYW1lJyk7XG4gIH1cblxuICBjb25zdCBmb3JtYXRSb3V0aW5nOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhyb3V0aW5nLCAzMik7XG5cbiAgaWYoZm9ybWF0Um91dGluZyA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdyZXF1aXJlZF9yb3V0aW5nX251bWJlcicpO1xuICB9XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogc2Vzc2lvbklkfSlcbiAgICAudGhlbigodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtzdHJpcGVBY2NvdW50SWR9ID0gdXNlcjtcbiAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gICAgICAvLyBDcmVhdGUgYSB0b2tlbiBmaXJzdCwgdGhlbiB1c2UgdGhlIHRva2VuIGFzIHRoZSBzb3VyY2VcbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQudG9rZW5zLmNyZWF0ZSh7XG4gICAgICAgIGJhbmtfYWNjb3VudDoge1xuICAgICAgICAgIGFjY291bnRfaG9sZGVyX25hbWU6IGZvcm1hdEZ1bGxOYW1lLFxuICAgICAgICAgIGFjY291bnRfaG9sZGVyX3R5cGU6ICdpbmRpdmlkdWFsJyxcbiAgICAgICAgICBhY2NvdW50X251bWJlcjogZm9ybWF0QWNjb3VudCxcbiAgICAgICAgICBjb3VudHJ5OiAnVVMnLFxuICAgICAgICAgIGN1cnJlbmN5OiAnVVNEJyxcbiAgICAgICAgICByb3V0aW5nX251bWJlcjogZm9ybWF0Um91dGluZ1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgICAudGhlbigodG9rZW4pID0+IHN0cmlwZUNsaWVudC5jdXN0b21lcnMuY3JlYXRlU291cmNlKFxuICAgICAgICAgIHN0cmlwZUFjY291bnRJZCxcbiAgICAgICAgICB7c291cmNlOiB0b2tlbi5pZH1cbiAgICAgICAgKSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHtcbiAgICAgICAgICAvLyBVc2UgdHlwZSBhc3NlcnRpb24gZm9yIGNhcmQgcHJvcGVydGllc1xuICAgICAgICAgIC8vIGNvbnN0IGNhcmRTb3VyY2UgPSBhY2NvdW50IGFzIHVua25vd24gYXMgQ2FyZDtcbiAgICAgICAgICAvLyBjb25zdCBicmFuZCA9IGNhcmRTb3VyY2UuYnJhbmQgfHwgJyc7XG4gICAgICAgICAgLy8gY29uc3QgY3ZjQ2hlY2sgPSBjYXJkU291cmNlLmN2Y19jaGVjayB8fCAnJztcbiAgICAgICAgICAvLyBjb25zdCBsYXN0NCA9IGNhcmRTb3VyY2UubGFzdDQgfHwgJyc7XG5cbiAgICAgICAgICAvLyBDcmVhdGUgc2Vzc2lvblxuICAgICAgICAgIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICAgICAgICBiYW5rQWNjb3VudCxcbiAgICAgICAgICAgIGJhbmtGdWxsTmFtZTogZm9ybWF0RnVsbE5hbWUsXG4gICAgICAgICAgICBiYW5rSWQ6IGFjY291bnQuaWQsXG4gICAgICAgICAgICBiYW5rUm91dGluZzogZm9ybWF0Um91dGluZyxcbiAgICAgICAgICAgIG1vZGlmaWVkOiBub3dcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHtzZXNzaW9uSWR9IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzIExJTUlUIDEgUkVUVVJOIE5FV2A7XG5cbiAgICAgICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgICAgICAgLnRoZW4oKHVwZGF0ZWRVc2VyOiBVc2VyVHlwZSkgPT4gdXBkYXRlZFVzZXIpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yLm1lc3NhZ2U7XG5cbiAgICAgICAgICBpZihtc2cgPT09ICdBIGJhbmsgYWNjb3VudCB3aXRoIHRoYXQgcm91dGluZyBudW1iZXIgYW5kIGFjY291bnQgbnVtYmVyICcgK1xuICAgICAgICAgICAgJ2FscmVhZHkgZXhpc3RzIGZvciB0aGlzIGN1c3RvbWVyLicpIHtcbiAgICAgICAgICAgIHJldHVybiBsb2dFcnJvcih7XG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICAgIGxhYmVsOiAnYmFua19hY2NvdW50X2V4aXN0cydcbiAgICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICBsYWJlbDogJ3BheW1lbnRfZXJyb3InXG4gICAgICAgICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZENyZWRpdENhcmQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgY2FyZDogUGF5bWVudENhcmRUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkQ3JlZGl0Q2FyZCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICByZXR1cm4gZ2V0VXNlcihjb250ZXh0LCB7dXNlcklkOiBzZXNzaW9uSWR9KVxuICAgIC50aGVuKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgLy8gVXNlclxuICAgICAgY29uc3Qge3N0cmlwZUFjY291bnRJZH0gPSB1c2VyO1xuXG4gICAgICAvLyBDYXJkXG4gICAgICBjb25zdCB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIGNpdHksXG4gICAgICAgIGNvdW50cnksXG4gICAgICAgIGN2YyxcbiAgICAgICAgZXhwTW9udGgsXG4gICAgICAgIGV4cFllYXIsXG4gICAgICAgIGZ1bGxOYW1lLFxuICAgICAgICBzdHJlZXQxLFxuICAgICAgICBzdHJlZXQyLFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgemlwXG4gICAgICB9OiBQYXltZW50Q2FyZFR5cGUgPSBjYXJkO1xuXG4gICAgICBjb25zdCBmb3JtYXROdW1iZXI6IG51bWJlciA9IHBhcnNlTnVtKGFjY291bnROdW1iZXIsIDE2KTtcblxuICAgICAgaWYoIWZvcm1hdE51bWJlcikge1xuICAgICAgICB0aHJvdyBuZXcgVXNlckVycm9yKCdyZXF1aXJlZF9jcmVkaXRfY2FyZF9udW1iZXInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0RXhwTW9udGg6IG51bWJlciA9IHBhcnNlTnVtKGV4cE1vbnRoLCAyKTtcblxuICAgICAgaWYoIWZvcm1hdEV4cE1vbnRoKSB7XG4gICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ3JlcXVpcmVkX2NyZWRpdF9jYXJkX2V4cF9tb250aCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRFeHBZZWFyOiBudW1iZXIgPSBwYXJzZU51bShleHBZZWFyLCAyKTtcblxuICAgICAgaWYoIWZvcm1hdEV4cFllYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfY3JlZGl0X2NhcmRfZXhwX3llYXInKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0Q3ZjOiBudW1iZXIgPSBwYXJzZU51bShjdmMsIDMpO1xuXG4gICAgICAvLyBBZGRyZXNzXG4gICAgICBjb25zdCBwYXltZW50Q2FyZDogUGF5bWVudENhcmRUeXBlID0ge307XG4gICAgICBjb25zdCBmb3JtYXRDaXR5OiBzdHJpbmcgPSBwYXJzZVZhckNoYXIoY2l0eSwgMzIpO1xuXG4gICAgICBpZihmb3JtYXRDaXR5KSB7XG4gICAgICAgIHBheW1lbnRDYXJkLmNpdHkgPSBmb3JtYXRDaXR5O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXRDb3VudHJ5OiBzdHJpbmcgPSBwYXJzZUNoYXIoY291bnRyeSwgMik7XG5cbiAgICAgIGlmKGZvcm1hdENvdW50cnkpIHtcbiAgICAgICAgcGF5bWVudENhcmQuY291bnRyeSA9IGZvcm1hdENvdW50cnk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdEZ1bGxOYW1lOiBzdHJpbmcgPSBwYXJzZVZhckNoYXIoZnVsbE5hbWUsIDMyKTtcblxuICAgICAgaWYoZm9ybWF0RnVsbE5hbWUpIHtcbiAgICAgICAgcGF5bWVudENhcmQuZnVsbE5hbWUgPSBmb3JtYXRGdWxsTmFtZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0U3RyZWV0MTogc3RyaW5nID0gcGFyc2VWYXJDaGFyKHN0cmVldDEsIDMyKTtcblxuICAgICAgaWYoZm9ybWF0U3RyZWV0MSkge1xuICAgICAgICBwYXltZW50Q2FyZC5zdHJlZXQxID0gZm9ybWF0U3RyZWV0MTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0U3RyZWV0Mjogc3RyaW5nID0gcGFyc2VWYXJDaGFyKHN0cmVldDIsIDMyKTtcblxuICAgICAgaWYoZm9ybWF0U3RyZWV0Mikge1xuICAgICAgICBwYXltZW50Q2FyZC5zdHJlZXQyID0gZm9ybWF0U3RyZWV0MjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZm9ybWF0U3RhdGU6IHN0cmluZyA9IHBhcnNlQ2hhcihzdGF0ZSwgMik7XG5cbiAgICAgIGlmKGZvcm1hdFN0YXRlKSB7XG4gICAgICAgIHBheW1lbnRDYXJkLnN0YXRlID0gZm9ybWF0U3RhdGU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvcm1hdFppcDogc3RyaW5nID0gcGFyc2VWYXJDaGFyKHppcCwgMTApO1xuXG4gICAgICBpZihmb3JtYXRaaXApIHtcbiAgICAgICAgcGF5bWVudENhcmQuemlwID0gZm9ybWF0WmlwO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBzdHJpcGVDbGllbnQgPSBnZXRTdHJpcGVDbGllbnQoKTtcblxuICAgICAgLy8gQ3JlYXRlIGEgdG9rZW4gZmlyc3QsIHRoZW4gdXNlIHRoZSB0b2tlbiBhcyB0aGUgc291cmNlXG4gICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LnRva2Vucy5jcmVhdGUoe1xuICAgICAgICBjYXJkOiB7XG4gICAgICAgICAgYWRkcmVzc19jaXR5OiBmb3JtYXRDaXR5LFxuICAgICAgICAgIGFkZHJlc3NfY291bnRyeTogZm9ybWF0Q291bnRyeSxcbiAgICAgICAgICBhZGRyZXNzX2xpbmUxOiBmb3JtYXRTdHJlZXQxLFxuICAgICAgICAgIGFkZHJlc3NfbGluZTI6IGZvcm1hdFN0cmVldDIsXG4gICAgICAgICAgYWRkcmVzc19zdGF0ZTogZm9ybWF0U3RhdGUsXG4gICAgICAgICAgYWRkcmVzc196aXA6IGZvcm1hdFppcCxcbiAgICAgICAgICBjdmM6IGZvcm1hdEN2Yy50b1N0cmluZygpLFxuICAgICAgICAgIGV4cF9tb250aDogZm9ybWF0RXhwTW9udGgudG9TdHJpbmcoKSxcbiAgICAgICAgICBleHBfeWVhcjogZm9ybWF0RXhwWWVhci50b1N0cmluZygpLFxuICAgICAgICAgIG5hbWU6IGZ1bGxOYW1lLFxuICAgICAgICAgIG51bWJlcjogZm9ybWF0TnVtYmVyLnRvU3RyaW5nKClcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgICAgLnRoZW4oKHRva2VuKSA9PiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzLmNyZWF0ZVNvdXJjZShcbiAgICAgICAgICBzdHJpcGVBY2NvdW50SWQsXG4gICAgICAgICAge3NvdXJjZTogdG9rZW4uaWR9XG4gICAgICAgICkpXG4gICAgICAgIC50aGVuKChuZXdTb3VyY2UpID0+IHtcbiAgICAgICAgICAvLyBVc2UgdHlwZSBhc3NlcnRpb24gZm9yIGNhcmQgcHJvcGVydGllc1xuICAgICAgICAgIGNvbnN0IGNhcmRTb3VyY2UgPSBuZXdTb3VyY2UgYXMgdW5rbm93biBhcyBDYXJkO1xuICAgICAgICAgIGNvbnN0IGJyYW5kID0gY2FyZFNvdXJjZS5icmFuZCB8fCAnJztcbiAgICAgICAgICBjb25zdCBjdmNDaGVjayA9IGNhcmRTb3VyY2UuY3ZjX2NoZWNrIHx8ICcnO1xuICAgICAgICAgIGNvbnN0IGxhc3Q0ID0gY2FyZFNvdXJjZS5sYXN0NCB8fCAnJztcblxuICAgICAgICAgIC8vIENyZWF0ZSBzZXNzaW9uXG4gICAgICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGNvbnN0IGluc2VydCA9IHtcbiAgICAgICAgICAgIC4uLnBheW1lbnRDYXJkLFxuICAgICAgICAgICAgX2tleTogY3JlYXRlSGFzaChgdXNlci1wYXltZW50LSR7c2Vzc2lvbklkfWApLFxuICAgICAgICAgICAgYWNjb3VudE51bWJlcjogbGFzdDQsXG4gICAgICAgICAgICBhZGRlZDogbm93LFxuICAgICAgICAgICAgYnJhbmQsXG4gICAgICAgICAgICBjdmNDaGVjayxcbiAgICAgICAgICAgIGV4cE1vbnRoLFxuICAgICAgICAgICAgZXhwWWVhcixcbiAgICAgICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgICAgICB1c2VySWQ6IHNlc3Npb25JZFxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgaW5zZXJ0QXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIGNyZWRpdENhcmRzIFJFVFVSTiBORVdgO1xuXG4gICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoaW5zZXJ0QXFsUXJ5KVxuICAgICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAgIC50aGVuKChuZXdDYXJkOiBQYXltZW50Q2FyZFR5cGUpID0+IHtcbiAgICAgICAgICAgICAgaWYobmV3Q2FyZCkge1xuICAgICAgICAgICAgICAgIC8vIEFkZCBsaW5rZWQgZWRnZVxuICAgICAgICAgICAgICAgIGNvbnN0IHtfaWQ6IGNhcmRJZCwgX2tleTogY2FyZEtleX0gPSBjYXJkO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IHVzZURiKGRhdGFiYXNlTmFtZSkuY29sbGVjdGlvbignaGFzUGF5bWVudCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2VJZCA9IGNyZWF0ZUhhc2goYHBheW1lbnQtJHtjYXJkS2V5fWApO1xuICAgICAgICAgICAgICAgIGNvbnN0IGVkZ2UgPSB7XG4gICAgICAgICAgICAgICAgICBfZnJvbTogYHVzZXJzLyR7c2Vzc2lvbklkfWAsXG4gICAgICAgICAgICAgICAgICBfa2V5OiBlZGdlSWQsXG4gICAgICAgICAgICAgICAgICBfdG86IGNhcmRJZFxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gZWRnZUNvbGxlY3Rpb24uc2F2ZShlZGdlLCB7cmV0dXJuTmV3OiB0cnVlfSkudGhlbigoKSA9PiBjYXJkKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHJldHVybiBuZXdDYXJkO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgICAgICAgIGxhYmVsOiAncGF5bWVudF9lcnJvcidcbiAgICAgICAgICAgIH0sIGVycm9yLCBjb250ZXh0KS50aGVuKCgpID0+IG51bGwpKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQ3JlZGl0Q2FyZCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBjYXJkOiBQYXltZW50Q2FyZFR5cGUpOiBQcm9taXNlPFBheW1lbnRDYXJkVHlwZT4gPT4ge1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG5cbiAgY29uc3Qge1xuICAgIGNpdHksXG4gICAgY291bnRyeSxcbiAgICBleHBNb250aCxcbiAgICBleHBZZWFyLFxuICAgIGZ1bGxOYW1lLFxuICAgIGlkLFxuICAgIHN0cmVldDEsXG4gICAgc3RhdGUsXG4gICAgemlwXG4gIH06IFBheW1lbnRDYXJkVHlwZSA9IGNhcmQ7XG5cbiAgY29uc3QgZm9ybWF0SWQ6IHN0cmluZyA9IHBhcnNlSWQoaWQpO1xuXG4gIGlmKGZvcm1hdElkKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncmVxdWlyZWRfY3JlZGl0X2NhcmRfaWQnKTtcbiAgfVxuXG4gIGNvbnN0IHBheW1lbnRDYXJkOiBQYXltZW50Q2FyZFR5cGUgPSB7fTtcbiAgY29uc3QgZm9ybWF0RXhwTW9udGg6IG51bWJlciA9IHBhcnNlTnVtKGV4cE1vbnRoLCAyKTtcbiAgY29uc3QgZm9ybWF0RXhwWWVhcjogbnVtYmVyID0gcGFyc2VOdW0oZXhwWWVhciwgMik7XG4gIGNvbnN0IGZvcm1hdENpdHk6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihjaXR5LCAzMik7XG4gIGNvbnN0IGZvcm1hdENvdW50cnk6IHN0cmluZyA9IHBhcnNlQ2hhcihjb3VudHJ5LCAyKTtcbiAgY29uc3QgZm9ybWF0RnVsbE5hbWU6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcihmdWxsTmFtZSwgMzIpO1xuICBjb25zdCBmb3JtYXRTdHJlZXQxOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhzdHJlZXQxLCAzMik7XG4gIGNvbnN0IGZvcm1hdFN0YXRlOiBzdHJpbmcgPSBwYXJzZUNoYXIoc3RhdGUsIDIpO1xuICBjb25zdCBmb3JtYXRaaXA6IHN0cmluZyA9IHBhcnNlVmFyQ2hhcih6aXAsIDEwKTtcblxuICBpZihmb3JtYXRFeHBNb250aCkge1xuICAgIHBheW1lbnRDYXJkLmV4cE1vbnRoID0gZm9ybWF0RXhwTW9udGg7XG4gIH1cblxuICBpZihmb3JtYXRFeHBZZWFyKSB7XG4gICAgcGF5bWVudENhcmQuZXhwWWVhciA9IGZvcm1hdEV4cFllYXI7XG4gIH1cblxuICBpZihmb3JtYXRDaXR5KSB7XG4gICAgcGF5bWVudENhcmQuY2l0eSA9IGZvcm1hdENpdHk7XG4gIH1cblxuICBpZihmb3JtYXRDb3VudHJ5KSB7XG4gICAgcGF5bWVudENhcmQuY291bnRyeSA9IGZvcm1hdENvdW50cnk7XG4gIH1cblxuICBpZihmb3JtYXRGdWxsTmFtZSkge1xuICAgIHBheW1lbnRDYXJkLmZ1bGxOYW1lID0gZm9ybWF0RnVsbE5hbWU7XG4gIH1cblxuICBpZihmb3JtYXRTdHJlZXQxKSB7XG4gICAgcGF5bWVudENhcmQuc3RyZWV0MSA9IGZvcm1hdFN0cmVldDE7XG4gIH1cblxuICBpZihmb3JtYXRTdGF0ZSkge1xuICAgIHBheW1lbnRDYXJkLnN0YXRlID0gZm9ybWF0U3RhdGU7XG4gIH1cblxuICBpZihmb3JtYXRaaXApIHtcbiAgICBwYXltZW50Q2FyZC56aXAgPSBmb3JtYXRaaXA7XG4gIH1cblxuICBjb25zdCB1cGRhdGUgPSBwYXltZW50Q2FyZDtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICAgIExFVCB1cGRhdGVkQ2FyZCA9IEZJUlNUKFxuICAgICAgICBGT1IgYyBJTiBjcmVkaXRDYXJkc1xuICAgICAgICBGSUxURVIgYy5fa2V5ID09ICR7Zm9ybWF0SWR9ICYmIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgICBVUERBVEUgYyBXSVRIICR7dXBkYXRlfSBJTiBjcmVkaXRDYXJkc1xuICAgICAgICBMSU1JVCAxXG4gICAgICAgIFJFVFVSTiBORVdcbiAgICAgIClcbiAgICAgIExFVCB1c2VyID0gRklSU1QoXG4gICAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICAgIEZJTFRFUiB1Ll9rZXkgPT0gJHtzZXNzaW9uSWR9XG4gICAgICAgIExJTUlUIDFcbiAgICAgICAgUkVUVVJOIHVcbiAgICAgIClcbiAgICAgIFJFVFVSTiB7dXNlcjogdXNlciwgY2FyZDogdXBkYXRlZENhcmR9YDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAudGhlbigocmVzdWx0cyA9IHtjYXJkOiB7fSwgdXNlcjoge319KSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkQ2FyZDogUGF5bWVudENhcmRUeXBlID0gcmVzdWx0cy5jYXJkO1xuICAgICAgY29uc3Qge3VzZXJ9ID0gcmVzdWx0cztcblxuICAgICAgaWYoIXVwZGF0ZWRDYXJkKSB7XG4gICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ25vdF9mb3VuZCcpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7c3RyaXBlQ3VzdG9tZXJJZH0gPSB1c2VyO1xuICAgICAgY29uc3Qge3N0cmlwZUlkfSA9IGNhcmQ7XG4gICAgICBjb25zdCBzdHJpcGVDbGllbnQgPSBnZXRTdHJpcGVDbGllbnQoKTtcbiAgICAgIGNvbnN0IHVwZGF0ZTogc3RyaXBlLkN1c3RvbWVyVXBkYXRlU291cmNlUGFyYW1zID0ge1xuICAgICAgICBhZGRyZXNzX2NpdHk6IGZvcm1hdENpdHksXG4gICAgICAgIGFkZHJlc3NfY291bnRyeTogZm9ybWF0Q291bnRyeSxcbiAgICAgICAgYWRkcmVzc19saW5lMTogZm9ybWF0U3RyZWV0MSxcbiAgICAgICAgYWRkcmVzc19zdGF0ZTogZm9ybWF0U3RhdGUsXG4gICAgICAgIGFkZHJlc3NfemlwOiBmb3JtYXRaaXAsXG4gICAgICAgIGV4cF9tb250aDogZm9ybWF0RXhwTW9udGgudG9TdHJpbmcoKSxcbiAgICAgICAgZXhwX3llYXI6IGZvcm1hdEV4cFllYXIudG9TdHJpbmcoKSxcbiAgICAgICAgbmFtZTogZm9ybWF0RnVsbE5hbWVcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzXG4gICAgICAgIC51cGRhdGVTb3VyY2Uoc3RyaXBlQ3VzdG9tZXJJZCwgc3RyaXBlSWQsIHVwZGF0ZSlcbiAgICAgICAgLnRoZW4oKCkgPT4gY2FyZClcbiAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZygncGF5bWVudHM6OnVwZGF0ZUNhcmQ6OmVycm9yJywgZXJyb3IpO1xuICAgICAgICAgIHRocm93IG5ldyBVc2VyRXJyb3IoJ3BheW1lbnRfZXJyb3InKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q3JlZGl0Q2FyZHMgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8UGF5bWVudENhcmRUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldENyZWRpdENhcmRzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiBjIElOIGNyZWRpdENhcmRzXG4gICAgRklMVEVSIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgIFJFVFVSTiBjYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC50aGVuKChsaXN0OiBQYXltZW50Q2FyZFR5cGVbXSA9IFtdKSA9PiBsaXN0KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIGxhYmVsOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpLnRoZW4oKCkgPT4gbnVsbCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUNyZWRpdENhcmQgPSAoY29udGV4dDogQXBpQ29udGV4dCwgY2FyZElkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRDYXJkSWQ6IHN0cmluZyA9IHBhcnNlSWQoY2FyZElkKTtcbiAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBcbiAgICBMRVQgY2FyZCA9IEZJUlNUKFxuICAgICAgRk9SIGMgSU4gY3JlZGl0Q2FyZHNcbiAgICAgIEZJTFRFUiBjLl9rZXkgPT0gJHtmb3JtYXRDYXJkSWR9ICYmIGMudXNlcklkID09ICR7c2Vzc2lvbklkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIGMgSU4gY3JlZGl0Q2FyZHNcbiAgICAgIFJFVFVSTiBPTERcbiAgICApXG4gICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgdS5fa2V5ID09ICR7c2Vzc2lvbklkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHVcbiAgICApXG4gICAgUkVUVVJOIHt1c2VyOiB1c2VyLCBjYXJkOiBjYXJkfWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHJlc3VsdCA9IHtjYXJkOiB7fSwgdXNlcjoge319KSA9PiB7XG4gICAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qge2NhcmQsIHVzZXJ9ID0gcmVzdWx0O1xuICAgICAgY29uc3Qge19rZXk6IGNhcmRLZXl9ID0gY2FyZDtcblxuICAgICAgLy8gUmVtb3ZlIGxpbmtlZCBlZGdlc1xuICAgICAgY29uc3QgZWRnZUNvbGxlY3Rpb24gPSB1c2VEYihkYXRhYmFzZU5hbWUpLmNvbGxlY3Rpb24oJ2hhc1BheW1lbnQnKTtcblxuICAgICAgcmV0dXJuIGVkZ2VDb2xsZWN0aW9uLm91dEVkZ2VzKGNhcmRLZXksIHt9KVxuICAgICAgICAudGhlbihhc3luYyAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAvLyBFeHRyYWN0IGVkZ2VzIGZyb20gdGhlIHJlc3BvbnNlXG4gICAgICAgICAgY29uc3QgZWRnZXMgPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlKSA/IHJlc3BvbnNlIDogW107XG5cbiAgICAgICAgICBpZihlZGdlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICBlZGdlcy5tYXAoKGVkZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCB7X2tleTogZWRnZUtleX0gPSBlZGdlO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbW92ZUFxbFFyeTogQXFsUXVlcnkgPSBhcWxgUkVNT1ZFIHtfa2V5OiR7ZWRnZUtleX19IElOIGhhc1BheW1lbnRgO1xuICAgICAgICAgICAgICAgIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KHJlbW92ZUFxbFFyeSk7XG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gU3RyaXBlXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gZ2V0U3RyaXBlQ2xpZW50KCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LmN1c3RvbWVyc1xuICAgICAgICAgICAgICAgICAgLmRlbGV0ZVNvdXJjZSh1c2VyLnN0cmlwZUN1c3RvbWVySWQsIGNhcmQuc3RyaXBlSWQpXG4gICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3BheW1lbnRzOjpkZWxldGVDYXJkOjplcnJvcicsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncGF5bWVudF9lcnJvcicpO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZUJhbmtBY2NvdW50ID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGJhbmtJZDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcblxuICAvLyBDbGVhbiBkYlxuICBjb25zdCB1cGRhdGU6IFVzZXJUeXBlID0ge1xuICAgIGJhbmtBY2NvdW50OiAnJyxcbiAgICBiYW5rRnVsbE5hbWU6ICcnLFxuICAgIGJhbmtJZDogJycsXG4gICAgYmFua1JvdXRpbmc6ICcnLFxuICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gIH07XG4gIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7c2Vzc2lvbklkfSBXSVRIICR7dXBkYXRlfSBJTiB1c2VycyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC50aGVuKCh1c2VyOiBVc2VyVHlwZSkgPT4ge1xuICAgICAgY29uc3Qge3N0cmlwZUFjY291bnRJZH0gPSB1c2VyO1xuICAgICAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gZ2V0U3RyaXBlQ2xpZW50KCk7XG5cbiAgICAgIHJldHVybiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzXG4gICAgICAgIC5kZWxldGVTb3VyY2Uoc3RyaXBlQWNjb3VudElkLCBiYW5rSWQpXG4gICAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAgIC5jYXRjaCgoKSA9PiBQcm9taXNlLnJlc29sdmUoZmFsc2UpKTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVQYXltZW50VHJhbnNmZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdHJhbnNmZXI6IFBheW1lbnRUcmFuc2Zlcik6IFByb21pc2U8UGF5bWVudFRyYW5zZmVyPiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qge2Ftb3VudCwgY3VycmVuY3l9ID0gdHJhbnNmZXI7XG4gIGNvbnN0IGZvcm1hdEFtb3VudDogbnVtYmVyID0gcGFyc2VOdW0oYW1vdW50KTtcbiAgY29uc3QgZm9ybWF0Q3VycmVuY3k6IHN0cmluZyA9IHBhcnNlQ2hhcihjdXJyZW5jeSwgMywgJ1VTRCcpLnRvVXBwZXJDYXNlKCk7XG5cbiAgcmV0dXJuIGdldFVzZXIoY29udGV4dCwge3VzZXJJZDogc2Vzc2lvbklkfSlcbiAgICAudGhlbigodXNlcjogVXNlclR5cGUpID0+IHtcbiAgICAgIGNvbnN0IHtzdHJpcGVBY2NvdW50SWR9ID0gdXNlcjtcbiAgICAgIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gICAgICByZXR1cm4gc3RyaXBlQ2xpZW50LnRyYW5zZmVyc1xuICAgICAgICAuY3JlYXRlKHtcbiAgICAgICAgICBhbW91bnQ6IGZvcm1hdEFtb3VudCxcbiAgICAgICAgICBjdXJyZW5jeTogZm9ybWF0Q3VycmVuY3ksXG4gICAgICAgICAgZGVzdGluYXRpb246IHN0cmlwZUFjY291bnRJZFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoc3RyaXBlVHJhbnNmZXIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhzdHJpcGVUcmFuc2Zlcik7XG4gICAgICAgICAgY29uc3Qgbm93OiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgICAgICAgIGNvbnN0IGluc2VydDogUGF5bWVudFRyYW5zZmVyID0ge1xuICAgICAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgICAgIGFtb3VudDogZm9ybWF0QW1vdW50LFxuICAgICAgICAgICAgY3VycmVuY3k6IGZvcm1hdEN1cnJlbmN5LFxuICAgICAgICAgICAgbW9kaWZpZWQ6IG5vdyxcbiAgICAgICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYElOU0VSVCAke2luc2VydH0gSU4gdHJhbnNmZXJzIFJFVFVSTiBORVdgO1xuXG4gICAgICAgICAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXJ5KVxuICAgICAgICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgICAgICAgIC50aGVuKChuZXdUcmFuc2ZlcjogUGF5bWVudFRyYW5zZmVyKSA9PiBuZXdUcmFuc2Zlcik7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVBheW1lbnRIb2xkID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHBheW1lbnQ6IFBheW1lbnRDaGFyZ2UpOiBQcm9taXNlPFBheW1lbnRDaGFyZ2U+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7YW1vdW50LCBjYXB0dXJlLCBjYXJkSWQsIGN1cnJlbmN5LCBkZXNjcmlwdGlvbn0gPSBwYXltZW50O1xuICBjb25zdCBmb3JtYXRDdXJyZW5jeSA9IHBhcnNlQ2hhcihjdXJyZW5jeSwgMywgJ1VTRCcpLnRvVXBwZXJDYXNlKCk7XG4gIGNvbnN0IHN0cmlwZUNsaWVudCA9IGdldFN0cmlwZUNsaWVudCgpO1xuXG4gIHJldHVybiBzdHJpcGVDbGllbnQuY2hhcmdlc1xuICAgIC5jcmVhdGUoe1xuICAgICAgYW1vdW50LFxuICAgICAgY2FwdHVyZSxcbiAgICAgIGN1cnJlbmN5OiBmb3JtYXRDdXJyZW5jeSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgc291cmNlOiBjYXJkSWRcbiAgICB9KVxuICAgIC50aGVuKChzdHJpcGVDaGFyZ2UpID0+IHtcbiAgICAgIGNvbnN0IG5vdzogbnVtYmVyID0gRGF0ZS5ub3coKTtcbiAgICAgIGNvbnN0IGluc2VydDogUGF5bWVudENoYXJnZSA9IHtcbiAgICAgICAgYWRkZWQ6IG5vdyxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBjYXB0dXJlLFxuICAgICAgICBjYXJkSWQsXG4gICAgICAgIGNoYXJnZUZhaWxDb2RlOiBzdHJpcGVDaGFyZ2UuZmFpbHVyZV9jb2RlLFxuICAgICAgICBjaGFyZ2VGYWlsTXNnOiBzdHJpcGVDaGFyZ2UuZmFpbHVyZV9tZXNzYWdlLFxuICAgICAgICBjaGFyZ2VJZDogc3RyaXBlQ2hhcmdlLmlkLFxuICAgICAgICBjaGFyZ2VTdGF0dXM6IHN0cmlwZUNoYXJnZS5zdGF0dXMsXG4gICAgICAgIGN1cnJlbmN5OiBmb3JtYXRDdXJyZW5jeSxcbiAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgIG1vZGlmaWVkOiBub3csXG4gICAgICAgIHVzZXJJZDogc2Vzc2lvbklkXG4gICAgICB9O1xuICAgICAgY29uc3QgYXFsUXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHBheW1lbnRzIFJFVFVSTiBORVdgO1xuXG4gICAgICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKChuZXdQYXltZW50OiBQYXltZW50Q2hhcmdlKSA9PiBuZXdQYXltZW50KTtcbiAgICB9KVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygncGF5bWVudHM6OmNyZWF0ZUhvbGQ6OmVycm9yJywgZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IFVzZXJFcnJvcigncGF5bWVudF9lcnJvcicpO1xuICAgIH0pO1xufTtcblxuaW50ZXJmYWNlIENhcmQge1xuICBpZDogc3RyaW5nO1xuICBicmFuZD86IHN0cmluZztcbiAgY3ZjX2NoZWNrPzogc3RyaW5nO1xuICBsYXN0ND86IHN0cmluZztcbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsWUFBQUEsTUFBZSwrQkFDdkIsT0FBUSxjQUFBQyxFQUFZLGFBQUFDLEVBQVcsV0FBQUMsRUFBUyxlQUFBQyxFQUFhLGdCQUFBQyxNQUFtQiwrQkFDeEUsT0FBUSxPQUFBQyxNQUFVLFdBS2xCLE9BQVEsY0FBQUMsTUFBaUIsMEJBR3pCLE9BQVEsWUFBQUMsRUFBVSxhQUFBQyxNQUFnQiw2QkFDbEMsT0FBUSxTQUFBQyxNQUFZLDRCQUNwQixPQUFRLG1CQUFBQyxNQUFzQiwwQkFDOUIsT0FBUSxXQUFBQyxNQUFjLGFBSXRCLE1BQU1DLEVBQWdCLFdBRVRDLEdBQXNCQyxHQUEwQyxDQUMzRSxNQUFNQyxFQUFTLHFCQUNULENBQUMsYUFBQUMsRUFBYyxRQUFTLENBQUMsT0FBUUMsRUFBVyxTQUFBQyxDQUFRLEVBQUksQ0FBQyxDQUFDLEVBQUlKLEVBSXBFLE9BRnFCSixFQUFnQixFQUVqQixVQUNqQixPQUFPLENBQ04sU0FBVSxDQUNSLE9BQVFPLEVBQ1IsU0FBQUMsQ0FDRixDQUNGLENBQVEsRUFDUCxLQUFNQyxHQUFhLENBR2xCLE1BQU1DLEVBQW1CLENBQ3ZCLFNBRmtCLEtBQUssSUFBSSxFQUczQixpQkFBa0JELEVBQVMsRUFDN0IsRUFFTUUsRUFBbUJoQixXQUFhWSxDQUFTLFNBQVNHLENBQU0sK0JBRTlELE9B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QVVBLEVBQWEsR0FDdkIsYUFBY0EsRUFBYSxPQUMzQixTQUFVUCxFQUNWLFlBQUFNLEVBQ0EsU0FBVWpFLEVBQ1YsT0FBUXJCLENBQ1YsRUFDTUksRUFBbUJoQixXQUFhNkQsQ0FBTSwwQkFFNUMsT0FBT3pELEVBQU1PLENBQVksRUFBRSxNQUFNSyxDQUFNLEVBQ3BDLEtBQU1DLEdBQVdBLEVBQU8sS0FBSyxDQUFDLEVBQzlCLEtBQU1tRixHQUE4QkEsQ0FBVSxDQUNuRCxDQUFDLEVBQ0EsTUFBT2pGLEdBQWlCLENBRXZCLE1BQU0sSUFBSWhCLEVBQVUsZUFBZSxDQUNyQyxDQUFDLENBQ0wiLAogICJuYW1lcyI6IFsicGFyc2VOdW0iLCAiY3JlYXRlSGFzaCIsICJwYXJzZUNoYXIiLCAicGFyc2VJZCIsICJwYXJzZVN0cmluZyIsICJwYXJzZVZhckNoYXIiLCAiYXFsIiwgIkVycm9yVHlwZXMiLCAibG9nRXJyb3IiLCAiVXNlckVycm9yIiwgInVzZURiIiwgImdldFN0cmlwZUNsaWVudCIsICJnZXRVc2VyIiwgImV2ZW50Q2F0ZWdvcnkiLCAiYWRkQ3VzdG9tZXJBY2NvdW50IiwgImNvbnRleHQiLCAiYWN0aW9uIiwgImRhdGFiYXNlTmFtZSIsICJzZXNzaW9uSWQiLCAidXNlcm5hbWUiLCAiY3VzdG9tZXIiLCAidXBkYXRlIiwgImFxbFFyeSIsICJjdXJzb3IiLCAidXBkYXRlZFVzZXIiLCAiZXJyb3IiLCAiYWRkQmFua0FjY291bnQiLCAiYmFua0FjY291bnQiLCAiYWNjb3VudE51bWJlciIsICJmdWxsTmFtZSIsICJyb3V0aW5nIiwgImZvcm1hdEFjY291bnQiLCAiZm9ybWF0RnVsbE5hbWUiLCAiZm9ybWF0Um91dGluZyIsICJ1c2VyIiwgInN0cmlwZUFjY291bnRJZCIsICJzdHJpcGVDbGllbnQiLCAidG9rZW4iLCAiYWNjb3VudCIsICJub3ciLCAiYWRkQ3JlZGl0Q2FyZCIsICJjYXJkIiwgImNpdHkiLCAiY291bnRyeSIsICJjdmMiLCAiZXhwTW9udGgiLCAiZXhwWWVhciIsICJzdHJlZXQxIiwgInN0cmVldDIiLCAic3RhdGUiLCAiemlwIiwgImZvcm1hdE51bWJlciIsICJmb3JtYXRFeHBNb250aCIsICJmb3JtYXRFeHBZZWFyIiwgImZvcm1hdEN2YyIsICJwYXltZW50Q2FyZCIsICJmb3JtYXRDaXR5IiwgImZvcm1hdENvdW50cnkiLCAiZm9ybWF0U3RyZWV0MSIsICJmb3JtYXRTdHJlZXQyIiwgImZvcm1hdFN0YXRlIiwgImZvcm1hdFppcCIsICJuZXdTb3VyY2UiLCAiY2FyZFNvdXJjZSIsICJicmFuZCIsICJjdmNDaGVjayIsICJsYXN0NCIsICJpbnNlcnQiLCAiaW5zZXJ0QXFsUXJ5IiwgIm5ld0NhcmQiLCAiY2FyZElkIiwgImNhcmRLZXkiLCAiZWRnZUNvbGxlY3Rpb24iLCAiZWRnZUlkIiwgImVkZ2UiLCAidXBkYXRlQ3JlZGl0Q2FyZCIsICJpZCIsICJmb3JtYXRJZCIsICJyZXN1bHRzIiwgInVwZGF0ZWRDYXJkIiwgInN0cmlwZUN1c3RvbWVySWQiLCAic3RyaXBlSWQiLCAiZ2V0Q3JlZGl0Q2FyZHMiLCAibGlzdCIsICJkZWxldGVDcmVkaXRDYXJkIiwgImZvcm1hdENhcmRJZCIsICJyZXN1bHQiLCAicmVzcG9uc2UiLCAiZWRnZXMiLCAiZWRnZUtleSIsICJyZW1vdmVBcWxRcnkiLCAiZGVsZXRlQmFua0FjY291bnQiLCAiYmFua0lkIiwgImNyZWF0ZVBheW1lbnRUcmFuc2ZlciIsICJ0cmFuc2ZlciIsICJhbW91bnQiLCAiY3VycmVuY3kiLCAiZm9ybWF0QW1vdW50IiwgImZvcm1hdEN1cnJlbmN5IiwgInN0cmlwZVRyYW5zZmVyIiwgIm5ld1RyYW5zZmVyIiwgImNyZWF0ZVBheW1lbnRIb2xkIiwgInBheW1lbnQiLCAiY2FwdHVyZSIsICJkZXNjcmlwdGlvbiIsICJzdHJpcGVDaGFyZ2UiLCAibmV3UGF5bWVudCJdCn0K
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ArangoDbLimit } from '../types/arangodb.types.js';
|
|
2
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
3
|
+
import type { FileType } from '../types/files.types.js';
|
|
4
|
+
import type { PostInputType, PostOptions, PostType } from '../types/posts.types.js';
|
|
5
|
+
export declare const parsePostOptions: (options?: PostOptions) => {
|
|
6
|
+
latitude: number;
|
|
7
|
+
limit: ArangoDbLimit;
|
|
8
|
+
longitude: number;
|
|
9
|
+
type: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const getPostOptional: (fields?: string[], sessionId?: string) => {
|
|
12
|
+
objects: string[];
|
|
13
|
+
queries: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare const getPost: (context: ApiContext, postId: string, options?: PostOptions) => Promise<PostType>;
|
|
16
|
+
export declare const getPostsByArea: (context: ApiContext, latitude: number, longitude: number, options?: PostOptions) => Promise<PostType[]>;
|
|
17
|
+
export declare const getPostsByLatest: (context: ApiContext, options?: PostOptions) => Promise<PostType[]>;
|
|
18
|
+
export declare const getPostsByReactions: (context: ApiContext, reactions?: string[], options?: PostOptions) => Promise<PostType[]>;
|
|
19
|
+
export declare const getPostsByTags: (context: ApiContext, tags?: string[], options?: PostOptions) => Promise<PostType[]>;
|
|
20
|
+
export declare const getPostsByUser: (context: ApiContext, userId: string, options?: PostOptions) => Promise<PostType[]>;
|
|
21
|
+
export declare const getPostComments: (context: ApiContext, postId: string, options?: PostOptions) => Promise<PostType[]>;
|
|
22
|
+
export declare const addPost: (context: ApiContext, { content, endDate, groupId, location, latitude, longitude, name, parentId, privacy, tags, startDate, type }: PostInputType) => Promise<PostType>;
|
|
23
|
+
export declare const updatePost: (context: ApiContext, post: PostInputType) => Promise<PostType>;
|
|
24
|
+
export declare const deletePost: (context: ApiContext, postDocId: string) => Promise<PostType>;
|
|
25
|
+
export declare const createPostEdge: (context: ApiContext, postDocId: string, itemDocId: string, edgeType?: string, props?: {}) => Promise<FileType>;
|