@easyling/sanity-connector 0.0.1 → 0.0.2-rc.1
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/dist/.tsbuildinfo +1 -1
- package/package.json +18 -12
- package/dist/actions/bulkTranslate.d.ts +0 -7
- package/dist/actions/bulkTranslate.d.ts.map +0 -1
- package/dist/actions/bulkTranslate.js +0 -543
- package/dist/actions/bulkTranslate.js.map +0 -1
- package/dist/actions/manageDNTFields.d.ts +0 -12
- package/dist/actions/manageDNTFields.d.ts.map +0 -1
- package/dist/actions/manageDNTFields.js +0 -100
- package/dist/actions/manageDNTFields.js.map +0 -1
- package/dist/actions/translateDocument.d.ts +0 -7
- package/dist/actions/translateDocument.d.ts.map +0 -1
- package/dist/actions/translateDocument.js +0 -256
- package/dist/actions/translateDocument.js.map +0 -1
- package/dist/components/RadioWithDefault.d.ts +0 -17
- package/dist/components/RadioWithDefault.d.ts.map +0 -1
- package/dist/components/RadioWithDefault.js +0 -29
- package/dist/components/RadioWithDefault.js.map +0 -1
- package/dist/components/auth/AuthNavbar.d.ts +0 -18
- package/dist/components/auth/AuthNavbar.d.ts.map +0 -1
- package/dist/components/auth/AuthNavbar.js +0 -15
- package/dist/components/auth/AuthNavbar.js.map +0 -1
- package/dist/components/auth/AuthStatus.d.ts +0 -27
- package/dist/components/auth/AuthStatus.d.ts.map +0 -1
- package/dist/components/auth/AuthStatus.js +0 -82
- package/dist/components/auth/AuthStatus.js.map +0 -1
- package/dist/components/auth/AuthStatusWrapper.d.ts +0 -15
- package/dist/components/auth/AuthStatusWrapper.d.ts.map +0 -1
- package/dist/components/auth/AuthStatusWrapper.js +0 -39
- package/dist/components/auth/AuthStatusWrapper.js.map +0 -1
- package/dist/components/auth/MigrationPrompt.d.ts +0 -20
- package/dist/components/auth/MigrationPrompt.d.ts.map +0 -1
- package/dist/components/auth/MigrationPrompt.js +0 -16
- package/dist/components/auth/MigrationPrompt.js.map +0 -1
- package/dist/components/auth/MigrationPromptWrapper.d.ts +0 -14
- package/dist/components/auth/MigrationPromptWrapper.d.ts.map +0 -1
- package/dist/components/auth/MigrationPromptWrapper.js +0 -16
- package/dist/components/auth/MigrationPromptWrapper.js.map +0 -1
- package/dist/components/auth/OAuthCallback.d.ts +0 -20
- package/dist/components/auth/OAuthCallback.d.ts.map +0 -1
- package/dist/components/auth/OAuthCallback.js +0 -12
- package/dist/components/auth/OAuthCallback.js.map +0 -1
- package/dist/components/auth/index.d.ts +0 -15
- package/dist/components/auth/index.d.ts.map +0 -1
- package/dist/components/auth/index.js +0 -12
- package/dist/components/auth/index.js.map +0 -1
- package/dist/components/config/LocaleConfigTool.d.ts +0 -17
- package/dist/components/config/LocaleConfigTool.d.ts.map +0 -1
- package/dist/components/config/LocaleConfigTool.js +0 -186
- package/dist/components/config/LocaleConfigTool.js.map +0 -1
- package/dist/components/config/LocaleConfigToolWrapper.d.ts +0 -13
- package/dist/components/config/LocaleConfigToolWrapper.d.ts.map +0 -1
- package/dist/components/config/LocaleConfigToolWrapper.js +0 -26
- package/dist/components/config/LocaleConfigToolWrapper.js.map +0 -1
- package/dist/components/config/OAuthConfig.d.ts +0 -26
- package/dist/components/config/OAuthConfig.d.ts.map +0 -1
- package/dist/components/config/OAuthConfig.js +0 -152
- package/dist/components/config/OAuthConfig.js.map +0 -1
- package/dist/components/config/OAuthConfigWrapper.d.ts +0 -13
- package/dist/components/config/OAuthConfigWrapper.d.ts.map +0 -1
- package/dist/components/config/OAuthConfigWrapper.js +0 -41
- package/dist/components/config/OAuthConfigWrapper.js.map +0 -1
- package/dist/components/config/PasswordInput.d.ts +0 -14
- package/dist/components/config/PasswordInput.d.ts.map +0 -1
- package/dist/components/config/PasswordInput.js +0 -23
- package/dist/components/config/PasswordInput.js.map +0 -1
- package/dist/components/config/index.d.ts +0 -9
- package/dist/components/config/index.d.ts.map +0 -1
- package/dist/components/config/index.js +0 -8
- package/dist/components/config/index.js.map +0 -1
- package/dist/components/config/localeConfigToolDefinition.d.ts +0 -13
- package/dist/components/config/localeConfigToolDefinition.d.ts.map +0 -1
- package/dist/components/config/localeConfigToolDefinition.js +0 -19
- package/dist/components/config/localeConfigToolDefinition.js.map +0 -1
- package/dist/components/config/oauthConfigToolDefinition.d.ts +0 -13
- package/dist/components/config/oauthConfigToolDefinition.d.ts.map +0 -1
- package/dist/components/config/oauthConfigToolDefinition.js +0 -19
- package/dist/components/config/oauthConfigToolDefinition.js.map +0 -1
- package/dist/components/dialogs/ConfirmationDialog.d.ts +0 -21
- package/dist/components/dialogs/ConfirmationDialog.d.ts.map +0 -1
- package/dist/components/dialogs/ConfirmationDialog.js +0 -28
- package/dist/components/dialogs/ConfirmationDialog.js.map +0 -1
- package/dist/components/dialogs/ErrorDialog.d.ts +0 -21
- package/dist/components/dialogs/ErrorDialog.d.ts.map +0 -1
- package/dist/components/dialogs/ErrorDialog.js +0 -28
- package/dist/components/dialogs/ErrorDialog.js.map +0 -1
- package/dist/components/dialogs/LocaleSelectionDialog.d.ts +0 -41
- package/dist/components/dialogs/LocaleSelectionDialog.d.ts.map +0 -1
- package/dist/components/dialogs/LocaleSelectionDialog.js +0 -117
- package/dist/components/dialogs/LocaleSelectionDialog.js.map +0 -1
- package/dist/components/dialogs/SuccessDialog.d.ts +0 -19
- package/dist/components/dialogs/SuccessDialog.d.ts.map +0 -1
- package/dist/components/dialogs/SuccessDialog.js +0 -37
- package/dist/components/dialogs/SuccessDialog.js.map +0 -1
- package/dist/components/dialogs/index.d.ts +0 -12
- package/dist/components/dialogs/index.d.ts.map +0 -1
- package/dist/components/dialogs/index.js +0 -8
- package/dist/components/dialogs/index.js.map +0 -1
- package/dist/components/dnt/DNTFieldBadge.d.ts +0 -16
- package/dist/components/dnt/DNTFieldBadge.d.ts.map +0 -1
- package/dist/components/dnt/DNTFieldBadge.js +0 -56
- package/dist/components/dnt/DNTFieldBadge.js.map +0 -1
- package/dist/components/dnt/DNTFieldComponent.d.ts +0 -17
- package/dist/components/dnt/DNTFieldComponent.d.ts.map +0 -1
- package/dist/components/dnt/DNTFieldComponent.js +0 -21
- package/dist/components/dnt/DNTFieldComponent.js.map +0 -1
- package/dist/components/dnt/DNTFieldInput.d.ts +0 -14
- package/dist/components/dnt/DNTFieldInput.d.ts.map +0 -1
- package/dist/components/dnt/DNTFieldInput.js +0 -76
- package/dist/components/dnt/DNTFieldInput.js.map +0 -1
- package/dist/components/dnt/index.d.ts +0 -7
- package/dist/components/dnt/index.d.ts.map +0 -1
- package/dist/components/dnt/index.js +0 -7
- package/dist/components/dnt/index.js.map +0 -1
- package/dist/config/index.d.ts +0 -6
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -6
- package/dist/config/index.js.map +0 -1
- package/dist/config/pluginConfig.d.ts +0 -163
- package/dist/config/pluginConfig.d.ts.map +0 -1
- package/dist/config/pluginConfig.js +0 -548
- package/dist/config/pluginConfig.js.map +0 -1
- package/dist/index.d.ts +0 -12
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -12
- package/dist/index.js.map +0 -1
- package/dist/plugin.d.ts +0 -3
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -137
- package/dist/plugin.js.map +0 -1
- package/dist/services/authStateManager.d.ts +0 -94
- package/dist/services/authStateManager.d.ts.map +0 -1
- package/dist/services/authStateManager.js +0 -208
- package/dist/services/authStateManager.js.map +0 -1
- package/dist/services/contentExtractor.d.ts +0 -95
- package/dist/services/contentExtractor.d.ts.map +0 -1
- package/dist/services/contentExtractor.js +0 -516
- package/dist/services/contentExtractor.js.map +0 -1
- package/dist/services/dialogService.d.ts +0 -96
- package/dist/services/dialogService.d.ts.map +0 -1
- package/dist/services/dialogService.js +0 -244
- package/dist/services/dialogService.js.map +0 -1
- package/dist/services/dntServiceManager.d.ts +0 -44
- package/dist/services/dntServiceManager.d.ts.map +0 -1
- package/dist/services/dntServiceManager.js +0 -74
- package/dist/services/dntServiceManager.js.map +0 -1
- package/dist/services/dntStorageAdapter.d.ts +0 -73
- package/dist/services/dntStorageAdapter.d.ts.map +0 -1
- package/dist/services/dntStorageAdapter.js +0 -192
- package/dist/services/dntStorageAdapter.js.map +0 -1
- package/dist/services/documentCreationService.d.ts +0 -139
- package/dist/services/documentCreationService.d.ts.map +0 -1
- package/dist/services/documentCreationService.js +0 -938
- package/dist/services/documentCreationService.js.map +0 -1
- package/dist/services/localeService.d.ts +0 -160
- package/dist/services/localeService.d.ts.map +0 -1
- package/dist/services/localeService.js +0 -300
- package/dist/services/localeService.js.map +0 -1
- package/dist/services/localeStorageAdapter.d.ts +0 -42
- package/dist/services/localeStorageAdapter.d.ts.map +0 -1
- package/dist/services/localeStorageAdapter.js +0 -107
- package/dist/services/localeStorageAdapter.js.map +0 -1
- package/dist/services/oauthConfigStorage.d.ts +0 -46
- package/dist/services/oauthConfigStorage.d.ts.map +0 -1
- package/dist/services/oauthConfigStorage.js +0 -122
- package/dist/services/oauthConfigStorage.js.map +0 -1
- package/dist/services/oauthService.d.ts +0 -48
- package/dist/services/oauthService.d.ts.map +0 -1
- package/dist/services/oauthService.js +0 -71
- package/dist/services/oauthService.js.map +0 -1
- package/dist/services/oauthServiceManager.d.ts +0 -189
- package/dist/services/oauthServiceManager.d.ts.map +0 -1
- package/dist/services/oauthServiceManager.js +0 -380
- package/dist/services/oauthServiceManager.js.map +0 -1
- package/dist/services/tokenStorage.d.ts +0 -54
- package/dist/services/tokenStorage.d.ts.map +0 -1
- package/dist/services/tokenStorage.js +0 -140
- package/dist/services/tokenStorage.js.map +0 -1
- package/dist/services/translationService.d.ts +0 -374
- package/dist/services/translationService.d.ts.map +0 -1
- package/dist/services/translationService.js +0 -687
- package/dist/services/translationService.js.map +0 -1
- package/dist/services/unifiedConfigStorage.d.ts +0 -124
- package/dist/services/unifiedConfigStorage.d.ts.map +0 -1
- package/dist/services/unifiedConfigStorage.js +0 -304
- package/dist/services/unifiedConfigStorage.js.map +0 -1
- package/dist/test-utils.d.ts +0 -9
- package/dist/test-utils.d.ts.map +0 -1
- package/dist/test-utils.js +0 -13
- package/dist/test-utils.js.map +0 -1
- package/dist/types/dialog.d.ts +0 -107
- package/dist/types/dialog.d.ts.map +0 -1
- package/dist/types/dialog.js +0 -6
- package/dist/types/dialog.js.map +0 -1
- package/dist/types/dnt.d.ts +0 -84
- package/dist/types/dnt.d.ts.map +0 -1
- package/dist/types/dnt.js +0 -5
- package/dist/types/dnt.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/locale.d.ts +0 -116
- package/dist/types/locale.d.ts.map +0 -1
- package/dist/types/locale.js +0 -189
- package/dist/types/locale.js.map +0 -1
- package/dist/types/oauth.d.ts +0 -90
- package/dist/types/oauth.d.ts.map +0 -1
- package/dist/types/oauth.js +0 -62
- package/dist/types/oauth.js.map +0 -1
- package/dist/types/pluginConfig.d.ts +0 -45
- package/dist/types/pluginConfig.d.ts.map +0 -1
- package/dist/types/pluginConfig.js +0 -6
- package/dist/types/pluginConfig.js.map +0 -1
- package/dist/types/translation.d.ts +0 -122
- package/dist/types/translation.d.ts.map +0 -1
- package/dist/types/translation.js +0 -6
- package/dist/types/translation.js.map +0 -1
- package/dist/utils/htmlFormatter.d.ts +0 -66
- package/dist/utils/htmlFormatter.d.ts.map +0 -1
- package/dist/utils/htmlFormatter.js +0 -191
- package/dist/utils/htmlFormatter.js.map +0 -1
- package/dist/utils/index.d.ts +0 -15
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js +0 -16
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -105
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -229
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/oauthErrorFeedback.d.ts +0 -76
- package/dist/utils/oauthErrorFeedback.d.ts.map +0 -1
- package/dist/utils/oauthErrorFeedback.js +0 -134
- package/dist/utils/oauthErrorFeedback.js.map +0 -1
- package/dist/utils/oauthLogger.d.ts +0 -176
- package/dist/utils/oauthLogger.d.ts.map +0 -1
- package/dist/utils/oauthLogger.js +0 -282
- package/dist/utils/oauthLogger.js.map +0 -1
- package/dist/utils/validator.d.ts +0 -67
- package/dist/utils/validator.d.ts.map +0 -1
- package/dist/utils/validator.js +0 -390
- package/dist/utils/validator.js.map +0 -1
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OAuth Service Manager
|
|
3
|
-
* Requirements: 6.1, 10.1, 9.2
|
|
4
|
-
*
|
|
5
|
-
* Manages singleton instances of OAuth services and handles initialization.
|
|
6
|
-
* Provides centralized access to OAuth services throughout the plugin.
|
|
7
|
-
*/
|
|
8
|
-
import { OAuthService } from './oauthService';
|
|
9
|
-
import { TokenStorage } from './tokenStorage';
|
|
10
|
-
import { AuthStateManager } from './authStateManager';
|
|
11
|
-
import { TranslationService } from './translationService';
|
|
12
|
-
import { OAuthConfigStorage } from './oauthConfigStorage';
|
|
13
|
-
import { UnifiedConfigStorage } from './unifiedConfigStorage';
|
|
14
|
-
/**
|
|
15
|
-
* OAuth Service Manager
|
|
16
|
-
*
|
|
17
|
-
* Singleton manager for OAuth services. Ensures all services are properly
|
|
18
|
-
* initialized and provides centralized access throughout the plugin.
|
|
19
|
-
*/
|
|
20
|
-
export class OAuthServiceManager {
|
|
21
|
-
/**
|
|
22
|
-
* Private constructor to enforce singleton pattern
|
|
23
|
-
* Requirements: 6.1, 10.1
|
|
24
|
-
*/
|
|
25
|
-
constructor(client) {
|
|
26
|
-
this.oauthService = null;
|
|
27
|
-
this.initialized = false;
|
|
28
|
-
this.client = client;
|
|
29
|
-
// Initialize core services
|
|
30
|
-
this.tokenStorage = new TokenStorage();
|
|
31
|
-
this.authStateManager = new AuthStateManager(this.tokenStorage);
|
|
32
|
-
this.translationService = new TranslationService();
|
|
33
|
-
this.oauthConfigStorage = new OAuthConfigStorage(client);
|
|
34
|
-
this.unifiedConfigStorage = new UnifiedConfigStorage(client);
|
|
35
|
-
console.log('OAuthServiceManager created');
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* Get or create the singleton instance
|
|
39
|
-
* Requirements: 6.1, 10.1
|
|
40
|
-
*
|
|
41
|
-
* @param client - Sanity client instance
|
|
42
|
-
* @returns Singleton instance of OAuthServiceManager
|
|
43
|
-
*/
|
|
44
|
-
static getInstance(client) {
|
|
45
|
-
if (!OAuthServiceManager.instance) {
|
|
46
|
-
OAuthServiceManager.instance = new OAuthServiceManager(client);
|
|
47
|
-
}
|
|
48
|
-
return OAuthServiceManager.instance;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Reset the singleton instance (useful for testing)
|
|
52
|
-
*/
|
|
53
|
-
static resetInstance() {
|
|
54
|
-
OAuthServiceManager.instance = null;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Initialize OAuth services
|
|
58
|
-
* Requirements: 6.1, 10.1
|
|
59
|
-
*
|
|
60
|
-
* Loads OAuth configuration, initializes OAuth service if configured,
|
|
61
|
-
* initializes authentication state from storage, and sets up translation
|
|
62
|
-
* service with authentication if available.
|
|
63
|
-
*
|
|
64
|
-
* @returns Promise that resolves when initialization is complete
|
|
65
|
-
*/
|
|
66
|
-
async initialize() {
|
|
67
|
-
if (this.initialized) {
|
|
68
|
-
console.log('OAuthServiceManager already initialized');
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
try {
|
|
72
|
-
console.log('Initializing OAuth services...');
|
|
73
|
-
// Load OAuth configuration
|
|
74
|
-
const oauthConfig = await this.loadOAuthConfig();
|
|
75
|
-
if (oauthConfig) {
|
|
76
|
-
// Initialize OAuth service with configuration
|
|
77
|
-
this.oauthService = new OAuthService(oauthConfig);
|
|
78
|
-
console.log('OAuth service initialized with configuration');
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
console.log('No OAuth configuration found, OAuth features will be disabled');
|
|
82
|
-
}
|
|
83
|
-
// Initialize authentication state from storage
|
|
84
|
-
await this.authStateManager.initialize();
|
|
85
|
-
console.log('Authentication state initialized');
|
|
86
|
-
// Set up translation service with authentication if available
|
|
87
|
-
await this.setupTranslationServiceAuth();
|
|
88
|
-
this.initialized = true;
|
|
89
|
-
console.log('OAuth services initialization complete');
|
|
90
|
-
}
|
|
91
|
-
catch (error) {
|
|
92
|
-
console.error('Error initializing OAuth services:', error);
|
|
93
|
-
// Don't throw - allow plugin to continue without OAuth
|
|
94
|
-
this.initialized = true;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Load OAuth configuration from storage
|
|
99
|
-
* Requirements: 9.1, 9.4
|
|
100
|
-
*
|
|
101
|
-
* @returns OAuth configuration or null if not configured
|
|
102
|
-
*/
|
|
103
|
-
async loadOAuthConfig() {
|
|
104
|
-
try {
|
|
105
|
-
return await this.oauthConfigStorage.load();
|
|
106
|
-
}
|
|
107
|
-
catch (error) {
|
|
108
|
-
console.error('Failed to load OAuth configuration:', error);
|
|
109
|
-
return null;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Set up translation service with authentication if available
|
|
114
|
-
*
|
|
115
|
-
* Checks for valid stored authentication and configures the translation
|
|
116
|
-
* service to use it.
|
|
117
|
-
*
|
|
118
|
-
* Supports dual mode operation:
|
|
119
|
-
* - If OAuth is configured and authenticated, sets up OAuth authentication
|
|
120
|
-
* - If OAuth is not configured, translation service works in legacy mode
|
|
121
|
-
*
|
|
122
|
-
* IMPORTANT: This method also syncs configuration from Sanity to localStorage
|
|
123
|
-
* if configuration exists in Sanity but not in localStorage (migration support).
|
|
124
|
-
*/
|
|
125
|
-
async setupTranslationServiceAuth() {
|
|
126
|
-
try {
|
|
127
|
-
// Always set up the translation endpoint with fallback to default
|
|
128
|
-
await this.setupTranslationServiceEndpoint();
|
|
129
|
-
// If OAuth is not configured, translation service works in legacy mode
|
|
130
|
-
if (!this.isOAuthConfigured()) {
|
|
131
|
-
console.log('Easyling not configured, translation service will use legacy mode');
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
// Get stored auth data from localStorage
|
|
135
|
-
let authData = await this.tokenStorage.getAuthData();
|
|
136
|
-
// If no auth data in localStorage but OAuth config exists in Sanity,
|
|
137
|
-
// sync from Sanity to localStorage (migration/recovery)
|
|
138
|
-
if (!authData) {
|
|
139
|
-
console.log('No stored authentication data found in localStorage, checking Sanity configuration');
|
|
140
|
-
const oauthConfig = await this.loadOAuthConfig();
|
|
141
|
-
if (oauthConfig && oauthConfig.accessToken && oauthConfig.projectId) {
|
|
142
|
-
console.log('Found configuration in Sanity, syncing to localStorage');
|
|
143
|
-
// Store in localStorage
|
|
144
|
-
await this.tokenStorage.storeAuthData({
|
|
145
|
-
accessToken: oauthConfig.accessToken,
|
|
146
|
-
projectId: oauthConfig.projectId,
|
|
147
|
-
storedAt: Date.now()
|
|
148
|
-
});
|
|
149
|
-
// Update auth state
|
|
150
|
-
this.authStateManager.setState('authenticated', {
|
|
151
|
-
projectId: oauthConfig.projectId
|
|
152
|
-
});
|
|
153
|
-
// Use the synced data
|
|
154
|
-
authData = await this.tokenStorage.getAuthData();
|
|
155
|
-
console.log('Successfully synced configuration from Sanity to localStorage');
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
console.log('No valid configuration found, translation service will use legacy mode');
|
|
159
|
-
return;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// At this point, authData should exist if we have valid configuration
|
|
163
|
-
if (!authData) {
|
|
164
|
-
console.log('No authentication data available, translation service will use legacy mode');
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
// Set authentication on translation service
|
|
168
|
-
this.translationService.setAuthToken(authData.accessToken, authData.projectId);
|
|
169
|
-
console.log('Translation service configured with Easyling authentication');
|
|
170
|
-
// Load and set translation endpoint with fallback to default
|
|
171
|
-
await this.setupTranslationServiceEndpoint();
|
|
172
|
-
}
|
|
173
|
-
catch (error) {
|
|
174
|
-
console.error('Error setting up translation service authentication:', error);
|
|
175
|
-
console.log('Translation service will fall back to legacy mode');
|
|
176
|
-
// Even if auth fails, try to set the endpoint
|
|
177
|
-
try {
|
|
178
|
-
await this.setupTranslationServiceEndpoint();
|
|
179
|
-
}
|
|
180
|
-
catch (endpointError) {
|
|
181
|
-
console.error('Error setting up translation service endpoint:', endpointError);
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Set up translation service endpoint and settings from configuration
|
|
187
|
-
*
|
|
188
|
-
* Loads translation endpoint, content type, and other settings from
|
|
189
|
-
* unified configuration with fallback to defaults.
|
|
190
|
-
*/
|
|
191
|
-
async setupTranslationServiceEndpoint() {
|
|
192
|
-
try {
|
|
193
|
-
// Load endpoint with fallback to default
|
|
194
|
-
const endpoint = await this.unifiedConfigStorage.getTranslationEndpoint();
|
|
195
|
-
this.translationService.setEndpoint(endpoint);
|
|
196
|
-
console.log(`Translation service endpoint configured: ${endpoint}`);
|
|
197
|
-
// Note: requestContentType and responseAcceptHeader are loaded when needed
|
|
198
|
-
// by the translation service. They don't need to be set on initialization.
|
|
199
|
-
}
|
|
200
|
-
catch (error) {
|
|
201
|
-
console.error('Error loading translation service endpoint:', error);
|
|
202
|
-
// The translation service will use its default endpoint
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Get OAuth service instance
|
|
207
|
-
* Requirements: 1.1, 1.2, 1.3
|
|
208
|
-
*
|
|
209
|
-
* @returns OAuth service instance or null if not configured
|
|
210
|
-
*/
|
|
211
|
-
getOAuthService() {
|
|
212
|
-
return this.oauthService;
|
|
213
|
-
}
|
|
214
|
-
/**
|
|
215
|
-
* Get token storage instance
|
|
216
|
-
* Requirements: 3.3, 3.4, 3.5
|
|
217
|
-
*
|
|
218
|
-
* @returns Token storage instance
|
|
219
|
-
*/
|
|
220
|
-
getTokenStorage() {
|
|
221
|
-
return this.tokenStorage;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Get authentication state manager instance
|
|
225
|
-
* Requirements: 6.1, 6.2, 6.3
|
|
226
|
-
*
|
|
227
|
-
* @returns Authentication state manager instance
|
|
228
|
-
*/
|
|
229
|
-
getAuthStateManager() {
|
|
230
|
-
return this.authStateManager;
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Get translation service instance
|
|
234
|
-
* Requirements: 4.1, 4.2, 4.3
|
|
235
|
-
*
|
|
236
|
-
* @returns Translation service instance
|
|
237
|
-
*/
|
|
238
|
-
getTranslationService() {
|
|
239
|
-
return this.translationService;
|
|
240
|
-
}
|
|
241
|
-
/**
|
|
242
|
-
* Get OAuth configuration storage instance
|
|
243
|
-
* Requirements: 9.1, 9.4
|
|
244
|
-
*
|
|
245
|
-
* @returns OAuth configuration storage instance
|
|
246
|
-
*/
|
|
247
|
-
getOAuthConfigStorage() {
|
|
248
|
-
return this.oauthConfigStorage;
|
|
249
|
-
}
|
|
250
|
-
/**
|
|
251
|
-
* Check if OAuth is configured
|
|
252
|
-
* Requirements: 10.1, 10.3
|
|
253
|
-
*
|
|
254
|
-
* @returns True if OAuth service is initialized
|
|
255
|
-
*/
|
|
256
|
-
isOAuthConfigured() {
|
|
257
|
-
return this.oauthService !== null;
|
|
258
|
-
}
|
|
259
|
-
/**
|
|
260
|
-
* Detect which authentication method should be used
|
|
261
|
-
* Requirements: 10.1, 10.3, 10.4
|
|
262
|
-
*
|
|
263
|
-
* Determines whether to use OAuth or legacy endpoint-based authentication
|
|
264
|
-
* based on the presence of OAuth configuration.
|
|
265
|
-
*
|
|
266
|
-
* @returns 'oauth' if OAuth is configured, 'legacy' otherwise
|
|
267
|
-
*/
|
|
268
|
-
getAuthenticationMode() {
|
|
269
|
-
return this.isOAuthConfigured() ? 'oauth' : 'legacy';
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Check if user is authenticated with OAuth
|
|
273
|
-
* Requirements: 10.1, 10.3
|
|
274
|
-
*
|
|
275
|
-
* @returns True if OAuth is configured and user has valid authentication
|
|
276
|
-
*/
|
|
277
|
-
async isOAuthAuthenticated() {
|
|
278
|
-
if (!this.isOAuthConfigured()) {
|
|
279
|
-
return false;
|
|
280
|
-
}
|
|
281
|
-
const authData = await this.tokenStorage.getAuthData();
|
|
282
|
-
if (!authData) {
|
|
283
|
-
return false;
|
|
284
|
-
}
|
|
285
|
-
const isExpired = await this.tokenStorage.isTokenExpired();
|
|
286
|
-
return !isExpired;
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Get authentication status information
|
|
290
|
-
* Requirements: 10.1, 10.3, 10.4
|
|
291
|
-
*
|
|
292
|
-
* Provides detailed information about the current authentication mode
|
|
293
|
-
* and status for display to users.
|
|
294
|
-
*
|
|
295
|
-
* @returns Object with authentication mode and status details
|
|
296
|
-
*/
|
|
297
|
-
async getAuthenticationStatus() {
|
|
298
|
-
const mode = this.getAuthenticationMode();
|
|
299
|
-
const isOAuthConfigured = this.isOAuthConfigured();
|
|
300
|
-
const isAuthenticated = await this.isOAuthAuthenticated();
|
|
301
|
-
return {
|
|
302
|
-
mode,
|
|
303
|
-
isOAuthConfigured,
|
|
304
|
-
isAuthenticated,
|
|
305
|
-
// OAuth mode requires authentication, legacy mode does not
|
|
306
|
-
requiresAuthentication: mode === 'oauth' && !isAuthenticated
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Check if services are initialized
|
|
311
|
-
* Requirements: 6.1
|
|
312
|
-
*
|
|
313
|
-
* @returns True if initialization is complete
|
|
314
|
-
*/
|
|
315
|
-
isInitialized() {
|
|
316
|
-
return this.initialized;
|
|
317
|
-
}
|
|
318
|
-
/**
|
|
319
|
-
* Save authentication configuration and data
|
|
320
|
-
*
|
|
321
|
-
* Stores the access token and project ID, and configures the translation service.
|
|
322
|
-
*
|
|
323
|
-
* @param accessToken - The Easyling access token
|
|
324
|
-
* @param projectId - The Easyling project ID
|
|
325
|
-
*/
|
|
326
|
-
async saveAuth(accessToken, projectId) {
|
|
327
|
-
try {
|
|
328
|
-
// Store authentication data
|
|
329
|
-
await this.tokenStorage.storeAuthData({
|
|
330
|
-
accessToken,
|
|
331
|
-
projectId,
|
|
332
|
-
storedAt: Date.now()
|
|
333
|
-
});
|
|
334
|
-
// Update authentication state
|
|
335
|
-
this.authStateManager.setState('authenticated', {
|
|
336
|
-
projectId
|
|
337
|
-
});
|
|
338
|
-
// Set up translation service authentication
|
|
339
|
-
this.translationService.setAuthToken(accessToken, projectId);
|
|
340
|
-
console.log('Authentication saved successfully');
|
|
341
|
-
}
|
|
342
|
-
catch (error) {
|
|
343
|
-
console.error('Failed to save authentication:', error);
|
|
344
|
-
this.authStateManager.setState('error', {
|
|
345
|
-
error: error instanceof Error ? error.message : 'Failed to save authentication'
|
|
346
|
-
});
|
|
347
|
-
throw error;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Logout and clear authentication
|
|
352
|
-
*/
|
|
353
|
-
async logout() {
|
|
354
|
-
// Clear translation service authentication
|
|
355
|
-
this.translationService.clearAuth();
|
|
356
|
-
// Logout from auth state manager (clears storage)
|
|
357
|
-
await this.authStateManager.logout();
|
|
358
|
-
console.log('Logged out successfully');
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Refresh configuration from Sanity
|
|
362
|
-
*
|
|
363
|
-
* Reloads the translation service endpoint and other settings from Sanity.
|
|
364
|
-
* This should be called when the configuration has been updated in Sanity
|
|
365
|
-
* to ensure the plugin is using the latest settings.
|
|
366
|
-
*/
|
|
367
|
-
async refreshConfiguration() {
|
|
368
|
-
try {
|
|
369
|
-
console.log('Refreshing configuration from Sanity...');
|
|
370
|
-
await this.setupTranslationServiceEndpoint();
|
|
371
|
-
console.log('Configuration refreshed successfully');
|
|
372
|
-
}
|
|
373
|
-
catch (error) {
|
|
374
|
-
console.error('Error refreshing configuration:', error);
|
|
375
|
-
throw error;
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
OAuthServiceManager.instance = null;
|
|
380
|
-
//# sourceMappingURL=oauthServiceManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"oauthServiceManager.js","sourceRoot":"","sources":["../../src/services/oauthServiceManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Token Storage Service
|
|
3
|
-
*
|
|
4
|
-
* Manages secure storage and retrieval of OAuth authentication tokens
|
|
5
|
-
* and related data using Sanity Studio's localStorage wrapper.
|
|
6
|
-
*
|
|
7
|
-
* Requirements: 3.3, 3.4, 3.5, 6.1, 6.4, 8.4
|
|
8
|
-
*/
|
|
9
|
-
import { StoredAuthData } from '../types/oauth';
|
|
10
|
-
/**
|
|
11
|
-
* Token Storage Service
|
|
12
|
-
*
|
|
13
|
-
* Provides methods for persisting, retrieving, and managing OAuth authentication data.
|
|
14
|
-
* Uses Sanity Studio's localStorage for persistence with JSON serialization.
|
|
15
|
-
*/
|
|
16
|
-
export declare class TokenStorage {
|
|
17
|
-
/**
|
|
18
|
-
* Store authentication data securely
|
|
19
|
-
*
|
|
20
|
-
* @param data - Authentication data to store
|
|
21
|
-
* @throws {OAuthError} If storage operation fails
|
|
22
|
-
*/
|
|
23
|
-
storeAuthData(data: StoredAuthData): Promise<void>;
|
|
24
|
-
/**
|
|
25
|
-
* Retrieve stored authentication data
|
|
26
|
-
*
|
|
27
|
-
* @returns Stored authentication data or null if not found
|
|
28
|
-
* @throws {OAuthError} If storage read fails or data is corrupted
|
|
29
|
-
*/
|
|
30
|
-
getAuthData(): Promise<StoredAuthData | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Clear all stored authentication data
|
|
33
|
-
*
|
|
34
|
-
* Requirements: 6.4
|
|
35
|
-
*
|
|
36
|
-
* @throws {OAuthError} If storage clear operation fails
|
|
37
|
-
*/
|
|
38
|
-
clearAuthData(): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* Check if the stored token is expired
|
|
41
|
-
*
|
|
42
|
-
* For long-lived tokens, this always returns false if a token exists.
|
|
43
|
-
*
|
|
44
|
-
* @returns True if token is not found, false if token exists
|
|
45
|
-
*/
|
|
46
|
-
isTokenExpired(): Promise<boolean>;
|
|
47
|
-
/**
|
|
48
|
-
* Get a valid access token if available
|
|
49
|
-
*
|
|
50
|
-
* @returns Valid access token or null if not found
|
|
51
|
-
*/
|
|
52
|
-
getValidAccessToken(): Promise<string | null>;
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=tokenStorage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenStorage.d.ts","sourceRoot":"","sources":["../../src/services/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,cAAc,EAA8B,MAAM,gBAAgB,CAAC;AAO5E;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACG,aAAa,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCxD;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAmCnD;;;;;;OAMG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAapC;;;;;;OAMG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAYxC;;;;OAIG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAcpD"}
|
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Token Storage Service
|
|
3
|
-
*
|
|
4
|
-
* Manages secure storage and retrieval of OAuth authentication tokens
|
|
5
|
-
* and related data using Sanity Studio's localStorage wrapper.
|
|
6
|
-
*
|
|
7
|
-
* Requirements: 3.3, 3.4, 3.5, 6.1, 6.4, 8.4
|
|
8
|
-
*/
|
|
9
|
-
import { OAuthError, OAuthErrorType } from '../types/oauth';
|
|
10
|
-
/**
|
|
11
|
-
* Storage key for authentication data in localStorage
|
|
12
|
-
*/
|
|
13
|
-
const AUTH_DATA_STORAGE_KEY = 'sanity-translation-plugin:oauth:auth-data';
|
|
14
|
-
/**
|
|
15
|
-
* Token Storage Service
|
|
16
|
-
*
|
|
17
|
-
* Provides methods for persisting, retrieving, and managing OAuth authentication data.
|
|
18
|
-
* Uses Sanity Studio's localStorage for persistence with JSON serialization.
|
|
19
|
-
*/
|
|
20
|
-
export class TokenStorage {
|
|
21
|
-
/**
|
|
22
|
-
* Store authentication data securely
|
|
23
|
-
*
|
|
24
|
-
* @param data - Authentication data to store
|
|
25
|
-
* @throws {OAuthError} If storage operation fails
|
|
26
|
-
*/
|
|
27
|
-
async storeAuthData(data) {
|
|
28
|
-
try {
|
|
29
|
-
// Validate required fields
|
|
30
|
-
if (!data.accessToken || !data.projectId) {
|
|
31
|
-
throw new OAuthError(OAuthErrorType.STORAGE_ERROR, 'Invalid auth data: missing required fields (accessToken or projectId)');
|
|
32
|
-
}
|
|
33
|
-
// Add storage timestamp
|
|
34
|
-
const dataToStore = {
|
|
35
|
-
...data,
|
|
36
|
-
storedAt: Date.now()
|
|
37
|
-
};
|
|
38
|
-
// Serialize and store
|
|
39
|
-
const serialized = JSON.stringify(dataToStore);
|
|
40
|
-
localStorage.setItem(AUTH_DATA_STORAGE_KEY, serialized);
|
|
41
|
-
console.log('Auth data stored successfully', {
|
|
42
|
-
projectId: data.projectId
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
// If it's already an OAuthError, rethrow it
|
|
47
|
-
if (error instanceof OAuthError) {
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
50
|
-
// Wrap other errors
|
|
51
|
-
throw new OAuthError(OAuthErrorType.STORAGE_ERROR, 'Failed to store authentication data', error);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Retrieve stored authentication data
|
|
56
|
-
*
|
|
57
|
-
* @returns Stored authentication data or null if not found
|
|
58
|
-
* @throws {OAuthError} If storage read fails or data is corrupted
|
|
59
|
-
*/
|
|
60
|
-
async getAuthData() {
|
|
61
|
-
try {
|
|
62
|
-
const serialized = localStorage.getItem(AUTH_DATA_STORAGE_KEY);
|
|
63
|
-
if (!serialized) {
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
// Deserialize
|
|
67
|
-
const data = JSON.parse(serialized);
|
|
68
|
-
// Validate structure
|
|
69
|
-
if (!data.accessToken || !data.projectId) {
|
|
70
|
-
console.warn('Stored auth data is corrupted, clearing storage');
|
|
71
|
-
await this.clearAuthData();
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
return data;
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
// Handle JSON parse errors
|
|
78
|
-
if (error instanceof SyntaxError) {
|
|
79
|
-
console.warn('Failed to parse stored auth data, clearing storage');
|
|
80
|
-
await this.clearAuthData();
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
throw new OAuthError(OAuthErrorType.STORAGE_ERROR, 'Failed to retrieve authentication data', error);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Clear all stored authentication data
|
|
88
|
-
*
|
|
89
|
-
* Requirements: 6.4
|
|
90
|
-
*
|
|
91
|
-
* @throws {OAuthError} If storage clear operation fails
|
|
92
|
-
*/
|
|
93
|
-
async clearAuthData() {
|
|
94
|
-
try {
|
|
95
|
-
localStorage.removeItem(AUTH_DATA_STORAGE_KEY);
|
|
96
|
-
console.log('Auth data cleared successfully');
|
|
97
|
-
}
|
|
98
|
-
catch (error) {
|
|
99
|
-
throw new OAuthError(OAuthErrorType.STORAGE_ERROR, 'Failed to clear authentication data', error);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Check if the stored token is expired
|
|
104
|
-
*
|
|
105
|
-
* For long-lived tokens, this always returns false if a token exists.
|
|
106
|
-
*
|
|
107
|
-
* @returns True if token is not found, false if token exists
|
|
108
|
-
*/
|
|
109
|
-
async isTokenExpired() {
|
|
110
|
-
try {
|
|
111
|
-
const data = await this.getAuthData();
|
|
112
|
-
// Long-lived tokens don't expire, so just check if data exists
|
|
113
|
-
return !data;
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
console.error('Error checking token:', error);
|
|
117
|
-
// If we can't check, assume expired for safety
|
|
118
|
-
return true;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Get a valid access token if available
|
|
123
|
-
*
|
|
124
|
-
* @returns Valid access token or null if not found
|
|
125
|
-
*/
|
|
126
|
-
async getValidAccessToken() {
|
|
127
|
-
try {
|
|
128
|
-
const data = await this.getAuthData();
|
|
129
|
-
if (!data) {
|
|
130
|
-
return null;
|
|
131
|
-
}
|
|
132
|
-
return data.accessToken;
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
console.error('Error getting valid access token:', error);
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
//# sourceMappingURL=tokenStorage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tokenStorage.js","sourceRoot":"","sources":["../../src/services/tokenStorage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAkB,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5E;;GAEG;AACH,MAAM,qBAAqB,GAAG,2CAA2C,CAAC;AAE1E;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACvB;;;;;OAKG;IACH,KAAK,CAAC,aAAa,CAAC,IAAoB;QACtC,IAAI,CAAC;YACH,2BAA2B;YAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,aAAa,EAC5B,uEAAuE,CACxE,CAAC;YACJ,CAAC;YAED,wBAAwB;YACxB,MAAM,WAAW,GAAmB;gBAClC,GAAG,IAAI;gBACP,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC;YAEF,sBAAsB;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAC/C,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;YAExD,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE;gBAC3C,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;YAC5C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;gBAChC,MAAM,KAAK,CAAC;YACd,CAAC;YAED,oBAAoB;YACpB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,aAAa,EAC5B,qCAAqC,EACrC,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAE/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,IAAI,CAAC;YACd,CAAC;YAED,cAAc;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAmB,CAAC;YAEtD,qBAAqB;YACrB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBAChE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,2BAA2B;YAC3B,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;gBACnE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,aAAa,EAC5B,wCAAwC,EACxC,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa;QACjB,IAAI,CAAC;YACH,YAAY,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,aAAa,EAC5B,qCAAqC,EACrC,KAAK,CACN,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YACtC,+DAA+D;YAC/D,OAAO,CAAC,IAAI,CAAC;QACf,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,+CAA+C;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB;QACvB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAEtC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|