@nlabs/reaktor 0.10.2 → 0.10.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/block-navigation.js +1 -1
- package/coverage/index.html +23 -23
- package/coverage/sorter.js +21 -7
- package/lib/actions/apps.d.ts +1 -0
- package/lib/actions/apps.d.ts.map +1 -0
- package/lib/actions/apps.js +218 -17
- package/lib/actions/connections.d.ts +1 -0
- package/lib/actions/connections.d.ts.map +1 -0
- package/lib/actions/connections.js +61 -6
- package/lib/actions/content.d.ts +1 -0
- package/lib/actions/content.d.ts.map +1 -0
- package/lib/actions/content.js +232 -9
- package/lib/actions/conversations.d.ts +1 -0
- package/lib/actions/conversations.d.ts.map +1 -0
- package/lib/actions/conversations.js +321 -19
- package/lib/actions/dynamodb.d.ts +1 -0
- package/lib/actions/dynamodb.d.ts.map +1 -0
- package/lib/actions/dynamodb.js +119 -2
- package/lib/actions/email.d.ts +1 -0
- package/lib/actions/email.d.ts.map +1 -0
- package/lib/actions/email.js +56 -2
- package/lib/actions/files.d.ts +1 -0
- package/lib/actions/files.d.ts.map +1 -0
- package/lib/actions/files.js +226 -5
- package/lib/actions/groups.d.ts +1 -0
- package/lib/actions/groups.d.ts.map +1 -0
- package/lib/actions/groups.js +234 -19
- package/lib/actions/images.d.ts +1 -0
- package/lib/actions/images.d.ts.map +1 -0
- package/lib/actions/images.js +688 -31
- package/lib/actions/index.d.ts +2 -0
- package/lib/actions/index.d.ts.map +1 -0
- package/lib/actions/index.js +29 -2
- package/lib/actions/ios.d.ts +1 -0
- package/lib/actions/ios.d.ts.map +1 -0
- package/lib/actions/ios.js +228 -9
- package/lib/actions/locations.d.ts +1 -0
- package/lib/actions/locations.d.ts.map +1 -0
- package/lib/actions/locations.js +111 -7
- package/lib/actions/messages.d.ts +1 -0
- package/lib/actions/messages.d.ts.map +1 -0
- package/lib/actions/messages.js +155 -21
- package/lib/actions/notifications.d.ts +1 -0
- package/lib/actions/notifications.d.ts.map +1 -0
- package/lib/actions/notifications.js +37 -2
- package/lib/actions/payments.d.ts +1 -0
- package/lib/actions/payments.d.ts.map +1 -0
- package/lib/actions/payments.js +428 -11
- package/lib/actions/posts.d.ts +1 -0
- package/lib/actions/posts.d.ts.map +1 -0
- package/lib/actions/posts.js +540 -75
- package/lib/actions/profiles.d.ts +1 -0
- package/lib/actions/profiles.d.ts.map +1 -0
- package/lib/actions/profiles.js +58 -8
- package/lib/actions/reactions.d.ts +1 -0
- package/lib/actions/reactions.d.ts.map +1 -0
- package/lib/actions/reactions.js +276 -25
- package/lib/actions/s3.d.ts +1 -0
- package/lib/actions/s3.d.ts.map +1 -0
- package/lib/actions/s3.js +102 -2
- package/lib/actions/search.d.ts +1 -0
- package/lib/actions/search.d.ts.map +1 -0
- package/lib/actions/search.js +81 -5
- package/lib/actions/sms.d.ts +1 -0
- package/lib/actions/sms.d.ts.map +1 -0
- package/lib/actions/sms.js +52 -2
- package/lib/actions/statistics.d.ts +1 -0
- package/lib/actions/statistics.d.ts.map +1 -0
- package/lib/actions/statistics.js +41 -6
- package/lib/actions/subscriptions.d.ts +1 -0
- package/lib/actions/subscriptions.d.ts.map +1 -0
- package/lib/actions/subscriptions.js +196 -6
- package/lib/actions/tags.d.ts +1 -0
- package/lib/actions/tags.d.ts.map +1 -0
- package/lib/actions/tags.js +258 -19
- package/lib/actions/users.d.ts +1 -0
- package/lib/actions/users.d.ts.map +1 -0
- package/lib/actions/users.js +781 -66
- package/lib/actions/videos.d.ts +26 -0
- package/lib/actions/videos.d.ts.map +1 -0
- package/lib/actions/videos.js +423 -0
- package/lib/actions/websockets.d.ts +1 -0
- package/lib/actions/websockets.d.ts.map +1 -0
- package/lib/actions/websockets.js +148 -14
- package/lib/adapters/arangoAdapter.d.ts +1 -0
- package/lib/adapters/arangoAdapter.d.ts.map +1 -0
- package/lib/adapters/arangoAdapter.js +70 -2
- package/lib/adapters/contentAdapter.d.ts +1 -0
- package/lib/adapters/contentAdapter.d.ts.map +1 -0
- package/lib/adapters/contentAdapter.js +108 -2
- package/lib/adapters/fileAdapter.d.ts +1 -0
- package/lib/adapters/fileAdapter.d.ts.map +1 -0
- package/lib/adapters/fileAdapter.js +119 -2
- package/lib/adapters/imageAdapter.d.ts +1 -0
- package/lib/adapters/imageAdapter.d.ts.map +1 -0
- package/lib/adapters/imageAdapter.js +112 -2
- package/lib/adapters/index.d.ts +1 -0
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/adapters/index.js +11 -2
- package/lib/adapters/messageAdapter.d.ts +1 -0
- package/lib/adapters/messageAdapter.d.ts.map +1 -0
- package/lib/adapters/messageAdapter.js +82 -2
- package/lib/adapters/postAdapter.d.ts +1 -0
- package/lib/adapters/postAdapter.d.ts.map +1 -0
- package/lib/adapters/postAdapter.js +117 -2
- package/lib/adapters/reaktorAdapter.d.ts +1 -0
- package/lib/adapters/reaktorAdapter.d.ts.map +1 -0
- package/lib/adapters/reaktorAdapter.js +59 -2
- package/lib/adapters/tagAdapter.d.ts +1 -0
- package/lib/adapters/tagAdapter.d.ts.map +1 -0
- package/lib/adapters/tagAdapter.js +99 -2
- package/lib/adapters/userAdapter.d.ts +1 -0
- package/lib/adapters/userAdapter.d.ts.map +1 -0
- package/lib/adapters/userAdapter.js +264 -2
- package/lib/config.d.ts +1 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +161 -2
- package/lib/handlers/graphqlHandler.d.ts +1 -0
- package/lib/handlers/graphqlHandler.d.ts.map +1 -0
- package/lib/handlers/graphqlHandler.js +118 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +18 -2
- package/lib/lambdas/actions/websockets.d.ts +1 -0
- package/lib/lambdas/actions/websockets.d.ts.map +1 -0
- package/lib/lambdas/actions/websockets.js +89 -14
- package/lib/lambdas/authorizer.d.ts +1 -0
- package/lib/lambdas/authorizer.d.ts.map +1 -0
- package/lib/lambdas/authorizer.js +41 -2
- package/lib/lambdas/connection.d.ts +1 -0
- package/lib/lambdas/connection.d.ts.map +1 -0
- package/lib/lambdas/connection.js +85 -2
- package/lib/lambdas/utils/message.d.ts +1 -0
- package/lib/lambdas/utils/message.d.ts.map +1 -0
- package/lib/lambdas/utils/message.js +20 -2
- package/lib/lambdas/utils/websocket.d.ts +1 -0
- package/lib/lambdas/utils/websocket.d.ts.map +1 -0
- package/lib/lambdas/utils/websocket.js +78 -2
- package/lib/mocks/conversation.d.ts +1 -0
- package/lib/mocks/conversation.d.ts.map +1 -0
- package/lib/mocks/conversation.js +10 -2
- package/lib/mocks/file.d.ts +1 -0
- package/lib/mocks/file.d.ts.map +1 -0
- package/lib/mocks/file.js +13 -2
- package/lib/mocks/group.d.ts +1 -0
- package/lib/mocks/group.d.ts.map +1 -0
- package/lib/mocks/group.js +20 -2
- package/lib/mocks/image.d.ts +1 -0
- package/lib/mocks/image.d.ts.map +1 -0
- package/lib/mocks/image.js +17 -2
- package/lib/mocks/post.d.ts +1 -0
- package/lib/mocks/post.d.ts.map +1 -0
- package/lib/mocks/post.js +28 -2
- package/lib/mocks/tag.d.ts +1 -0
- package/lib/mocks/tag.d.ts.map +1 -0
- package/lib/mocks/tag.js +12 -2
- package/lib/mocks/user.d.ts +1 -0
- package/lib/mocks/user.d.ts.map +1 -0
- package/lib/mocks/user.js +61 -2
- package/lib/mocks/video.d.ts +4 -0
- package/lib/mocks/video.d.ts.map +1 -0
- package/lib/mocks/video.js +17 -0
- package/lib/mutations/content.d.ts +1 -0
- package/lib/mutations/content.d.ts.map +1 -0
- package/lib/mutations/content.js +27 -2
- package/lib/mutations/index.d.ts +1 -0
- package/lib/mutations/index.d.ts.map +1 -0
- package/lib/mutations/index.js +29 -2
- package/lib/mutations/locations.d.ts +1 -0
- package/lib/mutations/locations.d.ts.map +1 -0
- package/lib/mutations/locations.js +22 -2
- package/lib/mutations/messages.d.ts +1 -0
- package/lib/mutations/messages.d.ts.map +1 -0
- package/lib/mutations/messages.js +75 -2
- package/lib/mutations/posts.d.ts +1 -0
- package/lib/mutations/posts.d.ts.map +1 -0
- package/lib/mutations/posts.js +31 -2
- package/lib/mutations/profiles.d.ts +1 -0
- package/lib/mutations/profiles.d.ts.map +1 -0
- package/lib/mutations/profiles.js +78 -2
- package/lib/mutations/reactions.d.ts +1 -0
- package/lib/mutations/reactions.d.ts.map +1 -0
- package/lib/mutations/reactions.js +29 -2
- package/lib/mutations/statistics.d.ts +1 -0
- package/lib/mutations/statistics.d.ts.map +1 -0
- package/lib/mutations/statistics.js +17 -2
- package/lib/mutations/subscriptions.d.ts +1 -0
- package/lib/mutations/subscriptions.d.ts.map +1 -0
- package/lib/mutations/subscriptions.js +38 -2
- package/lib/mutations/tags.d.ts +1 -0
- package/lib/mutations/tags.d.ts.map +1 -0
- package/lib/mutations/tags.js +109 -2
- package/lib/mutations/users.d.ts +1 -0
- package/lib/mutations/users.d.ts.map +1 -0
- package/lib/mutations/users.js +129 -2
- package/lib/objectTypes/app.d.ts +1 -0
- package/lib/objectTypes/app.d.ts.map +1 -0
- package/lib/objectTypes/app.js +147 -2
- package/lib/objectTypes/bankAccount.d.ts +1 -0
- package/lib/objectTypes/bankAccount.d.ts.map +1 -0
- package/lib/objectTypes/bankAccount.js +54 -2
- package/lib/objectTypes/connection.d.ts +1 -0
- package/lib/objectTypes/connection.d.ts.map +1 -0
- package/lib/objectTypes/connection.js +26 -2
- package/lib/objectTypes/content.d.ts +1 -0
- package/lib/objectTypes/content.d.ts.map +1 -0
- package/lib/objectTypes/content.js +79 -2
- package/lib/objectTypes/conversation.d.ts +1 -0
- package/lib/objectTypes/conversation.d.ts.map +1 -0
- package/lib/objectTypes/conversation.js +53 -2
- package/lib/objectTypes/creditCard.d.ts +1 -0
- package/lib/objectTypes/creditCard.d.ts.map +1 -0
- package/lib/objectTypes/creditCard.js +64 -2
- package/lib/objectTypes/document.d.ts +1 -0
- package/lib/objectTypes/document.d.ts.map +1 -0
- package/lib/objectTypes/document.js +21 -2
- package/lib/objectTypes/error.d.ts +1 -0
- package/lib/objectTypes/error.d.ts.map +1 -0
- package/lib/objectTypes/error.js +24 -2
- package/lib/objectTypes/external.d.ts +1 -0
- package/lib/objectTypes/external.d.ts.map +1 -0
- package/lib/objectTypes/external.js +52 -2
- package/lib/objectTypes/file.d.ts +1 -0
- package/lib/objectTypes/file.d.ts.map +1 -0
- package/lib/objectTypes/file.js +76 -2
- package/lib/objectTypes/filter.d.ts +1 -0
- package/lib/objectTypes/filter.d.ts.map +1 -0
- package/lib/objectTypes/filter.js +21 -2
- package/lib/objectTypes/group.d.ts +1 -0
- package/lib/objectTypes/group.d.ts.map +1 -0
- package/lib/objectTypes/group.js +97 -2
- package/lib/objectTypes/iapSubscription.d.ts +1 -0
- package/lib/objectTypes/iapSubscription.d.ts.map +1 -0
- package/lib/objectTypes/iapSubscription.js +18 -2
- package/lib/objectTypes/image.d.ts +1 -0
- package/lib/objectTypes/image.d.ts.map +1 -0
- package/lib/objectTypes/image.js +105 -2
- package/lib/objectTypes/index.d.ts +1 -0
- package/lib/objectTypes/index.d.ts.map +1 -0
- package/lib/objectTypes/index.js +28 -2
- package/lib/objectTypes/location.d.ts +1 -0
- package/lib/objectTypes/location.d.ts.map +1 -0
- package/lib/objectTypes/location.js +85 -2
- package/lib/objectTypes/message.d.ts +1 -0
- package/lib/objectTypes/message.d.ts.map +1 -0
- package/lib/objectTypes/message.js +72 -2
- package/lib/objectTypes/passcode.d.ts +1 -0
- package/lib/objectTypes/passcode.d.ts.map +1 -0
- package/lib/objectTypes/passcode.js +20 -2
- package/lib/objectTypes/plan.d.ts +1 -0
- package/lib/objectTypes/plan.d.ts.map +1 -0
- package/lib/objectTypes/plan.js +71 -2
- package/lib/objectTypes/post.d.ts +1 -0
- package/lib/objectTypes/post.d.ts.map +1 -0
- package/lib/objectTypes/post.js +101 -2
- package/lib/objectTypes/profile.d.ts +1 -0
- package/lib/objectTypes/profile.d.ts.map +1 -0
- package/lib/objectTypes/profile.js +68 -2
- package/lib/objectTypes/reaction.d.ts +1 -0
- package/lib/objectTypes/reaction.d.ts.map +1 -0
- package/lib/objectTypes/reaction.js +37 -2
- package/lib/objectTypes/relation.d.ts +1 -0
- package/lib/objectTypes/relation.d.ts.map +1 -0
- package/lib/objectTypes/relation.js +27 -2
- package/lib/objectTypes/search.d.ts +1 -0
- package/lib/objectTypes/search.d.ts.map +1 -0
- package/lib/objectTypes/search.js +50 -2
- package/lib/objectTypes/statistics.d.ts +1 -0
- package/lib/objectTypes/statistics.d.ts.map +1 -0
- package/lib/objectTypes/statistics.js +17 -2
- package/lib/objectTypes/subscription.d.ts +1 -0
- package/lib/objectTypes/subscription.d.ts.map +1 -0
- package/lib/objectTypes/subscription.js +102 -2
- package/lib/objectTypes/tag.d.ts +1 -0
- package/lib/objectTypes/tag.d.ts.map +1 -0
- package/lib/objectTypes/tag.js +41 -2
- package/lib/objectTypes/user.d.ts +1 -0
- package/lib/objectTypes/user.d.ts.map +1 -0
- package/lib/objectTypes/user.js +111 -2
- package/lib/queries/content.d.ts +1 -0
- package/lib/queries/content.d.ts.map +1 -0
- package/lib/queries/content.js +50 -2
- package/lib/queries/index.d.ts +1 -0
- package/lib/queries/index.d.ts.map +1 -0
- package/lib/queries/index.js +27 -2
- package/lib/queries/locations.d.ts +1 -0
- package/lib/queries/locations.d.ts.map +1 -0
- package/lib/queries/locations.js +23 -2
- package/lib/queries/messages.d.ts +1 -0
- package/lib/queries/messages.d.ts.map +1 -0
- package/lib/queries/messages.js +35 -2
- package/lib/queries/posts.d.ts +1 -0
- package/lib/queries/posts.d.ts.map +1 -0
- package/lib/queries/posts.js +154 -2
- package/lib/queries/reactions.d.ts +1 -0
- package/lib/queries/reactions.d.ts.map +1 -0
- package/lib/queries/reactions.js +34 -2
- package/lib/queries/statistics.d.ts +1 -0
- package/lib/queries/statistics.d.ts.map +1 -0
- package/lib/queries/statistics.js +17 -2
- package/lib/queries/subscriptions.d.ts +1 -0
- package/lib/queries/subscriptions.d.ts.map +1 -0
- package/lib/queries/subscriptions.js +21 -2
- package/lib/queries/tags.d.ts +1 -0
- package/lib/queries/tags.d.ts.map +1 -0
- package/lib/queries/tags.js +56 -2
- package/lib/queries/users.d.ts +1 -0
- package/lib/queries/users.d.ts.map +1 -0
- package/lib/queries/users.js +39 -2
- package/lib/templates/email/layout.d.ts +1 -0
- package/lib/templates/email/layout.d.ts.map +1 -0
- package/lib/templates/email/layout.js +4 -3
- package/lib/templates/email/passwordForgot.d.ts +1 -0
- package/lib/templates/email/passwordForgot.d.ts.map +1 -0
- package/lib/templates/email/passwordForgot.js +4 -3
- package/lib/templates/email/passwordRecovery.d.ts +1 -0
- package/lib/templates/email/passwordRecovery.d.ts.map +1 -0
- package/lib/templates/email/passwordRecovery.js +4 -3
- package/lib/templates/email/verifyEmail.d.ts +1 -0
- package/lib/templates/email/verifyEmail.d.ts.map +1 -0
- package/lib/templates/email/verifyEmail.js +4 -3
- package/lib/templates/email/welcome.d.ts +1 -0
- package/lib/templates/email/welcome.d.ts.map +1 -0
- package/lib/templates/email/welcome.js +4 -3
- package/lib/templates/sms/passwordForgot.d.ts +1 -0
- package/lib/templates/sms/passwordForgot.d.ts.map +1 -0
- package/lib/templates/sms/passwordForgot.js +3 -2
- package/lib/templates/sms/passwordRecovery.d.ts +1 -0
- package/lib/templates/sms/passwordRecovery.d.ts.map +1 -0
- package/lib/templates/sms/passwordRecovery.js +3 -2
- package/lib/templates/sms/verifyEmail.d.ts +1 -0
- package/lib/templates/sms/verifyEmail.d.ts.map +1 -0
- package/lib/templates/sms/verifyEmail.js +3 -2
- package/lib/templates/sms/verifyPhone.d.ts +1 -0
- package/lib/templates/sms/verifyPhone.d.ts.map +1 -0
- package/lib/templates/sms/verifyPhone.js +3 -2
- package/lib/templates/sms/welcome.d.ts +1 -0
- package/lib/templates/sms/welcome.d.ts.map +1 -0
- package/lib/templates/sms/welcome.js +3 -2
- package/lib/types/apps.types.d.ts +1 -0
- package/lib/types/apps.types.d.ts.map +1 -0
- package/lib/types/apps.types.js +10 -2
- package/lib/types/arangodb.types.d.ts +2 -1
- package/lib/types/arangodb.types.d.ts.map +1 -0
- package/lib/types/arangodb.types.js +6 -1
- package/lib/types/auth.types.d.ts +1 -0
- package/lib/types/auth.types.d.ts.map +1 -0
- package/lib/types/auth.types.js +6 -1
- package/lib/types/connections.types.d.ts +1 -0
- package/lib/types/connections.types.d.ts.map +1 -0
- package/lib/types/connections.types.js +6 -1
- package/lib/types/content.types.d.ts +1 -0
- package/lib/types/content.types.d.ts.map +1 -0
- package/lib/types/content.types.js +6 -1
- package/lib/types/conversations.types.d.ts +1 -0
- package/lib/types/conversations.types.d.ts.map +1 -0
- package/lib/types/conversations.types.js +6 -1
- package/lib/types/email.types.d.ts +1 -0
- package/lib/types/email.types.d.ts.map +1 -0
- package/lib/types/email.types.js +6 -1
- package/lib/types/error.types.d.ts +1 -0
- package/lib/types/error.types.d.ts.map +1 -0
- package/lib/types/error.types.js +20 -2
- package/lib/types/files.types.d.ts +1 -0
- package/lib/types/files.types.d.ts.map +1 -0
- package/lib/types/files.types.js +6 -1
- package/lib/types/google.types.d.ts +1 -0
- package/lib/types/google.types.d.ts.map +1 -0
- package/lib/types/google.types.js +6 -1
- package/lib/types/groups.types.d.ts +1 -0
- package/lib/types/groups.types.d.ts.map +1 -0
- package/lib/types/groups.types.js +6 -1
- package/lib/types/images.types.d.ts +1 -0
- package/lib/types/images.types.d.ts.map +1 -0
- package/lib/types/images.types.js +6 -1
- package/lib/types/index.d.ts +2 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +28 -2
- package/lib/types/locations.types.d.ts +1 -0
- package/lib/types/locations.types.d.ts.map +1 -0
- package/lib/types/locations.types.js +6 -1
- package/lib/types/messages.types.d.ts +1 -0
- package/lib/types/messages.types.d.ts.map +1 -0
- package/lib/types/messages.types.js +6 -1
- package/lib/types/notifications.types.d.ts +1 -0
- package/lib/types/notifications.types.d.ts.map +1 -0
- package/lib/types/notifications.types.js +6 -1
- package/lib/types/payments.types.d.ts +1 -0
- package/lib/types/payments.types.d.ts.map +1 -0
- package/lib/types/payments.types.js +6 -1
- package/lib/types/posts.types.d.ts +1 -0
- package/lib/types/posts.types.d.ts.map +1 -0
- package/lib/types/posts.types.js +6 -1
- package/lib/types/profiles.types.d.ts +1 -0
- package/lib/types/profiles.types.d.ts.map +1 -0
- package/lib/types/profiles.types.js +3 -1
- package/lib/types/statistics.types.d.ts +1 -0
- package/lib/types/statistics.types.d.ts.map +1 -0
- package/lib/types/statistics.types.js +3 -1
- package/lib/types/tags.types.d.ts +1 -0
- package/lib/types/tags.types.d.ts.map +1 -0
- package/lib/types/tags.types.js +6 -1
- package/lib/types/users.types.d.ts +1 -0
- package/lib/types/users.types.d.ts.map +1 -0
- package/lib/types/users.types.js +6 -1
- package/lib/types/videos.types.d.ts +47 -0
- package/lib/types/videos.types.d.ts.map +1 -0
- package/lib/types/videos.types.js +6 -0
- package/lib/types/websockets.types.d.ts +1 -0
- package/lib/types/websockets.types.d.ts.map +1 -0
- package/lib/types/websockets.types.js +6 -1
- package/lib/utils/adapterUtils.d.ts +1 -0
- package/lib/utils/adapterUtils.d.ts.map +1 -0
- package/lib/utils/adapterUtils.js +23 -2
- package/lib/utils/analyticsUtils.d.ts +1 -0
- package/lib/utils/analyticsUtils.d.ts.map +1 -0
- package/lib/utils/analyticsUtils.js +45 -2
- package/lib/utils/arangodbUtils.d.ts +1 -0
- package/lib/utils/arangodbUtils.d.ts.map +1 -0
- package/lib/utils/arangodbUtils.js +128 -5
- package/lib/utils/authUtils.d.ts +1 -0
- package/lib/utils/authUtils.d.ts.map +1 -0
- package/lib/utils/authUtils.js +54 -2
- package/lib/utils/contextUtils.d.ts +1 -0
- package/lib/utils/contextUtils.d.ts.map +1 -0
- package/lib/utils/contextUtils.js +10 -2
- package/lib/utils/dbI18n.d.ts +1 -0
- package/lib/utils/dbI18n.d.ts.map +1 -0
- package/lib/utils/dbI18n.example.d.ts +1 -0
- package/lib/utils/dbI18n.example.d.ts.map +1 -0
- package/lib/utils/dbI18n.example.js +92 -5
- package/lib/utils/dbI18n.js +28 -2
- package/lib/utils/googleTranslate.d.ts +1 -0
- package/lib/utils/googleTranslate.d.ts.map +1 -0
- package/lib/utils/googleTranslate.js +70 -2
- package/lib/utils/graphqlUtils.d.ts +1 -0
- package/lib/utils/graphqlUtils.d.ts.map +1 -0
- package/lib/utils/graphqlUtils.js +11 -2
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +19 -2
- package/lib/utils/languageDetection.d.ts +1 -0
- package/lib/utils/languageDetection.d.ts.map +1 -0
- package/lib/utils/languageDetection.js +120 -2
- package/lib/utils/localeUtils.d.ts +1 -0
- package/lib/utils/localeUtils.d.ts.map +1 -0
- package/lib/utils/localeUtils.example.d.ts +1 -0
- package/lib/utils/localeUtils.example.d.ts.map +1 -0
- package/lib/utils/localeUtils.example.js +124 -2
- package/lib/utils/localeUtils.js +71 -2
- package/lib/utils/middlewareUtils.d.ts +1 -0
- package/lib/utils/middlewareUtils.d.ts.map +1 -0
- package/lib/utils/middlewareUtils.js +10 -2
- package/lib/utils/sessionUtils.d.ts +1 -0
- package/lib/utils/sessionUtils.d.ts.map +1 -0
- package/lib/utils/sessionUtils.js +26 -2
- package/lib/utils/stripeUtils.d.ts +2 -1
- package/lib/utils/stripeUtils.d.ts.map +1 -0
- package/lib/utils/stripeUtils.js +12 -2
- package/lib/utils/templateUtils.d.ts +1 -0
- package/lib/utils/templateUtils.d.ts.map +1 -0
- package/lib/utils/templateUtils.js +11 -2
- package/lib/utils/testUtils.d.ts +1 -0
- package/lib/utils/testUtils.d.ts.map +1 -0
- package/lib/utils/testUtils.js +292 -2
- package/lib/utils/translationQueue.d.ts +1 -0
- package/lib/utils/translationQueue.d.ts.map +1 -0
- package/lib/utils/translationQueue.example.d.ts +1 -0
- package/lib/utils/translationQueue.example.d.ts.map +1 -0
- package/lib/utils/translationQueue.example.js +340 -2
- package/lib/utils/translationQueue.js +113 -2
- package/package.json +47 -29
package/lib/utils/testUtils.js
CHANGED
|
@@ -1,2 +1,292 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3Rlc3RVdGlscy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7amVzdH0gZnJvbSAnQGplc3QvZ2xvYmFscyc7XG5pbXBvcnQgdHlwZSB7R3JhcGhRTFJlc29sdmVJbmZvfSBmcm9tICdncmFwaHFsJztcblxuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5cbi8vIERlZmluZSBwcm9wZXIgdHlwZXMgZm9yIHRlc3QgdXRpbGl0aWVzXG50eXBlIE1vY2tPdmVycmlkZXMgPSBQYXJ0aWFsPFJlY29yZDxzdHJpbmcsIHVua25vd24+PjtcbnR5cGUgVGVzdENvbnRleHQgPSBQYXJ0aWFsPEFwaUNvbnRleHQ+ICYge3Nlc3Npb24/OiBQYXJ0aWFsPHt1c2VySWQ6IHN0cmluZzsgdXNlcm5hbWU6IHN0cmluZzsgdXNlckFjY2VzczogbnVtYmVyfT59O1xudHlwZSBUZXN0QXJncyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xudHlwZSBUZXN0UmV0dXJuVmFsdWUgPSB1bmtub3duO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja0NvbnRleHQgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pOiBBcGlDb250ZXh0ID0+IHtcbiAgY29uc3QgZGVmYXVsdFNlc3Npb24gPSB7XG4gICAgdXNlckFjY2VzczogMSxcbiAgICB1c2VySWQ6ICd1c2VyMScsXG4gICAgdXNlcm5hbWU6ICd0ZXN0dXNlcidcbiAgfTtcbiAgY29uc3Qgb3ZlcnJpZGVTZXNzaW9uOiBQYXJ0aWFsPHR5cGVvZiBkZWZhdWx0U2Vzc2lvbj4gPSBvdmVycmlkZXMuc2Vzc2lvbiB8fCB7fTtcbiAgY29uc3QgY29udGV4dDogVGVzdENvbnRleHQgPSB7XG4gICAgZGF0YWJhc2VOYW1lOiAob3ZlcnJpZGVzLmRhdGFiYXNlTmFtZSBhcyBzdHJpbmcpID8/ICd0ZXN0JyxcbiAgICAuLi5vdmVycmlkZXNcbiAgfTtcbiAgZGVsZXRlIGNvbnRleHQuc2Vzc2lvbjtcbiAgY29udGV4dC5zZXNzaW9uID0ge1xuICAgIHVzZXJBY2Nlc3M6IG92ZXJyaWRlU2Vzc2lvbi51c2VyQWNjZXNzICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZVNlc3Npb24udXNlckFjY2VzcyA6IGRlZmF1bHRTZXNzaW9uLnVzZXJBY2Nlc3MsXG4gICAgdXNlcklkOiBvdmVycmlkZVNlc3Npb24udXNlcklkICE9PSB1bmRlZmluZWQgPyBvdmVycmlkZVNlc3Npb24udXNlcklkIDogZGVmYXVsdFNlc3Npb24udXNlcklkLFxuICAgIHVzZXJuYW1lOiBvdmVycmlkZVNlc3Npb24udXNlcm5hbWUgIT09IHVuZGVmaW5lZCA/IG92ZXJyaWRlU2Vzc2lvbi51c2VybmFtZSA6IGRlZmF1bHRTZXNzaW9uLnVzZXJuYW1lXG4gIH07XG4gIHJldHVybiBjb250ZXh0IGFzIEFwaUNvbnRleHQ7XG59O1xuXG4vLyBDb21tb24gbW9jayByZXNvbHZlIGluZm8gZm9yIEdyYXBoUUwgcmVzb2x2ZXJzXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1Jlc29sdmVJbmZvID0gKGZpZWxkTmFtZTogc3RyaW5nID0gJ3Rlc3QnKTogR3JhcGhRTFJlc29sdmVJbmZvID0+IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCBvcGVyYXRpb24gPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ29wZXJhdGlvbiddO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IHBhcmVudFR5cGUgPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ3BhcmVudFR5cGUnXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCByZXR1cm5UeXBlID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydyZXR1cm5UeXBlJ107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgY29uc3Qgc2NoZW1hID0ge30gYXMgR3JhcGhRTFJlc29sdmVJbmZvWydzY2hlbWEnXTtcblxuICByZXR1cm4ge1xuICAgIGZpZWxkTmFtZSxcbiAgICBmaWVsZE5vZGVzOiBbXSxcbiAgICBmcmFnbWVudHM6IHt9LFxuICAgIG9wZXJhdGlvbixcbiAgICBwYXJlbnRUeXBlLFxuICAgIHBhdGg6IHtrZXk6IGZpZWxkTmFtZSwgcHJldjogdW5kZWZpbmVkLCB0eXBlbmFtZTogJ1Rlc3QnfSxcbiAgICByZXR1cm5UeXBlLFxuICAgIHJvb3RWYWx1ZToge30sXG4gICAgc2NoZW1hLFxuICAgIHZhcmlhYmxlVmFsdWVzOiB7fVxuICB9O1xufTtcblxuLy8gVXRpbGl0eSB0byBtb2NrIGFjdGlvbnMgbW9kdWxlXG5leHBvcnQgY29uc3QgbW9ja0FjdGlvbnNNb2R1bGUgPSBhc3luYyAobW9kdWxlUGF0aDogc3RyaW5nLCBtb2NrQWN0aW9uczogUmVjb3JkPHN0cmluZywgamVzdC5Nb2NrPikgPT4ge1xuICBjb25zdCBtb2NrcyA9IE9iamVjdC5lbnRyaWVzKG1vY2tBY3Rpb25zKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgYWNjW2tleV0gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKHZhbHVlKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBqZXN0Lk1vY2s+KTtcblxuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZShtb2R1bGVQYXRoLCAoKSA9PiAoe1xuICAgICAgX19lc01vZHVsZTogdHJ1ZSxcbiAgICAgIC4uLm1vY2tzLFxuICAgICAgZGVmYXVsdDogbW9ja3NcbiAgICB9KSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBtb2NrIG9iamVjdCB0eXBlc1xuZXhwb3J0IGNvbnN0IG1vY2tPYmplY3RUeXBlID0gYXN5bmMgKG1vZHVsZVBhdGg6IHN0cmluZywgdHlwZU5hbWU6IHN0cmluZykgPT4ge1xuICBjb25zdCBtb2NrID0ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgW3R5cGVOYW1lXToge1xuICAgICAgZ2V0RmllbGQ6IGplc3QuZm4oKCkgPT4gKHtyZXNvbHZlOiBqZXN0LmZuKCl9KSksXG4gICAgICBnZXRGaWVsZHM6IGplc3QuZm4oKCkgPT4gKHt9KSlcbiAgICB9LFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIFt0eXBlTmFtZV06IHtcbiAgICAgICAgZ2V0RmllbGQ6IGplc3QuZm4oKCkgPT4gKHtyZXNvbHZlOiBqZXN0LmZuKCl9KSksXG4gICAgICAgIGdldEZpZWxkczogamVzdC5mbigoKSA9PiAoe30pKVxuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgYXdhaXQgamVzdC5pc29sYXRlTW9kdWxlc0FzeW5jKGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnVuc3RhYmxlX21vY2tNb2R1bGUobW9kdWxlUGF0aCwgKCkgPT4gbW9jayk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGZvciBxdWVyeSByZXNvbHZlcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVRdWVyeVRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgbW9ja1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgZXJyb3JDYXNlPzogYm9vbGVhbjtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShgJHtuYW1lfSBRdWVyaWVzYCwgKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBhbnk7XG4gICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGFjdGlvbk5hbWUsIGFyZ3MsIGV4cGVjdGVkQ2FsbCwgbW9ja1JldHVyblZhbHVlLCBlcnJvckNhc2UgPSBmYWxzZX0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY2FsbCAke2FjdGlvbk5hbWV9IGFjdGlvbiB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUobW9ja1JldHVyblZhbHVlKSk7XG4gICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKG1vY2tSZXR1cm5WYWx1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaWYoZXJyb3JDYXNlKSB7XG4gICAgICAgIGl0KGBzaG91bGQgaGFuZGxlICR7YWN0aW9uTmFtZX0gd2hlbiBubyBkYXRhIGZvdW5kYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKG51bGwpKTtcbiAgICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZU51bGwoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgYSB0ZXN0IHN1aXRlIGZvciBtdXRhdGlvbiByZXNvbHZlcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVNdXRhdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgbW9ja1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgcmVxdWlyZXNBdXRoPzogYm9vbGVhbjtcbiAgICBhdXRoVXNlcklkPzogc3RyaW5nO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IE11dGF0aW9uc2AsICgpID0+IHtcbiAgICBsZXQgYWN0aW9uczogYW55O1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7XG4gICAgICBhY3Rpb25OYW1lLFxuICAgICAgYXJncyxcbiAgICAgIGV4cGVjdGVkQ2FsbCxcbiAgICAgIG1vY2tSZXR1cm5WYWx1ZSxcbiAgICAgIHJlcXVpcmVzQXV0aCA9IGZhbHNlLFxuICAgICAgYXV0aFVzZXJJZFxuICAgIH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgY2FsbCAke2FjdGlvbk5hbWV9IGFjdGlvbiB3aXRoIGNvcnJlY3QgcGFyYW1ldGVyc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICBpZihyZXF1aXJlc0F1dGggJiYgYXV0aFVzZXJJZCkge1xuICAgICAgICAgIChtb2NrQ29udGV4dC5zZXNzaW9uIGFzIHt1c2VySWQ6IHN0cmluZ30pLnVzZXJJZCA9IGF1dGhVc2VySWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShtb2NrUmV0dXJuVmFsdWUpKTtcbiAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwobW9ja1JldHVyblZhbHVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY3JlYXRlIGludGVncmF0aW9uIHRlc3Qgc3VpdGVcbmV4cG9ydCBjb25zdCBjcmVhdGVJbnRlZ3JhdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICBvYmplY3RUeXBlUGF0aDogc3RyaW5nLFxuICB0eXBlTmFtZTogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkQ2FsbDogKGNvbnRleHQ6IFRlc3RDb250ZXh0LCBhcmdzOiBUZXN0QXJncykgPT4gVGVzdEFyZ3M7XG4gICAgc3VjY2Vzc1JldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgZXJyb3JSZXR1cm5WYWx1ZTogVGVzdFJldHVyblZhbHVlO1xuICAgIHRlc3RFcnJvckNhc2U6IGJvb2xlYW47XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUoYCR7bmFtZX0gSW50ZWdyYXRpb25gLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcblxuICAgIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgICBhY3Rpb25zID0ge307XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe1xuICAgICAgbmFtZTogdGVzdE5hbWUsXG4gICAgICBhY3Rpb25OYW1lLFxuICAgICAgYXJncyxcbiAgICAgIGV4cGVjdGVkQ2FsbCxcbiAgICAgIHN1Y2Nlc3NSZXR1cm5WYWx1ZSxcbiAgICAgIGVycm9yUmV0dXJuVmFsdWUsXG4gICAgICB0ZXN0RXJyb3JDYXNlXG4gICAgfSkgPT4ge1xuICAgICAgZGVzY3JpYmUodGVzdE5hbWUsICgpID0+IHtcbiAgICAgICAgaXQoYHNob3VsZCByZXR1cm4gZGF0YSB3aGVuICR7YWN0aW9uTmFtZX0gc3VjY2VlZHNgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHN1Y2Nlc3NSZXR1cm5WYWx1ZSkpO1xuICAgICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoc3VjY2Vzc1JldHVyblZhbHVlIHx8IHt9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYodGVzdEVycm9yQ2FzZSkge1xuICAgICAgICAgIGl0KGBzaG91bGQgaGFuZGxlICR7YWN0aW9uTmFtZX0gd2hlbiBubyBkYXRhIGZvdW5kYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUoZXJyb3JSZXR1cm5WYWx1ZSkpO1xuICAgICAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbW9ja0ZuKG1vY2tDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICAgICAgZXhwZWN0KG1vY2tGbikudG9IYXZlQmVlbkNhbGxlZFdpdGgobW9ja0NvbnRleHQsIGV4cGVjdGVkQ2FsbChtb2NrQ29udGV4dCwgYXJncykpO1xuICAgICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChlcnJvclJldHVyblZhbHVlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gQ29tbW9uIG1vY2sgZGF0YSBnZW5lcmF0b3JzXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1VzZXIgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGVtYWlsOiAndGVzdEBleGFtcGxlLmNvbScsXG4gIGZpcnN0TmFtZTogJ1Rlc3QnLFxuICBsYXN0TmFtZTogJ1VzZXInLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIHVzZXJuYW1lOiAndGVzdHVzZXInLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1Bvc3QgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNvbnRlbnQ6ICdUZXN0IHBvc3QgY29udGVudCcsXG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBwb3N0SWQ6ICdwb3N0MScsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tNZXNzYWdlID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBjb250ZW50OiAnVGVzdCBtZXNzYWdlJyxcbiAgY29udmVyc2F0aW9uSWQ6ICdjb252MScsXG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBtZXNzYWdlSWQ6ICdtc2cxJyxcbiAgdXNlcklkOiAndXNlcjEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja1JlYWN0aW9uID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgcG9zdElkOiAncG9zdDEnLFxuICByZWFjdGlvbklkOiAncmVhY3QxJyxcbiAgdHlwZTogJ2xpa2UnLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrVGFnID0gKG92ZXJyaWRlczogTW9ja092ZXJyaWRlcyA9IHt9KSA9PiAoe1xuICBkZXNjcmlwdGlvbjogJ1Rlc3QgdGFnIGRlc2NyaXB0aW9uJyxcbiAgbmFtZTogJ3Rlc3QtdGFnJyxcbiAgdGFnSWQ6ICd0YWcxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuLy8gVXRpbGl0eSB0byBzZXQgdXAgY29tbW9uIG1vY2tzXG5leHBvcnQgY29uc3Qgc2V0dXBDb21tb25Nb2NrcyA9IGFzeW5jICgpID0+IHtcbiAgY29uc3QgbW9jayA9IHtcbiAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgIHVzZURiOiBqZXN0LmZuKCksXG4gICAgZ2V0TGltaXQ6IGplc3QuZm4oKSxcbiAgICBnZXREb2NJZDogamVzdC5mbigpLFxuICAgIHNvcnRJZHM6IGplc3QuZm4oKSxcbiAgICBnZXRHcWxGaWVsZHM6IGplc3QuZm4oKSxcbiAgICBkZWZhdWx0OiB7XG4gICAgICB1c2VEYjogamVzdC5mbigpLFxuICAgICAgZ2V0TGltaXQ6IGplc3QuZm4oKSxcbiAgICAgIGdldERvY0lkOiBqZXN0LmZuKCksXG4gICAgICBzb3J0SWRzOiBqZXN0LmZuKCksXG4gICAgICBnZXRHcWxGaWVsZHM6IGplc3QuZm4oKVxuICAgIH1cbiAgfTtcbiAgYXdhaXQgamVzdC5pc29sYXRlTW9kdWxlc0FzeW5jKGFzeW5jICgpID0+IHtcbiAgICBqZXN0LnVuc3RhYmxlX21vY2tNb2R1bGUoJy4vYXJhbmdvZGJVdGlscy5qcycsICgpID0+IG1vY2spO1xuICB9KTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY2xlYXIgYWxsIG1vY2tzXG5leHBvcnQgY29uc3QgY2xlYXJBbGxNb2NrcyA9ICgpID0+IHtcbiAgamVzdC5jbGVhckFsbE1vY2tzKCk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIGFjdGlvbiBmdW5jdGlvbnNcbmV4cG9ydCBjb25zdCBjcmVhdGVBY3Rpb25UZXN0U3VpdGUgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgYWN0aW9uc1BhdGg6IHN0cmluZyxcbiAgdGVzdENhc2VzOiBBcnJheTx7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFjdGlvbk5hbWU6IHN0cmluZztcbiAgICBhcmdzOiBUZXN0QXJncztcbiAgICBtb2NrUXVlcnk6IGplc3QuTW9jaztcbiAgICBleHBlY3RlZFJlc3VsdDogVGVzdFJldHVyblZhbHVlO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IGFjdGlvbnNgLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcblxuICAgIGJlZm9yZUFsbChhc3luYyAoKSA9PiB7XG4gICAgICBhY3Rpb25zID0gYXdhaXQgaW1wb3J0KGFjdGlvbnNQYXRoKTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGFjdGlvbk5hbWUsIGFyZ3MsIG1vY2tRdWVyeSwgZXhwZWN0ZWRSZXN1bHR9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkIGV4ZWN1dGUgJHthY3Rpb25OYW1lfWAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgY29uc3QgbW9ja0NvbnRleHQgPSBjcmVhdGVNb2NrQ29udGV4dCgpO1xuICAgICAgICBjb25zdCBtb2NrRGIgPSBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICBxdWVyeTogbW9ja1F1ZXJ5XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBhY3R1YWwgPSBqZXN0LnJlcXVpcmVBY3R1YWwoJy4vYXJhbmdvZGJVdGlscy5qcycpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICBqZXN0LmRvTW9jaygnLi9hcmFuZ29kYlV0aWxzLmpzJywgKCkgPT4gKHtcbiAgICAgICAgICB1c2VEYjogbW9ja0RiLFxuICAgICAgICAgIC4uLmFjdHVhbFxuICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgKGFjdGlvbnNbYWN0aW9uTmFtZV0gYXMgamVzdC5Nb2NrKShtb2NrQ29udGV4dCwgYXJncyk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRSZXN1bHQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUFkYXB0ZXJUZXN0U3VpdGUgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgYWRhcHRlclBhdGg6IHN0cmluZyxcbiAgdGVzdENhc2VzOiBhbnlbXVxuKSA9PiB7XG4gIGRlc2NyaWJlKG5hbWUsICgpID0+IHtcbiAgICBsZXQgYWRhcHRlcjogYW55O1xuXG4gICAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICAgIGFkYXB0ZXIgPSBhd2FpdCBpbXBvcnQoYWRhcHRlclBhdGgpO1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtuYW1lOiB0ZXN0TmFtZSwgaW5wdXQsIGV4cGVjdGVkT3V0cHV0fSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCAke3Rlc3ROYW1lfWAsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gKGFkYXB0ZXIgYXMge3BhcnNlVGFnOiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5wYXJzZVRhZyhpbnB1dCk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVV0aWxzVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIHV0aWxzUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgaW5wdXQ6IFRlc3RBcmdzO1xuICAgIGV4cGVjdGVkT3V0cHV0OiBUZXN0UmV0dXJuVmFsdWU7XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUobmFtZSwgKCkgPT4ge1xuICAgIGxldCB1dGlsczogYW55O1xuXG4gICAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICAgIHV0aWxzID0gYXdhaXQgaW1wb3J0KHV0aWxzUGF0aCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe25hbWU6IHRlc3ROYW1lLCBpbnB1dCwgZXhwZWN0ZWRPdXRwdXR9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkICR7dGVzdE5hbWV9YCwgKCkgPT4ge1xuICAgICAgICBsZXQgcmVzdWx0O1xuICAgICAgICBpZigodXRpbHMgYXMge2xvZ0luZm8/OiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5sb2dJbmZvKSB7XG4gICAgICAgICAgcmVzdWx0ID0gKHV0aWxzIGFzIHtsb2dJbmZvOiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5sb2dJbmZvKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIGlmKCh1dGlscyBhcyB7cmVtb3ZlRW1wdHlLZXlzPzogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkucmVtb3ZlRW1wdHlLZXlzKSB7XG4gICAgICAgICAgcmVzdWx0ID0gKHV0aWxzIGFzIHtyZW1vdmVFbXB0eUtleXM6IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLnJlbW92ZUVtcHR5S2V5cyhpbnB1dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzdWl0YWJsZSBmdW5jdGlvbiBmb3VuZCBpbiAke3V0aWxzUGF0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGV4cGVjdGVkT3V0cHV0KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn07Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsT0FBUSxRQUFBQSxNQUFXLGdCQVlaLE1BQU1DLEVBQW9CLENBQUNDLEVBQTJCLENBQUMsSUFBa0IsQ0FDOUUsTUFBTUMsRUFBaUIsQ0FDckIsV0FBWSxFQUNaLE9BQVEsUUFDUixTQUFVLFVBQ1osRUFDTUMsRUFBa0RGLEVBQVUsU0FBVyxDQUFDLEVBQ3hFRyxFQUF1QixDQUMzQixhQUFlSCxFQUFVLGNBQTJCLE9BQ3BELEdBQUdBLENBQ0wsRUFDQSxjQUFPRyxFQUFRLFFBQ2ZBLEVBQVEsUUFBVSxDQUNoQixXQUFZRCxFQUFnQixhQUFlLE9BQVlBLEVBQWdCLFdBQWFELEVBQWUsV0FDbkcsT0FBUUMsRUFBZ0IsU0FBVyxPQUFZQSxFQUFnQixPQUFTRCxFQUFlLE9BQ3ZGLFNBQVVDLEVBQWdCLFdBQWEsT0FBWUEsRUFBZ0IsU0FBV0QsRUFBZSxRQUMvRixFQUNPRSxDQUNULEVBR2FDLEVBQXdCLENBQUNDLEVBQW9CLFVBVWpELENBQ0wsVUFBQUEsRUFDQSxXQUFZLENBQUMsRUFDYixVQUFXLENBQUMsRUFDWixVQVpnQixDQUFDLEVBYWpCLFdBWGlCLENBQUMsRUFZbEIsS0FBTSxDQUFDLElBQUtBLEVBQVcsS0FBTSxPQUFXLFNBQVUsTUFBTSxFQUN4RCxXQVhpQixDQUFDLEVBWWxCLFVBQVcsQ0FBQyxFQUNaLE9BWGEsQ0FBQyxFQVlkLGVBQWdCLENBQUMsQ0FDbkIsR0FJV0MsRUFBb0IsTUFBT0MsRUFBb0JDLElBQTJDLENBQ3JHLE1BQU1DLEVBQVEsT0FBTyxRQUFRRCxDQUFXLEVBQUUsT0FBTyxDQUFDRSxFQUFLLENBQUNDLEVBQUtDLENBQUssS0FDaEVGLEVBQUlDLENBQUcsRUFBSWIsRUFBSyxHQUFHLEVBQUUsbUJBQW1CYyxDQUFLLEVBQ3RDRixHQUNOLENBQUMsQ0FBOEIsRUFFbEMsTUFBTVosRUFBSyxvQkFBb0IsU0FBWSxDQUN6Q0EsRUFBSyxv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LElBQU0sQ0FDN0IsTUFBTU8sRUFBVXVCLEVBQTZELFNBQVNDLENBQUssRUFDM0YsT0FBT3hCLENBQU0sRUFBRSxRQUFReUIsQ0FBYyxDQUN2QyxDQUFDLENBQ0gsQ0FBQyxDQUNILENBQUMsQ0FDSCxFQUVhQyxFQUF1QixDQUNsQ3RDLEVBQ0F1QyxFQUNBckMsSUFLRyxDQUNILFNBQVNGLEVBQU0sSUFBTSxDQUNuQixJQUFJd0MsRUFFSixVQUFVLFNBQVksQ0FDcEJBLEVBQVEsTUFBTSxPQUFPRCxFQUN2QixDQUFDLEVBRURyQyxFQUFVLFFBQVEsQ0FBQyxDQUFDLEtBQU1HLEVBQVUsTUFBQStCLEVBQU8sZUFBQUMsQ0FBYyxJQUFNLENBQzdELEdBQUcsVUFBVWhDLENBQVEsR0FBSSxJQUFNLENBQzdCLElBQUlPLEVBQ0osR0FBSTRCLEVBQTJELFFBQzdENUIsRUFBVTRCLEVBQTBELFFBQVFKLENBQUssVUFDeEVJLEVBQW1FLGdCQUM1RTVCLEVBQVU0QixFQUFrRSxnQkFBZ0JKLENBQUssTUFFakcsT0FBTSxJQUFJLE1BQU0saUNBQWlDRyxDQUFTLEVBQUUsRUFFOUQsT0FBTzNCLENBQU0sRUFBRSxRQUFReUIsQ0FBYyxDQUN2QyxDQUFDLENBQ0gsQ0FBQyxDQUNILENBQUMsQ0FDSCIsCiAgIm5hbWVzIjogWyJqZXN0IiwgImNyZWF0ZU1vY2tDb250ZXh0IiwgIm92ZXJyaWRlcyIsICJkZWZhdWx0U2Vzc2lvbiIsICJvdmVycmlkZVNlc3Npb24iLCAiY29udGV4dCIsICJjcmVhdGVNb2NrUmVzb2x2ZUluZm8iLCAiZmllbGROYW1lIiwgIm1vY2tBY3Rpb25zTW9kdWxlIiwgIm1vZHVsZVBhdGgiLCAibW9ja0FjdGlvbnMiLCAibW9ja3MiLCAiYWNjIiwgImtleSIsICJ2YWx1ZSIsICJtb2NrT2JqZWN0VHlwZSIsICJ0eXBlTmFtZSIsICJtb2NrIiwgImNyZWF0ZVF1ZXJ5VGVzdFN1aXRlIiwgIm5hbWUiLCAiYWN0aW9uc1BhdGgiLCAidGVzdENhc2VzIiwgImFjdGlvbnMiLCAibW9ja0NvbnRleHQiLCAidGVzdE5hbWUiLCAiYWN0aW9uTmFtZSIsICJhcmdzIiwgImV4cGVjdGVkQ2FsbCIsICJtb2NrUmV0dXJuVmFsdWUiLCAiZXJyb3JDYXNlIiwgIm1vY2tGbiIsICJyZXN1bHQiLCAiY3JlYXRlTXV0YXRpb25UZXN0U3VpdGUiLCAicmVxdWlyZXNBdXRoIiwgImF1dGhVc2VySWQiLCAiY3JlYXRlSW50ZWdyYXRpb25UZXN0U3VpdGUiLCAib2JqZWN0VHlwZVBhdGgiLCAic3VjY2Vzc1JldHVyblZhbHVlIiwgImVycm9yUmV0dXJuVmFsdWUiLCAidGVzdEVycm9yQ2FzZSIsICJjcmVhdGVNb2NrVXNlciIsICJjcmVhdGVNb2NrUG9zdCIsICJjcmVhdGVNb2NrTWVzc2FnZSIsICJjcmVhdGVNb2NrUmVhY3Rpb24iLCAiY3JlYXRlTW9ja1RhZyIsICJzZXR1cENvbW1vbk1vY2tzIiwgImNsZWFyQWxsTW9ja3MiLCAiY3JlYXRlQWN0aW9uVGVzdFN1aXRlIiwgIm1vY2tRdWVyeSIsICJleHBlY3RlZFJlc3VsdCIsICJtb2NrRGIiLCAiYWN0dWFsIiwgImNyZWF0ZUFkYXB0ZXJUZXN0U3VpdGUiLCAiYWRhcHRlclBhdGgiLCAiYWRhcHRlciIsICJpbnB1dCIsICJleHBlY3RlZE91dHB1dCIsICJjcmVhdGVVdGlsc1Rlc3RTdWl0ZSIsICJ1dGlsc1BhdGgiLCAidXRpbHMiXQp9Cg==
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { jest } from '@jest/globals';
|
|
5
|
+
export const createMockContext = (overrides = {})=>{
|
|
6
|
+
const defaultSession = {
|
|
7
|
+
userAccess: 1,
|
|
8
|
+
userId: 'user1',
|
|
9
|
+
username: 'testuser'
|
|
10
|
+
};
|
|
11
|
+
const overrideSession = overrides.session || {};
|
|
12
|
+
const context = {
|
|
13
|
+
databaseName: overrides.databaseName ?? 'test',
|
|
14
|
+
...overrides
|
|
15
|
+
};
|
|
16
|
+
delete context.session;
|
|
17
|
+
context.session = {
|
|
18
|
+
userAccess: overrideSession.userAccess !== undefined ? overrideSession.userAccess : defaultSession.userAccess,
|
|
19
|
+
userId: overrideSession.userId !== undefined ? overrideSession.userId : defaultSession.userId,
|
|
20
|
+
username: overrideSession.username !== undefined ? overrideSession.username : defaultSession.username
|
|
21
|
+
};
|
|
22
|
+
return context;
|
|
23
|
+
};
|
|
24
|
+
// Common mock resolve info for GraphQL resolvers
|
|
25
|
+
export const createMockResolveInfo = (fieldName = 'test')=>{
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
27
|
+
const operation = {};
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
29
|
+
const parentType = {};
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
31
|
+
const returnType = {};
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
33
|
+
const schema = {};
|
|
34
|
+
return {
|
|
35
|
+
fieldName,
|
|
36
|
+
fieldNodes: [],
|
|
37
|
+
fragments: {},
|
|
38
|
+
operation,
|
|
39
|
+
parentType,
|
|
40
|
+
path: {
|
|
41
|
+
key: fieldName,
|
|
42
|
+
prev: undefined,
|
|
43
|
+
typename: 'Test'
|
|
44
|
+
},
|
|
45
|
+
returnType,
|
|
46
|
+
rootValue: {},
|
|
47
|
+
schema,
|
|
48
|
+
variableValues: {}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
// Utility to mock actions module
|
|
52
|
+
export const mockActionsModule = async (modulePath, mockActions)=>{
|
|
53
|
+
const mocks = Object.entries(mockActions).reduce((acc, [key, value])=>{
|
|
54
|
+
acc[key] = jest.fn().mockImplementation(value);
|
|
55
|
+
return acc;
|
|
56
|
+
}, {});
|
|
57
|
+
await jest.isolateModulesAsync(async ()=>{
|
|
58
|
+
jest.unstable_mockModule(modulePath, ()=>({
|
|
59
|
+
__esModule: true,
|
|
60
|
+
...mocks,
|
|
61
|
+
default: mocks
|
|
62
|
+
}));
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
// Utility to mock object types
|
|
66
|
+
export const mockObjectType = async (modulePath, typeName)=>{
|
|
67
|
+
const mock = {
|
|
68
|
+
__esModule: true,
|
|
69
|
+
[typeName]: {
|
|
70
|
+
getField: jest.fn(()=>({
|
|
71
|
+
resolve: jest.fn()
|
|
72
|
+
})),
|
|
73
|
+
getFields: jest.fn(()=>({}))
|
|
74
|
+
},
|
|
75
|
+
default: {
|
|
76
|
+
[typeName]: {
|
|
77
|
+
getField: jest.fn(()=>({
|
|
78
|
+
resolve: jest.fn()
|
|
79
|
+
})),
|
|
80
|
+
getFields: jest.fn(()=>({}))
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
await jest.isolateModulesAsync(async ()=>{
|
|
85
|
+
jest.unstable_mockModule(modulePath, ()=>mock);
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
// Utility to create a test suite for query resolvers
|
|
89
|
+
export const createQueryTestSuite = (name, actionsPath, testCases)=>{
|
|
90
|
+
describe(`${name} Queries`, ()=>{
|
|
91
|
+
let actions;
|
|
92
|
+
const mockContext = createMockContext();
|
|
93
|
+
beforeAll(()=>{
|
|
94
|
+
actions = {};
|
|
95
|
+
});
|
|
96
|
+
testCases.forEach(({ name: testName, actionName, args, expectedCall, mockReturnValue, errorCase = false })=>{
|
|
97
|
+
it(`should call ${actionName} action with correct parameters`, async ()=>{
|
|
98
|
+
const mockFn = jest.fn().mockImplementation(()=>Promise.resolve(mockReturnValue));
|
|
99
|
+
actions[actionName] = mockFn;
|
|
100
|
+
const result = await mockFn(mockContext, args);
|
|
101
|
+
expect(mockFn).toHaveBeenCalledWith(mockContext, expectedCall(mockContext, args));
|
|
102
|
+
expect(result).toEqual(mockReturnValue);
|
|
103
|
+
});
|
|
104
|
+
if (errorCase) {
|
|
105
|
+
it(`should handle ${actionName} when no data found`, async ()=>{
|
|
106
|
+
const mockFn = jest.fn().mockImplementation(()=>Promise.resolve(null));
|
|
107
|
+
actions[actionName] = mockFn;
|
|
108
|
+
const result = await mockFn(mockContext, args);
|
|
109
|
+
expect(mockFn).toHaveBeenCalledWith(mockContext, expectedCall(mockContext, args));
|
|
110
|
+
expect(result).toBeNull();
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
// Utility to create a test suite for mutation resolvers
|
|
117
|
+
export const createMutationTestSuite = (name, actionsPath, testCases)=>{
|
|
118
|
+
describe(`${name} Mutations`, ()=>{
|
|
119
|
+
let actions;
|
|
120
|
+
beforeAll(()=>{
|
|
121
|
+
actions = {};
|
|
122
|
+
});
|
|
123
|
+
testCases.forEach(({ actionName, args, expectedCall, mockReturnValue, requiresAuth = false, authUserId })=>{
|
|
124
|
+
it(`should call ${actionName} action with correct parameters`, async ()=>{
|
|
125
|
+
const mockContext = createMockContext();
|
|
126
|
+
if (requiresAuth && authUserId) {
|
|
127
|
+
mockContext.session.userId = authUserId;
|
|
128
|
+
}
|
|
129
|
+
const mockFn = jest.fn().mockImplementation(()=>Promise.resolve(mockReturnValue));
|
|
130
|
+
actions[actionName] = mockFn;
|
|
131
|
+
const result = await mockFn(mockContext, args);
|
|
132
|
+
expect(mockFn).toHaveBeenCalledWith(mockContext, expectedCall(mockContext, args));
|
|
133
|
+
expect(result).toEqual(mockReturnValue);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
// Utility to create integration test suite
|
|
139
|
+
export const createIntegrationTestSuite = (name, actionsPath, objectTypePath, typeName, testCases)=>{
|
|
140
|
+
describe(`${name} Integration`, ()=>{
|
|
141
|
+
let actions;
|
|
142
|
+
beforeAll(()=>{
|
|
143
|
+
actions = {};
|
|
144
|
+
});
|
|
145
|
+
testCases.forEach(({ name: testName, actionName, args, expectedCall, successReturnValue, errorReturnValue, testErrorCase })=>{
|
|
146
|
+
describe(testName, ()=>{
|
|
147
|
+
it(`should return data when ${actionName} succeeds`, async ()=>{
|
|
148
|
+
const mockContext = createMockContext();
|
|
149
|
+
const mockFn = jest.fn().mockImplementation(()=>Promise.resolve(successReturnValue));
|
|
150
|
+
actions[actionName] = mockFn;
|
|
151
|
+
const result = await mockFn(mockContext, args);
|
|
152
|
+
expect(mockFn).toHaveBeenCalledWith(mockContext, expectedCall(mockContext, args));
|
|
153
|
+
expect(result).toEqual(successReturnValue || {});
|
|
154
|
+
});
|
|
155
|
+
if (testErrorCase) {
|
|
156
|
+
it(`should handle ${actionName} when no data found`, async ()=>{
|
|
157
|
+
const mockContext = createMockContext();
|
|
158
|
+
const mockFn = jest.fn().mockImplementation(()=>Promise.resolve(errorReturnValue));
|
|
159
|
+
actions[actionName] = mockFn;
|
|
160
|
+
const result = await mockFn(mockContext, args);
|
|
161
|
+
expect(mockFn).toHaveBeenCalledWith(mockContext, expectedCall(mockContext, args));
|
|
162
|
+
expect(result).toEqual(errorReturnValue);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
};
|
|
169
|
+
// Common mock data generators
|
|
170
|
+
export const createMockUser = (overrides = {})=>({
|
|
171
|
+
email: 'test@example.com',
|
|
172
|
+
firstName: 'Test',
|
|
173
|
+
lastName: 'User',
|
|
174
|
+
userId: 'user1',
|
|
175
|
+
username: 'testuser',
|
|
176
|
+
...overrides
|
|
177
|
+
});
|
|
178
|
+
export const createMockPost = (overrides = {})=>({
|
|
179
|
+
content: 'Test post content',
|
|
180
|
+
createdAt: new Date().toISOString(),
|
|
181
|
+
postId: 'post1',
|
|
182
|
+
userId: 'user1',
|
|
183
|
+
...overrides
|
|
184
|
+
});
|
|
185
|
+
export const createMockMessage = (overrides = {})=>({
|
|
186
|
+
content: 'Test message',
|
|
187
|
+
conversationId: 'conv1',
|
|
188
|
+
createdAt: new Date().toISOString(),
|
|
189
|
+
messageId: 'msg1',
|
|
190
|
+
userId: 'user1',
|
|
191
|
+
...overrides
|
|
192
|
+
});
|
|
193
|
+
export const createMockReaction = (overrides = {})=>({
|
|
194
|
+
createdAt: new Date().toISOString(),
|
|
195
|
+
postId: 'post1',
|
|
196
|
+
reactionId: 'react1',
|
|
197
|
+
type: 'like',
|
|
198
|
+
userId: 'user1',
|
|
199
|
+
...overrides
|
|
200
|
+
});
|
|
201
|
+
export const createMockTag = (overrides = {})=>({
|
|
202
|
+
description: 'Test tag description',
|
|
203
|
+
name: 'test-tag',
|
|
204
|
+
tagId: 'tag1',
|
|
205
|
+
...overrides
|
|
206
|
+
});
|
|
207
|
+
// Utility to set up common mocks
|
|
208
|
+
export const setupCommonMocks = async ()=>{
|
|
209
|
+
const mock = {
|
|
210
|
+
__esModule: true,
|
|
211
|
+
useDb: jest.fn(),
|
|
212
|
+
getLimit: jest.fn(),
|
|
213
|
+
getDocId: jest.fn(),
|
|
214
|
+
sortIds: jest.fn(),
|
|
215
|
+
getGqlFields: jest.fn(),
|
|
216
|
+
default: {
|
|
217
|
+
useDb: jest.fn(),
|
|
218
|
+
getLimit: jest.fn(),
|
|
219
|
+
getDocId: jest.fn(),
|
|
220
|
+
sortIds: jest.fn(),
|
|
221
|
+
getGqlFields: jest.fn()
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
await jest.isolateModulesAsync(async ()=>{
|
|
225
|
+
jest.unstable_mockModule('./arangodbUtils.js', ()=>mock);
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
// Utility to clear all mocks
|
|
229
|
+
export const clearAllMocks = ()=>{
|
|
230
|
+
jest.clearAllMocks();
|
|
231
|
+
};
|
|
232
|
+
// Utility to create a test suite for action functions
|
|
233
|
+
export const createActionTestSuite = (name, actionsPath, testCases)=>{
|
|
234
|
+
describe(`${name} actions`, ()=>{
|
|
235
|
+
let actions;
|
|
236
|
+
beforeAll(async ()=>{
|
|
237
|
+
actions = await import(actionsPath);
|
|
238
|
+
});
|
|
239
|
+
testCases.forEach(({ name: testName, actionName, args, mockQuery, expectedResult })=>{
|
|
240
|
+
it(`should execute ${actionName}`, async ()=>{
|
|
241
|
+
const mockContext = createMockContext();
|
|
242
|
+
const mockDb = jest.fn().mockReturnValue({
|
|
243
|
+
query: mockQuery
|
|
244
|
+
});
|
|
245
|
+
const actual = jest.requireActual('./arangodbUtils.js');
|
|
246
|
+
jest.doMock('./arangodbUtils.js', ()=>({
|
|
247
|
+
useDb: mockDb,
|
|
248
|
+
...actual
|
|
249
|
+
}));
|
|
250
|
+
const result = await actions[actionName](mockContext, args);
|
|
251
|
+
expect(result).toEqual(expectedResult);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
export const createAdapterTestSuite = (name, adapterPath, testCases)=>{
|
|
257
|
+
describe(name, ()=>{
|
|
258
|
+
let adapter;
|
|
259
|
+
beforeAll(async ()=>{
|
|
260
|
+
adapter = await import(adapterPath);
|
|
261
|
+
});
|
|
262
|
+
testCases.forEach(({ name: testName, input, expectedOutput })=>{
|
|
263
|
+
it(`should ${testName}`, ()=>{
|
|
264
|
+
const result = adapter.parseTag(input);
|
|
265
|
+
expect(result).toEqual(expectedOutput);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
};
|
|
270
|
+
export const createUtilsTestSuite = (name, utilsPath, testCases)=>{
|
|
271
|
+
describe(name, ()=>{
|
|
272
|
+
let utils;
|
|
273
|
+
beforeAll(async ()=>{
|
|
274
|
+
utils = await import(utilsPath);
|
|
275
|
+
});
|
|
276
|
+
testCases.forEach(({ name: testName, input, expectedOutput })=>{
|
|
277
|
+
it(`should ${testName}`, ()=>{
|
|
278
|
+
let result;
|
|
279
|
+
if (utils.logInfo) {
|
|
280
|
+
result = utils.logInfo(input);
|
|
281
|
+
} else if (utils.removeEmptyKeys) {
|
|
282
|
+
result = utils.removeEmptyKeys(input);
|
|
283
|
+
} else {
|
|
284
|
+
throw new Error(`No suitable function found in ${utilsPath}`);
|
|
285
|
+
}
|
|
286
|
+
expect(result).toEqual(expectedOutput);
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL3V0aWxzL3Rlc3RVdGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtqZXN0fSBmcm9tICdAamVzdC9nbG9iYWxzJztcbmltcG9ydCB0eXBlIHtHcmFwaFFMUmVzb2x2ZUluZm99IGZyb20gJ2dyYXBocWwnO1xuXG5cbmltcG9ydCB0eXBlIHtBcGlDb250ZXh0fSBmcm9tICcuLi90eXBlcy9hdXRoLnR5cGVzLmpzJztcblxuLy8gRGVmaW5lIHByb3BlciB0eXBlcyBmb3IgdGVzdCB1dGlsaXRpZXNcbnR5cGUgTW9ja092ZXJyaWRlcyA9IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xudHlwZSBUZXN0Q29udGV4dCA9IFBhcnRpYWw8QXBpQ29udGV4dD4gJiB7c2Vzc2lvbj86IFBhcnRpYWw8e3VzZXJJZDogc3RyaW5nOyB1c2VybmFtZTogc3RyaW5nOyB1c2VyQWNjZXNzOiBudW1iZXJ9Pn07XG50eXBlIFRlc3RBcmdzID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG50eXBlIFRlc3RSZXR1cm5WYWx1ZSA9IHVua25vd247XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrQ29udGV4dCA9IChvdmVycmlkZXM6IE1vY2tPdmVycmlkZXMgPSB7fSk6IEFwaUNvbnRleHQgPT4ge1xuICBjb25zdCBkZWZhdWx0U2Vzc2lvbiA9IHtcbiAgICB1c2VyQWNjZXNzOiAxLFxuICAgIHVzZXJJZDogJ3VzZXIxJyxcbiAgICB1c2VybmFtZTogJ3Rlc3R1c2VyJ1xuICB9O1xuICBjb25zdCBvdmVycmlkZVNlc3Npb246IFBhcnRpYWw8dHlwZW9mIGRlZmF1bHRTZXNzaW9uPiA9IG92ZXJyaWRlcy5zZXNzaW9uIHx8IHt9O1xuICBjb25zdCBjb250ZXh0OiBUZXN0Q29udGV4dCA9IHtcbiAgICBkYXRhYmFzZU5hbWU6IChvdmVycmlkZXMuZGF0YWJhc2VOYW1lIGFzIHN0cmluZykgPz8gJ3Rlc3QnLFxuICAgIC4uLm92ZXJyaWRlc1xuICB9O1xuICBkZWxldGUgY29udGV4dC5zZXNzaW9uO1xuICBjb250ZXh0LnNlc3Npb24gPSB7XG4gICAgdXNlckFjY2Vzczogb3ZlcnJpZGVTZXNzaW9uLnVzZXJBY2Nlc3MgIT09IHVuZGVmaW5lZCA/IG92ZXJyaWRlU2Vzc2lvbi51c2VyQWNjZXNzIDogZGVmYXVsdFNlc3Npb24udXNlckFjY2VzcyxcbiAgICB1c2VySWQ6IG92ZXJyaWRlU2Vzc2lvbi51c2VySWQgIT09IHVuZGVmaW5lZCA/IG92ZXJyaWRlU2Vzc2lvbi51c2VySWQgOiBkZWZhdWx0U2Vzc2lvbi51c2VySWQsXG4gICAgdXNlcm5hbWU6IG92ZXJyaWRlU2Vzc2lvbi51c2VybmFtZSAhPT0gdW5kZWZpbmVkID8gb3ZlcnJpZGVTZXNzaW9uLnVzZXJuYW1lIDogZGVmYXVsdFNlc3Npb24udXNlcm5hbWVcbiAgfTtcbiAgcmV0dXJuIGNvbnRleHQgYXMgQXBpQ29udGV4dDtcbn07XG5cbi8vIENvbW1vbiBtb2NrIHJlc29sdmUgaW5mbyBmb3IgR3JhcGhRTCByZXNvbHZlcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrUmVzb2x2ZUluZm8gPSAoZmllbGROYW1lOiBzdHJpbmcgPSAndGVzdCcpOiBHcmFwaFFMUmVzb2x2ZUluZm8gPT4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IG9wZXJhdGlvbiA9IHt9IGFzIEdyYXBoUUxSZXNvbHZlSW5mb1snb3BlcmF0aW9uJ107XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvY29uc2lzdGVudC10eXBlLWFzc2VydGlvbnNcbiAgY29uc3QgcGFyZW50VHlwZSA9IHt9IGFzIEdyYXBoUUxSZXNvbHZlSW5mb1sncGFyZW50VHlwZSddO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L2NvbnNpc3RlbnQtdHlwZS1hc3NlcnRpb25zXG4gIGNvbnN0IHJldHVyblR5cGUgPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ3JldHVyblR5cGUnXTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICBjb25zdCBzY2hlbWEgPSB7fSBhcyBHcmFwaFFMUmVzb2x2ZUluZm9bJ3NjaGVtYSddO1xuXG4gIHJldHVybiB7XG4gICAgZmllbGROYW1lLFxuICAgIGZpZWxkTm9kZXM6IFtdLFxuICAgIGZyYWdtZW50czoge30sXG4gICAgb3BlcmF0aW9uLFxuICAgIHBhcmVudFR5cGUsXG4gICAgcGF0aDoge2tleTogZmllbGROYW1lLCBwcmV2OiB1bmRlZmluZWQsIHR5cGVuYW1lOiAnVGVzdCd9LFxuICAgIHJldHVyblR5cGUsXG4gICAgcm9vdFZhbHVlOiB7fSxcbiAgICBzY2hlbWEsXG4gICAgdmFyaWFibGVWYWx1ZXM6IHt9XG4gIH07XG59O1xuXG4vLyBVdGlsaXR5IHRvIG1vY2sgYWN0aW9ucyBtb2R1bGVcbmV4cG9ydCBjb25zdCBtb2NrQWN0aW9uc01vZHVsZSA9IGFzeW5jIChtb2R1bGVQYXRoOiBzdHJpbmcsIG1vY2tBY3Rpb25zOiBSZWNvcmQ8c3RyaW5nLCBqZXN0Lk1vY2s+KSA9PiB7XG4gIGNvbnN0IG1vY2tzID0gT2JqZWN0LmVudHJpZXMobW9ja0FjdGlvbnMpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICBhY2Nba2V5XSA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24odmFsdWUpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIGplc3QuTW9jaz4pO1xuXG4gIGF3YWl0IGplc3QuaXNvbGF0ZU1vZHVsZXNBc3luYyhhc3luYyAoKSA9PiB7XG4gICAgamVzdC51bnN0YWJsZV9tb2NrTW9kdWxlKG1vZHVsZVBhdGgsICgpID0+ICh7XG4gICAgICBfX2VzTW9kdWxlOiB0cnVlLFxuICAgICAgLi4ubW9ja3MsXG4gICAgICBkZWZhdWx0OiBtb2Nrc1xuICAgIH0pKTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIG1vY2sgb2JqZWN0IHR5cGVzXG5leHBvcnQgY29uc3QgbW9ja09iamVjdFR5cGUgPSBhc3luYyAobW9kdWxlUGF0aDogc3RyaW5nLCB0eXBlTmFtZTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG1vY2sgPSB7XG4gICAgX19lc01vZHVsZTogdHJ1ZSxcbiAgICBbdHlwZU5hbWVdOiB7XG4gICAgICBnZXRGaWVsZDogamVzdC5mbigoKSA9PiAoe3Jlc29sdmU6IGplc3QuZm4oKX0pKSxcbiAgICAgIGdldEZpZWxkczogamVzdC5mbigoKSA9PiAoe30pKVxuICAgIH0sXG4gICAgZGVmYXVsdDoge1xuICAgICAgW3R5cGVOYW1lXToge1xuICAgICAgICBnZXRGaWVsZDogamVzdC5mbigoKSA9PiAoe3Jlc29sdmU6IGplc3QuZm4oKX0pKSxcbiAgICAgICAgZ2V0RmllbGRzOiBqZXN0LmZuKCgpID0+ICh7fSkpXG4gICAgICB9XG4gICAgfVxuICB9O1xuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZShtb2R1bGVQYXRoLCAoKSA9PiBtb2NrKTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIHF1ZXJ5IHJlc29sdmVyc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZVF1ZXJ5VGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBtb2NrUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICBlcnJvckNhc2U/OiBib29sZWFuO1xuICB9PlxuKSA9PiB7XG4gIGRlc2NyaWJlKGAke25hbWV9IFF1ZXJpZXNgLCAoKSA9PiB7XG4gICAgbGV0IGFjdGlvbnM6IGFueTtcbiAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG5cbiAgICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgICAgYWN0aW9ucyA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtuYW1lOiB0ZXN0TmFtZSwgYWN0aW9uTmFtZSwgYXJncywgZXhwZWN0ZWRDYWxsLCBtb2NrUmV0dXJuVmFsdWUsIGVycm9yQ2FzZSA9IGZhbHNlfSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBjYWxsICR7YWN0aW9uTmFtZX0gYWN0aW9uIHdpdGggY29ycmVjdCBwYXJhbWV0ZXJzYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShtb2NrUmV0dXJuVmFsdWUpKTtcbiAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwobW9ja1JldHVyblZhbHVlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpZihlcnJvckNhc2UpIHtcbiAgICAgICAgaXQoYHNob3VsZCBoYW5kbGUgJHthY3Rpb25OYW1lfSB3aGVuIG5vIGRhdGEgZm91bmRgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUobnVsbCkpO1xuICAgICAgICAgIGFjdGlvbnNbYWN0aW9uTmFtZV0gPSBtb2NrRm47XG5cbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuICAgICAgICAgIGV4cGVjdChtb2NrRm4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG1vY2tDb250ZXh0LCBleHBlY3RlZENhbGwobW9ja0NvbnRleHQsIGFyZ3MpKTtcbiAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0JlTnVsbCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBVdGlsaXR5IHRvIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgZm9yIG11dGF0aW9uIHJlc29sdmVyc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZU11dGF0aW9uVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBtb2NrUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICByZXF1aXJlc0F1dGg/OiBib29sZWFuO1xuICAgIGF1dGhVc2VySWQ/OiBzdHJpbmc7XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUoYCR7bmFtZX0gTXV0YXRpb25zYCwgKCkgPT4ge1xuICAgIGxldCBhY3Rpb25zOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgICAgYWN0aW9ucyA9IHt9O1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtcbiAgICAgIGFjdGlvbk5hbWUsXG4gICAgICBhcmdzLFxuICAgICAgZXhwZWN0ZWRDYWxsLFxuICAgICAgbW9ja1JldHVyblZhbHVlLFxuICAgICAgcmVxdWlyZXNBdXRoID0gZmFsc2UsXG4gICAgICBhdXRoVXNlcklkXG4gICAgfSkgPT4ge1xuICAgICAgaXQoYHNob3VsZCBjYWxsICR7YWN0aW9uTmFtZX0gYWN0aW9uIHdpdGggY29ycmVjdCBwYXJhbWV0ZXJzYCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgIGlmKHJlcXVpcmVzQXV0aCAmJiBhdXRoVXNlcklkKSB7XG4gICAgICAgICAgKG1vY2tDb250ZXh0LnNlc3Npb24gYXMge3VzZXJJZDogc3RyaW5nfSkudXNlcklkID0gYXV0aFVzZXJJZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1vY2tGbiA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4gUHJvbWlzZS5yZXNvbHZlKG1vY2tSZXR1cm5WYWx1ZSkpO1xuICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vY2tGbihtb2NrQ29udGV4dCwgYXJncyk7XG4gICAgICAgIGV4cGVjdChtb2NrRm4pLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKG1vY2tDb250ZXh0LCBleHBlY3RlZENhbGwobW9ja0NvbnRleHQsIGFyZ3MpKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChtb2NrUmV0dXJuVmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjcmVhdGUgaW50ZWdyYXRpb24gdGVzdCBzdWl0ZVxuZXhwb3J0IGNvbnN0IGNyZWF0ZUludGVncmF0aW9uVGVzdFN1aXRlID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGFjdGlvbnNQYXRoOiBzdHJpbmcsXG4gIG9iamVjdFR5cGVQYXRoOiBzdHJpbmcsXG4gIHR5cGVOYW1lOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBhY3Rpb25OYW1lOiBzdHJpbmc7XG4gICAgYXJnczogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRDYWxsOiAoY29udGV4dDogVGVzdENvbnRleHQsIGFyZ3M6IFRlc3RBcmdzKSA9PiBUZXN0QXJncztcbiAgICBzdWNjZXNzUmV0dXJuVmFsdWU6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgICBlcnJvclJldHVyblZhbHVlOiBUZXN0UmV0dXJuVmFsdWU7XG4gICAgdGVzdEVycm9yQ2FzZTogYm9vbGVhbjtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShgJHtuYW1lfSBJbnRlZ3JhdGlvbmAsICgpID0+IHtcbiAgICBsZXQgYWN0aW9uczogYW55O1xuXG4gICAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSB7fTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7XG4gICAgICBuYW1lOiB0ZXN0TmFtZSxcbiAgICAgIGFjdGlvbk5hbWUsXG4gICAgICBhcmdzLFxuICAgICAgZXhwZWN0ZWRDYWxsLFxuICAgICAgc3VjY2Vzc1JldHVyblZhbHVlLFxuICAgICAgZXJyb3JSZXR1cm5WYWx1ZSxcbiAgICAgIHRlc3RFcnJvckNhc2VcbiAgICB9KSA9PiB7XG4gICAgICBkZXNjcmliZSh0ZXN0TmFtZSwgKCkgPT4ge1xuICAgICAgICBpdChgc2hvdWxkIHJldHVybiBkYXRhIHdoZW4gJHthY3Rpb25OYW1lfSBzdWNjZWVkc2AsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgICAgY29uc3QgbW9ja0ZuID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiBQcm9taXNlLnJlc29sdmUoc3VjY2Vzc1JldHVyblZhbHVlKSk7XG4gICAgICAgICAgYWN0aW9uc1thY3Rpb25OYW1lXSA9IG1vY2tGbjtcblxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1vY2tGbihtb2NrQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChzdWNjZXNzUmV0dXJuVmFsdWUgfHwge30pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZih0ZXN0RXJyb3JDYXNlKSB7XG4gICAgICAgICAgaXQoYHNob3VsZCBoYW5kbGUgJHthY3Rpb25OYW1lfSB3aGVuIG5vIGRhdGEgZm91bmRgLCBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgICAgICBjb25zdCBtb2NrRm4gPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IFByb21pc2UucmVzb2x2ZShlcnJvclJldHVyblZhbHVlKSk7XG4gICAgICAgICAgICBhY3Rpb25zW2FjdGlvbk5hbWVdID0gbW9ja0ZuO1xuXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBtb2NrRm4obW9ja0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgICAgICBleHBlY3QobW9ja0ZuKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChtb2NrQ29udGV4dCwgZXhwZWN0ZWRDYWxsKG1vY2tDb250ZXh0LCBhcmdzKSk7XG4gICAgICAgICAgICBleHBlY3QocmVzdWx0KS50b0VxdWFsKGVycm9yUmV0dXJuVmFsdWUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vLyBDb21tb24gbW9jayBkYXRhIGdlbmVyYXRvcnNcbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrVXNlciA9IChvdmVycmlkZXM6IE1vY2tPdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgZW1haWw6ICd0ZXN0QGV4YW1wbGUuY29tJyxcbiAgZmlyc3ROYW1lOiAnVGVzdCcsXG4gIGxhc3ROYW1lOiAnVXNlcicsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgdXNlcm5hbWU6ICd0ZXN0dXNlcicsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrUG9zdCA9IChvdmVycmlkZXM6IE1vY2tPdmVycmlkZXMgPSB7fSkgPT4gKHtcbiAgY29udGVudDogJ1Rlc3QgcG9zdCBjb250ZW50JyxcbiAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIHBvc3RJZDogJ3Bvc3QxJyxcbiAgdXNlcklkOiAndXNlcjEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTW9ja01lc3NhZ2UgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNvbnRlbnQ6ICdUZXN0IG1lc3NhZ2UnLFxuICBjb252ZXJzYXRpb25JZDogJ2NvbnYxJyxcbiAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gIG1lc3NhZ2VJZDogJ21zZzEnLFxuICB1c2VySWQ6ICd1c2VyMScsXG4gIC4uLm92ZXJyaWRlc1xufSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVNb2NrUmVhY3Rpb24gPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICBwb3N0SWQ6ICdwb3N0MScsXG4gIHJlYWN0aW9uSWQ6ICdyZWFjdDEnLFxuICB0eXBlOiAnbGlrZScsXG4gIHVzZXJJZDogJ3VzZXIxJyxcbiAgLi4ub3ZlcnJpZGVzXG59KTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1vY2tUYWcgPSAob3ZlcnJpZGVzOiBNb2NrT3ZlcnJpZGVzID0ge30pID0+ICh7XG4gIGRlc2NyaXB0aW9uOiAnVGVzdCB0YWcgZGVzY3JpcHRpb24nLFxuICBuYW1lOiAndGVzdC10YWcnLFxuICB0YWdJZDogJ3RhZzEnLFxuICAuLi5vdmVycmlkZXNcbn0pO1xuXG4vLyBVdGlsaXR5IHRvIHNldCB1cCBjb21tb24gbW9ja3NcbmV4cG9ydCBjb25zdCBzZXR1cENvbW1vbk1vY2tzID0gYXN5bmMgKCkgPT4ge1xuICBjb25zdCBtb2NrID0ge1xuICAgIF9fZXNNb2R1bGU6IHRydWUsXG4gICAgdXNlRGI6IGplc3QuZm4oKSxcbiAgICBnZXRMaW1pdDogamVzdC5mbigpLFxuICAgIGdldERvY0lkOiBqZXN0LmZuKCksXG4gICAgc29ydElkczogamVzdC5mbigpLFxuICAgIGdldEdxbEZpZWxkczogamVzdC5mbigpLFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHVzZURiOiBqZXN0LmZuKCksXG4gICAgICBnZXRMaW1pdDogamVzdC5mbigpLFxuICAgICAgZ2V0RG9jSWQ6IGplc3QuZm4oKSxcbiAgICAgIHNvcnRJZHM6IGplc3QuZm4oKSxcbiAgICAgIGdldEdxbEZpZWxkczogamVzdC5mbigpXG4gICAgfVxuICB9O1xuICBhd2FpdCBqZXN0Lmlzb2xhdGVNb2R1bGVzQXN5bmMoYXN5bmMgKCkgPT4ge1xuICAgIGplc3QudW5zdGFibGVfbW9ja01vZHVsZSgnLi9hcmFuZ29kYlV0aWxzLmpzJywgKCkgPT4gbW9jayk7XG4gIH0pO1xufTtcblxuLy8gVXRpbGl0eSB0byBjbGVhciBhbGwgbW9ja3NcbmV4cG9ydCBjb25zdCBjbGVhckFsbE1vY2tzID0gKCkgPT4ge1xuICBqZXN0LmNsZWFyQWxsTW9ja3MoKTtcbn07XG5cbi8vIFV0aWxpdHkgdG8gY3JlYXRlIGEgdGVzdCBzdWl0ZSBmb3IgYWN0aW9uIGZ1bmN0aW9uc1xuZXhwb3J0IGNvbnN0IGNyZWF0ZUFjdGlvblRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhY3Rpb25zUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IEFycmF5PHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIGFyZ3M6IFRlc3RBcmdzO1xuICAgIG1vY2tRdWVyeTogamVzdC5Nb2NrO1xuICAgIGV4cGVjdGVkUmVzdWx0OiBUZXN0UmV0dXJuVmFsdWU7XG4gIH0+XG4pID0+IHtcbiAgZGVzY3JpYmUoYCR7bmFtZX0gYWN0aW9uc2AsICgpID0+IHtcbiAgICBsZXQgYWN0aW9uczogYW55O1xuXG4gICAgYmVmb3JlQWxsKGFzeW5jICgpID0+IHtcbiAgICAgIGFjdGlvbnMgPSBhd2FpdCBpbXBvcnQoYWN0aW9uc1BhdGgpO1xuICAgIH0pO1xuXG4gICAgdGVzdENhc2VzLmZvckVhY2goKHtuYW1lOiB0ZXN0TmFtZSwgYWN0aW9uTmFtZSwgYXJncywgbW9ja1F1ZXJ5LCBleHBlY3RlZFJlc3VsdH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgZXhlY3V0ZSAke2FjdGlvbk5hbWV9YCwgYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBtb2NrQ29udGV4dCA9IGNyZWF0ZU1vY2tDb250ZXh0KCk7XG4gICAgICAgIGNvbnN0IG1vY2tEYiA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIHF1ZXJ5OiBtb2NrUXVlcnlcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGFjdHVhbCA9IGplc3QucmVxdWlyZUFjdHVhbCgnLi9hcmFuZ29kYlV0aWxzLmpzJykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgICAgIGplc3QuZG9Nb2NrKCcuL2FyYW5nb2RiVXRpbHMuanMnLCAoKSA9PiAoe1xuICAgICAgICAgIHVzZURiOiBtb2NrRGIsXG4gICAgICAgICAgLi4uYWN0dWFsXG4gICAgICAgIH0pKTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCAoYWN0aW9uc1thY3Rpb25OYW1lXSBhcyBqZXN0Lk1vY2spKG1vY2tDb250ZXh0LCBhcmdzKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZFJlc3VsdCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWRhcHRlclRlc3RTdWl0ZSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBhZGFwdGVyUGF0aDogc3RyaW5nLFxuICB0ZXN0Q2FzZXM6IGFueVtdXG4pID0+IHtcbiAgZGVzY3JpYmUobmFtZSwgKCkgPT4ge1xuICAgIGxldCBhZGFwdGVyOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgYWRhcHRlciA9IGF3YWl0IGltcG9ydChhZGFwdGVyUGF0aCk7XG4gICAgfSk7XG5cbiAgICB0ZXN0Q2FzZXMuZm9yRWFjaCgoe25hbWU6IHRlc3ROYW1lLCBpbnB1dCwgZXhwZWN0ZWRPdXRwdXR9KSA9PiB7XG4gICAgICBpdChgc2hvdWxkICR7dGVzdE5hbWV9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSAoYWRhcHRlciBhcyB7cGFyc2VUYWc6IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLnBhcnNlVGFnKGlucHV0KTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdCkudG9FcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVXRpbHNUZXN0U3VpdGUgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgdXRpbHNQYXRoOiBzdHJpbmcsXG4gIHRlc3RDYXNlczogQXJyYXk8e1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBpbnB1dDogVGVzdEFyZ3M7XG4gICAgZXhwZWN0ZWRPdXRwdXQ6IFRlc3RSZXR1cm5WYWx1ZTtcbiAgfT5cbikgPT4ge1xuICBkZXNjcmliZShuYW1lLCAoKSA9PiB7XG4gICAgbGV0IHV0aWxzOiBhbnk7XG5cbiAgICBiZWZvcmVBbGwoYXN5bmMgKCkgPT4ge1xuICAgICAgdXRpbHMgPSBhd2FpdCBpbXBvcnQodXRpbHNQYXRoKTtcbiAgICB9KTtcblxuICAgIHRlc3RDYXNlcy5mb3JFYWNoKCh7bmFtZTogdGVzdE5hbWUsIGlucHV0LCBleHBlY3RlZE91dHB1dH0pID0+IHtcbiAgICAgIGl0KGBzaG91bGQgJHt0ZXN0TmFtZX1gLCAoKSA9PiB7XG4gICAgICAgIGxldCByZXN1bHQ7XG4gICAgICAgIGlmKCh1dGlscyBhcyB7bG9nSW5mbz86IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLmxvZ0luZm8pIHtcbiAgICAgICAgICByZXN1bHQgPSAodXRpbHMgYXMge2xvZ0luZm86IChpbnB1dDogVGVzdEFyZ3MpID0+IFRlc3RSZXR1cm5WYWx1ZX0pLmxvZ0luZm8oaW5wdXQpO1xuICAgICAgICB9IGVsc2UgaWYoKHV0aWxzIGFzIHtyZW1vdmVFbXB0eUtleXM/OiAoaW5wdXQ6IFRlc3RBcmdzKSA9PiBUZXN0UmV0dXJuVmFsdWV9KS5yZW1vdmVFbXB0eUtleXMpIHtcbiAgICAgICAgICByZXN1bHQgPSAodXRpbHMgYXMge3JlbW92ZUVtcHR5S2V5czogKGlucHV0OiBUZXN0QXJncykgPT4gVGVzdFJldHVyblZhbHVlfSkucmVtb3ZlRW1wdHlLZXlzKGlucHV0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1aXRhYmxlIGZ1bmN0aW9uIGZvdW5kIGluICR7dXRpbHNQYXRofWApO1xuICAgICAgICB9XG4gICAgICAgIGV4cGVjdChyZXN1bHQpLnRvRXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufTsiXSwibmFtZXMiOlsiamVzdCIsImNyZWF0ZU1vY2tDb250ZXh0Iiwib3ZlcnJpZGVzIiwiZGVmYXVsdFNlc3Npb24iLCJ1c2VyQWNjZXNzIiwidXNlcklkIiwidXNlcm5hbWUiLCJvdmVycmlkZVNlc3Npb24iLCJzZXNzaW9uIiwiY29udGV4dCIsImRhdGFiYXNlTmFtZSIsInVuZGVmaW5lZCIsImNyZWF0ZU1vY2tSZXNvbHZlSW5mbyIsImZpZWxkTmFtZSIsIm9wZXJhdGlvbiIsInBhcmVudFR5cGUiLCJyZXR1cm5UeXBlIiwic2NoZW1hIiwiZmllbGROb2RlcyIsImZyYWdtZW50cyIsInBhdGgiLCJrZXkiLCJwcmV2IiwidHlwZW5hbWUiLCJyb290VmFsdWUiLCJ2YXJpYWJsZVZhbHVlcyIsIm1vY2tBY3Rpb25zTW9kdWxlIiwibW9kdWxlUGF0aCIsIm1vY2tBY3Rpb25zIiwibW9ja3MiLCJPYmplY3QiLCJlbnRyaWVzIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJmbiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsImlzb2xhdGVNb2R1bGVzQXN5bmMiLCJ1bnN0YWJsZV9tb2NrTW9kdWxlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJtb2NrT2JqZWN0VHlwZSIsInR5cGVOYW1lIiwibW9jayIsImdldEZpZWxkIiwicmVzb2x2ZSIsImdldEZpZWxkcyIsImNyZWF0ZVF1ZXJ5VGVzdFN1aXRlIiwibmFtZSIsImFjdGlvbnNQYXRoIiwidGVzdENhc2VzIiwiZGVzY3JpYmUiLCJhY3Rpb25zIiwibW9ja0NvbnRleHQiLCJiZWZvcmVBbGwiLCJmb3JFYWNoIiwidGVzdE5hbWUiLCJhY3Rpb25OYW1lIiwiYXJncyIsImV4cGVjdGVkQ2FsbCIsIm1vY2tSZXR1cm5WYWx1ZSIsImVycm9yQ2FzZSIsIml0IiwibW9ja0ZuIiwiUHJvbWlzZSIsInJlc3VsdCIsImV4cGVjdCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwidG9FcXVhbCIsInRvQmVOdWxsIiwiY3JlYXRlTXV0YXRpb25UZXN0U3VpdGUiLCJyZXF1aXJlc0F1dGgiLCJhdXRoVXNlcklkIiwiY3JlYXRlSW50ZWdyYXRpb25UZXN0U3VpdGUiLCJvYmplY3RUeXBlUGF0aCIsInN1Y2Nlc3NSZXR1cm5WYWx1ZSIsImVycm9yUmV0dXJuVmFsdWUiLCJ0ZXN0RXJyb3JDYXNlIiwiY3JlYXRlTW9ja1VzZXIiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY3JlYXRlTW9ja1Bvc3QiLCJjb250ZW50IiwiY3JlYXRlZEF0IiwiRGF0ZSIsInRvSVNPU3RyaW5nIiwicG9zdElkIiwiY3JlYXRlTW9ja01lc3NhZ2UiLCJjb252ZXJzYXRpb25JZCIsIm1lc3NhZ2VJZCIsImNyZWF0ZU1vY2tSZWFjdGlvbiIsInJlYWN0aW9uSWQiLCJ0eXBlIiwiY3JlYXRlTW9ja1RhZyIsImRlc2NyaXB0aW9uIiwidGFnSWQiLCJzZXR1cENvbW1vbk1vY2tzIiwidXNlRGIiLCJnZXRMaW1pdCIsImdldERvY0lkIiwic29ydElkcyIsImdldEdxbEZpZWxkcyIsImNsZWFyQWxsTW9ja3MiLCJjcmVhdGVBY3Rpb25UZXN0U3VpdGUiLCJtb2NrUXVlcnkiLCJleHBlY3RlZFJlc3VsdCIsIm1vY2tEYiIsInF1ZXJ5IiwiYWN0dWFsIiwicmVxdWlyZUFjdHVhbCIsImRvTW9jayIsImNyZWF0ZUFkYXB0ZXJUZXN0U3VpdGUiLCJhZGFwdGVyUGF0aCIsImFkYXB0ZXIiLCJpbnB1dCIsImV4cGVjdGVkT3V0cHV0IiwicGFyc2VUYWciLCJjcmVhdGVVdGlsc1Rlc3RTdWl0ZSIsInV0aWxzUGF0aCIsInV0aWxzIiwibG9nSW5mbyIsInJlbW92ZUVtcHR5S2V5cyIsIkVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxJQUFJLFFBQU8sZ0JBQWdCO0FBWW5DLE9BQU8sTUFBTUMsb0JBQW9CLENBQUNDLFlBQTJCLENBQUMsQ0FBQztJ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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translationQueue.d.ts","sourceRoot":"","sources":["../../src/utils/translationQueue.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAiBtD,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,cAAM,gBAAgB;IACpB,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,YAAY,CAAM;IAEpB,SAAS,CACb,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,iBAAiB,EAAE,EACjC,MAAM,GAAE,MAAa,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAmBpB,cAAc;IAiCtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,WAAW;YAIL,YAAY;IAuC1B,OAAO,CAAC,WAAW;CAGpB;AAED,QAAA,MAAM,gBAAgB,kBAAyB,CAAC;AAEhD,eAAO,MAAM,IAAI,GACf,SAAS,UAAU,EACnB,cAAc,iBAAiB,EAAE,EACjC,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAA8D,CAAC;AAEhG,eAAO,MAAM,KAAK,QAAO,OAAO,CAAC,IAAI,CAA6B,CAAC;AACnE,eAAO,MAAM,KAAK,QAAO,IAAgC,CAAC;AAE1D,YAAY,EAAC,iBAAiB,EAAC,CAAC;AAE9B,OAAO,EAAC,gBAAgB,EAAC,CAAC"}
|
|
@@ -31,3 +31,4 @@ export declare function getNotificationMessages(context: ApiContext, locale?: Lo
|
|
|
31
31
|
export declare function performanceComparison(context: ApiContext): Promise<Record<string, string>>;
|
|
32
32
|
export declare function getUserGreeting(context: ApiContext, userLocale?: string, username?: string): Promise<string>;
|
|
33
33
|
export declare function ensureAllTranslationsProcessed(): Promise<void>;
|
|
34
|
+
//# sourceMappingURL=translationQueue.example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translationQueue.example.d.ts","sourceRoot":"","sources":["../../src/utils/translationQueue.example.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,2BAA2B,CAAC;AAGtD,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAa,mCA6BlF;AAGD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,mCA2BzG;AAGD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,UAAU,mDA0BhE;AAGD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAa,mCA2BrF;AAGD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAa,mCAmB5F;AAGD,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAa,mCAuBnG;AAGD,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE;IACR,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,EACD,MAAM,GAAE,MAAa;;;;;GAoCtB;AAGD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,GAAE,MAAa,mCA4BvF;AAGD,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,UAAU,mCAgB9D;AAGD,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE,MAAM,mBAiClB;AAGD,wBAAsB,8BAA8B,kBAInD"}
|