@nlabs/reaktor 0.10.1 → 0.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/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/block-navigation.js +1 -1
- package/coverage/config.ts.html +766 -0
- package/coverage/index.html +83 -53
- 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/sorter.js +21 -7
- 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/connections.d.ts +5 -0
- package/lib/actions/content.d.ts +13 -0
- package/lib/actions/conversations.d.ts +16 -0
- package/lib/actions/dynamodb.d.ts +12 -0
- package/lib/actions/email.d.ts +8 -0
- package/lib/actions/files.d.ts +19 -0
- package/lib/actions/groups.d.ts +13 -0
- package/lib/actions/images.d.ts +33 -0
- package/lib/actions/index.d.ts +28 -0
- package/lib/actions/ios.d.ts +7 -0
- package/lib/actions/locations.d.ts +6 -0
- package/lib/actions/messages.d.ts +13 -0
- package/lib/actions/notifications.d.ts +9 -0
- package/lib/actions/payments.d.ts +12 -0
- package/lib/actions/posts.d.ts +25 -0
- package/lib/actions/profiles.d.ts +4 -0
- package/lib/actions/reactions.d.ts +32 -0
- package/lib/actions/s3.d.ts +11 -0
- package/lib/actions/search.d.ts +3 -0
- package/lib/actions/sms.d.ts +2 -0
- package/lib/actions/statistics.d.ts +4 -0
- package/lib/actions/subscriptions.d.ts +7 -0
- package/lib/actions/tags.d.ts +34 -0
- package/lib/actions/users.d.ts +73 -0
- package/lib/actions/videos.d.ts +25 -0
- package/lib/actions/websockets.d.ts +20 -0
- package/lib/adapters/arangoAdapter.d.ts +8 -0
- package/lib/adapters/contentAdapter.d.ts +8 -0
- package/lib/adapters/fileAdapter.d.ts +9 -0
- package/lib/adapters/imageAdapter.d.ts +8 -0
- package/lib/adapters/index.d.ts +9 -0
- package/lib/adapters/messageAdapter.d.ts +8 -0
- package/lib/adapters/postAdapter.d.ts +8 -0
- package/lib/adapters/reaktorAdapter.d.ts +16 -0
- package/lib/adapters/tagAdapter.d.ts +9 -0
- package/lib/adapters/userAdapter.d.ts +13 -0
- package/lib/config.d.ts +57 -0
- package/lib/handlers/graphqlHandler.d.ts +4 -0
- package/lib/index.d.ts +19 -0
- package/lib/lambdas/actions/websockets.d.ts +7 -0
- package/lib/lambdas/authorizer.d.ts +20 -0
- package/lib/lambdas/connection.d.ts +12 -0
- package/lib/lambdas/utils/message.d.ts +1 -0
- package/lib/lambdas/utils/websocket.d.ts +7 -0
- 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/image.d.ts +3 -0
- package/lib/mocks/post.d.ts +38 -0
- package/lib/mocks/tag.d.ts +2 -0
- package/lib/mocks/user.d.ts +4 -0
- package/lib/mocks/video.d.ts +3 -0
- package/lib/mutations/content.d.ts +2 -0
- package/lib/mutations/index.d.ts +11 -0
- package/lib/mutations/locations.d.ts +2 -0
- package/lib/mutations/messages.d.ts +2 -0
- package/lib/mutations/posts.d.ts +2 -0
- package/lib/mutations/profiles.d.ts +2 -0
- package/lib/mutations/reactions.d.ts +2 -0
- package/lib/mutations/statistics.d.ts +2 -0
- package/lib/mutations/subscriptions.d.ts +2 -0
- package/lib/mutations/tags.d.ts +2 -0
- package/lib/mutations/users.d.ts +1 -0
- package/lib/objectTypes/app.d.ts +3 -0
- package/lib/objectTypes/bankAccount.d.ts +1 -0
- package/lib/objectTypes/connection.d.ts +1 -0
- package/lib/objectTypes/content.d.ts +2 -0
- package/lib/objectTypes/conversation.d.ts +2 -0
- 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/file.d.ts +2 -0
- package/lib/objectTypes/filter.d.ts +1 -0
- package/lib/objectTypes/group.d.ts +3 -0
- package/lib/objectTypes/iapSubscription.d.ts +1 -0
- package/lib/objectTypes/image.d.ts +6 -0
- package/lib/objectTypes/index.d.ts +26 -0
- package/lib/objectTypes/location.d.ts +2 -0
- package/lib/objectTypes/message.d.ts +2 -0
- package/lib/objectTypes/passcode.d.ts +1 -0
- package/lib/objectTypes/plan.d.ts +2 -0
- package/lib/objectTypes/post.d.ts +2 -0
- package/lib/objectTypes/profile.d.ts +3 -0
- package/lib/objectTypes/reaction.d.ts +2 -0
- package/lib/objectTypes/relation.d.ts +1 -0
- package/lib/objectTypes/search.d.ts +1 -0
- package/lib/objectTypes/statistics.d.ts +1 -0
- package/lib/objectTypes/subscription.d.ts +2 -0
- package/lib/objectTypes/tag.d.ts +2 -0
- package/lib/objectTypes/user.d.ts +4 -0
- package/lib/queries/content.d.ts +2 -0
- package/lib/queries/index.d.ts +10 -0
- package/lib/queries/locations.d.ts +2 -0
- package/lib/queries/messages.d.ts +2 -0
- package/lib/queries/posts.d.ts +2 -0
- package/lib/queries/reactions.d.ts +2 -0
- package/lib/queries/statistics.d.ts +2 -0
- package/lib/queries/subscriptions.d.ts +2 -0
- package/lib/queries/tags.d.ts +2 -0
- package/lib/queries/users.d.ts +1 -0
- 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/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 +27 -0
- 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/videos.types.d.ts +46 -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/arangodbUtils.d.ts +70 -0
- package/lib/utils/authUtils.d.ts +23 -0
- package/lib/utils/contextUtils.d.ts +3 -0
- package/lib/utils/dbI18n.d.ts +10 -0
- package/lib/utils/dbI18n.example.d.ts +20 -0
- package/lib/utils/googleTranslate.d.ts +6 -0
- package/lib/utils/graphqlUtils.d.ts +10 -0
- package/lib/utils/index.d.ts +18 -0
- package/lib/utils/languageDetection.d.ts +8 -0
- package/lib/utils/localeUtils.d.ts +11 -0
- package/lib/utils/localeUtils.example.d.ts +5 -0
- package/lib/utils/middlewareUtils.d.ts +2 -0
- package/lib/utils/sessionUtils.d.ts +18 -0
- package/lib/utils/stripeUtils.d.ts +7 -0
- package/lib/utils/templateUtils.d.ts +3 -0
- package/lib/utils/testUtils.d.ts +95 -0
- package/lib/utils/translationQueue.d.ts +29 -0
- package/lib/utils/translationQueue.example.d.ts +33 -0
- package/package.json +28 -28
- 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/actions/apps.js +0 -20
- package/lib/actions/connections.js +0 -7
- package/lib/actions/content.js +0 -17
- package/lib/actions/conversations.js +0 -33
- package/lib/actions/dynamodb.js +0 -2
- package/lib/actions/email.js +0 -2
- package/lib/actions/files.js +0 -5
- package/lib/actions/groups.js +0 -52
- package/lib/actions/images.js +0 -66
- package/lib/actions/index.js +0 -2
- package/lib/actions/ios.js +0 -11
- package/lib/actions/locations.js +0 -7
- package/lib/actions/messages.js +0 -33
- package/lib/actions/notifications.js +0 -2
- package/lib/actions/payments.js +0 -32
- package/lib/actions/posts.js +0 -143
- package/lib/actions/profiles.js +0 -8
- package/lib/actions/reactions.js +0 -35
- package/lib/actions/s3.js +0 -2
- package/lib/actions/search.js +0 -5
- package/lib/actions/sms.js +0 -2
- package/lib/actions/statistics.js +0 -8
- package/lib/actions/subscriptions.js +0 -12
- package/lib/actions/tags.js +0 -24
- package/lib/actions/users.js +0 -84
- package/lib/actions/websockets.js +0 -30
- package/lib/adapters/arangoAdapter.js +0 -2
- package/lib/adapters/contentAdapter.js +0 -2
- package/lib/adapters/fileAdapter.js +0 -2
- package/lib/adapters/imageAdapter.js +0 -2
- package/lib/adapters/messageAdapter.js +0 -2
- package/lib/adapters/postAdapter.js +0 -2
- package/lib/adapters/reaktorAdapter.js +0 -2
- package/lib/adapters/tagAdapter.js +0 -2
- package/lib/adapters/userAdapter.js +0 -2
- package/lib/config.js +0 -2
- package/lib/handlers/graphqlHandler.js +0 -2
- package/lib/index.js +0 -2
- package/lib/lambdas/actions/websockets.js +0 -30
- package/lib/lambdas/authorizer.js +0 -2
- package/lib/lambdas/connection.js +0 -2
- package/lib/lambdas/utils/message.js +0 -2
- package/lib/lambdas/utils/websocket.js +0 -2
- package/lib/mocks/conversation.js +0 -2
- package/lib/mocks/file.js +0 -2
- package/lib/mocks/group.js +0 -2
- package/lib/mocks/image.js +0 -2
- package/lib/mocks/post.js +0 -2
- package/lib/mocks/tag.js +0 -2
- package/lib/mocks/user.js +0 -2
- package/lib/mutations/index.js +0 -2
- package/lib/mutations/locations.integration.js +0 -2
- package/lib/mutations/locations.js +0 -2
- package/lib/mutations/messages.integration.js +0 -2
- package/lib/mutations/messages.js +0 -2
- package/lib/mutations/posts.integration.js +0 -2
- package/lib/mutations/posts.js +0 -2
- package/lib/mutations/profiles.integration.js +0 -2
- package/lib/mutations/profiles.js +0 -2
- package/lib/mutations/reactions.integration.js +0 -2
- package/lib/mutations/reactions.js +0 -2
- package/lib/mutations/statistics.integration.js +0 -2
- package/lib/mutations/statistics.js +0 -2
- package/lib/mutations/subscriptions.integration.js +0 -2
- package/lib/mutations/subscriptions.js +0 -2
- package/lib/mutations/tags.integration.js +0 -2
- package/lib/mutations/tags.js +0 -2
- package/lib/mutations/users.integration.js +0 -2
- package/lib/mutations/users.js +0 -2
- package/lib/objectTypes/app.js +0 -2
- package/lib/objectTypes/bankAccount.js +0 -2
- package/lib/objectTypes/connection.js +0 -2
- package/lib/objectTypes/conversation.js +0 -2
- package/lib/objectTypes/creditCard.js +0 -2
- package/lib/objectTypes/document.js +0 -2
- package/lib/objectTypes/error.js +0 -2
- package/lib/objectTypes/external.js +0 -2
- package/lib/objectTypes/file.js +0 -2
- package/lib/objectTypes/filter.js +0 -2
- package/lib/objectTypes/group.js +0 -2
- package/lib/objectTypes/iapSubscription.js +0 -2
- package/lib/objectTypes/image.js +0 -2
- package/lib/objectTypes/index.js +0 -2
- package/lib/objectTypes/location.js +0 -2
- package/lib/objectTypes/message.js +0 -2
- package/lib/objectTypes/passcode.js +0 -2
- package/lib/objectTypes/plan.js +0 -2
- package/lib/objectTypes/post.js +0 -2
- package/lib/objectTypes/profile.js +0 -2
- package/lib/objectTypes/reaction.js +0 -2
- package/lib/objectTypes/relation.js +0 -2
- package/lib/objectTypes/search.js +0 -2
- package/lib/objectTypes/statistics.js +0 -2
- package/lib/objectTypes/subscription.js +0 -2
- package/lib/objectTypes/tag.js +0 -2
- package/lib/objectTypes/user.js +0 -2
- package/lib/queries/index.js +0 -2
- package/lib/queries/locations.integration.js +0 -2
- package/lib/queries/locations.js +0 -2
- package/lib/queries/messages.integration.js +0 -2
- package/lib/queries/messages.js +0 -2
- package/lib/queries/posts.integration.js +0 -2
- package/lib/queries/posts.js +0 -2
- package/lib/queries/reactions.integration.js +0 -2
- package/lib/queries/reactions.js +0 -2
- package/lib/queries/statistics.js +0 -2
- package/lib/queries/subscriptions.js +0 -2
- package/lib/queries/tags.integration.js +0 -2
- package/lib/queries/tags.js +0 -2
- package/lib/queries/users.integration.js +0 -2
- package/lib/queries/users.js +0 -2
- package/lib/templates/email/layout.js +0 -280
- package/lib/templates/email/passwordForgot.js +0 -16
- package/lib/templates/email/passwordRecovery.js +0 -13
- package/lib/templates/email/verifyEmail.js +0 -16
- package/lib/templates/email/welcome.js +0 -16
- package/lib/templates/sms/passwordForgot.js +0 -2
- package/lib/templates/sms/passwordRecovery.js +0 -2
- package/lib/templates/sms/verifyEmail.js +0 -2
- package/lib/templates/sms/verifyPhone.js +0 -2
- package/lib/templates/sms/welcome.js +0 -2
- package/lib/types/apps.types.js +0 -2
- package/lib/types/arangodb.types.js +0 -1
- package/lib/types/auth.types.js +0 -1
- package/lib/types/connections.types.js +0 -1
- package/lib/types/content.types.js +0 -1
- package/lib/types/conversations.types.js +0 -1
- package/lib/types/email.types.js +0 -1
- package/lib/types/error.types.js +0 -2
- package/lib/types/files.types.js +0 -1
- package/lib/types/google.types.js +0 -1
- package/lib/types/groups.types.js +0 -1
- package/lib/types/images.types.js +0 -1
- package/lib/types/index.js +0 -2
- package/lib/types/locations.types.js +0 -1
- package/lib/types/messages.types.js +0 -1
- package/lib/types/notifications.types.js +0 -1
- package/lib/types/payments.types.js +0 -1
- package/lib/types/posts.types.js +0 -1
- package/lib/types/profiles.types.js +0 -1
- package/lib/types/statistics.types.js +0 -1
- package/lib/types/tags.types.js +0 -1
- package/lib/types/users.types.js +0 -1
- package/lib/types/websockets.types.js +0 -1
- package/lib/utils/adapterUtils.js +0 -2
- package/lib/utils/analyticsUtils.js +0 -2
- package/lib/utils/arangodbUtils.js +0 -7
- package/lib/utils/authUtils.js +0 -2
- package/lib/utils/contextUtils.js +0 -2
- package/lib/utils/dbI18n.example.js +0 -6
- package/lib/utils/dbI18n.js +0 -2
- package/lib/utils/googleTranslate.js +0 -2
- package/lib/utils/graphqlUtils.js +0 -2
- package/lib/utils/index.js +0 -2
- package/lib/utils/languageDetection.js +0 -2
- package/lib/utils/localeUtils.example.js +0 -2
- package/lib/utils/localeUtils.js +0 -2
- package/lib/utils/middlewareUtils.js +0 -2
- package/lib/utils/sessionUtils.js +0 -2
- package/lib/utils/stripeUtils.js +0 -2
- package/lib/utils/templateUtils.js +0 -2
- package/lib/utils/testUtils.js +0 -2
- package/lib/utils/translationQueue.example.js +0 -2
- package/lib/utils/translationQueue.js +0 -2
package/lib/actions/users.js
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
import{createHash as v,createPassword as P,parseArangoId as M,parseChar as Q,parseEmail as H,parseNum as J,parsePassword as L,parsePhone as Y,parseUsername as S}from"@nlabs/utils";import{aql as U}from"arangojs";import{DateTime as X}from"luxon";import z from"stripe";import{parseUser as D}from"../adapters/userAdapter";import{Config as K}from"../config";import{sendEmail as Z}from"./email";import{sendSms as ee}from"./sms";import{ErrorTypes as d}from"../types/error.types";import{logError as I,logException as q}from"../utils/analyticsUtils";import{getDocId as j,getLimit as se,selectReactionCountByType as re,useDb as g}from"../utils/arangodbUtils";import{detectLanguage as te}from"../utils/languageDetection";import{getSession as _,setSession as ne}from"../utils/sessionUtils";const E="users",oe="2025-05-28.basil";var ae=(t=>(t[t.DEACTIVATED=0]="DEACTIVATED",t[t.ACTIVE=1]="ACTIVE",t[t.PREMIUM=2]="PREMIUM",t[t.CONTENT_ADMIN=3]="CONTENT_ADMIN",t[t.ADMIN=4]="ADMIN",t))(ae||{});const B=(e,o,s,i=15)=>{const n=X.local(),t=n.plus({minutes:i}),u=Math.floor(n.toSeconds()),r=Math.floor(t.toSeconds()),a=ne({exp:r,iat:u,userAccess:s,userId:e,username:o});return{expires:t.toMillis(),issued:n.toMillis(),token:a,userId:e,username:o}},$=(e=[])=>e.reduce((o,s)=>s.includes("Count")?re("users","u",s,o):o,{objects:[],queries:[]}),b=(e={})=>{const{from:o=0,to:s=30}=e,i=se(o,s);return{...e,limit:i}},Ue=async(e,o)=>{const s="addUser",{databaseName:i,languageContext:n}=e,{email:t,password:u,phone:r,username:a,userId:c,_key:l,_id:p,...m}=D(o),T=L(u);if(!!!T||!(!!a||!!r||!!t))return q({action:s,category:E,params:{username:a},value:d.INVALID_ARGUMENTS},e);const A=v(`${a||r||t}${T}`,null),N=P(T,A),h=[];a&&h.push(`u.username == "${a}"`),t&&h.push(`u.email == "${t}"`),r&&h.push(`u.phone == ${r}`);const w=`FOR u IN users
|
|
2
|
-
FILTER ${h.join(" || ")}
|
|
3
|
-
LIMIT 1
|
|
4
|
-
RETURN u`;try{if((await g(i).query(w).then(W=>W.all())).length)return q({action:s,category:E,params:{email:t,phone:r,username:a},value:d.EXISTING_ITEM},e)}catch(C){return I({action:s,category:E,params:{email:t,phone:r,username:a},value:d.DATABASE_ERROR},C,e)}const x=r?.replace(/\D/g,"").substring(0,3),O=te({...n,phoneCountryCode:x,userPreference:m.locale||"en"}),F=Math.floor(1e5+Math.random()*9e5),k=Math.floor(1e5+Math.random()*9e5),G={...m,_key:v(a,null),added:Date.now(),email:t,locale:O,modified:Date.now(),password:N,phone:r,salt:A,userAccess:1,username:a,verifiedEmail:!1,verifiedEmailCode:F,verifiedPhone:!1,verifiedSmsCode:k},V=U`INSERT ${G} IN users RETURN NEW`;return await g(i).query(V).then(C=>C.next()).catch(C=>I({action:s,category:E,params:{username:a},value:d.DATABASE_ERROR},C,e))},Ne=async(e,o)=>{const s="updateUser",{databaseName:i}=e,n=D(o),{_key:t,_id:u,tags:r=[],...a}=n,{id:c}=n,l=U`LET u = DOCUMENT(${c})
|
|
5
|
-
UPDATE u WITH ${a} IN users
|
|
6
|
-
RETURN NEW`;try{const p=g(i),m=await p.query(l).then(y=>y.next()),T=p.collection("isTagged");return await Promise.all(r.map(({id:y,name:f})=>{const R=U`FOR it IN isTagged
|
|
7
|
-
FILTER it._from == ${y} && it._to == ${c} && it.name == ${f}
|
|
8
|
-
LIMIT 1
|
|
9
|
-
RETURN it`;return p.query(R).then(A=>A.next()).then(A=>{if(A)return A;const N={_from:y,_key:v(`isTagged-${y}-${c}`),_to:c,added:Date.now(),name:f};return T.save(N,{returnNew:!0}).then(()=>N)})})),m}catch(p){return I({action:s,category:E,params:{user:o},value:d.DATABASE_ERROR},p,e)}},he=async(e,{email:o,phone:s,username:i})=>{const n="forgotPassword",{databaseName:t}=e,u=U`FOR u IN users
|
|
10
|
-
FILTER u.email == ${o} || u.phone == ${s} || u.username == ${i}
|
|
11
|
-
LIMIT 1
|
|
12
|
-
RETURN u`;try{return await g(t).query(u).then(async r=>{const a=r.next();if(a){const{email:c,phone:l,verifiedEmail:p,verifiedPhone:m}=a,T=1e3*60*15,y=Math.floor(1e5+Math.random()*9e5),f=j("users",a);let R;if(c&&p&&(Z({context:e,text:`Your code is ${y}`}),R={verifiedEmailCode:y,verifiedEmailExpires:T}),l&&m&&(ee({context:e,text:`Your code is ${y}`}),R={verifiedSmsCode:y,verifiedPhoneExpires:T}),R.verifiedEmailCode||R.verifiedSmsCode){const A=U`UPDATE ${f} WITH ${R} IN users`;return await g(t).query(A),!0}return!1}return!1})}catch(r){return I({action:n,category:E,params:{email:o,phone:s,username:i},value:d.DATABASE_ERROR},r,e),!1}},Oe=async(e,{code:o,password:s,type:i,username:n})=>{const t="resetPassword",{databaseName:u}=e,r=L(s),a=U`FOR u IN users
|
|
13
|
-
FILTER u.username == ${n}
|
|
14
|
-
LIMIT 1
|
|
15
|
-
RETURN u`;try{return await g(u).query(a).then(async c=>{const l=c.next();if(l){const{_id:p,salt:m,verifiedEmailCode:T,verifiedEmailExpires:y,verifiedSmsCode:f,verifiedPhoneExpires:R}=l,A=Date.now();let N;switch(i){case"email":o===T&&y>A&&(N={password:P(r,m)});break;case"phone":o===f&&R>A&&(N={password:P(r,m)});break;default:return!1}if(N){const h=U`UPDATE ${p} WITH ${N} IN users`;return await g(u).query(h),!0}}return!1})}catch(c){return I({action:t,category:E,params:{username:n},value:d.DATABASE_ERROR},c,e),!1}},$e=async(e,{code:o,type:s})=>{const i="confirmCode",{databaseName:n,session:{userId:t}}=e,u=j("users",{userId:t}),r=U`LET u = DOCUMENT(${u}) RETURN u`;try{return await g(n).query(r).then(a=>a.next()).then(({verifiedEmailCode:a,verifiedSmsCode:c})=>{switch(s){case"email":return o===a;case"phone":return o===c;default:return!1}})}catch(a){return I({action:i,category:E,params:{code:o,type:s},value:d.DATABASE_ERROR},a,e),!1}},Ce=(e,o)=>{const s="deleteUser",{databaseName:i}=e,{id:n}=D(o),t=U`LET u = DOCUMENT(${n})
|
|
16
|
-
REMOVE u IN users
|
|
17
|
-
RETURN OLD`,u=new z(K.get("stripe.token"),{apiVersion:oe,typescript:!0});return g(i).query(t).then(r=>r.next()).then(r=>u.customers.del(r?.stripeCustomerId).then(()=>u.accounts.del(r?.stripeAccountId)).then(()=>r)).catch(r=>I({action:s,category:E,params:{id:n},value:d.DATABASE_ERROR},r,e))},Se=(e,o)=>{const s="delete",{databaseName:i}=e,{id:n}=D(o),u=U`UPDATE ${n} WITH ${{userAccess:0}} IN users LIMIT 1 RETURN NEW`;return g(i).query(u).then(r=>r.next()).catch(r=>I({action:s,category:E,params:{id:n},value:d.DATABASE_ERROR},r,e))},qe=e=>{const{first:o,last:s,name:i="",username:n=""}=e,t=[o,s].join(" ").trim();return i||(t!==""?t:n||"Unknown")},De=e=>{const o="getSessionUser",{databaseName:s,fields:i,session:{userId:n,username:t}}=e,{objects:u,queries:r}=$(i),c=`LET u = DOCUMENT("${M(`users/${n}`)}")
|
|
18
|
-
${r.join(`
|
|
19
|
-
`)}
|
|
20
|
-
RETURN MERGE(u, {${u.join(", ")}})`;return g(s).query(c).then(l=>l.next()).catch(l=>(I({action:o,category:E,params:{userId:n,username:t},value:d.DATABASE_ERROR},l,e),null))},be=(e,o)=>{const s="getUser",{email:i,id:n,phone:t,userId:u,username:r}=D(o),{databaseName:a,fields:c}=e,{objects:l,queries:p}=$(c);let m;return n?m=`LET u = DOCUMENT("${n}")
|
|
21
|
-
${p.join(`
|
|
22
|
-
`)}
|
|
23
|
-
FILTER u.userAccess > 0
|
|
24
|
-
RETURN MERGE(u, {${l.join(", ")}})`:r?m=`FOR u IN users
|
|
25
|
-
FILTER u.username == "${r}"
|
|
26
|
-
${p.join(`
|
|
27
|
-
`)}
|
|
28
|
-
RETURN MERGE(u, {${l.join(", ")}})`:i?m=`FOR u IN users
|
|
29
|
-
FILTER u.email == "${i}"
|
|
30
|
-
${p.join(`
|
|
31
|
-
`)}
|
|
32
|
-
RETURN MERGE(u, {${l.join(", ")}})`:t&&(m=`FOR u IN users
|
|
33
|
-
FILTER u.phone == "${t}"
|
|
34
|
-
${p.join(`
|
|
35
|
-
`)}
|
|
36
|
-
RETURN MERGE(u, {${l.join(", ")}})`),g(a).query(m).then(T=>T.next()).then(T=>T).catch(T=>I({action:s,category:E,params:{id:n,userId:u,username:r},value:d.DATABASE_ERROR},T,e))},we=(e,o)=>{const s="getUserList",{databaseName:i,fields:n}=e,{limit:t,username:u}=b(o),{objects:r,queries:a}=$(n),c=["u.userAccess > 0"];u&&c.push(`CONTAINS(u.username, "${S(u)}")`);const l=`FOR u IN users
|
|
37
|
-
FILTER ${c.join(" && ")}
|
|
38
|
-
${a.join(`
|
|
39
|
-
`)}
|
|
40
|
-
${t.aql}
|
|
41
|
-
SORT u.username
|
|
42
|
-
RETURN MERGE(u, {${r.join(", ")}})`;return g(i).query(l).then(p=>p.all()).catch(p=>(I({action:s,category:E,value:d.DATABASE_ERROR},p,e),[]))},Pe=(e,{reactions:o=[],username:s},i)=>{const n="getUsersByReactions",{databaseName:t,fields:u,session:{userId:r}}=e,a=o.map(R=>Q(R,32).toLowerCase()),{limit:c}=b(i),{objects:l,queries:p}=$(u),m=`users/${r}`,T=S(s),y=["u.userAccess > 0",`POSITION(${JSON.stringify(a)}, LOWER(r.name))`];s&&y.push(`CONTAINS(u.username, "${T}")`);const f=`FOR u, r IN OUTBOUND "${m}" hasReaction
|
|
43
|
-
OPTIONS {vertexCollections: "users"}
|
|
44
|
-
${p.join(`
|
|
45
|
-
`)}
|
|
46
|
-
FILTER ${y.join(" && ")}
|
|
47
|
-
${c.aql}
|
|
48
|
-
RETURN MERGE(u, {${l.join(", ")}})`;return g(t).query(f).then(R=>R.all()).catch(R=>(I({action:n,category:E,value:d.DATABASE_ERROR},R,e),[]))},xe=(e,{tags:o,username:s},i)=>{const n="getUsersByTags",{databaseName:t,fields:u,session:{userId:r}}=e,a=o?.reduce((f,R)=>(R&&f.push(Q(R,32).toLowerCase()),f),[]),{limit:c}=b(i),{objects:l,queries:p}=$(u),m=S(s),T=[`u._key != "${r}"`,"u.userAccess > 0"];s&&T.push(`CONTAINS(u.username, "${m}")`);const y=`FOR t IN tags
|
|
49
|
-
FILTER POSITION(${JSON.stringify(a)}, LOWER(t.name))
|
|
50
|
-
FOR u, it IN OUTBOUND t isTagged
|
|
51
|
-
OPTIONS {bfs: true, uniqueVertices: "global", vertexCollections: "users"}
|
|
52
|
-
${p.join(`
|
|
53
|
-
`)}
|
|
54
|
-
FILTER ${T.join(" && ")}
|
|
55
|
-
${c.aql}
|
|
56
|
-
RETURN DISTINCT MERGE(u, {${l.join(", ")}})`;return g(t).query(y).then(f=>f.all()).catch(f=>(I({action:n,category:E,value:d.DATABASE_ERROR},f,e),[]))},ve=(e,{username:o},s)=>{const i="getUsersByLatest",{databaseName:n,fields:t,session:{userId:u}}=e,{limit:r}=b(s),a=["u._id != session._id","u.userAccess > 0"],{objects:c,queries:l}=$(t);o&&a.push(`CONTAINS(u.username, "${S(o)}")`);const p=`FOR u IN users
|
|
57
|
-
LET session = DOCUMENT("users/${u}")
|
|
58
|
-
FILTER ${a.join(" && ")}
|
|
59
|
-
${l.join(`
|
|
60
|
-
`)}
|
|
61
|
-
LET distance = DISTANCE(u.latitude || 0, u.longitude || 0, session.latitude || 0, session.longitude || 0)
|
|
62
|
-
${r.aql}
|
|
63
|
-
SORT distance ASC, u.added DESC
|
|
64
|
-
RETURN MERGE(u, {${c.join(", ")}})`;return g(n).query(p).then(m=>m.all()).catch(m=>(I({action:i,category:E,value:d.DATABASE_ERROR},m,e),[]))},Le=(e,{userId:o},s)=>{const i="getUsersByConnection",{databaseName:n,fields:t}=e,{limit:u,username:r}=b(s),{objects:a,queries:c}=$(t),l=M(`users/${o}`),p=["u.userAccess > 0"];r&&p.push(`CONTAINS(u.username, "${S(r)}")`);const m=`FOR cu IN users
|
|
65
|
-
LET session = DOCUMENT("${l}")
|
|
66
|
-
FOR u, connection IN OUTBOUND cu hasConnection
|
|
67
|
-
OPTIONS {bfs: true, uniqueVertices: "global", vertexCollections: "users"}
|
|
68
|
-
${c.join(`
|
|
69
|
-
`)}
|
|
70
|
-
FILTER ${p.join(" && ")}
|
|
71
|
-
${u.aql}
|
|
72
|
-
RETURN DISTINCT MERGE(u, {${a.join(", ")}})`;return g(n).query(m).then(T=>T.all()).catch(T=>(I({action:i,category:E,value:d.DATABASE_ERROR},T,e),[]))},je=({expires:e,token:o})=>{try{const{userId:s,username:i,userAccess:n}=_(o);return B(s,i,n,e)}catch(s){throw s}},Me=async(e,o)=>{const s="signIn",{databaseName:i}=e,{email:n,expires:t,password:u,phone:r,username:a}=o,c=H(n),l=S(a),p=L(u),m=Y(r),T=J(t)||15;if(!l&&!c&&!m||!p)return q({action:s,category:E,params:{username:a},value:d.INVALID_ARGUMENTS},e),null;const y=[];c&&y.push(`u.email == "${c}"`),m&&y.push(`u.phone == ${m}`),l&&y.push(`u.username == "${l}"`);const f=`FOR u IN users
|
|
73
|
-
FILTER ${y.join(" || ")}
|
|
74
|
-
LIMIT 1
|
|
75
|
-
RETURN u`;let R;try{R=await g(i).query(f).then(O=>O.next())}catch(O){return I({action:s,category:E,params:{username:l},value:d.DATABASE_ERROR},O,e),null}if(!R)return q({action:s,category:E,params:{username:a},value:d.INVALID_AUTHENTICATION},e),null;const{_key:A,password:N,salt:h,userAccess:w}=R,x=P(p,h);if(N!==x)return q({action:s,category:E,params:{userAccess:w,userId:A,username:a},value:d.INVALID_AUTHENTICATION},e),null;try{return B(A,a,w,T)}catch(O){return I({action:s,category:E,params:{userId:A,username:a},value:d.DATABASE_ERROR},O,e),null}},Qe=async e=>{const o="signOut",{databaseName:s,session:{userId:i,username:n}}=e,t=`users/${i}`,u={lastOnline:Date.now(),sessionId:null},r=U`LET u = DOCUMENT(${t})
|
|
76
|
-
UPDATE u WITH ${u} IN users
|
|
77
|
-
LIMIT 1
|
|
78
|
-
RETURN NEW`;try{await g(s).query(r).then(a=>a.next())}catch(a){await I({action:o,category:E,params:{userId:i,username:n},value:d.DATABASE_ERROR},a,e)}return!0},_e=e=>{const o="getActiveUserCount",{databaseName:s}=e,i=U`LET docs = (
|
|
79
|
-
FOR u IN users
|
|
80
|
-
FILTER u.active == true
|
|
81
|
-
RETURN u
|
|
82
|
-
)
|
|
83
|
-
RETURN LENGTH(docs)`;return g(s).query(i).then(n=>n.next()).catch(n=>I({action:o,category:E,value:d.DATABASE_ERROR},n,e))},Be=(e,o)=>{const s="getUserByToken",{databaseName:i}=e,{userId:n}=_(o),t=j("users",{userId:n}),u=U`LET u = DOCUMENT("${t}") RETURN u`;return g(i).query(u).then(r=>r.next()).catch(r=>I({action:s,category:E,params:{userId:n},value:d.DATABASE_ERROR},r,e))};export{ae as UserAccess,Ue as addUser,$e as confirmCode,B as createToken,Se as deactivateUser,Ce as deleteUser,he as forgotPassword,_e as getActiveUserCount,qe as getDisplayName,De as getSessionUser,be as getUser,Be as getUserByToken,$ as getUserOptional,we as getUsers,Le as getUsersByConnection,ve as getUsersByLatest,Pe as getUsersByReactions,xe as getUsersByTags,b as parseUserOptions,je as refreshSession,Oe as resetPassword,Me as signIn,Qe as signOut,Ne as updateUser};
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvdXNlcnMudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE5LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge1xuICBjcmVhdGVIYXNoLFxuICBjcmVhdGVQYXNzd29yZCxcbiAgcGFyc2VBcmFuZ29JZCxcbiAgcGFyc2VDaGFyLFxuICBwYXJzZUVtYWlsLFxuICBwYXJzZU51bSxcbiAgcGFyc2VQYXNzd29yZCxcbiAgcGFyc2VQaG9uZSxcbiAgcGFyc2VVc2VybmFtZVxufSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWx9IGZyb20gJ2FyYW5nb2pzJztcbmltcG9ydCB7QXFsUXVlcnl9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5pbXBvcnQge0RhdGVUaW1lfSBmcm9tICdsdXhvbic7XG5pbXBvcnQgU3RyaXBlIGZyb20gJ3N0cmlwZSc7XG5cbmltcG9ydCB7cGFyc2VVc2VyfSBmcm9tICcuLi9hZGFwdGVycy91c2VyQWRhcHRlcic7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7c2VuZEVtYWlsfSBmcm9tICcuL2VtYWlsJztcbmltcG9ydCB7c2VuZFNtc30gZnJvbSAnLi9zbXMnO1xuaW1wb3J0IHtFcnJvclR5cGVzLCBTZXNzaW9uRXJyb3J9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzJztcbmltcG9ydCB7bG9nRXJyb3IsIGxvZ0V4Y2VwdGlvbn0gZnJvbSAnLi4vdXRpbHMvYW5hbHl0aWNzVXRpbHMnO1xuaW1wb3J0IHtnZXREb2NJZCwgZ2V0TGltaXQsIHNlbGVjdFJlYWN0aW9uQ291bnRCeVR5cGUsIHVzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcbmltcG9ydCB7ZGV0ZWN0TGFuZ3VhZ2V9IGZyb20gJy4uL3V0aWxzL2xhbmd1YWdlRGV0ZWN0aW9uJztcbmltcG9ydCB7Z2V0U2Vzc2lvbiwgU2Vzc2lvblRva2VuLCBzZXRTZXNzaW9ufSBmcm9tICcuLi91dGlscy9zZXNzaW9uVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7VXNlcklucHV0LCBVc2VyVHlwZX0gZnJvbSAnLi4vdHlwZXMvdXNlcnMudHlwZXMnO1xuaW1wb3J0IHR5cGUge0VkZ2VDb2xsZWN0aW9ufSBmcm9tICdhcmFuZ29qcy9jb2xsZWN0aW9ucyc7XG5cblxuY29uc3QgZXZlbnRDYXRlZ29yeSA9ICd1c2Vycyc7XG5jb25zdCBTVFJJUEVfQVBJX1ZFUlNJT04gPSAnMjAyNS0wNS0yOC5iYXNpbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck9wdGlvbnMge1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbiAgcmVhZG9ubHkgdXNlcm5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBlbnVtIFVzZXJBY2Nlc3Mge1xuICBERUFDVElWQVRFRCA9IDAsXG4gIEFDVElWRSA9IDEsXG4gIFBSRU1JVU0gPSAyLFxuICBDT05URU5UX0FETUlOID0gMyxcbiAgQURNSU4gPSA0XG59XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVUb2tlbiA9IChcbiAgdXNlcklkOiBzdHJpbmcsXG4gIHVzZXJuYW1lOiBzdHJpbmcsXG4gIHVzZXJBY2Nlc3M6IG51bWJlcixcbiAgZXhwaXJlc0luTWludXRlczogbnVtYmVyID0gMTVcbik6IFNlc3Npb25Ub2tlbiA9PiB7XG4gIGNvbnN0IG5vdzogRGF0ZVRpbWUgPSBEYXRlVGltZS5sb2NhbCgpO1xuICBjb25zdCBzZXNzaW9uRXhwaXJlczogRGF0ZVRpbWUgPSBub3cucGx1cyh7bWludXRlczogZXhwaXJlc0luTWludXRlc30pO1xuICBjb25zdCBpYXQ6IG51bWJlciA9IE1hdGguZmxvb3Iobm93LnRvU2Vjb25kcygpKTtcbiAgY29uc3QgZXhwOiBudW1iZXIgPSBNYXRoLmZsb29yKHNlc3Npb25FeHBpcmVzLnRvU2Vjb25kcygpKTtcbiAgY29uc3QgdG9rZW4gPSBzZXRTZXNzaW9uKHtcbiAgICBleHAsXG4gICAgaWF0LFxuICAgIHVzZXJBY2Nlc3MsXG4gICAgdXNlcklkLFxuICAgIHVzZXJuYW1lXG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgZXhwaXJlczogc2Vzc2lvbkV4cGlyZXMudG9NaWxsaXMoKSxcbiAgICBpc3N1ZWQ6IG5vdy50b01pbGxpcygpLFxuICAgIHRva2VuLFxuICAgIHVzZXJJZCxcbiAgICB1c2VybmFtZVxuICB9O1xufTtcblxuaW50ZXJmYWNlIFNlbGVjdEFjY3VtdWxhdG9yIHtcbiAgb2JqZWN0czogc3RyaW5nW107XG4gIHF1ZXJpZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0VXNlck9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSk6IFNlbGVjdEFjY3VtdWxhdG9yID0+XG4gIGZpZWxkcy5yZWR1Y2UoKHNlbGVjdHM6IFNlbGVjdEFjY3VtdWxhdG9yLCBmaWVsZDogc3RyaW5nKSA9PiB7XG4gICAgaWYoZmllbGQuaW5jbHVkZXMoJ0NvdW50JykpIHtcbiAgICAgIHJldHVybiBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlKCd1c2VycycsICd1JywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZVVzZXJPcHRpb25zID0gKG9wdGlvbnM6IFVzZXJPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qge1xuICAgIGZyb20gPSAwLFxuICAgIHRvID0gMzBcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGxpbWl0ID0gZ2V0TGltaXQoZnJvbSwgdG8pO1xuXG4gIHJldHVybiB7XG4gICAgLi4ub3B0aW9ucyxcbiAgICBsaW1pdFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGFkZFVzZXIgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcjogVXNlcklucHV0KTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIGxhbmd1YWdlQ29udGV4dH0gPSBjb250ZXh0O1xuICBjb25zdCB7ZW1haWwsIHBhc3N3b3JkLCBwaG9uZSwgdXNlcm5hbWUsIHVzZXJJZCwgX2tleSwgX2lkLCAuLi5pbnNlcnRVc2VyfSA9IHBhcnNlVXNlcih1c2VyKTtcbiAgY29uc3QgZm9ybWF0UGFzc3dvcmQ6IHN0cmluZyA9IHBhcnNlUGFzc3dvcmQocGFzc3dvcmQpO1xuICBjb25zdCBoYXNQYXNzd29yZCA9ICEhZm9ybWF0UGFzc3dvcmQ7XG4gIGNvbnN0IGhhc1VzZXJuYW1lID0gISF1c2VybmFtZSB8fCAhIXBob25lIHx8ICEhZW1haWw7XG5cbiAgaWYoIWhhc1Bhc3N3b3JkIHx8ICFoYXNVc2VybmFtZSkge1xuICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FSR1VNRU5UU1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgY29uc3QgaGFzaElkID0gdXNlcm5hbWUgfHwgcGhvbmUgfHwgZW1haWw7XG4gIGNvbnN0IHNhbHQ6IHN0cmluZyA9IGNyZWF0ZUhhc2goYCR7aGFzaElkfSR7Zm9ybWF0UGFzc3dvcmR9YCwgbnVsbCk7XG4gIGNvbnN0IGVuY3J5cHRlZFBhc3N3b3JkID0gY3JlYXRlUGFzc3dvcmQoZm9ybWF0UGFzc3dvcmQsIHNhbHQpO1xuICBjb25zdCBmaWx0ZXJzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIGlmKHVzZXJuYW1lKSB7XG4gICAgZmlsdGVycy5wdXNoKGB1LnVzZXJuYW1lID09IFwiJHt1c2VybmFtZX1cImApO1xuICB9XG5cbiAgaWYoZW1haWwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuZW1haWwgPT0gXCIke2VtYWlsfVwiYCk7XG4gIH1cblxuICBpZihwaG9uZSkge1xuICAgIGZpbHRlcnMucHVzaChgdS5waG9uZSA9PSAke3Bob25lfWApO1xuICB9XG5cbiAgY29uc3QgY2hlY2tRdWVyeTogc3RyaW5nID0gYEZPUiB1IElOIHVzZXJzXG4gICAgRklMVEVSICR7ZmlsdGVycy5qb2luKCcgfHwgJyl9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nVXNlcnMgPSBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nVXNlcnMubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gbG9nRXhjZXB0aW9uKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgZW1haWwsXG4gICAgICAgICAgcGhvbmUsXG4gICAgICAgICAgdXNlcm5hbWVcbiAgICAgICAgfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZW1haWwsIHBob25lLCB1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IHBob25lQ291bnRyeUNvZGUgPSBwaG9uZT8ucmVwbGFjZSgvXFxEL2csICcnKS5zdWJzdHJpbmcoMCwgMyk7XG4gIGNvbnN0IGxvY2FsZSA9IGRldGVjdExhbmd1YWdlKHtcbiAgICAuLi5sYW5ndWFnZUNvbnRleHQsXG4gICAgcGhvbmVDb3VudHJ5Q29kZSxcbiAgICB1c2VyUHJlZmVyZW5jZTogaW5zZXJ0VXNlci5sb2NhbGUgfHwgJ2VuJ1xuICB9KTtcbiAgY29uc3QgdmVyaWZpZWRFbWFpbENvZGU6IG51bWJlciA9IE1hdGguZmxvb3IoMTAwMDAwICsgKE1hdGgucmFuZG9tKCkgKiA5MDAwMDApKTtcbiAgY29uc3QgdmVyaWZpZWRTbXNDb2RlOiBudW1iZXIgPSBNYXRoLmZsb29yKDEwMDAwMCArIChNYXRoLnJhbmRvbSgpICogOTAwMDAwKSk7XG5cbiAgY29uc3QgaW5zZXJ0OiBVc2VyVHlwZSA9IHtcbiAgICAuLi5pbnNlcnRVc2VyLFxuICAgIF9rZXk6IGNyZWF0ZUhhc2godXNlcm5hbWUsIG51bGwpLFxuICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgIGVtYWlsLFxuICAgIGxvY2FsZSxcbiAgICBtb2RpZmllZDogRGF0ZS5ub3coKSxcbiAgICBwYXNzd29yZDogZW5jcnlwdGVkUGFzc3dvcmQsXG4gICAgcGhvbmUsXG4gICAgc2FsdCxcbiAgICB1c2VyQWNjZXNzOiAxLFxuICAgIHVzZXJuYW1lLFxuICAgIHZlcmlmaWVkRW1haWw6IGZhbHNlLFxuICAgIHZlcmlmaWVkRW1haWxDb2RlLFxuICAgIHZlcmlmaWVkUGhvbmU6IGZhbHNlLFxuICAgIHZlcmlmaWVkU21zQ29kZVxuICB9O1xuXG4gIGNvbnN0IGluc2VydFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBJTlNFUlQgJHtpbnNlcnR9IElOIHVzZXJzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGluc2VydFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVXNlciA9IGFzeW5jIChjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VyOiBVc2VyVHlwZSk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3VwZGF0ZVVzZXInO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHVwZGF0ZWRVc2VyID0gcGFyc2VVc2VyKHVzZXIpO1xuICBjb25zdCB7X2tleSwgX2lkLCB0YWdzID0gW10sIC4uLnVwZGF0ZX0gPSB1cGRhdGVkVXNlcjtcbiAgY29uc3Qge2lkfSA9IHVwZGF0ZWRVc2VyO1xuXG4gIGNvbnN0IHVzZXJRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHUgPSBET0NVTUVOVCgke2lkfSlcbiAgICBVUERBVEUgdSBXSVRIICR7dXBkYXRlfSBJTiB1c2Vyc1xuICAgIFJFVFVSTiBORVdgO1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KHVzZXJRdWVyeSkudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKTtcbiAgICBjb25zdCB0YWdDb2xsZWN0aW9uOiBFZGdlQ29sbGVjdGlvbiA9IGRhdGFiYXNlLmNvbGxlY3Rpb24oJ2lzVGFnZ2VkJyk7XG5cbiAgICBhd2FpdCBQcm9taXNlLmFsbCh0YWdzLm1hcCgoe2lkOiB0YWdEb2NJZCwgbmFtZX0pID0+IHtcbiAgICAgIGNvbnN0IHRhZ1F1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgaXQgSU4gaXNUYWdnZWRcbiAgICAgICAgRklMVEVSIGl0Ll9mcm9tID09ICR7dGFnRG9jSWR9ICYmIGl0Ll90byA9PSAke2lkfSAmJiBpdC5uYW1lID09ICR7bmFtZX1cbiAgICAgICAgTElNSVQgMVxuICAgICAgICBSRVRVUk4gaXRgO1xuXG4gICAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkodGFnUXVlcnkpXG4gICAgICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgICAgIC50aGVuKCh0YWdFZGdlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coe3RhZ0VkZ2V9KTtcbiAgICAgICAgICBpZighIXRhZ0VkZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiB0YWdFZGdlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVkZ2UgPSB7XG4gICAgICAgICAgICBfZnJvbTogdGFnRG9jSWQsXG4gICAgICAgICAgICBfa2V5OiBjcmVhdGVIYXNoKGBpc1RhZ2dlZC0ke3RhZ0RvY0lkfS0ke2lkfWApLFxuICAgICAgICAgICAgX3RvOiBpZCxcbiAgICAgICAgICAgIGFkZGVkOiBEYXRlLm5vdygpLFxuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgIH07XG5cbiAgICAgICAgICByZXR1cm4gdGFnQ29sbGVjdGlvbi5zYXZlKGVkZ2UsIHtyZXR1cm5OZXc6IHRydWV9KS50aGVuKCgpID0+IGVkZ2UpO1xuICAgICAgICB9KTtcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZFVzZXI7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICByZXR1cm4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VyfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZm9yZ290UGFzc3dvcmQgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwge2VtYWlsLCBwaG9uZSwgdXNlcm5hbWV9KTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdmb3Jnb3RQYXNzd29yZCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYEZPUiB1IElOIHVzZXJzXG4gICAgRklMVEVSIHUuZW1haWwgPT0gJHtlbWFpbH0gfHwgdS5waG9uZSA9PSAke3Bob25lfSB8fCB1LnVzZXJuYW1lID09ICR7dXNlcm5hbWV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgICAgLnRoZW4oYXN5bmMgKGN1cnNvcikgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gY3Vyc29yLm5leHQoKTtcblxuICAgICAgICBpZih1c2VyKSB7XG4gICAgICAgICAgY29uc3Qge2VtYWlsLCBwaG9uZSwgdmVyaWZpZWRFbWFpbCwgdmVyaWZpZWRQaG9uZX0gPSB1c2VyIGFzIFVzZXJUeXBlO1xuICAgICAgICAgIGNvbnN0IGNvZGVFeHBpcmVzID0gMTAwMCAqIDYwICogMTU7IC8vIDE1IG1pbnV0ZXNcbiAgICAgICAgICBjb25zdCBjb2RlID0gTWF0aC5mbG9vcigxMDAwMDAgKyAoTWF0aC5yYW5kb20oKSAqIDkwMDAwMCkpO1xuICAgICAgICAgIGNvbnN0IHVzZXJEb2NJZCA9IGdldERvY0lkKCd1c2VycycsIHVzZXIpO1xuICAgICAgICAgIGxldCB1cGRhdGU7XG5cbiAgICAgICAgICBpZihlbWFpbCAmJiB2ZXJpZmllZEVtYWlsKSB7XG4gICAgICAgICAgICBzZW5kRW1haWwoe1xuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICB0ZXh0OiBgWW91ciBjb2RlIGlzICR7Y29kZX1gXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHVwZGF0ZSA9IHt2ZXJpZmllZEVtYWlsQ29kZTogY29kZSwgdmVyaWZpZWRFbWFpbEV4cGlyZXM6IGNvZGVFeHBpcmVzfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZihwaG9uZSAmJiB2ZXJpZmllZFBob25lKSB7XG4gICAgICAgICAgICBzZW5kU21zKHtcbiAgICAgICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICAgICAgdGV4dDogYFlvdXIgY29kZSBpcyAke2NvZGV9YFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB1cGRhdGUgPSB7dmVyaWZpZWRTbXNDb2RlOiBjb2RlLCB2ZXJpZmllZFBob25lRXhwaXJlczogY29kZUV4cGlyZXN9O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmKHVwZGF0ZS52ZXJpZmllZEVtYWlsQ29kZSB8fCB1cGRhdGUudmVyaWZpZWRTbXNDb2RlKSB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVRdWVyeTogQXFsUXVlcnkgPSBhcWxgVVBEQVRFICR7dXNlckRvY0lkfSBXSVRIICR7dXBkYXRlfSBJTiB1c2Vyc2A7XG5cbiAgICAgICAgICAgIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkodXBkYXRlUXVlcnkpO1xuXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7ZW1haWwsIHBob25lLCB1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0UGFzc3dvcmQgPSBhc3luYyAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtcbiAgICBjb2RlLFxuICAgIHBhc3N3b3JkLFxuICAgIHR5cGUsXG4gICAgdXNlcm5hbWVcbiAgfToge1xuICAgIGNvZGU6IG51bWJlcixcbiAgICBwYXNzd29yZDogc3RyaW5nLFxuICAgIHR5cGU6ICdwaG9uZScgfCAnZW1haWwnLFxuICAgIHVzZXJuYW1lOiBzdHJpbmdcbiAgfVxuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdyZXNldFBhc3N3b3JkJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCBmb3JtYXRQYXNzd29yZDogc3RyaW5nID0gcGFyc2VQYXNzd29yZChwYXNzd29yZCk7XG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1LnVzZXJuYW1lID09ICR7dXNlcm5hbWV9XG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgICAgLnRoZW4oYXN5bmMgKGN1cnNvcikgPT4ge1xuICAgICAgICBjb25zdCB1c2VyID0gY3Vyc29yLm5leHQoKTtcblxuICAgICAgICBpZih1c2VyKSB7XG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgX2lkOiB1c2VyRG9jSWQsXG4gICAgICAgICAgICBzYWx0LFxuICAgICAgICAgICAgdmVyaWZpZWRFbWFpbENvZGUsXG4gICAgICAgICAgICB2ZXJpZmllZEVtYWlsRXhwaXJlcyxcbiAgICAgICAgICAgIHZlcmlmaWVkU21zQ29kZSxcbiAgICAgICAgICAgIHZlcmlmaWVkUGhvbmVFeHBpcmVzXG4gICAgICAgICAgfSA9IHVzZXIgYXMgVXNlclR5cGU7XG4gICAgICAgICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICBsZXQgdXBkYXRlO1xuXG4gICAgICAgICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgJ2VtYWlsJzpcbiAgICAgICAgICAgICAgaWYoY29kZSA9PT0gdmVyaWZpZWRFbWFpbENvZGUgJiYgdmVyaWZpZWRFbWFpbEV4cGlyZXMgPiBub3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXNzd29yZDogc3RyaW5nID0gY3JlYXRlUGFzc3dvcmQoZm9ybWF0UGFzc3dvcmQsIHNhbHQpO1xuICAgICAgICAgICAgICAgIHVwZGF0ZSA9IHtwYXNzd29yZH07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgIGlmKGNvZGUgPT09IHZlcmlmaWVkU21zQ29kZSAmJiB2ZXJpZmllZFBob25lRXhwaXJlcyA+IG5vdykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhc3N3b3JkOiBzdHJpbmcgPSBjcmVhdGVQYXNzd29yZChmb3JtYXRQYXNzd29yZCwgc2FsdCk7XG4gICAgICAgICAgICAgICAgdXBkYXRlID0ge3Bhc3N3b3JkfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZih1cGRhdGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHVwZGF0ZVF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBVUERBVEUgJHt1c2VyRG9jSWR9IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzYDtcblxuICAgICAgICAgICAgYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeSh1cGRhdGVRdWVyeSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNvbmZpcm1Db2RlID0gYXN5bmMgKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB7XG4gICAgY29kZSxcbiAgICB0eXBlXG4gIH06IHtcbiAgICBjb2RlOiBudW1iZXIsXG4gICAgdHlwZTogJ3Bob25lJyB8ICdlbWFpbCdcbiAgfVxuKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdjb25maXJtQ29kZSc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgdXNlckRvY0lkID0gZ2V0RG9jSWQoJ3VzZXJzJywge3VzZXJJZDogc2Vzc2lvbklkfSk7XG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgdSA9IERPQ1VNRU5UKCR7dXNlckRvY0lkfSkgUkVUVVJOIHVgO1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLnRoZW4oKHt2ZXJpZmllZEVtYWlsQ29kZSwgdmVyaWZpZWRTbXNDb2RlfTogVXNlclR5cGUpID0+IHtcbiAgICAgICAgc3dpdGNoKHR5cGUpIHtcbiAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICByZXR1cm4gY29kZSA9PT0gdmVyaWZpZWRFbWFpbENvZGU7XG4gICAgICAgICAgY2FzZSAncGhvbmUnOlxuICAgICAgICAgICAgcmV0dXJuIGNvZGUgPT09IHZlcmlmaWVkU21zQ29kZTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7Y29kZSwgdHlwZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGRlbGV0ZVVzZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcjogVXNlclR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGVVc2VyJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZX0gPSBjb250ZXh0O1xuICBjb25zdCB7aWR9ID0gcGFyc2VVc2VyKHVzZXIpO1xuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgdSA9IERPQ1VNRU5UKCR7aWR9KVxuICAgIFJFTU9WRSB1IElOIHVzZXJzXG4gICAgUkVUVVJOIE9MRGA7XG5cbiAgY29uc3Qgc3RyaXBlQ2xpZW50ID0gbmV3IFN0cmlwZShDb25maWcuZ2V0KCdzdHJpcGUudG9rZW4nKSwge2FwaVZlcnNpb246IFNUUklQRV9BUElfVkVSU0lPTiwgdHlwZXNjcmlwdDogdHJ1ZX0pO1xuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKGRlbGV0ZWRVc2VyKSA9PiBzdHJpcGVDbGllbnQuY3VzdG9tZXJzLmRlbChkZWxldGVkVXNlcj8uc3RyaXBlQ3VzdG9tZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHN0cmlwZUNsaWVudC5hY2NvdW50cy5kZWwoZGVsZXRlZFVzZXI/LnN0cmlwZUFjY291bnRJZCkpXG4gICAgICAudGhlbigoKSA9PiBkZWxldGVkVXNlcikpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7aWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvcixjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZVVzZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCwgdXNlcjogVXNlclR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdkZWxldGUnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZH0gPSBwYXJzZVVzZXIodXNlcik7XG4gIGNvbnN0IHVwZGF0ZWQ6IFVzZXJUeXBlID0ge1xuICAgIHVzZXJBY2Nlc3M6IDBcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2lkfSBXSVRIICR7dXBkYXRlZH0gSU4gdXNlcnMgTElNSVQgMSBSRVRVUk4gTkVXYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge2lkfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERpc3BsYXlOYW1lID0gKHVzZXI6IFVzZXJUeXBlKTogc3RyaW5nID0+IHtcbiAgY29uc3Qge2ZpcnN0LCBsYXN0LCBuYW1lID0gJycsIHVzZXJuYW1lID0gJyd9ID0gdXNlcjtcbiAgY29uc3QgZnVsbG5hbWUgPSAoW2ZpcnN0LCBsYXN0XSkuam9pbignICcpLnRyaW0oKTtcblxuICBpZihuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWU7XG4gIH0gZWxzZSBpZihmdWxsbmFtZSAhPT0gJycpIHtcbiAgICByZXR1cm4gZnVsbG5hbWU7XG4gIH0gZWxzZSBpZih1c2VybmFtZSkge1xuICAgIHJldHVybiB1c2VybmFtZTtcbiAgfVxuXG4gIHJldHVybiAnVW5rbm93bic7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2Vzc2lvblVzZXIgPSAoY29udGV4dDogQXBpQ29udGV4dCk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFNlc3Npb25Vc2VyJztcbiAgY29uc29sZS5sb2coJ2dldFNlc3Npb25Vc2VyJywge2FjdGlvbiwgY29udGV4dH0pO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBmaWVsZHMsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZCwgdXNlcm5hbWV9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuICBjb25zdCBmb3JtYXRTZXNzaW9uSWQgPSBwYXJzZUFyYW5nb0lkKGB1c2Vycy8ke3Nlc3Npb25JZH1gKTtcblxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYExFVCB1ID0gRE9DVU1FTlQoXCIke2Zvcm1hdFNlc3Npb25JZH1cIilcbiAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICBSRVRVUk4gTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIHVua25vd24gYXMgVXNlclR5cGUpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgcGFyYW1zOiB7dXNlcklkOiBzZXNzaW9uSWQsIHVzZXJuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KTtcblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlciA9IChjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VyOiBVc2VyVHlwZSk6IFByb21pc2U8VXNlclR5cGU+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFVzZXInO1xuICBjb25zdCB7ZW1haWwsIGlkLCBwaG9uZSwgdXNlcklkLCB1c2VybmFtZX0gPSBwYXJzZVVzZXIodXNlcik7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIGZpZWxkc30gPSBjb250ZXh0O1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcbiAgbGV0IGFxbFF1ZXJ5OiBzdHJpbmc7XG5cbiAgaWYoaWQpIHtcbiAgICBhcWxRdWVyeSA9IGBMRVQgdSA9IERPQ1VNRU5UKFwiJHtpZH1cIilcbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgRklMVEVSIHUudXNlckFjY2VzcyA+IDBcbiAgICBSRVRVUk4gTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcbiAgfSBlbHNlIGlmKHVzZXJuYW1lKSB7XG4gICAgYXFsUXVlcnkgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgdS51c2VybmFtZSA9PSBcIiR7dXNlcm5hbWV9XCJcbiAgICAke3NlbGVjdFF1ZXJpZXMuam9pbignXFxuJyl9XG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG4gIH0gZWxzZSBpZihlbWFpbCkge1xuICAgIGFxbFF1ZXJ5ID0gYEZPUiB1IElOIHVzZXJzXG4gICAgRklMVEVSIHUuZW1haWwgPT0gXCIke2VtYWlsfVwiXG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRSh1LCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuICB9IGVsc2UgaWYocGhvbmUpIHtcbiAgICBhcWxRdWVyeSA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiB1LnBob25lID09IFwiJHtwaG9uZX1cIlxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBSRVRVUk4gTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcbiAgfVxuXG4gIHJldHVybiB1c2VEYihkYXRhYmFzZU5hbWUpLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLnRoZW4oKHVzZXIpID0+IHVzZXIpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7aWQsIHVzZXJJZCwgdXNlcm5hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBVc2VyT3B0aW9ucyk6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0VXNlckxpc3QnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBmaWVsZHN9ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0LCB1c2VybmFtZX0gPSBwYXJzZVVzZXJPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWyd1LnVzZXJBY2Nlc3MgPiAwJ107XG5cbiAgaWYodXNlcm5hbWUpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBDT05UQUlOUyh1LnVzZXJuYW1lLCBcIiR7cGFyc2VVc2VybmFtZSh1c2VybmFtZSl9XCIpYCk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiB1IElOIHVzZXJzXG4gICAgRklMVEVSICR7ZmlsdGVyQnkuam9pbignICYmICcpfVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBTT1JUIHUudXNlcm5hbWVcbiAgICBSRVRVUk4gTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBVc2VyVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiBbXSBhcyBVc2VyVHlwZVtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlSZWFjdGlvbnMgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHtyZWFjdGlvbnMgPSBbXSwgdXNlcm5hbWV9OiB7cmVhY3Rpb25zPzogc3RyaW5nW10sIHVzZXJuYW1lPzogc3RyaW5nfSxcbiAgb3B0aW9ucz86IFVzZXJPcHRpb25zXG4pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFVzZXJzQnlSZWFjdGlvbnMnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBmaWVsZHMsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3QgZm9ybWF0UmVhY3Rpb25zOiBzdHJpbmdbXSA9ICByZWFjdGlvbnMubWFwKChyZWFjdGlvbk5hbWU6IHN0cmluZykgPT4gcGFyc2VDaGFyKHJlYWN0aW9uTmFtZSwgMzIpLnRvTG93ZXJDYXNlKCkpO1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VVc2VyT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0VXNlck9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZvcm1hdFNlc3Npb25JZDogc3RyaW5nID0gYHVzZXJzLyR7c2Vzc2lvbklkfWA7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW1xuICAgICd1LnVzZXJBY2Nlc3MgPiAwJyxcbiAgICBgUE9TSVRJT04oJHtKU09OLnN0cmluZ2lmeShmb3JtYXRSZWFjdGlvbnMpfSwgTE9XRVIoci5uYW1lKSlgXG4gIF07XG5cbiAgaWYodXNlcm5hbWUpIHtcbiAgICBmaWx0ZXJCeS5wdXNoKGBDT05UQUlOUyh1LnVzZXJuYW1lLCBcIiR7Zm9ybWF0VXNlcm5hbWV9XCIpYCk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiB1LCByIElOIE9VVEJPVU5EIFwiJHtmb3JtYXRTZXNzaW9uSWR9XCIgaGFzUmVhY3Rpb25cbiAgICBPUFRJT05TIHt2ZXJ0ZXhDb2xsZWN0aW9uczogXCJ1c2Vyc1wifVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtsaW1pdC5hcWx9XG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgVXNlclR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gW10gYXMgVXNlclR5cGVbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2Vyc0J5VGFncyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge3RhZ3MsIHVzZXJuYW1lfSxcbiAgb3B0aW9ucz86IFVzZXJPcHRpb25zXG4pOiBQcm9taXNlPFVzZXJUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldFVzZXJzQnlUYWdzJztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWR9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IGZvcm1hdFRhZ3M6IHN0cmluZ1tdID0gIHRhZ3M/LnJlZHVjZSgobGlzdDogc3RyaW5nW10sIHRhZ05hbWU6IHN0cmluZykgPT4ge1xuICAgIGlmKHRhZ05hbWUpIHtcbiAgICAgIGxpc3QucHVzaChwYXJzZUNoYXIodGFnTmFtZSwgMzIpLnRvTG93ZXJDYXNlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBsaXN0O1xuICB9LCBbXSk7XG4gIGNvbnN0IHtsaW1pdH0gPSBwYXJzZVVzZXJPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZm9ybWF0VXNlcm5hbWU6IHN0cmluZyA9IHBhcnNlVXNlcm5hbWUodXNlcm5hbWUpO1xuICBjb25zdCBmaWx0ZXJCeTogc3RyaW5nW10gPSBbXG4gICAgYHUuX2tleSAhPSBcIiR7c2Vzc2lvbklkfVwiYCxcbiAgICAndS51c2VyQWNjZXNzID4gMCdcbiAgXTtcblxuICBpZih1c2VybmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtmb3JtYXRVc2VybmFtZX1cIilgKTtcbiAgfVxuXG4gIGNvbnN0IGFxbFF1ZXJ5OiBzdHJpbmcgPSBgRk9SIHQgSU4gdGFnc1xuICAgIEZJTFRFUiBQT1NJVElPTigke0pTT04uc3RyaW5naWZ5KGZvcm1hdFRhZ3MpfSwgTE9XRVIodC5uYW1lKSlcbiAgICBGT1IgdSwgaXQgSU4gT1VUQk9VTkQgdCBpc1RhZ2dlZFxuICAgIE9QVElPTlMge2JmczogdHJ1ZSwgdW5pcXVlVmVydGljZXM6IFwiZ2xvYmFsXCIsIHZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBVc2VyVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiBbXSBhcyBVc2VyVHlwZVtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJzQnlMYXRlc3QgPSAoY29udGV4dDogQXBpQ29udGV4dCwge3VzZXJuYW1lfSwgb3B0aW9ucz86IFVzZXJPcHRpb25zKTogUHJvbWlzZTxVc2VyVHlwZVtdPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRVc2Vyc0J5TGF0ZXN0JztcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgZmllbGRzLCBzZXNzaW9uOiB7dXNlcklkfX0gPSBjb250ZXh0O1xuICBjb25zdCB7bGltaXR9ID0gcGFyc2VVc2VyT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3QgZmlsdGVyID0gW1xuICAgICd1Ll9pZCAhPSBzZXNzaW9uLl9pZCcsXG4gICAgJ3UudXNlckFjY2VzcyA+IDAnXG4gIF07XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldFVzZXJPcHRpb25hbChmaWVsZHMpO1xuXG4gIGlmKHVzZXJuYW1lKSB7XG4gICAgZmlsdGVyLnB1c2goYENPTlRBSU5TKHUudXNlcm5hbWUsIFwiJHtwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKX1cIilgKTtcbiAgfVxuXG4gIC8vIEdldCBkYXRhIGZyb20gZGF0YWJhc2VcbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIExFVCBzZXNzaW9uID0gRE9DVU1FTlQoXCJ1c2Vycy8ke3VzZXJJZH1cIilcbiAgICBGSUxURVIgJHtmaWx0ZXIuam9pbignICYmICcpfVxuICAgICR7c2VsZWN0UXVlcmllcy5qb2luKCdcXG4nKX1cbiAgICBMRVQgZGlzdGFuY2UgPSBESVNUQU5DRSh1LmxhdGl0dWRlIHx8IDAsIHUubG9uZ2l0dWRlIHx8IDAsIHNlc3Npb24ubGF0aXR1ZGUgfHwgMCwgc2Vzc2lvbi5sb25naXR1ZGUgfHwgMClcbiAgICAke2xpbWl0LmFxbH1cbiAgICBTT1JUIGRpc3RhbmNlIEFTQywgdS5hZGRlZCBERVNDXG4gICAgUkVUVVJOIE1FUkdFKHUsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpIGFzIHVua25vd24gYXMgVXNlclR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gW10gYXMgVXNlclR5cGVbXTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRVc2Vyc0J5Q29ubmVjdGlvbiA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAge3VzZXJJZH06IFVzZXJUeXBlLFxuICBvcHRpb25zPzogVXNlck9wdGlvbnNcbik6IFByb21pc2U8VXNlclR5cGVbXT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnZ2V0VXNlcnNCeUNvbm5lY3Rpb24nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBmaWVsZHN9ID0gY29udGV4dDtcbiAgY29uc3Qge2xpbWl0LCB1c2VybmFtZX0gPSBwYXJzZVVzZXJPcHRpb25zKG9wdGlvbnMpO1xuICBjb25zdCB7b2JqZWN0czogc2VsZWN0T2JqZWN0cywgcXVlcmllczogc2VsZWN0UXVlcmllc30gPSBnZXRVc2VyT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUFyYW5nb0lkKGB1c2Vycy8ke3VzZXJJZH1gKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gW1xuICAgICd1LnVzZXJBY2Nlc3MgPiAwJ1xuICBdO1xuXG4gIGlmKHVzZXJuYW1lKSB7XG4gICAgZmlsdGVyQnkucHVzaChgQ09OVEFJTlModS51c2VybmFtZSwgXCIke3BhcnNlVXNlcm5hbWUodXNlcm5hbWUpfVwiKWApO1xuICB9XG5cbiAgY29uc3QgYXFsUXVlcnk6IHN0cmluZyA9IGBGT1IgY3UgSU4gdXNlcnNcbiAgICBMRVQgc2Vzc2lvbiA9IERPQ1VNRU5UKFwiJHtmb3JtYXRVc2VySWR9XCIpXG4gICAgRk9SIHUsIGNvbm5lY3Rpb24gSU4gT1VUQk9VTkQgY3UgaGFzQ29ubmVjdGlvblxuICAgIE9QVElPTlMge2JmczogdHJ1ZSwgdW5pcXVlVmVydGljZXM6IFwiZ2xvYmFsXCIsIHZlcnRleENvbGxlY3Rpb25zOiBcInVzZXJzXCJ9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIEZJTFRFUiAke2ZpbHRlckJ5LmpvaW4oJyAmJiAnKX1cbiAgICAke2xpbWl0LmFxbH1cbiAgICBSRVRVUk4gRElTVElOQ1QgTUVSR0UodSwgeyR7c2VsZWN0T2JqZWN0cy5qb2luKCcsICcpfX0pYDtcblxuICByZXR1cm4gdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkgYXMgdW5rbm93biBhcyBVc2VyVHlwZVtdKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICBsb2dFcnJvcih7XG4gICAgICAgIGFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG5cbiAgICAgIHJldHVybiBbXSBhcyBVc2VyVHlwZVtdO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hTZXNzaW9uID0gKHtleHBpcmVzLCB0b2tlbn0pOiBTZXNzaW9uVG9rZW4gfCBTZXNzaW9uRXJyb3IgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHt1c2VySWQsIHVzZXJuYW1lLCB1c2VyQWNjZXNzfSA9IGdldFNlc3Npb24odG9rZW4pO1xuICAgIHJldHVybiBjcmVhdGVUb2tlbih1c2VySWQsIHVzZXJuYW1lLCB1c2VyQWNjZXNzLCBleHBpcmVzKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IGVycm9yOyAvLyBSZS10aHJvdyB0aGUgZXJyb3IgZnJvbSBnZXRTZXNzaW9uXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzaWduSW4gPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXJncyk6IFByb21pc2U8U2Vzc2lvblRva2VuPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdzaWduSW4nO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lfSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtlbWFpbCwgZXhwaXJlcywgcGFzc3dvcmQsIHBob25lLCB1c2VybmFtZX0gPSBhcmdzO1xuICBjb25zdCBmb3JtYXRFbWFpbDogc3RyaW5nID0gcGFyc2VFbWFpbChlbWFpbCk7XG4gIGNvbnN0IGZvcm1hdFVzZXJuYW1lOiBzdHJpbmcgPSBwYXJzZVVzZXJuYW1lKHVzZXJuYW1lKTtcbiAgY29uc3QgZm9ybWF0UGFzc3dvcmQ6IHN0cmluZyA9IHBhcnNlUGFzc3dvcmQocGFzc3dvcmQpO1xuICBjb25zdCBmb3JtYXRQaG9uZTogc3RyaW5nID0gcGFyc2VQaG9uZShwaG9uZSk7XG4gIGNvbnN0IGZvcm1hdEV4cGlyZXM6IG51bWJlciA9IHBhcnNlTnVtKGV4cGlyZXMpIHx8IDE1O1xuXG4gIGlmKCghZm9ybWF0VXNlcm5hbWUgJiYgIWZvcm1hdEVtYWlsICYmICFmb3JtYXRQaG9uZSkgfHwgIWZvcm1hdFBhc3N3b3JkKSB7XG4gICAgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7dXNlcm5hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gW107XG5cbiAgaWYoZm9ybWF0RW1haWwpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUuZW1haWwgPT0gXCIke2Zvcm1hdEVtYWlsfVwiYCk7XG4gIH1cblxuICBpZihmb3JtYXRQaG9uZSkge1xuICAgIGZpbHRlcnMucHVzaChgdS5waG9uZSA9PSAke2Zvcm1hdFBob25lfWApO1xuICB9XG5cbiAgaWYoZm9ybWF0VXNlcm5hbWUpIHtcbiAgICBmaWx0ZXJzLnB1c2goYHUudXNlcm5hbWUgPT0gXCIke2Zvcm1hdFVzZXJuYW1lfVwiYCk7XG4gIH1cblxuICBjb25zdCBjaGVja1F1ZXJ5OiBzdHJpbmcgPSBgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgJHtmaWx0ZXJzLmpvaW4oJyB8fCAnKX1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIHVgO1xuXG4gIGxldCBjaGVja1VzZXI6IFVzZXJUeXBlO1xuXG4gIHRyeSB7XG4gICAgY2hlY2tVc2VyID0gYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShjaGVja1F1ZXJ5KS50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZTogZm9ybWF0VXNlcm5hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmKCFjaGVja1VzZXIpIHtcbiAgICBsb2dFeGNlcHRpb24oe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FVVEhFTlRJQ0FUSU9OXG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHtfa2V5OiB1c2VySWQsIHBhc3N3b3JkOiB2YWxpZFBhc3N3b3JkLCBzYWx0LCB1c2VyQWNjZXNzfSA9IGNoZWNrVXNlcjtcbiAgY29uc3QgYXV0aFBhc3N3b3JkOiBzdHJpbmcgPSBjcmVhdGVQYXNzd29yZChmb3JtYXRQYXNzd29yZCwgc2FsdCk7XG5cbiAgaWYodmFsaWRQYXNzd29yZCAhPT0gYXV0aFBhc3N3b3JkKSB7XG4gICAgbG9nRXhjZXB0aW9uKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgcGFyYW1zOiB7dXNlckFjY2VzcywgdXNlcklkLCB1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5JTlZBTElEX0FVVEhFTlRJQ0FUSU9OXG4gICAgfSwgY29udGV4dCk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coe2Zvcm1hdEV4cGlyZXMsIHVzZXJBY2Nlc3MsIHVzZXJJZCwgdXNlcm5hbWV9KTtcbiAgICBjb25zdCB0b2tlbiA9IGNyZWF0ZVRva2VuKHVzZXJJZCwgdXNlcm5hbWUsIHVzZXJBY2Nlc3MsIGZvcm1hdEV4cGlyZXMpO1xuICAgIGNvbnNvbGUubG9nKHt0b2tlbn0pO1xuXG4gICAgcmV0dXJuIHRva2VuO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VySWQsIHVzZXJuYW1lfSxcbiAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgfSwgZXJyb3IsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBzaWduT3V0ID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ3NpZ25PdXQnO1xuICBjb25zdCB7ZGF0YWJhc2VOYW1lLCBzZXNzaW9uOiB7dXNlcklkOiBzZXNzaW9uSWQsIHVzZXJuYW1lfX0gPSBjb250ZXh0O1xuICBjb25zdCB1c2VyRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3Nlc3Npb25JZH1gO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICBsYXN0T25saW5lOiBEYXRlLm5vdygpLFxuICAgIHNlc3Npb25JZDogbnVsbFxuICB9O1xuICBjb25zdCBzZXNzaW9uUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYExFVCB1ID0gRE9DVU1FTlQoJHt1c2VyRG9jSWR9KVxuICAgIFVQREFURSB1IFdJVEggJHt1cGRhdGV9IElOIHVzZXJzXG4gICAgTElNSVQgMVxuICAgIFJFVFVSTiBORVdgO1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgdXNlRGIoZGF0YWJhc2VOYW1lKS5xdWVyeShzZXNzaW9uUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBhd2FpdCBsb2dFcnJvcih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge3VzZXJJZDogc2Vzc2lvbklkLCB1c2VybmFtZX0sXG4gICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjdGl2ZVVzZXJDb3VudCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogUHJvbWlzZTxudW1iZXI+ID0+IHtcbiAgY29uc3QgYWN0aW9uID0gJ2dldEFjdGl2ZVVzZXJDb3VudCc7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3QgY291bnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIGRvY3MgPSAoXG4gICAgRk9SIHUgSU4gdXNlcnNcbiAgICBGSUxURVIgdS5hY3RpdmUgPT0gdHJ1ZVxuICAgIFJFVFVSTiB1XG4gIClcbiAgUkVUVVJOIExFTkdUSChkb2NzKWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoY291bnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJCeVRva2VuID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIHRva2VuOiBzdHJpbmcpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbiA9ICdnZXRVc2VyQnlUb2tlbic7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWV9ID0gY29udGV4dDtcbiAgY29uc3Qge3VzZXJJZH0gPSBnZXRTZXNzaW9uKHRva2VuKTtcbiAgY29uc3QgdXNlckRvY0lkID0gZ2V0RG9jSWQoJ3VzZXJzJywge3VzZXJJZH0pO1xuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgTEVUIHUgPSBET0NVTUVOVChcIiR7dXNlckRvY0lkfVwiKSBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIHVzZURiKGRhdGFiYXNlTmFtZSkucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4gbG9nRXJyb3Ioe1xuICAgICAgYWN0aW9uLFxuICAgICAgY2F0ZWdvcnk6IGV2ZW50Q2F0ZWdvcnksXG4gICAgICBwYXJhbXM6IHt1c2VySWR9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1JcbiAgICB9LCBlcnJvciwgY29udGV4dCkpO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFJQSxPQUNFLGNBQUFBLEVBQ0Esa0JBQUFDLEVBQ0EsaUJBQUFDLEVBQ0EsYUFBQUMsRUFDQSxjQUFBQyxFQUNBLFlBQUFDLEVBQ0EsaUJBQUFDLEVBQ0EsY0FBQUMsRUFDQSxpQkFBQUMsTUFDSyxlQUNQLE9BQVEsT0FBQUMsTUFBVSxXQUVsQixPQUFRLFlBQUFDLE1BQWUsUUFDdkIsT0FBT0MsTUFBWSxTQUVuQixPQUFRLGFBQUFDLE1BQWdCLDBCQUN4QixPQUFRLFVBQUFDLE1BQWEsWUFDckIsT0FBUSxhQUFBQyxNQUFnQixVQUN4QixPQUFRLFdBQUFDLE9BQWMsUUFDdEIsT0FBUSxjQUFBQyxNQUErQix1QkFDdkMs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ekUsRUFBUyxRQUFTLENBQUMsT0FBQVcsQ0FBTSxDQUFDLEVBQ3RDeUQsRUFBcUI5RSxzQkFBd0JtRixDQUFTLGNBRTVELE9BQU90RSxFQUFNOEIsQ0FBWSxFQUFFLE1BQU1tQyxDQUFRLEVBQ3RDLEtBQU10QixHQUFXQSxFQUFPLEtBQUssQ0FBQyxFQUM5QixNQUFPQyxHQUFpQmpELEVBQVMsQ0FDaEMsT0FBQWtDLEVBQ0EsU0FBVXpCLEVBQ1YsT0FBUSxDQUFDLE9BQUFJLENBQU0sRUFDZixNQUFPZCxFQUFXLGNBQ3BCLEVBQUdrRCxFQUFPakIsQ0FBTyxDQUFDLENBQ3RCIiwKICAibmFtZXMiOiBbImNyZWF0ZUhhc2giLCAiY3JlYXRlUGFzc3dvcmQiLCAicGFyc2VBcmFuZ29JZCIsICJwYXJzZUNoYXIiLCAicGFyc2VFbWFpbCIsICJwYXJzZU51bSIsICJwYXJzZVBhc3N3b3JkIiwgInBhcnNlUGhvbmUiLCAicGFyc2VVc2VybmFtZSIsICJhcWwiLCAiRGF0ZVRpbWUiLCAiU3RyaXBlIiwgInBhcnNlVXNlciIsICJDb25maWciLCAic2VuZEVtYWlsIiwgInNlbmRTbXMiLCAiRXJyb3JUeXBlcyIsICJsb2dFcnJvciIsICJsb2dFeGNlcHRpb24iLCAiZ2V0RG9jSWQiLCAiZ2V0TGltaXQiLCAic2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSIsICJ1c2VEYiIsICJkZXRlY3RMYW5ndWFnZSIsICJnZXRTZXNzaW9uIiwgInNldFNlc3Npb24iLCAiZXZlbnRDYXRlZ29yeSIsICJTVFJJUEVfQVBJX1ZFUlNJT04iLCAiVXNlckFjY2VzcyIsICJjcmVhdGVUb2tlbiIsICJ1c2VySWQiLCAidXNlcm5hbWUiLCAidXNlckFjY2VzcyIsICJleHBpcmVzSW5NaW51dGVzIiwgIm5vdyIsICJzZXNzaW9uRXhwaXJlcyIsICJpYXQiLCAiZXhwIiwgInRva2VuIiwgImdldFVzZXJPcHRpb25hbCIsICJmaWVsZHMiLCAic2VsZWN0cyIsICJmaWVsZCIsICJwYXJzZVVzZXJPcHRpb25zIiwgIm9wdGlvbnMiLCAiZnJvbSIsICJ0byIsICJsaW1pdCIsICJhZGRVc2VyIiwgImNvbnRleHQiLCAidXNlciIsICJhY3Rpb24iLCAiZGF0YWJhc2VOYW1lIiwgImxhbmd1YWdlQ29udGV4dCIsICJlbWFpbCIsICJwYXNzd29yZCIsICJwaG9uZSIsICJfa2V5IiwgIl9pZCIsICJpbnNlcnRVc2VyIiwgImZvcm1hdFBhc3N3b3JkIiwgInNhbHQiLCAiZW5jcnlwdGVkUGFzc3dvcmQiLCAiZmlsdGVycyIsICJjaGVja1F1ZXJ5IiwgImN1cnNvciIsICJlcnJvciIsICJwaG9uZUNvdW50cnlDb2RlIiwgImxvY2FsZSIsICJ2ZXJpZmllZEVtYWlsQ29kZSIsICJ2ZXJpZmllZFNtc0NvZGUiLCAiaW5zZXJ0IiwgImluc2VydFF1ZXJ5IiwgInVwZGF0ZVVzZXIiLCAidXBkYXRlZFVzZXIiLCAidGFncyIsICJ1cGRhdGUiLCAiaWQiLCAidXNlclF1ZXJ5IiwgImRhdGFiYXNlIiwgInRhZ0NvbGxlY3Rpb24iLCAidGFnRG9jSWQiLCAibmFtZSIsICJ0YWdRdWVyeSIsICJ0YWdFZGdlIiwgImVkZ2UiLCAiZm9yZ290UGFzc3dvcmQiLCAiYXFsUXVlcnkiLCAidmVyaWZpZWRFbWFpbCIsICJ2ZXJpZmllZFBob25lIiwgImNvZGVFeHBpcmVzIiwgImNvZGUiLCAidXNlckRvY0lkIiwgInVwZGF0ZVF1ZXJ5IiwgInJlc2V0UGFzc3dvcmQiLCAidHlwZSIsICJ2ZXJpZmllZEVtYWlsRXhwaXJlcyIsICJ2ZXJpZmllZFBob25lRXhwaXJlcyIsICJjb25maXJtQ29kZSIsICJzZXNzaW9uSWQiLCAiZGVsZXRlVXNlciIsICJzdHJpcGVDbGllbnQiLCAiZGVsZXRlZFVzZXIiLCAiZGVhY3RpdmF0ZVVzZXIiLCAiZ2V0RGlzcGxheU5hbWUiLCAiZmlyc3QiLCAibGFzdCIsICJmdWxsbmFtZSIsICJnZXRTZXNzaW9uVXNlciIsICJzZWxlY3RPYmplY3RzIiwgInNlbGVjdFF1ZXJpZXMiLCAiZ2V0VXNlciIsICJnZXRVc2VycyIsICJmaWx0ZXJCeSIsICJnZXRVc2Vyc0J5UmVhY3Rpb25zIiwgInJlYWN0aW9ucyIsICJmb3JtYXRSZWFjdGlvbnMiLCAicmVhY3Rpb25OYW1lIiwgImZvcm1hdFNlc3Npb25JZCIsICJmb3JtYXRVc2VybmFtZSIsICJnZXRVc2Vyc0J5VGFncyIsICJmb3JtYXRUYWdzIiwgImxpc3QiLCAidGFnTmFtZSIsICJnZXRVc2Vyc0J5TGF0ZXN0IiwgImZpbHRlciIsICJnZXRVc2Vyc0J5Q29ubmVjdGlvbiIsICJmb3JtYXRVc2VySWQiLCAicmVmcmVzaFNlc3Npb24iLCAiZXhwaXJlcyIsICJzaWduSW4iLCAiYXJncyIsICJmb3JtYXRFbWFpbCIsICJmb3JtYXRQaG9uZSIsICJmb3JtYXRFeHBpcmVzIiwgImNoZWNrVXNlciIsICJ2YWxpZFBhc3N3b3JkIiwgImF1dGhQYXNzd29yZCIsICJzaWduT3V0IiwgInNlc3Npb25RdWVyeSIsICJnZXRBY3RpdmVVc2VyQ291bnQiLCAiY291bnRRdWVyeSIsICJnZXRVc2VyQnlUb2tlbiJdCn0K
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import{ApiGatewayManagementApi as R}from"@aws-sdk/client-apigatewaymanagementapi";import{createHash as N,parseId as u,parseString as p}from"@nlabs/utils";import{aql as d}from"arangojs";import{Config as g}from"../config";import{getUserByToken as y}from"./users";import{useDb as I}from"../utils/arangodbUtils";const S=async(r,t)=>{const n="addSocket",s=p(r,32),o=p(t);try{const e=process.env.ARANGODB_DATABASE,a=I(e),i=await y({config:g.get(),databaseName:e,session:null},o);if(!i)throw new Error("Unauthorized");const c={socketId:s,modified:Date.now()},l={...c,_key:N(`socket-${s}`),userId:i.userId},E=d`UPSERT {userId: ${i.userId}}
|
|
2
|
-
INSERT ${l}
|
|
3
|
-
UPDATE ${c}
|
|
4
|
-
IN sockets RETURN NEW`;return a.query(E).then(m=>m.next()).catch(m=>{throw m})}catch{throw new Error("Unauthorized")}},w=r=>{const t=u(r),n=process.env.ARANGODB_DATABASE,s=I(n),o=d`FOR s IN sockets
|
|
5
|
-
FILTER s.userId == ${t}
|
|
6
|
-
LIMIT 1
|
|
7
|
-
RETURN s`;return s.query(o).then(e=>e.next()).catch(e=>{throw e})},O=r=>{const t=u(r),n=process.env.ARANGODB_DATABASE,s=I(n),o=d`FOR s IN sockets
|
|
8
|
-
FILTER s.socketId == ${t}
|
|
9
|
-
LET user = FIRST(
|
|
10
|
-
FOR u IN users
|
|
11
|
-
FILTER u.sub == s.sub
|
|
12
|
-
LIMIT 1
|
|
13
|
-
RETURN u;
|
|
14
|
-
)
|
|
15
|
-
LIMIT 1
|
|
16
|
-
RETURN MERGE(c, {user:user}`;return s.query(o).then(e=>e.next()).catch(e=>{throw e})},U=(r,t)=>{const{databaseName:n,session:{userId:s}}=r,o=`users/${u(s)}`,e=`conversations/${u(t)}`,a=I(n),i=d`FOR c, e IN 1..1 OUTBOUND ${o} hasConversation
|
|
17
|
-
FILTER c._id == ${e}
|
|
18
|
-
LIMIT 1
|
|
19
|
-
LET u = (
|
|
20
|
-
FOR inUser, inEdge IN 1..1 INBOUND ${e} hasConversation
|
|
21
|
-
FOR n IN connections
|
|
22
|
-
FILTER inUser.sub == n.sub
|
|
23
|
-
RETURN n.connectionId
|
|
24
|
-
)
|
|
25
|
-
RETURN u`;return a.query(i).then(c=>c.all()).catch(c=>{throw c})},k=r=>{const t="removeSocket",n=p(r,32),s=process.env.ARANGODB_DATABASE,o=I(s),e=d`FOR s IN sockets
|
|
26
|
-
FILTER s.socketId == ${n}
|
|
27
|
-
LIMIT 1
|
|
28
|
-
REMOVE s IN sockets
|
|
29
|
-
RETURN OLD`;return o.query(e).then(a=>a.next()).catch(a=>{throw a})};class x{client;constructor(t){t&&this.setupClient(t||{})}async setupClient({requestContext:t}){if(!this.client&&t){const{apiId:n,domainName:s,stage:o}=t;let e=s;n&&(e=`${n}.execute-api.${process.env.API_REGION}.amazonaws.com`),this.client=new R({credentials:g.get("aws.credentials"),endpoint:`https://${e}/${o}`,region:g.get("aws.region")})}}async send(t,n){let s;if(t?.requestContext){await this.setupClient(t);const{socketId:o}=t.requestContext;s=o}else s=t;return await this.client.postToConnection({ConnectionId:s,Data:JSON.stringify(n)}).promise().catch(async o=>{o.statusCode===410&&await k(s)}),!0}}export{x as WebsocketClient,S as addSocket,U as getConnectionByConvo,O as getSocketById,w as getSocketByUser,k as removeSocket};
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvd2Vic29ja2V0cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7QXBpR2F0ZXdheU1hbmFnZW1lbnRBcGl9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hcGlnYXRld2F5bWFuYWdlbWVudGFwaSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHthcWwsIERhdGFiYXNlfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7Z2V0VXNlckJ5VG9rZW59IGZyb20gJy4vdXNlcnMnO1xuaW1wb3J0IHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzJztcbmltcG9ydCB7dXNlRGJ9IGZyb20gJy4uL3V0aWxzL2FyYW5nb2RiVXRpbHMnO1xuXG5pbXBvcnQgdHlwZSB7V2Vic29ja2V0Q29ubmVjdGlvbn0gZnJvbSAnLi4vdHlwZXMvd2Vic29ja2V0cy50eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBhZGRTb2NrZXQgPSBhc3luYyAoc29ja2V0SWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8V2Vic29ja2V0Q29ubmVjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRTb2NrZXQnO1xuICBjb25zdCBmb3JtYXRTb2NrZXRJZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoc29ja2V0SWQsIDMyKTtcbiAgY29uc3QgZm9ybWF0VG9rZW46IHN0cmluZyA9IHBhcnNlU3RyaW5nKHRva2VuKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0U7XG4gICAgY29uc3QgZGF0YWJhc2U6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlckJ5VG9rZW4oe2NvbmZpZzogQ29uZmlnLmdldCgpLCBkYXRhYmFzZU5hbWUsIHNlc3Npb246IG51bGx9LCBmb3JtYXRUb2tlbik7XG5cbiAgICBpZighdXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmF1dGhvcml6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICBzb2NrZXRJZDogZm9ybWF0U29ja2V0SWQsXG4gICAgICBtb2RpZmllZDogRGF0ZS5ub3coKVxuICAgIH07XG4gICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgLi4udXBkYXRlLFxuICAgICAgX2tleTogY3JlYXRlSGFzaChgc29ja2V0LSR7Zm9ybWF0U29ja2V0SWR9YCksXG4gICAgICB1c2VySWQ6IHVzZXIudXNlcklkXG4gICAgfTtcbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dXNlcklkOiAke3VzZXIudXNlcklkfX1cbiAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgIElOIHNvY2tldHMgUkVUVVJOIE5FV2A7XG5cbiAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYXV0aG9yaXplZCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ja2V0QnlVc2VyID0gKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxXZWJzb2NrZXRDb25uZWN0aW9uPiA9PiB7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIHMgSU4gc29ja2V0c1xuICAgIEZJTFRFUiBzLnVzZXJJZCA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIHNgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ja2V0QnlJZCA9IChzb2NrZXRJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgZm9ybWF0U29ja2V0SWQ6IHN0cmluZyA9IHBhcnNlSWQoc29ja2V0SWQpO1xuICBjb25zdCBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIHMgSU4gc29ja2V0c1xuICAgIEZJTFRFUiBzLnNvY2tldElkID09ICR7Zm9ybWF0U29ja2V0SWR9XG4gICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgdS5zdWIgPT0gcy5zdWJcbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiB1O1xuICAgIClcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyOnVzZXJ9YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25CeUNvbnZvID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH19ID0gY29udGV4dDtcbiAgY29uc3Qgc2Vzc2lvbkRvY0lkOiBzdHJpbmcgPSBgdXNlcnMvJHtwYXJzZUlkKHNlc3Npb25JZCl9YDtcbiAgY29uc3QgY29udm9Eb2NJZDogc3RyaW5nID0gYGNvbnZlcnNhdGlvbnMvJHtwYXJzZUlkKGNvbnZvSWQpfWA7XG4gIGNvbnN0IGRhdGFiYXNlOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgYywgZSBJTiAxLi4xIE9VVEJPVU5EICR7c2Vzc2lvbkRvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgRklMVEVSIGMuX2lkID09ICR7Y29udm9Eb2NJZH1cbiAgTElNSVQgMVxuICBMRVQgdSA9IChcbiAgICBGT1IgaW5Vc2VyLCBpbkVkZ2UgSU4gMS4uMSBJTkJPVU5EICR7Y29udm9Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gICAgRk9SIG4gSU4gY29ubmVjdGlvbnNcbiAgICBGSUxURVIgaW5Vc2VyLnN1YiA9PSBuLnN1YlxuICAgIFJFVFVSTiBuLmNvbm5lY3Rpb25JZFxuICApXG4gIFJFVFVSTiB1YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlU29ja2V0ID0gKHNvY2tldElkOiBzdHJpbmcpOiBQcm9taXNlPFdlYnNvY2tldENvbm5lY3Rpb24+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAncmVtb3ZlU29ja2V0JztcbiAgY29uc3QgZm9ybWF0U29ja2V0SWQ6IHN0cmluZyA9IHBhcnNlU3RyaW5nKHNvY2tldElkLCAzMik7XG4gIGNvbnN0IGRhdGFiYXNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0U7XG4gIGNvbnN0IGRhdGFiYXNlOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgcyBJTiBzb2NrZXRzXG4gICAgICBGSUxURVIgcy5zb2NrZXRJZCA9PSAke2Zvcm1hdFNvY2tldElkfVxuICAgICAgTElNSVQgMVxuICAgICAgUkVNT1ZFIHMgSU4gc29ja2V0c1xuICAgICAgUkVUVVJOIE9MRGA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU29ja2V0Q2xpZW50Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJlcXVlc3RDb250ZXh0Pzoge1xuICAgIHJlYWRvbmx5IGFwaUlkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY2xhc3MgV2Vic29ja2V0Q2xpZW50IHtcbiAgY2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz8pIHtcbiAgICBpZihjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0dXBDbGllbnQoY29uZmlnIHx8IHt9KTtcbiAgICB9XG4gIH1cblxuICAvLyBBbGxvdyBqdXN0IHBhc3NpbmcgYSBzaW5nbGUgZXZlbnQgdG8gc2V0dXAgdGhlIGNsaWVudCBmb3IgZWFzZSBvZiB1c2VcbiAgYXN5bmMgc2V0dXBDbGllbnQoe3JlcXVlc3RDb250ZXh0fTogV2ViU29ja2V0Q2xpZW50Q29udGV4dCkge1xuICAgIGlmKCF0aGlzLmNsaWVudCAmJiByZXF1ZXN0Q29udGV4dCkge1xuICAgICAgY29uc3Qge2FwaUlkLCBkb21haW5OYW1lLCBzdGFnZX0gPSByZXF1ZXN0Q29udGV4dDtcbiAgICAgIGxldCB1cGRhdGVkRG9tYWluTmFtZTogc3RyaW5nID0gZG9tYWluTmFtZTtcblxuICAgICAgaWYoYXBpSWQpIHtcbiAgICAgICAgdXBkYXRlZERvbWFpbk5hbWUgPSBgJHthcGlJZH0uZXhlY3V0ZS1hcGkuJHtwcm9jZXNzLmVudi5BUElfUkVHSU9OfS5hbWF6b25hd3MuY29tYDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGllbnQgPSBuZXcgQXBpR2F0ZXdheU1hbmFnZW1lbnRBcGkoe1xuICAgICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICAgIGVuZHBvaW50OiBgaHR0cHM6Ly8ke3VwZGF0ZWREb21haW5OYW1lfS8ke3N0YWdlfWAsXG4gICAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kKGNvbm5lY3Rpb24sIHBheWxvYWQpIHtcbiAgICBjb25zb2xlLmxvZyhjb25uZWN0aW9uLCBwYXlsb2FkKTtcblxuICAgIC8vIENoZWF0IGFuZCBhbGxvdyBldmVudCB0byBiZSBwYXNzZWQgaW4gdGhpcyBhbHNvIGxldHMgdXMgZGVmYXVsdCB0byBzZXR1cENsaWVudCB0b29cbiAgICBsZXQgc29ja2V0SWQ7XG5cbiAgICBpZihjb25uZWN0aW9uPy5yZXF1ZXN0Q29udGV4dCkge1xuICAgICAgYXdhaXQgdGhpcy5zZXR1cENsaWVudChjb25uZWN0aW9uKTtcbiAgICAgIGNvbnN0IHtzb2NrZXRJZDogdXBkYXRlZFNvY2tldElkfSA9IGNvbm5lY3Rpb24ucmVxdWVzdENvbnRleHQ7XG4gICAgICBzb2NrZXRJZCA9IHVwZGF0ZWRTb2NrZXRJZDtcbiAgICB9IGVsc2Uge1xuICAgICAgc29ja2V0SWQgPSBjb25uZWN0aW9uO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3RUb0Nvbm5lY3Rpb24oe0Nvbm5lY3Rpb25JZDogc29ja2V0SWQsIERhdGE6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpfSlcbiAgICAgIC5wcm9taXNlKClcbiAgICAgIC5jYXRjaChhc3luYyAocG9zdEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBvc3RFcnJvcikpO1xuXG4gICAgICAgIGlmKHBvc3RFcnJvci5zdGF0dXNDb2RlID09PSA0MTApIHtcbiAgICAgICAgICAvLyBEaXNjb25uZWN0IGNsaWVudFxuICAgICAgICAgIGF3YWl0IHJlbW92ZVNvY2tldChzb2NrZXRJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsMkJBQUFBLE1BQThCLDBDQUN0QyxPQUFRLGNBQUFDLEVBQVksV0FBQUMsRUFBUyxlQUFBQyxNQUFrQixlQUMvQyxPQUFRLE9BQUFDLE1BQW9CLFdBRzVCLE9BQVEsVUFBQUMsTUFBYSxZQUNyQixPQUFRLGtCQUFBQyxNQUFxQixVQUU3QixPQUFRLFNBQUFDLE1BQVkseUJBSWIsTUFBTUMsRUFB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LENBQ1IsQ0FBQyxDQUNMLEVBU08sTUFBTVksQ0FBZ0IsQ0FDM0IsT0FFQSxZQUFZQyxFQUFTLENBQ2hCQSxHQUNELEtBQUssWUFBWUEsR0FBVSxDQUFDLENBQUMsQ0FFakMsQ0FHQSxNQUFNLFlBQVksQ0FBQyxlQUFBQyxDQUFjLEVBQTJCLENBQzFELEdBQUcsQ0FBQyxLQUFLLFFBQVVBLEVBQWdCLENBQ2pDLEtBQU0sQ0FBQyxNQUFBQyxFQUFPLFdBQUFDLEVBQVksTUFBQUMsQ0FBSyxFQUFJSCxFQUNuQyxJQUFJSSxFQUE0QkYsRUFFN0JELElBQ0RHLEVBQW9CLEdBQUdILENBQUssZ0JBQWdCLFFBQVEsSUFBSSxVQUFVLGtCQUdwRSxLQUFLLE9BQVMsSUFBSXBDLEVBQXdCLENBQ3hDLFlBQWFLLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsU0FBVSxXQUFXa0MsQ0FBaUIsSUFBSUQsQ0FBSyxHQUMvQyxPQUFRakMsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxDQUNILENBQ0YsQ0FFQSxNQUFNLEtBQUttQyxFQUFZQyxFQUFTLENBSTlCLElBQUloQyxFQUVKLEdBQUcrQixHQUFZLGVBQWdCLENBQzdCLE1BQU0sS0FBSyxZQUFZQSxDQUFVLEVBQ2pDLEtBQU0sQ0FBQyxTQUFVRSxDQUFlLEVBQUlGLEVBQVcsZUFDL0MvQixFQUFXaUMsQ0FDYixNQUNFakMsRUFBVytCLEVBR2IsYUFBTSxLQUFLLE9BQU8saUJBQWlCLENBQUMsYUFBYy9CLEVBQVUsS0FBTSxLQUFLLFVBQVVnQyxDQUFPLENBQUMsQ0FBQyxFQUN2RixRQUFRLEVBQ1IsTUFBTSxNQUFPRSxHQUFjLENBR3ZCQSxFQUFVLGFBQWUsS0FFMUIsTUFBTVgsRUFBYXZCLENBQVEsQ0FFL0IsQ0FBQyxFQUVJLEVBQ1QsQ0FDRiIsCiAgIm5hbWVzIjogWyJBcGlHYXRld2F5TWFuYWdlbWVudEFwaSIsICJjcmVhdGVIYXNoIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgIkNvbmZpZyIsICJnZXRVc2VyQnlUb2tlbiIsICJ1c2VEYiIsICJhZGRTb2NrZXQiLCAic29ja2V0SWQiLCAidG9rZW4iLCAiYWN0aW9uIiwgImZvcm1hdFNvY2tldElkIiwgImZvcm1hdFRva2VuIiwgImRhdGFiYXNlTmFtZSIsICJkYXRhYmFzZSIsICJ1c2VyIiwgInVwZGF0ZSIsICJpbnNlcnQiLCAiYXFsUXJ5IiwgImN1cnNvciIsICJlcnJvciIsICJnZXRTb2NrZXRCeVVzZXIiLCAidXNlcklkIiwgImZvcm1hdFVzZXJJZCIsICJnZXRTb2NrZXRCeUlkIiwgImdldENvbm5lY3Rpb25CeUNvbnZvIiwgImNvbnRleHQiLCAiY29udm9JZCIsICJzZXNzaW9uSWQiLCAic2Vzc2lvbkRvY0lkIiwgImNvbnZvRG9jSWQiLCAicmVtb3ZlU29ja2V0IiwgIldlYnNvY2tldENsaWVudCIsICJjb25maWciLCAicmVxdWVzdENvbnRleHQiLCAiYXBpSWQiLCAiZG9tYWluTmFtZSIsICJzdGFnZSIsICJ1cGRhdGVkRG9tYWluTmFtZSIsICJjb25uZWN0aW9uIiwgInBheWxvYWQiLCAidXBkYXRlZFNvY2tldElkIiwgInBvc3RFcnJvciJdCn0K
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as d,parseId as m,parseNum as p}from"@nlabs/utils";import{z as r}from"zod";import{removeEmptyKeys as c}from"../utils/adapterUtils";class i extends Error{constructor(e,n){super(e);this.field=n;this.name="ArangoValidationError"}}const u=r.object({_from:r.string().optional(),_id:r.string().optional(),_key:r.string().optional(),_oldRev:r.string().optional(),_rev:r.string().optional(),_to:r.string().optional(),added:r.number().optional(),id:r.string().optional(),modified:r.number().optional()}).passthrough(),h=t=>{try{return u.parse(t)}catch(o){if(o instanceof r.ZodError){const e=o.errors.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new i(`Document validation failed: ${e}`)}throw o}},T=t=>t,_=t=>{try{return f(t)}catch(o){throw o instanceof i?o:new i(`Document parsing failed: ${o instanceof Error?o.message:"Unknown error"}`)}},f=t=>{const{_id:o,_key:e,added:n,id:a,modified:s}=t;return c({...t,...o&&{_id:d(o)},...e&&{_key:m(e)},...n!==void 0&&{added:p(n,13)},...(o||a)&&{id:d(o||a)},...s!==void 0&&{modified:p(s,13)}})};export{i as ArangoValidationError,T as formatDocumentOutput,_ as parseDocument,h as validateDocumentInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL2FyYW5nb0FkYXB0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VJZCwgcGFyc2VOdW19IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7RG9jdW1lbnRUeXBlfSBmcm9tICcuLi90eXBlcy9hcmFuZ29kYi50eXBlcyc7XG5pbXBvcnQge3JlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vdXRpbHMvYWRhcHRlclV0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFyYW5nb1ZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnQXJhbmdvVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG5jb25zdCBEb2N1bWVudElucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfZnJvbTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9yZXY6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3RvOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGFkZGVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1vZGlmaWVkOiB6Lm51bWJlcigpLm9wdGlvbmFsKClcbn0pLnBhc3N0aHJvdWdoKCk7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZURvY3VtZW50SW5wdXQgPSAoZG9jOiB1bmtub3duKTogRG9jdW1lbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBEb2N1bWVudElucHV0U2NoZW1hLnBhcnNlKGRvYyk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBEb2N1bWVudFR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0gZXJyb3IuZXJyb3JzLm1hcCgoZSkgPT4gYCR7ZS5wYXRoLmpvaW4oJy4nKX06ICR7ZS5tZXNzYWdlfWApLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgQXJhbmdvVmFsaWRhdGlvbkVycm9yKGBEb2N1bWVudCB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXREb2N1bWVudE91dHB1dCA9IChkb2M6IERvY3VtZW50VHlwZSk6IERvY3VtZW50VHlwZSA9PiBkb2M7XG5cbmV4cG9ydCBjb25zdCBwYXJzZURvY3VtZW50ID0gKGRvYzogRG9jdW1lbnRUeXBlKTogRG9jdW1lbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtRG9jdW1lbnRUcmFuc2Zvcm1hdGlvbihkb2MpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIEFyYW5nb1ZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBBcmFuZ29WYWxpZGF0aW9uRXJyb3IoYERvY3VtZW50IHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtRG9jdW1lbnRUcmFuc2Zvcm1hdGlvbiA9IChkb2M6IERvY3VtZW50VHlwZSk6IERvY3VtZW50VHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfaWQsXG4gICAgX2tleSxcbiAgICBhZGRlZCxcbiAgICBpZCxcbiAgICBtb2RpZmllZFxuICB9ID0gZG9jO1xuXG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gcmVtb3ZlRW1wdHlLZXlzKHtcbiAgICAuLi5kb2MsXG4gICAgLi4uKF9pZCAmJiB7X2lkOiBwYXJzZUFyYW5nb0lkKF9pZCl9KSxcbiAgICAuLi4oX2tleSAmJiB7X2tleTogcGFyc2VJZChfa2V5KX0pLFxuICAgIC4uLihhZGRlZCAhPT0gdW5kZWZpbmVkICYmIHthZGRlZDogcGFyc2VOdW0oYWRkZWQsIDEzKX0pLFxuICAgIC4uLigoX2lkIHx8IGlkKSAmJiB7aWQ6IHBhcnNlQXJhbmdvSWQoX2lkIHx8IGlkKX0pLFxuICAgIC4uLihtb2RpZmllZCAhPT0gdW5kZWZpbmVkICYmIHttb2RpZmllZDogcGFyc2VOdW0obW9kaWZpZWQsIDEzKX0pXG4gIH0pO1xuXG4gIHJldHVybiB0cmFuc2Zvcm1lZDtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxpQkFBQUEsRUFBZSxXQUFBQyxFQUFTLFlBQUFDLE1BQWUsZUFDL0MsT0FBUSxLQUFBQyxNQUFRLE1BR2hCLE9BQVEsbUJBQUFDLE1BQXNCLHdCQUV2QixNQUFNQyxVQUE4QixLQUFNLENBQy9DLFlBQVlDLEVBQXdCQyxFQUFnQixDQUNsRCxNQUFNRCxDQUFPLEVBRHFCLFdBQUFDLEVBRWxDLEtBQUssS0FBTyx1QkFDZCxDQUNGLENBRUEsTUFBTUMsRUFBc0JMLEVBQUUsT0FBTyxDQUNuQyxNQUFPQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzNCLElBQUtBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDekIsS0FBTUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUMxQixRQUFTQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzdCLEtBQU1BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDMUIsSUFBS0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN6QixNQUFPQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzNCLEdBQUlBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDeEIsU0FBVUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUNoQyxDQUFDLEVBQUUsWUFBWSxFQUVGTSxFQUF5QkMsR0FBK0IsQ0FDbkUsR0FBSSxDQUVGLE9BRGtCRixFQUFvQixNQUFNRSxDQUFHLENBRWpELE9BQVFDLEVBQU8sQ0FDYixHQUFHQSxhQUFpQlIsRUFBRSxTQUFVLENBQzlCLE1BQU1TLEVBQWNELEVBQU0sT0FBTyxJQUFLRSxHQUFNLEdBQUdBLEVBQUUsS0FBSyxLQUFLLEdBQUcsQ0FBQyxLQUFLQSxFQUFFLE9BQU8sRUFBRSxFQUFFLEtBQUssSUFBSSxFQUMxRixNQUFNLElBQUlSLEVBQXNCLCtCQUErQk8sQ0FBVyxFQUFFLENBQzlFLENBQ0EsTUFBTUQsQ0FDUixDQUNGLEVBRWFHLEVBQXdCSixHQUFvQ0EsRUFFNURLLEVBQWlCTCxHQUFvQyxDQUNoRSxHQUFJLENBRUYsT0FEZU0sRUFBOEJOLENBQUcsQ0FFbEQsT0FBUUMsRUFBTyxDQUNiLE1BQUdBLGFBQWlCTixFQUNaTSxFQUVGLElBQUlOLEVBQXNCLDRCQUE0Qk0sYUFBaUIsTUFBUUEsRUFBTSxRQUFVLGVBQWUsRUFBRSxDQUN4SCxDQUNGLEVBRU1LLEVBQWlDTixHQUFvQyxDQUN6RSxLQUFNLENBQ0osSUFBQU8sRUFDQSxLQUFBQyxFQUNBLE1BQUFDLEVBQ0EsR0FBQUMsRUFDQSxTQUFBQyxDQUNGLEVBQUlYLEVBV0osT0FUb0JOLEVBQWdCLENBQ2xDLEdBQUdNLEVBQ0gsR0FBSU8sR0FBTyxDQUFDLElBQUtqQixFQUFjaUIsQ0FBRyxDQUFDLEVBQ25DLEdBQUlDLEdBQVEsQ0FBQyxLQUFNakIsRUFBUWlCLENBQUksQ0FBQyxFQUNoQyxHQUFJQyxJQUFVLFFBQWEsQ0FBQyxNQUFPakIsRUFBU2lCLEVBQU8sRUFBRSxDQUFDLEVBQ3RELElBQUtGLEdBQU9HLElBQU8sQ0FBQyxHQUFJcEIsRUFBY2lCLEdBQU9HLENBQUUsQ0FBQyxFQUNoRCxHQUFJQyxJQUFhLFFBQWEsQ0FBQyxTQUFVbkIsRUFBU21CLEVBQVUsRUFBRSxDQUFDLENBQ2pFLENBQUMsQ0FHSCIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAicGFyc2VOdW0iLCAieiIsICJyZW1vdmVFbXB0eUtleXMiLCAiQXJhbmdvVmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiRG9jdW1lbnRJbnB1dFNjaGVtYSIsICJ2YWxpZGF0ZURvY3VtZW50SW5wdXQiLCAiZG9jIiwgImVycm9yIiwgImZpZWxkRXJyb3JzIiwgImUiLCAiZm9ybWF0RG9jdW1lbnRPdXRwdXQiLCAicGFyc2VEb2N1bWVudCIsICJwZXJmb3JtRG9jdW1lbnRUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJhZGRlZCIsICJpZCIsICJtb2RpZmllZCJdCn0K
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as C,parseId as d,parseString as s}from"@nlabs/utils";import{z as t}from"zod";import{parseDocument as f}from"./arangoAdapter";import{removeEmptyKeys as b}from"../utils/adapterUtils";class l extends Error{constructor(n,r){super(n);this.field=r;this.name="ContentValidationError"}}const I=t.object({contentId:t.string().optional(),key:t.string().min(1,"Key is required").max(200,"Key must be less than 200 characters"),locale:t.enum(["en","es","fr","de","pt","it"],{errorMap:()=>({message:"Locale must be one of: en, es, fr, de, pt, it"})}),content:t.string().min(1,"Content is required").max(1e4,"Content must be less than 10000 characters"),description:t.string().max(500,"Description must be less than 500 characters").optional(),category:t.string().max(100,"Category must be less than 100 characters").optional(),isActive:t.boolean().optional(),userId:t.string().optional()}),T=t.object({contentId:t.string().optional(),key:t.string().min(1,"Key is required").max(200,"Key must be less than 200 characters"),locale:t.enum(["en","es","fr","de","pt","it"],{errorMap:()=>({message:"Locale must be one of: en, es, fr, de, pt, it"})}).optional(),content:t.string().min(1,"Content is required").max(1e4,"Content must be less than 10000 characters"),description:t.string().max(500,"Description must be less than 500 characters").optional(),category:t.string().max(100,"Category must be less than 100 characters").optional(),isActive:t.boolean().optional()}),K=o=>{try{return I.parse(o)}catch(e){if(e instanceof t.ZodError){const n=e.errors[0]?.path.join("."),r=e.errors[0]?.message||"Validation failed";throw new l(r,n)}throw e}},j=o=>{try{return T.parse(o)}catch(e){if(e instanceof t.ZodError){const n=e.errors[0]?.path.join("."),r=e.errors[0]?.message||"Validation failed";throw new l(r,n)}throw e}},x=o=>{const{_id:e,_key:n,contentId:r,id:a,key:u,locale:y,content:g,description:i,category:c,isActive:p,userId:m}=o,h={...f(o),...(n||r)&&{contentId:d(n||r)},...(e||a||n||r)&&{id:C(e||a||`content/${n||r}`)},key:s(u,200),locale:y,content:s(g,1e4),...i&&{description:s(i,500)},...c&&{category:s(c,100)},...p!==void 0&&{isActive:p},...m&&{userId:d(m)}};return b(h)},q=o=>x(o);export{l as ContentValidationError,K as parseContent,q as parseContentFromDb,j as parseContentInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZUlkLCBwYXJzZVN0cmluZ30gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtwYXJzZURvY3VtZW50fSBmcm9tICcuL2FyYW5nb0FkYXB0ZXInO1xuaW1wb3J0IHtDb250ZW50SW5wdXRUeXBlLCBDb250ZW50VHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcyc7XG5pbXBvcnQge3JlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vdXRpbHMvYWRhcHRlclV0aWxzJztcblxuZXhwb3J0IGNsYXNzIENvbnRlbnRWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0NvbnRlbnRWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IGNvbnRlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbnRlbnRJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBrZXk6IHouc3RyaW5nKCkubWluKDEsICdLZXkgaXMgcmVxdWlyZWQnKS5tYXgoMjAwLCAnS2V5IG11c3QgYmUgbGVzcyB0aGFuIDIwMCBjaGFyYWN0ZXJzJyksXG4gIGxvY2FsZTogei5lbnVtKFsnZW4nLCAnZXMnLCAnZnInLCAnZGUnLCAncHQnLCAnaXQnXSwge1xuICAgIGVycm9yTWFwOiAoKSA9PiAoe21lc3NhZ2U6ICdMb2NhbGUgbXVzdCBiZSBvbmUgb2Y6IGVuLCBlcywgZnIsIGRlLCBwdCwgaXQnfSlcbiAgfSksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkubWluKDEsICdDb250ZW50IGlzIHJlcXVpcmVkJykubWF4KDEwMDAwLCAnQ29udGVudCBtdXN0IGJlIGxlc3MgdGhhbiAxMDAwMCBjaGFyYWN0ZXJzJyksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1heCg1MDAsICdEZXNjcmlwdGlvbiBtdXN0IGJlIGxlc3MgdGhhbiA1MDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm1heCgxMDAsICdDYXRlZ29yeSBtdXN0IGJlIGxlc3MgdGhhbiAxMDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGlzQWN0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB1c2VySWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKVxufSk7XG5cbmNvbnN0IGNvbnRlbnRJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29udGVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGtleTogei5zdHJpbmcoKS5taW4oMSwgJ0tleSBpcyByZXF1aXJlZCcpLm1heCgyMDAsICdLZXkgbXVzdCBiZSBsZXNzIHRoYW4gMjAwIGNoYXJhY3RlcnMnKSxcbiAgbG9jYWxlOiB6LmVudW0oWydlbicsICdlcycsICdmcicsICdkZScsICdwdCcsICdpdCddLCB7XG4gICAgZXJyb3JNYXA6ICgpID0+ICh7bWVzc2FnZTogJ0xvY2FsZSBtdXN0IGJlIG9uZSBvZjogZW4sIGVzLCBmciwgZGUsIHB0LCBpdCd9KVxuICB9KS5vcHRpb25hbCgpLFxuICBjb250ZW50OiB6LnN0cmluZygpLm1pbigxLCAnQ29udGVudCBpcyByZXF1aXJlZCcpLm1heCgxMDAwMCwgJ0NvbnRlbnQgbXVzdCBiZSBsZXNzIHRoYW4gMTAwMDAgY2hhcmFjdGVycycpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5tYXgoNTAwLCAnRGVzY3JpcHRpb24gbXVzdCBiZSBsZXNzIHRoYW4gNTAwIGNoYXJhY3RlcnMnKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5tYXgoMTAwLCAnQ2F0ZWdvcnkgbXVzdCBiZSBsZXNzIHRoYW4gMTAwIGNoYXJhY3RlcnMnKS5vcHRpb25hbCgpLFxuICBpc0FjdGl2ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKVxufSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnQgPSAoY29udGVudDogQ29udGVudFR5cGUpOiBDb250ZW50VHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsaWRhdGVkID0gY29udGVudFNjaGVtYS5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkIGFzIENvbnRlbnRUeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZCA9IGVycm9yLmVycm9yc1swXT8ucGF0aC5qb2luKCcuJyk7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZXJyb3IuZXJyb3JzWzBdPy5tZXNzYWdlIHx8ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICB0aHJvdyBuZXcgQ29udGVudFZhbGlkYXRpb25FcnJvcihtZXNzYWdlLCBmaWVsZCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb250ZW50SW5wdXQgPSAoY29udGVudDogQ29udGVudElucHV0VHlwZSk6IENvbnRlbnRJbnB1dFR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHZhbGlkYXRlZCA9IGNvbnRlbnRJbnB1dFNjaGVtYS5wYXJzZShjb250ZW50KTtcbiAgICByZXR1cm4gdmFsaWRhdGVkIGFzIENvbnRlbnRJbnB1dFR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gZXJyb3IuZXJyb3JzWzBdPy5wYXRoLmpvaW4oJy4nKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5lcnJvcnNbMF0/Lm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgIHRocm93IG5ldyBDb250ZW50VmFsaWRhdGlvbkVycm9yKG1lc3NhZ2UsIGZpZWxkKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1Db250ZW50VHJhbnNmb3JtYXRpb24gPSAoY29udGVudDogQ29udGVudFR5cGUpOiBDb250ZW50VHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfaWQsXG4gICAgX2tleSxcbiAgICBjb250ZW50SWQsXG4gICAgaWQsXG4gICAga2V5LFxuICAgIGxvY2FsZSxcbiAgICBjb250ZW50OiBjb250ZW50VGV4dCxcbiAgICBkZXNjcmlwdGlvbixcbiAgICBjYXRlZ29yeSxcbiAgICBpc0FjdGl2ZSxcbiAgICB1c2VySWRcbiAgfSA9IGNvbnRlbnQ7XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSB7XG4gICAgLi4ucGFyc2VEb2N1bWVudChjb250ZW50KSxcbiAgICAuLi4oKF9rZXkgfHwgY29udGVudElkKSAmJiB7Y29udGVudElkOiBwYXJzZUlkKF9rZXkgfHwgY29udGVudElkKX0pLFxuICAgIC4uLigoX2lkIHx8IGlkIHx8IF9rZXkgfHwgY29udGVudElkKSAmJiB7aWQ6IHBhcnNlQXJhbmdvSWQoX2lkIHx8IGlkIHx8IGBjb250ZW50LyR7X2tleSB8fCBjb250ZW50SWR9YCl9KSxcbiAgICBrZXk6IHBhcnNlU3RyaW5nKGtleSwgMjAwKSxcbiAgICBsb2NhbGUsXG4gICAgY29udGVudDogcGFyc2VTdHJpbmcoY29udGVudFRleHQsIDEwMDAwKSxcbiAgICAuLi4oZGVzY3JpcHRpb24gJiYge2Rlc2NyaXB0aW9uOiBwYXJzZVN0cmluZyhkZXNjcmlwdGlvbiwgNTAwKX0pLFxuICAgIC4uLihjYXRlZ29yeSAmJiB7Y2F0ZWdvcnk6IHBhcnNlU3RyaW5nKGNhdGVnb3J5LCAxMDApfSksXG4gICAgLi4uKGlzQWN0aXZlICE9PSB1bmRlZmluZWQgJiYge2lzQWN0aXZlfSksXG4gICAgLi4uKHVzZXJJZCAmJiB7dXNlcklkOiBwYXJzZUlkKHVzZXJJZCl9KVxuICB9O1xuXG4gIHJldHVybiByZW1vdmVFbXB0eUtleXModHJhbnNmb3JtZWQpIGFzIENvbnRlbnRUeXBlO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudEZyb21EYiA9IChjb250ZW50OiBDb250ZW50VHlwZSk6IENvbnRlbnRUeXBlID0+IHBlcmZvcm1Db250ZW50VHJhbnNmb3JtYXRpb24oY29udGVudCk7Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxpQkFBQUEsRUFBZSxXQUFBQyxFQUFTLGVBQUFDLE1BQWtCLGVBQ2xELE9BQVEsS0FBQUMsTUFBUSxNQUVoQixPQUFRLGlCQUFBQyxNQUFvQixrQkFFNUIsT0FBUSxtQkFBQUMsTUFBc0Isd0JBRXZCLE1BQU1DLFVBQStCLEtBQU0sQ0FDaEQsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHdCQUNkLENBQ0YsQ0FFQSxNQUFNQyxFQUFnQk4sRUFBRSxPQUFPLENBQzdCLFVBQVdBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDL0IsSUFBS0EsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFHLGlCQUFpQixFQUFFLElBQUksSUFBSyxzQ0FBc0MsRUFDekYsT0FBUUEsRUFBRSxLQUFLLENBQUMsS0FBTSxLQUFNLEtBQU0sS0FBTSxLQUFNLElBQUksRUFBRyxDQUNuRCxTQUFVLEtBQU8sQ0FBQyxRQUFTLCtDQUErQyxFQUM1RSxDQUFDLEVBQ0QsUUFBU0EsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFHLHFCQUFx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Z0JzQixDQUFXLENBQ3BDLEVBRWFDLEVBQXNCaEIsR0FBc0NHLEVBQTZCSCxDQUFPIiwKICAibmFtZXMiOiBbInBhcnNlQXJhbmdvSWQiLCAicGFyc2VJZCIsICJwYXJzZVN0cmluZyIsICJ6IiwgInBhcnNlRG9jdW1lbnQiLCAicmVtb3ZlRW1wdHlLZXlzIiwgIkNvbnRlbnRWYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJmaWVsZCIsICJjb250ZW50U2NoZW1hIiwgImNvbnRlbnRJbnB1dFNjaGVtYSIsICJwYXJzZUNvbnRlbnQiLCAiY29udGVudCIsICJlcnJvciIsICJwYXJzZUNvbnRlbnRJbnB1dCIsICJwZXJmb3JtQ29udGVudFRyYW5zZm9ybWF0aW9uIiwgIl9pZCIsICJfa2V5IiwgImNvbnRlbnRJZCIsICJpZCIsICJrZXkiLCAibG9jYWxlIiwgImNvbnRlbnRUZXh0IiwgImRlc2NyaXB0aW9uIiwgImNhdGVnb3J5IiwgImlzQWN0aXZlIiwgInVzZXJJZCIsICJ0cmFuc2Zvcm1lZCIsICJwYXJzZUNvbnRlbnRGcm9tRGIiXQp9Cg==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as h,parseId as s,parseNum as I,parseString as F,parseUrl as w}from"@nlabs/utils";import{z as e}from"zod";import{parseDocument as x}from"./arangoAdapter";import{parseReaktorContent as _,parseReaktorType as b}from"./reaktorAdapter";class p extends Error{constructor(t,n){super(t);this.field=n;this.name="FileValidationError"}}const j=e.object({_from:e.string().optional(),_id:e.string().optional(),_key:e.string().optional(),_oldRev:e.string().optional(),_rev:e.string().optional(),_to:e.string().optional(),base64:e.string().optional(),buffer:e.any().optional(),description:e.string().optional(),fileId:e.string().optional(),fileSize:e.number().optional(),fileType:e.string().optional(),itemId:e.string().optional(),itemType:e.string().optional(),name:e.string().optional(),url:e.string().optional(),userId:e.string().optional()}).passthrough(),A=i=>{try{return j.parse(i)}catch(r){if(r instanceof e.ZodError){const t=r.errors.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new p(`File validation failed: ${t}`)}throw r}},U=i=>i,k=i=>{const{fileType:r,name:t}=i;if(r)return F(r,16);const n=t?.split(".")||[];switch(n.length&&n[n.length-1]){case"jpeg":case"jpg":return"image/jpeg";case"png":return"image/png";case"zip":return"application/zip";default:return}},V=i=>{try{return v(i)}catch(r){throw r instanceof p?r:new p(`File parsing failed: ${r instanceof Error?r.message:"Unknown error"}`)}},v=i=>{const{_id:r,_key:t,base64:n,buffer:a,description:l,fileId:o,fileSize:d,fileType:T,id:c,itemId:f,itemType:m,name:g,url:u,userId:y}=i;return{...x(i),...n&&{base64:n},...a&&{buffer:a},...l&&{description:_(l)},...(t||o)&&{fileId:s(t||o)},...(r||c||t||o)&&{id:h(r||c||`files/${t||o}`)},...d!==void 0&&{fileSize:I(d)},...T&&{fileType:k(i)},...f&&{itemId:s(f)},...m&&{itemType:b(m)},...g&&{name:F(g,160)},...u&&{url:w(u)},...y&&{userId:s(y)}}};export{p as FileValidationError,U as formatFileOutput,k as getFileType,V as parseFile,A as validateFileInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL2ZpbGVBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWQsIHBhcnNlTnVtLCBwYXJzZVN0cmluZywgcGFyc2VVcmx9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7RmlsZVR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7cGFyc2VEb2N1bWVudH0gZnJvbSAnLi9hcmFuZ29BZGFwdGVyJztcbmltcG9ydCB7cGFyc2VSZWFrdG9yQ29udGVudCwgcGFyc2VSZWFrdG9yVHlwZX0gZnJvbSAnLi9yZWFrdG9yQWRhcHRlcic7XG5cbmV4cG9ydCBjbGFzcyBGaWxlVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBmaWVsZD86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdGaWxlVmFsaWRhdGlvbkVycm9yJztcbiAgfVxufVxuXG5jb25zdCBGaWxlSW5wdXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfa2V5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9vbGRSZXY6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfdG86IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYmFzZTY0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGJ1ZmZlcjogei5hbnkoKS5vcHRpb25hbCgpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBmaWxlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZmlsZVNpemU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgZmlsZVR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaXRlbUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGl0ZW1UeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXJsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVGaWxlSW5wdXQgPSAoZmlsZTogdW5rbm93bik6IEZpbGVUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBGaWxlSW5wdXRTY2hlbWEucGFyc2UoZmlsZSk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBGaWxlVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBGaWxlVmFsaWRhdGlvbkVycm9yKGBGaWxlIHZhbGlkYXRpb24gZmFpbGVkOiAke2ZpZWxkRXJyb3JzfWApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEZpbGVPdXRwdXQgPSAoZmlsZTogRmlsZVR5cGUpOiBGaWxlVHlwZSA9PiBmaWxlO1xuXG5leHBvcnQgY29uc3QgZ2V0RmlsZVR5cGUgPSAoZmlsZTogRmlsZVR5cGUpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7ZmlsZVR5cGUsIG5hbWV9ID0gZmlsZTtcblxuICBpZihmaWxlVHlwZSkge1xuICAgIHJldHVybiBwYXJzZVN0cmluZyhmaWxlVHlwZSwgMTYpO1xuICB9XG5cbiAgY29uc3QgbmFtZUFycjogc3RyaW5nW10gPSBuYW1lPy5zcGxpdCgnLicpIHx8IFtdO1xuICBjb25zdCBleHQ6IHN0cmluZyA9IG5hbWVBcnIubGVuZ3RoICYmIG5hbWVBcnJbbmFtZUFyci5sZW5ndGggLSAxXTtcblxuICBzd2l0Y2goZXh0KSB7XG4gICAgY2FzZSAnanBlZyc6XG4gICAgY2FzZSAnanBnJzpcbiAgICAgIHJldHVybiAnaW1hZ2UvanBlZyc7XG4gICAgY2FzZSAncG5nJzpcbiAgICAgIHJldHVybiAnaW1hZ2UvcG5nJztcbiAgICBjYXNlICd6aXAnOlxuICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi96aXAnO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VGaWxlID0gKGZpbGU6IEZpbGVUeXBlKTogRmlsZVR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBlcmZvcm1GaWxlVHJhbnNmb3JtYXRpb24oZmlsZSk7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgRmlsZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBGaWxlVmFsaWRhdGlvbkVycm9yKGBGaWxlIHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtRmlsZVRyYW5zZm9ybWF0aW9uID0gKGZpbGU6IEZpbGVUeXBlKTogRmlsZVR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgYmFzZTY0LFxuICAgIGJ1ZmZlcixcbiAgICBkZXNjcmlwdGlvbixcbiAgICBmaWxlSWQsXG4gICAgZmlsZVNpemUsXG4gICAgZmlsZVR5cGUsXG4gICAgaWQsXG4gICAgaXRlbUlkLFxuICAgIGl0ZW1UeXBlLFxuICAgIG5hbWUsXG4gICAgdXJsLFxuICAgIHVzZXJJZFxuICB9ID0gZmlsZTtcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHtcbiAgICAuLi5wYXJzZURvY3VtZW50KGZpbGUpLFxuICAgIC4uLihiYXNlNjQgJiYge2Jhc2U2NH0pLFxuICAgIC4uLihidWZmZXIgJiYge2J1ZmZlcn0pLFxuICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7ZGVzY3JpcHRpb246IHBhcnNlUmVha3RvckNvbnRlbnQoZGVzY3JpcHRpb24pfSksXG4gICAgLi4uKChfa2V5IHx8IGZpbGVJZCkgJiYge2ZpbGVJZDogcGFyc2VJZChfa2V5IHx8IGZpbGVJZCl9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCB8fCBfa2V5IHx8IGZpbGVJZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCB8fCBgZmlsZXMvJHtfa2V5IHx8IGZpbGVJZH1gKX0pLFxuICAgIC4uLihmaWxlU2l6ZSAhPT0gdW5kZWZpbmVkICYmIHtmaWxlU2l6ZTogcGFyc2VOdW0oZmlsZVNpemUpfSksXG4gICAgLi4uKGZpbGVUeXBlICYmIHtmaWxlVHlwZTogZ2V0RmlsZVR5cGUoZmlsZSl9KSxcbiAgICAuLi4oaXRlbUlkICYmIHtpdGVtSWQ6IHBhcnNlSWQoaXRlbUlkKX0pLFxuICAgIC4uLihpdGVtVHlwZSAmJiB7aXRlbVR5cGU6IHBhcnNlUmVha3RvclR5cGUoaXRlbVR5cGUpfSksXG4gICAgLi4uKG5hbWUgJiYge25hbWU6IHBhcnNlU3RyaW5nKG5hbWUsIDE2MCl9KSxcbiAgICAuLi4odXJsICYmIHt1cmw6IHBhcnNlVXJsKHVybCl9KSxcbiAgICAuLi4odXNlcklkICYmIHt1c2VySWQ6IHBhcnNlSWQodXNlcklkKX0pXG4gIH07XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkO1xufTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxP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Q0FDbEIsR0FBR1IsRUFBY1EsQ0FBSSxFQUNyQixHQUFJYSxHQUFVLENBQUMsT0FBQUEsQ0FBTSxFQUNyQixHQUFJQyxHQUFVLENBQUMsT0FBQUEsQ0FBTSxFQUNyQixHQUFJQyxHQUFlLENBQUMsWUFBYXRCLEVBQW9Cc0IsQ0FBVyxDQUFDLEVBQ2pFLElBQUtILEdBQVFJLElBQVcsQ0FBQyxPQUFRN0IsRUFBUXlCLEdBQVFJLENBQU0sQ0FBQyxFQUN4RCxJQUFLTCxHQUFPTyxHQUFNTixHQUFRSSxJQUFXLENBQUMsR0FBSTlCLEVBQWN5QixHQUFPTyxHQUFNLFNBQVNOLEdBQVFJLENBQU0sRUFBRSxDQUFDLEVBQy9GLEdBQUlDLElBQWEsUUFBYSxDQUFDLFNBQVU3QixFQUFTNkIsQ0FBUSxDQUFDLEVBQzNELEdBQUlYLEdBQVksQ0FBQyxTQUFVRCxFQUFZTCxDQUFJLENBQUMsRUFDNUMsR0FBSW1CLEdBQVUsQ0FBQyxPQUFRaEMsRUFBUWdDLENBQU0sQ0FBQyxFQUN0QyxHQUFJQyxHQUFZLENBQUMsU0FBVTFCLEVBQWlCMEIsQ0FBUSxDQUFDLEVBQ3JELEdBQUliLEdBQVEsQ0FBQyxLQUFNbEIsRUFBWWtCLEVBQU0sR0FBRyxDQUFDLEVBQ3pDLEdBQUljLEdBQU8sQ0FBQyxJQUFLL0IsRUFBUytCLENBQUcsQ0FBQyxFQUM5QixHQUFJQyxHQUFVLENBQUMsT0FBUW5DLEVBQVFtQyxDQUFNLENBQUMsQ0FDeEMsQ0FHRiIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAicGFyc2VOdW0iLCAicGFyc2VTdHJpbmciLCAicGFyc2VVcmwiLCAieiIsICJwYXJzZURvY3VtZW50IiwgInBhcnNlUmVha3RvckNvbnRlbnQiLCAicGFyc2VSZWFrdG9yVHlwZSIsICJGaWxlVmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiRmlsZUlucHV0U2NoZW1hIiwgInZhbGlkYXRlRmlsZUlucHV0IiwgImZpbGUiLCAiZXJyb3IiLCAiZmllbGRFcnJvcnMiLCAiZSIsICJmb3JtYXRGaWxlT3V0cHV0IiwgImdldEZpbGVUeXBlIiwgImZpbGVUeXBlIiwgIm5hbWUiLCAibmFtZUFyciIsICJwYXJzZUZpbGUiLCAicGVyZm9ybUZpbGVUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJiYXNlNjQiLCAiYnVmZmVyIiwgImRlc2NyaXB0aW9uIiwgImZpbGVJZCIsICJmaWxlU2l6ZSIsICJpZCIsICJpdGVtSWQiLCAiaXRlbVR5cGUiLCAidXJsIiwgInVzZXJJZCJdCn0K
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as b,parseNum as i,parseString as a,parseUrl as _}from"@nlabs/utils";import{z as e}from"zod";import{parseDocument as v}from"./arangoAdapter";import{removeEmptyKeys as E}from"../utils/adapterUtils";class p extends Error{constructor(r,n){super(r);this.field=n;this.name="ImageValidationError"}}const x=e.object({bucket:e.string().optional(),color:e.string().optional(),imageId:e.string().optional(),height:e.number().optional(),model:e.string().optional(),make:e.string().optional(),s3Options:e.any().optional(),taken:e.number().optional(),thumb:e.string().optional(),fileType:e.string().optional(),type:e.string().optional(),url:e.string().optional(),width:e.number().optional(),name:e.string().optional(),_id:e.string().optional(),_key:e.string().optional(),_rev:e.string().optional(),_oldRev:e.string().optional(),_from:e.string().optional(),_to:e.string().optional()}).passthrough(),z=o=>{try{return x.parse(o)}catch(t){if(t instanceof e.ZodError){const r=t.errors.map(n=>`${n.path.join(".")}: ${n.message}`).join(", ");throw new p(`Image validation failed: ${r}`)}throw t}},A=o=>o,D=o=>{try{return $(o)}catch(t){throw t instanceof p?t:new p(`Image parsing failed: ${t instanceof Error?t.message:"Unknown error"}`)}},$=o=>{const{_id:t,_key:r,bucket:n,color:s,id:m,imageId:g,height:l,model:d,make:c,s3Options:u,taken:f,thumb:y,fileType:I,type:h,url:T,width:k,name:w}=o;return E({...v(o),...r&&{imageId:b(r)},...n&&{bucket:n},...s&&{color:s},...(t||m||r||g)&&{imageId:b(t||m||`images/${r||g}`)},...l!==void 0&&{height:i(l)},...d&&{model:a(d,160)},...c&&{make:a(c,160)},...u&&{s3Options:u},...f!==void 0&&{taken:i(f)},...y&&{thumb:y},...I&&{fileType:a(I,16)},...h&&{type:a(h,16)},...T&&{url:_(T)},...k!==void 0&&{width:i(k)},...w&&{name:a(w,160)}})};export{p as ImageValidationError,A as formatImageOutput,D as parseImage,z as validateImageInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL2ltYWdlQWRhcHRlci50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtwYXJzZUFyYW5nb0lkLCBwYXJzZU51bSwgcGFyc2VTdHJpbmcsIHBhcnNlVXJsfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge3BhcnNlRG9jdW1lbnR9IGZyb20gJy4vYXJhbmdvQWRhcHRlcic7XG5pbXBvcnQge3JlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vdXRpbHMvYWRhcHRlclV0aWxzJztcblxuaW1wb3J0IHR5cGUge0ltYWdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvaW1hZ2VzLnR5cGVzJztcblxuZXhwb3J0IGNsYXNzIEltYWdlVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBmaWVsZD86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdJbWFnZVZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgSW1hZ2VJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgYnVja2V0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNvbG9yOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGltYWdlSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaGVpZ2h0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIG1ha2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgczNPcHRpb25zOiB6LmFueSgpLm9wdGlvbmFsKCksXG4gIHRha2VuOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRodW1iOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpbGVUeXBlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgdXJsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHdpZHRoOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIG5hbWU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVJbWFnZUlucHV0ID0gKGltYWdlOiB1bmtub3duKTogSW1hZ2VUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBJbWFnZUlucHV0U2NoZW1hLnBhcnNlKGltYWdlKTtcbiAgICByZXR1cm4gdmFsaWRhdGVkIGFzIEltYWdlVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBJbWFnZVZhbGlkYXRpb25FcnJvcihgSW1hZ2UgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZmllbGRFcnJvcnN9YCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0SW1hZ2VPdXRwdXQgPSAoaW1hZ2U6IEltYWdlVHlwZSk6IEltYWdlVHlwZSA9PiBpbWFnZTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSW1hZ2UgPSAoaW1hZ2U6IEltYWdlVHlwZSk6IEltYWdlVHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGVyZm9ybUltYWdlVHJhbnNmb3JtYXRpb24oaW1hZ2UpO1xuICAgIHJldHVybiBwYXJzZWQ7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIEltYWdlVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEltYWdlVmFsaWRhdGlvbkVycm9yKGBJbWFnZSBwYXJzaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgfVxufTtcblxuY29uc3QgcGVyZm9ybUltYWdlVHJhbnNmb3JtYXRpb24gPSAoaW1hZ2U6IEltYWdlVHlwZSk6IEltYWdlVHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfaWQsXG4gICAgX2tleSxcbiAgICBidWNrZXQsXG4gICAgY29sb3IsXG4gICAgaWQsXG4gICAgaW1hZ2VJZCxcbiAgICBoZWlnaHQsXG4gICAgbW9kZWwsXG4gICAgbWFrZSxcbiAgICBzM09wdGlvbnMsXG4gICAgdGFrZW4sXG4gICAgdGh1bWIsXG4gICAgZmlsZVR5cGUsXG4gICAgdHlwZSxcbiAgICB1cmwsXG4gICAgd2lkdGgsXG4gICAgbmFtZVxuICB9ID0gaW1hZ2U7XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSByZW1vdmVFbXB0eUtleXMoe1xuICAgIC4uLnBhcnNlRG9jdW1lbnQoaW1hZ2UpLFxuICAgIC4uLihfa2V5ICYmIHtpbWFnZUlkOiBwYXJzZUFyYW5nb0lkKF9rZXkpfSksXG4gICAgLi4uKGJ1Y2tldCAmJiB7YnVja2V0fSksXG4gICAgLi4uKGNvbG9yICYmIHtjb2xvcn0pLFxuICAgIC4uLigoX2lkIHx8IGlkIHx8IF9rZXkgfHwgaW1hZ2VJZCkgJiYge2ltYWdlSWQ6IHBhcnNlQXJhbmdvSWQoX2lkIHx8IGlkIHx8IGBpbWFnZXMvJHtfa2V5IHx8IGltYWdlSWR9YCl9KSxcbiAgICAuLi4oaGVpZ2h0ICE9PSB1bmRlZmluZWQgJiYge2hlaWdodDogcGFyc2VOdW0oaGVpZ2h0KX0pLFxuICAgIC4uLihtb2RlbCAmJiB7bW9kZWw6IHBhcnNlU3RyaW5nKG1vZGVsLCAxNjApfSksXG4gICAgLi4uKG1ha2UgJiYge21ha2U6IHBhcnNlU3RyaW5nKG1ha2UsIDE2MCl9KSxcbiAgICAuLi4oczNPcHRpb25zICYmIHtzM09wdGlvbnN9KSxcbiAgICAuLi4odGFrZW4gIT09IHVuZGVmaW5lZCAmJiB7dGFrZW46IHBhcnNlTnVtKHRha2VuKX0pLFxuICAgIC4uLih0aHVtYiAmJiB7dGh1bWJ9KSxcbiAgICAuLi4oZmlsZVR5cGUgJiYge2ZpbGVUeXBlOiBwYXJzZVN0cmluZyhmaWxlVHlwZSwgMTYpfSksXG4gICAgLi4uKHR5cGUgJiYge3R5cGU6IHBhcnNlU3RyaW5nKHR5cGUsIDE2KX0pLFxuICAgIC4uLih1cmwgJiYge3VybDogcGFyc2VVcmwodXJsKX0pLFxuICAgIC4uLih3aWR0aCAhPT0gdW5kZWZpbmVkICYmIHt3aWR0aDogcGFyc2VOdW0od2lkdGgpfSksXG4gICAgLi4uKG5hbWUgJiYge25hbWU6IHBhcnNlU3RyaW5nKG5hbWUsIDE2MCl9KVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWQ7XG59O1xuXG4iXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFRLGlCQUFBQSxFQUFlLFlBQUFDLEVBQVUsZUFBQUMsRUFBYSxZQUFBQyxNQUFlLGVBQzdELE9BQVEsS0FBQUMsTUFBUSxNQUVoQixPQUFRLGlCQUFBQyxNQUFvQixrQkFDNUIsT0FBUSxtQkFBQUMsTUFBc0Isd0JBSXZCLE1BQU1DLFVBQTZCLEtBQU0sQ0FDOUMsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHNCQUNkLENBQ0YsQ0FFQSxNQUFNQyxFQUFtQk4sRUFBRSxP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QUFVLFFBQWEsQ0FBQyxNQUFPNUIsRUFBUzRCLENBQUssQ0FBQyxFQUNsRCxHQUFJQyxHQUFTLENBQUMsTUFBQUEsQ0FBSyxFQUNuQixHQUFJQyxHQUFZLENBQUMsU0FBVTdCLEVBQVk2QixFQUFVLEVBQUUsQ0FBQyxFQUNwRCxHQUFJQyxHQUFRLENBQUMsS0FBTTlCLEVBQVk4QixFQUFNLEVBQUUsQ0FBQyxFQUN4QyxHQUFJQyxHQUFPLENBQUMsSUFBSzlCLEVBQVM4QixDQUFHLENBQUMsRUFDOUIsR0FBSUMsSUFBVSxRQUFhLENBQUMsTUFBT2pDLEVBQVNpQyxDQUFLLENBQUMsRUFDbEQsR0FBSUMsR0FBUSxDQUFDLEtBQU1qQyxFQUFZaUMsRUFBTSxHQUFHLENBQUMsQ0FDM0MsQ0FBQyxDQUdIIiwKICAibmFtZXMiOiBbInBhcnNlQXJhbmdvSWQiLCAicGFyc2VOdW0iLCAicGFyc2VTdHJpbmciLCAicGFyc2VVcmwiLCAieiIsICJwYXJzZURvY3VtZW50IiwgInJlbW92ZUVtcHR5S2V5cyIsICJJbWFnZVZhbGlkYXRpb25FcnJvciIsICJtZXNzYWdlIiwgImZpZWxkIiwgIkltYWdlSW5wdXRTY2hlbWEiLCAidmFsaWRhdGVJbWFnZUlucHV0IiwgImltYWdlIiwgImVycm9yIiwgImZpZWxkRXJyb3JzIiwgImUiLCAiZm9ybWF0SW1hZ2VPdXRwdXQiLCAicGFyc2VJbWFnZSIsICJwZXJmb3JtSW1hZ2VUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJidWNrZXQiLCAiY29sb3IiLCAiaWQiLCAiaW1hZ2VJZCIsICJoZWlnaHQiLCAibW9kZWwiLCAibWFrZSIsICJzM09wdGlvbnMiLCAidGFrZW4iLCAidGh1bWIiLCAiZmlsZVR5cGUiLCAidHlwZSIsICJ1cmwiLCAid2lkdGgiLCAibmFtZSJdCn0K
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as d,parseId as l}from"@nlabs/utils";import{z as e}from"zod";import{parseDocument as c}from"./arangoAdapter";import{parseFile as y}from"./fileAdapter";import{parseImage as f}from"./imageAdapter";import{removeEmptyKeys as M}from"../utils/adapterUtils";class t extends Error{constructor(o,a){super(o);this.field=a;this.name="MessageValidationError"}}const u=e.object({content:e.string().optional(),conversationId:e.string().optional(),files:e.array(e.any()).optional(),images:e.array(e.any()).optional(),itemId:e.string().optional(),itemType:e.string().optional(),messageId:e.string().optional(),read:e.boolean().optional(),saved:e.boolean().optional(),userId:e.string().optional(),_id:e.string().optional(),_key:e.string().optional(),_rev:e.string().optional(),_oldRev:e.string().optional(),_from:e.string().optional(),_to:e.string().optional()}).passthrough(),A=r=>{try{return u.parse(r)}catch(s){if(s instanceof e.ZodError){const o=s.errors.map(a=>`${a.path.join(".")}: ${a.message}`).join(", ");throw new t(`Message validation failed: ${o}`)}throw s}},$=r=>r,b=r=>{try{return I(r)}catch(s){throw s instanceof t?s:new t(`Message parsing failed: ${s instanceof Error?s.message:"Unknown error"}`)}},I=r=>{const{_id:s,_key:o,content:a,files:n,id:i,images:p,messageId:g,saved:m}=r;return M({...c(r),...a&&{content:a},...Array.isArray(n)&&{files:n.map(y)},...Array.isArray(p)&&{images:p.map(f)},...o&&{messageId:l(o)},...(s||i||o||g)&&{messageId:d(s||i||`messages/${o||g}`)},...m!==void 0&&{saved:!!m}})};export{t as MessageValidationError,$ as formatMessageOutput,b as parseMessage,A as validateMessageInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL21lc3NhZ2VBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7cGFyc2VEb2N1bWVudH0gZnJvbSAnLi9hcmFuZ29BZGFwdGVyJztcbmltcG9ydCB7cGFyc2VGaWxlfSBmcm9tICcuL2ZpbGVBZGFwdGVyJztcbmltcG9ydCB7cGFyc2VJbWFnZX0gZnJvbSAnLi9pbWFnZUFkYXB0ZXInO1xuaW1wb3J0IHtyZW1vdmVFbXB0eUtleXN9IGZyb20gJy4uL3V0aWxzL2FkYXB0ZXJVdGlscyc7XG5cbmltcG9ydCB0eXBlIHtNZXNzYWdlVHlwZX0gZnJvbSAnLi4vdHlwZXMvbWVzc2FnZXMudHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgTWVzc2FnZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBwdWJsaWMgZmllbGQ/OiBzdHJpbmcpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnTWVzc2FnZVZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgTWVzc2FnZUlucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBjb250ZW50OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGNvbnZlcnNhdGlvbklkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGZpbGVzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCksXG4gIGltYWdlczogei5hcnJheSh6LmFueSgpKS5vcHRpb25hbCgpLFxuICBpdGVtSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgaXRlbVR5cGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgbWVzc2FnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHJlYWQ6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHNhdmVkOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB1c2VySWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVNZXNzYWdlSW5wdXQgPSAobWVzc2FnZTogdW5rbm93bik6IE1lc3NhZ2VUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBNZXNzYWdlSW5wdXRTY2hlbWEucGFyc2UobWVzc2FnZSk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBNZXNzYWdlVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBNZXNzYWdlVmFsaWRhdGlvbkVycm9yKGBNZXNzYWdlIHZhbGlkYXRpb24gZmFpbGVkOiAke2ZpZWxkRXJyb3JzfWApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdE1lc3NhZ2VPdXRwdXQgPSAobWVzc2FnZTogTWVzc2FnZVR5cGUpOiBNZXNzYWdlVHlwZSA9PiBtZXNzYWdlO1xuXG5leHBvcnQgY29uc3QgcGFyc2VNZXNzYWdlID0gKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKTogTWVzc2FnZVR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBlcmZvcm1NZXNzYWdlVHJhbnNmb3JtYXRpb24obWVzc2FnZSk7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgTWVzc2FnZVZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBNZXNzYWdlVmFsaWRhdGlvbkVycm9yKGBNZXNzYWdlIHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtTWVzc2FnZVRyYW5zZm9ybWF0aW9uID0gKG1lc3NhZ2U6IE1lc3NhZ2VUeXBlKTogTWVzc2FnZVR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgY29udGVudCxcbiAgICBmaWxlcyxcbiAgICBpZCxcbiAgICBpbWFnZXMsXG4gICAgbWVzc2FnZUlkLFxuICAgIHNhdmVkXG4gIH0gPSBtZXNzYWdlO1xuXG4gIGNvbnN0IHRyYW5zZm9ybWVkID0gcmVtb3ZlRW1wdHlLZXlzKHtcbiAgICAuLi5wYXJzZURvY3VtZW50KG1lc3NhZ2UpLFxuICAgIC4uLihjb250ZW50ICYmIHtjb250ZW50fSksXG4gICAgLi4uKEFycmF5LmlzQXJyYXkoZmlsZXMpICYmIHtmaWxlczogZmlsZXMubWFwKHBhcnNlRmlsZSl9KSxcbiAgICAuLi4oQXJyYXkuaXNBcnJheShpbWFnZXMpICYmIHtpbWFnZXM6IGltYWdlcy5tYXAocGFyc2VJbWFnZSl9KSxcbiAgICAuLi4oX2tleSAmJiB7bWVzc2FnZUlkOiBwYXJzZUlkKF9rZXkpfSksXG4gICAgLi4uKChfaWQgfHwgaWQgfHwgX2tleSB8fCBtZXNzYWdlSWQpICYmIHttZXNzYWdlSWQ6IHBhcnNlQXJhbmdvSWQoX2lkIHx8IGlkIHx8IGBtZXNzYWdlcy8ke19rZXkgfHwgbWVzc2FnZUlkfWApfSksXG4gICAgLi4uKHNhdmVkICE9PSB1bmRlZmluZWQgJiYge3NhdmVkOiAhIXNhdmVkfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHRyYW5zZm9ybWVkO1xufTtcblxuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxpQkFBQUEsRUFBZSxXQUFBQyxNQUFjLGVBQ3JDLE9BQVEsS0FBQUMsTUFBUSxNQUVoQixPQUFRLGlCQUFBQyxNQUFvQixrQkFDNUIsT0FBUSxhQUFBQyxNQUFnQixnQkFDeEIsT0FBUSxjQUFBQyxNQUFpQixpQkFDekIsT0FBUSxtQkFBQUMsTUFBc0Isd0JBSXZCLE1BQU1DLFVBQStCLEtBQU0sQ0FDaEQsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHdCQUNkLENBQ0YsQ0FFQSxNQUFNQyxFQUFxQlIsRUFBRSxPQUFPLENBQ2xDLFFBQVNBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDN0IsZUFBZ0JBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDcEMsTUFBT0EsRUFBRSxNQUFNQSxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFDakMsT0FBUUEsRUFBRSxNQUFNQSxFQUFFLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFDbEMsT0FBUUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM1QixTQUFVQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzlCLFVBQVdBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDL0IsS0FBTUEsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUMzQixNQUFPQSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQzVCLE9BQVFBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDNUIsSUFBS0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUN6QixLQUFNQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzFCLEtBQU1BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDMUIsUUFBU0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM3QixNQUFPQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzNCLElBQUtBLEVBQUUsT0FBTyxFQUFFLFNBQVMsQ0FDM0IsQ0FBQyxFQUFFLFlBQVksRUFFRlMsRUFBd0JILEdBQWtDLENBQ3JFLEdBQUksQ0FFRixPQURrQkUsRUFBbUIsTUFBTUYsQ0FBTyxDQUVwRCxPQUFRSSxFQUFPLENBQ2IsR0FBR0EsYUFBaUJWLEVBQUUsU0FBVSxDQUM5QixNQUFNVyxFQUFjRCxFQUFNLE9BQU8sSUFBS0UsR0FBTSxHQUFHQSxFQUFFLEtBQUssS0FBSyxHQUFHLENBQUMsS0FBS0EsRUFBRSxPQUFPLEVBQUUsRUFBRSxLQUFLLElBQUksRUFDMUYsTUFBTSxJQUFJUCxFQUF1Qiw4QkFBOEJNLENBQVcsRUFBRSxDQUM5RSxDQUNBLE1BQU1ELENBQ1IsQ0FDRixFQUVhRyxFQUF1QlAsR0FBc0NBLEVBRTdEUSxFQUFnQlIsR0FBc0MsQ0FDakUsR0FBSSxDQUVGLE9BRGVTLEVBQTZCVCxDQUFPLENBRXJELE9BQVFJLEVBQU8sQ0FDYixNQUFHQSxhQUFpQkwsRUFDWkssRUFFRixJQUFJTCxFQUF1QiwyQkFBMkJLLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxlQUFlLEVBQUUsQ0FDeEgsQ0FDRixFQUVNSyxFQUFnQ1QsR0FBc0MsQ0FDMUUsS0FBTSxDQUNKLElBQUFVLEVBQ0EsS0FBQUMsRUFDQSxRQUFBQyxFQUNBLE1BQUFDLEVBQ0EsR0FBQUMsRUFDQSxPQUFBQyxFQUNBLFVBQUFDLEVBQ0EsTUFBQUMsQ0FDRixFQUFJakIsRUFZSixPQVZvQkYsRUFBZ0IsQ0FDbEMsR0FBR0gsRUFBY0ssQ0FBTyxFQUN4QixHQUFJWSxHQUFXLENBQUMsUUFBQUEsQ0FBTyxFQUN2QixHQUFJLE1BQU0sUUFBUUMsQ0FBSyxHQUFLLENBQUMsTUFBT0EsRUFBTSxJQUFJakIsQ0FBUyxDQUFDLEVBQ3hELEdBQUksTUFBTSxRQUFRbUIsQ0FBTSxHQUFLLENBQUMsT0FBUUEsRUFBTyxJQUFJbEIsQ0FBVSxDQUFDLEVBQzVELEdBQUljLEdBQVEsQ0FBQyxVQUFXbEIsRUFBUWtCLENBQUksQ0FBQyxFQUNyQyxJQUFLRCxHQUFPSSxHQUFNSCxHQUFRSyxJQUFjLENBQUMsVUFBV3hCLEVBQWNrQixHQUFPSSxHQUFNLFlBQVlILEdBQVFLLENBQVMsRUFBRSxDQUFDLEVBQy9HLEdBQUlDLElBQVUsUUFBYSxDQUFDLE1BQU8sQ0FBQyxDQUFDQSxDQUFLLENBQzVDLENBQUMsQ0FHSCIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAieiIsICJwYXJzZURvY3VtZW50IiwgInBhcnNlRmlsZSIsICJwYXJzZUltYWdlIiwgInJlbW92ZUVtcHR5S2V5cyIsICJNZXNzYWdlVmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiTWVzc2FnZUlucHV0U2NoZW1hIiwgInZhbGlkYXRlTWVzc2FnZUlucHV0IiwgImVycm9yIiwgImZpZWxkRXJyb3JzIiwgImUiLCAiZm9ybWF0TWVzc2FnZU91dHB1dCIsICJwYXJzZU1lc3NhZ2UiLCAicGVyZm9ybU1lc3NhZ2VUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJjb250ZW50IiwgImZpbGVzIiwgImlkIiwgImltYWdlcyIsICJtZXNzYWdlSWQiLCAic2F2ZWQiXQp9Cg==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as w,parseId as s,parseNum as _,parseString as E,parseVarChar as b}from"@nlabs/utils";import{z as t}from"zod";import{parseDocument as k}from"./arangoAdapter";import{parseFile as D}from"./fileAdapter";import{parseReaktorContent as x,parseReaktorDate as $,parseReaktorType as N}from"./reaktorAdapter";import{parseTag as R}from"./tagAdapter";import{removeEmptyKeys as j}from"../utils/adapterUtils";const C=1e5;class p extends Error{constructor(n,e){super(n);this.field=e;this.name="PostValidationError"}}const V=t.object({content:t.string().optional(),endDate:t.number().optional(),files:t.array(t.any()).optional(),groupId:t.string().optional(),postId:t.string().optional(),latitude:t.number().optional(),location:t.string().optional(),longitude:t.number().optional(),name:t.string().optional(),parentId:t.string().optional(),privacy:t.string().optional(),startDate:t.number().optional(),tags:t.array(t.any()).optional(),type:t.string().optional(),userId:t.string().optional(),_id:t.string().optional(),_key:t.string().optional(),_rev:t.string().optional(),_oldRev:t.string().optional(),_from:t.string().optional(),_to:t.string().optional()}).passthrough(),M=r=>{try{return V.parse(r)}catch(o){if(o instanceof t.ZodError){const n=o.errors.map(e=>`${e.path.join(".")}: ${e.message}`).join(", ");throw new p(`Post validation failed: ${n}`)}throw o}},U=r=>r,X=r=>{try{return A(r)}catch(o){throw o instanceof p?o:new p(`Post parsing failed: ${o instanceof Error?o.message:"Unknown error"}`)}},A=r=>{const{_id:o,_key:n,content:e,endDate:d,files:l,groupId:m,id:g,latitude:c,location:u,longitude:f,name:y,parentId:P,postId:a,privacy:I,tags:T,type:h,userId:v}=r;return j({...k(r),...e&&{content:x(e,C)},...d!==void 0&&{endDate:$(d)},...l?.length&&{files:l.map(i=>D(i))},...m&&{groupId:s(m)},...c!==void 0&&{latitude:_(c,15)},...u&&{location:E(u,160)},...f!==void 0&&{longitude:_(f,15)},...y&&{name:E(y,160)},...P&&{parentId:s(P)},...(o||g||n||a)&&{id:w(o||g||`posts/${n||a}`)},...(n||a)&&{postId:s(n||a)},...I&&{privacy:b(I,16)},...T?.length&&{tags:T.map(i=>R(i))},...h&&{type:N(h)},...v&&{userId:s(v)}})};export{p as PostValidationError,U as formatPostOutput,X as parsePost,M as validatePostInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL3Bvc3RBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWQsIHBhcnNlTnVtLCBwYXJzZVN0cmluZywgcGFyc2VWYXJDaGFyfSBmcm9tICdAbmxhYnMvdXRpbHMnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge1Bvc3RUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge3BhcnNlRG9jdW1lbnR9IGZyb20gJy4vYXJhbmdvQWRhcHRlcic7XG5pbXBvcnQge3BhcnNlRmlsZX0gZnJvbSAnLi9maWxlQWRhcHRlcic7XG5pbXBvcnQge1xuICBwYXJzZVJlYWt0b3JDb250ZW50LFxuICBwYXJzZVJlYWt0b3JEYXRlLFxuICBwYXJzZVJlYWt0b3JUeXBlXG59IGZyb20gJy4vcmVha3RvckFkYXB0ZXInO1xuaW1wb3J0IHtwYXJzZVRhZ30gZnJvbSAnLi90YWdBZGFwdGVyJztcbmltcG9ydCB7cmVtb3ZlRW1wdHlLZXlzfSBmcm9tICcuLi91dGlscy9hZGFwdGVyVXRpbHMnO1xuXG5jb25zdCBNQVhfQ09OVEVOVF9MRU5HVEg6IG51bWJlciA9IDEwMDAwMDtcblxuZXhwb3J0IGNsYXNzIFBvc3RWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1Bvc3RWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IFBvc3RJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgY29udGVudDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBlbmREYXRlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGZpbGVzOiB6LmFycmF5KHouYW55KCkpLm9wdGlvbmFsKCksXG4gIGdyb3VwSWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgcG9zdElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxhdGl0dWRlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGxvY2F0aW9uOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxvbmdpdHVkZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHBhcmVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHByaXZhY3k6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgc3RhcnREYXRlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHRhZ3M6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKSxcbiAgdHlwZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB1c2VySWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX3Jldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfb2xkUmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9mcm9tOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVQb3N0SW5wdXQgPSAocG9zdDogdW5rbm93bik6IFBvc3RUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBQb3N0SW5wdXRTY2hlbWEucGFyc2UocG9zdCk7XG4gICAgcmV0dXJuIHZhbGlkYXRlZCBhcyBQb3N0VHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBQb3N0VmFsaWRhdGlvbkVycm9yKGBQb3N0IHZhbGlkYXRpb24gZmFpbGVkOiAke2ZpZWxkRXJyb3JzfWApO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFBvc3RPdXRwdXQgPSAocG9zdDogUG9zdFR5cGUpOiBQb3N0VHlwZSA9PiBwb3N0O1xuXG5leHBvcnQgY29uc3QgcGFyc2VQb3N0ID0gKHBvc3Q6IFBvc3RUeXBlKTogUG9zdFR5cGUgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBlcmZvcm1Qb3N0VHJhbnNmb3JtYXRpb24ocG9zdCk7XG4gICAgcmV0dXJuIHBhcnNlZDtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2YgUG9zdFZhbGlkYXRpb25FcnJvcikge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIHRocm93IG5ldyBQb3N0VmFsaWRhdGlvbkVycm9yKGBQb3N0IHBhcnNpbmcgZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICB9XG59O1xuXG5jb25zdCBwZXJmb3JtUG9zdFRyYW5zZm9ybWF0aW9uID0gKHBvc3Q6IFBvc3RUeXBlKTogUG9zdFR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgY29udGVudCxcbiAgICBlbmREYXRlLFxuICAgIGZpbGVzLFxuICAgIGdyb3VwSWQsXG4gICAgaWQsXG4gICAgbGF0aXR1ZGUsXG4gICAgbG9jYXRpb24sXG4gICAgbG9uZ2l0dWRlLFxuICAgIG5hbWUsXG4gICAgcGFyZW50SWQsXG4gICAgcG9zdElkLFxuICAgIHByaXZhY3ksXG4gICAgdGFncyxcbiAgICB0eXBlLFxuICAgIHVzZXJJZFxuICB9ID0gcG9zdDtcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHJlbW92ZUVtcHR5S2V5cyh7XG4gICAgLi4ucGFyc2VEb2N1bWVudChwb3N0KSxcbiAgICAuLi4oY29udGVudCAmJiB7Y29udGVudDogcGFyc2VSZWFrdG9yQ29udGVudChjb250ZW50LCBNQVhfQ09OVEVOVF9MRU5HVEgpfSksXG4gICAgLi4uKGVuZERhdGUgIT09IHVuZGVmaW5lZCAmJiB7ZW5kRGF0ZTogcGFyc2VSZWFrdG9yRGF0ZShlbmREYXRlKX0pLFxuICAgIC4uLihmaWxlcz8ubGVuZ3RoICYmIHtmaWxlczogZmlsZXMubWFwKChmaWxlKSA9PiBwYXJzZUZpbGUoZmlsZSkpfSksXG4gICAgLi4uKGdyb3VwSWQgJiYge2dyb3VwSWQ6IHBhcnNlSWQoZ3JvdXBJZCl9KSxcbiAgICAuLi4obGF0aXR1ZGUgIT09IHVuZGVmaW5lZCAmJiB7bGF0aXR1ZGU6IHBhcnNlTnVtKGxhdGl0dWRlLCAxNSl9KSxcbiAgICAuLi4obG9jYXRpb24gJiYge2xvY2F0aW9uOiBwYXJzZVN0cmluZyhsb2NhdGlvbiwgMTYwKX0pLFxuICAgIC4uLihsb25naXR1ZGUgIT09IHVuZGVmaW5lZCAmJiB7bG9uZ2l0dWRlOiBwYXJzZU51bShsb25naXR1ZGUsIDE1KX0pLFxuICAgIC4uLihuYW1lICYmIHtuYW1lOiBwYXJzZVN0cmluZyhuYW1lLCAxNjApfSksXG4gICAgLi4uKHBhcmVudElkICYmIHtwYXJlbnRJZDogcGFyc2VJZChwYXJlbnRJZCl9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCB8fCBfa2V5IHx8IHBvc3RJZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCB8fCBgcG9zdHMvJHtfa2V5IHx8IHBvc3RJZH1gKX0pLFxuICAgIC4uLigoX2tleSB8fCBwb3N0SWQpICYmIHtwb3N0SWQ6IHBhcnNlSWQoX2tleSB8fCBwb3N0SWQpfSksXG4gICAgLi4uKHByaXZhY3kgJiYge3ByaXZhY3k6IHBhcnNlVmFyQ2hhcihwcml2YWN5LCAxNil9KSxcbiAgICAuLi4odGFncz8ubGVuZ3RoICYmIHt0YWdzOiB0YWdzLm1hcCgodGFnKSA9PiBwYXJzZVRhZyh0YWcpKX0pLFxuICAgIC4uLih0eXBlICYmIHt0eXBlOiBwYXJzZVJlYWt0b3JUeXBlKHR5cGUpfSksXG4gICAgLi4uKHVzZXJJZCAmJiB7dXNlcklkOiBwYXJzZUlkKHVzZXJJZCl9KVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWQ7XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE9BQVEsaUJBQUFBLEVBQWUsV0FBQUMsRUFBUyxZQUFBQyxFQUFVLGVBQUFDLEVBQWEsZ0JBQUFDLE1BQW1CLGVBQzFFLE9BQVEsS0FBQUMsTUFBUSxNQUdoQixPQUFRLGlCQUFBQyxNQUFvQixrQkFDNUIsT0FBUSxhQUFBQyxNQUFnQixnQkFDeEIsT0FDRSx1QkFBQUMsRUFDQSxvQkFBQUMsRUFDQSxvQkFBQUMsTUFDSyxtQkFDUCxPQUFRLFlBQUFDLE1BQWUsZUFDdkIsT0FBUSxtQkFBQUMsTUFBc0Isd0JBRTlCLE1BQU1DLEVBQTZCLElBRTVCLE1BQU1DLFVBQTRCLEtBQU0sQ0FDN0MsWUFBWUMsRUFBd0JDLEVBQWdCLENBQ2xELE1BQU1ELENBQU8sRUFEcUIsV0FBQUMsRUFFbEMsS0FBSyxLQUFPLHFCQUNkLENBQ0YsQ0FFQSxNQUFNQyxFQUFrQlosRUFBRSxPQUFPLENBQy9CLFFBQVNBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDN0IsUUFBU0EsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM3QixNQUFPQSxFQUFFLE1BQU1BLEVBQUUsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUNqQyxRQUFTQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzdCLE9BQVFBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDNUIsU0FBVUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUM5QixTQUFVQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzlCLFVBQVdBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDL0IsS0FBTUEsRUFB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QUMsRUFDeEQsR0FBSUMsR0FBVyxDQUFDLFFBQVNsQyxFQUFha0MsRUFBUyxFQUFFLENBQUMsRUFDbEQsR0FBSUMsR0FBTSxRQUFVLENBQUMsS0FBTUEsRUFBSyxJQUFLSSxHQUFRaEMsRUFBU2dDLENBQUcsQ0FBQyxDQUFDLEVBQzNELEdBQUlILEdBQVEsQ0FBQyxLQUFNOUIsRUFBaUI4QixDQUFJLENBQUMsRUFDekMsR0FBSUMsR0FBVSxDQUFDLE9BQVF4QyxFQUFRd0MsQ0FBTSxDQUFDLENBQ3hDLENBQUMsQ0FHSCIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAicGFyc2VOdW0iLCAicGFyc2VTdHJpbmciLCAicGFyc2VWYXJDaGFyIiwgInoiLCAicGFyc2VEb2N1bWVudCIsICJwYXJzZUZpbGUiLCAicGFyc2VSZWFrdG9yQ29udGVudCIsICJwYXJzZVJlYWt0b3JEYXRlIiwgInBhcnNlUmVha3RvclR5cGUiLCAicGFyc2VUYWciLCAicmVtb3ZlRW1wdHlLZXlzIiwgIk1BWF9DT05URU5UX0xFTkdUSCIsICJQb3N0VmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiUG9zdElucHV0U2NoZW1hIiwgInZhbGlkYXRlUG9zdElucHV0IiwgInBvc3QiLCAiZXJyb3IiLCAiZmllbGRFcnJvcnMiLCAiZm9ybWF0UG9zdE91dHB1dCIsICJwYXJzZVBvc3QiLCAicGVyZm9ybVBvc3RUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJjb250ZW50IiwgImVuZERhdGUiLCAiZmlsZXMiLCAiZ3JvdXBJZCIsICJpZCIsICJsYXRpdHVkZSIsICJsb2NhdGlvbiIsICJsb25naXR1ZGUiLCAibmFtZSIsICJwYXJlbnRJZCIsICJwb3N0SWQiLCAicHJpdmFjeSIsICJ0YWdzIiwgInR5cGUiLCAidXNlcklkIiwgImZpbGUiLCAidGFnIl0KfQo=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseId as a,parseNum as i,parseString as o,parseUrl as s,parseVarChar as d}from"@nlabs/utils";class n extends Error{constructor(t,m){super(t);this.field=m;this.name="ReaktorValidationError"}}const w=(r,e=500)=>{try{return c(r,e)}catch(t){throw new n(`Content validation failed: ${t instanceof Error?t.message:"Unknown error"}`,"content")}},R=r=>{try{return u(r)}catch(e){throw new n(`Date validation failed: ${e instanceof Error?e.message:"Unknown error"}`,"date")}},h=r=>{try{return f(r)}catch(e){throw new n(`Item ID validation failed: ${e instanceof Error?e.message:"Unknown error"}`,"itemId")}},x=r=>{try{return p(r)}catch(e){throw new n(`Name validation failed: ${e instanceof Error?e.message:"Unknown error"}`,"name")}},v=r=>{try{return g(r)}catch(e){throw new n(`Type validation failed: ${e instanceof Error?e.message:"Unknown error"}`,"type")}},U=r=>{try{return l(r)}catch(e){throw new n(`URL validation failed: ${e instanceof Error?e.message:"Unknown error"}`,"url")}},c=(r,e=500)=>r?o(r,e):void 0,u=r=>r?i(r,13):void 0,f=r=>r?a(r):void 0,p=r=>r?o(r,160):void 0,g=r=>r?d(r,160):void 0,l=r=>r?s(r):void 0;export{n as ReaktorValidationError,c as parseReaktorContent,u as parseReaktorDate,f as parseReaktorItemId,p as parseReaktorName,g as parseReaktorType,l as parseReaktorUrl,w as validateReaktorContent,R as validateReaktorDate,h as validateReaktorItemId,x as validateReaktorName,v as validateReaktorType,U as validateReaktorUrl};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL3JlYWt0b3JBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlSWQsIHBhcnNlTnVtLCBwYXJzZVN0cmluZywgcGFyc2VVcmwsIHBhcnNlVmFyQ2hhcn0gZnJvbSAnQG5sYWJzL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIFJlYWt0b3JWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1JlYWt0b3JWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVJlYWt0b3JDb250ZW50ID0gKGNvbnRlbnQ/OiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyID0gNTAwKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VSZWFrdG9yQ29udGVudChjb250ZW50LCBsZW5ndGgpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFJlYWt0b3JWYWxpZGF0aW9uRXJyb3IoYENvbnRlbnQgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCwgJ2NvbnRlbnQnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUmVha3RvckRhdGUgPSAoZGF0ZT86IG51bWJlcik6IG51bWJlciB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlUmVha3RvckRhdGUoZGF0ZSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgUmVha3RvclZhbGlkYXRpb25FcnJvcihgRGF0ZSB2YWxpZGF0aW9uIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gLCAnZGF0ZScpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVSZWFrdG9ySXRlbUlkID0gKGl0ZW1JZD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHBhcnNlUmVha3Rvckl0ZW1JZChpdGVtSWQpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFJlYWt0b3JWYWxpZGF0aW9uRXJyb3IoYEl0ZW0gSUQgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCwgJ2l0ZW1JZCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVSZWFrdG9yTmFtZSA9IChuYW1lPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VSZWFrdG9yTmFtZShuYW1lKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IG5ldyBSZWFrdG9yVmFsaWRhdGlvbkVycm9yKGBOYW1lIHZhbGlkYXRpb24gZmFpbGVkOiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWAsICduYW1lJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVJlYWt0b3JUeXBlID0gKHR5cGU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZVJlYWt0b3JUeXBlKHR5cGUpO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IFJlYWt0b3JWYWxpZGF0aW9uRXJyb3IoYFR5cGUgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCwgJ3R5cGUnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUmVha3RvclVybCA9ICh1cmw/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBwYXJzZVJlYWt0b3JVcmwodXJsKTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IG5ldyBSZWFrdG9yVmFsaWRhdGlvbkVycm9yKGBVUkwgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCwgJ3VybCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFrdG9yQ29udGVudCA9IChjb250ZW50Pzogc3RyaW5nLCBsZW5ndGg6IG51bWJlciA9IDUwMCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICAoY29udGVudCA/IHBhcnNlU3RyaW5nKGNvbnRlbnQsIGxlbmd0aCkgOiB1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgcGFyc2VSZWFrdG9yRGF0ZSA9IChkYXRlPzogbnVtYmVyKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+XG4gIChkYXRlID8gcGFyc2VOdW0oZGF0ZSwgMTMpIDogdW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlUmVha3Rvckl0ZW1JZCA9IChpdGVtSWQ/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgKGl0ZW1JZCA/IHBhcnNlSWQoaXRlbUlkKSA6IHVuZGVmaW5lZCk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZVJlYWt0b3JOYW1lID0gKG5hbWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgKG5hbWUgPyBwYXJzZVN0cmluZyhuYW1lLCAxNjApIDogdW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlUmVha3RvclR5cGUgPSAodHlwZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PlxuICAodHlwZSA/IHBhcnNlVmFyQ2hhcih0eXBlLCAxNjApIDogdW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlUmVha3RvclVybCA9ICh1cmw/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT5cbiAgKHVybCA/IHBhcnNlVXJsKHVybCkgOiB1bmRlZmluZWQpO1xuIl0sCiAgIm1hcHBpbmdzIjogIkFBQUEsT0FBUSxXQUFBQSxFQUFTLFlBQUFDLEVBQVUsZUFBQUMsRUFBYSxZQUFBQyxFQUFVLGdCQUFBQyxNQUFtQixlQUU5RCxNQUFNQyxVQUErQixLQUFNLENBQ2hELFlBQVlDLEVBQXdCQyxFQUFnQixDQUNsRCxNQUFNRCxDQUFPLEVBRHFCLFdBQUFDLEVBRWxDLEtBQUssS0FBTyx3QkFDZCxDQUNGLENBRU8sTUFBTUMsRUFBeUIsQ0FBQ0MsRUFBa0JDLEVBQWlCLE1BQTRCLENBQ3BHLEdBQUksQ0FDRixPQUFPQyxFQUFvQkYsRUFBU0MsQ0FBTSxDQUM1QyxPQUFRRSxFQUFPLENBQ2IsTUFBTSxJQUFJUCxFQUF1Qiw4QkFBOEJPLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxlQUFlLEdBQUksU0FBUyxDQUN0SSxDQUNGLEVBRWFDLEVBQXVCQyxHQUFzQyxDQUN4RSxHQUFJLENBQ0YsT0FBT0MsRUFBaUJELENBQUksQ0FDOUIsT0FBUUYsRUFBTyxDQUNiLE1BQU0sSUFBSVAsRUFBdUIsMkJBQTJCTyxhQUFpQixNQUFRQSxFQUFNLFFBQVUsZUFBZSxHQUFJLE1BQU0sQ0FDaEksQ0FDRixFQUVhSSxFQUF5QkMsR0FBd0MsQ0FDNUUsR0FBSSxDQUNGLE9BQU9DLEVBQW1CRCxDQUFNLENBQ2xDLE9BQVFMLEVBQU8sQ0FDYixNQUFNLElBQUlQLEVBQXVCLDhCQUE4Qk8sYUFBaUIsTUFBUUEsRUFBTSxRQUFVLGVBQWUsR0FBSSxRQUFRLENBQ3JJLENBQ0YsRUFFYU8sRUFBdUJDLEdBQXNDLENBQ3hFLEdBQUksQ0FDRixPQUFPQyxFQUFpQkQsQ0FBSSxDQUM5QixPQUFRUixFQUFPLENBQ2IsTUFBTSxJQUFJUCxFQUF1QiwyQkFBMkJPLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxlQUFlLEdBQUksTUFBTSxDQUNoSSxDQUNGLEVBRWFVLEVBQXVCQyxHQUFzQyxDQUN4RSxHQUFJLENBQ0YsT0FBT0MsRUFBaUJELENBQUksQ0FDOUIsT0FBUVgsRUFBTyxDQUNiLE1BQU0sSUFBSVAsRUFBdUIsMkJBQTJCTyxhQUFpQixNQUFRQSxFQUFNLFFBQVUsZUFBZSxHQUFJLE1BQU0sQ0FDaEksQ0FDRixFQUVhYSxFQUFzQkMsR0FBcUMsQ0FDdEUsR0FBSSxDQUNGLE9BQU9DLEVBQWdCRCxDQUFHLENBQzVCLE9BQVFkLEVBQU8sQ0FDYixNQUFNLElBQUlQLEVBQXVCLDBCQUEwQk8sYUFBaUIsTUFBUUEsRUFBTSxRQUFVLGVBQWUsR0FBSSxLQUFLLENBQzlILENBQ0YsRUFFYUQsRUFBc0IsQ0FBQ0YsRUFBa0JDLEVBQWlCLE1BQ3BFRCxFQUFVUCxFQUFZTyxFQUFTQyxDQUFNLEVBQUksT0FFL0JLLEVBQW9CRCxHQUM5QkEsRUFBT2IsRUFBU2EsRUFBTSxFQUFFLEVBQUksT0FFbEJJLEVBQXNCRCxHQUNoQ0EsRUFBU2pCLEVBQVFpQixDQUFNLEVBQUksT0FFakJJLEVBQW9CRCxHQUM5QkEsRUFBT2xCLEVBQVlrQixFQUFNLEdBQUcsRUFBSSxPQUV0QkksRUFBb0JELEdBQzlCQSxFQUFPbkIsRUFBYW1CLEVBQU0sR0FBRyxFQUFJLE9BRXZCSSxFQUFtQkQsR0FDN0JBLEVBQU12QixFQUFTdUIsQ0FBRyxFQUFJIiwKICAibmFtZXMiOiBbInBhcnNlSWQiLCAicGFyc2VOdW0iLCAicGFyc2VTdHJpbmciLCAicGFyc2VVcmwiLCAicGFyc2VWYXJDaGFyIiwgIlJlYWt0b3JWYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJmaWVsZCIsICJ2YWxpZGF0ZVJlYWt0b3JDb250ZW50IiwgImNvbnRlbnQiLCAibGVuZ3RoIiwgInBhcnNlUmVha3RvckNvbnRlbnQiLCAiZXJyb3IiLCAidmFsaWRhdGVSZWFrdG9yRGF0ZSIsICJkYXRlIiwgInBhcnNlUmVha3RvckRhdGUiLCAidmFsaWRhdGVSZWFrdG9ySXRlbUlkIiwgIml0ZW1JZCIsICJwYXJzZVJlYWt0b3JJdGVtSWQiLCAidmFsaWRhdGVSZWFrdG9yTmFtZSIsICJuYW1lIiwgInBhcnNlUmVha3Rvck5hbWUiLCAidmFsaWRhdGVSZWFrdG9yVHlwZSIsICJ0eXBlIiwgInBhcnNlUmVha3RvclR5cGUiLCAidmFsaWRhdGVSZWFrdG9yVXJsIiwgInVybCIsICJwYXJzZVJlYWt0b3JVcmwiXQp9Cg==
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as f,parseId as n,parseString as l}from"@nlabs/utils";import{z as t}from"zod";import{parseDocument as I}from"./arangoAdapter";import{parseReaktorContent as _,parseReaktorType as u}from"./reaktorAdapter";import{removeEmptyKeys as k}from"../utils/adapterUtils";class s extends Error{constructor(a,i){super(a);this.field=i;this.name="TagValidationError"}}const h=t.object({_id:t.string().optional(),_key:t.string().optional(),category:t.string().max(160).optional(),description:t.string().optional(),id:t.string().optional(),name:t.string().max(160).optional(),tagBy:t.string().optional(),tagId:t.string().optional(),userId:t.string().optional()}).passthrough(),b=r=>{try{return h.parse(r)}catch(e){if(e instanceof t.ZodError){const a=e.errors.map(i=>`${i.path.join(".")}: ${i.message}`).join(", ");throw new s(`Tag validation failed: ${a}`)}throw e}},R=r=>r,w=r=>{try{return x(r)}catch(e){throw e instanceof s?e:new s(`Tag parsing failed: ${e instanceof Error?e.message:"Unknown error"}`)}},x=r=>{const{_id:e,_key:a,category:i,description:p,id:d,name:g,tagBy:T,tagId:c,userId:y}=r,m={...I(r),...i&&{category:u(i)},...p&&{description:_(p)},...(e||d)&&{id:f(e||d)},...(a||c)&&{tagId:n(a||c)},...g&&{name:l(g,160)},...T&&{tagBy:n(T)},...y&&{userId:n(y)}},o=k(m);return r._id?(o.id=r._id,o._id=r._id):r.id&&!o.id&&(o.id=r.id,o._id=r.id),r._key?(o.tagId=r._key,o._key=r._key):r.tagId&&!o.tagId&&(o.tagId=r.tagId,o._key=r.tagId),r.tagId&&!o._key&&(o._key=r.tagId),r.id&&!o._id&&(o._id=r.id),o},S=r=>w(r);export{s as TagValidationError,R as formatTagOutput,w as parseTag,S as parseTagLegacy,b as validateTagInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL3RhZ0FkYXB0ZXIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7cGFyc2VBcmFuZ29JZCwgcGFyc2VJZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7VGFnVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtwYXJzZURvY3VtZW50fSBmcm9tICcuL2FyYW5nb0FkYXB0ZXInO1xuaW1wb3J0IHtwYXJzZVJlYWt0b3JDb250ZW50LCBwYXJzZVJlYWt0b3JUeXBlfSBmcm9tICcuL3JlYWt0b3JBZGFwdGVyJztcbmltcG9ydCB7cmVtb3ZlRW1wdHlLZXlzfSBmcm9tICcuLi91dGlscy9hZGFwdGVyVXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgVGFnVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIHB1YmxpYyBmaWVsZD86IHN0cmluZykge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdUYWdWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IFRhZ0lucHV0U2NoZW1hID0gei5vYmplY3Qoe1xuICBfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2tleTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHRhZ0J5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHRhZ0lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVUYWdJbnB1dCA9ICh0YWc6IHVua25vd24pOiBUYWdUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBUYWdJbnB1dFNjaGVtYS5wYXJzZSh0YWcpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgVGFnVHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGRFcnJvcnMgPSBlcnJvci5lcnJvcnMubWFwKChlKSA9PiBgJHtlLnBhdGguam9pbignLicpfTogJHtlLm1lc3NhZ2V9YCkuam9pbignLCAnKTtcbiAgICAgIHRocm93IG5ldyBUYWdWYWxpZGF0aW9uRXJyb3IoYFRhZyB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUYWdPdXRwdXQgPSAodGFnOiBUYWdUeXBlKTogVGFnVHlwZSA9PiB0YWc7XG5cbmV4cG9ydCBjb25zdCBwYXJzZVRhZyA9ICh0YWc6IFRhZ1R5cGUpOiBUYWdUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJzZWQgPSBwZXJmb3JtVGFnVHJhbnNmb3JtYXRpb24odGFnKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBUYWdWYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVGFnVmFsaWRhdGlvbkVycm9yKGBUYWcgcGFyc2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1UYWdUcmFuc2Zvcm1hdGlvbiA9ICh0YWc6IFRhZ1R5cGUpOiBUYWdUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGNhdGVnb3J5LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGlkLFxuICAgIG5hbWUsXG4gICAgdGFnQnksXG4gICAgdGFnSWQsXG4gICAgdXNlcklkXG4gIH0gPSB0YWc7XG5cbiAgY29uc3QgdHJhbnNmb3JtZWQgPSB7XG4gICAgLi4ucGFyc2VEb2N1bWVudCh0YWcpLFxuICAgIC4uLihjYXRlZ29yeSAmJiB7Y2F0ZWdvcnk6IHBhcnNlUmVha3RvclR5cGUoY2F0ZWdvcnkpfSksXG4gICAgLi4uKGRlc2NyaXB0aW9uICYmIHtkZXNjcmlwdGlvbjogcGFyc2VSZWFrdG9yQ29udGVudChkZXNjcmlwdGlvbil9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCl9KSxcbiAgICAuLi4oKF9rZXkgfHwgdGFnSWQpICYmIHt0YWdJZDogcGFyc2VJZChfa2V5IHx8IHRhZ0lkKX0pLFxuICAgIC4uLihuYW1lICYmIHtuYW1lOiBwYXJzZVN0cmluZyhuYW1lLCAxNjApfSksXG4gICAgLi4uKHRhZ0J5ICYmIHt0YWdCeTogcGFyc2VJZCh0YWdCeSl9KSxcbiAgICAuLi4odXNlcklkICYmIHt1c2VySWQ6IHBhcnNlSWQodXNlcklkKX0pXG4gIH07XG5cbiAgY29uc3QgcmVzdWx0ID0gcmVtb3ZlRW1wdHlLZXlzKHRyYW5zZm9ybWVkKTtcblxuICBpZih0YWcuX2lkKSB7XG4gICAgcmVzdWx0LmlkID0gdGFnLl9pZDtcbiAgICByZXN1bHQuX2lkID0gdGFnLl9pZDtcbiAgfSBlbHNlIGlmKHRhZy5pZCAmJiAhcmVzdWx0LmlkKSB7XG4gICAgcmVzdWx0LmlkID0gdGFnLmlkO1xuICAgIHJlc3VsdC5faWQgPSB0YWcuaWQ7XG4gIH1cblxuICBpZih0YWcuX2tleSkge1xuICAgIHJlc3VsdC50YWdJZCA9IHRhZy5fa2V5O1xuICAgIHJlc3VsdC5fa2V5ID0gdGFnLl9rZXk7XG4gIH0gZWxzZSBpZih0YWcudGFnSWQgJiYgIXJlc3VsdC50YWdJZCkge1xuICAgIHJlc3VsdC50YWdJZCA9IHRhZy50YWdJZDtcbiAgICByZXN1bHQuX2tleSA9IHRhZy50YWdJZDtcbiAgfVxuXG4gIGlmKHRhZy50YWdJZCAmJiAhcmVzdWx0Ll9rZXkpIHtcbiAgICByZXN1bHQuX2tleSA9IHRhZy50YWdJZDtcbiAgfVxuXG4gIGlmKHRhZy5pZCAmJiAhcmVzdWx0Ll9pZCkge1xuICAgIHJlc3VsdC5faWQgPSB0YWcuaWQ7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVGFnTGVnYWN5ID0gKHRhZzogVGFnVHlwZSk6IFRhZ1R5cGUgPT4gcGFyc2VUYWcodGFnKTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFRLGlCQUFBQSxFQUFlLFdBQUFDLEVBQVMsZUFBQUMsTUFBa0IsZUFDbEQsT0FBUSxLQUFBQyxNQUFRLE1BR2hCLE9BQVEsaUJBQUFDLE1BQW9CLGtCQUM1QixPQUFRLHVCQUFBQyxFQUFxQixvQkFBQUMsTUFBdUIsbUJBQ3BELE9BQVEsbUJBQUFDLE1BQXNCLHdCQUV2QixNQUFNQyxVQUEyQixLQUFNLENBQzVDLFlBQVlDLEVBQXdCQyxFQUFnQixDQUNsRCxNQUFNRCxDQUFPLEVBRHFCLFdBQUFDLEVBRWxDLEtBQUssS0FBTyxvQkFDZCxDQUNGLENBRUEsTUFBTUMsRUFBaUJSLEVBQUUsT0FBTyxDQUM5QixJQUFLQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQ3pCLEtBQU1BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDMUIsU0FBVUEsRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUUsU0FBUyxFQUN2QyxZQUFhQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQ2pDLEdBQUlBLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDeEIsS0FBTUEsRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLEVBQUUsU0FBUyxFQUNuQyxNQUFPQSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQzNCLE1BQU9BLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFDM0IsT0FBUUEsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUM5QixDQUFDLEVBQUUsWUFBWSxFQUVGUyxFQUFvQkMsR0FBMEIsQ0FDekQsR0FBSSxDQUVGLE9BRGtCRixFQUFlLE1BQU1FLENBQUcsQ0FFNUMsT0FBUUMsRUFBTyxDQUNiLEdBQUdBLGFBQWlCWCxFQUFFLFNBQVUsQ0FDOUIsTUFBTVksRUFBY0QsRUFBTSxPQUFPLElBQUtFLEdBQU0sR0FBR0EsRUFBRSxLQUFLLEtBQUssR0FBRyxDQUFDLEtBQUtBLEVBQUUsT0FBTyxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQzFGLE1BQU0sSUFBSVIsRUFBbUIsMEJBQTBCTyxDQUFXLEVBQUUsQ0FDdEUsQ0FDQSxNQUFNRCxDQUNSLENBQ0YsRUFFYUcsRUFBbUJKLEdBQTBCQSxFQUU3Q0ssRUFBWUwsR0FBMEIsQ0FDakQsR0FBSSxDQUVGLE9BRGVNLEVBQXlCTixDQUFHLENBRTdDLE9BQVFDLEVBQU8sQ0FDYixNQUFHQSxhQUFpQk4sRUFDWk0sRUFFRixJQUFJTixFQUFtQix1QkFBdUJNLGFBQWlCLE1BQVFBLEVBQU0sUUFBVSxlQUFlLEVBQUUsQ0FDaEgsQ0FDRixFQUVNSyxFQUE0Qk4sR0FBMEIsQ0FDMUQsS0FBTSxDQUNKLElBQUFPLEVBQ0EsS0FBQUMsRUFDQSxTQUFBQyxFQUNBLFlBQUFDLEVBQ0EsR0FBQUMsRUFDQSxLQUFBQyxFQUNBLE1BQUFDLEVBQ0EsTUFBQUMsRUFDQSxPQUFBQyxDQUNGLEVBQUlmLEVBRUVnQixFQUFjLENBQ2xCLEdBQUd6QixFQUFjUyxDQUFHLEVBQ3BCLEdBQUlTLEdBQVksQ0FBQyxTQUFVaEIsRUFBaUJnQixDQUFRLENBQUMsRUFDckQsR0FBSUMsR0FBZSxDQUFDLFlBQWFsQixFQUFvQmtCLENBQVcsQ0FBQyxFQUNqRSxJQUFLSCxHQUFPSSxJQUFPLENBQUMsR0FBSXhCLEVBQWNvQixHQUFPSSxDQUFFLENBQUMsRUFDaEQsSUFBS0gsR0FBUU0sSUFBVSxDQUFDLE1BQU8xQixFQUFRb0IsR0FBUU0sQ0FBSyxDQUFDLEVBQ3JELEdBQUlGLEdBQVEsQ0FBQyxLQUFNdkIsRUFBWXVCLEVBQU0sR0FBRyxDQUFDLEVBQ3pDLEdBQUlDLEdBQVMsQ0FBQyxNQUFPekIsRUFBUXlCLENBQUssQ0FBQyxFQUNuQyxHQUFJRSxHQUFVLENBQUMsT0FBUTNCLEVBQVEyQixDQUFNLENBQUMsQ0FDeEMsRUFFTUUsRUFBU3ZCLEVBQWdCc0IsQ0FBVyxFQUUxQyxPQUFHaEIsRUFBSSxLQUNMaUIsRUFBTyxHQUFLakIsRUFBSSxJQUNoQmlCLEVBQU8sSUFBTWpCLEVBQUksS0FDVEEsRUFBSSxJQUFNLENBQUNpQixFQUFPLEtBQzFCQSxFQUFPLEdBQUtqQixFQUFJLEdBQ2hCaUIsRUFBTyxJQUFNakIsRUFBSSxJQUdoQkEsRUFBSSxNQUNMaUIsRUFBTyxNQUFRakIsRUFBSSxLQUNuQmlCLEVBQU8sS0FBT2pCLEVBQUksTUFDVkEsRUFBSSxPQUFTLENBQUNpQixFQUFPLFFBQzdCQSxFQUFPLE1BQVFqQixFQUFJLE1BQ25CaUIsRUFBTyxLQUFPakIsRUFBSSxPQUdqQkEsRUFBSSxPQUFTLENBQUNpQixFQUFPLE9BQ3RCQSxFQUFPLEtBQU9qQixFQUFJLE9BR2pCQSxFQUFJLElBQU0sQ0FBQ2lCLEVBQU8sTUFDbkJBLEVBQU8sSUFBTWpCLEVBQUksSUFHWmlCLENBQ1QsRUFFYUMsRUFBa0JsQixHQUEwQkssRUFBU0wsQ0FBRyIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAieiIsICJwYXJzZURvY3VtZW50IiwgInBhcnNlUmVha3RvckNvbnRlbnQiLCAicGFyc2VSZWFrdG9yVHlwZSIsICJyZW1vdmVFbXB0eUtleXMiLCAiVGFnVmFsaWRhdGlvbkVycm9yIiwgIm1lc3NhZ2UiLCAiZmllbGQiLCAiVGFnSW5wdXRTY2hlbWEiLCAidmFsaWRhdGVUYWdJbnB1dCIsICJ0YWciLCAiZXJyb3IiLCAiZmllbGRFcnJvcnMiLCAiZSIsICJmb3JtYXRUYWdPdXRwdXQiLCAicGFyc2VUYWciLCAicGVyZm9ybVRhZ1RyYW5zZm9ybWF0aW9uIiwgIl9pZCIsICJfa2V5IiwgImNhdGVnb3J5IiwgImRlc2NyaXB0aW9uIiwgImlkIiwgIm5hbWUiLCAidGFnQnkiLCAidGFnSWQiLCAidXNlcklkIiwgInRyYW5zZm9ybWVkIiwgInJlc3VsdCIsICJwYXJzZVRhZ0xlZ2FjeSJdCn0K
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{parseArangoId as W,parseChar as X,parseEmail as Y,parseId as ee,parseNum as d,parseString as B,parseVarChar as n}from"@nlabs/utils";import{z as e}from"zod";import{parseDocument as re}from"./arangoAdapter";import{parseReaktorDate as H,parseReaktorItemId as te,parseReaktorName as ie,parseReaktorType as ne}from"./reaktorAdapter";import{parseTag as oe}from"./tagAdapter";import{removeEmptyKeys as ae}from"../utils/adapterUtils";class s extends Error{constructor(o,a){super(o);this.field=a;this.name="UserValidationError"}}const se=e.object({_id:e.string().optional(),_key:e.string().optional(),active:e.boolean().optional(),bankId:e.string().max(160).optional(),city:e.string().max(160).optional(),country:e.string().length(2).optional(),currency:e.string().length(3).optional(),deviceToken:e.string().max(160).optional(),dob:e.number().optional(),email:e.string().email().optional(),first:e.string().max(160).optional(),gender:e.string().length(1).optional(),id:e.string().optional(),imageId:e.string().optional(),last:e.string().max(160).optional(),lastActive:e.number().optional(),locale:e.string().max(5).optional(),mailingList:e.boolean().optional(),name:e.string().max(160).optional(),password:e.string().max(160).optional(),phone:e.string().max(20).optional(),salt:e.string().max(160).optional(),state:e.string().length(2).optional(),street1:e.string().max(160).optional(),street2:e.string().max(160).optional(),stripeAccountId:e.string().max(160).optional(),stripeCustomerId:e.string().max(160).optional(),tags:e.array(e.any()).optional(),timezone:e.string().max(160).optional(),type:e.string().max(160).optional(),userAccess:e.number().optional(),userId:e.string().optional(),username:e.string().max(160).optional(),verifiedEmail:e.boolean().optional(),verifiedEmailCode:e.number().optional(),verifiedEmailExpires:e.number().optional(),verifiedPhone:e.boolean().optional(),verifiedPhoneExpires:e.number().optional(),verifiedSmsCode:e.number().optional(),zip:e.string().max(20).optional()}).passthrough(),de=r=>{if(!r)return;const t=r.replace(/\D/g,"");if(t.length<10||t.length>15)throw new s("Invalid phone number format","phone");return`+${t}`},pe=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[A-Z]{2}$/.test(t))throw new s("Country must be a 2-letter ISO code","country");return t},le=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[A-Z]{2}$/.test(t))throw new s("State must be a 2-letter code","state");return t},me=r=>{if(!r)return;const t=r.toUpperCase();if(!/^[MF]$/.test(t))throw new s("Gender must be M or F","gender");return t},J=new Map,Ie=r=>{try{return se.parse(r)}catch(t){if(t instanceof e.ZodError){const o=t.errors.map(a=>`${a.path.join(".")}: ${a.message}`).join(", ");throw new s(`User validation failed: ${o}`)}throw t}},Ue=r=>{const{password:t,salt:o,verifiedEmailCode:a,verifiedSmsCode:m,...p}=r;return p},ce=r=>{try{return fe(r)}catch(t){throw t instanceof s?t:new s(`User parsing failed: ${t instanceof Error?t.message:"Unknown error"}`)}},fe=r=>{const{_id:t,_key:o,active:a,bankId:m,city:p,country:u,currency:g,deviceToken:y,dob:v,email:h,first:x,gender:I,id:U,imageId:b,last:E,lastActive:C,locale:k,mailingList:w,name:T,password:_,phone:A,salt:S,state:z,street1:$,street2:P,stripeAccountId:L,stripeCustomerId:R,tags:j,timezone:D,type:M,userAccess:c,userId:l,username:V,verifiedEmail:Z,verifiedEmailCode:F,verifiedEmailExpires:G,verifiedPhone:N,verifiedPhoneExpires:O,verifiedSmsCode:K,zip:q}=r,Q={...re(r),...a!==void 0&&{active:!!a},...m&&{bankId:n(m,160)},...p&&{city:n(p,160)},...u&&{country:pe(u)},...g&&{currency:X(g,3).toUpperCase()},...y&&{deviceToken:n(y,160)},...v!==void 0&&{dob:H(v)},...h&&{email:Y(h)},...x&&{first:n(x,160)},...I&&{gender:me(I)},...(U||t||o||l)&&{id:W(U||t||`users/${o||l}`)},...b&&{imageId:te(b)},...E&&{last:n(E,160)},...C!==void 0&&{lastActive:H(C)},...k&&{locale:B(k,5)},...w!==void 0&&{mailingList:!!w},...T&&{name:ie(T)},..._&&{password:n(_,160)},...A&&{phone:de(A)},...S&&{salt:n(S,160)},...z&&{state:le(z)},...$&&{street1:n($,160)},...P&&{street2:n(P,160)},...L&&{stripeAccountId:n(L,160)},...R&&{stripeCustomerId:n(R,160)},...j?.length&&{tags:j.filter(f=>!!f).map(f=>oe(f))},...D&&{timezone:B(D,160)},...M&&{type:ne(M)},...c!==void 0&&{userAccess:c?d(c):0},...(l||o)&&{userId:ee(o||l)},...V&&{username:n(V,160)},...Z!==void 0&&{verifiedEmail:!!Z},...F!==void 0&&{verifiedEmailCode:d(F,10)},...G!==void 0&&{verifiedEmailExpires:d(G,10)},...N!==void 0&&{verifiedPhone:!!N},...O!==void 0&&{verifiedPhoneExpires:d(O,10)},...K!==void 0&&{verifiedSmsCode:d(K,10)},...q&&{zip:n(q,20)}},i=ae(Q);return r._id?(i.id=r._id,i._id=r._id):r.id&&!i.id&&(i.id=r.id,i._id=r.id),r._key?(i.userId=r._key,i._key=r._key):r.userId&&!i.userId&&(i.userId=r.userId,i._key=r.userId),r.userId&&!i._key&&(i._key=r.userId),r.id&&!i._id&&(i._id=r.id),i},be=()=>{J.clear()},Ee=()=>J.size;const Ce=r=>ce(r);export{s as UserValidationError,be as clearUserCache,Ue as formatUserOutput,Ee as getUserCacheSize,ce as parseUser,Ce as parseUserLegacy,J as userCache,Ie as validateUserInput};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FkYXB0ZXJzL3VzZXJBZGFwdGVyLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJpbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlQ2hhciwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VOdW0sIHBhcnNlU3RyaW5nLCBwYXJzZVZhckNoYXJ9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmltcG9ydCB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7cGFyc2VEb2N1bWVudH0gZnJvbSAnLi9hcmFuZ29BZGFwdGVyJztcbmltcG9ydCB7cGFyc2VSZWFrdG9yRGF0ZSwgcGFyc2VSZWFrdG9ySXRlbUlkLCBwYXJzZVJlYWt0b3JOYW1lLCBwYXJzZVJlYWt0b3JUeXBlfSBmcm9tICcuL3JlYWt0b3JBZGFwdGVyJztcbmltcG9ydCB7cGFyc2VUYWd9IGZyb20gJy4vdGFnQWRhcHRlcic7XG5pbXBvcnQge3JlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vdXRpbHMvYWRhcHRlclV0aWxzJztcblxuZXhwb3J0IGNsYXNzIFVzZXJWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ1VzZXJWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IFVzZXJJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgYWN0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBiYW5rSWQ6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgY2l0eTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBjb3VudHJ5OiB6LnN0cmluZygpLmxlbmd0aCgyKS5vcHRpb25hbCgpLFxuICBjdXJyZW5jeTogei5zdHJpbmcoKS5sZW5ndGgoMykub3B0aW9uYWwoKSxcbiAgZGV2aWNlVG9rZW46IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgZG9iOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIGVtYWlsOiB6LnN0cmluZygpLmVtYWlsKCkub3B0aW9uYWwoKSxcbiAgZmlyc3Q6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgZ2VuZGVyOiB6LnN0cmluZygpLmxlbmd0aCgxKS5vcHRpb25hbCgpLFxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBpbWFnZUlkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGxhc3Q6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgbGFzdEFjdGl2ZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBsb2NhbGU6IHouc3RyaW5nKCkubWF4KDUpLm9wdGlvbmFsKCksXG4gIG1haWxpbmdMaXN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICBuYW1lOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHBhc3N3b3JkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHBob25lOiB6LnN0cmluZygpLm1heCgyMCkub3B0aW9uYWwoKSxcbiAgc2FsdDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdGF0ZTogei5zdHJpbmcoKS5sZW5ndGgoMikub3B0aW9uYWwoKSxcbiAgc3RyZWV0MTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJlZXQyOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHN0cmlwZUFjY291bnRJZDogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICBzdHJpcGVDdXN0b21lcklkOiB6LnN0cmluZygpLm1heCgxNjApLm9wdGlvbmFsKCksXG4gIHRhZ3M6IHouYXJyYXkoei5hbnkoKSkub3B0aW9uYWwoKSxcbiAgdGltZXpvbmU6IHouc3RyaW5nKCkubWF4KDE2MCkub3B0aW9uYWwoKSxcbiAgdHlwZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB1c2VyQWNjZXNzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHVzZXJJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB1c2VybmFtZTogei5zdHJpbmcoKS5tYXgoMTYwKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsQ29kZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZEVtYWlsRXhwaXJlczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFBob25lOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFBob25lRXhwaXJlczogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB2ZXJpZmllZFNtc0NvZGU6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgemlwOiB6LnN0cmluZygpLm1heCgyMCkub3B0aW9uYWwoKVxufSkucGFzc3Rocm91Z2goKTtcblxuY29uc3QgdmFsaWRhdGVQaG9uZSA9IChwaG9uZT86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmKCFwaG9uZSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgY2xlYW5lZCA9IHBob25lLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG4gIGlmKGNsZWFuZWQubGVuZ3RoIDwgMTAgfHwgY2xlYW5lZC5sZW5ndGggPiAxNSkge1xuICAgIHRocm93IG5ldyBVc2VyVmFsaWRhdGlvbkVycm9yKCdJbnZhbGlkIHBob25lIG51bWJlciBmb3JtYXQnLCAncGhvbmUnKTtcbiAgfVxuICByZXR1cm4gYCske2NsZWFuZWR9YDtcbn07XG5cbmNvbnN0IHZhbGlkYXRlQ291bnRyeSA9IChjb3VudHJ5Pzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYoIWNvdW50cnkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IHVwcGVyID0gY291bnRyeS50b1VwcGVyQ2FzZSgpO1xuICBpZighL15bQS1aXXsyfSQvLnRlc3QodXBwZXIpKSB7XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoJ0NvdW50cnkgbXVzdCBiZSBhIDItbGV0dGVyIElTTyBjb2RlJywgJ2NvdW50cnknKTtcbiAgfVxuICByZXR1cm4gdXBwZXI7XG59O1xuXG5jb25zdCB2YWxpZGF0ZVN0YXRlID0gKHN0YXRlPzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYoIXN0YXRlKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCB1cHBlciA9IHN0YXRlLnRvVXBwZXJDYXNlKCk7XG4gIGlmKCEvXltBLVpdezJ9JC8udGVzdCh1cHBlcikpIHtcbiAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcignU3RhdGUgbXVzdCBiZSBhIDItbGV0dGVyIGNvZGUnLCAnc3RhdGUnKTtcbiAgfVxuICByZXR1cm4gdXBwZXI7XG59O1xuXG5jb25zdCB2YWxpZGF0ZUdlbmRlciA9IChnZW5kZXI/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBpZighZ2VuZGVyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCB1cHBlciA9IGdlbmRlci50b1VwcGVyQ2FzZSgpO1xuICBpZighL15bTUZdJC8udGVzdCh1cHBlcikpIHtcbiAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcignR2VuZGVyIG11c3QgYmUgTSBvciBGJywgJ2dlbmRlcicpO1xuICB9XG4gIHJldHVybiB1cHBlcjtcbn07XG5cbmNvbnN0IHVzZXJDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBVc2VyVHlwZT4oKTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlVXNlcklucHV0ID0gKHVzZXI6IHVua25vd24pOiBVc2VyVHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsaWRhdGVkID0gVXNlcklucHV0U2NoZW1hLnBhcnNlKHVzZXIpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgVXNlclR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkRXJyb3JzID0gZXJyb3IuZXJyb3JzLm1hcCgoZSkgPT4gYCR7ZS5wYXRoLmpvaW4oJy4nKX06ICR7ZS5tZXNzYWdlfWApLmpvaW4oJywgJyk7XG4gICAgICB0aHJvdyBuZXcgVXNlclZhbGlkYXRpb25FcnJvcihgVXNlciB2YWxpZGF0aW9uIGZhaWxlZDogJHtmaWVsZEVycm9yc31gKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRVc2VyT3V0cHV0ID0gKHVzZXI6IFVzZXJUeXBlKTogVXNlclR5cGUgPT4ge1xuICBjb25zdCB7cGFzc3dvcmQsIHNhbHQsIHZlcmlmaWVkRW1haWxDb2RlLCB2ZXJpZmllZFNtc0NvZGUsIC4uLnNhZmVVc2VyfSA9IHVzZXI7XG4gIHJldHVybiBzYWZlVXNlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZVVzZXIgPSAodXNlcjogVXNlclR5cGUpOiBVc2VyVHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGVyZm9ybVVzZXJUcmFuc2Zvcm1hdGlvbih1c2VyKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBVc2VyVmFsaWRhdGlvbkVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IFVzZXJWYWxpZGF0aW9uRXJyb3IoYFVzZXIgcGFyc2luZyBmYWlsZWQ6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAnVW5rbm93biBlcnJvcid9YCk7XG4gIH1cbn07XG5cbmNvbnN0IHBlcmZvcm1Vc2VyVHJhbnNmb3JtYXRpb24gPSAodXNlcjogVXNlclR5cGUpOiBVc2VyVHlwZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBfaWQsXG4gICAgX2tleSxcbiAgICBhY3RpdmUsXG4gICAgYmFua0lkLFxuICAgIGNpdHksXG4gICAgY291bnRyeSxcbiAgICBjdXJyZW5jeSxcbiAgICBkZXZpY2VUb2tlbixcbiAgICBkb2IsXG4gICAgZW1haWwsXG4gICAgZmlyc3QsXG4gICAgZ2VuZGVyLFxuICAgIGlkLFxuICAgIGltYWdlSWQsXG4gICAgbGFzdCxcbiAgICBsYXN0QWN0aXZlLFxuICAgIGxvY2FsZSxcbiAgICBtYWlsaW5nTGlzdCxcbiAgICBuYW1lLFxuICAgIHBhc3N3b3JkLFxuICAgIHBob25lLFxuICAgIHNhbHQsXG4gICAgc3RhdGUsXG4gICAgc3RyZWV0MSxcbiAgICBzdHJlZXQyLFxuICAgIHN0cmlwZUFjY291bnRJZCxcbiAgICBzdHJpcGVDdXN0b21lcklkLFxuICAgIHRhZ3MsXG4gICAgdGltZXpvbmUsXG4gICAgdHlwZSxcbiAgICB1c2VyQWNjZXNzLFxuICAgIHVzZXJJZCxcbiAgICB1c2VybmFtZSxcbiAgICB2ZXJpZmllZEVtYWlsLFxuICAgIHZlcmlmaWVkRW1haWxDb2RlLFxuICAgIHZlcmlmaWVkRW1haWxFeHBpcmVzLFxuICAgIHZlcmlmaWVkUGhvbmUsXG4gICAgdmVyaWZpZWRQaG9uZUV4cGlyZXMsXG4gICAgdmVyaWZpZWRTbXNDb2RlLFxuICAgIHppcFxuICB9ID0gdXNlcjtcbiAgY29uc3QgdHJhbnNmb3JtZWQgPSB7XG4gICAgLi4ucGFyc2VEb2N1bWVudCh1c2VyKSxcbiAgICAuLi4oYWN0aXZlICE9PSB1bmRlZmluZWQgJiYge2FjdGl2ZTogISFhY3RpdmV9KSxcbiAgICAuLi4oYmFua0lkICYmIHtiYW5rSWQ6IHBhcnNlVmFyQ2hhcihiYW5rSWQsIDE2MCl9KSxcbiAgICAuLi4oY2l0eSAmJiB7Y2l0eTogcGFyc2VWYXJDaGFyKGNpdHksIDE2MCl9KSxcbiAgICAuLi4oY291bnRyeSAmJiB7Y291bnRyeTogdmFsaWRhdGVDb3VudHJ5KGNvdW50cnkpfSksXG4gICAgLi4uKGN1cnJlbmN5ICYmIHtjdXJyZW5jeTogcGFyc2VDaGFyKGN1cnJlbmN5LCAzKS50b1VwcGVyQ2FzZSgpfSksXG4gICAgLi4uKGRldmljZVRva2VuICYmIHtkZXZpY2VUb2tlbjogcGFyc2VWYXJDaGFyKGRldmljZVRva2VuLCAxNjApfSksXG4gICAgLi4uKGRvYiAhPT0gdW5kZWZpbmVkICYmIHtkb2I6IHBhcnNlUmVha3RvckRhdGUoZG9iKX0pLFxuICAgIC4uLihlbWFpbCAmJiB7ZW1haWw6IHBhcnNlRW1haWwoZW1haWwpfSksXG4gICAgLi4uKGZpcnN0ICYmIHtmaXJzdDogcGFyc2VWYXJDaGFyKGZpcnN0LCAxNjApfSksXG4gICAgLi4uKGdlbmRlciAmJiB7Z2VuZGVyOiB2YWxpZGF0ZUdlbmRlcihnZW5kZXIpfSksXG4gICAgLi4uKChpZCB8fCBfaWQgfHwgX2tleSB8fCB1c2VySWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChpZCB8fCBfaWQgfHwgYHVzZXJzLyR7X2tleSB8fCB1c2VySWR9YCl9KSxcbiAgICAuLi4oaW1hZ2VJZCAmJiB7aW1hZ2VJZDogcGFyc2VSZWFrdG9ySXRlbUlkKGltYWdlSWQpfSksXG4gICAgLi4uKGxhc3QgJiYge2xhc3Q6IHBhcnNlVmFyQ2hhcihsYXN0LCAxNjApfSksXG4gICAgLi4uKGxhc3RBY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7bGFzdEFjdGl2ZTogcGFyc2VSZWFrdG9yRGF0ZShsYXN0QWN0aXZlKX0pLFxuICAgIC4uLihsb2NhbGUgJiYge2xvY2FsZTogcGFyc2VTdHJpbmcobG9jYWxlLCA1KX0pLFxuICAgIC4uLihtYWlsaW5nTGlzdCAhPT0gdW5kZWZpbmVkICYmIHttYWlsaW5nTGlzdDogISFtYWlsaW5nTGlzdH0pLFxuICAgIC4uLihuYW1lICYmIHtuYW1lOiBwYXJzZVJlYWt0b3JOYW1lKG5hbWUpfSksXG4gICAgLi4uKHBhc3N3b3JkICYmIHtwYXNzd29yZDogcGFyc2VWYXJDaGFyKHBhc3N3b3JkLCAxNjApfSksXG4gICAgLi4uKHBob25lICYmIHtwaG9uZTogdmFsaWRhdGVQaG9uZShwaG9uZSl9KSxcbiAgICAuLi4oc2FsdCAmJiB7c2FsdDogcGFyc2VWYXJDaGFyKHNhbHQsIDE2MCl9KSxcbiAgICAuLi4oc3RhdGUgJiYge3N0YXRlOiB2YWxpZGF0ZVN0YXRlKHN0YXRlKX0pLFxuICAgIC4uLihzdHJlZXQxICYmIHtzdHJlZXQxOiBwYXJzZVZhckNoYXIoc3RyZWV0MSwgMTYwKX0pLFxuICAgIC4uLihzdHJlZXQyICYmIHtzdHJlZXQyOiBwYXJzZVZhckNoYXIoc3RyZWV0MiwgMTYwKX0pLFxuICAgIC4uLihzdHJpcGVBY2NvdW50SWQgJiYge3N0cmlwZUFjY291bnRJZDogcGFyc2VWYXJDaGFyKHN0cmlwZUFjY291bnRJZCwgMTYwKX0pLFxuICAgIC4uLihzdHJpcGVDdXN0b21lcklkICYmIHtzdHJpcGVDdXN0b21lcklkOiBwYXJzZVZhckNoYXIoc3RyaXBlQ3VzdG9tZXJJZCwgMTYwKX0pLFxuICAgIC4uLih0YWdzPy5sZW5ndGggJiYge3RhZ3M6IHRhZ3MuZmlsdGVyKCh0YWcpID0+ICEhdGFnKS5tYXAoKHRhZykgPT4gcGFyc2VUYWcodGFnKSl9KSxcbiAgICAuLi4odGltZXpvbmUgJiYge3RpbWV6b25lOiBwYXJzZVN0cmluZyh0aW1lem9uZSwgMTYwKX0pLFxuICAgIC4uLih0eXBlICYmIHt0eXBlOiBwYXJzZVJlYWt0b3JUeXBlKHR5cGUpfSksXG4gICAgLi4uKHVzZXJBY2Nlc3MgIT09IHVuZGVmaW5lZCAmJiB7dXNlckFjY2VzczogdXNlckFjY2VzcyA/IHBhcnNlTnVtKHVzZXJBY2Nlc3MpIDogMH0pLFxuICAgIC4uLigodXNlcklkIHx8IF9rZXkpICYmIHt1c2VySWQ6IHBhcnNlSWQoX2tleSB8fCB1c2VySWQpfSksXG4gICAgLi4uKHVzZXJuYW1lICYmIHt1c2VybmFtZTogcGFyc2VWYXJDaGFyKHVzZXJuYW1lLCAxNjApfSksXG4gICAgLi4uKHZlcmlmaWVkRW1haWwgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRFbWFpbDogISF2ZXJpZmllZEVtYWlsfSksXG4gICAgLi4uKHZlcmlmaWVkRW1haWxDb2RlICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkRW1haWxDb2RlOiBwYXJzZU51bSh2ZXJpZmllZEVtYWlsQ29kZSwgMTApfSksXG4gICAgLi4uKHZlcmlmaWVkRW1haWxFeHBpcmVzICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkRW1haWxFeHBpcmVzOiBwYXJzZU51bSh2ZXJpZmllZEVtYWlsRXhwaXJlcywgMTApfSksXG4gICAgLi4uKHZlcmlmaWVkUGhvbmUgIT09IHVuZGVmaW5lZCAmJiB7dmVyaWZpZWRQaG9uZTogISF2ZXJpZmllZFBob25lfSksXG4gICAgLi4uKHZlcmlmaWVkUGhvbmVFeHBpcmVzICE9PSB1bmRlZmluZWQgJiYge3ZlcmlmaWVkUGhvbmVFeHBpcmVzOiBwYXJzZU51bSh2ZXJpZmllZFBob25lRXhwaXJlcywgMTApfSksXG4gICAgLi4uKHZlcmlmaWVkU21zQ29kZSAhPT0gdW5kZWZpbmVkICYmIHt2ZXJpZmllZFNtc0NvZGU6IHBhcnNlTnVtKHZlcmlmaWVkU21zQ29kZSwgMTApfSksXG4gICAgLi4uKHppcCAmJiB7emlwOiBwYXJzZVZhckNoYXIoemlwLCAyMCl9KVxuICB9O1xuXG4gIGNvbnN0IHJlc3VsdCA9IHJlbW92ZUVtcHR5S2V5cyh0cmFuc2Zvcm1lZCk7XG5cbiAgaWYodXNlci5faWQpIHtcbiAgICByZXN1bHQuaWQgPSB1c2VyLl9pZDtcbiAgICByZXN1bHQuX2lkID0gdXNlci5faWQ7XG4gIH0gZWxzZSBpZih1c2VyLmlkICYmICFyZXN1bHQuaWQpIHtcbiAgICByZXN1bHQuaWQgPSB1c2VyLmlkO1xuICAgIHJlc3VsdC5faWQgPSB1c2VyLmlkO1xuICB9XG5cbiAgaWYodXNlci5fa2V5KSB7XG4gICAgcmVzdWx0LnVzZXJJZCA9IHVzZXIuX2tleTtcbiAgICByZXN1bHQuX2tleSA9IHVzZXIuX2tleTtcbiAgfSBlbHNlIGlmKHVzZXIudXNlcklkICYmICFyZXN1bHQudXNlcklkKSB7XG4gICAgcmVzdWx0LnVzZXJJZCA9IHVzZXIudXNlcklkO1xuICAgIHJlc3VsdC5fa2V5ID0gdXNlci51c2VySWQ7XG4gIH1cblxuICBpZih1c2VyLnVzZXJJZCAmJiAhcmVzdWx0Ll9rZXkpIHtcbiAgICByZXN1bHQuX2tleSA9IHVzZXIudXNlcklkO1xuICB9XG5cbiAgaWYodXNlci5pZCAmJiAhcmVzdWx0Ll9pZCkge1xuICAgIHJlc3VsdC5faWQgPSB1c2VyLmlkO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclVzZXJDYWNoZSA9ICgpOiB2b2lkID0+IHtcbiAgdXNlckNhY2hlLmNsZWFyKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlckNhY2hlU2l6ZSA9ICgpOiBudW1iZXIgPT4gdXNlckNhY2hlLnNpemU7XG5cbmV4cG9ydCB7dXNlckNhY2hlfTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlVXNlckxlZ2FjeSA9ICh1c2VyOiBVc2VyVHlwZSk6IFVzZXJUeXBlID0+IHBhcnNlVXNlcih1c2VyKTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxPQUFRLGlCQUFBQSxFQUFlLGFBQUFDLEVBQVcsY0FBQUMsRUFBWSxXQUFBQyxHQUFTLFlBQUFDLEVBQVUsZUFBQUMsRUFBYSxnQkFBQUMsTUFBbUIsZUFDakcsT0FBUSxLQUFBQyxNQUFRLE1BR2hCLE9BQVEsaUJBQUFDLE9BQW9CLGtCQUM1QixPQUFRLG9CQUFBQyxFQUFrQixzQkFBQUMsR0FBb0Isb0JBQUFDLEdBQWtCLG9CQUFB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RixHQUFJaUMsSUFBeUIsUUFBYSxDQUFDLHFCQUFzQm5FLEVBQVNtRSxFQUFzQixFQUFFLENBQUMsRUFDbkcsR0FBSUMsSUFBa0IsUUFBYSxDQUFDLGNBQWUsQ0FBQyxDQUFDQSxDQUFhLEVBQ2xFLEdBQUlDLElBQXlCLFFBQWEsQ0FBQyxxQkFBc0JyRSxFQUFTcUUsRUFBc0IsRUFBRSxDQUFDLEVBQ25HLEdBQUlsQyxJQUFvQixRQUFhLENBQUMsZ0JBQWlCbkMsRUFBU21DLEVBQWlCLEVBQUUsQ0FBQyxFQUNwRixHQUFJbUMsR0FBTyxDQUFDLElBQUtwRSxFQUFhb0UsRUFBSyxFQUFFLENBQUMsQ0FDeEMsRUFFTUcsRUFBUy9ELEdBQWdCNkQsQ0FBVyxFQUUxQyxPQUFHNUMsRUFBSyxLQUNOOEMsRUFBTyxHQUFLOUMsRUFBSyxJQUNqQjhDLEVBQU8sSUFBTTlDLEVBQUssS0FDVkEsRUFBSyxJQUFNLENBQUM4QyxFQUFPLEtBQzNCQSxFQUFPLEdBQUs5QyxFQUFLLEdBQ2pCOEMsRUFBTyxJQUFNOUMsRUFBSyxJQUdqQkEsRUFBSyxNQUNOOEMsRUFBTyxPQUFTOUMsRUFBSyxLQUNyQjhDLEVBQU8sS0FBTzlDLEVBQUssTUFDWEEsRUFBSyxRQUFVLENBQUM4QyxFQUFPLFNBQy9CQSxFQUFPLE9BQVM5QyxFQUFLLE9BQ3JCOEMsRUFBTyxLQUFPOUMsRUFBSyxRQUdsQkEsRUFBSyxRQUFVLENBQUM4QyxFQUFPLE9BQ3hCQSxFQUFPLEtBQU85QyxFQUFLLFFBR2xCQSxFQUFLLElBQU0sQ0FBQzhDLEVBQU8sTUFDcEJBLEVBQU8sSUFBTTlDLEVBQUssSUFHYjhDLENBQ1QsRUFFYUMsR0FBaUIsSUFBWSxDQUN4Q2pELEVBQVUsTUFBTSxDQUNsQixFQUVha0QsR0FBbUIsSUFBY2xELEVBQVUsS0FJakQsTUFBTW1ELEdBQW1CQyxHQUE2QkMsR0FBVUQsQ0FBSSIsCiAgIm5hbWVzIjogWyJwYXJzZUFyYW5nb0lkIiwgInBhcnNlQ2hhciIsICJwYXJzZUVtYWlsIiwgInBhcnNlSWQiLCAicGFyc2VOdW0iLCAicGFyc2VTdHJpbmciLCAicGFyc2VWYXJDaGFyIiwgInoiLCAicGFyc2VEb2N1bWVudCIsICJwYXJzZVJlYWt0b3JEYXRlIiwgInBhcnNlUmVha3Rvckl0ZW1JZCIsICJwYXJzZVJlYWt0b3JOYW1lIiwgInBhcnNlUmVha3RvclR5cGUiLCAicGFyc2VUYWciLCAicmVtb3ZlRW1wdHlLZXlzIiwgIlVzZXJWYWxpZGF0aW9uRXJyb3IiLCAibWVzc2FnZSIsICJmaWVsZCIsICJVc2VySW5wdXRTY2hlbWEiLCAidmFsaWRhdGVQaG9uZSIsICJwaG9uZSIsICJjbGVhbmVkIiwgInZhbGlkYXRlQ291bnRyeSIsICJjb3VudHJ5IiwgInVwcGVyIiwgInZhbGlkYXRlU3RhdGUiLCAic3RhdGUiLCAidmFsaWRhdGVHZW5kZXIiLCAiZ2VuZGVyIiwgInVzZXJDYWNoZSIsICJ2YWxpZGF0ZVVzZXJJbnB1dCIsICJ1c2VyIiwgImVycm9yIiwgImZpZWxkRXJyb3JzIiwgImUiLCAiZm9ybWF0VXNlck91dHB1dCIsICJwYXNzd29yZCIsICJzYWx0IiwgInZlcmlmaWVkRW1haWxDb2RlIiwgInZlcmlmaWVkU21zQ29kZSIsICJzYWZlVXNlciIsICJwYXJzZVVzZXIiLCAicGVyZm9ybVVzZXJUcmFuc2Zvcm1hdGlvbiIsICJfaWQiLCAiX2tleSIsICJhY3RpdmUiLCAiYmFua0lkIiwgImNpdHkiLCAiY3VycmVuY3kiLCAiZGV2aWNlVG9rZW4iLCAiZG9iIiwgImVtYWlsIiwgImZpcnN0IiwgImlkIiwgImltYWdlSWQiLCAibGFzdCIsICJsYXN0QWN0aXZlIiwgImxvY2FsZSIsICJtYWlsaW5nTGlzdCIsICJuYW1lIiwgInN0cmVldDEiLCAic3RyZWV0MiIsICJzdHJpcGVBY2NvdW50SWQiLCAic3RyaXBlQ3VzdG9tZXJJZCIsICJ0YWdzIiwgInRpbWV6b25lIiwgInR5cGUiLCAidXNlckFjY2VzcyIsICJ1c2VySWQiLCAidXNlcm5hbWUiLCAidmVyaWZpZWRFbWFpbCIsICJ2ZXJpZmllZEVtYWlsRXhwaXJlcyIsICJ2ZXJpZmllZFBob25lIiwgInZlcmlmaWVkUGhvbmVFeHBpcmVzIiwgInppcCIsICJ0cmFuc2Zvcm1lZCIsICJ0YWciLCAicmVzdWx0IiwgImNsZWFyVXNlckNhY2hlIiwgImdldFVzZXJDYWNoZVNpemUiLCAicGFyc2VVc2VyTGVnYWN5IiwgInVzZXIiLCAicGFyc2VVc2VyIl0KfQo=
|