@nlabs/reaktor 1.17.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +182 -0
- package/docs/ASSISTANT.md +138 -0
- package/docs/GENERATION.md +42 -5
- package/docs/NATIVE_PUSH.md +56 -0
- package/lib/actions/alfredFaq.d.ts +80 -0
- package/lib/actions/alfredFaq.js +206 -0
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/contentGeneration.d.ts +4 -0
- package/lib/actions/contentGeneration.js +82 -10
- package/lib/actions/contentGenerationErrors.js +1 -1
- package/lib/actions/conversations.d.ts +1 -1
- package/lib/actions/conversations.js +19 -9
- package/lib/actions/crm.js +1 -1
- package/lib/actions/crud.js +26 -1
- package/lib/actions/databaseAccounts.js +1 -1
- package/lib/actions/databaseProvisioningLease.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/geminiVideo.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/higgsfield.js +1 -1
- package/lib/actions/imageGeneration.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.d.ts +1 -0
- package/lib/actions/index.js +2 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +23 -7
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/ollamaGeneration.js +1 -1
- package/lib/actions/openaiResponseSession.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/phoneSupport.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +1 -1
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.js +57 -4
- package/lib/actions/videoGeneration.js +1 -1
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/geminiGenerationAdapter.js +1 -1
- package/lib/adapters/higgsfieldAdapter.js +1 -1
- package/lib/adapters/higgsfieldModelCatalog.js +1 -1
- package/lib/adapters/higgsfieldModels.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/imageGenerationAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/assistant/core.d.ts +53 -0
- package/lib/assistant/core.js +123 -0
- package/lib/assistant/faq.d.ts +26 -0
- package/lib/assistant/faq.js +238 -0
- package/lib/assistant/faqCore.d.ts +23 -0
- package/lib/assistant/faqCore.js +20 -0
- package/lib/assistant/index.d.ts +7 -0
- package/lib/assistant/index.js +5 -0
- package/lib/assistant/service.d.ts +35 -0
- package/lib/assistant/service.js +201 -0
- package/lib/config.js +1 -1
- package/lib/constants/collections.js +1 -1
- package/lib/durableChat/conversations.d.ts +62 -0
- package/lib/durableChat/conversations.js +729 -0
- package/lib/durableChat/errors.d.ts +6 -0
- package/lib/durableChat/errors.js +11 -0
- package/lib/durableChat/events.d.ts +22 -0
- package/lib/durableChat/events.js +50 -0
- package/lib/durableChat/index.d.ts +8 -0
- package/lib/durableChat/index.js +10 -0
- package/lib/durableChat/membership.d.ts +24 -0
- package/lib/durableChat/membership.js +85 -0
- package/lib/durableChat/messageTypes.d.ts +76 -0
- package/lib/durableChat/messageTypes.js +3 -0
- package/lib/durableChat/messages.d.ts +16 -0
- package/lib/durableChat/messages.js +257 -0
- package/lib/durableChat/transaction.d.ts +10 -0
- package/lib/durableChat/transaction.js +53 -0
- package/lib/durableChat/types.d.ts +81 -0
- package/lib/durableChat/types.js +3 -0
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.d.ts +4 -4
- package/lib/index.js +5 -3
- package/lib/lambdas/actions/websockets.js +4 -4
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +1 -1
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/higgsfield/higgsfield.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/nativePush/graphql.d.ts +14 -0
- package/lib/nativePush/graphql.js +105 -0
- package/lib/nativePush/index.d.ts +7 -0
- package/lib/nativePush/index.js +9 -0
- package/lib/nativePush/migrations.d.ts +2 -0
- package/lib/nativePush/migrations.js +36 -0
- package/lib/nativePush/nativePushContract.fixture.d.ts +22 -0
- package/lib/nativePush/nativePushContract.fixture.js +27 -0
- package/lib/nativePush/payload.d.ts +2 -0
- package/lib/nativePush/payload.js +106 -0
- package/lib/nativePush/repository.d.ts +9 -0
- package/lib/nativePush/repository.js +120 -0
- package/lib/nativePush/service.d.ts +2 -0
- package/lib/nativePush/service.js +110 -0
- package/lib/nativePush/snsProvider.d.ts +17 -0
- package/lib/nativePush/snsProvider.js +165 -0
- package/lib/nativePush/types.d.ts +89 -0
- package/lib/nativePush/types.js +3 -0
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/contentGeneration.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +1 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +1 -1
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/higgsfield.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/imageGeneration.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +1 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/objectTypes/videoGeneration.js +1 -1
- package/lib/organizations/accountLifecycle.d.ts +7 -0
- package/lib/organizations/accountLifecycle.js +106 -0
- package/lib/organizations/authorization.d.ts +9 -0
- package/lib/organizations/authorization.js +40 -0
- package/lib/organizations/billing.d.ts +38 -0
- package/lib/organizations/billing.js +277 -0
- package/lib/organizations/billingProvider.d.ts +4 -0
- package/lib/organizations/billingProvider.js +287 -0
- package/lib/organizations/billingUpdates.d.ts +9 -0
- package/lib/organizations/billingUpdates.js +388 -0
- package/lib/organizations/index.d.ts +10 -0
- package/lib/organizations/index.js +12 -0
- package/lib/organizations/mail.d.ts +10 -0
- package/lib/organizations/mail.js +60 -0
- package/lib/organizations/memberDirectory.d.ts +15 -0
- package/lib/organizations/memberDirectory.js +28 -0
- package/lib/organizations/membership.d.ts +19 -0
- package/lib/organizations/membership.js +248 -0
- package/lib/organizations/passwordRecovery.d.ts +9 -0
- package/lib/organizations/passwordRecovery.js +50 -0
- package/lib/organizations/plans.d.ts +6 -0
- package/lib/organizations/plans.js +40 -0
- package/lib/organizations/providerPagination.d.ts +6 -0
- package/lib/organizations/providerPagination.js +23 -0
- package/lib/organizations/reconciliation.d.ts +11 -0
- package/lib/organizations/reconciliation.js +400 -0
- package/lib/organizations/signup.d.ts +25 -0
- package/lib/organizations/signup.js +169 -0
- package/lib/organizations/store.d.ts +25 -0
- package/lib/organizations/store.js +167 -0
- package/lib/organizations/types.d.ts +138 -0
- package/lib/organizations/types.js +3 -0
- package/lib/organizations/verification.d.ts +3 -0
- package/lib/organizations/verification.js +51 -0
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +1 -1
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/higgsfield/higgsfield.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/databaseCredentials.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.js +1 -1
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/databaseCredentials.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/generationCallback.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/mediaAccess.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/nodeRealtime.js +1 -1
- package/lib/utils/opaqueToken.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/secretDatabase.js +1 -1
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +1 -1
- package/lib/utils/stripeUtils.ts.bak +1 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +16 -3
package/lib/objectTypes/video.js
CHANGED
|
@@ -380,4 +380,4 @@ export const videoUploadPartInputType = schemaComposer.createInputTC({
|
|
|
380
380
|
name: 'VideoUploadPartInput'
|
|
381
381
|
});
|
|
382
382
|
|
|
383
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvdmlkZW8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cblxuaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcbmltcG9ydCB7cGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5cbmltcG9ydCB7Z2V0SW1hZ2VVcmx9IGZyb20gJy4uL2FjdGlvbnMvaW1hZ2VzLmpzJztcbmltcG9ydCB7Z2V0VmlkZW9TaWduZWRLZXlVcmwsIGdldFZpZGVvVXJsfSBmcm9tICcuLi9hY3Rpb25zL3ZpZGVvcy5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7ZG9jdW1lbnR9IGZyb20gJy4vZG9jdW1lbnQuanMnO1xuXG5jb25zdCBnZXREb2N1bWVudEtleSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gIGlmKCFub3JtYWxpemVkVmFsdWUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZWRWYWx1ZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIFN0cmluZyhwYXJ0cy5hdCgtMSkgfHwgbm9ybWFsaXplZFZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2aWRlb1R5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIGFkZGVkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RpbWVzdGFtcCB3aGVuIHRoZSB2aWRlbyB3YXMgYWRkZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGR1cmF0aW9uTXM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRHVyYXRpb24gb2YgdGhlIHZpZGVvIGluIG1pbGxpc2Vjb25kcy4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9LFxuICAgIGV4dGVybmFsSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgcHJvdmlkZXIgdmlkZW8gaWQuJyxcbiAgICAgIHR5cGU6ICdJRCdcbiAgICB9LFxuICAgIGV4dGVybmFsVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHByb3ZpZGVyIFVSTC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGZpbGVTaXplOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1NpemUgb2YgdGhlIHZpZGVvIGZpbGUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGZpbGVUeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgdHlwZS9leHRlbnNpb24uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBoZWlnaHQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSGVpZ2h0IG9mIHRoZSB2aWRlbyBpbiBwaXhlbHMuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICBobHNVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2lnbmVkIEhMUyBwbGF5bGlzdCBVUkwgZm9yIGJyb3dzZXIgcGxheWJhY2suJyxcbiAgICAgIHJlc29sdmUoaXRlbSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChTdHJpbmcoaXRlbT8uaGxzS2V5IHx8ICcnKSwgQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpKTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcGxheWJhY2tGaWxlVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246ICdNSU1FIHR5cGUgb2YgdGhlIHByb2Nlc3NlZCBicm93c2VyIHBsYXliYWNrIGFzc2V0LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcGxheWJhY2tVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2lnbmVkIFVSTCBvZiB0aGUgcHJvY2Vzc2VkIGJyb3dzZXIgcGxheWJhY2sgYXNzZXQuJyxcbiAgICAgIHJlc29sdmUoaXRlbSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChTdHJpbmcoaXRlbT8ucGxheWJhY2tLZXkgfHwgJycpLCBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JykpO1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcml2YWN5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1dobyBjYW4gdmlldyB0aGUgdmlkZW8uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBtb2RpZmllZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaW1lc3RhbXAgd2hlbiB0aGUgdmlkZW8gd2FzIGxhc3QgbW9kaWZpZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIG1lZGlhQ29udmVydEpvYklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FXUyBFbGVtZW50YWwgTWVkaWFDb252ZXJ0IGpvYiBpZC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYUlkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1BlcnNvbmEgSUQgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICB0eXBlOiAnSUQnXG4gICAgfSxcbiAgICBvd25lclBlcnNvbmFJbWFnZVVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdJbWFnZSBVUkwgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBQcm9taXNlPHN0cmluZz4gfCBzdHJpbmcge1xuICAgICAgICBpZihpdGVtPy5vd25lclBlcnNvbmFJbWFnZVVybCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaXRlbS5vd25lclBlcnNvbmFJbWFnZVVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZUlkID0gcGFyc2VJZChTdHJpbmcoaXRlbT8ub3duZXJQZXJzb25hSW1hZ2VJZCB8fCAnJykpO1xuICAgICAgICBjb25zdCB1c2VySWQgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5vd25lclBlcnNvbmFVc2VySWQgfHwgJycpKTtcblxuICAgICAgICBpZighaW1hZ2VJZCB8fCAhdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ2ltYWdlcycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICBpbWFnZVR5cGU6ICdqcGcnLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCdcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYU5hbWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGlzcGxheSBuYW1lIGZvciB0aGUgcHJvZmlsZSB0aGF0IG93bnMgdGhpcyB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYVRodW1iVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RodW1ibmFpbCBVUkwgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBQcm9taXNlPHN0cmluZz4gfCBzdHJpbmcge1xuICAgICAgICBpZihpdGVtPy5vd25lclBlcnNvbmFUaHVtYlVybCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaXRlbS5vd25lclBlcnNvbmFUaHVtYlVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZUlkID0gcGFyc2VJZChTdHJpbmcoaXRlbT8ub3duZXJQZXJzb25hSW1hZ2VJZCB8fCAnJykpO1xuICAgICAgICBjb25zdCB1c2VySWQgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5vd25lclBlcnNvbmFVc2VySWQgfHwgJycpKTtcblxuICAgICAgICBpZighaW1hZ2VJZCB8fCAhdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ3RodW1icycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICBpbWFnZVR5cGU6ICdqcGcnLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCdcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHByb3ZpZGVyOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHZpZGVvIHByb3ZpZGVyLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcHJvY2Vzc2luZ1N0YXR1czoge1xuICAgICAgZGVzY3JpcHRpb246ICdDdXJyZW50IHZpZGVvIHByb2Nlc3Npbmcgc3RhdGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcm9jZXNzaW5nRXJyb3I6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGFzdCB2aWRlbyBwcm9jZXNzaW5nIGZhaWx1cmUgbWVzc2FnZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHNvdXJjZUtleToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBTMyBvYmplY3Qga2V5LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgc3RyZWFtVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGF5YmFjayBzdHJlYW0gdHlwZSBmb3IgcHJvY2Vzc2VkIHZpZGVvLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdGh1bWJVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVVJMIGZvciB0aGUgdmlkZW8gcG9zdGVyL3RodW1iIGlmIGF2YWlsYWJsZS4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge19rZXk6IHZpZGVvSWQsIHRodW1iRmlsZVR5cGUsIHVzZXJJZH0gPSBpdGVtO1xuXG4gICAgICAgIGlmKCF0aHVtYkZpbGVUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VmlkZW9Vcmwoe1xuICAgICAgICAgIGJ1Y2tldDogQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpLFxuICAgICAgICAgIGZpbGVUeXBlOiB0aHVtYkZpbGVUeXBlLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCcsXG4gICAgICAgICAgdmlkZW9EaXI6ICd2aWRlby10aHVtYnMnLFxuICAgICAgICAgIHZpZGVvSWRcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVmlkZW8gdHlwZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdTaWduZWQgVVJMIG9mIHRoZSBwbGF5YWJsZSB2aWRlbyBhc3NldC4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge19rZXk6IHZpZGVvSWQsIGZpbGVUeXBlLCB1c2VySWR9ID0gaXRlbTtcbiAgICAgICAgY29uc3QgcGxheWJhY2tLZXkgPSBTdHJpbmcoaXRlbT8ucGxheWJhY2tLZXkgfHwgJycpLnRyaW0oKTtcblxuICAgICAgICBpZihwbGF5YmFja0tleSkge1xuICAgICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChwbGF5YmFja0tleSwgQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRWaWRlb1VybCh7XG4gICAgICAgICAgYnVja2V0OiBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JyksXG4gICAgICAgICAgZmlsZVR5cGUsXG4gICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICB0eXBlSWQ6IHVzZXJJZCxcbiAgICAgICAgICB1cmxUeXBlOiAnc2lnbmVkJyxcbiAgICAgICAgICB2aWRlb0RpcjogJ3ZpZGVvcycsXG4gICAgICAgICAgdmlkZW9JZFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXNlcklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgd2hvIHVwbG9hZGVkIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH0sXG4gICAgdXBsb2FkSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUzMgbXVsdGlwYXJ0IHVwbG9hZCBpZCB3aGlsZSB1cGxvYWQgaXMgYWN0aXZlLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXBsb2FkS2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIG9iamVjdCBrZXkgdXNlZCBmb3IgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXBsb2FkU3RhdHVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgdmlkZW8gdXBsb2FkIHN0YXRlLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdmlkZW9JZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBrZXkgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5fa2V5IHx8ICcnKSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZERvY0lkID0gZ2V0RG9jdW1lbnRLZXkoaXRlbT8uaWQgfHwgaXRlbT8uX2lkKTtcbiAgICAgICAgcmV0dXJuIGtleSB8fCBwYXJzZWREb2NJZDtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnSUQhJ1xuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2lkdGggb2YgdGhlIHZpZGVvIGluIHBpeGVscy4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9XG4gIH0sXG4gIG5hbWU6ICdWaWRlbydcbn0pO1xudmlkZW9UeXBlLmFkZEZpZWxkcyhkb2N1bWVudC5nZXRGaWVsZHMoKSk7XG5cbmV4cG9ydCBjb25zdCB2aWRlb0lucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBiYXNlNjQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmFzZTY0LWVuY29kZWQgdmlkZW8gZGF0YS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGV4dGVybmFsSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgcHJvdmlkZXIgdmlkZW8gaWQuJyxcbiAgICAgIHR5cGU6ICdJRCdcbiAgICB9LFxuICAgIGV4dGVybmFsVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHByb3ZpZGVyIFVSTC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGZpbGVUeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgdHlwZS9leHRlbnNpb24uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBmaWxlTmFtZToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBmaWxlIG5hbWUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBmaWxlU2l6ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBmaWxlIHNpemUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGhsc0tleToge1xuICAgICAgZGVzY3JpcHRpb246ICdTMyBrZXkgZm9yIHByb2Nlc3NlZCBITFMgcGxheWxpc3QuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBpdGVtSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIGl0ZW0gdGhpcyB2aWRlbyBpcyBhdHRhY2hlZCB0by4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH0sXG4gICAgaXRlbVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVHlwZS9jYXRlZ29yeSBvZiB0aGUgaXRlbS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHByaXZhY3k6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hvIGNhbiB2aWV3IHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBsYXliYWNrRmlsZVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTUlNRSB0eXBlIG9mIHRoZSBwcm9jZXNzZWQgYnJvd3NlciBwbGF5YmFjayBhc3NldC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBsYXliYWNrS2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIGtleSBmb3IgcHJvY2Vzc2VkIGJyb3dzZXIgcGxheWJhY2sgYXNzZXQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcm92aWRlcjoge1xuICAgICAgZGVzY3JpcHRpb246ICdFeHRlcm5hbCB2aWRlbyBwcm92aWRlci4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHN0cmVhbVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUGxheWJhY2sgc3RyZWFtIHR5cGUgZm9yIHByb2Nlc3NlZCB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHRodW1iQmFzZTY0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Jhc2U2NC1lbmNvZGVkIHZpZGVvIHRodW1ibmFpbCBpbWFnZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHRodW1iRmlsZVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVmlkZW8gdGh1bWJuYWlsIGltYWdlIHR5cGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwYXJ0Q291bnQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTnVtYmVyIG9mIHVwbG9hZCBwYXJ0cyByZXF1ZXN0ZWQuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZpZGVvIHR5cGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICB1cmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgb3IgaG9zdGVkIFVSTCBmb3IgdGhlIHZpZGVvLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdmlkZW9JZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdWaWRlbyBJRC4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvSW5wdXQnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpZGVvVXBsb2FkUGFydFVybFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIHBhcnROdW1iZXI6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTXVsdGlwYXJ0IHVwbG9hZCBwYXJ0IG51bWJlci4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVzaWduZWQgVVJMIGZvciB0aGlzIHVwbG9hZCBwYXJ0LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvVXBsb2FkUGFydFVybCdcbn0pO1xuXG5leHBvcnQgY29uc3QgdmlkZW9NdWx0aXBhcnRVcGxvYWRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBidWNrZXQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUzMgYnVja2V0IGZvciB0aGUgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAga2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIGtleSBmb3IgdGhlIHVwbG9hZC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBhcnRTaXplOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1JlY29tbWVuZGVkIHVwbG9hZCBwYXJ0IHNpemUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICBwYXJ0VXJsczoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVzaWduZWQgVVJMcyBmb3IgdXBsb2FkIHBhcnRzLicsXG4gICAgICB0eXBlOiBbdmlkZW9VcGxvYWRQYXJ0VXJsVHlwZV1cbiAgICB9LFxuICAgIHVwbG9hZElkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIG11bHRpcGFydCB1cGxvYWQgaWQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICB2aWRlbzoge1xuICAgICAgZGVzY3JpcHRpb246ICdQZW5kaW5nIHZpZGVvIHJlY29yZC4nLFxuICAgICAgdHlwZTogdmlkZW9UeXBlXG4gICAgfSxcbiAgICB2aWRlb0lkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZpZGVvIElEIGZvciB0aGUgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnSUQnXG4gICAgfVxuICB9LFxuICBuYW1lOiAnVmlkZW9NdWx0aXBhcnRVcGxvYWQnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpZGVvVXBsb2FkUGFydElucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBldGFnOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0VUYWcgcmV0dXJuZWQgYnkgUzMgZm9yIHRoaXMgdXBsb2FkZWQgcGFydC4nLFxuICAgICAgdHlwZTogJ1N0cmluZyEnXG4gICAgfSxcbiAgICBwYXJ0TnVtYmVyOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ011bHRpcGFydCB1cGxvYWQgcGFydCBudW1iZXIuJyxcbiAgICAgIHR5cGU6ICdJbnQhJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvVXBsb2FkUGFydElucHV0J1xufSk7XG4iXSwibmFtZXMiOlsic2NoZW1hQ29tcG9zZXIiLCJwYXJzZUlkIiwiZ2V0SW1hZ2VVcmwiLCJnZXRWaWRlb1NpZ25lZEtleVVybCIsImdldFZpZGVvVXJsIiwiQ29uZmlnIiwiZG9jdW1lbnQiLCJnZXREb2N1bWVudEtleSIsInZhbHVlIiwibm9ybWFsaXplZFZhbHVlIiwiU3RyaW5nIiwidHJpbSIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiYXQiLCJ2aWRlb1R5cGUiLCJjcmVhdGVPYmplY3RUQyIsImZpZWxkcyIsImFkZGVkIiwiZGVzY3JpcHRpb24iLCJ0eXBlIiwiZHVyYXRpb25NcyIsImV4dGVybmFsSWQiLCJleHRlcm5hbFVybCIsImZpbGVTaXplIiwiZmlsZVR5cGUiLCJoZWlnaHQiLCJobHNVcmwiLCJyZXNvbHZlIiwiaXRlbSIsImhsc0tleSIsImdldCIsInBsYXliYWNrRmlsZVR5cGUiLCJwbGF5YmFja1VybCIsInBsYXliYWNrS2V5IiwicHJpdmFjeSIsIm1vZGlmaWVkIiwibWVkaWFDb252ZXJ0Sm9iSWQiLCJvd25lclBlcnNvbmFJZCIsIm93bmVyUGVyc29uYUltYWdlVXJsIiwiaW1hZ2VJZCIsIm93bmVyUGVyc29uYUltYWdlSWQiLCJ1c2VySWQiLCJvd25lclBlcnNvbmFVc2VySWQiLCJidWNrZXQiLCJpbWFnZURpciIsImltYWdlVHlwZSIsInR5cGVJZCIsInVybFR5cGUiLCJvd25lclBlcnNvbmFOYW1lIiwib3duZXJQZXJzb25hVGh1bWJVcmwiLCJwcm92aWRlciIsInByb2Nlc3NpbmdTdGF0dXMiLCJwcm9jZXNzaW5nRXJyb3IiLCJzb3VyY2VLZXkiLCJzdHJlYW1UeXBlIiwidGh1bWJVcmwiLCJfa2V5IiwidmlkZW9JZCIsInRodW1iRmlsZVR5cGUiLCJQcm9taXNlIiwidmlkZW9EaXIiLCJ1cmwiLCJ1cGxvYWRJZCIsInVwbG9hZEtleSIsInVwbG9hZFN0YXR1cyIsImtleSIsInBhcnNlZERvY0lkIiwiaWQiLCJfaWQiLCJ3aWR0aCIsIm5hbWUiLCJhZGRGaWVsZHMiLCJnZXRGaWVsZHMiLCJ2aWRlb0lucHV0VHlwZSIsImNyZWF0ZUlucHV0VEMiLCJiYXNlNjQiLCJmaWxlTmFtZSIsIml0ZW1JZCIsIml0ZW1UeXBlIiwidGh1bWJCYXNlNjQiLCJwYXJ0Q291bnQiLCJ2aWRlb1VwbG9hZFBhcnRVcmxUeXBlIiwicGFydE51bWJlciIsInZpZGVvTXVsdGlwYXJ0VXBsb2FkVHlwZSIsInBhcnRTaXplIiwicGFydFVybHMiLCJ2aWRlbyIsInZpZGVvVXBsb2FkUGFydElucHV0VHlwZSIsImV0YWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFDL0MsU0FBUUMsT0FBTyxRQUFPLCtCQUErQjtBQUVyRCxTQUFRQyxXQUFXLFFBQU8sdUJBQXVCO0FBQ2pELFNBQVFDLG9CQUFvQixFQUFFQyxXQUFXLFFBQU8sdUJBQXVCO0FBQ3ZFLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFFBQVEsUUFBTyxnQkFBZ0I7QUFFdkMsTUFBTUMsaUJBQWlCLENBQUNDO0lBQ3RCLE1BQU1DLGtCQUFrQkMsT0FBT0YsU0FBUyxJQUFJRyxJQUFJO0lBRWhELElBQUcsQ0FBQ0YsaUJBQWlCO1FBQ25CLE9BQU87SUFDVDtJQUVBLE1BQU1HLFFBQVFILGdCQUFnQkksS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQ0M7SUFDaEQsT0FBT0wsT0FBT0UsTUFBTUksRUFBRSxDQUFDLENBQUMsTUFBTVA7QUFDaEM7QUFFQSxPQUFPLE1BQU1RLFlBQVlqQixlQUFla0IsY0FBYyxDQUFDO0lBQ3JEQyxRQUFRO1FBQ05DLE9BQU87WUFDTEMsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUQsYUFBYTtZQUNYQSxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBQyxZQUFZO1lBQ1ZG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
|
|
383
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvdmlkZW8udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjYtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVXNlIGlzIHN1YmplY3QgdG8gdGhlIGFjY29tcGFueWluZyBjb21tZXJjaWFsIExJQ0VOU0UuXG4gKi9cblxuaW1wb3J0IHtzY2hlbWFDb21wb3Nlcn0gZnJvbSAnZ3JhcGhxbC1jb21wb3NlJztcbmltcG9ydCB7cGFyc2VJZH0gZnJvbSAnQG5sYWJzL3V0aWxzL3BhcnNlcnMvc3RyaW5ncyc7XG5cbmltcG9ydCB7Z2V0SW1hZ2VVcmx9IGZyb20gJy4uL2FjdGlvbnMvaW1hZ2VzLmpzJztcbmltcG9ydCB7Z2V0VmlkZW9TaWduZWRLZXlVcmwsIGdldFZpZGVvVXJsfSBmcm9tICcuLi9hY3Rpb25zL3ZpZGVvcy5qcyc7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi4vY29uZmlnLmpzJztcbmltcG9ydCB7ZG9jdW1lbnR9IGZyb20gJy4vZG9jdW1lbnQuanMnO1xuXG5jb25zdCBnZXREb2N1bWVudEtleSA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRWYWx1ZSA9IFN0cmluZyh2YWx1ZSB8fCAnJykudHJpbSgpO1xuXG4gIGlmKCFub3JtYWxpemVkVmFsdWUpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBjb25zdCBwYXJ0cyA9IG5vcm1hbGl6ZWRWYWx1ZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIFN0cmluZyhwYXJ0cy5hdCgtMSkgfHwgbm9ybWFsaXplZFZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCB2aWRlb1R5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIGFkZGVkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RpbWVzdGFtcCB3aGVuIHRoZSB2aWRlbyB3YXMgYWRkZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGR1cmF0aW9uTXM6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRHVyYXRpb24gb2YgdGhlIHZpZGVvIGluIG1pbGxpc2Vjb25kcy4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9LFxuICAgIGV4dGVybmFsSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgcHJvdmlkZXIgdmlkZW8gaWQuJyxcbiAgICAgIHR5cGU6ICdJRCdcbiAgICB9LFxuICAgIGV4dGVybmFsVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHByb3ZpZGVyIFVSTC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGZpbGVTaXplOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1NpemUgb2YgdGhlIHZpZGVvIGZpbGUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGZpbGVUeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgdHlwZS9leHRlbnNpb24uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBoZWlnaHQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSGVpZ2h0IG9mIHRoZSB2aWRlbyBpbiBwaXhlbHMuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICBobHNVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2lnbmVkIEhMUyBwbGF5bGlzdCBVUkwgZm9yIGJyb3dzZXIgcGxheWJhY2suJyxcbiAgICAgIHJlc29sdmUoaXRlbSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChTdHJpbmcoaXRlbT8uaGxzS2V5IHx8ICcnKSwgQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpKTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcGxheWJhY2tGaWxlVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246ICdNSU1FIHR5cGUgb2YgdGhlIHByb2Nlc3NlZCBicm93c2VyIHBsYXliYWNrIGFzc2V0LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcGxheWJhY2tVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2lnbmVkIFVSTCBvZiB0aGUgcHJvY2Vzc2VkIGJyb3dzZXIgcGxheWJhY2sgYXNzZXQuJyxcbiAgICAgIHJlc29sdmUoaXRlbSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChTdHJpbmcoaXRlbT8ucGxheWJhY2tLZXkgfHwgJycpLCBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JykpO1xuICAgICAgfSxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcml2YWN5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1dobyBjYW4gdmlldyB0aGUgdmlkZW8uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBtb2RpZmllZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdUaW1lc3RhbXAgd2hlbiB0aGUgdmlkZW8gd2FzIGxhc3QgbW9kaWZpZWQuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIG1lZGlhQ29udmVydEpvYklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0FXUyBFbGVtZW50YWwgTWVkaWFDb252ZXJ0IGpvYiBpZC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYUlkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1BlcnNvbmEgSUQgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICB0eXBlOiAnSUQnXG4gICAgfSxcbiAgICBvd25lclBlcnNvbmFJbWFnZVVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdJbWFnZSBVUkwgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBQcm9taXNlPHN0cmluZz4gfCBzdHJpbmcge1xuICAgICAgICBpZihpdGVtPy5vd25lclBlcnNvbmFJbWFnZVVybCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaXRlbS5vd25lclBlcnNvbmFJbWFnZVVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZUlkID0gcGFyc2VJZChTdHJpbmcoaXRlbT8ub3duZXJQZXJzb25hSW1hZ2VJZCB8fCAnJykpO1xuICAgICAgICBjb25zdCB1c2VySWQgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5vd25lclBlcnNvbmFVc2VySWQgfHwgJycpKTtcblxuICAgICAgICBpZighaW1hZ2VJZCB8fCAhdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ2ltYWdlcycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICBpbWFnZVR5cGU6ICdqcGcnLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCdcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYU5hbWU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRGlzcGxheSBuYW1lIGZvciB0aGUgcHJvZmlsZSB0aGF0IG93bnMgdGhpcyB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIG93bmVyUGVyc29uYVRodW1iVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1RodW1ibmFpbCBVUkwgZm9yIHRoZSBwcm9maWxlIHRoYXQgb3ducyB0aGlzIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBQcm9taXNlPHN0cmluZz4gfCBzdHJpbmcge1xuICAgICAgICBpZihpdGVtPy5vd25lclBlcnNvbmFUaHVtYlVybCkge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcoaXRlbS5vd25lclBlcnNvbmFUaHVtYlVybCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpbWFnZUlkID0gcGFyc2VJZChTdHJpbmcoaXRlbT8ub3duZXJQZXJzb25hSW1hZ2VJZCB8fCAnJykpO1xuICAgICAgICBjb25zdCB1c2VySWQgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5vd25lclBlcnNvbmFVc2VySWQgfHwgJycpKTtcblxuICAgICAgICBpZighaW1hZ2VJZCB8fCAhdXNlcklkKSB7XG4gICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdldEltYWdlVXJsKHtcbiAgICAgICAgICBidWNrZXQ6IENvbmZpZy5nZXQoJ2F3cy5zMy5CdWNrZXQnKSxcbiAgICAgICAgICBpbWFnZURpcjogJ3RodW1icycsXG4gICAgICAgICAgaW1hZ2VJZCxcbiAgICAgICAgICBpbWFnZVR5cGU6ICdqcGcnLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCdcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHByb3ZpZGVyOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHZpZGVvIHByb3ZpZGVyLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgcHJvY2Vzc2luZ1N0YXR1czoge1xuICAgICAgZGVzY3JpcHRpb246ICdDdXJyZW50IHZpZGVvIHByb2Nlc3Npbmcgc3RhdGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcm9jZXNzaW5nRXJyb3I6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGFzdCB2aWRlbyBwcm9jZXNzaW5nIGZhaWx1cmUgbWVzc2FnZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHNvdXJjZUtleToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBTMyBvYmplY3Qga2V5LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgc3RyZWFtVHlwZToge1xuICAgICAgZGVzY3JpcHRpb246ICdQbGF5YmFjayBzdHJlYW0gdHlwZSBmb3IgcHJvY2Vzc2VkIHZpZGVvLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdGh1bWJVcmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVVJMIGZvciB0aGUgdmlkZW8gcG9zdGVyL3RodW1iIGlmIGF2YWlsYWJsZS4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge19rZXk6IHZpZGVvSWQsIHRodW1iRmlsZVR5cGUsIHVzZXJJZH0gPSBpdGVtO1xuXG4gICAgICAgIGlmKCF0aHVtYkZpbGVUeXBlKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnJyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZ2V0VmlkZW9Vcmwoe1xuICAgICAgICAgIGJ1Y2tldDogQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpLFxuICAgICAgICAgIGZpbGVUeXBlOiB0aHVtYkZpbGVUeXBlLFxuICAgICAgICAgIHR5cGU6ICd1c2VycycsXG4gICAgICAgICAgdHlwZUlkOiB1c2VySWQsXG4gICAgICAgICAgdXJsVHlwZTogJ3NpZ25lZCcsXG4gICAgICAgICAgdmlkZW9EaXI6ICd2aWRlby10aHVtYnMnLFxuICAgICAgICAgIHZpZGVvSWRcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVmlkZW8gdHlwZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdTaWduZWQgVVJMIG9mIHRoZSBwbGF5YWJsZSB2aWRlbyBhc3NldC4nLFxuICAgICAgcmVzb2x2ZShpdGVtKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3Qge19rZXk6IHZpZGVvSWQsIGZpbGVUeXBlLCB1c2VySWR9ID0gaXRlbTtcbiAgICAgICAgY29uc3QgcGxheWJhY2tLZXkgPSBTdHJpbmcoaXRlbT8ucGxheWJhY2tLZXkgfHwgJycpLnRyaW0oKTtcblxuICAgICAgICBpZihwbGF5YmFja0tleSkge1xuICAgICAgICAgIHJldHVybiBnZXRWaWRlb1NpZ25lZEtleVVybChwbGF5YmFja0tleSwgQ29uZmlnLmdldCgnYXdzLnMzLkJ1Y2tldCcpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRWaWRlb1VybCh7XG4gICAgICAgICAgYnVja2V0OiBDb25maWcuZ2V0KCdhd3MuczMuQnVja2V0JyksXG4gICAgICAgICAgZmlsZVR5cGUsXG4gICAgICAgICAgdHlwZTogJ3VzZXJzJyxcbiAgICAgICAgICB0eXBlSWQ6IHVzZXJJZCxcbiAgICAgICAgICB1cmxUeXBlOiAnc2lnbmVkJyxcbiAgICAgICAgICB2aWRlb0RpcjogJ3ZpZGVvcycsXG4gICAgICAgICAgdmlkZW9JZFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXNlcklkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1VzZXIgd2hvIHVwbG9hZGVkIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH0sXG4gICAgdXBsb2FkSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUzMgbXVsdGlwYXJ0IHVwbG9hZCBpZCB3aGlsZSB1cGxvYWQgaXMgYWN0aXZlLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXBsb2FkS2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIG9iamVjdCBrZXkgdXNlZCBmb3IgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdXBsb2FkU3RhdHVzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0N1cnJlbnQgdmlkZW8gdXBsb2FkIHN0YXRlLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdmlkZW9JZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHZpZGVvLicsXG4gICAgICByZXNvbHZlKGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBrZXkgPSBwYXJzZUlkKFN0cmluZyhpdGVtPy5fa2V5IHx8ICcnKSk7XG4gICAgICAgIGNvbnN0IHBhcnNlZERvY0lkID0gZ2V0RG9jdW1lbnRLZXkoaXRlbT8uaWQgfHwgaXRlbT8uX2lkKTtcbiAgICAgICAgcmV0dXJuIGtleSB8fCBwYXJzZWREb2NJZDtcbiAgICAgIH0sXG4gICAgICB0eXBlOiAnSUQhJ1xuICAgIH0sXG4gICAgd2lkdGg6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2lkdGggb2YgdGhlIHZpZGVvIGluIHBpeGVscy4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9XG4gIH0sXG4gIG5hbWU6ICdWaWRlbydcbn0pO1xudmlkZW9UeXBlLmFkZEZpZWxkcyhkb2N1bWVudC5nZXRGaWVsZHMoKSk7XG5cbmV4cG9ydCBjb25zdCB2aWRlb0lucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBiYXNlNjQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnQmFzZTY0LWVuY29kZWQgdmlkZW8gZGF0YS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Rlc2NyaXB0aW9uIG9mIHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGV4dGVybmFsSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgcHJvdmlkZXIgdmlkZW8gaWQuJyxcbiAgICAgIHR5cGU6ICdJRCdcbiAgICB9LFxuICAgIGV4dGVybmFsVXJsOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0V4dGVybmFsIHByb3ZpZGVyIFVSTC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIGZpbGVUeXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZpbGUgdHlwZS9leHRlbnNpb24uJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBmaWxlTmFtZToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBmaWxlIG5hbWUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBmaWxlU2l6ZToge1xuICAgICAgZGVzY3JpcHRpb246ICdPcmlnaW5hbCBmaWxlIHNpemUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdGbG9hdCdcbiAgICB9LFxuICAgIGhsc0tleToge1xuICAgICAgZGVzY3JpcHRpb246ICdTMyBrZXkgZm9yIHByb2Nlc3NlZCBITFMgcGxheWxpc3QuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBpdGVtSWQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnSUQgb2YgdGhlIGl0ZW0gdGhpcyB2aWRlbyBpcyBhdHRhY2hlZCB0by4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH0sXG4gICAgaXRlbVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVHlwZS9jYXRlZ29yeSBvZiB0aGUgaXRlbS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHByaXZhY3k6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnV2hvIGNhbiB2aWV3IHRoZSB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBsYXliYWNrRmlsZVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTUlNRSB0eXBlIG9mIHRoZSBwcm9jZXNzZWQgYnJvd3NlciBwbGF5YmFjayBhc3NldC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBsYXliYWNrS2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIGtleSBmb3IgcHJvY2Vzc2VkIGJyb3dzZXIgcGxheWJhY2sgYXNzZXQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwcm92aWRlcjoge1xuICAgICAgZGVzY3JpcHRpb246ICdFeHRlcm5hbCB2aWRlbyBwcm92aWRlci4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHN0cmVhbVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUGxheWJhY2sgc3RyZWFtIHR5cGUgZm9yIHByb2Nlc3NlZCB2aWRlby4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHRodW1iQmFzZTY0OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0Jhc2U2NC1lbmNvZGVkIHZpZGVvIHRodW1ibmFpbCBpbWFnZS4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHRodW1iRmlsZVR5cGU6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnVmlkZW8gdGh1bWJuYWlsIGltYWdlIHR5cGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICBwYXJ0Q291bnQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTnVtYmVyIG9mIHVwbG9hZCBwYXJ0cyByZXF1ZXN0ZWQuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZpZGVvIHR5cGUuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICB1cmw6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRXh0ZXJuYWwgb3IgaG9zdGVkIFVSTCBmb3IgdGhlIHZpZGVvLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAgdmlkZW9JZDoge1xuICAgICAgZGVzY3JpcHRpb246ICdWaWRlbyBJRC4nLFxuICAgICAgdHlwZTogJ0lEJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvSW5wdXQnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpZGVvVXBsb2FkUGFydFVybFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVPYmplY3RUQyh7XG4gIGZpZWxkczoge1xuICAgIHBhcnROdW1iZXI6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnTXVsdGlwYXJ0IHVwbG9hZCBwYXJ0IG51bWJlci4nLFxuICAgICAgdHlwZTogJ0ludCdcbiAgICB9LFxuICAgIHVybDoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVzaWduZWQgVVJMIGZvciB0aGlzIHVwbG9hZCBwYXJ0LicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvVXBsb2FkUGFydFVybCdcbn0pO1xuXG5leHBvcnQgY29uc3QgdmlkZW9NdWx0aXBhcnRVcGxvYWRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBidWNrZXQ6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnUzMgYnVja2V0IGZvciB0aGUgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnU3RyaW5nJ1xuICAgIH0sXG4gICAga2V5OiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIGtleSBmb3IgdGhlIHVwbG9hZC4nLFxuICAgICAgdHlwZTogJ1N0cmluZydcbiAgICB9LFxuICAgIHBhcnRTaXplOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1JlY29tbWVuZGVkIHVwbG9hZCBwYXJ0IHNpemUgaW4gYnl0ZXMuJyxcbiAgICAgIHR5cGU6ICdJbnQnXG4gICAgfSxcbiAgICBwYXJ0VXJsczoge1xuICAgICAgZGVzY3JpcHRpb246ICdQcmVzaWduZWQgVVJMcyBmb3IgdXBsb2FkIHBhcnRzLicsXG4gICAgICB0eXBlOiBbdmlkZW9VcGxvYWRQYXJ0VXJsVHlwZV1cbiAgICB9LFxuICAgIHVwbG9hZElkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1MzIG11bHRpcGFydCB1cGxvYWQgaWQuJyxcbiAgICAgIHR5cGU6ICdTdHJpbmcnXG4gICAgfSxcbiAgICB2aWRlbzoge1xuICAgICAgZGVzY3JpcHRpb246ICdQZW5kaW5nIHZpZGVvIHJlY29yZC4nLFxuICAgICAgdHlwZTogdmlkZW9UeXBlXG4gICAgfSxcbiAgICB2aWRlb0lkOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1ZpZGVvIElEIGZvciB0aGUgdXBsb2FkLicsXG4gICAgICB0eXBlOiAnSUQnXG4gICAgfVxuICB9LFxuICBuYW1lOiAnVmlkZW9NdWx0aXBhcnRVcGxvYWQnXG59KTtcblxuZXhwb3J0IGNvbnN0IHZpZGVvVXBsb2FkUGFydElucHV0VHlwZSA9IHNjaGVtYUNvbXBvc2VyLmNyZWF0ZUlucHV0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBldGFnOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0VUYWcgcmV0dXJuZWQgYnkgUzMgZm9yIHRoaXMgdXBsb2FkZWQgcGFydC4nLFxuICAgICAgdHlwZTogJ1N0cmluZyEnXG4gICAgfSxcbiAgICBwYXJ0TnVtYmVyOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ011bHRpcGFydCB1cGxvYWQgcGFydCBudW1iZXIuJyxcbiAgICAgIHR5cGU6ICdJbnQhJ1xuICAgIH1cbiAgfSxcbiAgbmFtZTogJ1ZpZGVvVXBsb2FkUGFydElucHV0J1xufSk7XG4iXSwibmFtZXMiOlsic2NoZW1hQ29tcG9zZXIiLCJwYXJzZUlkIiwiZ2V0SW1hZ2VVcmwiLCJnZXRWaWRlb1NpZ25lZEtleVVybCIsImdldFZpZGVvVXJsIiwiQ29uZmlnIiwiZG9jdW1lbnQiLCJnZXREb2N1bWVudEtleSIsInZhbHVlIiwibm9ybWFsaXplZFZhbHVlIiwiU3RyaW5nIiwidHJpbSIsInBhcnRzIiwic3BsaXQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiYXQiLCJ2aWRlb1R5cGUiLCJjcmVhdGVPYmplY3RUQyIsImZpZWxkcyIsImFkZGVkIiwiZGVzY3JpcHRpb24iLCJ0eXBlIiwiZHVyYXRpb25NcyIsImV4dGVybmFsSWQiLCJleHRlcm5hbFVybCIsImZpbGVTaXplIiwiZmlsZVR5cGUiLCJoZWlnaHQiLCJobHNVcmwiLCJyZXNvbHZlIiwiaXRlbSIsImhsc0tleSIsImdldCIsInBsYXliYWNrRmlsZVR5cGUiLCJwbGF5YmFja1VybCIsInBsYXliYWNrS2V5IiwicHJpdmFjeSIsIm1vZGlmaWVkIiwibWVkaWFDb252ZXJ0Sm9iSWQiLCJvd25lclBlcnNvbmFJZCIsIm93bmVyUGVyc29uYUltYWdlVXJsIiwiaW1hZ2VJZCIsIm93bmVyUGVyc29uYUltYWdlSWQiLCJ1c2VySWQiLCJvd25lclBlcnNvbmFVc2VySWQiLCJidWNrZXQiLCJpbWFnZURpciIsImltYWdlVHlwZSIsInR5cGVJZCIsInVybFR5cGUiLCJvd25lclBlcnNvbmFOYW1lIiwib3duZXJQZXJzb25hVGh1bWJVcmwiLCJwcm92aWRlciIsInByb2Nlc3NpbmdTdGF0dXMiLCJwcm9jZXNzaW5nRXJyb3IiLCJzb3VyY2VLZXkiLCJzdHJlYW1UeXBlIiwidGh1bWJVcmwiLCJfa2V5IiwidmlkZW9JZCIsInRodW1iRmlsZVR5cGUiLCJQcm9taXNlIiwidmlkZW9EaXIiLCJ1cmwiLCJ1cGxvYWRJZCIsInVwbG9hZEtleSIsInVwbG9hZFN0YXR1cyIsImtleSIsInBhcnNlZERvY0lkIiwiaWQiLCJfaWQiLCJ3aWR0aCIsIm5hbWUiLCJhZGRGaWVsZHMiLCJnZXRGaWVsZHMiLCJ2aWRlb0lucHV0VHlwZSIsImNyZWF0ZUlucHV0VEMiLCJiYXNlNjQiLCJmaWxlTmFtZSIsIml0ZW1JZCIsIml0ZW1UeXBlIiwidGh1bWJCYXNlNjQiLCJwYXJ0Q291bnQiLCJ2aWRlb1VwbG9hZFBhcnRVcmxUeXBlIiwicGFydE51bWJlciIsInZpZGVvTXVsdGlwYXJ0VXBsb2FkVHlwZSIsInBhcnRTaXplIiwicGFydFVybHMiLCJ2aWRlbyIsInZpZGVvVXBsb2FkUGFydElucHV0VHlwZSIsImV0YWciXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUVELFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFDL0MsU0FBUUMsT0FBTyxRQUFPLCtCQUErQjtBQUVyRCxTQUFRQyxXQUFXLFFBQU8sdUJBQXVCO0FBQ2pELFNBQVFDLG9CQUFvQixFQUFFQyxXQUFXLFFBQU8sdUJBQXVCO0FBQ3ZFLFNBQVFDLE1BQU0sUUFBTyxlQUFlO0FBQ3BDLFNBQVFDLFFBQVEsUUFBTyxnQkFBZ0I7QUFFdkMsTUFBTUMsaUJBQWlCLENBQUNDO0lBQ3RCLE1BQU1DLGtCQUFrQkMsT0FBT0YsU0FBUyxJQUFJRyxJQUFJO0lBRWhELElBQUcsQ0FBQ0YsaUJBQWlCO1FBQ25CLE9BQU87SUFDVDtJQUVBLE1BQU1HLFFBQVFILGdCQUFnQkksS0FBSyxDQUFDLEtBQUtDLE1BQU0sQ0FBQ0M7SUFDaEQsT0FBT0wsT0FBT0UsTUFBTUksRUFBRSxDQUFDLENBQUMsTUFBTVA7QUFDaEM7QUFFQSxPQUFPLE1BQU1RLFlBQVlqQixlQUFla0IsY0FBYyxDQUFDO0lBQ3JEQyxRQUFRO1FBQ05DLE9BQU87WUFDTEMsYUFBYTtZQUNiQyxNQUFNO1FBQ1I7UUFDQUQsYUFBYTtZQUNYQSxhQUFhO1lBQ2JDLE1BQU07UUFDUjtRQUNBQyxZQUFZO1lB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
|
|
@@ -29,4 +29,4 @@ export const videoGenerationResultType = schemaComposer.createObjectTC({
|
|
|
29
29
|
name: 'VideoGenerationResult'
|
|
30
30
|
});
|
|
31
31
|
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb2JqZWN0VHlwZXMvdmlkZW9HZW5lcmF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2NoZW1hQ29tcG9zZXJ9IGZyb20gJ2dyYXBocWwtY29tcG9zZSc7XG5cbmV4cG9ydCBjb25zdCB2aWRlb0dlbmVyYXRpb25JbnB1dFR5cGUgPSBzY2hlbWFDb21wb3Nlci5jcmVhdGVJbnB1dFRDKHtcbiAgZmllbGRzOiB7XG4gICAgYXNwZWN0UmF0aW86ICdTdHJpbmcnLFxuICAgIGF1ZGlvVXJsczogJ1tTdHJpbmchXScsXG4gICAgZHVyYXRpb246ICdJbnQnLFxuICAgIGVuZEltYWdlVXJsOiAnU3RyaW5nJyxcbiAgICBnZW5lcmF0ZUF1ZGlvOiAnQm9vbGVhbicsXG4gICAgaW1hZ2VVcmw6ICdTdHJpbmcnLFxuICAgIGltYWdlVXJsczogJ1tTdHJpbmchXScsXG4gICAgbW9kZWw6ICdTdHJpbmcnLCBtb2RlbElucHV0OiAnSlNPTicsIG91dHB1dEZvcm1hdDogJ1N0cmluZycsXG4gICAgcHJvbXB0OiAnU3RyaW5nJyxcbiAgICBwcm92aWRlcjogJ1N0cmluZycsXG4gICAgcmVzb2x1dGlvbjogJ1N0cmluZycsXG4gICAgdmlkZW9VcmxzOiAnW1N0cmluZyFdJ1xuICB9LFxuICBuYW1lOiAnVmlkZW9HZW5lcmF0aW9uSW5wdXQnXG59KTtcbmV4cG9ydCBjb25zdCB2aWRlb0dlbmVyYXRpb25SZXN1bHRUeXBlID0gc2NoZW1hQ29tcG9zZXIuY3JlYXRlT2JqZWN0VEMoe1xuICBmaWVsZHM6IHtcbiAgICBjYW5jZWxVcmw6ICdTdHJpbmcnLFxuICAgIHByb3ZpZGVyOiAnU3RyaW5nIScsXG4gICAgcmVxdWVzdElkOiAnU3RyaW5nIScsXG4gICAgc3RhdHVzOiAnU3RyaW5nIScsXG4gICAgc3RhdHVzVXJsOiAnU3RyaW5nISdcbiAgfSxcbiAgbmFtZTogJ1ZpZGVvR2VuZXJhdGlvblJlc3VsdCdcbn0pO1xuIl0sIm5hbWVzIjpbInNjaGVtYUNvbXBvc2VyIiwidmlkZW9HZW5lcmF0aW9uSW5wdXRUeXBlIiwiY3JlYXRlSW5wdXRUQyIsImZpZWxkcyIsImFzcGVjdFJhdGlvIiwiYXVkaW9VcmxzIiwiZHVyYXRpb24iLCJlbmRJbWFnZVVybCIsImdlbmVyYXRlQXVkaW8iLCJpbWFnZVVybCIsImltYWdlVXJscyIsIm1vZGVsIiwibW9kZWxJbnB1dCIsIm91dHB1dEZvcm1hdCIsInByb21wdCIsInByb3ZpZGVyIiwicmVzb2x1dGlvbiIsInZpZGVvVXJscyIsIm5hbWUiLCJ2aWRlb0dlbmVyYXRpb25SZXN1bHRUeXBlIiwiY3JlYXRlT2JqZWN0VEMiLCJjYW5jZWxVcmwiLCJyZXF1ZXN0SWQiLCJzdGF0dXMiLCJzdGF0dXNVcmwiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLGNBQWMsUUFBTyxrQkFBa0I7QUFFL0MsT0FBTyxNQUFNQywyQkFBMkJELGVBQWVFLGFBQWEsQ0FBQztJQUNuRUMsUUFBUTtRQUNOQyxhQUFhO1FBQ2JDLFdBQVc7UUFDWEMsVUFBVTtRQUNWQyxhQUFhO1FBQ2JDLGVBQWU7UUFDZkMsVUFBVTtRQUNWQyxXQUFXO1FBQ1hDLE9BQU87UUFBVUMsWUFBWTtRQUFRQyxjQUFjO1FBQ25EQyxRQUFRO1FBQ1JDLFVBQVU7UUFDVkMsWUFBWTtRQUNaQyxXQUFXO0lBQ2I7SUFDQUMsTUFBTTtBQUNSLEdBQUc7QUFDSCxPQUFPLE1BQU1DLDRCQUE0Qm5CLGVBQWVvQixjQUFjLENBQUM7SUFDckVqQixRQUFRO1FBQ05rQixXQUFXO1FBQ1hOLFVBQVU7UUFDVk8sV0FBVztRQUNYQyxRQUFRO1FBQ1JDLFdBQVc7SUFDYjtJQUNBTixNQUFNO0FBQ1IsR0FBRyJ9
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { literal } from 'arangojs/aql';
|
|
2
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
3
|
+
import type { UserType } from '../types/users.types.js';
|
|
4
|
+
/** Recheck atomic enrollment at the legacy write, after an earlier unassociated-account lookup. */
|
|
5
|
+
export declare const organizationAccountWriteGuard: (context: ApiContext, collection: string, variable?: 'doc' | 'u') => ReturnType<typeof literal>;
|
|
6
|
+
/** Protect control-plane accounts under the same lock as ownership changes. */
|
|
7
|
+
export declare const organizationAccountMutation: (context: ApiContext, userId: string, operation: 'deactivate' | 'delete' | 'update', patch: Record<string, unknown>) => Promise<UserType | null>;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/* Stream-transaction steps and ordered retry assertions must execute sequentially. */ /* eslint-disable no-await-in-loop */ import { literal } from 'arangojs/aql';
|
|
2
|
+
import { organizationUserId } from './authorization.js';
|
|
3
|
+
import { activeMemberCount, writeSeatChange } from './membership.js';
|
|
4
|
+
import { organizationEdgeCollections, organizationStoreFor } from './store.js';
|
|
5
|
+
/** Recheck atomic enrollment at the legacy write, after an earlier unassociated-account lookup. */ export const organizationAccountWriteGuard = (context, collection, variable = 'doc')=>literal(collection === 'users' && process.env.ARANGODB_DATABASE && context.databaseName === process.env.ARANGODB_DATABASE ? `${variable}.organizationAccount != true` : 'true');
|
|
6
|
+
/** Protect control-plane accounts under the same lock as ownership changes. */ export const organizationAccountMutation = async (context, userId, operation, patch)=>{
|
|
7
|
+
if (!process.env.ARANGODB_DATABASE || context.databaseName !== process.env.ARANGODB_DATABASE) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const key = userId.replace(/^users\//, '');
|
|
11
|
+
return organizationStoreFor(context).transaction(async (tx)=>{
|
|
12
|
+
const user = await tx.get('users', key);
|
|
13
|
+
const organizations = await tx.find('organizations', {
|
|
14
|
+
ownerUserId: key
|
|
15
|
+
});
|
|
16
|
+
const related = await tx.find('organizationMemberships', {
|
|
17
|
+
userId: key
|
|
18
|
+
});
|
|
19
|
+
if (!user || !user.organizationAccount && !organizations.length && !related.length) {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
if (!context.session?.userId || organizationUserId(context) !== key) {
|
|
23
|
+
throw new Error('account_access_denied');
|
|
24
|
+
}
|
|
25
|
+
if (operation === 'update') {
|
|
26
|
+
if ([
|
|
27
|
+
'organizationAccount',
|
|
28
|
+
'verifiedEmail',
|
|
29
|
+
'verifiedEmailCode',
|
|
30
|
+
'verifiedEmailExpires',
|
|
31
|
+
'verifiedPhone',
|
|
32
|
+
'verifiedPhoneExpires',
|
|
33
|
+
'verifiedSmsCode',
|
|
34
|
+
'email',
|
|
35
|
+
'phone',
|
|
36
|
+
'active',
|
|
37
|
+
'userAccess',
|
|
38
|
+
'salt',
|
|
39
|
+
'type',
|
|
40
|
+
'username',
|
|
41
|
+
'deleted',
|
|
42
|
+
'_key',
|
|
43
|
+
'_id',
|
|
44
|
+
'_rev'
|
|
45
|
+
].some((field)=>patch[field] !== undefined)) {
|
|
46
|
+
throw new Error('protected_account_field');
|
|
47
|
+
}
|
|
48
|
+
if (patch.userId !== undefined && patch.userId !== key || patch.id !== undefined && patch.id !== `users/${key}`) {
|
|
49
|
+
throw new Error('protected_account_field');
|
|
50
|
+
}
|
|
51
|
+
const { id, userId: ignoredUserId, ...safePatch } = patch;
|
|
52
|
+
const updated = {
|
|
53
|
+
...user,
|
|
54
|
+
...safePatch
|
|
55
|
+
};
|
|
56
|
+
await tx.put('users', key, updated, user);
|
|
57
|
+
return updated;
|
|
58
|
+
}
|
|
59
|
+
if (organizations.length) {
|
|
60
|
+
throw new Error('ownership_transfer_required');
|
|
61
|
+
}
|
|
62
|
+
const memberships = related.filter((membership)=>membership.status === 'active');
|
|
63
|
+
for (const membership of memberships){
|
|
64
|
+
const org = await tx.get('organizations', membership.organizationId);
|
|
65
|
+
if (!org) {
|
|
66
|
+
throw new Error('organization_state_invalid');
|
|
67
|
+
}
|
|
68
|
+
const previousCount = await activeMemberCount(tx, org.organizationId);
|
|
69
|
+
await tx.put('organizationMemberships', membership._key, {
|
|
70
|
+
...membership,
|
|
71
|
+
revision: membership.revision + 1,
|
|
72
|
+
status: 'deactivated',
|
|
73
|
+
updatedAt: Date.now()
|
|
74
|
+
}, membership);
|
|
75
|
+
await writeSeatChange(tx, org, previousCount - 1, Date.now(), previousCount);
|
|
76
|
+
}
|
|
77
|
+
if (operation === 'delete') {
|
|
78
|
+
for (const collection of organizationEdgeCollections){
|
|
79
|
+
const edges = [
|
|
80
|
+
...await tx.find(collection, {
|
|
81
|
+
_from: `users/${key}`
|
|
82
|
+
}),
|
|
83
|
+
...await tx.find(collection, {
|
|
84
|
+
_to: `users/${key}`
|
|
85
|
+
})
|
|
86
|
+
];
|
|
87
|
+
const unique = new Map(edges.map((edge)=>[
|
|
88
|
+
edge._key,
|
|
89
|
+
edge
|
|
90
|
+
]));
|
|
91
|
+
for (const edge of unique.values()){
|
|
92
|
+
await tx.remove(collection, edge);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
await tx.remove('users', user);
|
|
96
|
+
} else {
|
|
97
|
+
await tx.put('users', key, {
|
|
98
|
+
...user,
|
|
99
|
+
active: false
|
|
100
|
+
}, user);
|
|
101
|
+
}
|
|
102
|
+
return user;
|
|
103
|
+
});
|
|
104
|
+
}; /* Stream-transaction steps and ordered retry assertions must execute sequentially. */ /* ArangoDB document metadata uses these reserved field names. */ /* eslint no-underscore-dangle: ["warn", {"allow": ["_key", "_rev", "_id"]}] */
|
|
105
|
+
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb3JnYW5pemF0aW9ucy9hY2NvdW50TGlmZWN5Y2xlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFN0cmVhbS10cmFuc2FjdGlvbiBzdGVwcyBhbmQgb3JkZXJlZCByZXRyeSBhc3NlcnRpb25zIG11c3QgZXhlY3V0ZSBzZXF1ZW50aWFsbHkuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQge2xpdGVyYWx9IGZyb20gJ2FyYW5nb2pzL2FxbCc7XG5cbmltcG9ydCB7b3JnYW5pemF0aW9uVXNlcklkfSBmcm9tICcuL2F1dGhvcml6YXRpb24uanMnO1xuaW1wb3J0IHthY3RpdmVNZW1iZXJDb3VudCwgd3JpdGVTZWF0Q2hhbmdlfSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHtvcmdhbml6YXRpb25FZGdlQ29sbGVjdGlvbnMsIG9yZ2FuaXphdGlvblN0b3JlRm9yfSBmcm9tICcuL3N0b3JlLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1VzZXJUeXBlfSBmcm9tICcuLi90eXBlcy91c2Vycy50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7T3JnYW5pemF0aW9uLCBPcmdhbml6YXRpb25NZW1iZXJzaGlwfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqIFJlY2hlY2sgYXRvbWljIGVucm9sbG1lbnQgYXQgdGhlIGxlZ2FjeSB3cml0ZSwgYWZ0ZXIgYW4gZWFybGllciB1bmFzc29jaWF0ZWQtYWNjb3VudCBsb29rdXAuICovXG5leHBvcnQgY29uc3Qgb3JnYW5pemF0aW9uQWNjb3VudFdyaXRlR3VhcmQgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsIGNvbGxlY3Rpb246IHN0cmluZywgdmFyaWFibGU6ICdkb2MnIHwgJ3UnID0gJ2RvYydcbik6IFJldHVyblR5cGU8dHlwZW9mIGxpdGVyYWw+ID0+IGxpdGVyYWwoXG4gIGNvbGxlY3Rpb24gPT09ICd1c2VycycgJiYgcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgJiYgY29udGV4dC5kYXRhYmFzZU5hbWUgPT09IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFXG4gICAgPyBgJHt2YXJpYWJsZX0ub3JnYW5pemF0aW9uQWNjb3VudCAhPSB0cnVlYCA6ICd0cnVlJ1xuKTtcblxuLyoqIFByb3RlY3QgY29udHJvbC1wbGFuZSBhY2NvdW50cyB1bmRlciB0aGUgc2FtZSBsb2NrIGFzIG93bmVyc2hpcCBjaGFuZ2VzLiAqL1xuZXhwb3J0IGNvbnN0IG9yZ2FuaXphdGlvbkFjY291bnRNdXRhdGlvbiA9IGFzeW5jIChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgdXNlcklkOiBzdHJpbmcsXG4gIG9wZXJhdGlvbjogJ2RlYWN0aXZhdGUnIHwgJ2RlbGV0ZScgfCAndXBkYXRlJyxcbiAgcGF0Y2g6IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4pOiBQcm9taXNlPFVzZXJUeXBlIHwgbnVsbD4gPT4ge1xuICBpZighcHJvY2Vzcy5lbnYuQVJBTkdPREJfREFUQUJBU0UgfHwgY29udGV4dC5kYXRhYmFzZU5hbWUgIT09IHByb2Nlc3MuZW52LkFSQU5HT0RCX0RBVEFCQVNFKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qga2V5ID0gdXNlcklkLnJlcGxhY2UoL151c2Vyc1xcLy8sICcnKTtcbiAgcmV0dXJuIG9yZ2FuaXphdGlvblN0b3JlRm9yKGNvbnRleHQpLnRyYW5zYWN0aW9uKGFzeW5jICh0eCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0eC5nZXQ8VXNlclR5cGUgJiB7b3JnYW5pemF0aW9uQWNjb3VudD86IGJvb2xlYW59PigndXNlcnMnLCBrZXkpO1xuICAgIGNvbnN0IG9yZ2FuaXphdGlvbnMgPSBhd2FpdCB0eC5maW5kPE9yZ2FuaXphdGlvbj4oJ29yZ2FuaXphdGlvbnMnLCB7b3duZXJVc2VySWQ6IGtleX0pO1xuICAgIGNvbnN0IHJlbGF0ZWQgPSBhd2FpdCB0eC5maW5kPE9yZ2FuaXphdGlvbk1lbWJlcnNoaXA+KCdvcmdhbml6YXRpb25NZW1iZXJzaGlwcycsIHt1c2VySWQ6IGtleX0pO1xuICAgIGlmKCF1c2VyIHx8ICghdXNlci5vcmdhbml6YXRpb25BY2NvdW50ICYmICFvcmdhbml6YXRpb25zLmxlbmd0aCAmJiAhcmVsYXRlZC5sZW5ndGgpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYoIWNvbnRleHQuc2Vzc2lvbj8udXNlcklkIHx8IG9yZ2FuaXphdGlvblVzZXJJZChjb250ZXh0KSAhPT0ga2V5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FjY291bnRfYWNjZXNzX2RlbmllZCcpO1xuICAgIH1cbiAgICBpZihvcGVyYXRpb24gPT09ICd1cGRhdGUnKSB7XG4gICAgICBpZihcbiAgICAgICAgW1xuICAgICAgICAgICdvcmdhbml6YXRpb25BY2NvdW50JyxcbiAgICAgICAgICAndmVyaWZpZWRFbWFpbCcsXG4gICAgICAgICAgJ3ZlcmlmaWVkRW1haWxDb2RlJyxcbiAgICAgICAgICAndmVyaWZpZWRFbWFpbEV4cGlyZXMnLFxuICAgICAgICAgICd2ZXJpZmllZFBob25lJyxcbiAgICAgICAgICAndmVyaWZpZWRQaG9uZUV4cGlyZXMnLFxuICAgICAgICAgICd2ZXJpZmllZFNtc0NvZGUnLFxuICAgICAgICAgICdlbWFpbCcsXG4gICAgICAgICAgJ3Bob25lJyxcbiAgICAgICAgICAnYWN0aXZlJyxcbiAgICAgICAgICAndXNlckFjY2VzcycsXG4gICAgICAgICAgJ3NhbHQnLFxuICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAndXNlcm5hbWUnLFxuICAgICAgICAgICdkZWxldGVkJyxcbiAgICAgICAgICAnX2tleScsXG4gICAgICAgICAgJ19pZCcsXG4gICAgICAgICAgJ19yZXYnXG4gICAgICAgIF0uc29tZSgoZmllbGQpID0+IHBhdGNoW2ZpZWxkXSAhPT0gdW5kZWZpbmVkKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncHJvdGVjdGVkX2FjY291bnRfZmllbGQnKTtcbiAgICAgIH1cbiAgICAgIGlmKFxuICAgICAgICAocGF0Y2gudXNlcklkICE9PSB1bmRlZmluZWQgJiYgcGF0Y2gudXNlcklkICE9PSBrZXkpIHx8XG4gICAgICAgIChwYXRjaC5pZCAhPT0gdW5kZWZpbmVkICYmIHBhdGNoLmlkICE9PSBgdXNlcnMvJHtrZXl9YClcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb3RlY3RlZF9hY2NvdW50X2ZpZWxkJyk7XG4gICAgICB9XG4gICAgICBjb25zdCB7aWQsIHVzZXJJZDogaWdub3JlZFVzZXJJZCwgLi4uc2FmZVBhdGNofSA9IHBhdGNoO1xuICAgICAgY29uc3QgdXBkYXRlZCA9IHsuLi51c2VyLCAuLi5zYWZlUGF0Y2h9O1xuICAgICAgYXdhaXQgdHgucHV0KCd1c2VycycsIGtleSwgdXBkYXRlZCwgdXNlcik7XG4gICAgICByZXR1cm4gdXBkYXRlZDtcbiAgICB9XG4gICAgaWYob3JnYW5pemF0aW9ucy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignb3duZXJzaGlwX3RyYW5zZmVyX3JlcXVpcmVkJyk7XG4gICAgfVxuICAgIGNvbnN0IG1lbWJlcnNoaXBzID0gcmVsYXRlZC5maWx0ZXIoKG1lbWJlcnNoaXApID0+IG1lbWJlcnNoaXAuc3RhdHVzID09PSAnYWN0aXZlJyk7XG4gICAgZm9yKGNvbnN0IG1lbWJlcnNoaXAgb2YgbWVtYmVyc2hpcHMpIHtcbiAgICAgIGNvbnN0IG9yZyA9IGF3YWl0IHR4LmdldDxPcmdhbml6YXRpb24+KCdvcmdhbml6YXRpb25zJywgbWVtYmVyc2hpcC5vcmdhbml6YXRpb25JZCk7XG4gICAgICBpZighb3JnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignb3JnYW5pemF0aW9uX3N0YXRlX2ludmFsaWQnKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByZXZpb3VzQ291bnQgPSBhd2FpdCBhY3RpdmVNZW1iZXJDb3VudCh0eCwgb3JnLm9yZ2FuaXphdGlvbklkKTtcbiAgICAgIGF3YWl0IHR4LnB1dChcbiAgICAgICAgJ29yZ2FuaXphdGlvbk1lbWJlcnNoaXBzJyxcbiAgICAgICAgbWVtYmVyc2hpcC5fa2V5LFxuICAgICAgICB7Li4ubWVtYmVyc2hpcCwgcmV2aXNpb246IG1lbWJlcnNoaXAucmV2aXNpb24gKyAxLCBzdGF0dXM6ICdkZWFjdGl2YXRlZCcsIHVwZGF0ZWRBdDogRGF0ZS5ub3coKX0sXG4gICAgICAgIG1lbWJlcnNoaXBcbiAgICAgICk7XG4gICAgICBhd2FpdCB3cml0ZVNlYXRDaGFuZ2UodHgsIG9yZywgcHJldmlvdXNDb3VudCAtIDEsIERhdGUubm93KCksIHByZXZpb3VzQ291bnQpO1xuICAgIH1cbiAgICBpZihvcGVyYXRpb24gPT09ICdkZWxldGUnKSB7XG4gICAgICBmb3IoY29uc3QgY29sbGVjdGlvbiBvZiBvcmdhbml6YXRpb25FZGdlQ29sbGVjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZWRnZXMgPSBbXG4gICAgICAgICAgLi4uKGF3YWl0IHR4LmZpbmQoY29sbGVjdGlvbiwge19mcm9tOiBgdXNlcnMvJHtrZXl9YH0pKSxcbiAgICAgICAgICAuLi4oYXdhaXQgdHguZmluZChjb2xsZWN0aW9uLCB7X3RvOiBgdXNlcnMvJHtrZXl9YH0pKVxuICAgICAgICBdO1xuICAgICAgICBjb25zdCB1bmlxdWUgPSBuZXcgTWFwKGVkZ2VzLm1hcCgoZWRnZSkgPT4gW2VkZ2UuX2tleSwgZWRnZV0pKTtcbiAgICAgICAgZm9yKGNvbnN0IGVkZ2Ugb2YgdW5pcXVlLnZhbHVlcygpKSB7XG4gICAgICAgICAgYXdhaXQgdHgucmVtb3ZlKGNvbGxlY3Rpb24sIGVkZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhd2FpdCB0eC5yZW1vdmUoJ3VzZXJzJywgdXNlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHR4LnB1dCgndXNlcnMnLCBrZXksIHsuLi51c2VyLCBhY3RpdmU6IGZhbHNlfSwgdXNlcik7XG4gICAgfVxuICAgIHJldHVybiB1c2VyO1xuICB9KTtcbn07XG4vKiBTdHJlYW0tdHJhbnNhY3Rpb24gc3RlcHMgYW5kIG9yZGVyZWQgcmV0cnkgYXNzZXJ0aW9ucyBtdXN0IGV4ZWN1dGUgc2VxdWVudGlhbGx5LiAqL1xuXG4vKiBBcmFuZ29EQiBkb2N1bWVudCBtZXRhZGF0YSB1c2VzIHRoZXNlIHJlc2VydmVkIGZpZWxkIG5hbWVzLiAqL1xuLyogZXNsaW50IG5vLXVuZGVyc2NvcmUtZGFuZ2xlOiBbXCJ3YXJuXCIsIHtcImFsbG93XCI6IFtcIl9rZXlcIiwgXCJfcmV2XCIsIFwiX2lkXCJdfV0gKi9cbiJdLCJuYW1lcyI6WyJsaXRlcmFsIiwib3JnYW5pemF0aW9uVXNlcklkIiwiYWN0aXZlTWVtYmVyQ291bnQiLCJ3cml0ZVNlYXRDaGFuZ2UiLCJvcmdhbml6YXRpb25FZGdlQ29sbGVjdGlvbnMiLCJvcmdhbml6YXRpb25TdG9yZUZvciIsIm9yZ2FuaXphdGlvbkFjY291bnRXcml0ZUd1YXJkIiwiY29udGV4dCIsImNvbGxlY3Rpb24iLCJ2YXJpYWJsZSIsInByb2Nlc3MiLCJlbnYiLCJBUkFOR09EQl9EQVRBQkFTRSIsImRhdGFiYXNlTmFtZSIsIm9yZ2FuaXphdGlvbkFjY291bnRNdXRhdGlvbiIsInVzZXJJZCIsIm9wZXJhdGlvbiIsInBhdGNoIiwia2V5IiwicmVwbGFjZSIsInRyYW5zYWN0aW9uIiwidHgiLCJ1c2VyIiwiZ2V0Iiwib3JnYW5pemF0aW9ucyIsImZpbmQiLCJvd25lclVzZXJJZCIsInJlbGF0ZWQiLCJvcmdhbml6YXRpb25BY2NvdW50IiwibGVuZ3RoIiwic2Vzc2lvbiIsIkVycm9yIiwic29tZSIsImZpZWxkIiwidW5kZWZpbmVkIiwiaWQiLCJpZ25vcmVkVXNlcklkIiwic2FmZVBhdGNoIiwidXBkYXRlZCIsInB1dCIsIm1lbWJlcnNoaXBzIiwiZmlsdGVyIiwibWVtYmVyc2hpcCIsInN0YXR1cyIsIm9yZyIsIm9yZ2FuaXphdGlvbklkIiwicHJldmlvdXNDb3VudCIsIl9rZXkiLCJyZXZpc2lvbiIsInVwZGF0ZWRBdCIsIkRhdGUiLCJub3ciLCJlZGdlcyIsIl9mcm9tIiwiX3RvIiwidW5pcXVlIiwiTWFwIiwibWFwIiwiZWRnZSIsInZhbHVlcyIsInJlbW92ZSIsImFjdGl2ZSJdLCJtYXBwaW5ncyI6IkFBQUEsb0ZBQW9GLEdBQ3BGLG1DQUFtQyxHQUNuQyxTQUFRQSxPQUFPLFFBQU8sZUFBZTtBQUVyQyxTQUFRQyxrQkFBa0IsUUFBTyxxQkFBcUI7QUFDdEQsU0FBUUMsaUJBQWlCLEVBQUVDLGVBQWUsUUFBTyxrQkFBa0I7QUFDbkUsU0FBUUMsMkJBQTJCLEVBQUVDLG9CQUFvQixRQUFPLGFBQWE7QUFNN0UsaUdBQWlHLEdBQ2pHLE9BQU8sTUFBTUMsZ0NBQWdDLENBQzNDQyxTQUFxQkMsWUFBb0JDLFdBQXdCLEtBQUssR0FDdkNULFFBQy9CUSxlQUFlLFdBQVdFLFFBQVFDLEdBQUcsQ0FBQ0MsaUJBQWlCLElBQUlMLFFBQVFNLFlBQVksS0FBS0gsUUFBUUMsR0FBRyxDQUFDQyxpQkFBaUIsR0FDN0csR0FBR0gsU0FBUyw0QkFBNEIsQ0FBQyxHQUFHLFFBQ2hEO0FBRUYsNkVBQTZFLEdBQzdFLE9BQU8sTUFBTUssOEJBQThCLE9BQ3pDUCxTQUNBUSxRQUNBQyxXQUNBQztJQUVBLElBQUcsQ0FBQ1AsUUFBUUMsR0FBRyxDQUFDQyxpQkFBaUIsSUFBSUwsUUFBUU0sWUFBWSxLQUFLSCxRQUFRQyxHQUFHLENBQUNDLGlCQUFpQixFQUFFO1FBQzNGLE9BQU87SUFDVDtJQUNBLE1BQU1NLE1BQU1ILE9BQU9JLE9BQU8sQ0FBQyxZQUFZO0lBQ3ZDLE9BQU9kLHFCQUFxQkUsU0FBU2EsV0FBVyxDQUFDLE9BQU9DO1FBQ3RELE1BQU1DLE9BQU8sTUFBTUQsR0FBR0UsR0FBRyxDQUE2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
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type OrganizationTransaction } from './store.js';
|
|
2
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
3
|
+
import type { Organization, OrganizationAccess } from './types.js';
|
|
4
|
+
export declare const organizationUserId: (context: ApiContext) => string;
|
|
5
|
+
export declare const organizationAccessInTransaction: (tx: OrganizationTransaction, context: ApiContext, organizationId: string, role: 'member' | 'admin' | 'owner') => Promise<OrganizationAccess>;
|
|
6
|
+
export declare const requireOrganizationAccess: (context: ApiContext, organizationId: string, role: 'member' | 'admin' | 'owner') => Promise<OrganizationAccess>;
|
|
7
|
+
export declare const listOrganizations: (context: ApiContext) => Promise<(Organization & {
|
|
8
|
+
canManage: boolean;
|
|
9
|
+
})[]>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* Stream-transaction steps and ordered retry assertions must execute sequentially. */ /* eslint-disable no-await-in-loop */ import { organizationKey, organizationStoreFor, requireIdentifier } from './store.js';
|
|
2
|
+
export const organizationUserId = (context)=>{
|
|
3
|
+
if (!context.session?.userId) {
|
|
4
|
+
throw new Error('authentication_required');
|
|
5
|
+
}
|
|
6
|
+
return requireIdentifier(context.session.userId.replace(/^users\//, ''));
|
|
7
|
+
};
|
|
8
|
+
export const organizationAccessInTransaction = async (tx, context, organizationId, role)=>{
|
|
9
|
+
const userId = organizationUserId(context);
|
|
10
|
+
const organization = await tx.get('organizations', requireIdentifier(organizationId));
|
|
11
|
+
const membership = await tx.get('organizationMemberships', organizationKey(organizationId, userId));
|
|
12
|
+
const user = await tx.get('users', userId);
|
|
13
|
+
if (!organization || !membership || membership.status !== 'active' || user?.active !== true || role === 'admin' && membership.role !== 'admin' || role === 'owner' && organization.ownerUserId !== userId) {
|
|
14
|
+
throw new Error('organization_access_denied');
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
membership,
|
|
18
|
+
organization,
|
|
19
|
+
userId
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
export const requireOrganizationAccess = (context, organizationId, role)=>organizationStoreFor(context).transaction((tx)=>organizationAccessInTransaction(tx, context, organizationId, role));
|
|
23
|
+
export const listOrganizations = (context)=>organizationStoreFor(context).transaction(async (tx)=>{
|
|
24
|
+
const userId = organizationUserId(context);
|
|
25
|
+
const memberships = await tx.find('organizationMemberships', {
|
|
26
|
+
status: 'active',
|
|
27
|
+
userId
|
|
28
|
+
});
|
|
29
|
+
const result = [];
|
|
30
|
+
for (const membership of memberships){
|
|
31
|
+
const access = await organizationAccessInTransaction(tx, context, membership.organizationId, 'member');
|
|
32
|
+
result.push({
|
|
33
|
+
...access.organization,
|
|
34
|
+
canManage: access.membership.role === 'admin'
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}); /* Stream-transaction steps and ordered retry assertions must execute sequentially. */ /* ArangoDB document metadata uses these reserved field names. */ /* eslint no-underscore-dangle: ["warn", {"allow": ["_key", "_rev", "_id"]}] */
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvb3JnYW5pemF0aW9ucy9hdXRob3JpemF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIFN0cmVhbS10cmFuc2FjdGlvbiBzdGVwcyBhbmQgb3JkZXJlZCByZXRyeSBhc3NlcnRpb25zIG11c3QgZXhlY3V0ZSBzZXF1ZW50aWFsbHkuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wICovXG5pbXBvcnQge1xuICBvcmdhbml6YXRpb25LZXksXG4gIG9yZ2FuaXphdGlvblN0b3JlRm9yLFxuICByZXF1aXJlSWRlbnRpZmllcixcbiAgdHlwZSBPcmdhbml6YXRpb25UcmFuc2FjdGlvblxufSBmcm9tICcuL3N0b3JlLmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge09yZ2FuaXphdGlvbiwgT3JnYW5pemF0aW9uQWNjZXNzLCBPcmdhbml6YXRpb25NZW1iZXJzaGlwfSBmcm9tICcuL3R5cGVzLmpzJztcblxuZXhwb3J0IGNvbnN0IG9yZ2FuaXphdGlvblVzZXJJZCA9IChjb250ZXh0OiBBcGlDb250ZXh0KTogc3RyaW5nID0+IHtcbiAgaWYoIWNvbnRleHQuc2Vzc2lvbj8udXNlcklkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdhdXRoZW50aWNhdGlvbl9yZXF1aXJlZCcpO1xuICB9XG4gIHJldHVybiByZXF1aXJlSWRlbnRpZmllcihjb250ZXh0LnNlc3Npb24udXNlcklkLnJlcGxhY2UoL151c2Vyc1xcLy8sICcnKSk7XG59O1xuXG5leHBvcnQgY29uc3Qgb3JnYW5pemF0aW9uQWNjZXNzSW5UcmFuc2FjdGlvbiA9IGFzeW5jIChcbiAgdHg6IE9yZ2FuaXphdGlvblRyYW5zYWN0aW9uLFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICBvcmdhbml6YXRpb25JZDogc3RyaW5nLFxuICByb2xlOiAnbWVtYmVyJyB8ICdhZG1pbicgfCAnb3duZXInXG4pOiBQcm9taXNlPE9yZ2FuaXphdGlvbkFjY2Vzcz4gPT4ge1xuICBjb25zdCB1c2VySWQgPSBvcmdhbml6YXRpb25Vc2VySWQoY29udGV4dCk7XG4gIGNvbnN0IG9yZ2FuaXphdGlvbiA9IGF3YWl0IHR4LmdldDxPcmdhbml6YXRpb24+KCdvcmdhbml6YXRpb25zJywgcmVxdWlyZUlkZW50aWZpZXIob3JnYW5pemF0aW9uSWQpKTtcbiAgY29uc3QgbWVtYmVyc2hpcCA9IGF3YWl0IHR4LmdldDxPcmdhbml6YXRpb25NZW1iZXJzaGlwPihcbiAgICAnb3JnYW5pemF0aW9uTWVtYmVyc2hpcHMnLFxuICAgIG9yZ2FuaXphdGlvbktleShvcmdhbml6YXRpb25JZCwgdXNlcklkKVxuICApO1xuICBjb25zdCB1c2VyID0gYXdhaXQgdHguZ2V0PHthY3RpdmU/OiBib29sZWFufT4oJ3VzZXJzJywgdXNlcklkKTtcbiAgaWYoXG4gICAgIW9yZ2FuaXphdGlvbiB8fFxuICAgICFtZW1iZXJzaGlwIHx8XG4gICAgbWVtYmVyc2hpcC5zdGF0dXMgIT09ICdhY3RpdmUnIHx8XG4gICAgdXNlcj8uYWN0aXZlICE9PSB0cnVlIHx8XG4gICAgKHJvbGUgPT09ICdhZG1pbicgJiYgbWVtYmVyc2hpcC5yb2xlICE9PSAnYWRtaW4nKSB8fFxuICAgIChyb2xlID09PSAnb3duZXInICYmIG9yZ2FuaXphdGlvbi5vd25lclVzZXJJZCAhPT0gdXNlcklkKVxuICApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29yZ2FuaXphdGlvbl9hY2Nlc3NfZGVuaWVkJyk7XG4gIH1cbiAgcmV0dXJuIHttZW1iZXJzaGlwLCBvcmdhbml6YXRpb24sIHVzZXJJZH07XG59O1xuXG5leHBvcnQgY29uc3QgcmVxdWlyZU9yZ2FuaXphdGlvbkFjY2VzcyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgb3JnYW5pemF0aW9uSWQ6IHN0cmluZyxcbiAgcm9sZTogJ21lbWJlcicgfCAnYWRtaW4nIHwgJ293bmVyJ1xuKTogUHJvbWlzZTxPcmdhbml6YXRpb25BY2Nlc3M+ID0+XG4gIG9yZ2FuaXphdGlvblN0b3JlRm9yKGNvbnRleHQpLnRyYW5zYWN0aW9uKCh0eCkgPT5cbiAgICBvcmdhbml6YXRpb25BY2Nlc3NJblRyYW5zYWN0aW9uKHR4LCBjb250ZXh0LCBvcmdhbml6YXRpb25JZCwgcm9sZSlcbiAgKTtcblxuZXhwb3J0IGNvbnN0IGxpc3RPcmdhbml6YXRpb25zID0gKGNvbnRleHQ6IEFwaUNvbnRleHQpOiBQcm9taXNlPChPcmdhbml6YXRpb24gJiB7Y2FuTWFuYWdlOiBib29sZWFufSlbXT4gPT5cbiAgb3JnYW5pemF0aW9uU3RvcmVGb3IoY29udGV4dCkudHJhbnNhY3Rpb24oYXN5bmMgKHR4KSA9PiB7XG4gICAgY29uc3QgdXNlcklkID0gb3JnYW5pemF0aW9uVXNlcklkKGNvbnRleHQpO1xuICAgIGNvbnN0IG1lbWJlcnNoaXBzID0gYXdhaXQgdHguZmluZDxPcmdhbml6YXRpb25NZW1iZXJzaGlwPignb3JnYW5pemF0aW9uTWVtYmVyc2hpcHMnLCB7XG4gICAgICBzdGF0dXM6ICdhY3RpdmUnLFxuICAgICAgdXNlcklkXG4gICAgfSk7XG4gICAgY29uc3QgcmVzdWx0OiAoT3JnYW5pemF0aW9uICYge2Nhbk1hbmFnZTogYm9vbGVhbn0pW10gPSBbXTtcbiAgICBmb3IoY29uc3QgbWVtYmVyc2hpcCBvZiBtZW1iZXJzaGlwcykge1xuICAgICAgY29uc3QgYWNjZXNzID0gYXdhaXQgb3JnYW5pemF0aW9uQWNjZXNzSW5UcmFuc2FjdGlvbih0eCwgY29udGV4dCwgbWVtYmVyc2hpcC5vcmdhbml6YXRpb25JZCwgJ21lbWJlcicpO1xuICAgICAgcmVzdWx0LnB1c2goey4uLmFjY2Vzcy5vcmdhbml6YXRpb24sIGNhbk1hbmFnZTogYWNjZXNzLm1lbWJlcnNoaXAucm9sZSA9PT0gJ2FkbWluJ30pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbi8qIFN0cmVhbS10cmFuc2FjdGlvbiBzdGVwcyBhbmQgb3JkZXJlZCByZXRyeSBhc3NlcnRpb25zIG11c3QgZXhlY3V0ZSBzZXF1ZW50aWFsbHkuICovXG5cbi8qIEFyYW5nb0RCIGRvY3VtZW50IG1ldGFkYXRhIHVzZXMgdGhlc2UgcmVzZXJ2ZWQgZmllbGQgbmFtZXMuICovXG4vKiBlc2xpbnQgbm8tdW5kZXJzY29yZS1kYW5nbGU6IFtcIndhcm5cIiwge1wiYWxsb3dcIjogW1wiX2tleVwiLCBcIl9yZXZcIiwgXCJfaWRcIl19XSAqL1xuIl0sIm5hbWVzIjpbIm9yZ2FuaXphdGlvbktleSIsIm9yZ2FuaXphdGlvblN0b3JlRm9yIiwicmVxdWlyZUlkZW50aWZpZXIiLCJvcmdhbml6YXRpb25Vc2VySWQiLCJjb250ZXh0Iiwic2Vzc2lvbiIsInVzZXJJZCIsIkVycm9yIiwicmVwbGFjZSIsIm9yZ2FuaXphdGlvbkFjY2Vzc0luVHJhbnNhY3Rpb24iLCJ0eCIsIm9yZ2FuaXphdGlvbklkIiwicm9sZSIsIm9yZ2FuaXphdGlvbiIsImdldCIsIm1lbWJlcnNoaXAiLCJ1c2VyIiwic3RhdHVzIiwiYWN0aXZlIiwib3duZXJVc2VySWQiLCJyZXF1aXJlT3JnYW5pemF0aW9uQWNjZXNzIiwidHJhbnNhY3Rpb24iLCJsaXN0T3JnYW5pemF0aW9ucyIsIm1lbWJlcnNoaXBzIiwiZmluZCIsInJlc3VsdCIsImFjY2VzcyIsInB1c2giLCJjYW5NYW5hZ2UiXSwibWFwcGluZ3MiOiJBQUFBLG9GQUFvRixHQUNwRixtQ0FBbUMsR0FDbkMsU0FDRUEsZUFBZSxFQUNmQyxvQkFBb0IsRUFDcEJDLGlCQUFpQixRQUVaLGFBQWE7QUFLcEIsT0FBTyxNQUFNQyxxQkFBcUIsQ0FBQ0M7SUFDakMsSUFBRyxDQUFDQSxRQUFRQyxPQUFPLEVBQUVDLFFBQVE7UUFDM0IsTUFBTSxJQUFJQyxNQUFNO0lBQ2xCO0lBQ0EsT0FBT0wsa0JBQWtCRSxRQUFRQyxPQUFPLENBQUNDLE1BQU0sQ0FBQ0UsT0FBTyxDQUFDLFlBQVk7QUFDdEUsRUFBRTtBQUVGLE9BQU8sTUFBTUMsa0NBQWtDLE9BQzdDQyxJQUNBTixTQUNBTyxnQkFDQUM7SUFFQSxNQUFNTixTQUFTSCxtQkFBbUJDO0lBQ2xDLE1BQU1TLGVBQWUsTUFBTUgsR0FBR0ksR0FBRyxDQUFlLGlCQUFpQlosa0JBQWtCUztJQUNuRixNQUFNSSxhQUFhLE1BQU1MLEdBQUdJLEdBQUcsQ0FDN0IsMkJBQ0FkLGdCQUFnQlcsZ0JBQWdCTDtJQUVsQyxNQUFNVSxPQUFPLE1BQU1OLEdBQUdJLEdBQUcsQ0FBcUIsU0FBU1I7SUFDdkQsSUFDRSxDQUFDTyxnQkFDRCxDQUFDRSxjQUNEQSxXQUFXRSxNQUFNLEtBQUssWUFDdEJELE1BQU1FLFdBQVcsUUFDaEJOLFNBQVMsV0FBV0csV0FBV0gsSUFBSSxLQUFLLFdBQ3hDQSxTQUFTLFdBQVdDLGFBQWFNLFdBQVcsS0FBS2IsUUFDbEQ7UUFDQSxNQUFNLElBQUlDLE1BQU07SUFDbEI7SUFDQSxPQUFPO1FBQUNRO1FBQVlGO1FBQWNQO0lBQU07QUFDMUMsRUFBRTtBQUVGLE9BQU8sTUFBTWMsNEJBQTRCLENBQ3ZDaEIsU0FDQU8sZ0JBQ0FDLE9BRUFYLHFCQUFxQkcsU0FBU2lCLFdBQVcsQ0FBQyxDQUFDWCxLQUN6Q0QsZ0NBQWdDQyxJQUFJTixTQUFTTyxnQkFBZ0JDLE9BQzdEO0FBRUosT0FBTyxNQUFNVSxvQkFBb0IsQ0FBQ2xCLFVBQ2hDSCxxQkFBcUJHLFNBQVNpQixXQUFXLENBQUMsT0FBT1g7UUFDL0MsTUFBTUosU0FBU0gsbUJBQW1CQztRQUNsQyxNQUFNbUIsY0FBYyxNQUFNYixHQUFHYyxJQUFJLENBQXlCLDJCQUEyQjtZQUNuRlAsUUFBUTtZQUNSWDtRQUNGO1FBQ0EsTUFBTW1CLFNBQWtELEVBQUU7UUFDMUQsS0FBSSxNQUFNVixjQUFjUSxZQUFhO1lBQ25DLE1BQU1HLFNBQVMsTUFBTWpCLGdDQUFnQ0MsSUFBSU4sU0FBU1csV0FBV0osY0FBYyxFQUFFO1lBQzdGYyxPQUFPRSxJQUFJLENBQUM7Z0JBQUMsR0FBR0QsT0FBT2IsWUFBWTtnQkFBRWUsV0FBV0YsT0FBT1gsVUFBVSxDQUFDSCxJQUFJLEtBQUs7WUFBTztRQUNwRjtRQUNBLE9BQU9hO0lBQ1QsR0FBRyxDQUNMLG9GQUFvRixJQUVwRiwrREFBK0QsSUFDL0QsNkVBQTZFIn0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type OrganizationTransaction } from './store.js';
|
|
2
|
+
import type { ApiContext } from '../types/auth.types.js';
|
|
3
|
+
import type { CheckoutResult, MembershipChange, OrganizationMembership, OveragePreference, PlanKey, ProviderSubscription, SeatChangeQuote, SubscriptionSummary } from './types.js';
|
|
4
|
+
export type CheckoutAttempt = Readonly<{
|
|
5
|
+
generation: number;
|
|
6
|
+
key: string;
|
|
7
|
+
leaseExpires: number;
|
|
8
|
+
owner: string;
|
|
9
|
+
plan: PlanKey;
|
|
10
|
+
quantity: number;
|
|
11
|
+
sequence: number;
|
|
12
|
+
session?: CheckoutResult;
|
|
13
|
+
}>;
|
|
14
|
+
export type OrganizationBilling = Readonly<{
|
|
15
|
+
checkout?: CheckoutAttempt;
|
|
16
|
+
customerId: string;
|
|
17
|
+
organizationId: string;
|
|
18
|
+
overage?: OveragePreference;
|
|
19
|
+
pendingChange?: string | null;
|
|
20
|
+
periodEnd?: number | null;
|
|
21
|
+
plan?: PlanKey | null;
|
|
22
|
+
status?: string;
|
|
23
|
+
subscription?: ProviderSubscription | null;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const requireBillingAdmin: (tx: OrganizationTransaction, context: ApiContext, organizationId: string) => Promise<{
|
|
26
|
+
membership: OrganizationMembership;
|
|
27
|
+
organization: import("./types.js").Organization;
|
|
28
|
+
userId: string;
|
|
29
|
+
email: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const getOrganizationSubscription: (context: ApiContext, organizationId: string) => Promise<SubscriptionSummary>;
|
|
32
|
+
export declare const createOrganizationCheckout: (context: ApiContext, organizationId: string, plan: PlanKey, requestId: string) => Promise<{
|
|
33
|
+
url: string;
|
|
34
|
+
}>;
|
|
35
|
+
export declare const createOrganizationBillingPortal: (context: ApiContext, organizationId: string) => Promise<{
|
|
36
|
+
url: string;
|
|
37
|
+
}>;
|
|
38
|
+
export declare const quoteOrganizationSeatChange: (context: ApiContext, organizationId: string, change: MembershipChange) => Promise<SeatChangeQuote>;
|