@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
package/dist/plugin.js DELETED
@@ -1,137 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- // Main plugin definition
3
- import { definePlugin, useClient } from 'sanity';
4
- import React, { useEffect } from 'react';
5
- import { translateDocumentAction } from './actions/translateDocument';
6
- import { bulkTranslateTool } from './actions/bulkTranslate';
7
- import { manageDNTFieldsAction } from './actions/manageDNTFields';
8
- import { createPluginConfigSchema, legacyLocaleConfigSchema } from './config/pluginConfig';
9
- import { DialogProvider } from './services/dialogService';
10
- import { OAuthServiceManager } from './services/oauthServiceManager';
11
- import { DNTServiceManager } from './services/dntServiceManager';
12
- import { PasswordInput } from './components/config/PasswordInput';
13
- import { DNTFieldInput } from './components/dnt';
14
- console.log('Loading sanity-translation-plugin...');
15
- /**
16
- * Legacy OAuth configuration schema (deprecated)
17
- * Kept for backward compatibility and automatic migration
18
- * @deprecated Now uses unified EL_PluginConfiguration document
19
- */
20
- const legacyOAuthConfigSchema = {
21
- name: 'EL_oauth-config',
22
- title: 'Easyling Configuration (Legacy)',
23
- type: 'document',
24
- hidden: true, // Hide from UI - legacy documents will be migrated automatically
25
- fields: [
26
- {
27
- name: 'projectId',
28
- title: 'Project ID',
29
- type: 'string',
30
- description: 'Your Easyling project ID',
31
- validation: (Rule) => Rule.required()
32
- },
33
- {
34
- name: 'accessToken',
35
- title: 'Access Token',
36
- type: 'string',
37
- description: 'Long-lived access token provided by Easyling (hidden for security)',
38
- validation: (Rule) => Rule.required(),
39
- components: {
40
- input: PasswordInput
41
- }
42
- },
43
- {
44
- name: 'lastUpdated',
45
- title: 'Last Updated',
46
- type: 'datetime',
47
- readOnly: true
48
- }
49
- ]
50
- };
51
- // Studio Layout wrapper component to provide DialogProvider and initialize services
52
- function StudioLayout(props) {
53
- const client = useClient({ apiVersion: '2023-01-01' });
54
- // Track initialization state
55
- const [isInitialized, setIsInitialized] = React.useState(false);
56
- // Initialize services on mount
57
- useEffect(() => {
58
- const initializeServices = async () => {
59
- try {
60
- // Initialize OAuth service manager
61
- const oauthServiceManager = OAuthServiceManager.getInstance(client);
62
- await oauthServiceManager.initialize();
63
- // Initialize DNT service manager
64
- const dntServiceManager = DNTServiceManager.getInstance(client);
65
- dntServiceManager.initialize(client);
66
- console.log('Services initialized successfully');
67
- setIsInitialized(true);
68
- }
69
- catch (error) {
70
- console.error('Failed to initialize services:', error);
71
- setIsInitialized(true); // Still set to true to prevent blocking
72
- }
73
- };
74
- initializeServices();
75
- }, [client]);
76
- return (_jsx(DialogProvider, { children: props.renderDefault(props) }));
77
- }
78
- export default definePlugin({
79
- name: 'sanity-translation-plugin',
80
- studio: {
81
- components: {
82
- layout: StudioLayout
83
- }
84
- },
85
- document: {
86
- actions: (prev) => {
87
- console.log('Document actions being registered, previous actions:', prev.length);
88
- const newActions = [...prev, translateDocumentAction, manageDNTFieldsAction];
89
- console.log('New actions array length:', newActions.length);
90
- return newActions;
91
- }
92
- },
93
- form: {
94
- components: {
95
- field: (props) => {
96
- const fieldType = props.schemaType?.type?.name;
97
- const fieldName = props.schemaType?.name;
98
- const fieldPath = props.path?.join('.');
99
- // Blacklist: field names that should never show DNT badge
100
- const blacklistedFieldNames = ['locale', '_type', '_id', '_rev', '_createdAt', '_updatedAt'];
101
- const isBlacklistedName = blacklistedFieldNames.includes(fieldName || '') ||
102
- blacklistedFieldNames.some(f => fieldPath?.includes(f));
103
- // Blacklist: field types that should never show badge (non-translatable types)
104
- const nonTranslatableTypes = ['date', 'datetime', 'image', 'file', 'reference', 'boolean', 'object', 'document', 'slug'];
105
- const isNonTranslatableType = fieldType && nonTranslatableTypes.includes(fieldType);
106
- // Translatable field types (types that contain text/content that can be translated)
107
- const translatableTypes = ['string', 'text', 'number', 'url', 'email', 'array'];
108
- const isTranslatableType = fieldType && translatableTypes.includes(fieldType);
109
- // Show badge only if: translatable type AND not blacklisted by name or type
110
- // Note: DNTFieldInput internally checks for plugin config types and excludes them
111
- const shouldShowDNT = isTranslatableType && !isBlacklistedName && !isNonTranslatableType;
112
- if (shouldShowDNT) {
113
- return DNTFieldInput(props);
114
- }
115
- // Return default for other field types
116
- return props.renderDefault(props);
117
- }
118
- }
119
- },
120
- tools: (prev) => {
121
- console.log('Tools being registered, previous tools:', prev.length);
122
- // Only register bulk translate tool - config is now in unified EL_PluginConfiguration document
123
- const newTools = [...prev, bulkTranslateTool];
124
- console.log('New tools array length:', newTools.length);
125
- return newTools;
126
- },
127
- schema: {
128
- types: [
129
- // New unified configuration schema (EL_PluginConfiguration) with password input
130
- createPluginConfigSchema(PasswordInput),
131
- // Legacy schemas kept for migration compatibility
132
- legacyLocaleConfigSchema,
133
- legacyOAuthConfigSchema
134
- ]
135
- }
136
- });
137
- //# sourceMappingURL=plugin.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../src/plugin.tsx"],"names":[],"mappings":"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"}
@@ -1,94 +0,0 @@
1
- /**
2
- * Authentication State Manager
3
- *
4
- * Manages the overall authentication state and provides reactive updates
5
- * to UI components through an observable pattern.
6
- *
7
- * Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
8
- */
9
- import { AuthState, AuthStateData } from '../types/oauth';
10
- import { TokenStorage } from './tokenStorage';
11
- /**
12
- * Callback function type for state change subscriptions
13
- */
14
- type StateChangeCallback = (state: AuthStateData) => void;
15
- /**
16
- * Authentication State Manager
17
- *
18
- * Provides centralized management of authentication state with reactive updates.
19
- * Uses observable pattern to notify subscribers of state changes.
20
- */
21
- export declare class AuthStateManager {
22
- private currentState;
23
- private subscribers;
24
- private tokenStorage;
25
- /**
26
- * Create a new Authentication State Manager
27
- *
28
- * Requirements: 6.1, 6.2
29
- *
30
- * @param tokenStorage - Token storage service for persistence
31
- */
32
- constructor(tokenStorage: TokenStorage);
33
- /**
34
- * Validate state transition
35
- *
36
- * Requirements: 6.5
37
- *
38
- * @param fromState - Current state
39
- * @param toState - Target state
40
- * @returns True if transition is valid
41
- */
42
- private isValidTransition;
43
- /**
44
- * Get current authentication state
45
- *
46
- * Requirements: 6.1, 6.2
47
- *
48
- * @returns Current authentication state data
49
- */
50
- getState(): AuthStateData;
51
- /**
52
- * Update authentication state and notify subscribers
53
- *
54
- * Requirements: 6.2, 6.5
55
- *
56
- * @param state - New authentication state
57
- * @param data - Additional state data
58
- * @throws {OAuthError} If state transition is invalid
59
- */
60
- setState(state: AuthState, data?: Partial<AuthStateData>): void;
61
- /**
62
- * Notify all subscribers of state change
63
- *
64
- * Requirements: 6.2
65
- */
66
- private notifySubscribers;
67
- /**
68
- * Subscribe to state changes
69
- *
70
- * Requirements: 6.2
71
- *
72
- * @param callback - Function to call when state changes
73
- * @returns Unsubscribe function
74
- */
75
- subscribe(callback: StateChangeCallback): () => void;
76
- /**
77
- * Initialize state from stored authentication data
78
- *
79
- * Requirements: 6.1, 6.4
80
- *
81
- * @returns Promise that resolves when initialization is complete
82
- */
83
- initialize(): Promise<void>;
84
- /**
85
- * Logout and clear all authentication data
86
- *
87
- * Requirements: 6.3, 6.4
88
- *
89
- * @returns Promise that resolves when logout is complete
90
- */
91
- logout(): Promise<void>;
92
- }
93
- export {};
94
- //# sourceMappingURL=authStateManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authStateManager.d.ts","sourceRoot":"","sources":["../../src/services/authStateManager.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAA8B,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,KAAK,mBAAmB,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAW1D;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,YAAY,CAAe;IAEnC;;;;;;OAMG;gBACS,YAAY,EAAE,YAAY;IAYtC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;;;;OAMG;IACH,QAAQ,IAAI,aAAa;IAIzB;;;;;;;;OAQG;IACH,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IAwC/D;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;OAOG;IACH,SAAS,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAgBpD;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCjC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAwB9B"}
@@ -1,208 +0,0 @@
1
- /**
2
- * Authentication State Manager
3
- *
4
- * Manages the overall authentication state and provides reactive updates
5
- * to UI components through an observable pattern.
6
- *
7
- * Requirements: 6.1, 6.2, 6.3, 6.4, 6.5
8
- */
9
- import { OAuthError, OAuthErrorType } from '../types/oauth';
10
- /**
11
- * Valid state transitions to prevent invalid state changes
12
- */
13
- const VALID_TRANSITIONS = {
14
- unauthenticated: ['authenticated', 'error'],
15
- authenticated: ['unauthenticated', 'error'],
16
- error: ['unauthenticated', 'authenticated']
17
- };
18
- /**
19
- * Authentication State Manager
20
- *
21
- * Provides centralized management of authentication state with reactive updates.
22
- * Uses observable pattern to notify subscribers of state changes.
23
- */
24
- export class AuthStateManager {
25
- /**
26
- * Create a new Authentication State Manager
27
- *
28
- * Requirements: 6.1, 6.2
29
- *
30
- * @param tokenStorage - Token storage service for persistence
31
- */
32
- constructor(tokenStorage) {
33
- this.tokenStorage = tokenStorage;
34
- this.subscribers = new Set();
35
- // Initialize with unauthenticated state
36
- this.currentState = {
37
- state: 'unauthenticated'
38
- };
39
- console.log('AuthStateManager initialized');
40
- }
41
- /**
42
- * Validate state transition
43
- *
44
- * Requirements: 6.5
45
- *
46
- * @param fromState - Current state
47
- * @param toState - Target state
48
- * @returns True if transition is valid
49
- */
50
- isValidTransition(fromState, toState) {
51
- // Allow staying in the same state
52
- if (fromState === toState) {
53
- return true;
54
- }
55
- const validNextStates = VALID_TRANSITIONS[fromState];
56
- return validNextStates.includes(toState);
57
- }
58
- /**
59
- * Get current authentication state
60
- *
61
- * Requirements: 6.1, 6.2
62
- *
63
- * @returns Current authentication state data
64
- */
65
- getState() {
66
- return { ...this.currentState };
67
- }
68
- /**
69
- * Update authentication state and notify subscribers
70
- *
71
- * Requirements: 6.2, 6.5
72
- *
73
- * @param state - New authentication state
74
- * @param data - Additional state data
75
- * @throws {OAuthError} If state transition is invalid
76
- */
77
- setState(state, data) {
78
- // Validate state transition
79
- if (!this.isValidTransition(this.currentState.state, state)) {
80
- throw new OAuthError(OAuthErrorType.INVALID_CONFIG, `Invalid state transition from ${this.currentState.state} to ${state}`);
81
- }
82
- // Create new state data
83
- const newState = {
84
- state,
85
- ...data
86
- };
87
- // Clear error if transitioning away from error state
88
- if (this.currentState.state === 'error' && state !== 'error') {
89
- delete newState.error;
90
- }
91
- // Clear user data if transitioning to unauthenticated
92
- if (state === 'unauthenticated') {
93
- delete newState.projectId;
94
- delete newState.projectName;
95
- delete newState.error;
96
- }
97
- console.log('Auth state changed', {
98
- from: this.currentState.state,
99
- to: state,
100
- projectId: newState.projectId
101
- });
102
- // Update current state
103
- this.currentState = newState;
104
- // Notify all subscribers
105
- this.notifySubscribers();
106
- }
107
- /**
108
- * Notify all subscribers of state change
109
- *
110
- * Requirements: 6.2
111
- */
112
- notifySubscribers() {
113
- const stateCopy = this.getState();
114
- this.subscribers.forEach(callback => {
115
- try {
116
- callback(stateCopy);
117
- }
118
- catch (error) {
119
- console.error('Error in state change subscriber:', error);
120
- }
121
- });
122
- }
123
- /**
124
- * Subscribe to state changes
125
- *
126
- * Requirements: 6.2
127
- *
128
- * @param callback - Function to call when state changes
129
- * @returns Unsubscribe function
130
- */
131
- subscribe(callback) {
132
- this.subscribers.add(callback);
133
- // Immediately call callback with current state
134
- try {
135
- callback(this.getState());
136
- }
137
- catch (error) {
138
- console.error('Error in initial state callback:', error);
139
- }
140
- // Return unsubscribe function
141
- return () => {
142
- this.subscribers.delete(callback);
143
- };
144
- }
145
- /**
146
- * Initialize state from stored authentication data
147
- *
148
- * Requirements: 6.1, 6.4
149
- *
150
- * @returns Promise that resolves when initialization is complete
151
- */
152
- async initialize() {
153
- try {
154
- console.log('Initializing auth state from storage');
155
- // Load stored auth data
156
- const authData = await this.tokenStorage.getAuthData();
157
- if (!authData) {
158
- console.log('No stored auth data found, remaining unauthenticated');
159
- this.setState('unauthenticated');
160
- return;
161
- }
162
- // Check if token exists (long-lived tokens don't expire)
163
- const isExpired = await this.tokenStorage.isTokenExpired();
164
- if (isExpired) {
165
- console.log('No valid token found');
166
- this.setState('unauthenticated');
167
- return;
168
- }
169
- // Token is valid, set authenticated state
170
- console.log('Valid token found, setting authenticated state');
171
- this.setState('authenticated', {
172
- projectId: authData.projectId,
173
- projectName: authData.projectName
174
- });
175
- }
176
- catch (error) {
177
- console.error('Error initializing auth state:', error);
178
- // Set error state
179
- this.setState('error', {
180
- error: 'Failed to initialize authentication state'
181
- });
182
- }
183
- }
184
- /**
185
- * Logout and clear all authentication data
186
- *
187
- * Requirements: 6.3, 6.4
188
- *
189
- * @returns Promise that resolves when logout is complete
190
- */
191
- async logout() {
192
- try {
193
- console.log('Logging out');
194
- // Clear stored auth data
195
- await this.tokenStorage.clearAuthData();
196
- // Update state to unauthenticated
197
- this.setState('unauthenticated');
198
- console.log('Logout complete');
199
- }
200
- catch (error) {
201
- console.error('Error during logout:', error);
202
- // Still transition to unauthenticated even if storage clear fails
203
- this.setState('unauthenticated');
204
- throw new OAuthError(OAuthErrorType.STORAGE_ERROR, 'Failed to clear authentication data during logout', error);
205
- }
206
- }
207
- }
208
- //# sourceMappingURL=authStateManager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authStateManager.js","sourceRoot":"","sources":["../../src/services/authStateManager.ts"],"names":[],"mappings":"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"}
@@ -1,95 +0,0 @@
1
- import { SanityDocument } from 'sanity';
2
- export interface DocumentContent {
3
- documentId: string;
4
- title: string;
5
- htmlContent: string;
6
- }
7
- export interface ExtendedDocumentContent extends DocumentContent {
8
- slug?: string;
9
- /** Fields can be either flat values or TranslatableField objects with value and dnt properties */
10
- fields?: Record<string, any>;
11
- }
12
- export interface ExtractedContent {
13
- documentId: string;
14
- documentType: string;
15
- title: string;
16
- htmlContent: string;
17
- extractedAt: Date;
18
- }
19
- export declare class ContentExtractor {
20
- /**
21
- * Infer the Sanity field type from a value
22
- *
23
- * @param value - The field value to inspect
24
- * @returns The inferred Sanity type string
25
- */
26
- private inferSanityType;
27
- /**
28
- * Extract content from a single Sanity document and convert to HTML
29
- */
30
- extractDocumentContent(document: SanityDocument): Promise<string>;
31
- /**
32
- * Convert Sanity document content to HTML format
33
- */
34
- convertToHtml(content: any): string;
35
- /**
36
- * Extract structured content with separated body, title, slug, and fields
37
- * Also applies DNT preferences if available
38
- */
39
- extractStructuredContent(document: SanityDocument): Promise<ExtendedDocumentContent>;
40
- /**
41
- * Apply DNT preferences to extracted fields based on document type
42
- * Now uses document-type-based configuration that applies to all documents of the same type
43
- */
44
- private applyDNTPreferences;
45
- /**
46
- * Extract content from multiple documents for bulk operations
47
- */
48
- extractBulkContent(documents: SanityDocument[]): Promise<DocumentContent[]>;
49
- /**
50
- * Extract structured content from multiple documents
51
- */
52
- extractBulkStructuredContent(documents: SanityDocument[]): Promise<ExtendedDocumentContent[]>;
53
- /**
54
- * Process individual fields based on their type
55
- */
56
- private processField;
57
- /**
58
- * Process array fields (like portable text blocks)
59
- */
60
- private processArray;
61
- /**
62
- * Process portable text blocks and convert to HTML
63
- */
64
- private processPortableTextBlock;
65
- /**
66
- * Extract content from portable text block children
67
- */
68
- private processPortableTextBlockContent;
69
- /**
70
- * Process object fields
71
- */
72
- private processObject;
73
- /**
74
- * Wrap content in HTML with field name as class
75
- */
76
- private wrapInHtml;
77
- /**
78
- * Separate main content from metadata fields
79
- * All fields are immediately wrapped in TranslatableField format with type information
80
- */
81
- private separateContentAndFields;
82
- /**
83
- * Extract slug from document
84
- */
85
- private extractSlug;
86
- /**
87
- * Extract title from document
88
- */
89
- private extractTitle;
90
- /**
91
- * Escape HTML special characters
92
- */
93
- private escapeHtml;
94
- }
95
- //# sourceMappingURL=contentExtractor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contentExtractor.d.ts","sourceRoot":"","sources":["../../src/services/contentExtractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAIxC,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAwB,SAAQ,eAAe;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,IAAI,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAmCvB;;OAEG;IACG,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IASvE;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM;IAsBnC;;;OAGG;IACG,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAsB1F;;;OAGG;YACW,mBAAmB;IAgDjC;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAsBjF;;OAEG;IACG,4BAA4B,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAgBnG;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;IACH,OAAO,CAAC,YAAY;IA2CpB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA8CvC;;OAEG;IACH,OAAO,CAAC,aAAa;IAoGrB;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAgEhC;;OAEG;IACH,OAAO,CAAC,WAAW;IA2BnB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,UAAU;CAKnB"}