@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.
Files changed (242) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/package.json +18 -12
  3. package/dist/actions/bulkTranslate.d.ts +0 -7
  4. package/dist/actions/bulkTranslate.d.ts.map +0 -1
  5. package/dist/actions/bulkTranslate.js +0 -543
  6. package/dist/actions/bulkTranslate.js.map +0 -1
  7. package/dist/actions/manageDNTFields.d.ts +0 -12
  8. package/dist/actions/manageDNTFields.d.ts.map +0 -1
  9. package/dist/actions/manageDNTFields.js +0 -100
  10. package/dist/actions/manageDNTFields.js.map +0 -1
  11. package/dist/actions/translateDocument.d.ts +0 -7
  12. package/dist/actions/translateDocument.d.ts.map +0 -1
  13. package/dist/actions/translateDocument.js +0 -256
  14. package/dist/actions/translateDocument.js.map +0 -1
  15. package/dist/components/RadioWithDefault.d.ts +0 -17
  16. package/dist/components/RadioWithDefault.d.ts.map +0 -1
  17. package/dist/components/RadioWithDefault.js +0 -29
  18. package/dist/components/RadioWithDefault.js.map +0 -1
  19. package/dist/components/auth/AuthNavbar.d.ts +0 -18
  20. package/dist/components/auth/AuthNavbar.d.ts.map +0 -1
  21. package/dist/components/auth/AuthNavbar.js +0 -15
  22. package/dist/components/auth/AuthNavbar.js.map +0 -1
  23. package/dist/components/auth/AuthStatus.d.ts +0 -27
  24. package/dist/components/auth/AuthStatus.d.ts.map +0 -1
  25. package/dist/components/auth/AuthStatus.js +0 -82
  26. package/dist/components/auth/AuthStatus.js.map +0 -1
  27. package/dist/components/auth/AuthStatusWrapper.d.ts +0 -15
  28. package/dist/components/auth/AuthStatusWrapper.d.ts.map +0 -1
  29. package/dist/components/auth/AuthStatusWrapper.js +0 -39
  30. package/dist/components/auth/AuthStatusWrapper.js.map +0 -1
  31. package/dist/components/auth/MigrationPrompt.d.ts +0 -20
  32. package/dist/components/auth/MigrationPrompt.d.ts.map +0 -1
  33. package/dist/components/auth/MigrationPrompt.js +0 -16
  34. package/dist/components/auth/MigrationPrompt.js.map +0 -1
  35. package/dist/components/auth/MigrationPromptWrapper.d.ts +0 -14
  36. package/dist/components/auth/MigrationPromptWrapper.d.ts.map +0 -1
  37. package/dist/components/auth/MigrationPromptWrapper.js +0 -16
  38. package/dist/components/auth/MigrationPromptWrapper.js.map +0 -1
  39. package/dist/components/auth/OAuthCallback.d.ts +0 -20
  40. package/dist/components/auth/OAuthCallback.d.ts.map +0 -1
  41. package/dist/components/auth/OAuthCallback.js +0 -12
  42. package/dist/components/auth/OAuthCallback.js.map +0 -1
  43. package/dist/components/auth/index.d.ts +0 -15
  44. package/dist/components/auth/index.d.ts.map +0 -1
  45. package/dist/components/auth/index.js +0 -12
  46. package/dist/components/auth/index.js.map +0 -1
  47. package/dist/components/config/LocaleConfigTool.d.ts +0 -17
  48. package/dist/components/config/LocaleConfigTool.d.ts.map +0 -1
  49. package/dist/components/config/LocaleConfigTool.js +0 -186
  50. package/dist/components/config/LocaleConfigTool.js.map +0 -1
  51. package/dist/components/config/LocaleConfigToolWrapper.d.ts +0 -13
  52. package/dist/components/config/LocaleConfigToolWrapper.d.ts.map +0 -1
  53. package/dist/components/config/LocaleConfigToolWrapper.js +0 -26
  54. package/dist/components/config/LocaleConfigToolWrapper.js.map +0 -1
  55. package/dist/components/config/OAuthConfig.d.ts +0 -26
  56. package/dist/components/config/OAuthConfig.d.ts.map +0 -1
  57. package/dist/components/config/OAuthConfig.js +0 -152
  58. package/dist/components/config/OAuthConfig.js.map +0 -1
  59. package/dist/components/config/OAuthConfigWrapper.d.ts +0 -13
  60. package/dist/components/config/OAuthConfigWrapper.d.ts.map +0 -1
  61. package/dist/components/config/OAuthConfigWrapper.js +0 -41
  62. package/dist/components/config/OAuthConfigWrapper.js.map +0 -1
  63. package/dist/components/config/PasswordInput.d.ts +0 -14
  64. package/dist/components/config/PasswordInput.d.ts.map +0 -1
  65. package/dist/components/config/PasswordInput.js +0 -23
  66. package/dist/components/config/PasswordInput.js.map +0 -1
  67. package/dist/components/config/index.d.ts +0 -9
  68. package/dist/components/config/index.d.ts.map +0 -1
  69. package/dist/components/config/index.js +0 -8
  70. package/dist/components/config/index.js.map +0 -1
  71. package/dist/components/config/localeConfigToolDefinition.d.ts +0 -13
  72. package/dist/components/config/localeConfigToolDefinition.d.ts.map +0 -1
  73. package/dist/components/config/localeConfigToolDefinition.js +0 -19
  74. package/dist/components/config/localeConfigToolDefinition.js.map +0 -1
  75. package/dist/components/config/oauthConfigToolDefinition.d.ts +0 -13
  76. package/dist/components/config/oauthConfigToolDefinition.d.ts.map +0 -1
  77. package/dist/components/config/oauthConfigToolDefinition.js +0 -19
  78. package/dist/components/config/oauthConfigToolDefinition.js.map +0 -1
  79. package/dist/components/dialogs/ConfirmationDialog.d.ts +0 -21
  80. package/dist/components/dialogs/ConfirmationDialog.d.ts.map +0 -1
  81. package/dist/components/dialogs/ConfirmationDialog.js +0 -28
  82. package/dist/components/dialogs/ConfirmationDialog.js.map +0 -1
  83. package/dist/components/dialogs/ErrorDialog.d.ts +0 -21
  84. package/dist/components/dialogs/ErrorDialog.d.ts.map +0 -1
  85. package/dist/components/dialogs/ErrorDialog.js +0 -28
  86. package/dist/components/dialogs/ErrorDialog.js.map +0 -1
  87. package/dist/components/dialogs/LocaleSelectionDialog.d.ts +0 -41
  88. package/dist/components/dialogs/LocaleSelectionDialog.d.ts.map +0 -1
  89. package/dist/components/dialogs/LocaleSelectionDialog.js +0 -117
  90. package/dist/components/dialogs/LocaleSelectionDialog.js.map +0 -1
  91. package/dist/components/dialogs/SuccessDialog.d.ts +0 -19
  92. package/dist/components/dialogs/SuccessDialog.d.ts.map +0 -1
  93. package/dist/components/dialogs/SuccessDialog.js +0 -37
  94. package/dist/components/dialogs/SuccessDialog.js.map +0 -1
  95. package/dist/components/dialogs/index.d.ts +0 -12
  96. package/dist/components/dialogs/index.d.ts.map +0 -1
  97. package/dist/components/dialogs/index.js +0 -8
  98. package/dist/components/dialogs/index.js.map +0 -1
  99. package/dist/components/dnt/DNTFieldBadge.d.ts +0 -16
  100. package/dist/components/dnt/DNTFieldBadge.d.ts.map +0 -1
  101. package/dist/components/dnt/DNTFieldBadge.js +0 -56
  102. package/dist/components/dnt/DNTFieldBadge.js.map +0 -1
  103. package/dist/components/dnt/DNTFieldComponent.d.ts +0 -17
  104. package/dist/components/dnt/DNTFieldComponent.d.ts.map +0 -1
  105. package/dist/components/dnt/DNTFieldComponent.js +0 -21
  106. package/dist/components/dnt/DNTFieldComponent.js.map +0 -1
  107. package/dist/components/dnt/DNTFieldInput.d.ts +0 -14
  108. package/dist/components/dnt/DNTFieldInput.d.ts.map +0 -1
  109. package/dist/components/dnt/DNTFieldInput.js +0 -76
  110. package/dist/components/dnt/DNTFieldInput.js.map +0 -1
  111. package/dist/components/dnt/index.d.ts +0 -7
  112. package/dist/components/dnt/index.d.ts.map +0 -1
  113. package/dist/components/dnt/index.js +0 -7
  114. package/dist/components/dnt/index.js.map +0 -1
  115. package/dist/config/index.d.ts +0 -6
  116. package/dist/config/index.d.ts.map +0 -1
  117. package/dist/config/index.js +0 -6
  118. package/dist/config/index.js.map +0 -1
  119. package/dist/config/pluginConfig.d.ts +0 -163
  120. package/dist/config/pluginConfig.d.ts.map +0 -1
  121. package/dist/config/pluginConfig.js +0 -548
  122. package/dist/config/pluginConfig.js.map +0 -1
  123. package/dist/index.d.ts +0 -12
  124. package/dist/index.d.ts.map +0 -1
  125. package/dist/index.js +0 -12
  126. package/dist/index.js.map +0 -1
  127. package/dist/plugin.d.ts +0 -3
  128. package/dist/plugin.d.ts.map +0 -1
  129. package/dist/plugin.js +0 -137
  130. package/dist/plugin.js.map +0 -1
  131. package/dist/services/authStateManager.d.ts +0 -94
  132. package/dist/services/authStateManager.d.ts.map +0 -1
  133. package/dist/services/authStateManager.js +0 -208
  134. package/dist/services/authStateManager.js.map +0 -1
  135. package/dist/services/contentExtractor.d.ts +0 -95
  136. package/dist/services/contentExtractor.d.ts.map +0 -1
  137. package/dist/services/contentExtractor.js +0 -516
  138. package/dist/services/contentExtractor.js.map +0 -1
  139. package/dist/services/dialogService.d.ts +0 -96
  140. package/dist/services/dialogService.d.ts.map +0 -1
  141. package/dist/services/dialogService.js +0 -244
  142. package/dist/services/dialogService.js.map +0 -1
  143. package/dist/services/dntServiceManager.d.ts +0 -44
  144. package/dist/services/dntServiceManager.d.ts.map +0 -1
  145. package/dist/services/dntServiceManager.js +0 -74
  146. package/dist/services/dntServiceManager.js.map +0 -1
  147. package/dist/services/dntStorageAdapter.d.ts +0 -73
  148. package/dist/services/dntStorageAdapter.d.ts.map +0 -1
  149. package/dist/services/dntStorageAdapter.js +0 -192
  150. package/dist/services/dntStorageAdapter.js.map +0 -1
  151. package/dist/services/documentCreationService.d.ts +0 -139
  152. package/dist/services/documentCreationService.d.ts.map +0 -1
  153. package/dist/services/documentCreationService.js +0 -938
  154. package/dist/services/documentCreationService.js.map +0 -1
  155. package/dist/services/localeService.d.ts +0 -160
  156. package/dist/services/localeService.d.ts.map +0 -1
  157. package/dist/services/localeService.js +0 -300
  158. package/dist/services/localeService.js.map +0 -1
  159. package/dist/services/localeStorageAdapter.d.ts +0 -42
  160. package/dist/services/localeStorageAdapter.d.ts.map +0 -1
  161. package/dist/services/localeStorageAdapter.js +0 -107
  162. package/dist/services/localeStorageAdapter.js.map +0 -1
  163. package/dist/services/oauthConfigStorage.d.ts +0 -46
  164. package/dist/services/oauthConfigStorage.d.ts.map +0 -1
  165. package/dist/services/oauthConfigStorage.js +0 -122
  166. package/dist/services/oauthConfigStorage.js.map +0 -1
  167. package/dist/services/oauthService.d.ts +0 -48
  168. package/dist/services/oauthService.d.ts.map +0 -1
  169. package/dist/services/oauthService.js +0 -71
  170. package/dist/services/oauthService.js.map +0 -1
  171. package/dist/services/oauthServiceManager.d.ts +0 -189
  172. package/dist/services/oauthServiceManager.d.ts.map +0 -1
  173. package/dist/services/oauthServiceManager.js +0 -380
  174. package/dist/services/oauthServiceManager.js.map +0 -1
  175. package/dist/services/tokenStorage.d.ts +0 -54
  176. package/dist/services/tokenStorage.d.ts.map +0 -1
  177. package/dist/services/tokenStorage.js +0 -140
  178. package/dist/services/tokenStorage.js.map +0 -1
  179. package/dist/services/translationService.d.ts +0 -374
  180. package/dist/services/translationService.d.ts.map +0 -1
  181. package/dist/services/translationService.js +0 -687
  182. package/dist/services/translationService.js.map +0 -1
  183. package/dist/services/unifiedConfigStorage.d.ts +0 -124
  184. package/dist/services/unifiedConfigStorage.d.ts.map +0 -1
  185. package/dist/services/unifiedConfigStorage.js +0 -304
  186. package/dist/services/unifiedConfigStorage.js.map +0 -1
  187. package/dist/test-utils.d.ts +0 -9
  188. package/dist/test-utils.d.ts.map +0 -1
  189. package/dist/test-utils.js +0 -13
  190. package/dist/test-utils.js.map +0 -1
  191. package/dist/types/dialog.d.ts +0 -107
  192. package/dist/types/dialog.d.ts.map +0 -1
  193. package/dist/types/dialog.js +0 -6
  194. package/dist/types/dialog.js.map +0 -1
  195. package/dist/types/dnt.d.ts +0 -84
  196. package/dist/types/dnt.d.ts.map +0 -1
  197. package/dist/types/dnt.js +0 -5
  198. package/dist/types/dnt.js.map +0 -1
  199. package/dist/types/index.d.ts +0 -12
  200. package/dist/types/index.d.ts.map +0 -1
  201. package/dist/types/index.js +0 -6
  202. package/dist/types/index.js.map +0 -1
  203. package/dist/types/locale.d.ts +0 -116
  204. package/dist/types/locale.d.ts.map +0 -1
  205. package/dist/types/locale.js +0 -189
  206. package/dist/types/locale.js.map +0 -1
  207. package/dist/types/oauth.d.ts +0 -90
  208. package/dist/types/oauth.d.ts.map +0 -1
  209. package/dist/types/oauth.js +0 -62
  210. package/dist/types/oauth.js.map +0 -1
  211. package/dist/types/pluginConfig.d.ts +0 -45
  212. package/dist/types/pluginConfig.d.ts.map +0 -1
  213. package/dist/types/pluginConfig.js +0 -6
  214. package/dist/types/pluginConfig.js.map +0 -1
  215. package/dist/types/translation.d.ts +0 -122
  216. package/dist/types/translation.d.ts.map +0 -1
  217. package/dist/types/translation.js +0 -6
  218. package/dist/types/translation.js.map +0 -1
  219. package/dist/utils/htmlFormatter.d.ts +0 -66
  220. package/dist/utils/htmlFormatter.d.ts.map +0 -1
  221. package/dist/utils/htmlFormatter.js +0 -191
  222. package/dist/utils/htmlFormatter.js.map +0 -1
  223. package/dist/utils/index.d.ts +0 -15
  224. package/dist/utils/index.d.ts.map +0 -1
  225. package/dist/utils/index.js +0 -16
  226. package/dist/utils/index.js.map +0 -1
  227. package/dist/utils/logger.d.ts +0 -105
  228. package/dist/utils/logger.d.ts.map +0 -1
  229. package/dist/utils/logger.js +0 -229
  230. package/dist/utils/logger.js.map +0 -1
  231. package/dist/utils/oauthErrorFeedback.d.ts +0 -76
  232. package/dist/utils/oauthErrorFeedback.d.ts.map +0 -1
  233. package/dist/utils/oauthErrorFeedback.js +0 -134
  234. package/dist/utils/oauthErrorFeedback.js.map +0 -1
  235. package/dist/utils/oauthLogger.d.ts +0 -176
  236. package/dist/utils/oauthLogger.d.ts.map +0 -1
  237. package/dist/utils/oauthLogger.js +0 -282
  238. package/dist/utils/oauthLogger.js.map +0 -1
  239. package/dist/utils/validator.d.ts +0 -67
  240. package/dist/utils/validator.d.ts.map +0 -1
  241. package/dist/utils/validator.js +0 -390
  242. 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":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,OAAO,mBAAmB;IAY9B;;;OAGG;IACH,YAAoB,MAAoB;QAbhC,iBAAY,GAAwB,IAAI,CAAC;QAOzC,gBAAW,GAAY,KAAK,CAAC;QAOnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,2BAA2B;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAE7D,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,MAAoB;QACrC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAClC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa;QAClB,mBAAmB,CAAC,QAAQ,GAAG,IAAI,CAAC;IACtC,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAE9C,2BAA2B;YAC3B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YAEjD,IAAI,WAAW,EAAE,CAAC;gBAChB,8CAA8C;gBAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;gBAClD,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC9D,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC/E,CAAC;YAED,+CAA+C;YAC/C,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACzC,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAEhD,8DAA8D;YAC9D,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAEzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;YAC3D,uDAAuD;YACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,KAAK,CAAC,2BAA2B;QACvC,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAE7C,uEAAuE;YACvE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;gBACjF,OAAO;YACT,CAAC;YAED,yCAAyC;YACzC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAErD,qEAAqE;YACrE,wDAAwD;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;gBAClG,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;gBAEjD,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,IAAI,WAAW,CAAC,SAAS,EAAE,CAAC;oBACpE,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;oBAEtE,wBAAwB;oBACxB,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;wBACpC,WAAW,EAAE,WAAW,CAAC,WAAW;wBACpC,SAAS,EAAE,WAAW,CAAC,SAAS;wBAChC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;qBACrB,CAAC,CAAC;oBAEH,oBAAoB;oBACpB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;wBAC9C,SAAS,EAAE,WAAW,CAAC,SAAS;qBACjC,CAAC,CAAC;oBAEH,sBAAsB;oBACtB,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;oBACtF,OAAO;gBACT,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;gBAC1F,OAAO;YACT,CAAC;YAED,4CAA4C;YAC5C,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAClC,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,SAAS,CACnB,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAE3E,6DAA6D;YAC7D,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,CAAC;YAC7E,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;YAEjE,8CAA8C;YAC9C,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAC/C,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,OAAO,CAAC,KAAK,CAAC,gDAAgD,EAAE,aAAa,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,+BAA+B;QAC3C,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,CAAC;YAC1E,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAE9C,OAAO,CAAC,GAAG,CAAC,4CAA4C,QAAQ,EAAE,CAAC,CAAC;YAEpE,2EAA2E;YAC3E,2EAA2E;QAC7E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACpE,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,mBAAmB;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC;IACpC,CAAC;IAED;;;;;;;;OAQG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACvD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;QAC3D,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,uBAAuB;QAM3B,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC1C,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACnD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE1D,OAAO;YACL,IAAI;YACJ,iBAAiB;YACjB,eAAe;YACf,2DAA2D;YAC3D,sBAAsB,EAAE,IAAI,KAAK,OAAO,IAAI,CAAC,eAAe;SAC7D,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,WAAmB,EAAE,SAAiB;QACnD,IAAI,CAAC;YACH,4BAA4B;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBACpC,WAAW;gBACX,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;aACrB,CAAC,CAAC;YAEH,8BAA8B;YAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,eAAe,EAAE;gBAC9C,SAAS;aACV,CAAC,CAAC;YAEH,4CAA4C;YAC5C,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YAE7D,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE;gBACtC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B;aAChF,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,2CAA2C;QAC3C,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;QAEpC,kDAAkD;QAClD,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAErC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,MAAM,IAAI,CAAC,+BAA+B,EAAE,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YACxD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;;AA7Zc,4BAAQ,GAA+B,IAAI,AAAnC,CAAoC"}
@@ -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":"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"}