@nocios/crudify-components 2.0.60 → 2.0.81
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/.scannerwork/report-task.txt +2 -2
- package/coverage/components/CrudiaAutoGenerate.tsx.html +616 -0
- package/coverage/components/CrudiaFileField/CrudiaFileField.tsx.html +1312 -0
- package/coverage/components/CrudiaFileField/components/DeleteConfirmationDialog.tsx.html +355 -0
- package/coverage/components/CrudiaFileField/components/DropZone.tsx.html +523 -0
- package/coverage/components/CrudiaFileField/components/FileItemRow.tsx.html +835 -0
- package/coverage/components/CrudiaFileField/components/FileThumbnail.tsx.html +1585 -0
- package/coverage/components/CrudiaFileField/components/index.html +176 -0
- package/coverage/components/CrudiaFileField/components/index.ts.html +115 -0
- package/coverage/components/CrudiaFileField/hooks/index.html +146 -0
- package/coverage/components/CrudiaFileField/hooks/index.ts.html +112 -0
- package/coverage/components/CrudiaFileField/hooks/useDeleteConfirmation.ts.html +433 -0
- package/coverage/components/CrudiaFileField/hooks/useDragDrop.ts.html +409 -0
- package/coverage/components/CrudiaFileField/index.html +131 -0
- package/coverage/components/CrudiaFileField/index.ts.html +112 -0
- package/coverage/components/CrudiaFileField/utils/formatters.ts.html +169 -0
- package/coverage/components/CrudiaFileField/utils/icons.tsx.html +253 -0
- package/coverage/components/CrudiaFileField/utils/index.html +146 -0
- package/coverage/components/CrudiaFileField/utils/index.ts.html +103 -0
- package/coverage/components/CrudiaMarkdownField.tsx.html +676 -0
- package/coverage/components/CrudifyInitializer.tsx.html +712 -0
- package/coverage/components/CrudifyLogin/Forms/CheckCodeForm.tsx.html +640 -0
- package/coverage/components/CrudifyLogin/Forms/ForgotPasswordForm.tsx.html +730 -0
- package/coverage/components/CrudifyLogin/Forms/LoginForm.tsx.html +892 -0
- package/coverage/components/CrudifyLogin/Forms/ResetPasswordForm.tsx.html +1219 -0
- package/coverage/components/CrudifyLogin/Forms/components/CodeInput.tsx.html +289 -0
- package/coverage/components/CrudifyLogin/Forms/components/FormAlert.tsx.html +202 -0
- package/coverage/components/CrudifyLogin/Forms/components/PasswordInput.tsx.html +346 -0
- package/coverage/components/CrudifyLogin/Forms/components/index.html +161 -0
- package/coverage/components/CrudifyLogin/Forms/components/index.ts.html +106 -0
- package/coverage/components/CrudifyLogin/Forms/index.html +176 -0
- package/coverage/components/CrudifyLogin/Forms/index.ts.html +145 -0
- package/coverage/components/CrudifyLogin/Forms/utils/errorTranslation.ts.html +268 -0
- package/coverage/components/CrudifyLogin/Forms/utils/index.html +161 -0
- package/coverage/components/CrudifyLogin/Forms/utils/index.ts.html +121 -0
- package/coverage/components/CrudifyLogin/Forms/utils/paramUtils.ts.html +496 -0
- package/coverage/components/CrudifyLogin/Forms/utils/validation.ts.html +307 -0
- package/coverage/components/CrudifyLogin/components/CrudifyInitializer.tsx.html +268 -0
- package/coverage/components/CrudifyLogin/components/index.html +116 -0
- package/coverage/components/CrudifyLogin/context/CrudifyProvider.tsx.html +409 -0
- package/coverage/components/CrudifyLogin/context/I18nProvider.tsx.html +430 -0
- package/coverage/components/CrudifyLogin/context/LoginStateProvider.tsx.html +1261 -0
- package/coverage/components/CrudifyLogin/context/index.html +161 -0
- package/coverage/components/CrudifyLogin/context/index.ts.html +91 -0
- package/coverage/components/CrudifyLogin/hooks/index.html +131 -0
- package/coverage/components/CrudifyLogin/hooks/useCrudifyLogin.ts.html +463 -0
- package/coverage/components/CrudifyLogin/hooks/useTranslationsFromUrl.ts.html +391 -0
- package/coverage/components/CrudifyLogin/index.html +116 -0
- package/coverage/components/CrudifyLogin/index.tsx.html +466 -0
- package/coverage/components/CrudifyLogin/utils/index.html +116 -0
- package/coverage/components/CrudifyLogin/utils/secureStorage.ts.html +859 -0
- package/coverage/components/GlobalNotificationProvider.tsx.html +844 -0
- package/coverage/components/LoginComponent.tsx.html +676 -0
- package/coverage/components/PasswordRequirements/index.html +116 -0
- package/coverage/components/PasswordRequirements/index.tsx.html +232 -0
- package/coverage/components/PublicPolicies/FieldSelector/FieldSelector.tsx.html +1078 -0
- package/coverage/components/PublicPolicies/FieldSelector/index.html +131 -0
- package/coverage/components/PublicPolicies/FieldSelector/index.ts.html +88 -0
- package/coverage/components/PublicPolicies/Policies.tsx.html +625 -0
- package/coverage/components/PublicPolicies/PolicyItem/PolicyItem.tsx.html +886 -0
- package/coverage/components/PublicPolicies/PolicyItem/index.html +131 -0
- package/coverage/components/PublicPolicies/PolicyItem/index.ts.html +88 -0
- package/coverage/components/PublicPolicies/constants.ts.html +106 -0
- package/coverage/components/PublicPolicies/index.html +146 -0
- package/coverage/components/PublicPolicies/index.ts.html +88 -0
- package/coverage/components/Routing/AuthRoute.tsx.html +382 -0
- package/coverage/components/Routing/GuestRoute.tsx.html +352 -0
- package/coverage/components/Routing/ProtectedRoute.tsx.html +316 -0
- package/coverage/components/Routing/index.html +161 -0
- package/coverage/components/Routing/index.ts.html +109 -0
- package/coverage/components/SessionLoadingScreen/index.html +116 -0
- package/coverage/components/SessionLoadingScreen/index.tsx.html +379 -0
- package/coverage/components/SessionTimeIndicator/index.html +116 -0
- package/coverage/components/SessionTimeIndicator/index.tsx.html +523 -0
- package/coverage/components/UserProfile/UserProfileDisplay.tsx.html +931 -0
- package/coverage/components/UserProfile/index.html +131 -0
- package/coverage/components/UserProfile/index.ts.html +88 -0
- package/coverage/components/index.html +191 -0
- package/coverage/components/index.ts.html +178 -0
- package/coverage/core/CrossTabSyncManager.ts.html +853 -0
- package/coverage/core/CrudifyInitializationManager.ts.html +1279 -0
- package/coverage/core/SessionManager.ts.html +3064 -0
- package/coverage/core/index.html +146 -0
- package/coverage/coverage-final.json +76 -79
- package/coverage/hooks/index.html +191 -0
- package/coverage/hooks/index.ts.html +136 -0
- package/coverage/hooks/useAuth.ts.html +529 -0
- package/coverage/hooks/useAutoGenerate.ts.html +571 -0
- package/coverage/hooks/useCrudifyWithNotifications/constants.ts.html +247 -0
- package/coverage/hooks/useCrudifyWithNotifications/hooks/index.html +116 -0
- package/coverage/hooks/useCrudifyWithNotifications/hooks/useCrudOperations.ts.html +820 -0
- package/coverage/hooks/useCrudifyWithNotifications/index.html +146 -0
- package/coverage/hooks/useCrudifyWithNotifications/index.ts.html +118 -0
- package/coverage/hooks/useCrudifyWithNotifications/useCrudifyWithNotifications.ts.html +565 -0
- package/coverage/hooks/useCrudifyWithNotifications/utils/errorMessageResolver.ts.html +847 -0
- package/coverage/hooks/useCrudifyWithNotifications/utils/index.html +146 -0
- package/coverage/hooks/useCrudifyWithNotifications/utils/notificationFilters.ts.html +313 -0
- package/coverage/hooks/useCrudifyWithNotifications/utils/successMessageResolver.ts.html +265 -0
- package/coverage/hooks/useData.ts.html +829 -0
- package/coverage/hooks/useFileUpload/index.html +131 -0
- package/coverage/hooks/useFileUpload/index.ts.html +112 -0
- package/coverage/hooks/useFileUpload/services/index.html +131 -0
- package/coverage/hooks/useFileUpload/services/index.ts.html +106 -0
- package/coverage/hooks/useFileUpload/services/uploadService.ts.html +610 -0
- package/coverage/hooks/useFileUpload/useFileUpload.ts.html +2092 -0
- package/coverage/hooks/useFileUpload/utils/fileUtils.ts.html +271 -0
- package/coverage/hooks/useFileUpload/utils/index.html +161 -0
- package/coverage/hooks/useFileUpload/utils/index.ts.html +109 -0
- package/coverage/hooks/useFileUpload/utils/mimeTypes.ts.html +235 -0
- package/coverage/hooks/useFileUpload/utils/validation.ts.html +403 -0
- package/coverage/hooks/useSession/constants.ts.html +217 -0
- package/coverage/hooks/useSession/hooks/index.html +176 -0
- package/coverage/hooks/useSession/hooks/useAuthEventSubscriber.ts.html +331 -0
- package/coverage/hooks/useSession/hooks/useCrossTabSync.ts.html +535 -0
- package/coverage/hooks/useSession/hooks/useSessionActions.ts.html +664 -0
- package/coverage/hooks/useSession/hooks/useSessionState.ts.html +295 -0
- package/coverage/hooks/useSession/hooks/useTokenRefreshScheduler.ts.html +535 -0
- package/coverage/hooks/useSession/index.html +161 -0
- package/coverage/hooks/useSession/index.ts.html +127 -0
- package/coverage/hooks/useSession/types.ts.html +427 -0
- package/coverage/hooks/useSession/useSession.ts.html +526 -0
- package/coverage/hooks/useSession/utils/index.html +131 -0
- package/coverage/hooks/useSession/utils/initializeSession.ts.html +424 -0
- package/coverage/hooks/useSession/utils/tokenUtils.ts.html +298 -0
- package/coverage/hooks/useUserData.ts.html +1210 -0
- package/coverage/hooks/useUserProfile.ts.html +820 -0
- package/coverage/index.html +205 -235
- package/coverage/lcov-report/components/CrudiaAutoGenerate.tsx.html +616 -0
- package/coverage/lcov-report/components/CrudiaFileField/CrudiaFileField.tsx.html +1312 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/DeleteConfirmationDialog.tsx.html +355 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/DropZone.tsx.html +523 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/FileItemRow.tsx.html +835 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/FileThumbnail.tsx.html +1585 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/index.html +176 -0
- package/coverage/lcov-report/components/CrudiaFileField/components/index.ts.html +115 -0
- package/coverage/lcov-report/components/CrudiaFileField/hooks/index.html +146 -0
- package/coverage/lcov-report/components/CrudiaFileField/hooks/index.ts.html +112 -0
- package/coverage/lcov-report/components/CrudiaFileField/hooks/useDeleteConfirmation.ts.html +433 -0
- package/coverage/lcov-report/components/CrudiaFileField/hooks/useDragDrop.ts.html +409 -0
- package/coverage/lcov-report/components/CrudiaFileField/index.html +131 -0
- package/coverage/lcov-report/components/CrudiaFileField/index.ts.html +112 -0
- package/coverage/lcov-report/components/CrudiaFileField/utils/formatters.ts.html +169 -0
- package/coverage/lcov-report/components/CrudiaFileField/utils/icons.tsx.html +253 -0
- package/coverage/lcov-report/components/CrudiaFileField/utils/index.html +146 -0
- package/coverage/lcov-report/components/CrudiaFileField/utils/index.ts.html +103 -0
- package/coverage/lcov-report/components/CrudiaMarkdownField.tsx.html +676 -0
- package/coverage/lcov-report/components/CrudifyInitializer.tsx.html +712 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/CheckCodeForm.tsx.html +640 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/ForgotPasswordForm.tsx.html +730 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/LoginForm.tsx.html +892 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/ResetPasswordForm.tsx.html +1219 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/CodeInput.tsx.html +289 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/FormAlert.tsx.html +202 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/PasswordInput.tsx.html +346 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/index.html +161 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/components/index.ts.html +106 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/index.html +176 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/index.ts.html +145 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/errorTranslation.ts.html +268 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/index.html +161 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/index.ts.html +121 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/paramUtils.ts.html +496 -0
- package/coverage/lcov-report/components/CrudifyLogin/Forms/utils/validation.ts.html +307 -0
- package/coverage/lcov-report/components/CrudifyLogin/components/CrudifyInitializer.tsx.html +268 -0
- package/coverage/lcov-report/components/CrudifyLogin/components/index.html +116 -0
- package/coverage/lcov-report/components/CrudifyLogin/context/CrudifyProvider.tsx.html +409 -0
- package/coverage/lcov-report/components/CrudifyLogin/context/I18nProvider.tsx.html +430 -0
- package/coverage/lcov-report/components/CrudifyLogin/context/LoginStateProvider.tsx.html +1261 -0
- package/coverage/lcov-report/components/CrudifyLogin/context/index.html +161 -0
- package/coverage/lcov-report/components/CrudifyLogin/context/index.ts.html +91 -0
- package/coverage/lcov-report/components/CrudifyLogin/hooks/index.html +131 -0
- package/coverage/lcov-report/components/CrudifyLogin/hooks/useCrudifyLogin.ts.html +463 -0
- package/coverage/lcov-report/components/CrudifyLogin/hooks/useTranslationsFromUrl.ts.html +391 -0
- package/coverage/lcov-report/components/CrudifyLogin/index.html +116 -0
- package/coverage/lcov-report/components/CrudifyLogin/index.tsx.html +466 -0
- package/coverage/lcov-report/components/CrudifyLogin/utils/index.html +116 -0
- package/coverage/lcov-report/components/CrudifyLogin/utils/secureStorage.ts.html +859 -0
- package/coverage/lcov-report/components/GlobalNotificationProvider.tsx.html +844 -0
- package/coverage/lcov-report/components/LoginComponent.tsx.html +676 -0
- package/coverage/lcov-report/components/PasswordRequirements/index.html +116 -0
- package/coverage/lcov-report/components/PasswordRequirements/index.tsx.html +232 -0
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/FieldSelector.tsx.html +1078 -0
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/index.html +131 -0
- package/coverage/lcov-report/components/PublicPolicies/FieldSelector/index.ts.html +88 -0
- package/coverage/lcov-report/components/PublicPolicies/Policies.tsx.html +625 -0
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/PolicyItem.tsx.html +886 -0
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/index.html +131 -0
- package/coverage/lcov-report/components/PublicPolicies/PolicyItem/index.ts.html +88 -0
- package/coverage/lcov-report/components/PublicPolicies/constants.ts.html +106 -0
- package/coverage/lcov-report/components/PublicPolicies/index.html +146 -0
- package/coverage/lcov-report/components/PublicPolicies/index.ts.html +88 -0
- package/coverage/lcov-report/components/Routing/AuthRoute.tsx.html +382 -0
- package/coverage/lcov-report/components/Routing/GuestRoute.tsx.html +352 -0
- package/coverage/lcov-report/components/Routing/ProtectedRoute.tsx.html +316 -0
- package/coverage/lcov-report/components/Routing/index.html +161 -0
- package/coverage/lcov-report/components/Routing/index.ts.html +109 -0
- package/coverage/lcov-report/components/SessionLoadingScreen/index.html +116 -0
- package/coverage/lcov-report/components/SessionLoadingScreen/index.tsx.html +379 -0
- package/coverage/lcov-report/components/SessionTimeIndicator/index.html +116 -0
- package/coverage/lcov-report/components/SessionTimeIndicator/index.tsx.html +523 -0
- package/coverage/lcov-report/components/UserProfile/UserProfileDisplay.tsx.html +931 -0
- package/coverage/lcov-report/components/UserProfile/index.html +131 -0
- package/coverage/lcov-report/components/UserProfile/index.ts.html +88 -0
- package/coverage/lcov-report/components/index.html +191 -0
- package/coverage/lcov-report/components/index.ts.html +178 -0
- package/coverage/lcov-report/core/CrossTabSyncManager.ts.html +853 -0
- package/coverage/lcov-report/core/CrudifyInitializationManager.ts.html +1279 -0
- package/coverage/lcov-report/core/SessionManager.ts.html +3064 -0
- package/coverage/lcov-report/core/index.html +146 -0
- package/coverage/lcov-report/hooks/index.html +191 -0
- package/coverage/lcov-report/hooks/index.ts.html +136 -0
- package/coverage/lcov-report/hooks/useAuth.ts.html +529 -0
- package/coverage/lcov-report/hooks/useAutoGenerate.ts.html +571 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/constants.ts.html +247 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/hooks/index.html +116 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/hooks/useCrudOperations.ts.html +820 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/index.html +146 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/index.ts.html +118 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/useCrudifyWithNotifications.ts.html +565 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/errorMessageResolver.ts.html +847 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/index.html +146 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/notificationFilters.ts.html +313 -0
- package/coverage/lcov-report/hooks/useCrudifyWithNotifications/utils/successMessageResolver.ts.html +265 -0
- package/coverage/lcov-report/hooks/useData.ts.html +829 -0
- package/coverage/lcov-report/hooks/useFileUpload/index.html +131 -0
- package/coverage/lcov-report/hooks/useFileUpload/index.ts.html +112 -0
- package/coverage/lcov-report/hooks/useFileUpload/services/index.html +131 -0
- package/coverage/lcov-report/hooks/useFileUpload/services/index.ts.html +106 -0
- package/coverage/lcov-report/hooks/useFileUpload/services/uploadService.ts.html +610 -0
- package/coverage/lcov-report/hooks/useFileUpload/useFileUpload.ts.html +2092 -0
- package/coverage/lcov-report/hooks/useFileUpload/utils/fileUtils.ts.html +271 -0
- package/coverage/lcov-report/hooks/useFileUpload/utils/index.html +161 -0
- package/coverage/lcov-report/hooks/useFileUpload/utils/index.ts.html +109 -0
- package/coverage/lcov-report/hooks/useFileUpload/utils/mimeTypes.ts.html +235 -0
- package/coverage/lcov-report/hooks/useFileUpload/utils/validation.ts.html +403 -0
- package/coverage/lcov-report/hooks/useSession/constants.ts.html +217 -0
- package/coverage/lcov-report/hooks/useSession/hooks/index.html +176 -0
- package/coverage/lcov-report/hooks/useSession/hooks/useAuthEventSubscriber.ts.html +331 -0
- package/coverage/lcov-report/hooks/useSession/hooks/useCrossTabSync.ts.html +535 -0
- package/coverage/lcov-report/hooks/useSession/hooks/useSessionActions.ts.html +664 -0
- package/coverage/lcov-report/hooks/useSession/hooks/useSessionState.ts.html +295 -0
- package/coverage/lcov-report/hooks/useSession/hooks/useTokenRefreshScheduler.ts.html +535 -0
- package/coverage/lcov-report/hooks/useSession/index.html +161 -0
- package/coverage/lcov-report/hooks/useSession/index.ts.html +127 -0
- package/coverage/lcov-report/hooks/useSession/types.ts.html +427 -0
- package/coverage/lcov-report/hooks/useSession/useSession.ts.html +526 -0
- package/coverage/lcov-report/hooks/useSession/utils/index.html +131 -0
- package/coverage/lcov-report/hooks/useSession/utils/initializeSession.ts.html +424 -0
- package/coverage/lcov-report/hooks/useSession/utils/tokenUtils.ts.html +298 -0
- package/coverage/lcov-report/hooks/useUserData.ts.html +1210 -0
- package/coverage/lcov-report/hooks/useUserProfile.ts.html +820 -0
- package/coverage/lcov-report/index.html +205 -235
- package/coverage/lcov-report/providers/CrudifyThemeProvider.tsx.html +316 -0
- package/coverage/lcov-report/providers/SessionProvider.tsx.html +1120 -0
- package/coverage/lcov-report/providers/TranslationsProvider.tsx.html +1756 -0
- package/coverage/lcov-report/providers/index.html +146 -0
- package/coverage/lcov-report/services/credentialsEventBus.ts.html +319 -0
- package/coverage/lcov-report/services/crudifyAdminWrapper.ts.html +754 -0
- package/coverage/lcov-report/services/index.html +146 -0
- package/coverage/lcov-report/services/translationService.ts.html +1558 -0
- package/coverage/lcov-report/translations/critical.ts.html +1216 -0
- package/coverage/lcov-report/translations/index.html +116 -0
- package/coverage/lcov-report/types/index.html +116 -0
- package/coverage/lcov-report/types/password.ts.html +178 -0
- package/coverage/lcov-report/utils/authErrorDetector.ts.html +793 -0
- package/coverage/lcov-report/utils/authEventBus.ts.html +454 -0
- package/coverage/lcov-report/utils/configResolver.ts.html +460 -0
- package/coverage/lcov-report/utils/cookieSync.ts.html +595 -0
- package/coverage/lcov-report/utils/errorHandler.ts.html +1480 -0
- package/coverage/lcov-report/utils/errorTranslation.ts.html +868 -0
- package/coverage/lcov-report/utils/index.html +341 -0
- package/coverage/lcov-report/utils/index.ts.html +193 -0
- package/coverage/lcov-report/utils/jwtUtils.ts.html +325 -0
- package/coverage/lcov-report/utils/logger.ts.html +952 -0
- package/coverage/lcov-report/utils/navigationTracker.ts.html +562 -0
- package/coverage/lcov-report/utils/passwordValidation.ts.html +259 -0
- package/coverage/lcov-report/utils/preAuthCheck.ts.html +442 -0
- package/coverage/lcov-report/utils/redirectSecurity.ts.html +733 -0
- package/coverage/lcov-report/utils/tenantConfig.ts.html +712 -0
- package/coverage/lcov-report/utils/tokenStorage.ts.html +1825 -0
- package/coverage/lcov-report/utils/webCrypto.ts.html +490 -0
- package/coverage/lcov.info +15262 -14283
- package/coverage/providers/CrudifyThemeProvider.tsx.html +316 -0
- package/coverage/providers/SessionProvider.tsx.html +1120 -0
- package/coverage/providers/TranslationsProvider.tsx.html +1756 -0
- package/coverage/providers/index.html +146 -0
- package/coverage/services/credentialsEventBus.ts.html +319 -0
- package/coverage/services/crudifyAdminWrapper.ts.html +754 -0
- package/coverage/services/index.html +146 -0
- package/coverage/services/translationService.ts.html +1558 -0
- package/coverage/translations/critical.ts.html +1216 -0
- package/coverage/translations/index.html +116 -0
- package/coverage/types/index.html +116 -0
- package/coverage/types/password.ts.html +178 -0
- package/coverage/utils/authErrorDetector.ts.html +793 -0
- package/coverage/utils/authEventBus.ts.html +454 -0
- package/coverage/utils/configResolver.ts.html +460 -0
- package/coverage/utils/cookieSync.ts.html +595 -0
- package/coverage/utils/errorHandler.ts.html +1480 -0
- package/coverage/utils/errorTranslation.ts.html +868 -0
- package/coverage/utils/index.html +341 -0
- package/coverage/utils/index.ts.html +193 -0
- package/coverage/utils/jwtUtils.ts.html +325 -0
- package/coverage/utils/logger.ts.html +952 -0
- package/coverage/utils/navigationTracker.ts.html +562 -0
- package/coverage/utils/passwordValidation.ts.html +259 -0
- package/coverage/utils/preAuthCheck.ts.html +442 -0
- package/coverage/utils/redirectSecurity.ts.html +733 -0
- package/coverage/utils/tenantConfig.ts.html +712 -0
- package/coverage/utils/tokenStorage.ts.html +1825 -0
- package/coverage/utils/webCrypto.ts.html +490 -0
- package/dist/{CrudiaMarkdownField-CkiBwG-U.d.ts → CrudiaMarkdownField-DM6NR8zw.d.mts} +22 -22
- package/dist/{CrudiaMarkdownField-D-DqiXMQ.d.mts → CrudiaMarkdownField-UJaiSq9_.d.ts} +22 -22
- package/dist/{GlobalNotificationProvider-CdwdNv_8.d.mts → GlobalNotificationProvider-Cx540WKg.d.mts} +15 -15
- package/dist/{GlobalNotificationProvider-CdwdNv_8.d.ts → GlobalNotificationProvider-Cx540WKg.d.ts} +15 -15
- package/dist/chunk-2DXLCBOT.mjs +1 -0
- package/dist/chunk-DYRZIARH.js +1 -0
- package/dist/chunk-GCSJXEGT.mjs +1 -0
- package/dist/chunk-GJUZD5ZN.js +1 -0
- package/dist/chunk-K47I475N.js +1 -0
- package/dist/chunk-OCYZGEM5.mjs +1 -0
- package/dist/chunk-PI7HPRDB.js +1 -0
- package/dist/chunk-QVEUGJBY.mjs +1 -0
- package/dist/chunk-UROR7G7N.mjs +1 -0
- package/dist/chunk-XFT47DEL.js +1 -0
- package/dist/components.d.mts +8 -8
- package/dist/components.d.ts +8 -8
- package/dist/components.js +1 -1
- package/dist/components.mjs +1 -1
- package/dist/{errorTranslation-CF-5JClP.d.ts → errorTranslation-BEWwDbCH.d.ts} +1 -1
- package/dist/{errorTranslation-BcX8AaK7.d.mts → errorTranslation-DsGZon0M.d.mts} +1 -1
- package/dist/hooks.d.mts +3 -3
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/{index-DEDnmsdO.d.ts → index-Dnmttf62.d.ts} +131 -114
- package/dist/{index-D06kTP0C.d.mts → index-ZcF6nJt4.d.mts} +131 -114
- package/dist/index.d.mts +153 -106
- package/dist/index.d.ts +153 -106
- package/dist/index.js +2 -2
- package/dist/index.mjs +2 -2
- package/dist/{tenantConfig-CYnS9TPV.d.mts → tenantConfig-DxpfrAof.d.mts} +1 -1
- package/dist/{tenantConfig-CYnS9TPV.d.ts → tenantConfig-DxpfrAof.d.ts} +1 -1
- package/dist/utils.d.mts +25 -25
- package/dist/utils.d.ts +25 -25
- package/dist/utils.js +1 -1
- package/dist/utils.mjs +1 -1
- package/eslint.config.mjs +2 -2
- package/package.json +3 -3
- package/tests/helpers/mockFactories.ts +218 -0
- package/tests/helpers/testUtils.tsx +66 -1
- package/vitest.config.ts +1 -0
- package/dist/chunk-2WAUZ6KI.js +0 -1
- package/dist/chunk-3IGZNZCT.mjs +0 -1
- package/dist/chunk-43L2PP77.mjs +0 -1
- package/dist/chunk-6VS5OT3A.mjs +0 -1
- package/dist/chunk-BWJTTMKS.js +0 -1
- package/dist/chunk-EMPPCCVU.js +0 -1
- package/dist/chunk-J43UPGBE.js +0 -1
- package/dist/chunk-K6ZRXOJ7.mjs +0 -1
- package/dist/chunk-RYQQZTEP.js +0 -1
- package/dist/chunk-VTMSOK4V.mjs +0 -1
|
@@ -0,0 +1,1279 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for core/CrudifyInitializationManager.ts</title>
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
+
<link rel="stylesheet" href="../base.css" />
|
|
10
|
+
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
+
<style type='text/css'>
|
|
13
|
+
.coverage-summary .sorter {
|
|
14
|
+
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
</head>
|
|
18
|
+
|
|
19
|
+
<body>
|
|
20
|
+
<div class='wrapper'>
|
|
21
|
+
<div class='pad1'>
|
|
22
|
+
<h1><a href="../index.html">All files</a> / <a href="index.html">core</a> CrudifyInitializationManager.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">91.2% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>363/398</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">79.66% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>47/59</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>17/17</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">91.2% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>363/398</span>
|
|
50
|
+
</div>
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
</div>
|
|
54
|
+
<p class="quiet">
|
|
55
|
+
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
+
</p>
|
|
57
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
+
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
+
<a name='L349'></a><a href='#L349'>349</a>
|
|
415
|
+
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
+
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
+
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
+
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
+
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
+
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
+
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
+
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
+
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
+
<a name='L359'></a><a href='#L359'>359</a>
|
|
425
|
+
<a name='L360'></a><a href='#L360'>360</a>
|
|
426
|
+
<a name='L361'></a><a href='#L361'>361</a>
|
|
427
|
+
<a name='L362'></a><a href='#L362'>362</a>
|
|
428
|
+
<a name='L363'></a><a href='#L363'>363</a>
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a>
|
|
430
|
+
<a name='L365'></a><a href='#L365'>365</a>
|
|
431
|
+
<a name='L366'></a><a href='#L366'>366</a>
|
|
432
|
+
<a name='L367'></a><a href='#L367'>367</a>
|
|
433
|
+
<a name='L368'></a><a href='#L368'>368</a>
|
|
434
|
+
<a name='L369'></a><a href='#L369'>369</a>
|
|
435
|
+
<a name='L370'></a><a href='#L370'>370</a>
|
|
436
|
+
<a name='L371'></a><a href='#L371'>371</a>
|
|
437
|
+
<a name='L372'></a><a href='#L372'>372</a>
|
|
438
|
+
<a name='L373'></a><a href='#L373'>373</a>
|
|
439
|
+
<a name='L374'></a><a href='#L374'>374</a>
|
|
440
|
+
<a name='L375'></a><a href='#L375'>375</a>
|
|
441
|
+
<a name='L376'></a><a href='#L376'>376</a>
|
|
442
|
+
<a name='L377'></a><a href='#L377'>377</a>
|
|
443
|
+
<a name='L378'></a><a href='#L378'>378</a>
|
|
444
|
+
<a name='L379'></a><a href='#L379'>379</a>
|
|
445
|
+
<a name='L380'></a><a href='#L380'>380</a>
|
|
446
|
+
<a name='L381'></a><a href='#L381'>381</a>
|
|
447
|
+
<a name='L382'></a><a href='#L382'>382</a>
|
|
448
|
+
<a name='L383'></a><a href='#L383'>383</a>
|
|
449
|
+
<a name='L384'></a><a href='#L384'>384</a>
|
|
450
|
+
<a name='L385'></a><a href='#L385'>385</a>
|
|
451
|
+
<a name='L386'></a><a href='#L386'>386</a>
|
|
452
|
+
<a name='L387'></a><a href='#L387'>387</a>
|
|
453
|
+
<a name='L388'></a><a href='#L388'>388</a>
|
|
454
|
+
<a name='L389'></a><a href='#L389'>389</a>
|
|
455
|
+
<a name='L390'></a><a href='#L390'>390</a>
|
|
456
|
+
<a name='L391'></a><a href='#L391'>391</a>
|
|
457
|
+
<a name='L392'></a><a href='#L392'>392</a>
|
|
458
|
+
<a name='L393'></a><a href='#L393'>393</a>
|
|
459
|
+
<a name='L394'></a><a href='#L394'>394</a>
|
|
460
|
+
<a name='L395'></a><a href='#L395'>395</a>
|
|
461
|
+
<a name='L396'></a><a href='#L396'>396</a>
|
|
462
|
+
<a name='L397'></a><a href='#L397'>397</a>
|
|
463
|
+
<a name='L398'></a><a href='#L398'>398</a>
|
|
464
|
+
<a name='L399'></a><a href='#L399'>399</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
465
|
+
<span class="cline-any cline-yes">1x</span>
|
|
466
|
+
<span class="cline-any cline-yes">1x</span>
|
|
467
|
+
<span class="cline-any cline-yes">1x</span>
|
|
468
|
+
<span class="cline-any cline-yes">1x</span>
|
|
469
|
+
<span class="cline-any cline-yes">1x</span>
|
|
470
|
+
<span class="cline-any cline-yes">1x</span>
|
|
471
|
+
<span class="cline-any cline-yes">1x</span>
|
|
472
|
+
<span class="cline-any cline-yes">1x</span>
|
|
473
|
+
<span class="cline-any cline-yes">1x</span>
|
|
474
|
+
<span class="cline-any cline-yes">1x</span>
|
|
475
|
+
<span class="cline-any cline-yes">1x</span>
|
|
476
|
+
<span class="cline-any cline-yes">1x</span>
|
|
477
|
+
<span class="cline-any cline-yes">1x</span>
|
|
478
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
|
+
<span class="cline-any cline-yes">1x</span>
|
|
480
|
+
<span class="cline-any cline-yes">1x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
|
+
<span class="cline-any cline-yes">1x</span>
|
|
484
|
+
<span class="cline-any cline-yes">1x</span>
|
|
485
|
+
<span class="cline-any cline-yes">1x</span>
|
|
486
|
+
<span class="cline-any cline-yes">1x</span>
|
|
487
|
+
<span class="cline-any cline-yes">1x</span>
|
|
488
|
+
<span class="cline-any cline-yes">1x</span>
|
|
489
|
+
<span class="cline-any cline-yes">1x</span>
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
|
+
<span class="cline-any cline-yes">1x</span>
|
|
493
|
+
<span class="cline-any cline-yes">1x</span>
|
|
494
|
+
<span class="cline-any cline-yes">1x</span>
|
|
495
|
+
<span class="cline-any cline-yes">1x</span>
|
|
496
|
+
<span class="cline-any cline-yes">1x</span>
|
|
497
|
+
<span class="cline-any cline-yes">1x</span>
|
|
498
|
+
<span class="cline-any cline-yes">1x</span>
|
|
499
|
+
<span class="cline-any cline-yes">1x</span>
|
|
500
|
+
<span class="cline-any cline-yes">1x</span>
|
|
501
|
+
<span class="cline-any cline-yes">1x</span>
|
|
502
|
+
<span class="cline-any cline-yes">1x</span>
|
|
503
|
+
<span class="cline-any cline-yes">1x</span>
|
|
504
|
+
<span class="cline-any cline-yes">1x</span>
|
|
505
|
+
<span class="cline-any cline-yes">1x</span>
|
|
506
|
+
<span class="cline-any cline-yes">1x</span>
|
|
507
|
+
<span class="cline-any cline-yes">1x</span>
|
|
508
|
+
<span class="cline-any cline-yes">1x</span>
|
|
509
|
+
<span class="cline-any cline-yes">1x</span>
|
|
510
|
+
<span class="cline-any cline-yes">1x</span>
|
|
511
|
+
<span class="cline-any cline-yes">1x</span>
|
|
512
|
+
<span class="cline-any cline-yes">1x</span>
|
|
513
|
+
<span class="cline-any cline-yes">1x</span>
|
|
514
|
+
<span class="cline-any cline-yes">1x</span>
|
|
515
|
+
<span class="cline-any cline-yes">1x</span>
|
|
516
|
+
<span class="cline-any cline-yes">1x</span>
|
|
517
|
+
<span class="cline-any cline-yes">1x</span>
|
|
518
|
+
<span class="cline-any cline-yes">1x</span>
|
|
519
|
+
<span class="cline-any cline-yes">1x</span>
|
|
520
|
+
<span class="cline-any cline-yes">1x</span>
|
|
521
|
+
<span class="cline-any cline-yes">1x</span>
|
|
522
|
+
<span class="cline-any cline-yes">1x</span>
|
|
523
|
+
<span class="cline-any cline-yes">1x</span>
|
|
524
|
+
<span class="cline-any cline-yes">1x</span>
|
|
525
|
+
<span class="cline-any cline-yes">1x</span>
|
|
526
|
+
<span class="cline-any cline-yes">1x</span>
|
|
527
|
+
<span class="cline-any cline-yes">1x</span>
|
|
528
|
+
<span class="cline-any cline-yes">1x</span>
|
|
529
|
+
<span class="cline-any cline-yes">1x</span>
|
|
530
|
+
<span class="cline-any cline-yes">1x</span>
|
|
531
|
+
<span class="cline-any cline-yes">1x</span>
|
|
532
|
+
<span class="cline-any cline-yes">1x</span>
|
|
533
|
+
<span class="cline-any cline-yes">1x</span>
|
|
534
|
+
<span class="cline-any cline-yes">1x</span>
|
|
535
|
+
<span class="cline-any cline-yes">1x</span>
|
|
536
|
+
<span class="cline-any cline-yes">1x</span>
|
|
537
|
+
<span class="cline-any cline-yes">1x</span>
|
|
538
|
+
<span class="cline-any cline-yes">1x</span>
|
|
539
|
+
<span class="cline-any cline-yes">1x</span>
|
|
540
|
+
<span class="cline-any cline-yes">1x</span>
|
|
541
|
+
<span class="cline-any cline-yes">1x</span>
|
|
542
|
+
<span class="cline-any cline-yes">1x</span>
|
|
543
|
+
<span class="cline-any cline-yes">1x</span>
|
|
544
|
+
<span class="cline-any cline-yes">1x</span>
|
|
545
|
+
<span class="cline-any cline-yes">7x</span>
|
|
546
|
+
<span class="cline-any cline-yes">3x</span>
|
|
547
|
+
<span class="cline-any cline-yes">3x</span>
|
|
548
|
+
<span class="cline-any cline-yes">7x</span>
|
|
549
|
+
<span class="cline-any cline-yes">7x</span>
|
|
550
|
+
<span class="cline-any cline-yes">1x</span>
|
|
551
|
+
<span class="cline-any cline-yes">1x</span>
|
|
552
|
+
<span class="cline-any cline-yes">1x</span>
|
|
553
|
+
<span class="cline-any cline-yes">1x</span>
|
|
554
|
+
<span class="cline-any cline-yes">1x</span>
|
|
555
|
+
<span class="cline-any cline-yes">1x</span>
|
|
556
|
+
<span class="cline-any cline-yes">18x</span>
|
|
557
|
+
<span class="cline-any cline-yes">18x</span>
|
|
558
|
+
<span class="cline-any cline-yes">1x</span>
|
|
559
|
+
<span class="cline-any cline-yes">1x</span>
|
|
560
|
+
<span class="cline-any cline-yes">1x</span>
|
|
561
|
+
<span class="cline-any cline-yes">1x</span>
|
|
562
|
+
<span class="cline-any cline-yes">1x</span>
|
|
563
|
+
<span class="cline-any cline-yes">5x</span>
|
|
564
|
+
<span class="cline-any cline-yes">5x</span>
|
|
565
|
+
<span class="cline-any cline-yes">1x</span>
|
|
566
|
+
<span class="cline-any cline-yes">1x</span>
|
|
567
|
+
<span class="cline-any cline-yes">1x</span>
|
|
568
|
+
<span class="cline-any cline-yes">1x</span>
|
|
569
|
+
<span class="cline-any cline-yes">1x</span>
|
|
570
|
+
<span class="cline-any cline-yes">14x</span>
|
|
571
|
+
<span class="cline-any cline-yes">14x</span>
|
|
572
|
+
<span class="cline-any cline-yes">1x</span>
|
|
573
|
+
<span class="cline-any cline-yes">1x</span>
|
|
574
|
+
<span class="cline-any cline-yes">1x</span>
|
|
575
|
+
<span class="cline-any cline-yes">1x</span>
|
|
576
|
+
<span class="cline-any cline-yes">1x</span>
|
|
577
|
+
<span class="cline-any cline-yes">1x</span>
|
|
578
|
+
<span class="cline-any cline-yes">1x</span>
|
|
579
|
+
<span class="cline-any cline-yes">1x</span>
|
|
580
|
+
<span class="cline-any cline-yes">1x</span>
|
|
581
|
+
<span class="cline-any cline-yes">33x</span>
|
|
582
|
+
<span class="cline-any cline-yes">33x</span>
|
|
583
|
+
<span class="cline-any cline-yes">33x</span>
|
|
584
|
+
<span class="cline-any cline-yes">33x</span>
|
|
585
|
+
<span class="cline-any cline-yes">3x</span>
|
|
586
|
+
<span class="cline-any cline-yes">3x</span>
|
|
587
|
+
<span class="cline-any cline-yes">3x</span>
|
|
588
|
+
<span class="cline-any cline-yes">30x</span>
|
|
589
|
+
<span class="cline-any cline-yes">30x</span>
|
|
590
|
+
<span class="cline-any cline-yes">33x</span>
|
|
591
|
+
<span class="cline-any cline-yes">2x</span>
|
|
592
|
+
<span class="cline-any cline-yes">2x</span>
|
|
593
|
+
<span class="cline-any cline-yes">2x</span>
|
|
594
|
+
<span class="cline-any cline-yes">28x</span>
|
|
595
|
+
<span class="cline-any cline-yes">28x</span>
|
|
596
|
+
<span class="cline-any cline-yes">33x</span>
|
|
597
|
+
<span class="cline-any cline-yes">2x</span>
|
|
598
|
+
<span class="cline-any cline-yes">2x</span>
|
|
599
|
+
<span class="cline-any cline-yes">2x</span>
|
|
600
|
+
<span class="cline-any cline-yes">2x</span>
|
|
601
|
+
<span class="cline-any cline-yes">2x</span>
|
|
602
|
+
<span class="cline-any cline-yes">26x</span>
|
|
603
|
+
<span class="cline-any cline-yes">26x</span>
|
|
604
|
+
<span class="cline-any cline-yes">26x</span>
|
|
605
|
+
<span class="cline-any cline-yes">26x</span>
|
|
606
|
+
<span class="cline-any cline-yes">26x</span>
|
|
607
|
+
<span class="cline-any cline-yes">26x</span>
|
|
608
|
+
<span class="cline-any cline-yes">33x</span>
|
|
609
|
+
<span class="cline-any cline-yes">1x</span>
|
|
610
|
+
<span class="cline-any cline-yes">1x</span>
|
|
611
|
+
<span class="cline-any cline-yes">1x</span>
|
|
612
|
+
<span class="cline-any cline-yes">1x</span>
|
|
613
|
+
<span class="cline-any cline-yes">1x</span>
|
|
614
|
+
<span class="cline-any cline-yes">3x</span>
|
|
615
|
+
<span class="cline-any cline-yes">1x</span>
|
|
616
|
+
<span class="cline-any cline-yes">1x</span>
|
|
617
|
+
<span class="cline-any cline-yes">1x</span>
|
|
618
|
+
<span class="cline-any cline-yes">1x</span>
|
|
619
|
+
<span class="cline-any cline-yes">1x</span>
|
|
620
|
+
<span class="cline-any cline-yes">3x</span>
|
|
621
|
+
<span class="cline-any cline-yes">1x</span>
|
|
622
|
+
<span class="cline-any cline-yes">1x</span>
|
|
623
|
+
<span class="cline-any cline-yes">1x</span>
|
|
624
|
+
<span class="cline-any cline-yes">1x</span>
|
|
625
|
+
<span class="cline-any cline-yes">1x</span>
|
|
626
|
+
<span class="cline-any cline-yes">32x</span>
|
|
627
|
+
<span class="cline-any cline-yes">1x</span>
|
|
628
|
+
<span class="cline-any cline-yes">1x</span>
|
|
629
|
+
<span class="cline-any cline-yes">32x</span>
|
|
630
|
+
<span class="cline-any cline-yes">1x</span>
|
|
631
|
+
<span class="cline-any cline-yes">1x</span>
|
|
632
|
+
<span class="cline-any cline-yes">1x</span>
|
|
633
|
+
<span class="cline-any cline-yes">1x</span>
|
|
634
|
+
<span class="cline-any cline-yes">1x</span>
|
|
635
|
+
<span class="cline-any cline-yes">28x</span>
|
|
636
|
+
<span class="cline-any cline-yes">28x</span>
|
|
637
|
+
<span class="cline-any cline-yes">1x</span>
|
|
638
|
+
<span class="cline-any cline-yes">1x</span>
|
|
639
|
+
<span class="cline-any cline-yes">1x</span>
|
|
640
|
+
<span class="cline-any cline-yes">1x</span>
|
|
641
|
+
<span class="cline-any cline-yes">1x</span>
|
|
642
|
+
<span class="cline-any cline-yes">1x</span>
|
|
643
|
+
<span class="cline-any cline-yes">1x</span>
|
|
644
|
+
<span class="cline-any cline-yes">2x</span>
|
|
645
|
+
<span class="cline-any cline-yes">2x</span>
|
|
646
|
+
<span class="cline-any cline-yes">2x</span>
|
|
647
|
+
<span class="cline-any cline-yes">2x</span>
|
|
648
|
+
<span class="cline-any cline-yes">2x</span>
|
|
649
|
+
<span class="cline-any cline-yes">2x</span>
|
|
650
|
+
<span class="cline-any cline-yes">2x</span>
|
|
651
|
+
<span class="cline-any cline-yes">2x</span>
|
|
652
|
+
<span class="cline-any cline-yes">2x</span>
|
|
653
|
+
<span class="cline-any cline-yes">2x</span>
|
|
654
|
+
<span class="cline-any cline-yes">2x</span>
|
|
655
|
+
<span class="cline-any cline-no"> </span>
|
|
656
|
+
<span class="cline-any cline-no"> </span>
|
|
657
|
+
<span class="cline-any cline-no"> </span>
|
|
658
|
+
<span class="cline-any cline-no"> </span>
|
|
659
|
+
<span class="cline-any cline-no"> </span>
|
|
660
|
+
<span class="cline-any cline-no"> </span>
|
|
661
|
+
<span class="cline-any cline-no"> </span>
|
|
662
|
+
<span class="cline-any cline-no"> </span>
|
|
663
|
+
<span class="cline-any cline-yes">2x</span>
|
|
664
|
+
<span class="cline-any cline-yes">1x</span>
|
|
665
|
+
<span class="cline-any cline-yes">1x</span>
|
|
666
|
+
<span class="cline-any cline-yes">1x</span>
|
|
667
|
+
<span class="cline-any cline-yes">1x</span>
|
|
668
|
+
<span class="cline-any cline-yes">1x</span>
|
|
669
|
+
<span class="cline-any cline-yes">26x</span>
|
|
670
|
+
<span class="cline-any cline-yes">26x</span>
|
|
671
|
+
<span class="cline-any cline-yes">26x</span>
|
|
672
|
+
<span class="cline-any cline-no"> </span>
|
|
673
|
+
<span class="cline-any cline-no"> </span>
|
|
674
|
+
<span class="cline-any cline-no"> </span>
|
|
675
|
+
<span class="cline-any cline-no"> </span>
|
|
676
|
+
<span class="cline-any cline-no"> </span>
|
|
677
|
+
<span class="cline-any cline-no"> </span>
|
|
678
|
+
<span class="cline-any cline-no"> </span>
|
|
679
|
+
<span class="cline-any cline-no"> </span>
|
|
680
|
+
<span class="cline-any cline-yes">26x</span>
|
|
681
|
+
<span class="cline-any cline-yes">1x</span>
|
|
682
|
+
<span class="cline-any cline-yes">1x</span>
|
|
683
|
+
<span class="cline-any cline-yes">1x</span>
|
|
684
|
+
<span class="cline-any cline-yes">1x</span>
|
|
685
|
+
<span class="cline-any cline-yes">1x</span>
|
|
686
|
+
<span class="cline-any cline-yes">26x</span>
|
|
687
|
+
<span class="cline-any cline-yes">26x</span>
|
|
688
|
+
<span class="cline-any cline-yes">26x</span>
|
|
689
|
+
<span class="cline-any cline-yes">26x</span>
|
|
690
|
+
<span class="cline-any cline-yes">26x</span>
|
|
691
|
+
<span class="cline-any cline-yes">26x</span>
|
|
692
|
+
<span class="cline-any cline-yes">26x</span>
|
|
693
|
+
<span class="cline-any cline-yes">26x</span>
|
|
694
|
+
<span class="cline-any cline-yes">26x</span>
|
|
695
|
+
<span class="cline-any cline-yes">26x</span>
|
|
696
|
+
<span class="cline-any cline-yes">26x</span>
|
|
697
|
+
<span class="cline-any cline-yes">26x</span>
|
|
698
|
+
<span class="cline-any cline-yes">21x</span>
|
|
699
|
+
<span class="cline-any cline-yes">21x</span>
|
|
700
|
+
<span class="cline-any cline-yes">21x</span>
|
|
701
|
+
<span class="cline-any cline-yes">21x</span>
|
|
702
|
+
<span class="cline-any cline-yes">21x</span>
|
|
703
|
+
<span class="cline-any cline-yes">26x</span>
|
|
704
|
+
<span class="cline-any cline-yes">1x</span>
|
|
705
|
+
<span class="cline-any cline-yes">1x</span>
|
|
706
|
+
<span class="cline-any cline-yes">26x</span>
|
|
707
|
+
<span class="cline-any cline-yes">5x</span>
|
|
708
|
+
<span class="cline-any cline-yes">5x</span>
|
|
709
|
+
<span class="cline-any cline-yes">5x</span>
|
|
710
|
+
<span class="cline-any cline-yes">5x</span>
|
|
711
|
+
<span class="cline-any cline-yes">5x</span>
|
|
712
|
+
<span class="cline-any cline-yes">5x</span>
|
|
713
|
+
<span class="cline-any cline-yes">5x</span>
|
|
714
|
+
<span class="cline-any cline-yes">5x</span>
|
|
715
|
+
<span class="cline-any cline-yes">5x</span>
|
|
716
|
+
<span class="cline-any cline-yes">5x</span>
|
|
717
|
+
<span class="cline-any cline-yes">26x</span>
|
|
718
|
+
<span class="cline-any cline-yes">1x</span>
|
|
719
|
+
<span class="cline-any cline-yes">1x</span>
|
|
720
|
+
<span class="cline-any cline-yes">1x</span>
|
|
721
|
+
<span class="cline-any cline-yes">1x</span>
|
|
722
|
+
<span class="cline-any cline-yes">1x</span>
|
|
723
|
+
<span class="cline-any cline-yes">2x</span>
|
|
724
|
+
<span class="cline-any cline-yes">2x</span>
|
|
725
|
+
<span class="cline-any cline-yes">2x</span>
|
|
726
|
+
<span class="cline-any cline-yes">2x</span>
|
|
727
|
+
<span class="cline-any cline-yes">2x</span>
|
|
728
|
+
<span class="cline-any cline-yes">10x</span>
|
|
729
|
+
<span class="cline-any cline-yes">10x</span>
|
|
730
|
+
<span class="cline-any cline-yes">10x</span>
|
|
731
|
+
<span class="cline-any cline-yes">10x</span>
|
|
732
|
+
<span class="cline-any cline-yes">2x</span>
|
|
733
|
+
<span class="cline-any cline-yes">2x</span>
|
|
734
|
+
<span class="cline-any cline-yes">2x</span>
|
|
735
|
+
<span class="cline-any cline-yes">2x</span>
|
|
736
|
+
<span class="cline-any cline-yes">8x</span>
|
|
737
|
+
<span class="cline-any cline-yes">8x</span>
|
|
738
|
+
<span class="cline-any cline-yes">10x</span>
|
|
739
|
+
<span class="cline-any cline-no"> </span>
|
|
740
|
+
<span class="cline-any cline-no"> </span>
|
|
741
|
+
<span class="cline-any cline-no"> </span>
|
|
742
|
+
<span class="cline-any cline-no"> </span>
|
|
743
|
+
<span class="cline-any cline-yes">8x</span>
|
|
744
|
+
<span class="cline-any cline-yes">8x</span>
|
|
745
|
+
<span class="cline-any cline-yes">10x</span>
|
|
746
|
+
<span class="cline-any cline-no"> </span>
|
|
747
|
+
<span class="cline-any cline-no"> </span>
|
|
748
|
+
<span class="cline-any cline-no"> </span>
|
|
749
|
+
<span class="cline-any cline-no"> </span>
|
|
750
|
+
<span class="cline-any cline-no"> </span>
|
|
751
|
+
<span class="cline-any cline-no"> </span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-yes">2x</span>
|
|
755
|
+
<span class="cline-any cline-yes">2x</span>
|
|
756
|
+
<span class="cline-any cline-yes">2x</span>
|
|
757
|
+
<span class="cline-any cline-yes">1x</span>
|
|
758
|
+
<span class="cline-any cline-yes">1x</span>
|
|
759
|
+
<span class="cline-any cline-yes">1x</span>
|
|
760
|
+
<span class="cline-any cline-yes">1x</span>
|
|
761
|
+
<span class="cline-any cline-yes">1x</span>
|
|
762
|
+
<span class="cline-any cline-yes">26x</span>
|
|
763
|
+
<span class="cline-any cline-yes">26x</span>
|
|
764
|
+
<span class="cline-any cline-yes">26x</span>
|
|
765
|
+
<span class="cline-any cline-yes">26x</span>
|
|
766
|
+
<span class="cline-any cline-yes">26x</span>
|
|
767
|
+
<span class="cline-any cline-yes">26x</span>
|
|
768
|
+
<span class="cline-any cline-yes">26x</span>
|
|
769
|
+
<span class="cline-any cline-yes">2x</span>
|
|
770
|
+
<span class="cline-any cline-no"> </span>
|
|
771
|
+
<span class="cline-any cline-no"> </span>
|
|
772
|
+
<span class="cline-any cline-yes">2x</span>
|
|
773
|
+
<span class="cline-any cline-yes">2x</span>
|
|
774
|
+
<span class="cline-any cline-yes">24x</span>
|
|
775
|
+
<span class="cline-any cline-yes">24x</span>
|
|
776
|
+
<span class="cline-any cline-yes">24x</span>
|
|
777
|
+
<span class="cline-any cline-yes">24x</span>
|
|
778
|
+
<span class="cline-any cline-yes">24x</span>
|
|
779
|
+
<span class="cline-any cline-yes">26x</span>
|
|
780
|
+
<span class="cline-any cline-yes">26x</span>
|
|
781
|
+
<span class="cline-any cline-yes">24x</span>
|
|
782
|
+
<span class="cline-any cline-yes">24x</span>
|
|
783
|
+
<span class="cline-any cline-yes">24x</span>
|
|
784
|
+
<span class="cline-any cline-yes">24x</span>
|
|
785
|
+
<span class="cline-any cline-yes">24x</span>
|
|
786
|
+
<span class="cline-any cline-yes">24x</span>
|
|
787
|
+
<span class="cline-any cline-yes">26x</span>
|
|
788
|
+
<span class="cline-any cline-yes">5x</span>
|
|
789
|
+
<span class="cline-any cline-yes">5x</span>
|
|
790
|
+
<span class="cline-any cline-yes">19x</span>
|
|
791
|
+
<span class="cline-any cline-yes">19x</span>
|
|
792
|
+
<span class="cline-any cline-yes">26x</span>
|
|
793
|
+
<span class="cline-any cline-no"> </span>
|
|
794
|
+
<span class="cline-any cline-no"> </span>
|
|
795
|
+
<span class="cline-any cline-no"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-no"> </span>
|
|
798
|
+
<span class="cline-any cline-yes">26x</span>
|
|
799
|
+
<span class="cline-any cline-yes">1x</span>
|
|
800
|
+
<span class="cline-any cline-yes">1x</span>
|
|
801
|
+
<span class="cline-any cline-yes">1x</span>
|
|
802
|
+
<span class="cline-any cline-yes">1x</span>
|
|
803
|
+
<span class="cline-any cline-yes">1x</span>
|
|
804
|
+
<span class="cline-any cline-yes">63x</span>
|
|
805
|
+
<span class="cline-any cline-yes">63x</span>
|
|
806
|
+
<span class="cline-any cline-yes">63x</span>
|
|
807
|
+
<span class="cline-any cline-yes">63x</span>
|
|
808
|
+
<span class="cline-any cline-yes">63x</span>
|
|
809
|
+
<span class="cline-any cline-yes">63x</span>
|
|
810
|
+
<span class="cline-any cline-yes">63x</span>
|
|
811
|
+
<span class="cline-any cline-yes">63x</span>
|
|
812
|
+
<span class="cline-any cline-yes">63x</span>
|
|
813
|
+
<span class="cline-any cline-yes">63x</span>
|
|
814
|
+
<span class="cline-any cline-yes">63x</span>
|
|
815
|
+
<span class="cline-any cline-yes">63x</span>
|
|
816
|
+
<span class="cline-any cline-yes">1x</span>
|
|
817
|
+
<span class="cline-any cline-yes">1x</span>
|
|
818
|
+
<span class="cline-any cline-yes">1x</span>
|
|
819
|
+
<span class="cline-any cline-yes">1x</span>
|
|
820
|
+
<span class="cline-any cline-yes">1x</span>
|
|
821
|
+
<span class="cline-any cline-yes">13x</span>
|
|
822
|
+
<span class="cline-any cline-yes">13x</span>
|
|
823
|
+
<span class="cline-any cline-yes">1x</span>
|
|
824
|
+
<span class="cline-any cline-yes">1x</span>
|
|
825
|
+
<span class="cline-any cline-yes">1x</span>
|
|
826
|
+
<span class="cline-any cline-yes">1x</span>
|
|
827
|
+
<span class="cline-any cline-yes">1x</span>
|
|
828
|
+
<span class="cline-any cline-yes">3x</span>
|
|
829
|
+
<span class="cline-any cline-yes">3x</span>
|
|
830
|
+
<span class="cline-any cline-yes">3x</span>
|
|
831
|
+
<span class="cline-any cline-yes">3x</span>
|
|
832
|
+
<span class="cline-any cline-yes">3x</span>
|
|
833
|
+
<span class="cline-any cline-yes">3x</span>
|
|
834
|
+
<span class="cline-any cline-yes">3x</span>
|
|
835
|
+
<span class="cline-any cline-yes">1x</span>
|
|
836
|
+
<span class="cline-any cline-yes">1x</span>
|
|
837
|
+
<span class="cline-any cline-yes">1x</span>
|
|
838
|
+
<span class="cline-any cline-yes">1x</span>
|
|
839
|
+
<span class="cline-any cline-yes">1x</span>
|
|
840
|
+
<span class="cline-any cline-yes">1x</span>
|
|
841
|
+
<span class="cline-any cline-yes">1x</span>
|
|
842
|
+
<span class="cline-any cline-yes">1x</span>
|
|
843
|
+
<span class="cline-any cline-yes">1x</span>
|
|
844
|
+
<span class="cline-any cline-yes">1x</span>
|
|
845
|
+
<span class="cline-any cline-yes">1x</span>
|
|
846
|
+
<span class="cline-any cline-yes">1x</span>
|
|
847
|
+
<span class="cline-any cline-yes">1x</span>
|
|
848
|
+
<span class="cline-any cline-yes">1x</span>
|
|
849
|
+
<span class="cline-any cline-yes">1x</span>
|
|
850
|
+
<span class="cline-any cline-yes">1x</span>
|
|
851
|
+
<span class="cline-any cline-yes">1x</span>
|
|
852
|
+
<span class="cline-any cline-yes">1x</span>
|
|
853
|
+
<span class="cline-any cline-yes">1x</span>
|
|
854
|
+
<span class="cline-any cline-yes">1x</span>
|
|
855
|
+
<span class="cline-any cline-yes">1x</span>
|
|
856
|
+
<span class="cline-any cline-yes">1x</span>
|
|
857
|
+
<span class="cline-any cline-yes">1x</span>
|
|
858
|
+
<span class="cline-any cline-yes">1x</span>
|
|
859
|
+
<span class="cline-any cline-yes">1x</span>
|
|
860
|
+
<span class="cline-any cline-yes">1x</span>
|
|
861
|
+
<span class="cline-any cline-yes">1x</span>
|
|
862
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { CrudifyInstance } from '@nocios/crudify-sdk';
|
|
863
|
+
import { credentialsEventBus } from '../services/credentialsEventBus';
|
|
864
|
+
import { logger } from '../utils/logger';
|
|
865
|
+
import type { CrudifyTokenData, CrudifyInitResponse } from '../types/crudify-sdk';
|
|
866
|
+
|
|
867
|
+
export type InitializationPriority = 'HIGH' | 'LOW';
|
|
868
|
+
export type InitializationStatus = 'UNINITIALIZED' | 'INITIALIZING' | 'INITIALIZED' | 'ERROR';
|
|
869
|
+
|
|
870
|
+
interface InitializationState {
|
|
871
|
+
status: InitializationStatus;
|
|
872
|
+
priority: InitializationPriority | null;
|
|
873
|
+
publicApiKey: string | null;
|
|
874
|
+
env: string | null;
|
|
875
|
+
error: Error | null;
|
|
876
|
+
initializedBy: string | null; // For debugging: which component initialized
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
export interface InitializationRequest {
|
|
880
|
+
priority: InitializationPriority;
|
|
881
|
+
publicApiKey: string;
|
|
882
|
+
env: 'dev' | 'stg' | 'api' | 'prod';
|
|
883
|
+
enableLogging?: boolean;
|
|
884
|
+
requestedBy: string; // For debugging
|
|
885
|
+
}
|
|
886
|
+
|
|
887
|
+
/**
|
|
888
|
+
* CrudifyInitializationManager
|
|
889
|
+
*
|
|
890
|
+
* Singleton manager for controlling Crudify SDK initialization with priority system.
|
|
891
|
+
*
|
|
892
|
+
* **Priority System:**
|
|
893
|
+
* - HIGH: Explicit initialization via `<CrudifyInitializer>` component
|
|
894
|
+
* - LOW: Automatic fallback initialization in providers
|
|
895
|
+
*
|
|
896
|
+
* **Thread-Safe:**
|
|
897
|
+
* - Prevents duplicate initializations
|
|
898
|
+
* - Handles concurrent initialization requests
|
|
899
|
+
* - Shared promise ensures single initialization
|
|
900
|
+
*
|
|
901
|
+
* @example
|
|
902
|
+
* ```typescript
|
|
903
|
+
* // HIGH priority (CrudifyInitializer)
|
|
904
|
+
* await crudifyInitManager.initialize({
|
|
905
|
+
* priority: "HIGH",
|
|
906
|
+
* publicApiKey: "key",
|
|
907
|
+
* env: "stg",
|
|
908
|
+
* requestedBy: "CrudifyInitializer"
|
|
909
|
+
* });
|
|
910
|
+
*
|
|
911
|
+
* // LOW priority (provider auto-init)
|
|
912
|
+
* await crudifyInitManager.initialize({
|
|
913
|
+
* priority: "LOW",
|
|
914
|
+
* publicApiKey: "key",
|
|
915
|
+
* env: "stg",
|
|
916
|
+
* requestedBy: "SessionProvider"
|
|
917
|
+
* });
|
|
918
|
+
* ```
|
|
919
|
+
*/
|
|
920
|
+
export class CrudifyInitializationManager {
|
|
921
|
+
private static instance: CrudifyInitializationManager;
|
|
922
|
+
|
|
923
|
+
private state: InitializationState = {
|
|
924
|
+
status: 'UNINITIALIZED',
|
|
925
|
+
priority: null,
|
|
926
|
+
publicApiKey: null,
|
|
927
|
+
env: null,
|
|
928
|
+
error: null,
|
|
929
|
+
initializedBy: null,
|
|
930
|
+
};
|
|
931
|
+
|
|
932
|
+
private initializationPromise: Promise<void> | null = null;
|
|
933
|
+
private highPriorityInitializerPresent: boolean = false;
|
|
934
|
+
private readonly waitingForHighPriority: Set<string> = new Set(); // Track who's waiting
|
|
935
|
+
private readonly HIGH_PRIORITY_WAIT_TIMEOUT = 100; // ms to wait for HIGH priority initializer
|
|
936
|
+
|
|
937
|
+
private constructor() {}
|
|
938
|
+
|
|
939
|
+
/**
|
|
940
|
+
* Get singleton instance
|
|
941
|
+
*/
|
|
942
|
+
public static getInstance(): CrudifyInitializationManager {
|
|
943
|
+
if (!CrudifyInitializationManager.instance) {
|
|
944
|
+
CrudifyInitializationManager.instance = new CrudifyInitializationManager();
|
|
945
|
+
}
|
|
946
|
+
return CrudifyInitializationManager.instance;
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
/**
|
|
950
|
+
* Register that a HIGH priority initializer is present
|
|
951
|
+
* This must be called SYNCHRONOUSLY during component mount
|
|
952
|
+
*/
|
|
953
|
+
public registerHighPriorityInitializer(): void {
|
|
954
|
+
this.highPriorityInitializerPresent = true;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
/**
|
|
958
|
+
* Check if a HIGH priority initializer is present
|
|
959
|
+
*/
|
|
960
|
+
public isHighPriorityInitializerPresent(): boolean {
|
|
961
|
+
return this.highPriorityInitializerPresent;
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
/**
|
|
965
|
+
* Get current initialization state (read-only)
|
|
966
|
+
*/
|
|
967
|
+
public getState(): Readonly<InitializationState> {
|
|
968
|
+
return { ...this.state };
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
/**
|
|
972
|
+
* Main initialization method - handles priority and concurrency
|
|
973
|
+
*
|
|
974
|
+
* @param request Initialization request with priority and config
|
|
975
|
+
* @returns Promise that resolves when initialization completes
|
|
976
|
+
* @throws Error if initialization fails
|
|
977
|
+
*/
|
|
978
|
+
public async initialize(request: InitializationRequest): Promise<void> {
|
|
979
|
+
const { priority, publicApiKey, enableLogging, requestedBy } = request;
|
|
980
|
+
|
|
981
|
+
// CASE 1: Already initialized successfully
|
|
982
|
+
if (this.state.status === 'INITIALIZED') {
|
|
983
|
+
this.warnIfKeyMismatch(publicApiKey, requestedBy);
|
|
984
|
+
return;
|
|
985
|
+
}
|
|
986
|
+
|
|
987
|
+
// CASE 2: Initialization in progress - wait for it
|
|
988
|
+
if (this.initializationPromise) {
|
|
989
|
+
this.logDebug(enableLogging, `${requestedBy} waiting for ongoing initialization...`);
|
|
990
|
+
return this.initializationPromise;
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
// CASE 3: LOW priority request but HIGH priority initializer exists
|
|
994
|
+
if (this.shouldDeferToHighPriority(priority)) {
|
|
995
|
+
const resolved = await this.deferToHighPriority(requestedBy, enableLogging);
|
|
996
|
+
if (resolved) {
|
|
997
|
+
return;
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
|
|
1001
|
+
// CASE 4: HIGH priority request overrides LOW priority if still initializing
|
|
1002
|
+
this.overrideLowPriorityIfNeeded(priority, requestedBy);
|
|
1003
|
+
|
|
1004
|
+
// CASE 5: Proceed with initialization
|
|
1005
|
+
await this.executeInitialization(request);
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
/**
|
|
1009
|
+
* Warn if a caller tries to initialize with a different API key than already configured
|
|
1010
|
+
*/
|
|
1011
|
+
private warnIfKeyMismatch(publicApiKey: string, requestedBy: string): void {
|
|
1012
|
+
if (this.state.publicApiKey !== publicApiKey) {
|
|
1013
|
+
logger.warn(
|
|
1014
|
+
`[CrudifyInitialization] ${requestedBy} attempted to initialize with different key. ` +
|
|
1015
|
+
`Already initialized with key: ${this.state.publicApiKey?.slice(0, 10)}... by ${this.state.initializedBy}`
|
|
1016
|
+
);
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
/**
|
|
1021
|
+
* Log a debug message if logging is enabled
|
|
1022
|
+
*/
|
|
1023
|
+
private logDebug(enableLogging: boolean | undefined, message: string): void {
|
|
1024
|
+
if (enableLogging) {
|
|
1025
|
+
logger.debug(`[CrudifyInitialization] ${message}`);
|
|
1026
|
+
}
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* Check if a LOW priority request should defer to a HIGH priority initializer
|
|
1031
|
+
*/
|
|
1032
|
+
private shouldDeferToHighPriority(priority: InitializationPriority): boolean {
|
|
1033
|
+
return priority === 'LOW' && this.highPriorityInitializerPresent && this.state.status === 'UNINITIALIZED';
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
/**
|
|
1037
|
+
* Defer to HIGH priority initializer, waiting with timeout.
|
|
1038
|
+
* Returns true if initialization was completed by HIGH priority (caller should return).
|
|
1039
|
+
* Returns false if caller should proceed with its own initialization.
|
|
1040
|
+
*/
|
|
1041
|
+
private async deferToHighPriority(requestedBy: string, enableLogging?: boolean): Promise<boolean> {
|
|
1042
|
+
this.logDebug(enableLogging, `${requestedBy} (LOW priority) waiting for HIGH priority initializer...`);
|
|
1043
|
+
|
|
1044
|
+
this.waitingForHighPriority.add(requestedBy);
|
|
1045
|
+
await this.waitForHighPriorityOrTimeout(enableLogging);
|
|
1046
|
+
this.waitingForHighPriority.delete(requestedBy);
|
|
1047
|
+
|
|
1048
|
+
// Re-check status after wait - it may have changed during async operation
|
|
1049
|
+
if (this.getState().status === 'INITIALIZED') {
|
|
1050
|
+
this.logDebug(enableLogging, `${requestedBy} found initialization completed by HIGH priority`);
|
|
1051
|
+
return true;
|
|
1052
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
1053
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1054
|
+
<span class="cstat-no" title="statement not covered" > // HIGH priority didn't initialize - fall through to initialize ourselves</span>
|
|
1055
|
+
<span class="cstat-no" title="statement not covered" > if (enableLogging) {</span>
|
|
1056
|
+
<span class="cstat-no" title="statement not covered" > logger.warn(</span>
|
|
1057
|
+
<span class="cstat-no" title="statement not covered" > `[CrudifyInitialization] ${requestedBy} timeout waiting for HIGH priority, initializing with LOW priority`</span>
|
|
1058
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1059
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1060
|
+
<span class="cstat-no" title="statement not covered" > return false;</span>
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
/**
|
|
1064
|
+
* If a HIGH priority request arrives while LOW priority is initializing, override it
|
|
1065
|
+
*/
|
|
1066
|
+
private overrideLowPriorityIfNeeded(priority: InitializationPriority, requestedBy: string): void {
|
|
1067
|
+
if (priority !== 'HIGH' || this.state.status !== <span class="branch-0 cbranch-no" title="branch not covered" >'INITIALIZING' || this.state.priority !== 'LOW') {</span>
|
|
1068
|
+
return;
|
|
1069
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > }</span>
|
|
1070
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1071
|
+
<span class="cstat-no" title="statement not covered" > logger.warn(</span>
|
|
1072
|
+
<span class="cstat-no" title="statement not covered" > `[CrudifyInitialization] HIGH priority request from ${requestedBy} ` +</span>
|
|
1073
|
+
<span class="cstat-no" title="statement not covered" > `interrupting LOW priority initialization by ${this.state.initializedBy}`</span>
|
|
1074
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1075
|
+
<span class="cstat-no" title="statement not covered" > // Cancel the LOW priority initialization (if possible) and restart</span>
|
|
1076
|
+
<span class="cstat-no" title="statement not covered" > this.state.status = 'UNINITIALIZED';</span>
|
|
1077
|
+
<span class="cstat-no" title="statement not covered" > this.initializationPromise = null;</span>
|
|
1078
|
+
}
|
|
1079
|
+
|
|
1080
|
+
/**
|
|
1081
|
+
* Execute the actual SDK initialization and update state accordingly
|
|
1082
|
+
*/
|
|
1083
|
+
private async executeInitialization(request: InitializationRequest): Promise<void> {
|
|
1084
|
+
const { priority, publicApiKey, env, enableLogging, requestedBy } = request;
|
|
1085
|
+
|
|
1086
|
+
this.logDebug(enableLogging, `${requestedBy} starting initialization (${priority} priority)...`);
|
|
1087
|
+
|
|
1088
|
+
this.state.status = 'INITIALIZING';
|
|
1089
|
+
this.state.priority = priority;
|
|
1090
|
+
this.state.initializedBy = requestedBy;
|
|
1091
|
+
|
|
1092
|
+
this.initializationPromise = this.performInitialization(publicApiKey, env, enableLogging);
|
|
1093
|
+
|
|
1094
|
+
try {
|
|
1095
|
+
await this.initializationPromise;
|
|
1096
|
+
this.state.status = 'INITIALIZED';
|
|
1097
|
+
this.state.publicApiKey = publicApiKey;
|
|
1098
|
+
this.state.env = env;
|
|
1099
|
+
this.state.error = null;
|
|
1100
|
+
|
|
1101
|
+
if (enableLogging) {
|
|
1102
|
+
logger.info(`[CrudifyInitialization] Successfully initialized by ${requestedBy} (${priority} priority)`);
|
|
1103
|
+
}
|
|
1104
|
+
} catch (error) {
|
|
1105
|
+
this.state.status = 'ERROR';
|
|
1106
|
+
this.state.error = error instanceof Error ? <span class="branch-0 cbranch-no" title="branch not covered" >error : new Error(String(error));</span>
|
|
1107
|
+
this.initializationPromise = null; // Allow retry
|
|
1108
|
+
|
|
1109
|
+
logger.error(
|
|
1110
|
+
`[CrudifyInitialization] Initialization failed for ${requestedBy}`,
|
|
1111
|
+
error instanceof Error ? <span class="branch-0 cbranch-no" title="branch not covered" >error : { message: String(error) }</span>
|
|
1112
|
+
);
|
|
1113
|
+
throw error;
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
/**
|
|
1118
|
+
* Wait for HIGH priority initializer with timeout
|
|
1119
|
+
*/
|
|
1120
|
+
private async waitForHighPriorityOrTimeout(enableLogging?: boolean): Promise<void> {
|
|
1121
|
+
return new Promise((resolve) => {
|
|
1122
|
+
const checkInterval = 10; // Check every 10ms
|
|
1123
|
+
let elapsed = 0;
|
|
1124
|
+
|
|
1125
|
+
const intervalId = setInterval(() => {
|
|
1126
|
+
elapsed += checkInterval;
|
|
1127
|
+
|
|
1128
|
+
// Initialized by HIGH priority
|
|
1129
|
+
if (this.state.status === 'INITIALIZED' && this.state.priority === 'HIGH') {
|
|
1130
|
+
clearInterval(intervalId);
|
|
1131
|
+
resolve();
|
|
1132
|
+
return;
|
|
1133
|
+
}
|
|
1134
|
+
|
|
1135
|
+
// HIGH priority is initializing
|
|
1136
|
+
if (this.state.status === <span class="branch-0 cbranch-no" title="branch not covered" >'INITIALIZING' && this.state.priority === 'HIGH') <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
|
1137
|
+
<span class="cstat-no" title="statement not covered" > // Keep waiting, but reset timeout</span>
|
|
1138
|
+
<span class="cstat-no" title="statement not covered" > elapsed = 0;</span>
|
|
1139
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
1140
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1141
|
+
|
|
1142
|
+
// Timeout reached
|
|
1143
|
+
if (elapsed >= this.HIGH_PRIORITY_WAIT_TIMEOUT) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1144
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(intervalId);</span>
|
|
1145
|
+
<span class="cstat-no" title="statement not covered" > if (enableLogging) {</span>
|
|
1146
|
+
<span class="cstat-no" title="statement not covered" > logger.debug(</span>
|
|
1147
|
+
<span class="cstat-no" title="statement not covered" > `[CrudifyInitialization] Timeout waiting for HIGH priority (${this.HIGH_PRIORITY_WAIT_TIMEOUT}ms)`</span>
|
|
1148
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1149
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1150
|
+
<span class="cstat-no" title="statement not covered" > resolve();</span>
|
|
1151
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1152
|
+
}, checkInterval);
|
|
1153
|
+
});
|
|
1154
|
+
}
|
|
1155
|
+
|
|
1156
|
+
/**
|
|
1157
|
+
* Actual SDK initialization
|
|
1158
|
+
*/
|
|
1159
|
+
private async performInitialization(
|
|
1160
|
+
publicApiKey: string,
|
|
1161
|
+
env: 'dev' | 'stg' | 'api' | 'prod',
|
|
1162
|
+
enableLogging?: boolean
|
|
1163
|
+
): Promise<void> {
|
|
1164
|
+
// Check if already initialized by another service (outside this manager)
|
|
1165
|
+
const tokenData = CrudifyInstance.getTokenData() as CrudifyTokenData | null;
|
|
1166
|
+
if (tokenData?.endpoint) {
|
|
1167
|
+
if (enableLogging) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1168
|
+
<span class="cstat-no" title="statement not covered" > logger.debug('[CrudifyInitialization] SDK already initialized externally');</span>
|
|
1169
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1170
|
+
return;
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
// Configure environment
|
|
1174
|
+
CrudifyInstance.config(env);
|
|
1175
|
+
|
|
1176
|
+
// Initialize with API key
|
|
1177
|
+
const logLevel = enableLogging ? 'debug' : 'none';
|
|
1178
|
+
const response = (await CrudifyInstance.init(publicApiKey, logLevel)) as CrudifyInitResponse;
|
|
1179
|
+
|
|
1180
|
+
// Check if initialization succeeded
|
|
1181
|
+
// CrudifyInstance.init() returns:
|
|
1182
|
+
// - { data: {...} } on first successful init
|
|
1183
|
+
// - { apiEndpointAdmin, apiKeyEndpointAdmin } when already initialized
|
|
1184
|
+
// - { success: false, errors: [...] } on error
|
|
1185
|
+
if (response.success === false) {
|
|
1186
|
+
throw new Error(`Crudify initialization failed: ${JSON.stringify(response.<span class="branch-0 cbranch-no" title="branch not covered" >errors || 'Unknown error')</span>}`);
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
// Notify credentials event bus for crudifyAdmin initialization
|
|
1190
|
+
if (response.<span class="branch-0 cbranch-no" title="branch not covered" >apiEndpointAdmin && response.apiKeyEndpointAdmin) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
|
1191
|
+
<span class="cstat-no" title="statement not covered" > credentialsEventBus.notifyCredentialsReady({</span>
|
|
1192
|
+
<span class="cstat-no" title="statement not covered" > apiUrl: response.apiEndpointAdmin,</span>
|
|
1193
|
+
<span class="cstat-no" title="statement not covered" > apiKey: response.apiKeyEndpointAdmin,</span>
|
|
1194
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1195
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1196
|
+
}
|
|
1197
|
+
|
|
1198
|
+
/**
|
|
1199
|
+
* Reset initialization state (for testing)
|
|
1200
|
+
*/
|
|
1201
|
+
public reset(): void {
|
|
1202
|
+
this.state = {
|
|
1203
|
+
status: 'UNINITIALIZED',
|
|
1204
|
+
priority: null,
|
|
1205
|
+
publicApiKey: null,
|
|
1206
|
+
env: null,
|
|
1207
|
+
error: null,
|
|
1208
|
+
initializedBy: null,
|
|
1209
|
+
};
|
|
1210
|
+
this.initializationPromise = null;
|
|
1211
|
+
this.highPriorityInitializerPresent = false;
|
|
1212
|
+
this.waitingForHighPriority.clear();
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
/**
|
|
1216
|
+
* Check if initialized (without triggering initialization)
|
|
1217
|
+
*/
|
|
1218
|
+
public isInitialized(): boolean {
|
|
1219
|
+
return this.state.status === 'INITIALIZED';
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
/**
|
|
1223
|
+
* Get diagnostic info (for debugging)
|
|
1224
|
+
*/
|
|
1225
|
+
public getDiagnostics() {
|
|
1226
|
+
return {
|
|
1227
|
+
...this.state,
|
|
1228
|
+
waitingCount: this.waitingForHighPriority.size,
|
|
1229
|
+
waitingComponents: Array.from(this.waitingForHighPriority),
|
|
1230
|
+
hasActivePromise: this.initializationPromise !== null,
|
|
1231
|
+
};
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
|
|
1235
|
+
/**
|
|
1236
|
+
* Export singleton instance
|
|
1237
|
+
*
|
|
1238
|
+
* @example
|
|
1239
|
+
* ```typescript
|
|
1240
|
+
* import { crudifyInitManager } from "@nocios/crudify-components";
|
|
1241
|
+
*
|
|
1242
|
+
* // Initialize with HIGH priority
|
|
1243
|
+
* await crudifyInitManager.initialize({
|
|
1244
|
+
* priority: "HIGH",
|
|
1245
|
+
* publicApiKey: "your-key",
|
|
1246
|
+
* env: "stg",
|
|
1247
|
+
* requestedBy: "CrudifyInitializer"
|
|
1248
|
+
* });
|
|
1249
|
+
*
|
|
1250
|
+
* // Check if initialized
|
|
1251
|
+
* if (crudifyInitManager.isInitialized()) {
|
|
1252
|
+
* // Ready to use crudify SDK
|
|
1253
|
+
* }
|
|
1254
|
+
*
|
|
1255
|
+
* // Get diagnostics
|
|
1256
|
+
* console.log(crudifyInitManager.getDiagnostics());
|
|
1257
|
+
* ```
|
|
1258
|
+
*/
|
|
1259
|
+
export const crudifyInitManager = CrudifyInitializationManager.getInstance();
|
|
1260
|
+
</pre></td></tr></table></pre>
|
|
1261
|
+
|
|
1262
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1263
|
+
</div><!-- /wrapper -->
|
|
1264
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1265
|
+
Code coverage generated by
|
|
1266
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1267
|
+
at 2026-02-07T06:55:20.810Z
|
|
1268
|
+
</div>
|
|
1269
|
+
<script src="../prettify.js"></script>
|
|
1270
|
+
<script>
|
|
1271
|
+
window.onload = function () {
|
|
1272
|
+
prettyPrint();
|
|
1273
|
+
};
|
|
1274
|
+
</script>
|
|
1275
|
+
<script src="../sorter.js"></script>
|
|
1276
|
+
<script src="../block-navigation.js"></script>
|
|
1277
|
+
</body>
|
|
1278
|
+
</html>
|
|
1279
|
+
|