@nlabs/metropolisjs 0.1.2 → 0.2.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/.github/copilot-instructions.md +167 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +112 -0
- package/GRAPHQL_VALIDATION_RESULTS.md +158 -0
- package/PERMISSION_GRAPHQL_INTEGRATION.md +293 -0
- package/PERMISSION_IMPLEMENTATION_SUMMARY.md +243 -0
- package/README.md +1123 -112
- package/SIGNIN_GRAPHQL_VALIDATION.md +125 -0
- package/VAULT_GRAPHQL_API_FINDINGS.md +312 -0
- package/docs/ACTIONS.md +63 -0
- package/docs/COLLECTIONS.md +1038 -0
- package/docs/CONNECTIONS.md +1367 -0
- package/docs/CRUD_INTEGRATION.md +702 -0
- package/examples/connections-usage.tsx +909 -0
- package/examples/content-actions-usage.ts +144 -0
- package/examples/crud-usage.tsx +847 -0
- package/examples/extensibility-usage.tsx +889 -0
- package/examples/i18n-import-examples.ts +86 -0
- package/examples/i18n-namespace-usage.ts +118 -0
- package/examples/i18next-singleton-demo.ts +187 -0
- package/examples/permission-system-usage.tsx +415 -0
- package/examples/project-details.tsx +397 -0
- package/examples/shared-i18n-usage.tsx +203 -0
- package/examples/signup-error-handling.ts +100 -0
- package/examples/translation-types.ts +86 -0
- package/examples/translation-usage.tsx +336 -0
- package/index.js +1 -0
- package/jest.config.mjs +28 -0
- package/lex.config.mjs +11 -2
- package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts +22 -0
- package/lib/__tests__/e2e/helpers/testGraphQLServer.d.ts.map +1 -0
- package/lib/__tests__/e2e/helpers/testGraphQLServer.js +197 -0
- package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts +3 -0
- package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.d.ts.map +1 -0
- package/lib/__tests__/e2e/helpers/testGraphQLServerSimple.js +52 -0
- package/lib/actions/appActions/appActions.d.ts +29 -0
- package/lib/actions/appActions/appActions.d.ts.map +1 -0
- package/lib/actions/appActions/appActions.js +159 -0
- package/lib/actions/connectionActions/connectionActions.d.ts +19 -0
- package/lib/actions/connectionActions/connectionActions.d.ts.map +1 -0
- package/lib/actions/connectionActions/connectionActions.js +131 -0
- package/lib/actions/contentActions/contentActions.d.ts +34 -0
- package/lib/actions/contentActions/contentActions.d.ts.map +1 -0
- package/lib/actions/contentActions/contentActions.js +314 -0
- package/lib/actions/conversationActions/conversationActions.d.ts +30 -0
- package/lib/actions/conversationActions/conversationActions.d.ts.map +1 -0
- package/lib/actions/conversationActions/conversationActions.js +225 -0
- package/lib/actions/eventActions/eventActions.d.ts +27 -7
- package/lib/actions/eventActions/eventActions.d.ts.map +1 -0
- package/lib/actions/eventActions/eventActions.js +436 -2
- package/lib/actions/groupActions/groupActions.d.ts +30 -0
- package/lib/actions/groupActions/groupActions.d.ts.map +1 -0
- package/lib/actions/groupActions/groupActions.js +229 -0
- package/lib/actions/imageActions/imageActions.d.ts +16 -10
- package/lib/actions/imageActions/imageActions.d.ts.map +1 -0
- package/lib/actions/imageActions/imageActions.js +593 -2
- package/lib/actions/index.d.ts +21 -9
- package/lib/actions/index.d.ts.map +1 -0
- package/lib/actions/index.js +22 -2
- package/lib/actions/locationActions/locationActions.d.ts +11 -9
- package/lib/actions/locationActions/locationActions.d.ts.map +1 -0
- package/lib/actions/locationActions/locationActions.js +388 -2
- package/lib/actions/messageActions/messageActions.d.ts +16 -32
- package/lib/actions/messageActions/messageActions.d.ts.map +1 -0
- package/lib/actions/messageActions/messageActions.js +235 -2
- package/lib/actions/permissionActions/permissionActions.d.ts +34 -0
- package/lib/actions/permissionActions/permissionActions.d.ts.map +1 -0
- package/lib/actions/permissionActions/permissionActions.js +330 -0
- package/lib/actions/personaActions/personaActions.d.ts +65 -0
- package/lib/actions/personaActions/personaActions.d.ts.map +1 -0
- package/lib/actions/personaActions/personaActions.js +572 -0
- package/lib/actions/postActions/postActions.d.ts +12 -32
- package/lib/actions/postActions/postActions.d.ts.map +1 -0
- package/lib/actions/postActions/postActions.js +447 -2
- package/lib/actions/reactionActions/reactionActions.d.ts +13 -27
- package/lib/actions/reactionActions/reactionActions.d.ts.map +1 -0
- package/lib/actions/reactionActions/reactionActions.js +413 -2
- package/lib/actions/sseActions/sseActions.d.ts +1 -0
- package/lib/actions/sseActions/sseActions.d.ts.map +1 -0
- package/lib/actions/sseActions/sseActions.js +148 -2
- package/lib/actions/subscriptionActions/subscriptionActions.d.ts +24 -0
- package/lib/actions/subscriptionActions/subscriptionActions.d.ts.map +1 -0
- package/lib/actions/subscriptionActions/subscriptionActions.js +329 -0
- package/lib/actions/tagActions/tagActions.d.ts +13 -31
- package/lib/actions/tagActions/tagActions.d.ts.map +1 -0
- package/lib/actions/tagActions/tagActions.js +347 -2
- package/lib/actions/translationActions/translationActions.d.ts +38 -0
- package/lib/actions/translationActions/translationActions.d.ts.map +1 -0
- package/lib/actions/translationActions/translationActions.js +189 -0
- package/lib/actions/userActions/userActions.d.ts +42 -95
- package/lib/actions/userActions/userActions.d.ts.map +1 -0
- package/lib/actions/userActions/userActions.js +844 -2
- package/lib/actions/videoActions/videoActions.d.ts +41 -0
- package/lib/actions/videoActions/videoActions.d.ts.map +1 -0
- package/lib/actions/videoActions/videoActions.js +532 -0
- package/lib/actions/websocketActions/websocketActions.d.ts +20 -21
- package/lib/actions/websocketActions/websocketActions.d.ts.map +1 -0
- package/lib/actions/websocketActions/websocketActions.js +377 -2
- package/lib/adapters/appAdapter/appAdapter.d.ts +8 -0
- package/lib/adapters/appAdapter/appAdapter.d.ts.map +1 -0
- package/lib/adapters/appAdapter/appAdapter.js +90 -0
- package/lib/adapters/arangoAdapter/arangoAdapter.d.ts +3 -2
- package/lib/adapters/arangoAdapter/arangoAdapter.d.ts.map +1 -0
- package/lib/adapters/arangoAdapter/arangoAdapter.js +75 -2
- package/lib/adapters/contentAdapter/contentAdapter.d.ts +3 -2
- package/lib/adapters/contentAdapter/contentAdapter.d.ts.map +1 -0
- package/lib/adapters/contentAdapter/contentAdapter.js +107 -2
- package/lib/adapters/conversationAdapter/conversationAdapter.d.ts +3 -2
- package/lib/adapters/conversationAdapter/conversationAdapter.d.ts.map +1 -0
- package/lib/adapters/conversationAdapter/conversationAdapter.js +75 -2
- package/lib/adapters/eventAdapter/eventAdapter.d.ts +5 -2
- package/lib/adapters/eventAdapter/eventAdapter.d.ts.map +1 -0
- package/lib/adapters/eventAdapter/eventAdapter.js +162 -2
- package/lib/adapters/fileAdapter/fileAdapter.d.ts +3 -2
- package/lib/adapters/fileAdapter/fileAdapter.d.ts.map +1 -0
- package/lib/adapters/fileAdapter/fileAdapter.js +118 -2
- package/lib/adapters/groupAdapter/groupAdapter.d.ts +28 -0
- package/lib/adapters/groupAdapter/groupAdapter.d.ts.map +1 -0
- package/lib/adapters/groupAdapter/groupAdapter.js +66 -0
- package/lib/adapters/imageAdapter/imageAdapter.d.ts +9 -2
- package/lib/adapters/imageAdapter/imageAdapter.d.ts.map +1 -0
- package/lib/adapters/imageAdapter/imageAdapter.js +134 -2
- package/lib/adapters/index.d.ts +34 -16
- package/lib/adapters/index.d.ts.map +1 -0
- package/lib/adapters/index.js +19 -2
- package/lib/adapters/locationAdapter/locationAdapter.d.ts +3 -2
- package/lib/adapters/locationAdapter/locationAdapter.d.ts.map +1 -0
- package/lib/adapters/locationAdapter/locationAdapter.js +95 -2
- package/lib/adapters/messageAdapter/messageAdapter.d.ts +23 -19
- package/lib/adapters/messageAdapter/messageAdapter.d.ts.map +1 -0
- package/lib/adapters/messageAdapter/messageAdapter.js +82 -2
- package/lib/adapters/permissionAdapter/permissionAdapter.d.ts +41 -0
- package/lib/adapters/permissionAdapter/permissionAdapter.d.ts.map +1 -0
- package/lib/adapters/permissionAdapter/permissionAdapter.js +120 -0
- package/lib/adapters/personaAdapter/personaAdapter.d.ts +28 -2
- package/lib/adapters/personaAdapter/personaAdapter.d.ts.map +1 -0
- package/lib/adapters/personaAdapter/personaAdapter.js +161 -2
- package/lib/adapters/postAdapter/postAdapter.d.ts +3 -2
- package/lib/adapters/postAdapter/postAdapter.d.ts.map +1 -0
- package/lib/adapters/postAdapter/postAdapter.js +115 -2
- package/lib/adapters/reactionAdapter/reactionAdapter.d.ts +5 -2
- package/lib/adapters/reactionAdapter/reactionAdapter.d.ts.map +1 -0
- package/lib/adapters/reactionAdapter/reactionAdapter.js +81 -2
- package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts +3 -2
- package/lib/adapters/reaktorAdapter/reaktorAdapter.d.ts.map +1 -0
- package/lib/adapters/reaktorAdapter/reaktorAdapter.js +58 -2
- package/lib/adapters/sessionAdapter/sessionAdapter.d.ts +3 -2
- package/lib/adapters/sessionAdapter/sessionAdapter.d.ts.map +1 -0
- package/lib/adapters/sessionAdapter/sessionAdapter.js +80 -2
- package/lib/adapters/tagAdapter/tagAdapter.d.ts +3 -2
- package/lib/adapters/tagAdapter/tagAdapter.d.ts.map +1 -0
- package/lib/adapters/tagAdapter/tagAdapter.js +98 -2
- package/lib/adapters/translationAdapter/translationAdapter.d.ts +21 -0
- package/lib/adapters/translationAdapter/translationAdapter.d.ts.map +1 -0
- package/lib/adapters/translationAdapter/translationAdapter.js +55 -0
- package/lib/adapters/userAdapter/userAdapter.d.ts +18 -6
- package/lib/adapters/userAdapter/userAdapter.d.ts.map +1 -0
- package/lib/adapters/userAdapter/userAdapter.js +302 -2
- package/lib/adapters/videoAdapter/videoAdapter.d.ts +8 -0
- package/lib/adapters/videoAdapter/videoAdapter.d.ts.map +1 -0
- package/lib/adapters/videoAdapter/videoAdapter.js +194 -0
- package/lib/config/index.d.ts +19 -6
- package/lib/config/index.d.ts.map +1 -0
- package/lib/config/index.js +97 -2
- package/lib/constants/Collections.d.ts +44 -0
- package/lib/constants/Collections.d.ts.map +1 -0
- package/lib/constants/Collections.js +40 -0
- package/lib/constants/MetropolisConstants.d.ts +1 -0
- package/lib/constants/MetropolisConstants.d.ts.map +1 -0
- package/lib/constants/MetropolisConstants.js +15 -2
- package/lib/graphql/message.d.ts +1 -0
- package/lib/graphql/message.d.ts.map +1 -0
- package/lib/graphql/message.js +6 -4
- package/lib/graphql/notification.d.ts +1 -0
- package/lib/graphql/notification.d.ts.map +1 -0
- package/lib/graphql/notification.js +6 -4
- package/lib/graphql/session.d.ts +1 -0
- package/lib/graphql/session.d.ts.map +1 -0
- package/lib/graphql/session.js +4 -3
- package/lib/index.d.ts +45 -22
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +248 -2
- package/lib/stores/appStore.d.ts +1 -0
- package/lib/stores/appStore.d.ts.map +1 -0
- package/lib/stores/appStore.js +23 -2
- package/lib/stores/contentStore.d.ts +36 -0
- package/lib/stores/contentStore.d.ts.map +1 -0
- package/lib/stores/contentStore.js +139 -0
- package/lib/stores/conversationStore.d.ts +38 -0
- package/lib/stores/conversationStore.d.ts.map +1 -0
- package/lib/stores/conversationStore.js +117 -0
- package/lib/stores/eventStore.d.ts +4 -1
- package/lib/stores/eventStore.d.ts.map +1 -0
- package/lib/stores/eventStore.js +47 -2
- package/lib/stores/groupStore.d.ts +37 -0
- package/lib/stores/groupStore.d.ts.map +1 -0
- package/lib/stores/groupStore.js +68 -0
- package/lib/stores/imageStore.d.ts +6 -1
- package/lib/stores/imageStore.d.ts.map +1 -0
- package/lib/stores/imageStore.js +53 -2
- package/lib/stores/index.d.ts +20 -11
- package/lib/stores/index.d.ts.map +1 -0
- package/lib/stores/index.js +24 -2
- package/lib/stores/locationStore.d.ts +2 -1
- package/lib/stores/locationStore.d.ts.map +1 -0
- package/lib/stores/locationStore.js +42 -2
- package/lib/stores/messageStore.d.ts +19 -4
- package/lib/stores/messageStore.d.ts.map +1 -0
- package/lib/stores/messageStore.js +137 -2
- package/lib/stores/notificationStore.d.ts +33 -0
- package/lib/stores/notificationStore.d.ts.map +1 -0
- package/lib/stores/notificationStore.js +55 -0
- package/lib/stores/permissionStore.d.ts +37 -0
- package/lib/stores/permissionStore.d.ts.map +1 -0
- package/lib/stores/permissionStore.js +117 -0
- package/lib/stores/personaStore.d.ts +26 -0
- package/lib/stores/personaStore.d.ts.map +1 -0
- package/lib/stores/personaStore.js +118 -0
- package/lib/stores/postStore.d.ts +2 -1
- package/lib/stores/postStore.d.ts.map +1 -0
- package/lib/stores/postStore.js +53 -2
- package/lib/stores/reactionStore.d.ts +1 -0
- package/lib/stores/reactionStore.d.ts.map +1 -0
- package/lib/stores/reactionStore.js +28 -2
- package/lib/stores/subscriptionStore.d.ts +41 -0
- package/lib/stores/subscriptionStore.d.ts.map +1 -0
- package/lib/stores/subscriptionStore.js +85 -0
- package/lib/stores/tagStore.d.ts +8 -5
- package/lib/stores/tagStore.d.ts.map +1 -0
- package/lib/stores/tagStore.js +87 -2
- package/lib/stores/translationStore.d.ts +42 -0
- package/lib/stores/translationStore.d.ts.map +1 -0
- package/lib/stores/translationStore.js +122 -0
- package/lib/stores/userStore.d.ts +5 -4
- package/lib/stores/userStore.d.ts.map +1 -0
- package/lib/stores/userStore.js +319 -2
- package/lib/stores/videoStore.d.ts +39 -0
- package/lib/stores/videoStore.d.ts.map +1 -0
- package/lib/stores/videoStore.js +132 -0
- package/lib/stores/websocketStore.d.ts +1 -0
- package/lib/stores/websocketStore.d.ts.map +1 -0
- package/lib/stores/websocketStore.js +51 -2
- package/lib/types/apps.types.d.ts +17 -0
- package/lib/types/apps.types.d.ts.map +1 -0
- package/lib/types/apps.types.js +6 -0
- package/lib/types/common.types.d.ts +31 -0
- package/lib/types/common.types.d.ts.map +1 -0
- package/lib/types/common.types.js +6 -0
- package/lib/types/conversations.types.d.ts +17 -0
- package/lib/types/conversations.types.d.ts.map +1 -0
- package/lib/types/conversations.types.js +6 -0
- package/lib/types/edges.types.d.ts +38 -0
- package/lib/types/edges.types.d.ts.map +1 -0
- package/lib/types/edges.types.js +6 -0
- package/lib/types/groups.types.d.ts +19 -0
- package/lib/types/groups.types.d.ts.map +1 -0
- package/lib/types/groups.types.js +6 -0
- package/lib/types/index.d.ts +12 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +12 -0
- package/lib/types/subscriptions.types.d.ts +32 -0
- package/lib/types/subscriptions.types.d.ts.map +1 -0
- package/lib/types/subscriptions.types.js +6 -0
- package/lib/types/videos.types.d.ts +61 -0
- package/lib/types/videos.types.d.ts.map +1 -0
- package/lib/types/videos.types.js +6 -0
- package/lib/utils/MetropolisProvider.d.ts +39 -15
- package/lib/utils/MetropolisProvider.d.ts.map +1 -0
- package/lib/utils/MetropolisProvider.js +31 -2
- package/lib/utils/actionFactory.d.ts +21 -19
- package/lib/utils/actionFactory.d.ts.map +1 -0
- package/lib/utils/actionFactory.js +95 -2
- package/lib/utils/api.d.ts +5 -4
- package/lib/utils/api.d.ts.map +1 -0
- package/lib/utils/api.js +252 -6
- package/lib/utils/app.d.ts +1 -0
- package/lib/utils/app.d.ts.map +1 -0
- package/lib/utils/app.js +15 -2
- package/lib/utils/baseActionFactory.d.ts +5 -23
- package/lib/utils/baseActionFactory.d.ts.map +1 -0
- package/lib/utils/baseActionFactory.js +72 -2
- package/lib/utils/configUtils.d.ts +11 -0
- package/lib/utils/configUtils.d.ts.map +1 -0
- package/lib/utils/configUtils.js +20 -0
- package/lib/utils/dateUtils.d.ts +1 -0
- package/lib/utils/dateUtils.d.ts.map +1 -0
- package/lib/utils/dateUtils.js +11 -2
- package/lib/utils/file.d.ts +3 -1
- package/lib/utils/file.d.ts.map +1 -0
- package/lib/utils/file.js +156 -2
- package/lib/utils/i18n.d.ts +7 -0
- package/lib/utils/i18n.d.ts.map +1 -0
- package/lib/utils/i18n.js +96 -0
- package/lib/utils/index.d.ts +20 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +26 -0
- package/lib/utils/location.d.ts +4 -3
- package/lib/utils/location.d.ts.map +1 -0
- package/lib/utils/location.js +82 -2
- package/lib/utils/permissionUtils.d.ts +22 -0
- package/lib/utils/permissionUtils.d.ts.map +1 -0
- package/lib/utils/permissionUtils.js +72 -0
- package/lib/utils/requestCache.d.ts +8 -0
- package/lib/utils/requestCache.d.ts.map +1 -0
- package/lib/utils/requestCache.js +53 -0
- package/lib/utils/session.d.ts +14 -0
- package/lib/utils/session.d.ts.map +1 -0
- package/lib/utils/session.js +107 -0
- package/lib/utils/useConversationTyping.d.ts +26 -0
- package/lib/utils/useConversationTyping.d.ts.map +1 -0
- package/lib/utils/useConversationTyping.js +117 -0
- package/lib/utils/useMetropolis.d.ts +67 -12
- package/lib/utils/useMetropolis.d.ts.map +1 -0
- package/lib/utils/useMetropolis.js +311 -2
- package/lib/utils/useTranslations.d.ts +16 -0
- package/lib/utils/useTranslations.d.ts.map +1 -0
- package/lib/utils/useTranslations.js +105 -0
- package/lib/utils/validatorFactory.d.ts +3 -2
- package/lib/utils/validatorFactory.d.ts.map +1 -0
- package/lib/utils/validatorFactory.js +95 -2
- package/package.json +58 -17
- package/temp_signin.ts +73 -0
- package/lib/actions/profileActions/profileActions.d.ts +0 -50
- package/lib/actions/profileActions/profileActions.js +0 -2
- package/lib/adapters/profileAdapter/profileAdapter.d.ts +0 -32
- package/lib/adapters/profileAdapter/profileAdapter.js +0 -2
- package/lib/stores/profileStore.d.ts +0 -24
- package/lib/stores/profileStore.js +0 -2
- /package/{FACTORY_PATTERN_GUIDE.md → factoryPatternGuide.md} +0 -0
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright (c) 2019-Present, Nitrogen Labs, Inc.
|
|
3
|
-
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
-
*/
|
|
5
1
|
import type { FluxFramework } from '@nlabs/arkhamjs';
|
|
6
|
-
import type {
|
|
7
|
-
import type {
|
|
8
|
-
import type {
|
|
9
|
-
import type {
|
|
10
|
-
import type {
|
|
11
|
-
import type {
|
|
12
|
-
import type {
|
|
13
|
-
import type {
|
|
14
|
-
import type {
|
|
15
|
-
import type {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
2
|
+
import type { ContentActionsOptions } from '../actions/contentActions/contentActions.js';
|
|
3
|
+
import type { EventActionsOptions } from '../actions/eventActions/eventActions.js';
|
|
4
|
+
import type { GroupActionsOptions } from '../actions/groupActions/groupActions.js';
|
|
5
|
+
import type { ImageActionsOptions } from '../actions/imageActions/imageActions.js';
|
|
6
|
+
import type { LocationActionsOptions } from '../actions/locationActions/locationActions.js';
|
|
7
|
+
import type { MessageActionsOptions } from '../actions/messageActions/messageActions.js';
|
|
8
|
+
import type { PermissionActionsOptions } from '../actions/permissionActions/permissionActions.js';
|
|
9
|
+
import type { PostActionsOptions } from '../actions/postActions/postActions.js';
|
|
10
|
+
import type { PersonaActionsOptions } from '../actions/personaActions/personaActions.js';
|
|
11
|
+
import type { ReactionActionsOptions } from '../actions/reactionActions/reactionActions.js';
|
|
12
|
+
import type { SSEActionsOptions } from '../actions/sseActions/sseActions.js';
|
|
13
|
+
import type { TagActionsOptions } from '../actions/tagActions/tagActions.js';
|
|
14
|
+
import type { TranslationActionsOptions } from '../actions/translationActions/translationActions.js';
|
|
15
|
+
import type { UserActionsOptions } from '../actions/userActions/userActions.js';
|
|
16
|
+
import type { VideoActionsOptions } from '../actions/videoActions/videoActions.js';
|
|
17
|
+
export type ActionType = 'content' | 'event' | 'group' | 'image' | 'location' | 'message' | 'permission' | 'post' | 'persona' | 'reaction' | 'sse' | 'subscription' | 'tag' | 'translation' | 'user' | 'video' | 'websocket';
|
|
18
|
+
export type ActionOptions = ContentActionsOptions | EventActionsOptions | GroupActionsOptions | ImageActionsOptions | LocationActionsOptions | MessageActionsOptions | PermissionActionsOptions | PostActionsOptions | PersonaActionsOptions | ReactionActionsOptions | SSEActionsOptions | TagActionsOptions | TranslationActionsOptions | UserActionsOptions | VideoActionsOptions | undefined;
|
|
19
|
+
export declare const createAction: <T extends ActionType>(actionType: T, flux: FluxFramework, options?: ActionOptions) => import("../actions/contentActions/contentActions.js").ContentActions | import("../actions/eventActions/eventActions.js").EventActions | import("../actions/groupActions/groupActions.js").GroupActions | import("../actions/imageActions/imageActions.js").ImageActions | import("../actions/locationActions/locationActions.js").LocationActions | import("../actions/messageActions/messageActions.js").MessageActions | import("../actions/permissionActions/permissionActions.js").PermissionActions | import("../actions/postActions/postActions.js").PostActions | import("../actions/personaActions/personaActions.js").PersonaActions | import("../actions/reactionActions/reactionActions.js").ReactionActions | import("../actions/sseActions/sseActions.js").SSEActions | import("../actions/subscriptionActions/subscriptionActions.js").SubscriptionActions | import("../actions/tagActions/tagActions.js").TagActions | import("../actions/websocketActions/websocketActions.js").WebsocketActions | import("../actions/videoActions/videoActions.js").VideoActions | import("../actions/translationActions/translationActions.js").TranslationActions | import("../actions/userActions/userActions.js").userActions;
|
|
20
|
+
export declare const createActions: (actionTypes: ActionType[], flux: FluxFramework, options?: Partial<Record<ActionType, ActionOptions>>) => Partial<Record<ActionType, ActionReturnType<ActionType>>>;
|
|
21
|
+
export declare const createAllActions: (flux: FluxFramework, options?: Partial<Record<ActionType, ActionOptions>>) => Partial<Record<ActionType, import("../actions/contentActions/contentActions.js").ContentActions | import("../actions/eventActions/eventActions.js").EventActions | import("../actions/groupActions/groupActions.js").GroupActions | import("../actions/imageActions/imageActions.js").ImageActions | import("../actions/locationActions/locationActions.js").LocationActions | import("../actions/messageActions/messageActions.js").MessageActions | import("../actions/permissionActions/permissionActions.js").PermissionActions | import("../actions/postActions/postActions.js").PostActions | import("../actions/personaActions/personaActions.js").PersonaActions | import("../actions/reactionActions/reactionActions.js").ReactionActions | import("../actions/sseActions/sseActions.js").SSEActions | import("../actions/subscriptionActions/subscriptionActions.js").SubscriptionActions | import("../actions/tagActions/tagActions.js").TagActions | import("../actions/websocketActions/websocketActions.js").WebsocketActions | import("../actions/videoActions/videoActions.js").VideoActions | import("../actions/translationActions/translationActions.js").TranslationActions | import("../actions/userActions/userActions.js").userActions>>;
|
|
21
22
|
export type ActionTypes = ReturnType<typeof createAllActions>;
|
|
22
23
|
export type ActionReturnType<T extends ActionType> = ReturnType<typeof createAction<T>>;
|
|
24
|
+
//# sourceMappingURL=actionFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actionFactory.d.ts","sourceRoot":"","sources":["../../src/utils/actionFactory.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AACjF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,+CAA+C,CAAC;AAC1F,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAC,wBAAwB,EAAC,MAAM,mDAAmD,CAAC;AAChG,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,6CAA6C,CAAC;AACvF,OAAO,KAAK,EAAC,sBAAsB,EAAC,MAAM,+CAA+C,CAAC;AAC1F,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,qDAAqD,CAAC;AACnG,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,uCAAuC,CAAC;AAC9E,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AAIjF,MAAM,MAAM,UAAU,GAClB,SAAS,GACT,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,SAAS,GACT,YAAY,GACZ,MAAM,GACN,SAAS,GACT,UAAU,GACV,KAAK,GACL,cAAc,GACd,KAAK,GACL,aAAa,GACb,MAAM,GACN,OAAO,GACP,WAAW,CAAC;AAEhB,MAAM,MAAM,aAAa,GACrB,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,kBAAkB,GAClB,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,iBAAiB,GACjB,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,SAAS,CAAC;AAEd,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,UAAU,EAC/C,YAAY,CAAC,EACb,MAAM,aAAa,EACnB,UAAU,aAAa,uqCA6DxB,CAAC;AAEF,eAAO,MAAM,aAAa,GACxB,aAAa,UAAU,EAAE,EACzB,MAAM,aAAa,EACnB,UAAU,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,KACnD,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAQ1D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,MAAM,aAAa,EACnB,UAAU,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,osCAuBrD,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC9D,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,UAAU,IAAI,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,2 +1,95 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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 { createContentActions } from '../actions/contentActions/contentActions.js';
|
|
5
|
+
import { createEventActions } from '../actions/eventActions/eventActions.js';
|
|
6
|
+
import { createGroupActions } from '../actions/groupActions/groupActions.js';
|
|
7
|
+
import { createImageActions } from '../actions/imageActions/imageActions.js';
|
|
8
|
+
import { createLocationActions } from '../actions/locationActions/locationActions.js';
|
|
9
|
+
import { createMessageActions } from '../actions/messageActions/messageActions.js';
|
|
10
|
+
import { createPermissionActions } from '../actions/permissionActions/permissionActions.js';
|
|
11
|
+
import { createPostActions } from '../actions/postActions/postActions.js';
|
|
12
|
+
import { createPersonaActions } from '../actions/personaActions/personaActions.js';
|
|
13
|
+
import { createReactionActions } from '../actions/reactionActions/reactionActions.js';
|
|
14
|
+
import { createSSEActions } from '../actions/sseActions/sseActions.js';
|
|
15
|
+
import { createSubscriptionActions } from '../actions/subscriptionActions/subscriptionActions.js';
|
|
16
|
+
import { createTagActions } from '../actions/tagActions/tagActions.js';
|
|
17
|
+
import { createTranslationActions } from '../actions/translationActions/translationActions.js';
|
|
18
|
+
import { createUserActions } from '../actions/userActions/userActions.js';
|
|
19
|
+
import { createVideoActions } from '../actions/videoActions/videoActions.js';
|
|
20
|
+
import { createWebsocketActions } from '../actions/websocketActions/websocketActions.js';
|
|
21
|
+
const websocketActionCache = new WeakMap();
|
|
22
|
+
export const createAction = (actionType, flux, options)=>{
|
|
23
|
+
switch(actionType){
|
|
24
|
+
case 'content':
|
|
25
|
+
return createContentActions(flux, options);
|
|
26
|
+
case 'event':
|
|
27
|
+
return createEventActions(flux, options);
|
|
28
|
+
case 'group':
|
|
29
|
+
return createGroupActions(flux, options);
|
|
30
|
+
case 'image':
|
|
31
|
+
return createImageActions(flux, options);
|
|
32
|
+
case 'location':
|
|
33
|
+
return createLocationActions(flux, options);
|
|
34
|
+
case 'message':
|
|
35
|
+
return createMessageActions(flux, options);
|
|
36
|
+
case 'permission':
|
|
37
|
+
return createPermissionActions(flux, options);
|
|
38
|
+
case 'post':
|
|
39
|
+
return createPostActions(flux, options);
|
|
40
|
+
case 'persona':
|
|
41
|
+
return createPersonaActions(flux, options);
|
|
42
|
+
case 'reaction':
|
|
43
|
+
return createReactionActions(flux, options);
|
|
44
|
+
case 'sse':
|
|
45
|
+
return createSSEActions(flux, options);
|
|
46
|
+
case 'subscription':
|
|
47
|
+
return createSubscriptionActions(flux);
|
|
48
|
+
case 'tag':
|
|
49
|
+
return createTagActions(flux, options);
|
|
50
|
+
case 'translation':
|
|
51
|
+
return createTranslationActions(flux, options);
|
|
52
|
+
case 'user':
|
|
53
|
+
return createUserActions(flux, options);
|
|
54
|
+
case 'video':
|
|
55
|
+
return createVideoActions(flux, options);
|
|
56
|
+
case 'websocket':
|
|
57
|
+
if (!websocketActionCache.has(flux)) {
|
|
58
|
+
websocketActionCache.set(flux, createWebsocketActions(flux));
|
|
59
|
+
}
|
|
60
|
+
return websocketActionCache.get(flux);
|
|
61
|
+
default:
|
|
62
|
+
throw new Error(`Unknown action type: ${actionType}`);
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
export const createActions = (actionTypes, flux, options)=>{
|
|
66
|
+
const actions = {};
|
|
67
|
+
actionTypes.forEach((type)=>{
|
|
68
|
+
actions[type] = createAction(type, flux, options?.[type]);
|
|
69
|
+
});
|
|
70
|
+
return actions;
|
|
71
|
+
};
|
|
72
|
+
export const createAllActions = (flux, options)=>{
|
|
73
|
+
const allActionTypes = [
|
|
74
|
+
'content',
|
|
75
|
+
'event',
|
|
76
|
+
'group',
|
|
77
|
+
'image',
|
|
78
|
+
'location',
|
|
79
|
+
'message',
|
|
80
|
+
'permission',
|
|
81
|
+
'post',
|
|
82
|
+
'persona',
|
|
83
|
+
'reaction',
|
|
84
|
+
'sse',
|
|
85
|
+
'subscription',
|
|
86
|
+
'tag',
|
|
87
|
+
'translation',
|
|
88
|
+
'user',
|
|
89
|
+
'video',
|
|
90
|
+
'websocket'
|
|
91
|
+
];
|
|
92
|
+
return createActions(allActionTypes, flux, options);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYWN0aW9uRmFjdG9yeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtjcmVhdGVDb250ZW50QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50QWN0aW9ucy9jb250ZW50QWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUV2ZW50QWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9ldmVudEFjdGlvbnMvZXZlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlR3JvdXBBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL2dyb3VwQWN0aW9ucy9ncm91cEFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVJbWFnZUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvaW1hZ2VBY3Rpb25zL2ltYWdlQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZUxvY2F0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9sb2NhdGlvbkFjdGlvbnMvbG9jYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlTWVzc2FnZUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvbWVzc2FnZUFjdGlvbnMvbWVzc2FnZUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVQZXJtaXNzaW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy9wZXJtaXNzaW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVBvc3RBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Bvc3RBY3Rpb25zL3Bvc3RBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlUGVyc29uYUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcGVyc29uYUFjdGlvbnMvcGVyc29uYUFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVSZWFjdGlvbkFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcmVhY3Rpb25BY3Rpb25zL3JlYWN0aW9uQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVNTRUFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvc3NlQWN0aW9ucy9zc2VBY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlU3Vic2NyaXB0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zdWJzY3JpcHRpb25BY3Rpb25zL3N1YnNjcmlwdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVUYWdBY3Rpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVRyYW5zbGF0aW9uQWN0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB7Y3JlYXRlVXNlckFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHtjcmVhdGVWaWRlb0FjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5pbXBvcnQge2NyZWF0ZVdlYnNvY2tldEFjdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvd2Vic29ja2V0QWN0aW9ucy93ZWJzb2NrZXRBY3Rpb25zLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7Q29udGVudEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2NvbnRlbnRBY3Rpb25zL2NvbnRlbnRBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtFdmVudEFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2V2ZW50QWN0aW9ucy9ldmVudEFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge0dyb3VwQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvZ3JvdXBBY3Rpb25zL2dyb3VwQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7SW1hZ2VBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9pbWFnZUFjdGlvbnMvaW1hZ2VBY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbkFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL2xvY2F0aW9uQWN0aW9ucy9sb2NhdGlvbkFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge01lc3NhZ2VBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9tZXNzYWdlQWN0aW9ucy9tZXNzYWdlQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UGVybWlzc2lvbkFjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3Blcm1pc3Npb25BY3Rpb25zL3Blcm1pc3Npb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtQb3N0QWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvcG9zdEFjdGlvbnMvcG9zdEFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1BlcnNvbmFBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9wZXJzb25hQWN0aW9ucy9wZXJzb25hQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7UmVhY3Rpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9yZWFjdGlvbkFjdGlvbnMvcmVhY3Rpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtTU0VBY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy9zc2VBY3Rpb25zL3NzZUFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1RhZ0FjdGlvbnNPcHRpb25zfSBmcm9tICcuLi9hY3Rpb25zL3RhZ0FjdGlvbnMvdGFnQWN0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7VHJhbnNsYXRpb25BY3Rpb25zT3B0aW9uc30gZnJvbSAnLi4vYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLmpzJztcbmltcG9ydCB0eXBlIHtVc2VyQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdXNlckFjdGlvbnMvdXNlckFjdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUge1ZpZGVvQWN0aW9uc09wdGlvbnN9IGZyb20gJy4uL2FjdGlvbnMvdmlkZW9BY3Rpb25zL3ZpZGVvQWN0aW9ucy5qcyc7XG5cbmNvbnN0IHdlYnNvY2tldEFjdGlvbkNhY2hlID0gbmV3IFdlYWtNYXA8Rmx1eEZyYW1ld29yaywgUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlV2Vic29ja2V0QWN0aW9ucz4+KCk7XG5cbmV4cG9ydCB0eXBlIEFjdGlvblR5cGUgPVxuICB8ICdjb250ZW50J1xuICB8ICdldmVudCdcbiAgfCAnZ3JvdXAnXG4gIHwgJ2ltYWdlJ1xuICB8ICdsb2NhdGlvbidcbiAgfCAnbWVzc2FnZSdcbiAgfCAncGVybWlzc2lvbidcbiAgfCAncG9zdCdcbiAgfCAncGVyc29uYSdcbiAgfCAncmVhY3Rpb24nXG4gIHwgJ3NzZSdcbiAgfCAnc3Vic2NyaXB0aW9uJ1xuICB8ICd0YWcnXG4gIHwgJ3RyYW5zbGF0aW9uJ1xuICB8ICd1c2VyJ1xuICB8ICd2aWRlbydcbiAgfCAnd2Vic29ja2V0JztcblxuZXhwb3J0IHR5cGUgQWN0aW9uT3B0aW9ucyA9XG4gIHwgQ29udGVudEFjdGlvbnNPcHRpb25zXG4gIHwgRXZlbnRBY3Rpb25zT3B0aW9uc1xuICB8IEdyb3VwQWN0aW9uc09wdGlvbnNcbiAgfCBJbWFnZUFjdGlvbnNPcHRpb25zXG4gIHwgTG9jYXRpb25BY3Rpb25zT3B0aW9uc1xuICB8IE1lc3NhZ2VBY3Rpb25zT3B0aW9uc1xuICB8IFBlcm1pc3Npb25BY3Rpb25zT3B0aW9uc1xuICB8IFBvc3RBY3Rpb25zT3B0aW9uc1xuICB8IFBlcnNvbmFBY3Rpb25zT3B0aW9uc1xuICB8IFJlYWN0aW9uQWN0aW9uc09wdGlvbnNcbiAgfCBTU0VBY3Rpb25zT3B0aW9uc1xuICB8IFRhZ0FjdGlvbnNPcHRpb25zXG4gIHwgVHJhbnNsYXRpb25BY3Rpb25zT3B0aW9uc1xuICB8IFVzZXJBY3Rpb25zT3B0aW9uc1xuICB8IFZpZGVvQWN0aW9uc09wdGlvbnNcbiAgfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBY3Rpb24gPSA8VCBleHRlbmRzIEFjdGlvblR5cGU+KFxuICBhY3Rpb25UeXBlOiBULFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogQWN0aW9uT3B0aW9uc1xuKSA9PiB7XG4gIHN3aXRjaChhY3Rpb25UeXBlKSB7XG4gICAgY2FzZSAnY29udGVudCc6XG4gICAgICByZXR1cm4gY3JlYXRlQ29udGVudEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBDb250ZW50QWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnZXZlbnQnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUV2ZW50QWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIEV2ZW50QWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUdyb3VwQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIEdyb3VwQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgcmV0dXJuIGNyZWF0ZUltYWdlQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIEltYWdlQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnbG9jYXRpb24nOlxuICAgICAgcmV0dXJuIGNyZWF0ZUxvY2F0aW9uQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIExvY2F0aW9uQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICByZXR1cm4gY3JlYXRlTWVzc2FnZUFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBNZXNzYWdlQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAncGVybWlzc2lvbic6XG4gICAgICByZXR1cm4gY3JlYXRlUGVybWlzc2lvbkFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBQZXJtaXNzaW9uQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAncG9zdCc6XG4gICAgICByZXR1cm4gY3JlYXRlUG9zdEFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBQb3N0QWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAncGVyc29uYSc6XG4gICAgICByZXR1cm4gY3JlYXRlUGVyc29uYUFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBQZXJzb25hQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAncmVhY3Rpb24nOlxuICAgICAgcmV0dXJuIGNyZWF0ZVJlYWN0aW9uQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFJlYWN0aW9uQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnc3NlJzpcbiAgICAgIHJldHVybiBjcmVhdGVTU0VBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgU1NFQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnc3Vic2NyaXB0aW9uJzpcbiAgICAgIHJldHVybiBjcmVhdGVTdWJzY3JpcHRpb25BY3Rpb25zKGZsdXgpO1xuXG4gICAgY2FzZSAndGFnJzpcbiAgICAgIHJldHVybiBjcmVhdGVUYWdBY3Rpb25zKGZsdXgsIG9wdGlvbnMgYXMgVGFnQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAndHJhbnNsYXRpb24nOlxuICAgICAgcmV0dXJuIGNyZWF0ZVRyYW5zbGF0aW9uQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFRyYW5zbGF0aW9uQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAndXNlcic6XG4gICAgICByZXR1cm4gY3JlYXRlVXNlckFjdGlvbnMoZmx1eCwgb3B0aW9ucyBhcyBVc2VyQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAndmlkZW8nOlxuICAgICAgcmV0dXJuIGNyZWF0ZVZpZGVvQWN0aW9ucyhmbHV4LCBvcHRpb25zIGFzIFZpZGVvQWN0aW9uc09wdGlvbnMpO1xuXG4gICAgY2FzZSAnd2Vic29ja2V0JzpcbiAgICAgIGlmKCF3ZWJzb2NrZXRBY3Rpb25DYWNoZS5oYXMoZmx1eCkpIHtcbiAgICAgICAgd2Vic29ja2V0QWN0aW9uQ2FjaGUuc2V0KGZsdXgsIGNyZWF0ZVdlYnNvY2tldEFjdGlvbnMoZmx1eCkpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gd2Vic29ja2V0QWN0aW9uQ2FjaGUuZ2V0KGZsdXgpIGFzIFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVdlYnNvY2tldEFjdGlvbnM+O1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBhY3Rpb24gdHlwZTogJHthY3Rpb25UeXBlfWApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQWN0aW9ucyA9IChcbiAgYWN0aW9uVHlwZXM6IEFjdGlvblR5cGVbXSxcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgb3B0aW9ucz86IFBhcnRpYWw8UmVjb3JkPEFjdGlvblR5cGUsIEFjdGlvbk9wdGlvbnM+PlxuKTogUGFydGlhbDxSZWNvcmQ8QWN0aW9uVHlwZSwgQWN0aW9uUmV0dXJuVHlwZTxBY3Rpb25UeXBlPj4+ID0+IHtcbiAgY29uc3QgYWN0aW9uczogUGFydGlhbDxSZWNvcmQ8QWN0aW9uVHlwZSwgQWN0aW9uUmV0dXJuVHlwZTxBY3Rpb25UeXBlPj4+ID0ge307XG5cbiAgYWN0aW9uVHlwZXMuZm9yRWFjaCgodHlwZSkgPT4ge1xuICAgIGFjdGlvbnNbdHlwZV0gPSBjcmVhdGVBY3Rpb24odHlwZSwgZmx1eCwgb3B0aW9ucz8uW3R5cGVdKSBhcyBBY3Rpb25SZXR1cm5UeXBlPEFjdGlvblR5cGU+O1xuICB9KTtcblxuICByZXR1cm4gYWN0aW9ucztcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVBbGxBY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogUGFydGlhbDxSZWNvcmQ8QWN0aW9uVHlwZSwgQWN0aW9uT3B0aW9ucz4+XG4pID0+IHtcbiAgY29uc3QgYWxsQWN0aW9uVHlwZXM6IEFjdGlvblR5cGVbXSA9IFtcbiAgICAnY29udGVudCcsXG4gICAgJ2V2ZW50JyxcbiAgICAnZ3JvdXAnLFxuICAgICdpbWFnZScsXG4gICAgJ2xvY2F0aW9uJyxcbiAgICAnbWVzc2FnZScsXG4gICAgJ3Blcm1pc3Npb24nLFxuICAgICdwb3N0JyxcbiAgICAncGVyc29uYScsXG4gICAgJ3JlYWN0aW9uJyxcbiAgICAnc3NlJyxcbiAgICAnc3Vic2NyaXB0aW9uJyxcbiAgICAndGFnJyxcbiAgICAndHJhbnNsYXRpb24nLFxuICAgICd1c2VyJyxcbiAgICAndmlkZW8nLFxuICAgICd3ZWJzb2NrZXQnXG4gIF07XG5cbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbnMoYWxsQWN0aW9uVHlwZXMsIGZsdXgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IHR5cGUgQWN0aW9uVHlwZXMgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVBbGxBY3Rpb25zPjtcbmV4cG9ydCB0eXBlIEFjdGlvblJldHVyblR5cGU8VCBleHRlbmRzIEFjdGlvblR5cGU+ID0gUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlQWN0aW9uPFQ+PjtcbiJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZW50QWN0aW9ucyIsImNyZWF0ZUV2ZW50QWN0aW9ucyIsImNyZWF0ZUdyb3VwQWN0aW9ucyIsImNyZWF0ZUltYWdlQWN0aW9ucyIsImNyZWF0ZUxvY2F0aW9uQWN0aW9ucyIsImNyZWF0ZU1lc3NhZ2VBY3Rpb25zIiwiY3JlYXRlUGVybWlzc2lvbkFjdGlvbnMiLCJjcmVhdGVQb3N0QWN0aW9ucyIsImNyZWF0ZVBlcnNvbmFBY3Rpb25zIiwiY3JlYXRlUmVhY3Rpb25BY3Rpb25zIiwiY3JlYXRlU1NFQWN0aW9ucyIsImNyZWF0ZVN1YnNjcmlwdGlvbkFjdGlvbnMiLCJjcmVhdGVUYWdBY3Rpb25zIiwiY3JlYXRlVHJhbnNsYXRpb25BY3Rpb25zIiwiY3JlYXRlVXNlckFjdGlvbnMiLCJjcmVhdGVWaWRlb0FjdGlvbnMiLCJjcmVhdGVXZWJzb2NrZXRBY3Rpb25zIiwid2Vic29ja2V0QWN0aW9uQ2FjaGUiLCJXZWFrTWFwIiwiY3JlYXRlQWN0aW9uIiwiYWN0aW9uVHlwZSIsImZsdXgiLCJvcHRpb25zIiwiaGFzIiwic2V0IiwiZ2V0IiwiRXJyb3IiLCJjcmVhdGVBY3Rpb25zIiwiYWN0aW9uVHlwZXMiLCJhY3Rpb25zIiwiZm9yRWFjaCIsInR5cGUiLCJjcmVhdGVBbGxBY3Rpb25zIiwiYWxsQWN0aW9uVHlwZXMiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQyxHQUNELFNBQVFBLG9CQUFvQixRQUFPLDhDQUE4QztBQUNqRixTQUFRQyxrQkFBa0IsUUFBTywwQ0FBMEM7QUFDM0UsU0FBUUMsa0JBQWtCLFFBQU8sMENBQTBDO0FBQzNFLFNBQVFDLGtCQUFrQixRQUFPLDBDQUEwQztBQUMzRSxTQUFRQyxxQkFBcUIsUUFBTyxnREFBZ0Q7QUFDcEYsU0FBUUMsb0JBQW9CLFFBQU8sOENBQThDO0FBQ2pGLFNBQVFDLHVCQUF1QixRQUFPLG9EQUFvRDtBQUMxRixTQUFRQyxpQkFBaUIsUUFBTyx3Q0FBd0M7QUFDeEUsU0FBUUMsb0JBQW9CLFFBQU8sOENBQThDO0FBQ2pGLFNBQVFDLHFCQUFxQixRQUFPLGdEQUFnRDtBQUNwRixTQUFRQyxnQkFBZ0IsUUFBTyxzQ0FBc0M7QUFDckUsU0FBUUMseUJBQXlCLFFBQU8sd0RBQXdEO0FBQ2hHLFNBQVFDLGdCQUFnQixRQUFPLHNDQUFzQztBQUNyRSxTQUFRQyx3QkFBd0IsUUFBTyxzREFBc0Q7QUFDN0YsU0FBUUMsaUJBQWlCLFFBQU8sd0NBQXdDO0FBQ3hFLFNBQVFDLGtCQUFrQixRQUFPLDBDQUEwQztBQUMzRSxTQUFRQyxzQkFBc0IsUUFBTyxrREFBa0Q7QUFtQnZGLE1BQU1DLHVCQUF1QixJQUFJQztBQXVDakMsT0FBTyxNQUFNQyxlQUFlLENBQzFCQyxZQUNBQyxNQUNBQztJQUVBLE9BQU9GO1FBQ0wsS0FBSztZQUNILE9BQU9wQixxQkFBcUJxQixNQUFNQztRQUVwQyxLQUFLO1lBQ0gsT0FBT3JCLG1CQUFtQm9CLE1BQU1DO1FBRWxDLEtBQUs7WUFDSCxPQUFPcEIsbUJBQW1CbUIsTUFBTUM7UUFFbEMsS0FBSztZQUNILE9BQU9uQixtQkFBbUJrQixNQUFNQztRQUVsQyxLQUFLO1lBQ0gsT0FBT2xCLHNCQUFzQmlCLE1BQU1DO1FBRXJDLEtBQUs7WUFDSCxPQUFPakIscUJBQXFCZ0IsTUFBTUM7UUFFcEMsS0FBSztZQUNILE9BQU9oQix3QkFBd0JlLE1BQU1DO1FBRXZDLEtBQUs7WUFDSCxPQUFPZixrQkFBa0JjLE1BQU1DO1FBRWpDLEtBQUs7WUFDSCxPQUFPZCxxQkFBcUJhLE1BQU1DO1FBRXBDLEtBQUs7WUFDSCxPQUFPYixzQkFBc0JZLE1BQU1DO1FBRXJDLEtBQUs7WUFDSCxPQUFPWixpQkFBaUJXLE1BQU1DO1FBRWhDLEtBQUs7WUFDSCxPQUFPWCwwQkFBMEJVO1FBRW5DLEtBQUs7WUFDSCxPQUFPVCxpQkFBaUJTLE1BQU1DO1FBRWhDLEtBQUs7WUFDSCxPQUFPVCx5QkFBeUJRLE1BQU1DO1FBRXhDLEtBQUs7WUFDSCxPQUFPUixrQkFBa0JPLE1BQU1DO1FBRWpDLEtBQUs7WUFDSCxPQUFPUCxtQkFBbUJNLE1BQU1DO1FBRWxDLEtBQUs7WUFDSCxJQUFHLENBQUNMLHFCQUFxQk0sR0FBRyxDQUFDRixPQUFPO2dCQUNsQ0oscUJBQXFCTyxHQUFHLENBQUNILE1BQU1MLHVCQUF1Qks7WUFDeEQ7WUFFQSxPQUFPSixxQkFBcUJRLEdBQUcsQ0FBQ0o7UUFFbEM7WUFDRSxNQUFNLElBQUlLLE1BQU0sQ0FBQyxxQkFBcUIsRUFBRU4sWUFBWTtJQUN4RDtBQUNGLEVBQUU7QUFFRixPQUFPLE1BQU1PLGdCQUFnQixDQUMzQkMsYUFDQVAsTUFDQUM7SUFFQSxNQUFNTyxVQUFxRSxDQUFDO0lBRTVFRCxZQUFZRSxPQUFPLENBQUMsQ0FBQ0M7UUFDbkJGLE9BQU8sQ0FBQ0UsS0FBSyxHQUFHWixhQUFhWSxNQUFNVixNQUFNQyxTQUFTLENBQUNTLEtBQUs7SUFDMUQ7SUFFQSxPQUFPRjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1HLG1CQUFtQixDQUM5QlgsTUFDQUM7SUFFQSxNQUFNVyxpQkFBK0I7UUFDbkM7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtLQUNEO0lBRUQsT0FBT04sY0FBY00sZ0JBQWdCWixNQUFNQztBQUM3QyxFQUFFIn0=
|
package/lib/utils/api.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface ApiOptions {
|
|
|
4
4
|
readonly onSuccess?: (data: any) => Promise<FluxAction>;
|
|
5
5
|
readonly variables?: Record<string, unknown>;
|
|
6
6
|
}
|
|
7
|
-
export type ReaktorDbCollection = 'apps' | 'conversations' | 'files' | 'groups' | 'images' | 'locations' | 'messages' | 'notifications' | 'payments' | 'posts' | '
|
|
7
|
+
export type ReaktorDbCollection = 'apps' | 'connections' | 'contents' | 'conversations' | 'events' | 'files' | 'groups' | 'images' | 'locations' | 'messages' | 'notifications' | 'payments' | 'permissions' | 'posts' | 'personas' | 'reactions' | 'subscriptions' | 'tags' | 'translations' | 'users' | 'videos';
|
|
8
8
|
export interface ApiQueryVariableType {
|
|
9
9
|
readonly type: string;
|
|
10
10
|
readonly value: unknown;
|
|
@@ -35,9 +35,10 @@ export declare const createMutation: (name: string, dataType: ReaktorDbCollectio
|
|
|
35
35
|
query: string;
|
|
36
36
|
variables: Record<string, unknown>;
|
|
37
37
|
};
|
|
38
|
-
export declare const appQuery: (flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<
|
|
39
|
-
export declare const appMutation: (flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<
|
|
40
|
-
export declare const publicQuery: (flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<
|
|
38
|
+
export declare const appQuery: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
|
|
39
|
+
export declare const appMutation: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
|
|
40
|
+
export declare const publicQuery: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
|
|
41
41
|
export declare const publicMutation: <T>(flux: FluxFramework, name: string, dataType: ReaktorDbCollection, queryVariables: ApiQueryVariables, returnProperties: string[], options?: ApiOptions) => Promise<T>;
|
|
42
42
|
export declare const uploadImage: (flux: FluxFramework, image: any, options?: HunterOptionsType) => Promise<ApiResultsType>;
|
|
43
43
|
export declare const refreshSession: (flux: FluxFramework, token?: string, expires?: number) => Promise<FluxAction | null>;
|
|
44
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/api.js
CHANGED
|
@@ -1,7 +1,253 @@
|
|
|
1
|
-
import{ApiError
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ApiError, graphqlQuery, post } from '@nlabs/rip-hunter';
|
|
2
|
+
import { camelCase, isEmpty, upperFirst } from '@nlabs/utils';
|
|
3
|
+
import { APP_CONSTANTS } from '../stores/appStore.js';
|
|
4
|
+
import { USER_CONSTANTS } from '../stores/userStore.js';
|
|
5
|
+
import { getConfigFromFlux } from './configUtils.js';
|
|
6
|
+
import { clearPersistedSession, getRefreshWindowMinutes, hydrateSessionFromStorage, parseJwtExpiryMs, storeSession } from './session.js';
|
|
7
|
+
const DEFAULT_REFRESH_WINDOW_MINUTES = 5;
|
|
8
|
+
const DEFAULT_SESSION_MAX_MINUTES = 15;
|
|
9
|
+
const getMinutesUntil = (expiresAt)=>Math.round((expiresAt - Date.now()) / (1000 * 60));
|
|
10
|
+
const clearInvalidSessionState = async (flux)=>{
|
|
11
|
+
await clearPersistedSession(flux);
|
|
12
|
+
await flux.clearAppData();
|
|
13
|
+
await flux.dispatch({
|
|
14
|
+
session: {},
|
|
15
|
+
type: USER_CONSTANTS.SIGN_OUT_SUCCESS
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
export const getGraphql = async (flux, url, authenticate, query, options)=>{
|
|
19
|
+
try {
|
|
20
|
+
const { onSuccess } = options;
|
|
21
|
+
const retry = {
|
|
22
|
+
query,
|
|
23
|
+
responseMethod: onSuccess || (()=>{})
|
|
24
|
+
};
|
|
25
|
+
const networkType = flux.getState('app.networkType');
|
|
26
|
+
if (networkType === 'none') {
|
|
27
|
+
return flux.dispatch({
|
|
28
|
+
retry,
|
|
29
|
+
type: APP_CONSTANTS.API_NETWORK_ERROR
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const stateSession = flux.getState('user.session') || {};
|
|
33
|
+
let token;
|
|
34
|
+
if (authenticate) {
|
|
35
|
+
const hydratedSession = stateSession.token ? stateSession : await hydrateSessionFromStorage(flux);
|
|
36
|
+
const { expires: authExpires = 0, issued: authIssued = 0, token: hydratedToken } = hydratedSession || {};
|
|
37
|
+
token = hydratedToken || stateSession.token;
|
|
38
|
+
if (!token) {
|
|
39
|
+
throw new ApiError([
|
|
40
|
+
'invalid_session'
|
|
41
|
+
], 'invalid_session');
|
|
42
|
+
}
|
|
43
|
+
const tokenExpiresAt = parseJwtExpiryMs(token);
|
|
44
|
+
if (tokenExpiresAt > 0 && Date.now() >= tokenExpiresAt) {
|
|
45
|
+
throw new ApiError([
|
|
46
|
+
'expired_session'
|
|
47
|
+
], 'expired_session');
|
|
48
|
+
}
|
|
49
|
+
const config = getConfigFromFlux(flux);
|
|
50
|
+
const minutesUntilExpiry = getMinutesUntil(Number(authExpires || 0));
|
|
51
|
+
const sessionLifetimeMinutes = Math.round((authExpires - authIssued) / (1000 * 60));
|
|
52
|
+
const refreshWindowMinutes = getRefreshWindowMinutes(sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES, config.app?.session || {});
|
|
53
|
+
const refreshExpiresMinutes = Math.max(1, Number(config.app?.session?.maxMinutes || sessionLifetimeMinutes || DEFAULT_SESSION_MAX_MINUTES));
|
|
54
|
+
if (minutesUntilExpiry > 0 && minutesUntilExpiry <= refreshWindowMinutes) {
|
|
55
|
+
const { session: updatedSession = {} } = await refreshSession(flux, token, refreshExpiresMinutes) || {};
|
|
56
|
+
const { token: newToken } = updatedSession || {};
|
|
57
|
+
if (!newToken) {
|
|
58
|
+
throw new ApiError([
|
|
59
|
+
'invalid_session'
|
|
60
|
+
], 'invalid_session');
|
|
61
|
+
}
|
|
62
|
+
token = newToken;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return graphqlQuery(url, query, {
|
|
66
|
+
token: token || ''
|
|
67
|
+
}).then(async (results)=>{
|
|
68
|
+
await flux.dispatch({
|
|
69
|
+
type: APP_CONSTANTS.API_NETWORK_SUCCESS
|
|
70
|
+
});
|
|
71
|
+
return results;
|
|
72
|
+
}).then((data)=>onSuccess ? onSuccess(data) : data).catch(async (error)=>{
|
|
73
|
+
const { errors = [] } = error;
|
|
74
|
+
if (onSuccess && errors.includes('network_error')) {
|
|
75
|
+
await flux.dispatch({
|
|
76
|
+
retry,
|
|
77
|
+
type: APP_CONSTANTS.API_NETWORK_ERROR
|
|
78
|
+
});
|
|
79
|
+
return Promise.reject(error);
|
|
80
|
+
} else if (errors.includes('invalid_session') || errors.includes('expired_session')) {
|
|
81
|
+
await clearInvalidSessionState(flux);
|
|
82
|
+
return Promise.resolve({});
|
|
83
|
+
}
|
|
84
|
+
return Promise.reject(error);
|
|
85
|
+
});
|
|
86
|
+
} catch (error) {
|
|
87
|
+
const errors = error instanceof ApiError ? error.errors : [];
|
|
88
|
+
const message = error instanceof Error ? error.message : '';
|
|
89
|
+
if (errors.includes('invalid_session') || errors.includes('expired_session') || message === 'invalid_session' || message === 'expired_session') {
|
|
90
|
+
await clearInvalidSessionState(flux);
|
|
91
|
+
return {};
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
5
94
|
}
|
|
6
|
-
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL2FwaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtBcGlFcnJvciwgZ3JhcGhxbFF1ZXJ5LCBwb3N0fSBmcm9tICdAbmxhYnMvcmlwLWh1bnRlcic7XG5pbXBvcnQge2NhbWVsQ2FzZSwgaXNFbXB0eSwgdXBwZXJGaXJzdH0gZnJvbSAnQG5sYWJzL3V0aWxzJztcbmltcG9ydCB7RGF0ZVRpbWV9IGZyb20gJ2x1eG9uJztcblxuaW1wb3J0IHtDb25maWd9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge0FQUF9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy9hcHBTdG9yZSc7XG5pbXBvcnQge1VTRVJfQ09OU1RBTlRTfSBmcm9tICcuLi9zdG9yZXMvdXNlclN0b3JlJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVha3RvckRiQ29sbGVjdGlvbiA9XG4gICdhcHBzJyB8XG4gICdjb252ZXJzYXRpb25zJyB8XG4gICdmaWxlcycgfFxuICAnZ3JvdXBzJyB8XG4gICdpbWFnZXMnIHxcbiAgJ2xvY2F0aW9ucycgfFxuICAnbWVzc2FnZXMnIHxcbiAgJ25vdGlmaWNhdGlvbnMnIHxcbiAgJ3BheW1lbnRzJyB8XG4gICdwb3N0cycgfFxuICAncHJvZmlsZXMnIHxcbiAgJ3JlYWN0aW9ucycgfFxuICAnc3Vic2NyaXB0aW9ucycgfFxuICAndGFncycgfFxuICAndXNlcnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWVyeVZhcmlhYmxlcyB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEFwaVF1ZXJ5VmFyaWFibGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeVR5cGUge1xuICByZWFkb25seSBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlc3BvbnNlTWV0aG9kOiAocmVzdWx0czogQXBpUmVzdWx0c1R5cGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblR5cGUge1xuICByZWFkb25seSBleHBpcmVzPzogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0R3JhcGhxbCA9IGFzeW5jIChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgdXJsOiBzdHJpbmcsXG4gIGF1dGhlbnRpY2F0ZTogYm9vbGVhbixcbiAgcXVlcnk6IEh1bnRlclF1ZXJ5VHlwZSB8IEh1bnRlclF1ZXJ5VHlwZVtdLFxuICBvcHRpb25zOiBBcGlPcHRpb25zXG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IHtvblN1Y2Nlc3N9ID0gb3B0aW9ucztcbiAgY29uc3QgcmV0cnk6IFJldHJ5VHlwZSA9IHtxdWVyeSwgcmVzcG9uc2VNZXRob2Q6IG9uU3VjY2VzcyB8fCAoKCkgPT4ge30pfTtcbiAgY29uc3QgbmV0d29ya1R5cGU6IHN0cmluZyA9IGZsdXguZ2V0U3RhdGUoJ2FwcC5uZXR3b3JrVHlwZScpIGFzIHN0cmluZztcblxuICBpZihuZXR3b3JrVHlwZSA9PT0gJ25vbmUnKSB7XG4gICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3JldHJ5LCB0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX0VSUk9SfSk7XG4gIH1cblxuICBjb25zdCBub3c6IG51bWJlciA9IERhdGUubm93KCk7XG4gIGNvbnN0IHtleHBpcmVzID0gbm93LCBpc3N1ZWQ6IF9pc3N1ZWQgPSBub3csIHRva2VuOiBjdXJyZW50VG9rZW59OiBTZXNzaW9uVHlwZSA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nKSB8fCB7fSkgYXMgU2Vzc2lvblR5cGU7XG4gIGxldCB0b2tlbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8vIGNvbnNvbGUubG9nKCdnZXRHcmFwaHFsOjphdXRoZW50aWNhdGUnLCB7YXV0aGVudGljYXRlLCBjdXJyZW50VG9rZW59KTtcbiAgaWYoYXV0aGVudGljYXRlKSB7XG4gICAgY29uc3Qgbm93RGF0ZTogRGF0ZVRpbWUgPSBEYXRlVGltZS5sb2NhbCgpO1xuICAgIGNvbnN0IGV4cGlyZXNEYXRlOiBEYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoZXhwaXJlcyk7XG4gICAgY29uc3QgZXhwaXJlZERpZmY6IG51bWJlciA9IE1hdGgucm91bmQoZXhwaXJlc0RhdGUuZGlmZihub3dEYXRlLCAnbWludXRlcycpLnRvT2JqZWN0KCkubWludXRlcyk7XG4gICAgdG9rZW4gPSBjdXJyZW50VG9rZW47XG5cbiAgICAvLyBjb25zb2xlLmxvZygnZ2V0R3JhcGhxbDo6ZXhwaXJlZERpZmYnLCBleHBpcmVkRGlmZik7XG4gICAgaWYoZXhwaXJlZERpZmYgPiAwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uTWluOiBudW1iZXIgPSBDb25maWcuZ2V0KCdhcHAuc2Vzc2lvbi5taW5NaW51dGVzJywgMCk7XG4gICAgICBjb25zdCBpc3N1ZWREYXRlOiBEYXRlVGltZSA9IERhdGVUaW1lLmZyb21NaWxsaXMoZXhwaXJlcyk7XG4gICAgICBjb25zdCBpc3N1ZWREaWZmOiBudW1iZXIgPSBNYXRoLnJvdW5kKG5vd0RhdGUuZGlmZihpc3N1ZWREYXRlLCAnbWludXRlcycpLnRvT2JqZWN0KCkubWludXRlcyk7XG5cbiAgICAgIC8vIGNvbnNvbGUubG9nKHtpc3N1ZWQsIGlzc3VlZERpZmYsIHNlc3Npb25NaW59KTtcbiAgICAgIGlmKGlzc3VlZERpZmYgPj0gc2Vzc2lvbk1pbikge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgc2Vzc2lvbjogdXBkYXRlZFNlc3Npb24gPSB7fVxuICAgICAgICB9OiBBcGlSZXN1bHRzVHlwZSA9IChhd2FpdCByZWZyZXNoU2Vzc2lvbihmbHV4LCBjdXJyZW50VG9rZW4sIHNlc3Npb25NaW4pKSB8fCB7fTtcbiAgICAgICAgY29uc3Qge3Rva2VuOiBuZXdUb2tlbn06IFNlc3Npb25UeXBlID0gKHVwZGF0ZWRTZXNzaW9uIHx8IHt9KTtcblxuICAgICAgICAvLyBjb25zb2xlLmxvZyh7bmV3VG9rZW59KTtcbiAgICAgICAgaWYoIW5ld1Rva2VuKSB7XG4gICAgICAgICAgUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFsnaW52YWxpZF9zZXNzaW9uJ10sICdpbnZhbGlkX3Nlc3Npb24nKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbiA9IG5ld1Rva2VuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIGNvbnNvbGUubG9nKCdnZXRHcmFwaHFsOjpxdWVyeScsIHtxdWVyeSwgdG9rZW4sIHVybH0pO1xuICByZXR1cm4gZ3JhcGhxbFF1ZXJ5KHVybCwgcXVlcnksIHt0b2tlbjogdG9rZW4gfHwgJyd9KVxuICAgIC50aGVuKGFzeW5jIChyZXN1bHRzKSA9PiB7XG4gICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcbiAgICAgIC8vIGNvbnNvbGUubG9nKCdHcmFwaHFsQXBpOjpyZXN1bHRzJywgcmVzdWx0cyk7XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9KVxuICAgIC50aGVuKChkYXRhKSA9PiAob25TdWNjZXNzID8gb25TdWNjZXNzKGRhdGEpIDogZGF0YSkpXG4gICAgLmNhdGNoKGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgY29uc3Qge2Vycm9ycyA9IFtdfSA9IGVycm9yO1xuXG4gICAgICAvLyBjb25zb2xlLmxvZyh7ZXJyb3J9KTtcbiAgICAgIGlmKG9uU3VjY2VzcyAmJiBlcnJvcnMuaW5jbHVkZXMoJ25ldHdvcmtfZXJyb3InKSkge1xuICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtyZXRyeSwgdHlwZTogQVBQX0NPTlNUQU5UUy5BUElfTkVUV09SS19FUlJPUn0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgfSBlbHNlIGlmKGVycm9ycy5pbmNsdWRlcygnaW52YWxpZF9zZXNzaW9uJykpIHtcbiAgICAgICAgYXdhaXQgZmx1eC5jbGVhckFwcERhdGEoKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7fSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlUXVlcnkgPSAoXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHZhcmlhYmxlczogQXBpUXVlcnlWYXJpYWJsZXMgPSB7fSxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10gPSBbXSxcbiAgdHlwZSA9ICdxdWVyeSdcbikgPT4ge1xuICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHsuLi52YXJpYWJsZXMgfHwge319O1xuICBjb25zdCB2YXJpYWJsZUtleXMgPSBPYmplY3Qua2V5cyhxdWVyeVZhcmlhYmxlcyk7XG4gIGNvbnN0IHF1ZXJ5TmFtZSA9IG5hbWUucmVwbGFjZSgvIC9nLCAnJyk7XG4gIGNvbnN0IHF1ZXJ5ID0gYCR7dHlwZX0gJHt1cHBlckZpcnN0KGNhbWVsQ2FzZShgJHtkYXRhVHlwZX1fJHtxdWVyeU5hbWV9YCkpfSR7XG4gICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgOiAnJ1xuICB9IHtcbiAgICAke2RhdGFUeXBlfSB7XG4gICAgICAke2NhbWVsQ2FzZShxdWVyeU5hbWUpfSR7XG4gICAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgOiAnJ1xuICAgICAgfVxuICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgfVxuICB9YDtcblxuICBjb25zdCB1cGRhdGVkVmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHZhcmlhYmxlS2V5cy5yZWR1Y2UoKHF1ZXJ5RGF0YSwga2V5KSA9PiB7XG4gICAgcXVlcnlEYXRhW2tleV0gPSBxdWVyeVZhcmlhYmxlc1trZXldLnZhbHVlO1xuICAgIHJldHVybiBxdWVyeURhdGE7XG4gIH0sIHt9KTtcblxuICByZXR1cm4ge3F1ZXJ5LCB2YXJpYWJsZXM6IHVwZGF0ZWRWYXJpYWJsZXN9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU11dGF0aW9uID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW11cbikgPT4gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcywgJ211dGF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBhcHBRdWVyeSA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBDb25maWcuZ2V0KCdhcHAuYXBpLnVybCcpO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBNdXRhdGlvbiA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBDb25maWcuZ2V0KCdhcHAuYXBpLnVybCcpO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBhcHBVcmwsIHRydWUsIHF1ZXJ5LCBvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNRdWVyeSA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPEFwaVJlc3VsdHNUeXBlPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBDb25maWcuZ2V0KCdhcHAuYXBpLnB1YmxpYycpO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBDb25maWcuZ2V0KCdhcHAuYXBpLnB1YmxpYycpO1xuICByZXR1cm4gZ2V0R3JhcGhxbChmbHV4LCBwdWJsaWNVcmwsIGZhbHNlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGxvYWRJbWFnZSA9IChcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgaW1hZ2UsXG4gIG9wdGlvbnM6IEh1bnRlck9wdGlvbnNUeXBlID0ge31cbik6IFByb21pc2U8QXBpUmVzdWx0c1R5cGU+ID0+IHtcbiAgY29uc3QgdG9rZW4gPSBmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24udG9rZW4nKTtcbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuICBjb25zdCB1cGxvYWRJbWFnZVVybDogc3RyaW5nID0gQ29uZmlnLmdldCgnYXBwLmFwaS51cGxvYWRJbWFnZScpO1xuICByZXR1cm4gcG9zdCh1cGxvYWRJbWFnZVVybCwgaW1hZ2UsIHtoZWFkZXJzLCAuLi5vcHRpb25zfSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFNlc3Npb24gPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHRva2VuPzogc3RyaW5nLFxuICBleHBpcmVzOiBudW1iZXIgPSAxNVxuKTogUHJvbWlzZTxGbHV4QWN0aW9uIHwgbnVsbD4gPT4ge1xuICBjb25zdCByZWZyZXNoVG9rZW4gPSBpc0VtcHR5KHRva2VuKSA/IHRva2VuIDogZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJyk7XG5cbiAgaWYoaXNFbXB0eShyZWZyZXNoVG9rZW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0ge1xuICAgICAgZXhwaXJlczoge1xuICAgICAgICB0eXBlOiAnSW50JyxcbiAgICAgICAgdmFsdWU6IGV4cGlyZXNcbiAgICAgIH0sXG4gICAgICB0b2tlbjoge1xuICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgIHZhbHVlOiB0b2tlblxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25TdWNjZXNzID0gKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IHtyZWZyZXNoU2Vzc2lvbjogc2Vzc2lvbkRhdGEgPSB7fX0gPSBkYXRhO1xuICAgICAgcmV0dXJuIGZsdXguZGlzcGF0Y2goe3Nlc3Npb246IHNlc3Npb25EYXRhLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5VUERBVEVfU0VTU0lPTl9TVUNDRVNTfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBhd2FpdCBwdWJsaWNNdXRhdGlvbihmbHV4LCAncmVmcmVzaFNlc3Npb24nLCAndXNlcnMnLCBxdWVyeVZhcmlhYmxlcywgWydleHBpcmVzJywgJ2lzc3VlZCcsICd0b2tlbiddLCB7XG4gICAgICBvblN1Y2Nlc3NcbiAgICB9KTtcbiAgfSBjYXRjaChlcnJvcikge1xuICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBVU0VSX0NPTlNUQU5UUy5HRVRfU0VTU0lPTl9FUlJPUn0pO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLE9BQVEsWUFBQUEsRUFBVSxnQkFBQUMsRUFBYyxRQUFBQyxNQUFXLG9CQUMzQyxPQUFRLGFBQUFDLEVBQVcsV0FBQUMsRUFBUyxjQUFBQyxNQUFpQixlQUM3QyxPQUFRLFlBQUFDLE1BQWUsUUFFdkIsT0FBUSxVQUFBQyxNQUFhLFlBQ3JCLE9BQVEsaUJBQUFDLE1BQW9CLHFCQUM1QixPQUFRLGtCQUFBQyxNQUFxQixzQkFxRHRCLE1BQU1DLEVBQWEsTUFDeEJDLEVBQ0FDLEVBQ0FDLEVBQ0FDLEVBQ0FDLElBQzRCLENBQzVCLEtBQU0s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QUMzQyxPQUFPckIsRUFBSyxTQUFTLENBQUMsUUFBU2dELEVBQWEsS0FBTWxELEVBQWUsc0JBQXNCLENBQUMsQ0FDMUYsQ0FJQSxDQUFDLENBQ0gsT0FBUXdCLEVBQU8sQ0FDYixPQUFBdEIsRUFBSyxTQUFTLENBQUMsTUFBQXNCLEVBQU8sS0FBTXhCLEVBQWUsaUJBQWlCLENBQUMsRUFDdEQsSUFDVCxDQUNGIiwKICAibmFtZXMiOiBbIkFwaUVycm9yIiwgImdyYXBocWxRdWVyeSIsICJwb3N0IiwgImNhbWVsQ2FzZSIsICJpc0VtcHR5IiwgInVwcGVyRmlyc3QiLCAiRGF0ZVRpbWUiLCAiQ29uZmlnIiwgIkFQUF9DT05TVEFOVFMiLCAiVVNFUl9DT05TVEFOVFMiLCAiZ2V0R3JhcGhxbCIsICJmbHV4IiwgInVybCIsICJhdXRoZW50aWNhdGUiLCAicXVlcnkiLCAib3B0aW9ucyIsICJvblN1Y2Nlc3MiLCAicmV0cnkiLCAibm93IiwgImV4cGlyZXMiLCAiX2lzc3VlZCIsICJjdXJyZW50VG9rZW4iLCAidG9rZW4iLCAibm93RGF0ZSIsICJleHBpcmVzRGF0ZSIsICJleHBpcmVkRGlmZiIsICJzZXNzaW9uTWluIiwgImlzc3VlZERhdGUiLCAidXBkYXRlZFNlc3Npb24iLCAicmVmcmVzaFNlc3Npb24iLCAibmV3VG9rZW4iLCAicmVzdWx0cyIsICJkYXRhIiwgImVycm9yIiwgImVycm9ycyIsICJjcmVhdGVRdWVyeSIsICJuYW1lIiwgImRhdGFUeXBlIiwgInZhcmlhYmxlcyIsICJyZXR1cm5Qcm9wZXJ0aWVzIiwgInR5cGUiLCAicXVlcnlWYXJpYWJsZXMiLCAidmFyaWFibGVLZXlzIiwgInF1ZXJ5TmFtZSIsICJrZXkiLCAidXBkYXRlZFZhcmlhYmxlcyIsICJxdWVyeURhdGEiLCAiY3JlYXRlTXV0YXRpb24iLCAiYXBwUXVlcnkiLCAiYXBwVXJsIiwgImFwcE11dGF0aW9uIiwgInB1YmxpY1F1ZXJ5IiwgInB1YmxpY1VybCIsICJwdWJsaWNNdXRhdGlvbiIsICJ1cGxvYWRJbWFnZSIsICJpbWFnZSIsICJoZWFkZXJzIiwgInVwbG9hZEltYWdlVXJsIiwgInJlZnJlc2hUb2tlbiIsICJzZXNzaW9uRGF0YSJdCn0K
|
|
95
|
+
};
|
|
96
|
+
export const createQuery = (name, dataType, variables = {}, returnProperties = [], type = 'query')=>{
|
|
97
|
+
const queryVariables = {
|
|
98
|
+
...variables || {}
|
|
99
|
+
};
|
|
100
|
+
const variableKeys = Object.keys(queryVariables);
|
|
101
|
+
const queryName = name.replace(/ /g, '');
|
|
102
|
+
let query;
|
|
103
|
+
if (type === 'mutation') {
|
|
104
|
+
const mutationName = upperFirst(camelCase(dataType)) + upperFirst(camelCase(queryName));
|
|
105
|
+
query = `${type} ${mutationName}${variableKeys.length ? `(${variableKeys.map((key)=>`$${key}: ${queryVariables[key].type}`).join(', ')})` : ''} {
|
|
106
|
+
${dataType} {
|
|
107
|
+
${camelCase(queryName)}${variableKeys.length ? `(${variableKeys.map((key)=>`${key}: $${key}`).join(', ')})` : ''}
|
|
108
|
+
${returnProperties?.length ? `{${returnProperties.join(', ')}}` : ''}
|
|
109
|
+
}
|
|
110
|
+
}`;
|
|
111
|
+
} else {
|
|
112
|
+
query = `${type} ${queryName}${variableKeys.length ? `(${variableKeys.map((key)=>`$${key}: ${queryVariables[key].type}`).join(', ')})` : ''} {
|
|
113
|
+
${dataType} {
|
|
114
|
+
${camelCase(queryName)}${variableKeys.length ? `(${variableKeys.map((key)=>`${key}: $${key}`).join(', ')})` : ''}
|
|
115
|
+
${returnProperties?.length ? `{${returnProperties.join(', ')}}` : ''}
|
|
116
|
+
}
|
|
117
|
+
}`;
|
|
118
|
+
}
|
|
119
|
+
const updatedVariables = variableKeys.reduce((queryData, key)=>{
|
|
120
|
+
queryData[key] = queryVariables[key].value;
|
|
121
|
+
return queryData;
|
|
122
|
+
}, {});
|
|
123
|
+
return {
|
|
124
|
+
query,
|
|
125
|
+
variables: updatedVariables
|
|
126
|
+
};
|
|
127
|
+
};
|
|
128
|
+
export const createMutation = (name, dataType, variables = {}, returnProperties = [])=>createQuery(name, dataType, variables, returnProperties, 'mutation');
|
|
129
|
+
export const appQuery = (flux, name, dataType, queryVariables, returnProperties, options = {})=>{
|
|
130
|
+
const query = createQuery(name, dataType, queryVariables, returnProperties);
|
|
131
|
+
const config = getConfigFromFlux(flux);
|
|
132
|
+
const appUrl = config.app?.api?.url || '';
|
|
133
|
+
return getGraphql(flux, appUrl, true, query, options);
|
|
134
|
+
};
|
|
135
|
+
export const appMutation = (flux, name, dataType, queryVariables, returnProperties, options = {})=>{
|
|
136
|
+
const query = createMutation(name, dataType, queryVariables, returnProperties);
|
|
137
|
+
const config = getConfigFromFlux(flux);
|
|
138
|
+
const appUrl = config.app?.api?.url || '';
|
|
139
|
+
return getGraphql(flux, appUrl, true, query, options);
|
|
140
|
+
};
|
|
141
|
+
export const publicQuery = (flux, name, dataType, queryVariables, returnProperties, options = {})=>{
|
|
142
|
+
const query = createQuery(name, dataType, queryVariables, returnProperties);
|
|
143
|
+
const config = getConfigFromFlux(flux);
|
|
144
|
+
const publicUrl = config.app?.api?.public || '';
|
|
145
|
+
return getGraphql(flux, publicUrl, false, query, options);
|
|
146
|
+
};
|
|
147
|
+
export const publicMutation = (flux, name, dataType, queryVariables, returnProperties, options = {})=>{
|
|
148
|
+
const query = createMutation(name, dataType, queryVariables, returnProperties);
|
|
149
|
+
const config = getConfigFromFlux(flux);
|
|
150
|
+
const publicUrl = config.app?.api?.public || '';
|
|
151
|
+
return getGraphql(flux, publicUrl, false, query, options);
|
|
152
|
+
};
|
|
153
|
+
export const uploadImage = (flux, image, options = {})=>{
|
|
154
|
+
const config = getConfigFromFlux(flux);
|
|
155
|
+
const uploadImageUrl = config.app?.api?.uploadImage || '';
|
|
156
|
+
const token = flux.getState('user.session.token');
|
|
157
|
+
if (isEmpty(uploadImageUrl)) {
|
|
158
|
+
return Promise.reject(new ApiError([
|
|
159
|
+
'invalid_url'
|
|
160
|
+
], 'upload_endpoint_not_configured'));
|
|
161
|
+
}
|
|
162
|
+
if (isEmpty(token)) {
|
|
163
|
+
return Promise.reject(new ApiError([
|
|
164
|
+
'invalid_session'
|
|
165
|
+
], 'missing_auth_token'));
|
|
166
|
+
}
|
|
167
|
+
const headers = new Headers();
|
|
168
|
+
headers.set('Authorization', `Bearer ${token}`);
|
|
169
|
+
if (typeof FormData !== 'undefined' && image instanceof FormData) {
|
|
170
|
+
headers.set('Accept', 'application/json');
|
|
171
|
+
return fetch(uploadImageUrl, {
|
|
172
|
+
body: image,
|
|
173
|
+
headers,
|
|
174
|
+
method: 'POST'
|
|
175
|
+
}).then(async (response)=>{
|
|
176
|
+
const responseType = response.headers.get('content-type') || '';
|
|
177
|
+
const data = responseType.includes('application/json') ? await response.json() : await response.text();
|
|
178
|
+
if (!response.ok) {
|
|
179
|
+
const message = typeof data === 'object' && data && 'error' in data ? String(data.error || response.statusText) : String(data || response.statusText);
|
|
180
|
+
throw new ApiError([
|
|
181
|
+
'upload_error'
|
|
182
|
+
], message);
|
|
183
|
+
}
|
|
184
|
+
return data;
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return post(uploadImageUrl, image, {
|
|
188
|
+
headers,
|
|
189
|
+
...options
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
export const refreshSession = async (flux, token, expires)=>{
|
|
193
|
+
const refreshToken = isEmpty(token) ? flux.getState('user.session.token') : token;
|
|
194
|
+
if (isEmpty(refreshToken)) {
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
const tokenExpiresAt = parseJwtExpiryMs(String(refreshToken));
|
|
198
|
+
if (tokenExpiresAt > 0 && Date.now() >= tokenExpiresAt) {
|
|
199
|
+
const error = new Error('expired_session');
|
|
200
|
+
await clearInvalidSessionState(flux);
|
|
201
|
+
flux.dispatch({
|
|
202
|
+
error,
|
|
203
|
+
type: USER_CONSTANTS.GET_SESSION_ERROR
|
|
204
|
+
});
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
const config = getConfigFromFlux(flux);
|
|
209
|
+
const requestedExpires = Math.max(1, Number(expires || config.app?.session?.maxMinutes || DEFAULT_SESSION_MAX_MINUTES));
|
|
210
|
+
const queryVariables = {
|
|
211
|
+
expires: {
|
|
212
|
+
type: 'Int',
|
|
213
|
+
value: requestedExpires
|
|
214
|
+
},
|
|
215
|
+
token: {
|
|
216
|
+
type: 'String!',
|
|
217
|
+
value: refreshToken
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
const onSuccess = async (data = {})=>{
|
|
221
|
+
const rawSessionData = data?.users?.refreshSession;
|
|
222
|
+
const sessionData = rawSessionData && typeof rawSessionData === 'object' ? rawSessionData : {};
|
|
223
|
+
const currentSession = flux.getState('user.session', {}) || {};
|
|
224
|
+
const mergedSession = await storeSession(flux, {
|
|
225
|
+
...currentSession,
|
|
226
|
+
...sessionData
|
|
227
|
+
});
|
|
228
|
+
return flux.dispatch({
|
|
229
|
+
session: mergedSession,
|
|
230
|
+
type: USER_CONSTANTS.UPDATE_SESSION_SUCCESS
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
return await publicMutation(flux, 'refreshSession', 'users', queryVariables, [
|
|
234
|
+
'expires',
|
|
235
|
+
'issued',
|
|
236
|
+
'token'
|
|
237
|
+
], {
|
|
238
|
+
onSuccess
|
|
239
|
+
});
|
|
240
|
+
} catch (error) {
|
|
241
|
+
const errorMessage = error instanceof Error ? error.message : '';
|
|
242
|
+
if (errorMessage === 'invalid_session' || errorMessage === 'expired_session') {
|
|
243
|
+
await clearInvalidSessionState(flux);
|
|
244
|
+
}
|
|
245
|
+
flux.dispatch({
|
|
246
|
+
error,
|
|
247
|
+
type: USER_CONSTANTS.GET_SESSION_ERROR
|
|
248
|
+
});
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
|
|
253
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvdXRpbHMvYXBpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXBpRXJyb3IsIGdyYXBocWxRdWVyeSwgcG9zdH0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuaW1wb3J0IHtjYW1lbENhc2UsIGlzRW1wdHksIHVwcGVyRmlyc3R9IGZyb20gJ0BubGFicy91dGlscyc7XG5cbmltcG9ydCB7QVBQX0NPTlNUQU5UU30gZnJvbSAnLi4vc3RvcmVzL2FwcFN0b3JlLmpzJztcbmltcG9ydCB7VVNFUl9DT05TVEFOVFN9IGZyb20gJy4uL3N0b3Jlcy91c2VyU3RvcmUuanMnO1xuaW1wb3J0IHtnZXRDb25maWdGcm9tRmx1eH0gZnJvbSAnLi9jb25maWdVdGlscy5qcyc7XG5pbXBvcnQge2NsZWFyUGVyc2lzdGVkU2Vzc2lvbiwgZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMsIGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UsIHBhcnNlSnd0RXhwaXJ5TXMsIHN0b3JlU2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uLmpzJztcblxuaW1wb3J0IHR5cGUge0ZsdXhBY3Rpb24sIEZsdXhGcmFtZXdvcmt9IGZyb20gJ0BubGFicy9hcmtoYW1qcyc7XG5pbXBvcnQgdHlwZSB7SHVudGVyT3B0aW9uc1R5cGUsIEh1bnRlclF1ZXJ5VHlwZX0gZnJvbSAnQG5sYWJzL3JpcC1odW50ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaU9wdGlvbnMge1xuICByZWFkb25seSBvblN1Y2Nlc3M/OiAoZGF0YTogYW55KSA9PiBQcm9taXNlPEZsdXhBY3Rpb24+O1xuICByZWFkb25seSB2YXJpYWJsZXM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgUmVha3RvckRiQ29sbGVjdGlvbiA9XG4gICdhcHBzJyB8XG4gICdjb25uZWN0aW9ucycgfFxuICAnY29udGVudHMnIHxcbiAgJ2NvbnZlcnNhdGlvbnMnIHxcbiAgJ2V2ZW50cycgfFxuICAnZmlsZXMnIHxcbiAgJ2dyb3VwcycgfFxuICAnaW1hZ2VzJyB8XG4gICdsb2NhdGlvbnMnIHxcbiAgJ21lc3NhZ2VzJyB8XG4gICdub3RpZmljYXRpb25zJyB8XG4gICdwYXltZW50cycgfFxuICAncGVybWlzc2lvbnMnIHxcbiAgJ3Bvc3RzJyB8XG4gICdwZXJzb25hcycgfFxuICAncmVhY3Rpb25zJyB8XG4gICdzdWJzY3JpcHRpb25zJyB8XG4gICd0YWdzJyB8XG4gICd0cmFuc2xhdGlvbnMnIHxcbiAgJ3VzZXJzJyB8XG4gICd2aWRlb3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVF1ZXJ5VmFyaWFibGVUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlRdWVyeVZhcmlhYmxlcyB7XG4gIHJlYWRvbmx5IFtrZXk6IHN0cmluZ106IEFwaVF1ZXJ5VmFyaWFibGVUeXBlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFwaVJlc3VsdHNUeXBlIHtcbiAgcmVhZG9ubHkgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXRyeVR5cGUge1xuICByZWFkb25seSBxdWVyeTogSHVudGVyUXVlcnlUeXBlIHwgSHVudGVyUXVlcnlUeXBlW107XG4gIHJlYWRvbmx5IHJlc3BvbnNlTWV0aG9kOiAocmVzdWx0czogQXBpUmVzdWx0c1R5cGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblR5cGUge1xuICByZWFkb25seSBleHBpcmVzPzogbnVtYmVyO1xuICByZWFkb25seSBpc3N1ZWQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHRva2VuPzogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHVzZXJuYW1lPzogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMgPSA1O1xuY29uc3QgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTID0gMTU7XG5cbmNvbnN0IGdldE1pbnV0ZXNVbnRpbCA9IChleHBpcmVzQXQ6IG51bWJlcik6IG51bWJlciA9PlxuICBNYXRoLnJvdW5kKChleHBpcmVzQXQgLSBEYXRlLm5vdygpKSAvICgxMDAwICogNjApKTtcblxuY29uc3QgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlID0gYXN5bmMgKGZsdXg6IEZsdXhGcmFtZXdvcmspOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgYXdhaXQgY2xlYXJQZXJzaXN0ZWRTZXNzaW9uKGZsdXgpO1xuICBhd2FpdCBmbHV4LmNsZWFyQXBwRGF0YSgpO1xuICBhd2FpdCBmbHV4LmRpc3BhdGNoKHtzZXNzaW9uOiB7fSwgdHlwZTogVVNFUl9DT05TVEFOVFMuU0lHTl9PVVRfU1VDQ0VTU30pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEdyYXBocWwgPSBhc3luYyAoXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIHVybDogc3RyaW5nLFxuICBhdXRoZW50aWNhdGU6IGJvb2xlYW4sXG4gIHF1ZXJ5OiBIdW50ZXJRdWVyeVR5cGUgfCBIdW50ZXJRdWVyeVR5cGVbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9uc1xuKTogUHJvbWlzZTxBcGlSZXN1bHRzVHlwZT4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHtvblN1Y2Nlc3N9ID0gb3B0aW9ucztcbiAgICBjb25zdCByZXRyeTogUmV0cnlUeXBlID0ge3F1ZXJ5LCByZXNwb25zZU1ldGhvZDogb25TdWNjZXNzIHx8ICgoKSA9PiB7fSl9O1xuICAgIGNvbnN0IG5ldHdvcmtUeXBlOiBzdHJpbmcgPSBmbHV4LmdldFN0YXRlKCdhcHAubmV0d29ya1R5cGUnKSBhcyBzdHJpbmc7XG5cbiAgICBpZihuZXR3b3JrVHlwZSA9PT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7cmV0cnksIHR5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfRVJST1J9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzdGF0ZVNlc3Npb246IFNlc3Npb25UeXBlID0gKGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbicpIHx8IHt9KSBhcyBTZXNzaW9uVHlwZTtcbiAgICBsZXQgdG9rZW46IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIGlmKGF1dGhlbnRpY2F0ZSkge1xuICAgICAgY29uc3QgaHlkcmF0ZWRTZXNzaW9uOiBTZXNzaW9uVHlwZSA9IHN0YXRlU2Vzc2lvbi50b2tlbiA/IHN0YXRlU2Vzc2lvbiA6IGF3YWl0IGh5ZHJhdGVTZXNzaW9uRnJvbVN0b3JhZ2UoZmx1eCk7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGV4cGlyZXM6IGF1dGhFeHBpcmVzID0gMCxcbiAgICAgICAgaXNzdWVkOiBhdXRoSXNzdWVkID0gMCxcbiAgICAgICAgdG9rZW46IGh5ZHJhdGVkVG9rZW5cbiAgICAgIH06IFNlc3Npb25UeXBlID0gaHlkcmF0ZWRTZXNzaW9uIHx8IHt9O1xuICAgICAgdG9rZW4gPSBoeWRyYXRlZFRva2VuIHx8IHN0YXRlU2Vzc2lvbi50b2tlbjtcblxuICAgICAgaWYoIXRva2VuKSB7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuRXhwaXJlc0F0ID0gcGFyc2VKd3RFeHBpcnlNcyh0b2tlbik7XG5cbiAgICAgIGlmKHRva2VuRXhwaXJlc0F0ID4gMCAmJiBEYXRlLm5vdygpID49IHRva2VuRXhwaXJlc0F0KSB7XG4gICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2V4cGlyZWRfc2Vzc2lvbiddLCAnZXhwaXJlZF9zZXNzaW9uJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZ0Zyb21GbHV4KGZsdXgpO1xuICAgICAgY29uc3QgbWludXRlc1VudGlsRXhwaXJ5ID0gZ2V0TWludXRlc1VudGlsKE51bWJlcihhdXRoRXhwaXJlcyB8fCAwKSk7XG4gICAgICBjb25zdCBzZXNzaW9uTGlmZXRpbWVNaW51dGVzID0gTWF0aC5yb3VuZCgoYXV0aEV4cGlyZXMgLSBhdXRoSXNzdWVkKSAvICgxMDAwICogNjApKTtcbiAgICAgIGNvbnN0IHJlZnJlc2hXaW5kb3dNaW51dGVzID0gZ2V0UmVmcmVzaFdpbmRvd01pbnV0ZXMoXG4gICAgICAgIHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTLFxuICAgICAgICBjb25maWcuYXBwPy5zZXNzaW9uIHx8IHt9XG4gICAgICApO1xuICAgICAgY29uc3QgcmVmcmVzaEV4cGlyZXNNaW51dGVzID0gTWF0aC5tYXgoXG4gICAgICAgIDEsXG4gICAgICAgIE51bWJlcihjb25maWcuYXBwPy5zZXNzaW9uPy5tYXhNaW51dGVzIHx8IHNlc3Npb25MaWZldGltZU1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTKVxuICAgICAgKTtcblxuICAgICAgaWYobWludXRlc1VudGlsRXhwaXJ5ID4gMCAmJiBtaW51dGVzVW50aWxFeHBpcnkgPD0gcmVmcmVzaFdpbmRvd01pbnV0ZXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHNlc3Npb246IHVwZGF0ZWRTZXNzaW9uID0ge31cbiAgICAgICAgfTogQXBpUmVzdWx0c1R5cGUgPSAoYXdhaXQgcmVmcmVzaFNlc3Npb24oZmx1eCwgdG9rZW4sIHJlZnJlc2hFeHBpcmVzTWludXRlcykpIHx8IHt9O1xuICAgICAgICBjb25zdCB7dG9rZW46IG5ld1Rva2VufTogU2Vzc2lvblR5cGUgPSAodXBkYXRlZFNlc3Npb24gfHwge30pO1xuXG4gICAgICAgIGlmKCFuZXdUb2tlbikge1xuICAgICAgICAgIHRocm93IG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnaW52YWxpZF9zZXNzaW9uJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0b2tlbiA9IG5ld1Rva2VuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBncmFwaHFsUXVlcnkodXJsLCBxdWVyeSwge3Rva2VuOiB0b2tlbiB8fCAnJ30pXG4gICAgICAudGhlbihhc3luYyAocmVzdWx0cykgPT4ge1xuICAgICAgICBhd2FpdCBmbHV4LmRpc3BhdGNoKHt0eXBlOiBBUFBfQ09OU1RBTlRTLkFQSV9ORVRXT1JLX1NVQ0NFU1N9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgIH0pXG4gICAgICAudGhlbigoZGF0YSkgPT4gKG9uU3VjY2VzcyA/IG9uU3VjY2VzcyhkYXRhKSA6IGRhdGEpKVxuICAgICAgLmNhdGNoKGFzeW5jIChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCB7ZXJyb3JzID0gW119ID0gZXJyb3I7XG5cbiAgICAgICAgaWYob25TdWNjZXNzICYmIGVycm9ycy5pbmNsdWRlcygnbmV0d29ya19lcnJvcicpKSB7XG4gICAgICAgICAgYXdhaXQgZmx1eC5kaXNwYXRjaCh7cmV0cnksIHR5cGU6IEFQUF9DT05TVEFOVFMuQVBJX05FVFdPUktfRVJST1J9KTtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICB9IGVsc2UgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpKSB7XG4gICAgICAgICAgYXdhaXQgY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlKGZsdXgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JzID0gZXJyb3IgaW5zdGFuY2VvZiBBcGlFcnJvciA/IGVycm9yLmVycm9ycyA6IFtdO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JzLmluY2x1ZGVzKCdpbnZhbGlkX3Nlc3Npb24nKSB8fCBlcnJvcnMuaW5jbHVkZXMoJ2V4cGlyZWRfc2Vzc2lvbicpIHx8IG1lc3NhZ2UgPT09ICdpbnZhbGlkX3Nlc3Npb24nIHx8IG1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVRdWVyeSA9IChcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgdmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyA9IHt9LFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSA9IFtdLFxuICB0eXBlID0gJ3F1ZXJ5J1xuKSA9PiB7XG4gIGNvbnN0IHF1ZXJ5VmFyaWFibGVzID0gey4uLnZhcmlhYmxlcyB8fCB7fX07XG4gIGNvbnN0IHZhcmlhYmxlS2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5VmFyaWFibGVzKTtcbiAgY29uc3QgcXVlcnlOYW1lID0gbmFtZS5yZXBsYWNlKC8gL2csICcnKTtcbiAgbGV0IHF1ZXJ5OiBzdHJpbmc7XG5cbiAgaWYodHlwZSA9PT0gJ211dGF0aW9uJykge1xuICAgIGNvbnN0IG11dGF0aW9uTmFtZSA9IHVwcGVyRmlyc3QoY2FtZWxDYXNlKGRhdGFUeXBlKSkgKyB1cHBlckZpcnN0KGNhbWVsQ2FzZShxdWVyeU5hbWUpKTtcbiAgICBxdWVyeSA9IGAke3R5cGV9ICR7bXV0YXRpb25OYW1lfSR7XG4gICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgID8gYCgke3ZhcmlhYmxlS2V5cy5tYXAoKGtleSkgPT4gYCQke2tleX06ICR7cXVlcnlWYXJpYWJsZXNba2V5XS50eXBlfWApLmpvaW4oJywgJyl9KWBcbiAgICAgICAgOiAnJ1xuICAgIH0ge1xuICAgICAgJHtkYXRhVHlwZX0ge1xuICAgICAgICAke2NhbWVsQ2FzZShxdWVyeU5hbWUpfSR7XG4gICAgICAgICAgdmFyaWFibGVLZXlzLmxlbmd0aFxuICAgICAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJHtrZXl9OiAkJHtrZXl9YCkuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgOiAnJ1xuICAgICAgICB9XG4gICAgICAgICR7cmV0dXJuUHJvcGVydGllcz8ubGVuZ3RoID8gYHske3JldHVyblByb3BlcnRpZXMuam9pbignLCAnKX19YCA6ICcnfVxuICAgICAgfVxuICAgIH1gO1xuICB9IGVsc2Uge1xuICAgIHF1ZXJ5ID0gYCR7dHlwZX0gJHtxdWVyeU5hbWV9JHtcbiAgICAgIHZhcmlhYmxlS2V5cy5sZW5ndGhcbiAgICAgICAgPyBgKCR7dmFyaWFibGVLZXlzLm1hcCgoa2V5KSA9PiBgJCR7a2V5fTogJHtxdWVyeVZhcmlhYmxlc1trZXldLnR5cGV9YCkuam9pbignLCAnKX0pYFxuICAgICAgICA6ICcnXG4gICAgfSB7XG4gICAgICAke2RhdGFUeXBlfSB7XG4gICAgICAgICR7Y2FtZWxDYXNlKHF1ZXJ5TmFtZSl9JHtcbiAgICAgICAgICB2YXJpYWJsZUtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IGAoJHt2YXJpYWJsZUtleXMubWFwKChrZXkpID0+IGAke2tleX06ICQke2tleX1gKS5qb2luKCcsICcpfSlgXG4gICAgICAgICAgICA6ICcnXG4gICAgICAgIH1cbiAgICAgICAgJHtyZXR1cm5Qcm9wZXJ0aWVzPy5sZW5ndGggPyBgeyR7cmV0dXJuUHJvcGVydGllcy5qb2luKCcsICcpfX1gIDogJyd9XG4gICAgICB9XG4gICAgfWA7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkVmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHZhcmlhYmxlS2V5cy5yZWR1Y2UoKHF1ZXJ5RGF0YSwga2V5KSA9PiB7XG4gICAgcXVlcnlEYXRhW2tleV0gPSBxdWVyeVZhcmlhYmxlc1trZXldLnZhbHVlO1xuICAgIHJldHVybiBxdWVyeURhdGE7XG4gIH0sIHt9KTtcblxuICByZXR1cm4ge3F1ZXJ5LCB2YXJpYWJsZXM6IHVwZGF0ZWRWYXJpYWJsZXN9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU11dGF0aW9uID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGRhdGFUeXBlOiBSZWFrdG9yRGJDb2xsZWN0aW9uLFxuICB2YXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzID0ge30sXG4gIHJldHVyblByb3BlcnRpZXM6IHN0cmluZ1tdID0gW11cbikgPT4gY3JlYXRlUXVlcnkobmFtZSwgZGF0YVR5cGUsIHZhcmlhYmxlcywgcmV0dXJuUHJvcGVydGllcywgJ211dGF0aW9uJyk7XG5cbmV4cG9ydCBjb25zdCBhcHBRdWVyeSA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVybCB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgYXBwVXJsLCB0cnVlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBhcHBNdXRhdGlvbiA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVNdXRhdGlvbihuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgYXBwVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnVybCB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgYXBwVXJsLCB0cnVlLCBxdWVyeSwgb3B0aW9ucykgYXMgUHJvbWlzZTxUPjtcbn07XG5cbmV4cG9ydCBjb25zdCBwdWJsaWNRdWVyeSA9IDxUPihcbiAgZmx1eDogRmx1eEZyYW1ld29yayxcbiAgbmFtZTogc3RyaW5nLFxuICBkYXRhVHlwZTogUmVha3RvckRiQ29sbGVjdGlvbixcbiAgcXVlcnlWYXJpYWJsZXM6IEFwaVF1ZXJ5VmFyaWFibGVzLFxuICByZXR1cm5Qcm9wZXJ0aWVzOiBzdHJpbmdbXSxcbiAgb3B0aW9uczogQXBpT3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+ID0+IHtcbiAgY29uc3QgcXVlcnkgPSBjcmVhdGVRdWVyeShuYW1lLCBkYXRhVHlwZSwgcXVlcnlWYXJpYWJsZXMsIHJldHVyblByb3BlcnRpZXMpO1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgcHVibGljVXJsOiBzdHJpbmcgPSBjb25maWcuYXBwPy5hcGk/LnB1YmxpYyB8fCAnJztcbiAgcmV0dXJuIGdldEdyYXBocWwoZmx1eCwgcHVibGljVXJsLCBmYWxzZSwgcXVlcnksIG9wdGlvbnMpIGFzIFByb21pc2U8VD47XG59O1xuXG5leHBvcnQgY29uc3QgcHVibGljTXV0YXRpb24gPSA8VD4oXG4gIGZsdXg6IEZsdXhGcmFtZXdvcmssXG4gIG5hbWU6IHN0cmluZyxcbiAgZGF0YVR5cGU6IFJlYWt0b3JEYkNvbGxlY3Rpb24sXG4gIHF1ZXJ5VmFyaWFibGVzOiBBcGlRdWVyeVZhcmlhYmxlcyxcbiAgcmV0dXJuUHJvcGVydGllczogc3RyaW5nW10sXG4gIG9wdGlvbnM6IEFwaU9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiA9PiB7XG4gIGNvbnN0IHF1ZXJ5ID0gY3JlYXRlTXV0YXRpb24obmFtZSwgZGF0YVR5cGUsIHF1ZXJ5VmFyaWFibGVzLCByZXR1cm5Qcm9wZXJ0aWVzKTtcbiAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gIGNvbnN0IHB1YmxpY1VybDogc3RyaW5nID0gY29uZmlnLmFwcD8uYXBpPy5wdWJsaWMgfHwgJyc7XG4gIHJldHVybiBnZXRHcmFwaHFsKGZsdXgsIHB1YmxpY1VybCwgZmFsc2UsIHF1ZXJ5LCBvcHRpb25zKSBhcyBQcm9taXNlPFQ+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVwbG9hZEltYWdlID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBpbWFnZSxcbiAgb3B0aW9uczogSHVudGVyT3B0aW9uc1R5cGUgPSB7fVxuKTogUHJvbWlzZTxBcGlSZXN1bHRzVHlwZT4gPT4ge1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWdGcm9tRmx1eChmbHV4KTtcbiAgY29uc3QgdXBsb2FkSW1hZ2VVcmw6IHN0cmluZyA9IGNvbmZpZy5hcHA/LmFwaT8udXBsb2FkSW1hZ2UgfHwgJyc7XG4gIGNvbnN0IHRva2VuID0gZmx1eC5nZXRTdGF0ZSgndXNlci5zZXNzaW9uLnRva2VuJyk7XG5cbiAgaWYoaXNFbXB0eSh1cGxvYWRJbWFnZVVybCkpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEFwaUVycm9yKFsnaW52YWxpZF91cmwnXSwgJ3VwbG9hZF9lbmRwb2ludF9ub3RfY29uZmlndXJlZCcpKTtcbiAgfVxuXG4gIGlmKGlzRW1wdHkodG9rZW4pKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBBcGlFcnJvcihbJ2ludmFsaWRfc2Vzc2lvbiddLCAnbWlzc2luZ19hdXRoX3Rva2VuJykpO1xuICB9XG5cbiAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKCk7XG4gIGhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3Rva2VufWApO1xuXG4gIGlmKHR5cGVvZiBGb3JtRGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgaW1hZ2UgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgIGhlYWRlcnMuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgcmV0dXJuIGZldGNoKHVwbG9hZEltYWdlVXJsLCB7XG4gICAgICBib2R5OiBpbWFnZSxcbiAgICAgIGhlYWRlcnMsXG4gICAgICBtZXRob2Q6ICdQT1NUJ1xuICAgIH0pLnRoZW4oYXN5bmMgKHJlc3BvbnNlKSA9PiB7XG4gICAgICBjb25zdCByZXNwb25zZVR5cGUgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykgfHwgJyc7XG4gICAgICBjb25zdCBkYXRhID0gcmVzcG9uc2VUeXBlLmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAgICAgPyBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgOiBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG5cbiAgICAgIGlmKCFyZXNwb25zZS5vaykge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmIGRhdGEgJiYgJ2Vycm9yJyBpbiBkYXRhXG4gICAgICAgICAgPyBTdHJpbmcoKGRhdGEgYXMge2Vycm9yPzogc3RyaW5nfSkuZXJyb3IgfHwgcmVzcG9uc2Uuc3RhdHVzVGV4dClcbiAgICAgICAgICA6IFN0cmluZyhkYXRhIHx8IHJlc3BvbnNlLnN0YXR1c1RleHQpO1xuICAgICAgICB0aHJvdyBuZXcgQXBpRXJyb3IoWyd1cGxvYWRfZXJyb3InXSwgbWVzc2FnZSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBkYXRhIGFzIEFwaVJlc3VsdHNUeXBlO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBvc3QodXBsb2FkSW1hZ2VVcmwsIGltYWdlLCB7aGVhZGVycywgLi4ub3B0aW9uc30pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hTZXNzaW9uID0gYXN5bmMgKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICB0b2tlbj86IHN0cmluZyxcbiAgZXhwaXJlcz86IG51bWJlclxuKTogUHJvbWlzZTxGbHV4QWN0aW9uIHwgbnVsbD4gPT4ge1xuICBjb25zdCByZWZyZXNoVG9rZW4gPSBpc0VtcHR5KHRva2VuKSA/IGZsdXguZ2V0U3RhdGUoJ3VzZXIuc2Vzc2lvbi50b2tlbicpIDogdG9rZW47XG5cbiAgaWYoaXNFbXB0eShyZWZyZXNoVG9rZW4pKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCB0b2tlbkV4cGlyZXNBdCA9IHBhcnNlSnd0RXhwaXJ5TXMoU3RyaW5nKHJlZnJlc2hUb2tlbikpO1xuXG4gIGlmKHRva2VuRXhwaXJlc0F0ID4gMCAmJiBEYXRlLm5vdygpID49IHRva2VuRXhwaXJlc0F0KSB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoJ2V4cGlyZWRfc2Vzc2lvbicpO1xuICAgIGF3YWl0IGNsZWFySW52YWxpZFNlc3Npb25TdGF0ZShmbHV4KTtcbiAgICBmbHV4LmRpc3BhdGNoKHtlcnJvciwgdHlwZTogVVNFUl9DT05TVEFOVFMuR0VUX1NFU1NJT05fRVJST1J9KTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRnJvbUZsdXgoZmx1eCk7XG4gICAgY29uc3QgcmVxdWVzdGVkRXhwaXJlcyA9IE1hdGgubWF4KFxuICAgICAgMSxcbiAgICAgIE51bWJlcihleHBpcmVzIHx8IGNvbmZpZy5hcHA/LnNlc3Npb24/Lm1heE1pbnV0ZXMgfHwgREVGQVVMVF9TRVNTSU9OX01BWF9NSU5VVEVTKVxuICAgICk7XG4gICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICBleHBpcmVzOiB7XG4gICAgICAgIHR5cGU6ICdJbnQnLFxuICAgICAgICB2YWx1ZTogcmVxdWVzdGVkRXhwaXJlc1xuICAgICAgfSxcbiAgICAgIHRva2VuOiB7XG4gICAgICAgIHR5cGU6ICdTdHJpbmchJyxcbiAgICAgICAgdmFsdWU6IHJlZnJlc2hUb2tlblxuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgb25TdWNjZXNzID0gYXN5bmMgKGRhdGE6IEFwaVJlc3VsdHNUeXBlID0ge30pOiBQcm9taXNlPEZsdXhBY3Rpb24+ID0+IHtcbiAgICAgIGNvbnN0IHJhd1Nlc3Npb25EYXRhID0gKGRhdGEgYXMge3VzZXJzPzoge3JlZnJlc2hTZXNzaW9uPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj59fSk/LnVzZXJzPy5yZWZyZXNoU2Vzc2lvbjtcbiAgICAgIGNvbnN0IHNlc3Npb25EYXRhID0gcmF3U2Vzc2lvbkRhdGEgJiYgdHlwZW9mIHJhd1Nlc3Npb25EYXRhID09PSAnb2JqZWN0J1xuICAgICAgICA/IHJhd1Nlc3Npb25EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICAgIDoge307XG4gICAgICBjb25zdCBjdXJyZW50U2Vzc2lvbiA9IChmbHV4LmdldFN0YXRlKCd1c2VyLnNlc3Npb24nLCB7fSkgfHwge30pIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgY29uc3QgbWVyZ2VkU2Vzc2lvbiA9IGF3YWl0IHN0b3JlU2Vzc2lvbihmbHV4LCB7Li4uY3VycmVudFNlc3Npb24sIC4uLnNlc3Npb25EYXRhfSk7XG4gICAgICByZXR1cm4gZmx1eC5kaXNwYXRjaCh7c2Vzc2lvbjogbWVyZ2VkU2Vzc2lvbiwgdHlwZTogVVNFUl9DT05TVEFOVFMuVVBEQVRFX1NFU1NJT05fU1VDQ0VTU30pO1xuICAgIH07XG5cbiAgICByZXR1cm4gYXdhaXQgcHVibGljTXV0YXRpb24oZmx1eCwgJ3JlZnJlc2hTZXNzaW9uJywgJ3VzZXJzJywgcXVlcnlWYXJpYWJsZXMsIFsnZXhwaXJlcycsICdpc3N1ZWQnLCAndG9rZW4nXSwge1xuICAgICAgb25TdWNjZXNzXG4gICAgfSk7XG4gIH0gY2F0Y2goZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6ICcnO1xuXG4gICAgaWYoZXJyb3JNZXNzYWdlID09PSAnaW52YWxpZF9zZXNzaW9uJyB8fCBlcnJvck1lc3NhZ2UgPT09ICdleHBpcmVkX3Nlc3Npb24nKSB7XG4gICAgICBhd2FpdCBjbGVhckludmFsaWRTZXNzaW9uU3RhdGUoZmx1eCk7XG4gICAgfVxuXG4gICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFVTRVJfQ09OU1RBTlRTLkdFVF9TRVNTSU9OX0VSUk9SfSk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG4iXSwibmFtZXMiOlsiQXBpRXJyb3IiLCJncmFwaHFsUXVlcnkiLCJwb3N0IiwiY2FtZWxDYXNlIiwiaXNFbXB0eSIsInVwcGVyRmlyc3QiLCJBUFBfQ09OU1RBTlRTIiwiVVNFUl9DT05TVEFOVFMiLCJnZXRDb25maWdGcm9tRmx1eCIsImNsZWFyUGVyc2lzdGVkU2Vzc2lvbiIsImdldFJlZnJlc2hXaW5kb3dNaW51dGVzIiwiaHlkcmF0ZVNlc3Npb25Gcm9tU3RvcmFnZSIsInBhcnNlSnd0RXhwaXJ5TXMiLCJzdG9yZVNlc3Npb24iLCJERUZBVUxUX1JFRlJFU0hfV0lORE9XX01JTlVURVMiLCJERUZBVUxUX1NFU1NJT05fTUFYX01JTlVURVMiLCJnZXRNaW51dGVzVW50aWwiLCJleHBpcmVzQXQiLCJNYXRoIiwicm91bmQiLCJEYXRlIiwibm93IiwiY2xlYXJJbnZhbGlkU2Vzc2lvblN0YXRlIiwiZmx1eCIsImNsZWFyQXBwRGF0YSIsImRpc3BhdGNoIiwic2Vzc2lvbiIsInR5cGUiLCJTSUdOX09VVF9TVUNDRVNTIiwiZ2V0R3JhcGhxbCIsInVybCIsImF1dGhlbnRpY2F0ZSIsInF1ZXJ5Iiwib3B0aW9ucyIsIm9uU3VjY2VzcyIsInJldHJ5IiwicmVzcG9uc2VNZXRob2QiLCJuZXR3b3JrVHlwZSIsImdldFN0YXRlIiwiQVBJX05FVFdPUktfRVJST1IiLCJzdGF0ZVNlc3Npb24iLCJ0b2tlbiIsImh5ZHJhdGVkU2Vzc2lvbiIsImV4cGlyZXMiLCJhdXRoRXhwaXJlcyIsImlzc3VlZCIsImF1dGhJc3N1ZWQiLCJoeWRyYXRlZFRva2VuIiwidG9rZW5FeHBpcmVzQXQiLCJjb25maWciLCJtaW51dGVzVW50aWxFeHBpcnkiLCJOdW1iZXIiLCJzZXNzaW9uTGlmZXRpbWVNaW51dGVzIiwicmVmcmVzaFdpbmRvd01pbnV0ZXMiLCJhcHAiLCJyZWZyZXNoRXhwaXJlc01pbnV0ZXMiLCJtYXgiLCJtYXhNaW51dGVzIiwidXBkYXRlZFNlc3Npb24iLCJyZWZyZXNoU2Vzc2lvbiIsIm5ld1Rva2VuIiwidGhlbiIsInJlc3VsdHMiLCJBUElfTkVUV09SS19TVUNDRVNTIiwiZGF0YSIsImNhdGNoIiwiZXJyb3IiLCJlcnJvcnMiLCJpbmNsdWRlcyIsIlByb21pc2UiLCJyZWplY3QiLCJyZXNvbHZlIiwibWVzc2FnZSIsIkVycm9yIiwiY3JlYXRlUXVlcnkiLCJuYW1lIiwiZGF0YVR5cGUiLCJ2YXJpYWJsZXMiLCJyZXR1cm5Qcm9wZXJ0aWVzIiwicXVlcnlWYXJpYWJsZXMiLCJ2YXJpYWJsZUtleXMiLCJPYmplY3QiLCJrZXlzIiwicXVlcnlOYW1lIiwicmVwbGFjZSIsIm11dGF0aW9uTmFtZSIsImxlbmd0aCIsIm1hcCIsImtleSIsImpvaW4iLCJ1cGRhdGVkVmFyaWFibGVzIiwicmVkdWNlIiwicXVlcnlEYXRhIiwidmFsdWUiLCJjcmVhdGVNdXRhdGlvbiIsImFwcFF1ZXJ5IiwiYXBwVXJsIiwiYXBpIiwiYXBwTXV0YXRpb24iLCJwdWJsaWNRdWVyeSIsInB1YmxpY1VybCIsInB1YmxpYyIsInB1YmxpY011dGF0aW9uIiwidXBsb2FkSW1hZ2UiLCJpbWFnZSIsInVwbG9hZEltYWdlVXJsIiwiaGVhZGVycyIsIkhlYWRlcnMiLCJzZXQiLCJGb3JtRGF0YSIsImZldGNoIiwiYm9keSIsIm1ldGhvZCIsInJlc3BvbnNlIiwicmVzcG9uc2VUeXBlIiwiZ2V0IiwianNvbiIsInRleHQiLCJvayIsIlN0cmluZyIsInN0YXR1c1RleHQiLCJyZWZyZXNoVG9rZW4iLCJHRVRfU0VTU0lPTl9FUlJPUiIsInJlcXVlc3RlZEV4cGlyZXMiLCJyYXdTZXNzaW9uRGF0YSIsInVzZXJzIiwic2Vzc2lvbkRhdGEiLCJjdXJyZW50U2Vzc2lvbiIsIm1lcmdlZFNlc3Npb24iLCJVUERBVEVfU0VTU0lPTl9TVUNDRVNTIiwiZXJyb3JNZXNzYWdlIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxRQUFRLEVBQUVDLFlBQVksRUFBRUMsSUFBSSxRQUFPLG9CQUFvQjtBQUMvRCxTQUFRQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxRQUFPLGVBQWU7QUFFNUQsU0FBUUMsYUFBYSxRQUFPLHdCQUF3QjtBQUNwRCxTQUFRQyxjQUFjLFFBQU8seUJBQXlCO0FBQ3RELFNBQVFDLGlCQUFpQixRQUFPLG1CQUFtQjtBQUNuRCxTQUFRQyxxQkFBcUIsRUFBRUMsdUJBQXVCLEVBQUVDLHlCQUF5QixFQUFFQyxnQkFBZ0IsRUFBRUMsWUFBWSxRQUFPLGVBQWU7QUEyRHZJLE1BQU1DLGlDQUFpQztBQUN2QyxNQUFNQyw4QkFBOEI7QUFFcEMsTUFBTUMsa0JBQWtCLENBQUNDLFlBQ3ZCQyxLQUFLQyxLQUFLLENBQUMsQUFBQ0Ys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
|
package/lib/utils/app.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/utils/app.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,aAAa,GACxB,OAAO,MAAM,EACb,cAAc,MAAM,EACpB,mBAAkB,MAAU,KAC3B,UAMF,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,SAAS,MAAM,EAAE,YAAY,MAAM,KAAG,OACuB,CAAC"}
|