@nlabs/metropolisjs 0.1.2 → 0.3.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 +44 -95
- package/lib/actions/userActions/userActions.d.ts.map +1 -0
- package/lib/actions/userActions/userActions.js +870 -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
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2025-Present, Nitrogen Labs, Inc.
|
|
3
|
+
* Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
|
|
4
|
+
*/ import { TRANSLATION_CONSTANTS } from '../../stores/translationStore.js';
|
|
5
|
+
import { appMutation, appQuery } from '../../utils/api.js';
|
|
6
|
+
import { createBaseActions } from '../../utils/baseActionFactory.js';
|
|
7
|
+
import { clearCachedRequest, getCachedRequest, setCachedRequest } from '../../utils/requestCache.js';
|
|
8
|
+
import { initI18n, updateI18nResources } from '../../utils/i18n.js';
|
|
9
|
+
const DATA_TYPE = 'translations';
|
|
10
|
+
const defaultTranslationValidator = (input, options)=>input;
|
|
11
|
+
export const createTranslationActions = (flux, options)=>{
|
|
12
|
+
const translationBase = createBaseActions(flux, defaultTranslationValidator, {
|
|
13
|
+
...options?.translationAdapter && {
|
|
14
|
+
adapter: options.translationAdapter
|
|
15
|
+
},
|
|
16
|
+
...options?.translationAdapterOptions && {
|
|
17
|
+
adapterOptions: options.translationAdapterOptions
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
const syncWithI18n = ()=>{
|
|
21
|
+
const state = flux.getState('translations');
|
|
22
|
+
const translations = state.translations || {};
|
|
23
|
+
if (Object.keys(translations).length > 0) {
|
|
24
|
+
if (!options?.autoSyncI18n) {
|
|
25
|
+
initI18n(translations);
|
|
26
|
+
} else {
|
|
27
|
+
updateI18nResources(translations);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const addTranslations = async (translations, translationProps = [], requestOptions = {})=>{
|
|
32
|
+
try {
|
|
33
|
+
const queryVariables = {
|
|
34
|
+
translations: {
|
|
35
|
+
type: '[TranslationInput!]!',
|
|
36
|
+
value: translations.map((t)=>translationBase.validator(t))
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const onSuccess = (data)=>{
|
|
40
|
+
const addTranslations = data?.translations?.addTranslations || [];
|
|
41
|
+
const result = flux.dispatch({
|
|
42
|
+
translations: addTranslations,
|
|
43
|
+
type: TRANSLATION_CONSTANTS.ADD_TRANSLATIONS_SUCCESS
|
|
44
|
+
});
|
|
45
|
+
if (options?.autoSyncI18n) {
|
|
46
|
+
syncWithI18n();
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
};
|
|
50
|
+
return await appMutation(flux, 'addTranslations', DATA_TYPE, queryVariables, [
|
|
51
|
+
'key',
|
|
52
|
+
'locale',
|
|
53
|
+
'value',
|
|
54
|
+
'namespace',
|
|
55
|
+
...translationProps
|
|
56
|
+
], {
|
|
57
|
+
onSuccess
|
|
58
|
+
});
|
|
59
|
+
} catch (error) {
|
|
60
|
+
flux.dispatch({
|
|
61
|
+
error,
|
|
62
|
+
type: TRANSLATION_CONSTANTS.ADD_TRANSLATIONS_ERROR
|
|
63
|
+
});
|
|
64
|
+
throw error;
|
|
65
|
+
} finally{
|
|
66
|
+
await clearCachedRequest(flux, 'translation.getTranslations');
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const getTranslation = (key, locale, namespace)=>{
|
|
70
|
+
const state = flux.getState('translations');
|
|
71
|
+
const translationKey = namespace ? `${namespace}:${key}:${locale}` : `${key}:${locale}`;
|
|
72
|
+
const translation = state.translations?.[translationKey];
|
|
73
|
+
return translation?.value || null;
|
|
74
|
+
};
|
|
75
|
+
const getTranslations = async (keys, locale, namespace, translationProps = [], requestOptions = {})=>{
|
|
76
|
+
try {
|
|
77
|
+
const cachedResult = getCachedRequest(flux, 'translation.getTranslations', {
|
|
78
|
+
keys,
|
|
79
|
+
locale,
|
|
80
|
+
namespace,
|
|
81
|
+
translationProps
|
|
82
|
+
}, requestOptions);
|
|
83
|
+
if (cachedResult) {
|
|
84
|
+
return cachedResult;
|
|
85
|
+
}
|
|
86
|
+
const queryVariables = {
|
|
87
|
+
keys: {
|
|
88
|
+
type: '[String!]!',
|
|
89
|
+
value: keys
|
|
90
|
+
},
|
|
91
|
+
locale: {
|
|
92
|
+
type: 'String!',
|
|
93
|
+
value: locale
|
|
94
|
+
},
|
|
95
|
+
...namespace && {
|
|
96
|
+
namespace: {
|
|
97
|
+
type: 'String',
|
|
98
|
+
value: namespace
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
const onSuccess = (data)=>{
|
|
103
|
+
const getTranslations = data?.translations?.getTranslations || [];
|
|
104
|
+
const result = flux.dispatch({
|
|
105
|
+
translations: getTranslations,
|
|
106
|
+
type: TRANSLATION_CONSTANTS.GET_TRANSLATIONS_SUCCESS
|
|
107
|
+
});
|
|
108
|
+
if (options?.autoSyncI18n) {
|
|
109
|
+
syncWithI18n();
|
|
110
|
+
}
|
|
111
|
+
return result;
|
|
112
|
+
};
|
|
113
|
+
const result = await appQuery(flux, 'getTranslations', DATA_TYPE, queryVariables, [
|
|
114
|
+
'key',
|
|
115
|
+
'locale',
|
|
116
|
+
'value',
|
|
117
|
+
'namespace',
|
|
118
|
+
...translationProps
|
|
119
|
+
], {
|
|
120
|
+
onSuccess
|
|
121
|
+
});
|
|
122
|
+
return await setCachedRequest(flux, 'translation.getTranslations', {
|
|
123
|
+
keys,
|
|
124
|
+
locale,
|
|
125
|
+
namespace,
|
|
126
|
+
translationProps
|
|
127
|
+
}, result, requestOptions);
|
|
128
|
+
} catch (error) {
|
|
129
|
+
flux.dispatch({
|
|
130
|
+
error,
|
|
131
|
+
type: TRANSLATION_CONSTANTS.GET_TRANSLATIONS_ERROR
|
|
132
|
+
});
|
|
133
|
+
throw error;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const hasTranslation = (key, locale, namespace)=>{
|
|
137
|
+
const state = flux.getState('translations');
|
|
138
|
+
const translationKey = namespace ? `${namespace}:${key}:${locale}` : `${key}:${locale}`;
|
|
139
|
+
return !!state.translations?.[translationKey];
|
|
140
|
+
};
|
|
141
|
+
const queueTranslationKey = (key, locale, namespace)=>{
|
|
142
|
+
const translationKey = namespace ? `${namespace}:${key}:${locale}` : `${key}:${locale}`;
|
|
143
|
+
flux.dispatch({
|
|
144
|
+
key: translationKey,
|
|
145
|
+
type: TRANSLATION_CONSTANTS.QUEUE_TRANSLATION_KEY
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
const processPendingTranslations = async (locale, namespace, requestOptions = {})=>{
|
|
149
|
+
const state = flux.getState('translations');
|
|
150
|
+
const pendingKeys = Array.from(state.pendingKeys || []);
|
|
151
|
+
if (pendingKeys.length === 0) {
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
flux.dispatch({
|
|
155
|
+
isQueueing: true,
|
|
156
|
+
type: TRANSLATION_CONSTANTS.SET_QUEUEING_STATE
|
|
157
|
+
});
|
|
158
|
+
try {
|
|
159
|
+
const keysToFetch = pendingKeys.map((key)=>{
|
|
160
|
+
const parts = key.split(':');
|
|
161
|
+
if (namespace) {
|
|
162
|
+
return parts.length === 3 ? parts[1] : null;
|
|
163
|
+
}
|
|
164
|
+
return parts.length === 2 ? parts[0] : null;
|
|
165
|
+
}).filter(Boolean);
|
|
166
|
+
if (keysToFetch.length > 0) {
|
|
167
|
+
await getTranslations(keysToFetch, locale, namespace, [], requestOptions);
|
|
168
|
+
}
|
|
169
|
+
} finally{
|
|
170
|
+
flux.dispatch({
|
|
171
|
+
isQueueing: false,
|
|
172
|
+
type: TRANSLATION_CONSTANTS.SET_QUEUEING_STATE
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
return {
|
|
177
|
+
addTranslations,
|
|
178
|
+
getTranslation,
|
|
179
|
+
getTranslations,
|
|
180
|
+
hasTranslation,
|
|
181
|
+
processPendingTranslations,
|
|
182
|
+
queueTranslationKey,
|
|
183
|
+
syncWithI18n,
|
|
184
|
+
updateTranslationAdapter: translationBase.updateAdapter,
|
|
185
|
+
updateTranslationAdapterOptions: translationBase.updateOptions
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L21ldHJvcG9saXNqcy9zcmMvYWN0aW9ucy90cmFuc2xhdGlvbkFjdGlvbnMvdHJhbnNsYXRpb25BY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmltcG9ydCB7VFJBTlNMQVRJT05fQ09OU1RBTlRTfSBmcm9tICcuLi8uLi9zdG9yZXMvdHJhbnNsYXRpb25TdG9yZS5qcyc7XG5pbXBvcnQge2FwcE11dGF0aW9uLCBhcHBRdWVyeX0gZnJvbSAnLi4vLi4vdXRpbHMvYXBpLmpzJztcbmltcG9ydCB7Y3JlYXRlQmFzZUFjdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL2Jhc2VBY3Rpb25GYWN0b3J5LmpzJztcbmltcG9ydCB7Y2xlYXJDYWNoZWRSZXF1ZXN0LCBnZXRDYWNoZWRSZXF1ZXN0LCBzZXRDYWNoZWRSZXF1ZXN0fSBmcm9tICcuLi8uLi91dGlscy9yZXF1ZXN0Q2FjaGUuanMnO1xuXG5pbXBvcnQgdHlwZSB7Rmx1eEZyYW1ld29ya30gZnJvbSAnQG5sYWJzL2Fya2hhbWpzJztcbmltcG9ydCB0eXBlIHtUcmFuc2xhdGlvblR5cGV9IGZyb20gJy4uLy4uL3N0b3Jlcy90cmFuc2xhdGlvblN0b3JlLmpzJztcbmltcG9ydCB7aW5pdEkxOG4sIHVwZGF0ZUkxOG5SZXNvdXJjZXN9IGZyb20gJy4uLy4uL3V0aWxzL2kxOG4uanMnO1xuaW1wb3J0IHR5cGUge0Jhc2VBZGFwdGVyT3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbHMvdmFsaWRhdG9yRmFjdG9yeS5qcyc7XG5pbXBvcnQgdHlwZSB7QWN0aW9uUmVxdWVzdE9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWxzL3JlcXVlc3RDYWNoZS5qcyc7XG5cbmNvbnN0IERBVEFfVFlQRSA9ICd0cmFuc2xhdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uSW5wdXRUeXBlIHtcbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGxvY2FsZTogc3RyaW5nO1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuICByZWFkb25seSBuYW1lc3BhY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNsYXRpb25BY3Rpb25zT3B0aW9ucyB7XG4gIHRyYW5zbGF0aW9uQWRhcHRlcj86IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEJhc2VBZGFwdGVyT3B0aW9ucykgPT4gYW55O1xuICB0cmFuc2xhdGlvbkFkYXB0ZXJPcHRpb25zPzogQmFzZUFkYXB0ZXJPcHRpb25zO1xuICBhdXRvU3luY0kxOG4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgdHlwZSBUcmFuc2xhdGlvbkFwaVJlc3VsdHNUeXBlID0ge1xuICB0cmFuc2xhdGlvbnM6IHtcbiAgICBhZGRUcmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uVHlwZVtdO1xuICAgIGdldFRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25UeXBlW107XG4gIH07XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zbGF0aW9uQWN0aW9ucyB7XG4gIGFkZFRyYW5zbGF0aW9uczogKHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25JbnB1dFR5cGVbXSwgdHJhbnNsYXRpb25Qcm9wcz86IHN0cmluZ1tdLCByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zKSA9PiBQcm9taXNlPFRyYW5zbGF0aW9uVHlwZVtdPjtcbiAgZ2V0VHJhbnNsYXRpb246IChrZXk6IHN0cmluZywgbG9jYWxlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbDtcbiAgZ2V0VHJhbnNsYXRpb25zOiAoXG4gICAga2V5czogc3RyaW5nW10sXG4gICAgbG9jYWxlOiBzdHJpbmcsXG4gICAgbmFtZXNwYWNlPzogc3RyaW5nLFxuICAgIHRyYW5zbGF0aW9uUHJvcHM/OiBzdHJpbmdbXSxcbiAgICByZXF1ZXN0T3B0aW9ucz86IEFjdGlvblJlcXVlc3RPcHRpb25zXG4gICkgPT4gUHJvbWlzZTxUcmFuc2xhdGlvblR5cGVbXT47XG4gIGhhc1RyYW5zbGF0aW9uOiAoa2V5OiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIHByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zOiAobG9jYWxlOiBzdHJpbmcsIG5hbWVzcGFjZT86IHN0cmluZywgcmVxdWVzdE9wdGlvbnM/OiBBY3Rpb25SZXF1ZXN0T3B0aW9ucykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcXVldWVUcmFuc2xhdGlvbktleTogKGtleTogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nKSA9PiB2b2lkO1xuICBzeW5jV2l0aEkxOG46ICgpID0+IHZvaWQ7XG4gIHVwZGF0ZVRyYW5zbGF0aW9uQWRhcHRlcjogKGFkYXB0ZXI6IChpbnB1dDogdW5rbm93biwgb3B0aW9ucz86IEJhc2VBZGFwdGVyT3B0aW9ucykgPT4gYW55KSA9PiB2b2lkO1xuICB1cGRhdGVUcmFuc2xhdGlvbkFkYXB0ZXJPcHRpb25zOiAob3B0aW9uczogQmFzZUFkYXB0ZXJPcHRpb25zKSA9PiB2b2lkO1xufVxuXG5jb25zdCBkZWZhdWx0VHJhbnNsYXRpb25WYWxpZGF0b3IgPSAoaW5wdXQ6IHVua25vd24sIG9wdGlvbnM/OiBCYXNlQWRhcHRlck9wdGlvbnMpID0+IGlucHV0IGFzIFRyYW5zbGF0aW9uSW5wdXRUeXBlO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlVHJhbnNsYXRpb25BY3Rpb25zID0gKFxuICBmbHV4OiBGbHV4RnJhbWV3b3JrLFxuICBvcHRpb25zPzogVHJhbnNsYXRpb25BY3Rpb25zT3B0aW9uc1xuKTogVHJhbnNsYXRpb25BY3Rpb25zID0+IHtcbiAgY29uc3QgdHJhbnNsYXRpb25CYXNlID0gY3JlYXRlQmFzZUFjdGlvbnMoZmx1eCwgZGVmYXVsdFRyYW5zbGF0aW9uVmFsaWRhdG9yLCB7XG4gICAgLi4uKG9wdGlvbnM/LnRyYW5zbGF0aW9uQWRhcHRlciAmJiB7YWRhcHRlcjogb3B0aW9ucy50cmFuc2xhdGlvbkFkYXB0ZXJ9KSxcbiAgICAuLi4ob3B0aW9ucz8udHJhbnNsYXRpb25BZGFwdGVyT3B0aW9ucyAmJiB7YWRhcHRlck9wdGlvbnM6IG9wdGlvbnMudHJhbnNsYXRpb25BZGFwdGVyT3B0aW9uc30pXG4gIH0pO1xuXG4gIGNvbnN0IHN5bmNXaXRoSTE4biA9ICgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGZsdXguZ2V0U3RhdGUoJ3RyYW5zbGF0aW9ucycpIGFzIGFueTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSBzdGF0ZS50cmFuc2xhdGlvbnMgfHwge307XG5cbiAgICBpZihPYmplY3Qua2V5cyh0cmFuc2xhdGlvbnMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmKCFvcHRpb25zPy5hdXRvU3luY0kxOG4pIHtcbiAgICAgICAgaW5pdEkxOG4odHJhbnNsYXRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZUkxOG5SZXNvdXJjZXModHJhbnNsYXRpb25zKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgYWRkVHJhbnNsYXRpb25zID0gYXN5bmMgKFxuICAgIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25JbnB1dFR5cGVbXSxcbiAgICB0cmFuc2xhdGlvblByb3BzOiBzdHJpbmdbXSA9IFtdLFxuICAgIHJlcXVlc3RPcHRpb25zOiBBY3Rpb25SZXF1ZXN0T3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8VHJhbnNsYXRpb25UeXBlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVlcnlWYXJpYWJsZXMgPSB7XG4gICAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICAgIHR5cGU6ICdbVHJhbnNsYXRpb25JbnB1dCFdIScsXG4gICAgICAgICAgdmFsdWU6IHRyYW5zbGF0aW9ucy5tYXAoKHQpID0+IHRyYW5zbGF0aW9uQmFzZS52YWxpZGF0b3IodCkpXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBUcmFuc2xhdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFRyYW5zbGF0aW9ucyA9IGRhdGE/LnRyYW5zbGF0aW9ucz8uYWRkVHJhbnNsYXRpb25zIHx8IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IGFkZFRyYW5zbGF0aW9ucyxcbiAgICAgICAgICB0eXBlOiBUUkFOU0xBVElPTl9DT05TVEFOVFMuQUREX1RSQU5TTEFUSU9OU19TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgICBpZihvcHRpb25zPy5hdXRvU3luY0kxOG4pIHtcbiAgICAgICAgICBzeW5jV2l0aEkxOG4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGF3YWl0IGFwcE11dGF0aW9uPFRyYW5zbGF0aW9uVHlwZVtdPihcbiAgICAgICAgZmx1eCxcbiAgICAgICAgJ2FkZFRyYW5zbGF0aW9ucycsXG4gICAgICAgIERBVEFfVFlQRSxcbiAgICAgICAgcXVlcnlWYXJpYWJsZXMsXG4gICAgICAgIFsna2V5JywgJ2xvY2FsZScsICd2YWx1ZScsICduYW1lc3BhY2UnLCAuLi50cmFuc2xhdGlvblByb3BzXSxcbiAgICAgICAge29uU3VjY2Vzc31cbiAgICAgICk7XG4gICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7ZXJyb3IsIHR5cGU6IFRSQU5TTEFUSU9OX0NPTlNUQU5UUy5BRERfVFJBTlNMQVRJT05TX0VSUk9SfSk7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgY2xlYXJDYWNoZWRSZXF1ZXN0KGZsdXgsICd0cmFuc2xhdGlvbi5nZXRUcmFuc2xhdGlvbnMnKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZ2V0VHJhbnNsYXRpb24gPSAoa2V5OiBzdHJpbmcsIGxvY2FsZTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGZsdXguZ2V0U3RhdGUoJ3RyYW5zbGF0aW9ucycpIGFzIGFueTtcbiAgICBjb25zdCB0cmFuc2xhdGlvbktleSA9IG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX06JHtrZXl9OiR7bG9jYWxlfWAgOiBgJHtrZXl9OiR7bG9jYWxlfWA7XG4gICAgY29uc3QgdHJhbnNsYXRpb24gPSBzdGF0ZS50cmFuc2xhdGlvbnM/Llt0cmFuc2xhdGlvbktleV07XG4gICAgcmV0dXJuIHRyYW5zbGF0aW9uPy52YWx1ZSB8fCBudWxsO1xuICB9O1xuXG4gIGNvbnN0IGdldFRyYW5zbGF0aW9ucyA9IGFzeW5jIChcbiAgICBrZXlzOiBzdHJpbmdbXSxcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBuYW1lc3BhY2U/OiBzdHJpbmcsXG4gICAgdHJhbnNsYXRpb25Qcm9wczogc3RyaW5nW10gPSBbXSxcbiAgICByZXF1ZXN0T3B0aW9uczogQWN0aW9uUmVxdWVzdE9wdGlvbnMgPSB7fVxuICApOiBQcm9taXNlPFRyYW5zbGF0aW9uVHlwZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNhY2hlZFJlc3VsdCA9IGdldENhY2hlZFJlcXVlc3Q8VHJhbnNsYXRpb25UeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAndHJhbnNsYXRpb24uZ2V0VHJhbnNsYXRpb25zJyxcbiAgICAgICAge2tleXMsIGxvY2FsZSwgbmFtZXNwYWNlLCB0cmFuc2xhdGlvblByb3BzfSxcbiAgICAgICAgcmVxdWVzdE9wdGlvbnNcbiAgICAgICk7XG5cbiAgICAgIGlmKGNhY2hlZFJlc3VsdCkge1xuICAgICAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBxdWVyeVZhcmlhYmxlcyA9IHtcbiAgICAgICAga2V5czoge1xuICAgICAgICAgIHR5cGU6ICdbU3RyaW5nIV0hJyxcbiAgICAgICAgICB2YWx1ZToga2V5c1xuICAgICAgICB9LFxuICAgICAgICBsb2NhbGU6IHtcbiAgICAgICAgICB0eXBlOiAnU3RyaW5nIScsXG4gICAgICAgICAgdmFsdWU6IGxvY2FsZVxuICAgICAgICB9LFxuICAgICAgICAuLi4obmFtZXNwYWNlICYmIHtcbiAgICAgICAgICBuYW1lc3BhY2U6IHtcbiAgICAgICAgICAgIHR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgdmFsdWU6IG5hbWVzcGFjZVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9uU3VjY2VzcyA9IChkYXRhOiBUcmFuc2xhdGlvbkFwaVJlc3VsdHNUeXBlKSA9PiB7XG4gICAgICAgIGNvbnN0IGdldFRyYW5zbGF0aW9ucyA9IGRhdGE/LnRyYW5zbGF0aW9ucz8uZ2V0VHJhbnNsYXRpb25zIHx8IFtdO1xuICAgICAgICBjb25zdCByZXN1bHQgPSBmbHV4LmRpc3BhdGNoKHtcbiAgICAgICAgICB0cmFuc2xhdGlvbnM6IGdldFRyYW5zbGF0aW9ucyxcbiAgICAgICAgICB0eXBlOiBUUkFOU0xBVElPTl9DT05TVEFOVFMuR0VUX1RSQU5TTEFUSU9OU19TVUNDRVNTXG4gICAgICAgIH0pO1xuICAgICAgICBpZihvcHRpb25zPy5hdXRvU3luY0kxOG4pIHtcbiAgICAgICAgICBzeW5jV2l0aEkxOG4oKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXBwUXVlcnk8VHJhbnNsYXRpb25UeXBlW10+KFxuICAgICAgICBmbHV4LFxuICAgICAgICAnZ2V0VHJhbnNsYXRpb25zJyxcbiAgICAgICAgREFUQV9UWVBFLFxuICAgICAgICBxdWVyeVZhcmlhYmxlcyxcbiAgICAgICAgWydrZXknLCAnbG9jYWxlJywgJ3ZhbHVlJywgJ25hbWVzcGFjZScsIC4uLnRyYW5zbGF0aW9uUHJvcHNdLFxuICAgICAgICB7b25TdWNjZXNzfVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGF3YWl0IHNldENhY2hlZFJlcXVlc3QoZmx1eCwgJ3RyYW5zbGF0aW9uLmdldFRyYW5zbGF0aW9ucycsIHtrZXlzLCBsb2NhbGUsIG5hbWVzcGFjZSwgdHJhbnNsYXRpb25Qcm9wc30sIHJlc3VsdCwgcmVxdWVzdE9wdGlvbnMpO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIGZsdXguZGlzcGF0Y2goe2Vycm9yLCB0eXBlOiBUUkFOU0xBVElPTl9DT05TVEFOVFMuR0VUX1RSQU5TTEFUSU9OU19FUlJPUn0pO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhc1RyYW5zbGF0aW9uID0gKGtleTogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBmbHV4LmdldFN0YXRlKCd0cmFuc2xhdGlvbnMnKSBhcyBhbnk7XG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSBuYW1lc3BhY2UgPyBgJHtuYW1lc3BhY2V9OiR7a2V5fToke2xvY2FsZX1gIDogYCR7a2V5fToke2xvY2FsZX1gO1xuICAgIHJldHVybiAhIXN0YXRlLnRyYW5zbGF0aW9ucz8uW3RyYW5zbGF0aW9uS2V5XTtcbiAgfTtcblxuICBjb25zdCBxdWV1ZVRyYW5zbGF0aW9uS2V5ID0gKGtleTogc3RyaW5nLCBsb2NhbGU6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nKTogdm9pZCA9PiB7XG4gICAgY29uc3QgdHJhbnNsYXRpb25LZXkgPSBuYW1lc3BhY2UgPyBgJHtuYW1lc3BhY2V9OiR7a2V5fToke2xvY2FsZX1gIDogYCR7a2V5fToke2xvY2FsZX1gO1xuICAgIGZsdXguZGlzcGF0Y2goe2tleTogdHJhbnNsYXRpb25LZXksIHR5cGU6IFRSQU5TTEFUSU9OX0NPTlNUQU5UUy5RVUVVRV9UUkFOU0xBVElPTl9LRVl9KTtcbiAgfTtcblxuICBjb25zdCBwcm9jZXNzUGVuZGluZ1RyYW5zbGF0aW9ucyA9IGFzeW5jIChcbiAgICBsb2NhbGU6IHN0cmluZyxcbiAgICBuYW1lc3BhY2U/OiBzdHJpbmcsXG4gICAgcmVxdWVzdE9wdGlvbnM6IEFjdGlvblJlcXVlc3RPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBmbHV4LmdldFN0YXRlKCd0cmFuc2xhdGlvbnMnKSBhcyBhbnk7XG4gICAgY29uc3QgcGVuZGluZ0tleXMgPSBBcnJheS5mcm9tKHN0YXRlLnBlbmRpbmdLZXlzIHx8IFtdKSBhcyBzdHJpbmdbXTtcblxuICAgIGlmKHBlbmRpbmdLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZsdXguZGlzcGF0Y2goe2lzUXVldWVpbmc6IHRydWUsIHR5cGU6IFRSQU5TTEFUSU9OX0NPTlNUQU5UUy5TRVRfUVVFVUVJTkdfU1RBVEV9KTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBrZXlzVG9GZXRjaCA9IHBlbmRpbmdLZXlzXG4gICAgICAgIC5tYXAoKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgY29uc3QgcGFydHMgPSBrZXkuc3BsaXQoJzonKTtcbiAgICAgICAgICBpZihuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDMgPyBwYXJ0c1sxXSA6IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPT09IDIgPyBwYXJ0c1swXSA6IG51bGw7XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG5cbiAgICAgIGlmKGtleXNUb0ZldGNoLmxlbmd0aCA+IDApIHtcbiAgICAgICAgYXdhaXQgZ2V0VHJhbnNsYXRpb25zKGtleXNUb0ZldGNoLCBsb2NhbGUsIG5hbWVzcGFjZSwgW10sIHJlcXVlc3RPcHRpb25zKTtcbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgZmx1eC5kaXNwYXRjaCh7aXNRdWV1ZWluZzogZmFsc2UsIHR5cGU6IFRSQU5TTEFUSU9OX0NPTlNUQU5UUy5TRVRfUVVFVUVJTkdfU1RBVEV9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBhZGRUcmFuc2xhdGlvbnMsXG4gICAgZ2V0VHJhbnNsYXRpb24sXG4gICAgZ2V0VHJhbnNsYXRpb25zLFxuICAgIGhhc1RyYW5zbGF0aW9uLFxuICAgIHByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zLFxuICAgIHF1ZXVlVHJhbnNsYXRpb25LZXksXG4gICAgc3luY1dpdGhJMThuLFxuICAgIHVwZGF0ZVRyYW5zbGF0aW9uQWRhcHRlcjogdHJhbnNsYXRpb25CYXNlLnVwZGF0ZUFkYXB0ZXIsXG4gICAgdXBkYXRlVHJhbnNsYXRpb25BZGFwdGVyT3B0aW9uczogdHJhbnNsYXRpb25CYXNlLnVwZGF0ZU9wdGlvbnNcbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiVFJBTlNMQVRJT05fQ09OU1RBTlRTIiwiYXBwTXV0YXRpb24iLCJhcHBRdWVyeSIsImNyZWF0ZUJhc2VBY3Rpb25zIiwiY2xlYXJDYWNoZWRSZXF1ZXN0IiwiZ2V0Q2FjaGVkUmVxdWVzdCIsInNldENhY2hlZFJlcXVlc3QiLCJpbml0STE4biIsInVwZGF0ZUkxOG5SZXNvdXJjZXMiLCJEQVRBX1RZUEUiLCJkZWZhdWx0VHJhbnNsYXRpb25WYWxpZGF0b3IiLCJpbnB1dCIsIm9wdGlvbnMiLCJjcmVhdGVUcmFuc2xhdGlvbkFjdGlvbnMiLCJmbHV4IiwidHJhbnNsYXRpb25CYXNlIiwidHJhbnNsYXRpb25BZGFwdGVyIiwiYWRhcHRlciIsInRyYW5zbGF0aW9uQWRhcHRlck9wdGlvbnMiLCJhZGFwdGVyT3B0aW9ucyIsInN5bmNXaXRoSTE4biIsInN0YXRlIiwiZ2V0U3RhdGUiLCJ0cmFuc2xhdGlvbnMiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiYXV0b1N5bmNJMThuIiwiYWRkVHJhbnNsYXRpb25zIiwidHJhbnNsYXRpb25Qcm9wcyIsInJlcXVlc3RPcHRpb25zIiwicXVlcnlWYXJpYWJsZXMiLCJ0eXBlIiwidmFsdWUiLCJtYXAiLCJ0IiwidmFsaWRhdG9yIiwib25TdWNjZXNzIiwiZGF0YSIsInJlc3VsdCIsImRpc3BhdGNoIiwiQUREX1RSQU5TTEFUSU9OU19TVUNDRVNTIiwiZXJyb3IiLCJBRERfVFJBTlNMQVRJT05TX0VSUk9SIiwiZ2V0VHJhbnNsYXRpb24iLCJrZXkiLCJsb2NhbGUiLCJuYW1lc3BhY2UiLCJ0cmFuc2xhdGlvbktleSIsInRyYW5zbGF0aW9uIiwiZ2V0VHJhbnNsYXRpb25zIiwiY2FjaGVkUmVzdWx0IiwiR0VUX1RSQU5TTEFUSU9OU19TVUNDRVNTIiwiR0VUX1RSQU5TTEFUSU9OU19FUlJPUiIsImhhc1RyYW5zbGF0aW9uIiwicXVldWVUcmFuc2xhdGlvbktleSIsIlFVRVVFX1RSQU5TTEFUSU9OX0tFWSIsInByb2Nlc3NQZW5kaW5nVHJhbnNsYXRpb25zIiwicGVuZGluZ0tleXMiLCJBcnJheSIsImZyb20iLCJpc1F1ZXVlaW5nIiwiU0VUX1FVRVVFSU5HX1NUQVRFIiwia2V5c1RvRmV0Y2giLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInVwZGF0ZVRyYW5zbGF0aW9uQWRhcHRlciIsInVwZGF0ZUFkYXB0ZXIiLCJ1cGRhdGVUcmFuc2xhdGlvbkFkYXB0ZXJPcHRpb25zIiwidXBkYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBRUQsU0FBUUEscUJBQXFCLFFBQU8sbUNB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
|
|
@@ -1,131 +1,80 @@
|
|
|
1
1
|
import type { FluxFramework } from '@nlabs/arkhamjs';
|
|
2
|
-
import type {
|
|
3
|
-
import type {
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
export
|
|
7
|
-
}
|
|
8
|
-
export interface PersonaAdapterOptions extends BaseAdapterOptions {
|
|
9
|
-
}
|
|
2
|
+
import type { User } from '../../adapters/userAdapter/userAdapter.js';
|
|
3
|
+
import type { SessionType } from '../../utils/api.js';
|
|
4
|
+
import type { BaseAdapterOptions } from '../../utils/validatorFactory.js';
|
|
5
|
+
import type { ActionRequestOptions } from '../../utils/requestCache.js';
|
|
6
|
+
export type UserAdapterOptions = BaseAdapterOptions;
|
|
10
7
|
export interface UserActionsOptions {
|
|
11
8
|
readonly userAdapter?: (input: unknown, options?: UserAdapterOptions) => any;
|
|
12
|
-
readonly personaAdapter?: (input: unknown, options?: PersonaAdapterOptions) => any;
|
|
13
9
|
readonly userAdapterOptions?: UserAdapterOptions;
|
|
14
|
-
readonly personaAdapterOptions?: PersonaAdapterOptions;
|
|
15
10
|
}
|
|
16
11
|
export interface UserApiResultsType {
|
|
17
12
|
readonly users: {
|
|
18
13
|
readonly activeCount?: number;
|
|
19
|
-
readonly
|
|
14
|
+
readonly addUser?: Partial<User>;
|
|
20
15
|
readonly confirmCode?: boolean;
|
|
21
16
|
readonly deactivate?: Partial<User>;
|
|
22
17
|
readonly forgotPassword?: boolean;
|
|
23
18
|
readonly itemById?: Partial<User>;
|
|
19
|
+
readonly getUserBySession?: Partial<User>;
|
|
24
20
|
readonly itemBySession?: Partial<User>;
|
|
25
21
|
readonly itemByToken?: Partial<User>;
|
|
26
22
|
readonly itemByUsername?: Partial<User>;
|
|
23
|
+
readonly getUserList?: User[];
|
|
27
24
|
readonly list?: User[];
|
|
28
25
|
readonly listByConnection?: User[];
|
|
29
26
|
readonly listByLatest?: User[];
|
|
30
27
|
readonly listByReactions?: User[];
|
|
31
28
|
readonly listByTags?: User[];
|
|
29
|
+
readonly search?: User[];
|
|
32
30
|
readonly refreshSession?: SessionType;
|
|
33
31
|
readonly remove?: Partial<User>;
|
|
34
32
|
readonly resetPassword?: boolean;
|
|
33
|
+
readonly saveBillingCard?: Partial<User>;
|
|
34
|
+
readonly sendVerificationEmail?: boolean;
|
|
35
35
|
readonly session?: Partial<User>;
|
|
36
36
|
readonly signIn?: Partial<User>;
|
|
37
37
|
readonly signUp?: Partial<User>;
|
|
38
|
+
readonly deleteBillingCard?: Partial<User>;
|
|
38
39
|
readonly update?: Partial<User>;
|
|
40
|
+
readonly updateUser?: Partial<User>;
|
|
39
41
|
readonly updatePassword?: Partial<boolean>;
|
|
40
|
-
readonly
|
|
42
|
+
readonly updatePlan?: Partial<User>;
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
45
|
export interface userActions {
|
|
44
|
-
|
|
45
|
-
confirmCode: (
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
46
|
+
addUser: (userInput: Partial<User>, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
47
|
+
confirmCode: (code: number, { type, value }: {
|
|
48
|
+
type: 'email' | 'phone';
|
|
49
|
+
value: string;
|
|
50
|
+
}, requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
51
|
+
confirmSignUp: (code: string, type: 'email' | 'phone', requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
52
|
+
currentAuthenticatedUser: (requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
53
|
+
currentUser: (requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
54
|
+
list: (userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
55
|
+
listByConnection: (userId: string, from?: number, to?: number, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
56
|
+
itemById: (userId: string, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
57
|
+
deleteBillingCard: (userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
58
|
+
listByLatest: (username?: string, from?: number, to?: number, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
59
|
+
listByReactions: (username: string, reactionNames: string[], from?: number, to?: number, personaProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
60
|
+
listByTags: (username: string, tagNames: string[], from?: number, to?: number, personaProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
61
|
+
forgotPassword: (username: string, requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
53
62
|
isLoggedIn: () => boolean;
|
|
54
|
-
refreshSession: (token?: string, expires?: number) => Promise<SessionType>;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
signUp: (userInput: Partial<User>, userProps?: string[]) => Promise<User>;
|
|
63
|
+
refreshSession: (token?: string, expires?: number, requestOptions?: ActionRequestOptions) => Promise<SessionType>;
|
|
64
|
+
remove: (userId: string, requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
65
|
+
resetPassword: (username: string, password: string, code: string, type: 'email' | 'phone', requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
66
|
+
search: (query: string, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User[]>;
|
|
67
|
+
sendVerificationEmail: (email: string, requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
68
|
+
session: (userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
69
|
+
saveBillingCard: (card: Record<string, unknown>, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
70
|
+
signIn: (user: Partial<User>, expires?: number, requestOptions?: ActionRequestOptions) => Promise<SessionType>;
|
|
71
|
+
signOut: (requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
72
|
+
signUp: (userInput: Partial<User>, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
73
|
+
updatePassword: (password: string, newPassword: string, requestOptions?: ActionRequestOptions) => Promise<boolean>;
|
|
74
|
+
updateUser: (userInput: Partial<User>, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
75
|
+
updatePlan: (planId: string, userProps?: string[], requestOptions?: ActionRequestOptions) => Promise<User>;
|
|
64
76
|
updateUserAdapter: (adapter: (input: unknown, options?: UserAdapterOptions) => any) => void;
|
|
65
|
-
updatePersonaAdapter: (adapter: (input: unknown, options?: PersonaAdapterOptions) => any) => void;
|
|
66
77
|
updateUserAdapterOptions: (options: UserAdapterOptions) => void;
|
|
67
|
-
updatePersonaAdapterOptions: (options: PersonaAdapterOptions) => void;
|
|
68
78
|
}
|
|
69
|
-
/**
|
|
70
|
-
* Factory function to create userActions with enhanced adapter injection capabilities.
|
|
71
|
-
* Custom adapters are merged with default behavior, allowing partial overrides.
|
|
72
|
-
*
|
|
73
|
-
* @example
|
|
74
|
-
* // Basic usage with default adapters
|
|
75
|
-
* const userActions = createUserActions(flux);
|
|
76
|
-
*
|
|
77
|
-
* @example
|
|
78
|
-
* // Custom adapter that extends default behavior
|
|
79
|
-
* const customUserAdapter = (input: unknown, options?: UserAdapterOptions) => {
|
|
80
|
-
* // input is already validated by default adapter
|
|
81
|
-
* if (input.email && !input.email.includes('@company.com')) {
|
|
82
|
-
* throw new Error('Only company emails allowed');
|
|
83
|
-
* }
|
|
84
|
-
* return input;
|
|
85
|
-
* };
|
|
86
|
-
*
|
|
87
|
-
* const userActions = createUserActions(flux, {
|
|
88
|
-
* userAdapter: customUserAdapter
|
|
89
|
-
* });
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* // Configuration-based adapters
|
|
93
|
-
* const userActions = createUserActions(flux, {
|
|
94
|
-
* userAdapterOptions: {
|
|
95
|
-
* strict: true,
|
|
96
|
-
* environment: 'production'
|
|
97
|
-
* }
|
|
98
|
-
* });
|
|
99
|
-
*
|
|
100
|
-
* @example
|
|
101
|
-
* // Runtime adapter updates
|
|
102
|
-
* userActions.updateUserAdapter(customUserAdapter);
|
|
103
|
-
*
|
|
104
|
-
* @example
|
|
105
|
-
* // Complex adapter with business logic
|
|
106
|
-
* const businessUserAdapter = (input: unknown, options?: UserAdapterOptions) => {
|
|
107
|
-
* // input is already validated by default adapter
|
|
108
|
-
* const user = input as any;
|
|
109
|
-
*
|
|
110
|
-
* // Add business-specific validation
|
|
111
|
-
* if (user.userAccess > 5) {
|
|
112
|
-
* throw new Error('User access level too high');
|
|
113
|
-
* }
|
|
114
|
-
*
|
|
115
|
-
* // Add computed fields
|
|
116
|
-
* return {
|
|
117
|
-
* ...user,
|
|
118
|
-
* fullName: `${user.first || ''} ${user.last || ''}`.trim(),
|
|
119
|
-
* isAdmin: user.userAccess >= 3
|
|
120
|
-
* };
|
|
121
|
-
* };
|
|
122
|
-
*
|
|
123
|
-
* const userActions = createUserActions(flux, {
|
|
124
|
-
* userAdapter: businessUserAdapter,
|
|
125
|
-
* userAdapterOptions: {
|
|
126
|
-
* strict: true,
|
|
127
|
-
* environment: 'production'
|
|
128
|
-
* }
|
|
129
|
-
* });
|
|
130
|
-
*/
|
|
131
79
|
export declare const createUserActions: (flux: FluxFramework, options?: UserActionsOptions) => userActions;
|
|
80
|
+
//# sourceMappingURL=userActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userActions.d.ts","sourceRoot":"","sources":["../../../src/actions/userActions/userActions.ts"],"names":[],"mappings":"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"}
|