@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
|
@@ -1,11 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { ApiGatewayManagementApi } from '@aws-sdk/client-apigatewaymanagementapi';
|
|
5
|
+
import { createHash, parseId, parseString } from '@nlabs/utils/parsers/strings';
|
|
6
|
+
import { aql } from 'arangojs';
|
|
7
|
+
import { Config } from '../config.js';
|
|
8
|
+
import { useDb } from '../utils/arangodbUtils.js';
|
|
9
|
+
import { getUserByToken } from './users.js';
|
|
10
|
+
import { ErrorTypes } from '../types/error.types.js';
|
|
11
|
+
import { logError } from '../utils/analyticsUtils.js';
|
|
12
|
+
export const addSocket = async (socketId, token)=>{
|
|
13
|
+
const action = 'addSocket';
|
|
14
|
+
const formatSocketId = parseString(socketId, 32);
|
|
15
|
+
const formatToken = parseString(token);
|
|
16
|
+
try {
|
|
17
|
+
const databaseName = process.env.ARANGODB_DATABASE || '';
|
|
18
|
+
const database = useDb(databaseName);
|
|
19
|
+
const user = await getUserByToken({
|
|
20
|
+
config: Config.get(),
|
|
21
|
+
databaseName
|
|
22
|
+
}, formatToken);
|
|
23
|
+
if (!user) {
|
|
24
|
+
throw new Error('Unauthorized');
|
|
25
|
+
}
|
|
26
|
+
const update = {
|
|
27
|
+
socketId: formatSocketId,
|
|
28
|
+
modified: Date.now()
|
|
29
|
+
};
|
|
30
|
+
const insert = {
|
|
31
|
+
...update,
|
|
32
|
+
_key: createHash(`socket-${formatSocketId}`),
|
|
33
|
+
userId: user.userId
|
|
34
|
+
};
|
|
35
|
+
const aqlQry = aql`UPSERT {userId: ${user.userId}}
|
|
36
|
+
INSERT ${insert}
|
|
37
|
+
UPDATE ${update}
|
|
38
|
+
IN sockets RETURN NEW`;
|
|
39
|
+
return database.query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>{
|
|
40
|
+
throw logError({
|
|
41
|
+
action,
|
|
42
|
+
category: 'websockets',
|
|
43
|
+
value: ErrorTypes.DATABASE_ERROR
|
|
44
|
+
}, error, {});
|
|
45
|
+
});
|
|
46
|
+
} catch (error) {
|
|
47
|
+
throw new Error('Unauthorized');
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
export const getSocketByUser = (userId)=>{
|
|
51
|
+
const formatUserId = parseId(userId);
|
|
52
|
+
const databaseName = process.env.ARANGODB_DATABASE || '';
|
|
53
|
+
const database = useDb(databaseName);
|
|
54
|
+
const aqlQry = aql`FOR s IN sockets
|
|
55
|
+
FILTER s.userId == ${formatUserId}
|
|
6
56
|
LIMIT 1
|
|
7
|
-
RETURN s`;
|
|
8
|
-
|
|
57
|
+
RETURN s`;
|
|
58
|
+
return database.query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>{
|
|
59
|
+
throw error;
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
export const getSocketById = (socketId)=>{
|
|
63
|
+
const formatSocketId = parseId(socketId);
|
|
64
|
+
const databaseName = process.env.ARANGODB_DATABASE || '';
|
|
65
|
+
const database = useDb(databaseName);
|
|
66
|
+
const aqlQry = aql`FOR s IN sockets
|
|
67
|
+
FILTER s.socketId == ${formatSocketId}
|
|
9
68
|
LET user = FIRST(
|
|
10
69
|
FOR u IN users
|
|
11
70
|
FILTER u.sub == s.sub
|
|
@@ -13,18 +72,93 @@ import{ApiGatewayManagementApi as N}from"@aws-sdk/client-apigatewaymanagementapi
|
|
|
13
72
|
RETURN u;
|
|
14
73
|
)
|
|
15
74
|
LIMIT 1
|
|
16
|
-
RETURN MERGE(c, {user:user}`;
|
|
17
|
-
|
|
75
|
+
RETURN MERGE(c, {user:user}`;
|
|
76
|
+
return database.query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>{
|
|
77
|
+
throw error;
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
export const getConnectionByConvo = (context, convoId)=>{
|
|
81
|
+
const { databaseName, session: { userId: sessionId } = {} } = context;
|
|
82
|
+
const sessionDocId = `users/${parseId(sessionId)}`;
|
|
83
|
+
const convoDocId = `conversations/${parseId(convoId)}`;
|
|
84
|
+
const database = useDb(databaseName);
|
|
85
|
+
const aqlQry = aql`FOR c, e IN 1..1 OUTBOUND ${sessionDocId} hasConversation
|
|
86
|
+
FILTER c._id == ${convoDocId}
|
|
18
87
|
LIMIT 1
|
|
19
88
|
LET u = (
|
|
20
|
-
FOR inUser, inEdge IN 1..1 INBOUND ${
|
|
89
|
+
FOR inUser, inEdge IN 1..1 INBOUND ${convoDocId} hasConversation
|
|
21
90
|
FOR n IN connections
|
|
22
91
|
FILTER inUser.sub == n.sub
|
|
23
92
|
RETURN n.connectionId
|
|
24
93
|
)
|
|
25
|
-
RETURN u`;
|
|
26
|
-
|
|
94
|
+
RETURN u`;
|
|
95
|
+
return database.query(aqlQry).then((cursor)=>cursor.all()).catch((error)=>{
|
|
96
|
+
throw error;
|
|
97
|
+
});
|
|
98
|
+
};
|
|
99
|
+
export const removeSocket = (socketId)=>{
|
|
100
|
+
const action = 'removeSocket';
|
|
101
|
+
const formatSocketId = parseString(socketId, 32);
|
|
102
|
+
const databaseName = process.env.ARANGODB_DATABASE || '';
|
|
103
|
+
const database = useDb(databaseName);
|
|
104
|
+
const aqlQry = aql`FOR s IN sockets
|
|
105
|
+
FILTER s.socketId == ${formatSocketId}
|
|
27
106
|
LIMIT 1
|
|
28
107
|
REMOVE s IN sockets
|
|
29
|
-
RETURN OLD`;
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvd2Vic29ja2V0cy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7QXBpR2F0ZXdheU1hbmFnZW1lbnRBcGl9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1hcGlnYXRld2F5bWFuYWdlbWVudGFwaSc7XG5pbXBvcnQge2NyZWF0ZUhhc2gsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7YXFsLCBEYXRhYmFzZX0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZy5qcyc7XG5pbXBvcnQge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHt1c2VEYn0gZnJvbSAnLi4vdXRpbHMvYXJhbmdvZGJVdGlscy5qcyc7XG5pbXBvcnQge2dldFVzZXJCeVRva2VufSBmcm9tICcuL3VzZXJzLmpzJztcblxuaW1wb3J0IHtFcnJvclR5cGVzfSBmcm9tICcuLi90eXBlcy9lcnJvci50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7V2Vic29ja2V0Q29ubmVjdGlvbn0gZnJvbSAnLi4vdHlwZXMvd2Vic29ja2V0cy50eXBlcy5qcyc7XG5pbXBvcnQge2xvZ0Vycm9yfSBmcm9tICcuLi91dGlscy9hbmFseXRpY3NVdGlscy5qcyc7XG5cbmV4cG9ydCBjb25zdCBhZGRTb2NrZXQgPSBhc3luYyAoc29ja2V0SWQ6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IFByb21pc2U8V2Vic29ja2V0Q29ubmVjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdhZGRTb2NrZXQnO1xuICBjb25zdCBmb3JtYXRTb2NrZXRJZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoc29ja2V0SWQsIDMyKTtcbiAgY29uc3QgZm9ybWF0VG9rZW46IHN0cmluZyA9IHBhcnNlU3RyaW5nKHRva2VuKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGFiYXNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJyc7XG4gICAgY29uc3QgZGF0YWJhc2U6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgICBjb25zdCB1c2VyID0gYXdhaXQgZ2V0VXNlckJ5VG9rZW4oe2NvbmZpZzogQ29uZmlnLmdldCgpLCBkYXRhYmFzZU5hbWV9LCBmb3JtYXRUb2tlbik7XG5cbiAgICBpZighdXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmF1dGhvcml6ZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGUgPSB7XG4gICAgICBzb2NrZXRJZDogZm9ybWF0U29ja2V0SWQsXG4gICAgICBtb2RpZmllZDogRGF0ZS5ub3coKVxuICAgIH07XG4gICAgY29uc3QgaW5zZXJ0ID0ge1xuICAgICAgLi4udXBkYXRlLFxuICAgICAgX2tleTogY3JlYXRlSGFzaChgc29ja2V0LSR7Zm9ybWF0U29ja2V0SWR9YCksXG4gICAgICB1c2VySWQ6IHVzZXIudXNlcklkXG4gICAgfTtcbiAgICBjb25zdCBhcWxRcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQU0VSVCB7dXNlcklkOiAke3VzZXIudXNlcklkfX1cbiAgICAgIElOU0VSVCAke2luc2VydH1cbiAgICAgIFVQREFURSAke3VwZGF0ZX1cbiAgICAgIElOIHNvY2tldHMgUkVUVVJOIE5FV2A7XG5cbiAgICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgY2F0ZWdvcnk6ICd3ZWJzb2NrZXRzJyxcbiAgICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgICB9LCBlcnJvciwge30pO1xuICAgICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYXV0aG9yaXplZCcpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ja2V0QnlVc2VyID0gKHVzZXJJZDogc3RyaW5nKTogUHJvbWlzZTxXZWJzb2NrZXRDb25uZWN0aW9uPiA9PiB7XG4gIGNvbnN0IGZvcm1hdFVzZXJJZDogc3RyaW5nID0gcGFyc2VJZCh1c2VySWQpO1xuICBjb25zdCBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICcnO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIHMgSU4gc29ja2V0c1xuICAgIEZJTFRFUiBzLnVzZXJJZCA9PSAke2Zvcm1hdFVzZXJJZH1cbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIHNgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ja2V0QnlJZCA9IChzb2NrZXRJZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3QgZm9ybWF0U29ja2V0SWQ6IHN0cmluZyA9IHBhcnNlSWQoc29ja2V0SWQpO1xuICBjb25zdCBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICcnO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIHMgSU4gc29ja2V0c1xuICAgIEZJTFRFUiBzLnNvY2tldElkID09ICR7Zm9ybWF0U29ja2V0SWR9XG4gICAgTEVUIHVzZXIgPSBGSVJTVChcbiAgICAgIEZPUiB1IElOIHVzZXJzXG4gICAgICBGSUxURVIgdS5zdWIgPT0gcy5zdWJcbiAgICAgIExJTUlUIDFcbiAgICAgIFJFVFVSTiB1O1xuICAgIClcbiAgICBMSU1JVCAxXG4gICAgUkVUVVJOIE1FUkdFKGMsIHt1c2VyOnVzZXJ9YDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbm5lY3Rpb25CeUNvbnZvID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbnZvSWQ6IHN0cmluZyk6IFByb21pc2U8YW55PiA9PiB7XG4gIGNvbnN0IHtkYXRhYmFzZU5hbWUsIHNlc3Npb246IHt1c2VySWQ6IHNlc3Npb25JZH0gPSB7fX0gPSBjb250ZXh0O1xuICBjb25zdCBzZXNzaW9uRG9jSWQ6IHN0cmluZyA9IGB1c2Vycy8ke3BhcnNlSWQoc2Vzc2lvbklkKX1gO1xuICBjb25zdCBjb252b0RvY0lkOiBzdHJpbmcgPSBgY29udmVyc2F0aW9ucy8ke3BhcnNlSWQoY29udm9JZCl9YDtcbiAgY29uc3QgZGF0YWJhc2U6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBjLCBlIElOIDEuLjEgT1VUQk9VTkQgJHtzZXNzaW9uRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICBGSUxURVIgYy5faWQgPT0gJHtjb252b0RvY0lkfVxuICBMSU1JVCAxXG4gIExFVCB1ID0gKFxuICAgIEZPUiBpblVzZXIsIGluRWRnZSBJTiAxLi4xIElOQk9VTkQgJHtjb252b0RvY0lkfSBoYXNDb252ZXJzYXRpb25cbiAgICBGT1IgbiBJTiBjb25uZWN0aW9uc1xuICAgIEZJTFRFUiBpblVzZXIuc3ViID09IG4uc3ViXG4gICAgUkVUVVJOIG4uY29ubmVjdGlvbklkXG4gIClcbiAgUkVUVVJOIHVgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTb2NrZXQgPSAoc29ja2V0SWQ6IHN0cmluZyk6IFByb21pc2U8V2Vic29ja2V0Q29ubmVjdGlvbj4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdyZW1vdmVTb2NrZXQnO1xuICBjb25zdCBmb3JtYXRTb2NrZXRJZDogc3RyaW5nID0gcGFyc2VTdHJpbmcoc29ja2V0SWQsIDMyKTtcbiAgY29uc3QgZGF0YWJhc2VOYW1lOiBzdHJpbmcgPSBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAnJztcbiAgY29uc3QgZGF0YWJhc2U6IERhdGFiYXNlID0gdXNlRGIoZGF0YWJhc2VOYW1lKTtcbiAgY29uc3QgYXFsUXJ5ID0gYXFsYEZPUiBzIElOIHNvY2tldHNcbiAgICAgIEZJTFRFUiBzLnNvY2tldElkID09ICR7Zm9ybWF0U29ja2V0SWR9XG4gICAgICBMSU1JVCAxXG4gICAgICBSRU1PVkUgcyBJTiBzb2NrZXRzXG4gICAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogJ3dlYnNvY2tldHMnLFxuICAgICAgICB2YWx1ZTogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUlxuICAgICAgfSwgZXJyb3IsIHt9KTtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2ViU29ja2V0Q2xpZW50Q29udGV4dCB7XG4gIHJlYWRvbmx5IHJlcXVlc3RDb250ZXh0Pzoge1xuICAgIHJlYWRvbmx5IGFwaUlkOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHN0YWdlOiBzdHJpbmc7XG4gIH07XG59XG5leHBvcnQgY2xhc3MgV2Vic29ja2V0Q2xpZW50IHtcbiAgY2xpZW50O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZz8pIHtcbiAgICBpZihjb25maWcpIHtcbiAgICAgIHRoaXMuc2V0dXBDbGllbnQoY29uZmlnIHx8IHt9KTtcbiAgICB9XG4gIH1cblxuICAvLyBBbGxvdyBqdXN0IHBhc3NpbmcgYSBzaW5nbGUgZXZlbnQgdG8gc2V0dXAgdGhlIGNsaWVudCBmb3IgZWFzZSBvZiB1c2VcbiAgYXN5bmMgc2V0dXBDbGllbnQoe3JlcXVlc3RDb250ZXh0fTogV2ViU29ja2V0Q2xpZW50Q29udGV4dCkge1xuICAgIGlmKCF0aGlzLmNsaWVudCAmJiByZXF1ZXN0Q29udGV4dCkge1xuICAgICAgY29uc3Qge2FwaUlkLCBkb21haW5OYW1lLCBzdGFnZX0gPSByZXF1ZXN0Q29udGV4dDtcbiAgICAgIGxldCB1cGRhdGVkRG9tYWluTmFtZTogc3RyaW5nID0gZG9tYWluTmFtZTtcblxuICAgICAgaWYoYXBpSWQpIHtcbiAgICAgICAgdXBkYXRlZERvbWFpbk5hbWUgPSBgJHthcGlJZH0uZXhlY3V0ZS1hcGkuJHtwcm9jZXNzLmVudi5BUElfUkVHSU9OfS5hbWF6b25hd3MuY29tYDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGllbnQgPSBuZXcgQXBpR2F0ZXdheU1hbmFnZW1lbnRBcGkoe1xuICAgICAgICBjcmVkZW50aWFsczogQ29uZmlnLmdldCgnYXdzLmNyZWRlbnRpYWxzJyksXG4gICAgICAgIGVuZHBvaW50OiBgaHR0cHM6Ly8ke3VwZGF0ZWREb21haW5OYW1lfS8ke3N0YWdlfWAsXG4gICAgICAgIHJlZ2lvbjogQ29uZmlnLmdldCgnYXdzLnJlZ2lvbicpXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kKGNvbm5lY3Rpb24sIHBheWxvYWQpIHtcbiAgICBjb25zb2xlLmxvZyhjb25uZWN0aW9uLCBwYXlsb2FkKTtcblxuICAgIC8vIENoZWF0IGFuZCBhbGxvdyBldmVudCB0byBiZSBwYXNzZWQgaW4gdGhpcyBhbHNvIGxldHMgdXMgZGVmYXVsdCB0byBzZXR1cENsaWVudCB0b29cbiAgICBsZXQgc29ja2V0SWQ7XG5cbiAgICBpZihjb25uZWN0aW9uPy5yZXF1ZXN0Q29udGV4dCkge1xuICAgICAgYXdhaXQgdGhpcy5zZXR1cENsaWVudChjb25uZWN0aW9uKTtcbiAgICAgIGNvbnN0IHtzb2NrZXRJZDogdXBkYXRlZFNvY2tldElkfSA9IGNvbm5lY3Rpb24ucmVxdWVzdENvbnRleHQ7XG4gICAgICBzb2NrZXRJZCA9IHVwZGF0ZWRTb2NrZXRJZDtcbiAgICB9IGVsc2Uge1xuICAgICAgc29ja2V0SWQgPSBjb25uZWN0aW9uO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuY2xpZW50LnBvc3RUb0Nvbm5lY3Rpb24oe0Nvbm5lY3Rpb25JZDogc29ja2V0SWQsIERhdGE6IEpTT04uc3RyaW5naWZ5KHBheWxvYWQpfSlcbiAgICAgIC5wcm9taXNlKClcbiAgICAgIC5jYXRjaChhc3luYyAocG9zdEVycm9yKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHBvc3RFcnJvcikpO1xuXG4gICAgICAgIGlmKHBvc3RFcnJvci5zdGF0dXNDb2RlID09PSA0MTApIHtcbiAgICAgICAgICAvLyBEaXNjb25uZWN0IGNsaWVudFxuICAgICAgICAgIGF3YWl0IHJlbW92ZVNvY2tldChzb2NrZXRJZCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsMkJBQUFBLE1BQThCLDBDQUN0QyxPQUFRLGNBQUFDLEVBQVksV0FBQUMsRUFBUyxlQUFBQyxNQUFrQiwrQkFDL0MsT0FBUSxPQUFBQyxNQUFvQixXQUc1QixPQUFRLFVBQUFDLE1BQWEsZUFFckIsT0FBUSxTQUFBQyxNQUFZLDRCQUNwQixPQUFRLGtCQUFBQyxNQUFxQixhQUU3QixPQUFRLGNBQUFDLE1BQWlCLDBCQUV6QixPQUFRLFlBQUFDLE1BQWUsNkJBRWhCLE1BQU1DLEVBQVksTUFBT0MsRUFBa0JDLElBQWdELENBQ2hHLE1BQU1DLEVBQWlCLFlBQ2pCQyxFQUF5QlgsRUFBWVEsRUFBVSxFQUFFLEVBQ2pESSxFQUFzQlosRUFBWVMsQ0FBSyxFQUU3QyxHQUFJLENBQ0YsTUFBTUksRUFBdUIsUUFBUSxJQUFJLG1CQUFxQixHQUN4REMsRUFBcUJYLEVBQU1VLENBQVksRUFDdkNFLEVBQU8sTUFBTVgsRUFBZSxDQUFDLE9BQVFGLEVBQU8sSUFBSSxFQUFHLGFBQUFXLENBQVksRUFBR0QsQ0FBVyxFQUVuRixHQUFHLENBQUNHLEVBQ0YsTUFBTSxJQUFJLE1BQU0sY0FBYyxFQUdoQyxNQUFNQyxFQUFTLENBQ2IsU0FBVUwsRUFDVixTQUFVLEtBQUssSUFBSSxDQUNyQixFQUNNTSxFQUFTLENBQ2IsR0FBR0QsRUFDSCxLQUFNbEIsRUFBVyxVQUFVYSxDQUFjLEVBQUUsRUFDM0MsT0FBUUksRUFBSyxNQUNmLEVBQ01HLEVBQW1CakIsb0JBQXNCYyxFQUFLLE1BQU07QUFBQSxlQUMvQ0UsQ0FB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SSxVQUFVLGtCQUdwRSxLQUFLLE9BQVMsSUFBSXRDLEVBQXdCLENBQ3hDLFlBQWFLLEVBQU8sSUFBSSxpQkFBaUIsRUFDekMsU0FBVSxXQUFXb0MsQ0FBaUIsSUFBSUQsQ0FBSyxHQUMvQyxPQUFRbkMsRUFBTyxJQUFJLFlBQVksQ0FDakMsQ0FBQyxDQUNILENBQ0YsQ0FFQSxNQUFNLEtBQUtxQyxFQUFZQyxFQUFTLENBSTlCLElBQUloQyxFQUVKLEdBQUcrQixHQUFZLGVBQWdCLENBQzdCLE1BQU0sS0FBSyxZQUFZQSxDQUFVLEVBQ2pDLEtBQU0sQ0FBQyxTQUFVRSxDQUFlLEVBQUlGLEVBQVcsZUFDL0MvQixFQUFXaUMsQ0FDYixNQUNFakMsRUFBVytCLEVBR2IsYUFBTSxLQUFLLE9BQU8saUJBQWlCLENBQUMsYUFBYy9CLEVBQVUsS0FBTSxLQUFLLFVBQVVnQyxDQUFPLENBQUMsQ0FBQyxFQUN2RixRQUFRLEVBQ1IsTUFBTSxNQUFPRSxHQUFjLENBR3ZCQSxFQUFVLGFBQWUsS0FFMUIsTUFBTVgsRUFBYXZCLENBQVEsQ0FFL0IsQ0FBQyxFQUVJLEVBQ1QsQ0FDRiIsCiAgIm5hbWVzIjogWyJBcGlHYXRld2F5TWFuYWdlbWVudEFwaSIsICJjcmVhdGVIYXNoIiwgInBhcnNlSWQiLCAicGFyc2VTdHJpbmciLCAiYXFsIiwgIkNvbmZpZyIsICJ1c2VEYiIsICJnZXRVc2VyQnlUb2tlbiIsICJFcnJvclR5cGVzIiwgImxvZ0Vycm9yIiwgImFkZFNvY2tldCIsICJzb2NrZXRJZCIsICJ0b2tlbiIsICJhY3Rpb24iLCAiZm9ybWF0U29ja2V0SWQiLCAiZm9ybWF0VG9rZW4iLCAiZGF0YWJhc2VOYW1lIiwgImRhdGFiYXNlIiwgInVzZXIiLCAidXBkYXRlIiwgImluc2VydCIsICJhcWxRcnkiLCAiY3Vyc29yIiwgImVycm9yIiwgImdldFNvY2tldEJ5VXNlciIsICJ1c2VySWQiLCAiZm9ybWF0VXNlcklkIiwgImdldFNvY2tldEJ5SWQiLCAiZ2V0Q29ubmVjdGlvbkJ5Q29udm8iLCAiY29udGV4dCIsICJjb252b0lkIiwgInNlc3Npb25JZCIsICJzZXNzaW9uRG9jSWQiLCAiY29udm9Eb2NJZCIsICJyZW1vdmVTb2NrZXQiLCAiV2Vic29ja2V0Q2xpZW50IiwgImNvbmZpZyIsICJyZXF1ZXN0Q29udGV4dCIsICJhcGlJZCIsICJkb21haW5OYW1lIiwgInN0YWdlIiwgInVwZGF0ZWREb21haW5OYW1lIiwgImNvbm5lY3Rpb24iLCAicGF5bG9hZCIsICJ1cGRhdGVkU29ja2V0SWQiLCAicG9zdEVycm9yIl0KfQo=
|
|
108
|
+
RETURN OLD`;
|
|
109
|
+
return database.query(aqlQry).then((cursor)=>cursor.next()).catch((error)=>{
|
|
110
|
+
throw logError({
|
|
111
|
+
action,
|
|
112
|
+
category: 'websockets',
|
|
113
|
+
value: ErrorTypes.DATABASE_ERROR
|
|
114
|
+
}, error, {});
|
|
115
|
+
});
|
|
116
|
+
};
|
|
117
|
+
export class WebsocketClient {
|
|
118
|
+
client;
|
|
119
|
+
constructor(config){
|
|
120
|
+
if (config) {
|
|
121
|
+
this.setupClient(config || {});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Allow just passing a single event to setup the client for ease of use
|
|
125
|
+
async setupClient({ requestContext }) {
|
|
126
|
+
if (!this.client && requestContext) {
|
|
127
|
+
const { apiId, domainName, stage } = requestContext;
|
|
128
|
+
let updatedDomainName = domainName;
|
|
129
|
+
if (apiId) {
|
|
130
|
+
updatedDomainName = `${apiId}.execute-api.${process.env.API_REGION}.amazonaws.com`;
|
|
131
|
+
}
|
|
132
|
+
this.client = new ApiGatewayManagementApi({
|
|
133
|
+
credentials: Config.get('aws.credentials'),
|
|
134
|
+
endpoint: `https://${updatedDomainName}/${stage}`,
|
|
135
|
+
region: Config.get('aws.region')
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
async send(connection, payload) {
|
|
140
|
+
console.log(connection, payload);
|
|
141
|
+
// Cheat and allow event to be passed in this also lets us default to setupClient too
|
|
142
|
+
let socketId;
|
|
143
|
+
if (connection?.requestContext) {
|
|
144
|
+
await this.setupClient(connection);
|
|
145
|
+
const { socketId: updatedSocketId } = connection.requestContext;
|
|
146
|
+
socketId = updatedSocketId;
|
|
147
|
+
} else {
|
|
148
|
+
socketId = connection;
|
|
149
|
+
}
|
|
150
|
+
await this.client.postToConnection({
|
|
151
|
+
ConnectionId: socketId,
|
|
152
|
+
Data: JSON.stringify(payload)
|
|
153
|
+
}).promise().catch(async (postError)=>{
|
|
154
|
+
console.log(JSON.stringify(postError));
|
|
155
|
+
if (postError.statusCode === 410) {
|
|
156
|
+
// Disconnect client
|
|
157
|
+
await removeSocket(socketId);
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
return true;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FjdGlvbnMvd2Vic29ja2V0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtBcGlHYXRld2F5TWFuYWdlbWVudEFwaX0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWFwaWdhdGV3YXltYW5hZ2VtZW50YXBpJztcbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VJZCwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHthcWwsIERhdGFiYXNlfSBmcm9tICdhcmFuZ29qcyc7XG5pbXBvcnQge0FxbFF1ZXJ5fSBmcm9tICdhcmFuZ29qcy9hcWwnO1xuXG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQge3VzZURifSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzLmpzJztcbmltcG9ydCB7Z2V0VXNlckJ5VG9rZW59IGZyb20gJy4vdXNlcnMuanMnO1xuXG5pbXBvcnQge0Vycm9yVHlwZXN9IGZyb20gJy4uL3R5cGVzL2Vycm9yLnR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtXZWJzb2NrZXRDb25uZWN0aW9ufSBmcm9tICcuLi90eXBlcy93ZWJzb2NrZXRzLnR5cGVzLmpzJztcbmltcG9ydCB7bG9nRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzLmpzJztcblxuZXhwb3J0IGNvbnN0IGFkZFNvY2tldCA9IGFzeW5jIChzb2NrZXRJZDogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogUHJvbWlzZTxXZWJzb2NrZXRDb25uZWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2FkZFNvY2tldCc7XG4gIGNvbnN0IGZvcm1hdFNvY2tldElkOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhzb2NrZXRJZCwgMzIpO1xuICBjb25zdCBmb3JtYXRUb2tlbjogc3RyaW5nID0gcGFyc2VTdHJpbmcodG9rZW4pO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YWJhc2VOYW1lOiBzdHJpbmcgPSBwcm9jZXNzLmVudi5BUkFOR09EQl9EQVRBQkFTRSB8fCAnJztcbiAgICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCBnZXRVc2VyQnlUb2tlbih7Y29uZmlnOiBDb25maWcuZ2V0KCksIGRhdGFiYXNlTmFtZX0sIGZvcm1hdFRva2VuKTtcblxuICAgIGlmKCF1c2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYXV0aG9yaXplZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgIHNvY2tldElkOiBmb3JtYXRTb2NrZXRJZCxcbiAgICAgIG1vZGlmaWVkOiBEYXRlLm5vdygpXG4gICAgfTtcbiAgICBjb25zdCBpbnNlcnQgPSB7XG4gICAgICAuLi51cGRhdGUsXG4gICAgICBfa2V5OiBjcmVhdGVIYXNoKGBzb2NrZXQtJHtmb3JtYXRTb2NrZXRJZH1gKSxcbiAgICAgIHVzZXJJZDogdXNlci51c2VySWRcbiAgICB9O1xuICAgIGNvbnN0IGFxbFFyeTogQXFsUXVlcnkgPSBhcWxgVVBTRVJUIHt1c2VySWQ6ICR7dXNlci51c2VySWR9fVxuICAgICAgSU5TRVJUICR7aW5zZXJ0fVxuICAgICAgVVBEQVRFICR7dXBkYXRlfVxuICAgICAgSU4gc29ja2V0cyBSRVRVUk4gTkVXYDtcblxuICAgIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICBjYXRlZ29yeTogJ3dlYnNvY2tldHMnLFxuICAgICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICAgIH0sIGVycm9yLCB7fSk7XG4gICAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5hdXRob3JpemVkJyk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb2NrZXRCeVVzZXIgPSAodXNlcklkOiBzdHJpbmcpOiBQcm9taXNlPFdlYnNvY2tldENvbm5lY3Rpb24+ID0+IHtcbiAgY29uc3QgZm9ybWF0VXNlcklkOiBzdHJpbmcgPSBwYXJzZUlkKHVzZXJJZCk7XG4gIGNvbnN0IGRhdGFiYXNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJyc7XG4gIGNvbnN0IGRhdGFiYXNlOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgcyBJTiBzb2NrZXRzXG4gICAgRklMVEVSIHMudXNlcklkID09ICR7Zm9ybWF0VXNlcklkfVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gc2A7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb2NrZXRCeUlkID0gKHNvY2tldElkOiBzdHJpbmcpOiBQcm9taXNlPGFueT4gPT4ge1xuICBjb25zdCBmb3JtYXRTb2NrZXRJZDogc3RyaW5nID0gcGFyc2VJZChzb2NrZXRJZCk7XG4gIGNvbnN0IGRhdGFiYXNlTmFtZTogc3RyaW5nID0gcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgJyc7XG4gIGNvbnN0IGRhdGFiYXNlOiBEYXRhYmFzZSA9IHVzZURiKGRhdGFiYXNlTmFtZSk7XG4gIGNvbnN0IGFxbFFyeSA9IGFxbGBGT1IgcyBJTiBzb2NrZXRzXG4gICAgRklMVEVSIHMuc29ja2V0SWQgPT0gJHtmb3JtYXRTb2NrZXRJZH1cbiAgICBMRVQgdXNlciA9IEZJUlNUKFxuICAgICAgRk9SIHUgSU4gdXNlcnNcbiAgICAgIEZJTFRFUiB1LnN1YiA9PSBzLnN1YlxuICAgICAgTElNSVQgMVxuICAgICAgUkVUVVJOIHU7XG4gICAgKVxuICAgIExJTUlUIDFcbiAgICBSRVRVUk4gTUVSR0UoYywge3VzZXI6dXNlcn1gO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Q29ubmVjdGlvbkJ5Q29udm8gPSAoY29udGV4dDogQXBpQ29udGV4dCwgY29udm9JZDogc3RyaW5nKTogUHJvbWlzZTxhbnk+ID0+IHtcbiAgY29uc3Qge2RhdGFiYXNlTmFtZSwgc2Vzc2lvbjoge3VzZXJJZDogc2Vzc2lvbklkfSA9IHt9fSA9IGNvbnRleHQ7XG4gIGNvbnN0IHNlc3Npb25Eb2NJZDogc3RyaW5nID0gYHVzZXJzLyR7cGFyc2VJZChzZXNzaW9uSWQpfWA7XG4gIGNvbnN0IGNvbnZvRG9jSWQ6IHN0cmluZyA9IGBjb252ZXJzYXRpb25zLyR7cGFyc2VJZChjb252b0lkKX1gO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIGMsIGUgSU4gMS4uMSBPVVRCT1VORCAke3Nlc3Npb25Eb2NJZH0gaGFzQ29udmVyc2F0aW9uXG4gIEZJTFRFUiBjLl9pZCA9PSAke2NvbnZvRG9jSWR9XG4gIExJTUlUIDFcbiAgTEVUIHUgPSAoXG4gICAgRk9SIGluVXNlciwgaW5FZGdlIElOIDEuLjEgSU5CT1VORCAke2NvbnZvRG9jSWR9IGhhc0NvbnZlcnNhdGlvblxuICAgIEZPUiBuIElOIGNvbm5lY3Rpb25zXG4gICAgRklMVEVSIGluVXNlci5zdWIgPT0gbi5zdWJcbiAgICBSRVRVUk4gbi5jb25uZWN0aW9uSWRcbiAgKVxuICBSRVRVUk4gdWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFFyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IuYWxsKCkpXG4gICAgLmNhdGNoKChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVNvY2tldCA9IChzb2NrZXRJZDogc3RyaW5nKTogUHJvbWlzZTxXZWJzb2NrZXRDb25uZWN0aW9uPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ3JlbW92ZVNvY2tldCc7XG4gIGNvbnN0IGZvcm1hdFNvY2tldElkOiBzdHJpbmcgPSBwYXJzZVN0cmluZyhzb2NrZXRJZCwgMzIpO1xuICBjb25zdCBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFIHx8ICcnO1xuICBjb25zdCBkYXRhYmFzZTogRGF0YWJhc2UgPSB1c2VEYihkYXRhYmFzZU5hbWUpO1xuICBjb25zdCBhcWxRcnkgPSBhcWxgRk9SIHMgSU4gc29ja2V0c1xuICAgICAgRklMVEVSIHMuc29ja2V0SWQgPT0gJHtmb3JtYXRTb2NrZXRJZH1cbiAgICAgIExJTUlUIDFcbiAgICAgIFJFTU9WRSBzIElOIHNvY2tldHNcbiAgICAgIFJFVFVSTiBPTERgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgdGhyb3cgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiAnd2Vic29ja2V0cycsXG4gICAgICAgIHZhbHVlOiBFcnJvclR5cGVzLkRBVEFCQVNFX0VSUk9SXG4gICAgICB9LCBlcnJvciwge30pO1xuICAgIH0pO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBXZWJTb2NrZXRDbGllbnRDb250ZXh0IHtcbiAgcmVhZG9ubHkgcmVxdWVzdENvbnRleHQ/OiB7XG4gICAgcmVhZG9ubHkgYXBpSWQ6IHN0cmluZztcbiAgICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc3RhZ2U6IHN0cmluZztcbiAgfTtcbn1cbmV4cG9ydCBjbGFzcyBXZWJzb2NrZXRDbGllbnQge1xuICBjbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnPykge1xuICAgIGlmKGNvbmZpZykge1xuICAgICAgdGhpcy5zZXR1cENsaWVudChjb25maWcgfHwge30pO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFsbG93IGp1c3QgcGFzc2luZyBhIHNpbmdsZSBldmVudCB0byBzZXR1cCB0aGUgY2xpZW50IGZvciBlYXNlIG9mIHVzZVxuICBhc3luYyBzZXR1cENsaWVudCh7cmVxdWVzdENvbnRleHR9OiBXZWJTb2NrZXRDbGllbnRDb250ZXh0KSB7XG4gICAgaWYoIXRoaXMuY2xpZW50ICYmIHJlcXVlc3RDb250ZXh0KSB7XG4gICAgICBjb25zdCB7YXBpSWQsIGRvbWFpbk5hbWUsIHN0YWdlfSA9IHJlcXVlc3RDb250ZXh0O1xuICAgICAgbGV0IHVwZGF0ZWREb21haW5OYW1lOiBzdHJpbmcgPSBkb21haW5OYW1lO1xuXG4gICAgICBpZihhcGlJZCkge1xuICAgICAgICB1cGRhdGVkRG9tYWluTmFtZSA9IGAke2FwaUlkfS5leGVjdXRlLWFwaS4ke3Byb2Nlc3MuZW52LkFQSV9SRUdJT059LmFtYXpvbmF3cy5jb21gO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsaWVudCA9IG5ldyBBcGlHYXRld2F5TWFuYWdlbWVudEFwaSh7XG4gICAgICAgIGNyZWRlbnRpYWxzOiBDb25maWcuZ2V0KCdhd3MuY3JlZGVudGlhbHMnKSxcbiAgICAgICAgZW5kcG9pbnQ6IGBodHRwczovLyR7dXBkYXRlZERvbWFpbk5hbWV9LyR7c3RhZ2V9YCxcbiAgICAgICAgcmVnaW9uOiBDb25maWcuZ2V0KCdhd3MucmVnaW9uJylcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNlbmQoY29ubmVjdGlvbiwgcGF5bG9hZCkge1xuICAgIGNvbnNvbGUubG9nKGNvbm5lY3Rpb24sIHBheWxvYWQpO1xuXG4gICAgLy8gQ2hlYXQgYW5kIGFsbG93IGV2ZW50IHRvIGJlIHBhc3NlZCBpbiB0aGlzIGFsc28gbGV0cyB1cyBkZWZhdWx0IHRvIHNldHVwQ2xpZW50IHRvb1xuICAgIGxldCBzb2NrZXRJZDtcblxuICAgIGlmKGNvbm5lY3Rpb24/LnJlcXVlc3RDb250ZXh0KSB7XG4gICAgICBhd2FpdCB0aGlzLnNldHVwQ2xpZW50KGNvbm5lY3Rpb24pO1xuICAgICAgY29uc3Qge3NvY2tldElkOiB1cGRhdGVkU29ja2V0SWR9ID0gY29ubmVjdGlvbi5yZXF1ZXN0Q29udGV4dDtcbiAgICAgIHNvY2tldElkID0gdXBkYXRlZFNvY2tldElkO1xuICAgIH0gZWxzZSB7XG4gICAgICBzb2NrZXRJZCA9IGNvbm5lY3Rpb247XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5jbGllbnQucG9zdFRvQ29ubmVjdGlvbih7Q29ubmVjdGlvbklkOiBzb2NrZXRJZCwgRGF0YTogSlNPTi5zdHJpbmdpZnkocGF5bG9hZCl9KVxuICAgICAgLnByb21pc2UoKVxuICAgICAgLmNhdGNoKGFzeW5jIChwb3N0RXJyb3IpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkocG9zdEVycm9yKSk7XG5cbiAgICAgICAgaWYocG9zdEVycm9yLnN0YXR1c0NvZGUgPT09IDQxMCkge1xuICAgICAgICAgIC8vIERpc2Nvbm5lY3QgY2xpZW50XG4gICAgICAgICAgYXdhaXQgcmVtb3ZlU29ja2V0KHNvY2tldElkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkFwaUdhdGV3YXlNYW5hZ2VtZW50QXBpIiwiY3JlYXRlSGFzaCIsInBhcnNlSWQiLCJwYXJzZVN0cmluZyIsImFxbCIsIkNvbmZpZyIsInVzZURiIiwiZ2V0VXNlckJ5VG9rZW4iLCJFcnJvclR5cGVzIiwibG9nRXJyb3IiLCJhZGRTb2NrZXQiLCJzb2NrZXRJZCIsInRva2VuIiwiYWN0aW9uIiwiZm9ybWF0U29ja2V0SWQiLCJmb3JtYXRUb2tlbiIsImRhdGFiYXNlTmFtZSIsInByb2Nlc3MiLCJlbnYiLCJBUkFOR09EQl9EQVRBQkFTRSIsImRhdGFiYXNlIiwidXNlciIsImNvbmZpZyIsImdldCIsIkVycm9yIiwidXBkYXRlIiwibW9kaWZpZWQiLCJEYXRlIiwibm93IiwiaW5zZXJ0IiwiX2tleSIsInVzZXJJZCIsImFxbFFyeSIsInF1ZXJ5IiwidGhlbiIsImN1cnNvciIsIm5leHQiLCJjYXRjaCIsImVycm9yIiwiY2F0ZWdvcnkiLCJ2YWx1ZSIsIkRBVEFCQVNFX0VSUk9SIiwiZ2V0U29ja2V0QnlVc2VyIiwiZm9ybWF0VXNlcklkIiwiZ2V0U29ja2V0QnlJZCIsImdldENvbm5lY3Rpb25CeUNvbnZvIiwiY29udGV4dCIsImNvbnZvSWQiLCJzZXNzaW9uIiwic2Vzc2lvbklkIiwic2Vzc2lvbkRvY0lkIiwiY29udm9Eb2NJZCIsImFsbCIsInJlbW92ZVNvY2tldCIsIldlYnNvY2tldENsaWVudCIsImNsaWVudCIsInNldHVwQ2xpZW50IiwicmVxdWVzdENvbnRleHQiLCJhcGlJZCIsImRvbWFpbk5hbWUiLCJzdGFnZSIsInVwZGF0ZWREb21haW5OYW1lIiwiQVBJX1JFR0lPTiIsImNyZWRlbnRpYWxzIiwiZW5kcG9pbnQiLCJyZWdpb24iLCJzZW5kIiwiY29ubmVjdGlvbiIsInBheWxvYWQiLCJjb25zb2xlIiwibG9nIiwidXBkYXRlZFNvY2tldElkIiwicG9zdFRvQ29ubmVjdGlvbiIsIkNvbm5lY3Rpb25JZCIsIkRhdGEiLCJKU09OIiwic3RyaW5naWZ5IiwicHJvbWlzZSIsInBvc3RFcnJvciIsInN0YXR1c0NvZGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLHVCQUF1QixRQUFPLDBDQUEwQztBQUNoRixTQUFRQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsV0FBVyxRQUFPLCtCQUErQjtBQUM5RSxTQUFRQyxHQUFHLFFBQWlCLFdBQVc7QUFHdkMsU0FBUUMsTUFBTSxRQUFPLGVBQWU7QUFFcEMsU0FBUUMsS0FBSyxRQUFPLDRCQUE0QjtBQUNoRCxTQUFRQyxjQUFjLFFBQU8sYUFBYTtBQUUxQyxTQUFRQyxVQUFVLFFBQU8sMEJBQTBCO0FBRW5ELFNBQVFDLFFBQVEsUUFBTyw2QkFBNkI7QUFFcEQsT0FBTyxNQUFNQyxZQUFZLE9BQU9DLFVBQWtCQztJQUNoRCxNQUFNQyxTQUFpQjtJQUN2QixNQUFNQyxpQkFBeUJYLFlBQVlRLFVBQVU7SUFDckQsTUFBTUksY0FBc0JaLFlBQVlTO0lBRXhDLElBQUk7UUFDRixNQUFNSSxlQUF1QkMsUUFBUUMsR0FBRyxDQUFDQyxpQkFBaUIsSUFBSTtRQUM5RCxNQUFNQyxXQUFxQmQsTUFBTVU7UUFDakMsTUFBTUssT0FBTyxNQUFNZCxlQUFlO1lBQUNlLFFBQVFqQixPQUFPa0IsR0FBRztZQUFJUDtRQUFZLEdBQUdEO1FBRXhFLElBQUcsQ0FBQ00sTUFBTTtZQUNSLE1BQU0sSUFBSUcsTUFBTTtRQUNsQjtRQUVBLE1BQU1DLFNBQVM7WUFDYmQsVUFBVUc7WUFDVlksVUFBVUMsS0FBS0MsR0FBRztRQUNwQjtRQUNBLE1BQU1D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
|
|
@@ -6,3 +6,4 @@ export declare class ArangoValidationError extends Error {
|
|
|
6
6
|
export declare const validateDocumentInput: (doc: unknown) => DocumentType;
|
|
7
7
|
export declare const formatDocumentOutput: (doc: DocumentType) => DocumentType;
|
|
8
8
|
export declare const parseDocument: (doc: DocumentType) => DocumentType;
|
|
9
|
+
//# sourceMappingURL=arangoAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arangoAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/arangoAdapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAGxD,qBAAa,qBAAsB,SAAQ,KAAK;IACV,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM;CAInD;AAcD,eAAO,MAAM,qBAAqB,GAAI,KAAK,OAAO,KAAG,YAWpD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,KAAK,YAAY,KAAG,YAAmB,CAAC;AAE7E,eAAO,MAAM,aAAa,GAAI,KAAK,YAAY,KAAG,YAUjD,CAAC"}
|
|
@@ -1,2 +1,70 @@
|
|
|
1
|
-
import{parseNum
|
|
2
|
-
|
|
1
|
+
import { parseNum } from '@nlabs/utils/parsers/numbers';
|
|
2
|
+
import { parseArangoId, parseId } from '@nlabs/utils/parsers/strings';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { removeEmptyKeys } from '../utils/adapterUtils.js';
|
|
5
|
+
export class ArangoValidationError extends Error {
|
|
6
|
+
field;
|
|
7
|
+
constructor(message, field){
|
|
8
|
+
super(message), this.field = field;
|
|
9
|
+
this.name = 'ArangoValidationError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
const DocumentInputSchema = z.object({
|
|
13
|
+
_from: z.string().optional(),
|
|
14
|
+
_id: z.string().optional(),
|
|
15
|
+
_key: z.string().optional(),
|
|
16
|
+
_oldRev: z.string().optional(),
|
|
17
|
+
_rev: z.string().optional(),
|
|
18
|
+
_to: z.string().optional(),
|
|
19
|
+
added: z.number().optional(),
|
|
20
|
+
id: z.string().optional(),
|
|
21
|
+
modified: z.number().optional()
|
|
22
|
+
}).passthrough();
|
|
23
|
+
export const validateDocumentInput = (doc)=>{
|
|
24
|
+
try {
|
|
25
|
+
const validated = DocumentInputSchema.parse(doc);
|
|
26
|
+
return validated;
|
|
27
|
+
} catch (error) {
|
|
28
|
+
if (error instanceof z.ZodError) {
|
|
29
|
+
const fieldErrors = error.issues.map((e)=>`${e.path.join('.')}: ${e.message}`).join(', ');
|
|
30
|
+
throw new ArangoValidationError(`Document validation failed: ${fieldErrors}`);
|
|
31
|
+
}
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
export const formatDocumentOutput = (doc)=>doc;
|
|
36
|
+
export const parseDocument = (doc)=>{
|
|
37
|
+
try {
|
|
38
|
+
const parsed = performDocumentTransformation(doc);
|
|
39
|
+
return parsed;
|
|
40
|
+
} catch (error) {
|
|
41
|
+
if (error instanceof ArangoValidationError) {
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
throw new ArangoValidationError(`Document parsing failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const performDocumentTransformation = (doc)=>{
|
|
48
|
+
const { _id, _key, added, id, modified } = doc;
|
|
49
|
+
const transformed = removeEmptyKeys({
|
|
50
|
+
...doc,
|
|
51
|
+
..._id && {
|
|
52
|
+
_id: parseArangoId(_id)
|
|
53
|
+
},
|
|
54
|
+
..._key && {
|
|
55
|
+
_key: parseId(_key)
|
|
56
|
+
},
|
|
57
|
+
...added !== undefined && {
|
|
58
|
+
added: parseNum(added, 13)
|
|
59
|
+
},
|
|
60
|
+
...(_id || id) && {
|
|
61
|
+
id: parseArangoId(_id || id)
|
|
62
|
+
},
|
|
63
|
+
...modified !== undefined && {
|
|
64
|
+
modified: parseNum(modified, 13)
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
return transformed;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FkYXB0ZXJzL2FyYW5nb0FkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtwYXJzZU51bX0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvbnVtYmVycyc7XG5pbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWR9IGZyb20gJ0BubGFicy91dGlscy9wYXJzZXJzL3N0cmluZ3MnO1xuaW1wb3J0IHt6fSBmcm9tICd6b2QnO1xuXG5pbXBvcnQge0RvY3VtZW50VHlwZX0gZnJvbSAnLi4vdHlwZXMvYXJhbmdvZGIudHlwZXMuanMnO1xuaW1wb3J0IHtyZW1vdmVFbXB0eUtleXN9IGZyb20gJy4uL3V0aWxzL2FkYXB0ZXJVdGlscy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBBcmFuZ29WYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0FyYW5nb1ZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuY29uc3QgRG9jdW1lbnRJbnB1dFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgX2Zyb206IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF9rZXk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgX29sZFJldjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBfcmV2OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIF90bzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBhZGRlZDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtb2RpZmllZDogei5udW1iZXIoKS5vcHRpb25hbCgpXG59KS5wYXNzdGhyb3VnaCgpO1xuXG5leHBvcnQgY29uc3QgdmFsaWRhdGVEb2N1bWVudElucHV0ID0gKGRvYzogdW5rbm93bik6IERvY3VtZW50VHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsaWRhdGVkID0gRG9jdW1lbnRJbnB1dFNjaGVtYS5wYXJzZShkb2MpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgRG9jdW1lbnRUeXBlO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiB6LlpvZEVycm9yKSB7XG4gICAgICBjb25zdCBmaWVsZEVycm9ycyA9IGVycm9yLmlzc3Vlcy5tYXAoKGUpID0+IGAke2UucGF0aC5qb2luKCcuJyl9OiAke2UubWVzc2FnZX1gKS5qb2luKCcsICcpO1xuICAgICAgdGhyb3cgbmV3IEFyYW5nb1ZhbGlkYXRpb25FcnJvcihgRG9jdW1lbnQgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7ZmllbGRFcnJvcnN9YCk7XG4gICAgfVxuICAgIHRocm93IGVycm9yO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0RG9jdW1lbnRPdXRwdXQgPSAoZG9jOiBEb2N1bWVudFR5cGUpOiBEb2N1bWVudFR5cGUgPT4gZG9jO1xuXG5leHBvcnQgY29uc3QgcGFyc2VEb2N1bWVudCA9IChkb2M6IERvY3VtZW50VHlwZSk6IERvY3VtZW50VHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGVyZm9ybURvY3VtZW50VHJhbnNmb3JtYXRpb24oZG9jKTtcbiAgICByZXR1cm4gcGFyc2VkO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgaWYoZXJyb3IgaW5zdGFuY2VvZiBBcmFuZ29WYWxpZGF0aW9uRXJyb3IpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQXJhbmdvVmFsaWRhdGlvbkVycm9yKGBEb2N1bWVudCBwYXJzaW5nIGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICdVbmtub3duIGVycm9yJ31gKTtcbiAgfVxufTtcblxuY29uc3QgcGVyZm9ybURvY3VtZW50VHJhbnNmb3JtYXRpb24gPSAoZG9jOiBEb2N1bWVudFR5cGUpOiBEb2N1bWVudFR5cGUgPT4ge1xuICBjb25zdCB7XG4gICAgX2lkLFxuICAgIF9rZXksXG4gICAgYWRkZWQsXG4gICAgaWQsXG4gICAgbW9kaWZpZWRcbiAgfSA9IGRvYztcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHJlbW92ZUVtcHR5S2V5cyh7XG4gICAgLi4uZG9jLFxuICAgIC4uLihfaWQgJiYge19pZDogcGFyc2VBcmFuZ29JZChfaWQpfSksXG4gICAgLi4uKF9rZXkgJiYge19rZXk6IHBhcnNlSWQoX2tleSl9KSxcbiAgICAuLi4oYWRkZWQgIT09IHVuZGVmaW5lZCAmJiB7YWRkZWQ6IHBhcnNlTnVtKGFkZGVkLCAxMyl9KSxcbiAgICAuLi4oKF9pZCB8fCBpZCkgJiYge2lkOiBwYXJzZUFyYW5nb0lkKF9pZCB8fCBpZCl9KSxcbiAgICAuLi4obW9kaWZpZWQgIT09IHVuZGVmaW5lZCAmJiB7bW9kaWZpZWQ6IHBhcnNlTnVtKG1vZGlmaWVkLCAxMyl9KVxuICB9KTtcblxuICByZXR1cm4gdHJhbnNmb3JtZWQ7XG59OyJdLCJuYW1lcyI6WyJwYXJzZU51bSIsInBhcnNlQXJhbmdvSWQiLCJwYXJzZUlkIiwieiIsInJlbW92ZUVtcHR5S2V5cyIsIkFyYW5nb1ZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwibWVzc2FnZSIsImZpZWxkIiwibmFtZSIsIkRvY3VtZW50SW5wdXRTY2hlbWEiLCJvYmplY3QiLCJfZnJvbSIsInN0cmluZyIsIm9wdGlvbmFsIiwiX2lkIiwiX2tleSIsIl9vbGRSZXYiLCJfcmV2IiwiX3RvIiwiYWRkZWQiLCJudW1iZXIiLCJpZCIsIm1vZGlmaWVkIiwicGFzc3Rocm91Z2giLCJ2YWxpZGF0ZURvY3VtZW50SW5wdXQiLCJkb2MiLCJ2YWxpZGF0ZWQiLCJwYXJzZSIsImVycm9yIiwiWm9kRXJyb3IiLCJmaWVsZEVycm9ycyIsImlzc3VlcyIsIm1hcCIsImUiLCJwYXRoIiwiam9pbiIsImZvcm1hdERvY3VtZW50T3V0cHV0IiwicGFyc2VEb2N1bWVudCIsInBhcnNlZCIsInBlcmZvcm1Eb2N1bWVudFRyYW5zZm9ybWF0aW9uIiwidHJhbnNmb3JtZWQiLCJ1bmRlZmluZWQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFFBQVEsUUFBTywrQkFBK0I7QUFDdEQsU0FBUUMsYUFBYSxFQUFFQyxPQUFPLFFBQU8sK0JBQStCO0FBQ3BFLFNBQVFDLENBQUMsUUFBTyxNQUFNO0FBR3RCLFNBQVFDLGVBQWUsUUFBTywyQkFBMkI7QUFFekQsT0FBTyxNQUFNQyw4QkFBOEJDOztJQUN6QyxZQUFZQyxPQUFlLEVBQUUsQUFBT0MsS0FBYyxDQUFFO1FBQ2xELEtBQUssQ0FBQ0QsZUFENEJDLFFBQUFBO1FBRWxDLElBQUksQ0FBQ0MsSUFBSSxHQUFHO0lBQ2Q7QUFDRjtBQUVBLE1BQU1DLHNCQUFzQlAsRUFBRVEsTUFBTSxDQUFDO0lBQ25DQyxPQUFPVCxFQUFFVSxNQUFNLEdBQUdDLFFBQVE7SUFDMUJDLEtBQUtaLEVBQUVVLE1BQU0sR0FBR0MsUUFBUTtJQUN4QkUsTUFBTWIsRUFBRVUsTUFBTSxHQUFHQyxRQUFRO0lBQ3pCRyxTQUFTZCxFQUFFVSxNQUFNLEdBQUdDLFFBQVE7SUFDNUJJLE1BQU1mLEVBQUVVLE1BQU0sR0FBR0MsUUFBUTtJQUN6QkssS0FBS2hCLEVBQUVVLE1BQU0sR0FBR0MsUUFBUTtJQUN4Qk0sT0FBT2pCLEVBQUVrQixNQUFNLEdBQUdQLFFBQVE7SUFDMUJRLElBQUluQixFQUFFVSxNQUFNLEdBQUdDLFFBQVE7SUFDdkJTLFVBQVVwQixFQUFFa0IsTUFBTSxHQUFHUCxRQUFRO0FBQy9CLEdBQUdVLFdBQVc7QUFFZCxPQUFPLE1BQU1DLHdCQUF3QixDQUFDQztJQUNwQyxJQUFJO1FBQ0YsTUFBTUMsWUFBWWpCLG9CQUFvQmtCLEtBQUssQ0FBQ0Y7UUFDNUMsT0FBT0M7SUFDVCxFQUFFLE9BQU1FLE9BQU87UUFDYixJQUFHQSxpQkFBaUIxQixFQUFFMkIsUUFBUSxFQUFFO1lBQzlCLE1BQU1DLGNBQWNGLE1BQU1HLE1BQU0sQ0FBQ0MsR0FBRyxDQUFDLENBQUNDLElBQU0sR0FBR0EsRUFBRUMsSUFBSSxDQUFDQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUVGLEVBQUUzQixPQUFPLEVBQUUsRUFBRTZCLElBQUksQ0FBQztZQUN0RixNQUFNLElBQUkvQixzQkFBc0IsQ0FBQyw0QkFBNEIsRUFBRTBCLGFBQWE7UUFDOUU7UUFDQSxNQUFNRjtJQUNSO0FBQ0YsRUFBRTtBQUVGLE9BQU8sTUFBTVEsdUJBQXVCLENBQUNYLE1BQW9DQSxJQUFJO0FBRTdFLE9BQU8sTUFBTVksZ0JBQWdCLENBQUNaO0lBQzVCLElBQUk7UUFDRixNQUFNYSxTQUFTQyw4QkFBOEJkO1FBQzdDLE9BQU9hO0lBQ1QsRUFBRSxPQUFNVixPQUFPO1FBQ2IsSUFBR0EsaUJBQWlCeEIsdUJBQXVCO1lBQ3pDLE1BQU13QjtRQUNSO1FBQ0EsTUFBTSxJQUFJeEIsc0JBQXNCLENBQUMseUJBQXlCLEVBQUV3QixpQkFBaUJ2QixRQUFRdUIsTUFBTXRCLE9BQU8sR0FBRyxpQkFBaUI7SUFDeEg7QUFDRixFQUFFO0FBRUYsTUFBTWlDLGdDQUFnQyxDQUFDZDtJQUNyQyxNQUFNLEVBQ0pYLEdBQUcsRUFDSEMsSUFBSSxFQUNKSSxLQUFLLEVBQ0xFLEVBQUUsRUFDRkMsUUFBUSxFQUNULEdBQUdHO0lBRUosTUFBTWUsY0FBY3JDLGdCQUFnQjtRQUNsQyxHQUFHc0IsR0FBRztRQUNOLEdBQUlYLE9BQU87WUFBQ0EsS0FBS2QsY0FBY2M7UUFBSSxDQUFDO1FBQ3BDLEdBQUlDLFFBQVE7WUFBQ0EsTUFBTWQsUUFBUWM7UUFBSyxDQUFDO1FBQ2pDLEdBQUlJLFVBQVVzQixhQUFhO1lBQUN0QixPQUFPcEIsU0FBU29CLE9BQU87UUFBRyxDQUFDO1FBQ3ZELEdBQUksQUFBQ0wsQ0FBQUEsT0FBT08sRUFBQyxLQUFNO1lBQUNBLElBQUlyQixjQUFjYyxPQUFPTztRQUFHLENBQUM7UUFDakQsR0FBSUMsYUFBYW1CLGFBQWE7WUFBQ25CLFVBQVV2QixTQUFTdUIsVUFBVTtRQUFHLENBQUM7SUFDbEU7SUFFQSxPQUFPa0I7QUFDVCJ9
|
|
@@ -6,3 +6,4 @@ export declare class ContentValidationError extends Error {
|
|
|
6
6
|
export declare const parseContent: (content: ContentType) => ContentType;
|
|
7
7
|
export declare const parseContentInput: (content: ContentInputType) => ContentInputType;
|
|
8
8
|
export declare const parseContentFromDb: (content: ContentType) => ContentType;
|
|
9
|
+
//# sourceMappingURL=contentAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contentAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/contentAdapter.ts"],"names":[],"mappings":"AAOA,OAAO,EAAC,gBAAgB,EAAE,WAAW,EAAC,MAAM,2BAA2B,CAAC;AAIxE,qBAAa,sBAAuB,SAAQ,KAAK;IACX,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM;CAInD;AA2BD,eAAO,MAAM,YAAY,GAAI,SAAS,WAAW,KAAG,WAYnD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,SAAS,gBAAgB,KAAG,gBAY7D,CAAC;AAiCF,eAAO,MAAM,kBAAkB,GAAI,SAAS,WAAW,KAAG,WAAoD,CAAC"}
|
|
@@ -1,2 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 { parseArangoId, parseId, parseString } from '@nlabs/utils/parsers/strings';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { removeEmptyKeys } from '../utils/adapterUtils.js';
|
|
7
|
+
import { parseDocument } from './arangoAdapter.js';
|
|
8
|
+
export class ContentValidationError extends Error {
|
|
9
|
+
field;
|
|
10
|
+
constructor(message, field){
|
|
11
|
+
super(message), this.field = field;
|
|
12
|
+
this.name = 'ContentValidationError';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const contentSchema = z.object({
|
|
16
|
+
contentId: z.string().optional(),
|
|
17
|
+
key: z.string().min(1, 'Key is required').max(200, 'Key must be less than 200 characters'),
|
|
18
|
+
locale: z.enum([
|
|
19
|
+
'en',
|
|
20
|
+
'es',
|
|
21
|
+
'fr',
|
|
22
|
+
'de',
|
|
23
|
+
'pt',
|
|
24
|
+
'it'
|
|
25
|
+
], {
|
|
26
|
+
message: 'Locale must be one of: en, es, fr, de, pt, it'
|
|
27
|
+
}),
|
|
28
|
+
content: z.string().min(1, 'Content is required').max(10000, 'Content must be less than 10000 characters'),
|
|
29
|
+
description: z.string().max(500, 'Description must be less than 500 characters').optional(),
|
|
30
|
+
category: z.string().max(100, 'Category must be less than 100 characters').optional(),
|
|
31
|
+
isActive: z.boolean().optional(),
|
|
32
|
+
userId: z.string().optional()
|
|
33
|
+
});
|
|
34
|
+
const contentInputSchema = z.object({
|
|
35
|
+
contentId: z.string().optional(),
|
|
36
|
+
key: z.string().min(1, 'Key is required').max(200, 'Key must be less than 200 characters'),
|
|
37
|
+
locale: z.enum([
|
|
38
|
+
'en',
|
|
39
|
+
'es',
|
|
40
|
+
'fr',
|
|
41
|
+
'de',
|
|
42
|
+
'pt',
|
|
43
|
+
'it'
|
|
44
|
+
], {
|
|
45
|
+
message: 'Locale must be one of: en, es, fr, de, pt, it'
|
|
46
|
+
}).optional(),
|
|
47
|
+
content: z.string().min(1, 'Content is required').max(10000, 'Content must be less than 10000 characters'),
|
|
48
|
+
description: z.string().max(500, 'Description must be less than 500 characters').optional(),
|
|
49
|
+
category: z.string().max(100, 'Category must be less than 100 characters').optional(),
|
|
50
|
+
isActive: z.boolean().optional()
|
|
51
|
+
});
|
|
52
|
+
export const parseContent = (content)=>{
|
|
53
|
+
try {
|
|
54
|
+
const validated = contentSchema.parse(content);
|
|
55
|
+
return validated;
|
|
56
|
+
} catch (error) {
|
|
57
|
+
if (error instanceof z.ZodError) {
|
|
58
|
+
const field = error.issues[0]?.path.join('.');
|
|
59
|
+
const message = error.issues[0]?.message || 'Validation failed';
|
|
60
|
+
throw new ContentValidationError(message, field);
|
|
61
|
+
}
|
|
62
|
+
throw error;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export const parseContentInput = (content)=>{
|
|
66
|
+
try {
|
|
67
|
+
const validated = contentInputSchema.parse(content);
|
|
68
|
+
return validated;
|
|
69
|
+
} catch (error) {
|
|
70
|
+
if (error instanceof z.ZodError) {
|
|
71
|
+
const field = error.issues[0]?.path.join('.');
|
|
72
|
+
const message = error.issues[0]?.message || 'Validation failed';
|
|
73
|
+
throw new ContentValidationError(message, field);
|
|
74
|
+
}
|
|
75
|
+
throw error;
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const performContentTransformation = (content)=>{
|
|
79
|
+
const { _id, _key, contentId, id, key, locale, content: contentText, description, category, isActive, userId } = content;
|
|
80
|
+
const transformed = {
|
|
81
|
+
...parseDocument(content),
|
|
82
|
+
...(_key || contentId) && {
|
|
83
|
+
contentId: parseId(_key || contentId)
|
|
84
|
+
},
|
|
85
|
+
...(_id || id || _key || contentId) && {
|
|
86
|
+
id: parseArangoId(_id || id || `content/${_key || contentId}`)
|
|
87
|
+
},
|
|
88
|
+
key: parseString(key, 200),
|
|
89
|
+
locale,
|
|
90
|
+
content: parseString(contentText, 10000),
|
|
91
|
+
...description && {
|
|
92
|
+
description: parseString(description, 500)
|
|
93
|
+
},
|
|
94
|
+
...category && {
|
|
95
|
+
category: parseString(category, 100)
|
|
96
|
+
},
|
|
97
|
+
...isActive !== undefined && {
|
|
98
|
+
isActive
|
|
99
|
+
},
|
|
100
|
+
...userId && {
|
|
101
|
+
userId: parseId(userId)
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return removeEmptyKeys(transformed);
|
|
105
|
+
};
|
|
106
|
+
export const parseContentFromDb = (content)=>performContentTransformation(content);
|
|
107
|
+
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3Ivc3JjL2FkYXB0ZXJzL2NvbnRlbnRBZGFwdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQge3BhcnNlQXJhbmdvSWQsIHBhcnNlSWQsIHBhcnNlU3RyaW5nfSBmcm9tICdAbmxhYnMvdXRpbHMvcGFyc2Vycy9zdHJpbmdzJztcbmltcG9ydCB7en0gZnJvbSAnem9kJztcblxuaW1wb3J0IHtDb250ZW50SW5wdXRUeXBlLCBDb250ZW50VHlwZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5pbXBvcnQge3JlbW92ZUVtcHR5S2V5c30gZnJvbSAnLi4vdXRpbHMvYWRhcHRlclV0aWxzLmpzJztcbmltcG9ydCB7cGFyc2VEb2N1bWVudH0gZnJvbSAnLi9hcmFuZ29BZGFwdGVyLmpzJztcblxuZXhwb3J0IGNsYXNzIENvbnRlbnRWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgcHVibGljIGZpZWxkPzogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gJ0NvbnRlbnRWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbmNvbnN0IGNvbnRlbnRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbnRlbnRJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBrZXk6IHouc3RyaW5nKCkubWluKDEsICdLZXkgaXMgcmVxdWlyZWQnKS5tYXgoMjAwLCAnS2V5IG11c3QgYmUgbGVzcyB0aGFuIDIwMCBjaGFyYWN0ZXJzJyksXG4gIGxvY2FsZTogei5lbnVtKFsnZW4nLCAnZXMnLCAnZnInLCAnZGUnLCAncHQnLCAnaXQnXSwge1xuICAgIG1lc3NhZ2U6ICdMb2NhbGUgbXVzdCBiZSBvbmUgb2Y6IGVuLCBlcywgZnIsIGRlLCBwdCwgaXQnXG4gIH0pLFxuICBjb250ZW50OiB6LnN0cmluZygpLm1pbigxLCAnQ29udGVudCBpcyByZXF1aXJlZCcpLm1heCgxMDAwMCwgJ0NvbnRlbnQgbXVzdCBiZSBsZXNzIHRoYW4gMTAwMDAgY2hhcmFjdGVycycpLFxuICBkZXNjcmlwdGlvbjogei5zdHJpbmcoKS5tYXgoNTAwLCAnRGVzY3JpcHRpb24gbXVzdCBiZSBsZXNzIHRoYW4gNTAwIGNoYXJhY3RlcnMnKS5vcHRpb25hbCgpLFxuICBjYXRlZ29yeTogei5zdHJpbmcoKS5tYXgoMTAwLCAnQ2F0ZWdvcnkgbXVzdCBiZSBsZXNzIHRoYW4gMTAwIGNoYXJhY3RlcnMnKS5vcHRpb25hbCgpLFxuICBpc0FjdGl2ZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdXNlcklkOiB6LnN0cmluZygpLm9wdGlvbmFsKClcbn0pO1xuXG5jb25zdCBjb250ZW50SW5wdXRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIGNvbnRlbnRJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBrZXk6IHouc3RyaW5nKCkubWluKDEsICdLZXkgaXMgcmVxdWlyZWQnKS5tYXgoMjAwLCAnS2V5IG11c3QgYmUgbGVzcyB0aGFuIDIwMCBjaGFyYWN0ZXJzJyksXG4gIGxvY2FsZTogei5lbnVtKFsnZW4nLCAnZXMnLCAnZnInLCAnZGUnLCAncHQnLCAnaXQnXSwge1xuICAgIG1lc3NhZ2U6ICdMb2NhbGUgbXVzdCBiZSBvbmUgb2Y6IGVuLCBlcywgZnIsIGRlLCBwdCwgaXQnXG4gIH0pLm9wdGlvbmFsKCksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkubWluKDEsICdDb250ZW50IGlzIHJlcXVpcmVkJykubWF4KDEwMDAwLCAnQ29udGVudCBtdXN0IGJlIGxlc3MgdGhhbiAxMDAwMCBjaGFyYWN0ZXJzJyksXG4gIGRlc2NyaXB0aW9uOiB6LnN0cmluZygpLm1heCg1MDAsICdEZXNjcmlwdGlvbiBtdXN0IGJlIGxlc3MgdGhhbiA1MDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGNhdGVnb3J5OiB6LnN0cmluZygpLm1heCgxMDAsICdDYXRlZ29yeSBtdXN0IGJlIGxlc3MgdGhhbiAxMDAgY2hhcmFjdGVycycpLm9wdGlvbmFsKCksXG4gIGlzQWN0aXZlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpXG59KTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQ29udGVudCA9IChjb250ZW50OiBDb250ZW50VHlwZSk6IENvbnRlbnRUeXBlID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCB2YWxpZGF0ZWQgPSBjb250ZW50U2NoZW1hLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgQ29udGVudFR5cGU7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBpZihlcnJvciBpbnN0YW5jZW9mIHouWm9kRXJyb3IpIHtcbiAgICAgIGNvbnN0IGZpZWxkID0gZXJyb3IuaXNzdWVzWzBdPy5wYXRoLmpvaW4oJy4nKTtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvci5pc3N1ZXNbMF0/Lm1lc3NhZ2UgfHwgJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgIHRocm93IG5ldyBDb250ZW50VmFsaWRhdGlvbkVycm9yKG1lc3NhZ2UsIGZpZWxkKTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUNvbnRlbnRJbnB1dCA9IChjb250ZW50OiBDb250ZW50SW5wdXRUeXBlKTogQ29udGVudElucHV0VHlwZSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgdmFsaWRhdGVkID0gY29udGVudElucHV0U2NoZW1hLnBhcnNlKGNvbnRlbnQpO1xuICAgIHJldHVybiB2YWxpZGF0ZWQgYXMgQ29udGVudElucHV0VHlwZTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGlmKGVycm9yIGluc3RhbmNlb2Ygei5ab2RFcnJvcikge1xuICAgICAgY29uc3QgZmllbGQgPSBlcnJvci5pc3N1ZXNbMF0/LnBhdGguam9pbignLicpO1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGVycm9yLmlzc3Vlc1swXT8ubWVzc2FnZSB8fCAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgdGhyb3cgbmV3IENvbnRlbnRWYWxpZGF0aW9uRXJyb3IobWVzc2FnZSwgZmllbGQpO1xuICAgIH1cbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuY29uc3QgcGVyZm9ybUNvbnRlbnRUcmFuc2Zvcm1hdGlvbiA9IChjb250ZW50OiBDb250ZW50VHlwZSk6IENvbnRlbnRUeXBlID0+IHtcbiAgY29uc3Qge1xuICAgIF9pZCxcbiAgICBfa2V5LFxuICAgIGNvbnRlbnRJZCxcbiAgICBpZCxcbiAgICBrZXksXG4gICAgbG9jYWxlLFxuICAgIGNvbnRlbnQ6IGNvbnRlbnRUZXh0LFxuICAgIGRlc2NyaXB0aW9uLFxuICAgIGNhdGVnb3J5LFxuICAgIGlzQWN0aXZlLFxuICAgIHVzZXJJZFxuICB9ID0gY29udGVudDtcblxuICBjb25zdCB0cmFuc2Zvcm1lZCA9IHtcbiAgICAuLi5wYXJzZURvY3VtZW50KGNvbnRlbnQpLFxuICAgIC4uLigoX2tleSB8fCBjb250ZW50SWQpICYmIHtjb250ZW50SWQ6IHBhcnNlSWQoX2tleSB8fCBjb250ZW50SWQpfSksXG4gICAgLi4uKChfaWQgfHwgaWQgfHwgX2tleSB8fCBjb250ZW50SWQpICYmIHtpZDogcGFyc2VBcmFuZ29JZChfaWQgfHwgaWQgfHwgYGNvbnRlbnQvJHtfa2V5IHx8IGNvbnRlbnRJZH1gKX0pLFxuICAgIGtleTogcGFyc2VTdHJpbmcoa2V5LCAyMDApLFxuICAgIGxvY2FsZSxcbiAgICBjb250ZW50OiBwYXJzZVN0cmluZyhjb250ZW50VGV4dCwgMTAwMDApLFxuICAgIC4uLihkZXNjcmlwdGlvbiAmJiB7ZGVzY3JpcHRpb246IHBhcnNlU3RyaW5nKGRlc2NyaXB0aW9uLCA1MDApfSksXG4gICAgLi4uKGNhdGVnb3J5ICYmIHtjYXRlZ29yeTogcGFyc2VTdHJpbmcoY2F0ZWdvcnksIDEwMCl9KSxcbiAgICAuLi4oaXNBY3RpdmUgIT09IHVuZGVmaW5lZCAmJiB7aXNBY3RpdmV9KSxcbiAgICAuLi4odXNlcklkICYmIHt1c2VySWQ6IHBhcnNlSWQodXNlcklkKX0pXG4gIH07XG5cbiAgcmV0dXJuIHJlbW92ZUVtcHR5S2V5cyh0cmFuc2Zvcm1lZCkgYXMgQ29udGVudFR5cGU7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VDb250ZW50RnJvbURiID0gKGNvbnRlbnQ6IENvbnRlbnRUeXBlKTogQ29udGVudFR5cGUgPT4gcGVyZm9ybUNvbnRlbnRUcmFuc2Zvcm1hdGlvbihjb250ZW50KTsiXSwibmFtZXMiOlsicGFyc2VBcmFuZ29JZCIsInBhcnNlSWQiLCJwYXJzZVN0cmluZyIsInoiLCJyZW1vdmVFbXB0eUtleXMiLCJwYXJzZURvY3VtZW50IiwiQ29udGVudFZhbGlkYXRpb25FcnJvciIsIkVycm9yIiwibWVzc2FnZSIsImZpZWxkIiwibmFtZSIsImNvbnRlbnRTY2hlbWEiLCJvYmplY3QiLCJjb250ZW50SWQiLCJzdHJpbmciLCJvcHRpb25hbCIsImtleSIsIm1pbiIsIm1heCIsImxvY2FsZSIsImVudW0iLCJjb250ZW50IiwiZGVzY3JpcHRpb24iLCJjYXRlZ29yeSIsImlzQWN0aXZlIiwiYm9vbGVhbiIsInVzZXJJZCIsImNvbnRlbnRJbnB1dFNjaGVtYSIsInBhcnNlQ29udGVudCIsInZhbGlkYXRlZCIsInBhcnNlIiwiZXJyb3IiLCJab2RFcnJvciIsImlzc3VlcyIsInBhdGgiLCJqb2luIiwicGFyc2VDb250ZW50SW5wdXQiLCJwZXJmb3JtQ29udGVudFRyYW5zZm9ybWF0aW9uIiwiX2lkIiwiX2tleSIsImlkIiwiY29udGVudFRleHQiLCJ0cmFuc2Zvcm1lZCIsInVuZGVmaW5lZCIs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
|
|
@@ -7,3 +7,4 @@ export declare const validateFileInput: (file: unknown) => FileType;
|
|
|
7
7
|
export declare const formatFileOutput: (file: FileType) => FileType;
|
|
8
8
|
export declare const getFileType: (file: FileType) => string | undefined;
|
|
9
9
|
export declare const parseFile: (file: FileType) => FileType;
|
|
10
|
+
//# sourceMappingURL=fileAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/fileAdapter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,QAAQ,EAAC,MAAM,yBAAyB,CAAC;AAIjD,qBAAa,mBAAoB,SAAQ,KAAK;IACR,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM;CAInD;AAsBD,eAAO,MAAM,iBAAiB,GAAI,MAAM,OAAO,KAAG,QAWjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,MAAM,QAAQ,KAAG,QAAgB,CAAC;AAEnE,eAAO,MAAM,WAAW,GAAI,MAAM,QAAQ,KAAG,MAAM,GAAG,SAqBrD,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,MAAM,QAAQ,KAAG,QAU1C,CAAC"}
|