From f56b5b5c486a6c6d78d45f38c7ab23dfdb3d8a1e Mon Sep 17 00:00:00 2001 From: Gao Sun Date: Fri, 21 Oct 2022 13:14:17 +0800 Subject: [PATCH] refactor: fix lint errors --- packages/cli/src/commands/connector/add.ts | 2 +- packages/cli/src/commands/connector/index.ts | 2 +- packages/cli/src/commands/connector/list.ts | 2 +- packages/cli/src/commands/connector/remove.ts | 2 +- .../commands/database/alteration/index.test.ts | 2 +- .../src/commands/database/alteration/index.ts | 8 ++++---- .../commands/database/alteration/version.ts | 2 +- packages/cli/src/commands/database/config.ts | 5 +++-- packages/cli/src/commands/database/index.ts | 2 +- .../cli/src/commands/database/seed/index.ts | 5 +++-- .../src/commands/database/seed/oidc-config.ts | 3 ++- packages/cli/src/commands/install/index.ts | 2 +- packages/cli/src/database.ts | 2 +- .../include.d/slonik-interceptor-preset.d.ts | 2 +- packages/cli/src/queries/logto-config.test.ts | 3 ++- packages/cli/src/queries/logto-config.ts | 15 +++++---------- packages/cli/src/test-utilities.ts | 4 ++-- packages/cli/src/utilities.ts | 6 ++++-- .../components/ActionMenu/ActionMenuButton.tsx | 3 ++- .../src/components/ActionMenu/index.tsx | 5 +++-- .../console/src/components/Alert/index.tsx | 4 ++-- .../src/components/AppBoundary/index.tsx | 3 ++- .../Sidebar/components/Contact/hook.tsx | 2 +- .../Sidebar/components/Item/index.tsx | 6 ++++-- .../Sidebar/components/Section/index.tsx | 2 +- .../AppContent/components/Sidebar/hook.tsx | 6 +++--- .../components/Sidebar/icons/BarGraph.tsx | 2 +- .../components/Sidebar/icons/Bolt.tsx | 2 +- .../components/Sidebar/icons/Box.tsx | 2 +- .../components/Sidebar/icons/Cloud.tsx | 2 +- .../components/Sidebar/icons/Connection.tsx | 2 +- .../components/Sidebar/icons/Contact.tsx | 2 +- .../components/Sidebar/icons/Document.tsx | 2 +- .../components/Sidebar/icons/Gear.tsx | 2 +- .../components/Sidebar/icons/List.tsx | 2 +- .../components/Sidebar/icons/UserProfile.tsx | 2 +- .../components/Sidebar/icons/Web.tsx | 2 +- .../AppContent/components/UserInfo/index.tsx | 3 ++- .../src/components/ApplicationIcon/index.tsx | 3 ++- .../src/components/ApplicationName/index.tsx | 2 +- .../components/ApplicationSelector/index.tsx | 2 +- .../src/components/AuditLogTable/index.tsx | 5 +++-- .../console/src/components/Button/index.tsx | 7 ++++--- packages/console/src/components/Card/index.tsx | 3 ++- .../console/src/components/CardTitle/index.tsx | 6 +++--- .../console/src/components/Checkbox/index.tsx | 3 ++- .../src/components/CodeEditor/index.tsx | 3 ++- .../src/components/ColorPicker/index.tsx | 3 ++- .../src/components/ConfirmModal/index.tsx | 7 ++++--- .../src/components/CopyToClipboard/index.tsx | 6 ++++-- .../src/components/DangerousRaw/index.tsx | 2 +- .../console/src/components/DateTime/index.tsx | 2 +- .../components/DeleteConfirmModal/index.tsx | 3 ++- .../console/src/components/Drawer/index.tsx | 2 +- .../src/components/Dropdown/DropdownItem.tsx | 2 +- .../console/src/components/Dropdown/index.tsx | 6 ++++-- .../src/components/ErrorBoundary/index.tsx | 3 ++- .../console/src/components/FormField/index.tsx | 7 ++++--- .../src/components/IconButton/index.tsx | 7 ++++--- .../src/components/ItemPreview/index.tsx | 5 +++-- .../src/components/LinkButton/index.tsx | 6 +++--- .../components/GithubRawImage/index.tsx | 3 ++- .../console/src/components/Markdown/index.tsx | 3 ++- .../src/components/ModalLayout/index.tsx | 4 ++-- .../src/components/MultiTextInput/index.tsx | 9 +++++---- .../src/components/MultiTextInput/utils.ts | 3 ++- .../src/components/RadioGroup/Radio.tsx | 5 +++-- .../src/components/RadioGroup/index.tsx | 6 ++++-- .../console/src/components/Search/index.tsx | 3 ++- .../console/src/components/Select/index.tsx | 3 ++- .../console/src/components/Status/index.tsx | 2 +- .../console/src/components/Switch/index.tsx | 3 ++- .../src/components/Table/TableEmpty.tsx | 2 +- .../console/src/components/TextInput/index.tsx | 3 ++- .../console/src/components/Textarea/index.tsx | 3 ++- .../console/src/components/Tooltip/index.tsx | 6 ++++-- .../components/Transfer/DragDropProvider.tsx | 3 ++- .../src/components/Transfer/DraggableItem.tsx | 5 +++-- .../console/src/components/Transfer/index.tsx | 3 ++- .../UnsavedChangesAlertModal/index.tsx | 3 ++- .../console/src/components/UserName/index.tsx | 5 +++-- packages/console/src/consts/connectors.ts | 2 +- packages/console/src/hooks/use-api.ts | 2 +- .../console/src/hooks/use-connector-groups.ts | 7 ++++--- .../console/src/hooks/use-connector-in-use.ts | 5 +++-- packages/console/src/hooks/use-position.ts | 3 ++- packages/console/src/hooks/use-scroll.ts | 2 +- packages/console/src/hooks/use-settings.ts | 5 +++-- packages/console/src/hooks/use-swr-fetcher.ts | 4 ++-- packages/console/src/hooks/use-swr-options.ts | 2 +- packages/console/src/hooks/use-ui-languages.ts | 7 ++++--- .../console/src/hooks/use-user-preferences.ts | 5 +++-- packages/console/src/i18n/init.ts | 2 +- packages/console/src/include.d/react-app.d.ts | 2 +- .../console/src/include.d/react-i18next.d.ts | 2 +- .../mdx-components/DetailsSummary/index.tsx | 6 ++++-- .../console/src/mdx-components/Step/index.tsx | 5 +++-- .../src/mdx-components/TabItem/index.tsx | 2 +- .../console/src/mdx-components/Tabs/index.tsx | 2 +- .../src/mdx-components/UriInputField/index.tsx | 12 +++++++----- .../src/pages/ApiResourceDetails/index.tsx | 6 ++++-- .../components/CreateForm/index.tsx | 2 +- .../console/src/pages/ApiResources/index.tsx | 5 +++-- .../components/AdvancedSettings.tsx | 3 ++- .../ApplicationDetails/components/Settings.tsx | 10 +++------- .../src/pages/ApplicationDetails/index.tsx | 6 ++++-- .../components/CreateForm/index.tsx | 3 ++- .../Applications/components/Guide/index.tsx | 12 +++++++----- .../components/SdkSelector/index.tsx | 2 +- .../components/TypeDescription/index.tsx | 2 +- .../console/src/pages/Applications/index.tsx | 4 ++-- .../src/pages/AuditLogDetails/index.tsx | 4 ++-- .../components/ConnectorContent.tsx | 3 ++- .../components/ConnectorTabs/index.tsx | 3 ++- .../src/pages/ConnectorDetails/index.tsx | 6 ++++-- .../components/ConnectorName/index.tsx | 3 ++- .../components/ConnectorRow/index.tsx | 3 ++- .../components/CreateForm/PlatformSelector.tsx | 2 +- .../Connectors/components/Guide/index.tsx | 5 +++-- .../src/pages/Dashboard/components/Block.tsx | 2 +- packages/console/src/pages/Dashboard/index.tsx | 7 ++++--- packages/console/src/pages/GetStarted/hook.ts | 5 +++-- packages/console/src/pages/Settings/index.tsx | 3 ++- .../components/AuthenticationForm.tsx | 2 +- .../components/BrandingForm.tsx | 2 +- .../SignInExperience/components/ColorForm.tsx | 2 +- .../components/ConnectorSetupWarning.tsx | 5 +++-- .../SignInExperience/components/GuideModal.tsx | 4 ++-- .../components/LanguagesForm.tsx | 6 +++--- .../LanguageEditor/AddLanguageSelector.tsx | 6 ++++-- .../LanguageEditor/EditSection.tsx | 2 +- .../LanguageEditor/LanguageDetails.tsx | 7 ++++--- .../LanguageEditor/LanguageItem.tsx | 3 ++- .../LanguageEditor/LanguageNav.tsx | 7 ++----- .../use-language-editor-context.ts | 2 +- .../SignInExperience/components/Preview.tsx | 13 +++++-------- .../components/SignInMethodsChangePreview.tsx | 2 +- .../components/SignInMethodsForm.tsx | 2 +- .../components/SignInMethodsPreview.tsx | 3 ++- .../SignInExperience/components/TermsForm.tsx | 2 +- .../src/pages/SignInExperience/hooks.ts | 4 ++-- .../src/pages/SignInExperience/index.tsx | 7 ++++--- .../SignInExperience/tabs/BrandingTab.tsx | 2 +- .../pages/SignInExperience/tabs/OthersTab.tsx | 2 +- .../SignInExperience/tabs/SignInMethodsTab.tsx | 2 +- .../src/pages/SignInExperience/types.ts | 2 +- .../src/pages/SignInExperience/utilities.ts | 12 +++--------- .../UserDetails/components/CreateSuccess.tsx | 2 +- .../components/ResetPasswordForm.tsx | 2 +- .../UserDetails/components/UserConnectors.tsx | 2 +- .../UserDetails/components/UserSettings.tsx | 5 +++-- .../console/src/pages/UserDetails/index.tsx | 5 +++-- .../Users/components/CreateForm/index.tsx | 2 +- packages/console/src/pages/Users/index.tsx | 4 ++-- packages/console/src/types/connector.ts | 2 +- packages/console/src/types/custom-phrase.ts | 4 ++-- packages/console/src/utilities/a11y.ts | 2 +- packages/core/src/__mocks__/connector.ts | 5 +++-- packages/core/src/__mocks__/index.ts | 11 ++--------- .../core/src/__mocks__/sign-in-experience.ts | 6 ++---- packages/core/src/__mocks__/user.ts | 3 ++- packages/core/src/app/init.ts | 2 +- packages/core/src/connectors/index.ts | 5 +++-- packages/core/src/connectors/types.ts | 4 ++-- .../src/connectors/utilities/index.test.ts | 2 +- .../core/src/connectors/utilities/index.ts | 8 ++------ .../core/src/database/find-entity-by-id.ts | 2 +- packages/core/src/database/insert-into.test.ts | 3 ++- packages/core/src/database/insert-into.ts | 7 ++++--- packages/core/src/database/row-count.ts | 3 ++- .../core/src/database/update-where.test.ts | 5 +++-- packages/core/src/database/update-where.ts | 13 +++++-------- .../core/src/env-set/check-alteration-state.ts | 2 +- packages/core/src/env-set/index.ts | 5 +++-- packages/core/src/env-set/oidc.ts | 3 ++- packages/core/src/errors/RequestError/index.ts | 7 ++++--- .../errors/RequestError/request-error.test.ts | 2 +- packages/core/src/errors/SlonikError/index.ts | 4 ++-- packages/core/src/i18n/detect-language.test.ts | 2 +- packages/core/src/i18n/detect-language.ts | 9 +++++---- packages/core/src/include.d/koa-body.d.ts | 4 ++-- packages/core/src/include.d/koa-router.d.ts | 2 +- packages/core/src/include.d/koa.d.ts | 2 +- packages/core/src/include.d/oidc-provider.d.ts | 2 +- .../include.d/slonik-interceptor-preset.d.ts | 2 +- .../core/src/lib/__mocks__/logto-config.ts | 3 ++- packages/core/src/lib/logto-config.ts | 5 +++-- packages/core/src/lib/passcode.test.ts | 3 ++- packages/core/src/lib/passcode.ts | 14 +++++--------- packages/core/src/lib/phrase.test.ts | 2 +- packages/core/src/lib/phrase.ts | 5 +++-- packages/core/src/lib/session.ts | 4 ++-- .../core/src/lib/sign-in-experience.test.ts | 2 +- packages/core/src/lib/sign-in-experience.ts | 15 +++++---------- packages/core/src/lib/social.ts | 10 ++++++---- packages/core/src/lib/user.ts | 3 ++- packages/core/src/middleware/koa-auth.test.ts | 7 ++++--- packages/core/src/middleware/koa-auth.ts | 6 +++--- .../core/src/middleware/koa-check-demo-app.ts | 2 +- .../middleware/koa-connector-error-handler.ts | 2 +- .../core/src/middleware/koa-error-handler.ts | 5 +++-- packages/core/src/middleware/koa-guard.ts | 9 +++++---- packages/core/src/middleware/koa-i18next.ts | 4 ++-- .../src/middleware/koa-log-session.test.ts | 2 +- .../core/src/middleware/koa-log-session.ts | 6 +++--- packages/core/src/middleware/koa-log.test.ts | 6 ++++-- packages/core/src/middleware/koa-log.ts | 7 ++++--- .../src/middleware/koa-oidc-error-handler.ts | 4 ++-- .../core/src/middleware/koa-pagination.test.ts | 5 +++-- packages/core/src/middleware/koa-pagination.ts | 4 ++-- packages/core/src/middleware/koa-root-proxy.ts | 4 ++-- .../core/src/middleware/koa-serve-static.ts | 2 +- .../src/middleware/koa-slonik-error-handler.ts | 4 ++-- packages/core/src/middleware/koa-spa-proxy.ts | 4 ++-- .../src/middleware/koa-spa-session-guard.ts | 6 +++--- .../core/src/middleware/koa-welcome-proxy.ts | 4 ++-- packages/core/src/oidc/adapter.test.ts | 2 +- packages/core/src/oidc/adapter.ts | 5 +++-- packages/core/src/oidc/init.ts | 2 +- packages/core/src/oidc/scope.ts | 9 +++++---- packages/core/src/oidc/utils.ts | 12 ++++-------- packages/core/src/queries/application.test.ts | 3 ++- packages/core/src/queries/application.ts | 6 ++++-- packages/core/src/queries/connector.test.ts | 3 ++- packages/core/src/queries/connector.ts | 3 ++- packages/core/src/queries/custom-phrase.ts | 3 ++- packages/core/src/queries/log.ts | 3 ++- .../src/queries/oidc-model-instance.test.ts | 6 ++++-- .../core/src/queries/oidc-model-instance.ts | 10 ++++++---- packages/core/src/queries/passcode.test.ts | 3 ++- packages/core/src/queries/passcode.ts | 3 ++- packages/core/src/queries/resource.test.ts | 3 ++- packages/core/src/queries/resource.ts | 6 ++++-- packages/core/src/queries/roles.test.ts | 3 ++- packages/core/src/queries/roles.ts | 3 ++- packages/core/src/queries/setting.test.ts | 3 ++- packages/core/src/queries/setting.ts | 5 +++-- .../src/queries/sign-in-experience.test.ts | 3 ++- .../core/src/queries/sign-in-experience.ts | 3 ++- packages/core/src/queries/user.test.ts | 3 ++- packages/core/src/queries/user.ts | 6 ++++-- packages/core/src/routes/admin-user.test.ts | 3 ++- packages/core/src/routes/admin-user.ts | 2 +- packages/core/src/routes/application.test.ts | 3 ++- packages/core/src/routes/application.ts | 2 +- packages/core/src/routes/authn.ts | 2 +- packages/core/src/routes/connector.test.ts | 5 +++-- packages/core/src/routes/connector.ts | 7 ++++--- .../core/src/routes/connector.update.test.ts | 2 +- packages/core/src/routes/custom-phrase.test.ts | 2 +- packages/core/src/routes/custom-phrase.ts | 5 +++-- packages/core/src/routes/dashboard.ts | 5 +++-- packages/core/src/routes/init.ts | 4 ++-- packages/core/src/routes/log.test.ts | 2 +- packages/core/src/routes/log.ts | 2 +- packages/core/src/routes/phrase.test.ts | 2 +- packages/core/src/routes/phrase.ts | 4 ++-- packages/core/src/routes/resource.test.ts | 2 +- packages/core/src/routes/resource.ts | 2 +- packages/core/src/routes/role.test.ts | 2 +- packages/core/src/routes/role.ts | 2 +- .../src/routes/session/forgot-password.test.ts | 3 ++- .../core/src/routes/session/forgot-password.ts | 4 ++-- packages/core/src/routes/session/index.test.ts | 2 +- packages/core/src/routes/session/index.ts | 6 +++--- .../middleware/koa-guard-session-action.ts | 5 +++-- .../session/middleware/passwordless-action.ts | 6 +++--- .../src/routes/session/passwordless.test.ts | 3 ++- .../core/src/routes/session/passwordless.ts | 4 ++-- .../core/src/routes/session/social.test.ts | 2 +- packages/core/src/routes/session/social.ts | 4 ++-- .../routes/session/username-password.test.ts | 3 ++- .../src/routes/session/username-password.ts | 4 ++-- packages/core/src/routes/session/utils.ts | 14 ++++++++------ packages/core/src/routes/setting.test.ts | 2 +- packages/core/src/routes/setting.ts | 2 +- .../sign-in-experience.branding.guard.test.ts | 3 ++- .../sign-in-experience.color.guard.test.ts | 2 +- .../routes/sign-in-experience.guard.test.ts | 8 ++------ .../core/src/routes/sign-in-experience.test.ts | 8 ++------ packages/core/src/routes/sign-in-experience.ts | 2 +- packages/core/src/routes/status.ts | 2 +- packages/core/src/routes/swagger.test.ts | 2 +- packages/core/src/routes/swagger.ts | 10 ++++++---- packages/core/src/routes/types.ts | 8 ++++---- packages/core/src/routes/well-known.ts | 7 ++++--- packages/core/src/utils/assert-that.ts | 2 +- packages/core/src/utils/jwks.ts | 3 ++- .../src/utils/oidc-provider-event-listener.ts | 4 ++-- packages/core/src/utils/pagination.ts | 2 +- packages/core/src/utils/schema.ts | 2 +- packages/core/src/utils/test-utils.ts | 18 +++++++++++------- packages/core/src/utils/translation.ts | 2 +- packages/core/src/utils/zod.test.ts | 3 ++- packages/core/src/utils/zod.ts | 7 ++++--- packages/demo-app/src/App.tsx | 3 ++- .../demo-app/src/include.d/react-i18next.d.ts | 2 +- .../integration-tests/src/api/admin-user.ts | 2 +- .../integration-tests/src/api/application.ts | 2 +- .../integration-tests/src/api/connector.ts | 2 +- packages/integration-tests/src/api/logs.ts | 2 +- packages/integration-tests/src/api/me.ts | 2 +- packages/integration-tests/src/api/resource.ts | 2 +- .../src/api/sign-in-experience.ts | 2 +- .../integration-tests/src/api/wellknown.ts | 2 +- packages/integration-tests/src/client/index.ts | 3 ++- .../integration-tests/src/client/storage.ts | 4 ++-- packages/integration-tests/src/helpers.ts | 2 +- packages/integration-tests/src/utils.ts | 2 +- .../tests/api/dashboard.test.ts | 3 ++- .../tests/api/swagger-check.test.ts | 2 +- packages/phrases-ui/src/index.ts | 7 ++++--- packages/phrases-ui/src/locales/fr.ts | 2 +- packages/phrases-ui/src/locales/ko-kr.ts | 2 +- packages/phrases-ui/src/locales/pt-pt.ts | 2 +- packages/phrases-ui/src/locales/tr-tr.ts | 2 +- packages/phrases-ui/src/locales/zh-cn.ts | 2 +- packages/phrases-ui/src/types.ts | 2 +- packages/phrases/src/index.ts | 7 ++++--- packages/phrases/src/locales/fr/index.ts | 2 +- packages/phrases/src/locales/ko-kr/index.ts | 2 +- packages/phrases/src/locales/pt-pt/index.ts | 2 +- packages/phrases/src/locales/tr-tr/index.ts | 2 +- packages/phrases/src/locales/zh-cn/index.ts | 2 +- packages/phrases/src/types.ts | 2 +- packages/schemas/src/foundations/schemas.ts | 2 +- packages/schemas/src/gen/index.ts | 2 +- packages/schemas/src/gen/schema.ts | 2 +- packages/schemas/src/gen/utils.ts | 5 +++-- packages/schemas/src/seeds/application.ts | 3 ++- packages/schemas/src/seeds/resource.ts | 2 +- packages/schemas/src/seeds/roles.ts | 2 +- packages/schemas/src/seeds/setting.ts | 2 +- .../schemas/src/seeds/sign-in-experience.ts | 3 ++- packages/schemas/src/types/connector.ts | 4 ++-- packages/schemas/src/types/log.ts | 2 +- packages/schemas/src/types/logto-config.ts | 3 ++- packages/schemas/src/types/oidc-config.ts | 2 +- packages/schemas/src/types/user.ts | 2 +- packages/shared/src/database/types.ts | 4 ++-- packages/shared/src/database/utils.test.ts | 2 +- packages/shared/src/database/utils.ts | 10 ++++++---- .../RenderWithPageContext/SettingsProvider.tsx | 5 +++-- .../__mocks__/RenderWithPageContext/index.tsx | 5 +++-- packages/ui/src/__mocks__/logto.tsx | 4 ++-- packages/ui/src/apis/settings.ts | 2 +- packages/ui/src/apis/utils.ts | 2 +- .../ui/src/components/Button/IconButton.tsx | 3 ++- packages/ui/src/components/Button/index.tsx | 4 ++-- packages/ui/src/components/Checkbox/index.tsx | 3 ++- .../ui/src/components/ConfirmModal/AcModal.tsx | 2 +- .../components/ConfirmModal/MobileModal.tsx | 2 +- .../ui/src/components/ConfirmModal/type.ts | 4 ++-- packages/ui/src/components/Divider/index.tsx | 3 ++- packages/ui/src/components/Drawer/index.tsx | 2 +- packages/ui/src/components/Dropdown/index.tsx | 3 ++- .../ui/src/components/ErrorMessage/index.tsx | 5 +++-- .../ui/src/components/Input/PasswordInput.tsx | 6 ++++-- .../ui/src/components/Input/PhoneInput.tsx | 5 +++-- packages/ui/src/components/Input/index.tsx | 5 +++-- packages/ui/src/components/Passcode/index.tsx | 11 ++--------- packages/ui/src/components/TextLink/index.tsx | 5 +++-- .../ui/src/containers/AppContent/index.tsx | 3 ++- .../containers/ConfirmModalProvider/index.tsx | 5 +++-- .../ui/src/containers/CreateAccount/index.tsx | 3 ++- .../containers/PasscodeValidation/index.tsx | 6 ++++-- ...forgot-password-with-email-error-handler.ts | 2 +- ...e-forgot-password-with-sms-error-handler.ts | 2 +- .../use-passcode-validation-error-handler.ts | 2 +- .../use-register-with-sms-error-handler.ts | 3 ++- .../use-sign-in-with-email-error-handler.ts | 3 ++- .../use-sign-in-with-sms-error-handler.ts | 3 ++- .../user-register-with-email-error-handler.ts | 3 ++- .../Passwordless/EmailPasswordless.tsx | 5 +++-- .../Passwordless/PhonePasswordless.tsx | 5 +++-- .../ui/src/containers/ResetPassword/index.tsx | 3 ++- .../src/containers/SignInMethodsLink/index.tsx | 8 +++++--- .../SocialSignInDropdown/index.test.tsx | 2 +- .../SocialSignInDropdown/index.tsx | 2 +- .../SocialSignInIconList/index.tsx | 15 ++++----------- .../SocialSignIn/SocialSignInList/index.tsx | 7 ++++--- .../SocialSignIn/SocialSignInPopUp/index.tsx | 2 +- .../TermsOfUseConfirmModalContent/index.tsx | 2 +- .../ui/src/containers/UsernameSignIn/index.tsx | 3 ++- packages/ui/src/hooks/use-api.ts | 2 +- packages/ui/src/hooks/use-bind-social.ts | 2 +- packages/ui/src/hooks/use-form.ts | 8 +++++--- packages/ui/src/hooks/use-page-context.ts | 2 +- packages/ui/src/hooks/use-phone-number.ts | 8 ++------ packages/ui/src/hooks/use-preview.ts | 4 ++-- .../src/hooks/use-social-sign-in-listener.ts | 3 ++- packages/ui/src/hooks/use-social.ts | 2 +- packages/ui/src/hooks/use-theme.ts | 2 +- packages/ui/src/i18n/init.ts | 5 +++-- packages/ui/src/i18n/utils.ts | 8 +++++--- packages/ui/src/include.d/react-app.d.ts | 2 +- packages/ui/src/include.d/react-i18next.d.ts | 2 +- packages/ui/src/pages/Consent/index.tsx | 15 ++++++++------- packages/ui/src/pages/ErrorPage/index.tsx | 5 +++-- packages/ui/src/pages/Passcode/index.tsx | 2 +- packages/ui/src/pages/SignIn/index.tsx | 3 ++- packages/ui/src/pages/SignIn/registry.tsx | 5 +++-- packages/ui/src/types/index.ts | 3 ++- packages/ui/src/utils/a11y.ts | 2 +- packages/ui/src/utils/country-code.ts | 4 +--- packages/ui/src/utils/field-validations.ts | 2 +- packages/ui/src/utils/logo.ts | 18 ++++++++++++++++++ packages/ui/src/utils/sign-in-experience.ts | 8 ++++++-- .../ui/src/utils/social-connectors.test.ts | 3 ++- packages/ui/src/utils/social-connectors.ts | 3 ++- 410 files changed, 899 insertions(+), 741 deletions(-) create mode 100644 packages/ui/src/utils/logo.ts diff --git a/packages/cli/src/commands/connector/add.ts b/packages/cli/src/commands/connector/add.ts index 931957187..a2575e79f 100644 --- a/packages/cli/src/commands/connector/add.ts +++ b/packages/cli/src/commands/connector/add.ts @@ -1,4 +1,4 @@ -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { log } from '../../utilities'; import { addConnectors, addOfficialConnectors, inquireInstancePath } from './utils'; diff --git a/packages/cli/src/commands/connector/index.ts b/packages/cli/src/commands/connector/index.ts index a5ff36788..5a282715a 100644 --- a/packages/cli/src/commands/connector/index.ts +++ b/packages/cli/src/commands/connector/index.ts @@ -1,5 +1,5 @@ import { noop } from '@silverhand/essentials'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import add from './add'; import list from './list'; diff --git a/packages/cli/src/commands/connector/list.ts b/packages/cli/src/commands/connector/list.ts index ae2af5f11..91d5c0765 100644 --- a/packages/cli/src/commands/connector/list.ts +++ b/packages/cli/src/commands/connector/list.ts @@ -1,5 +1,5 @@ import chalk from 'chalk'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { getConnectorPackagesFrom, isOfficialConnector } from './utils'; diff --git a/packages/cli/src/commands/connector/remove.ts b/packages/cli/src/commands/connector/remove.ts index c3a4f37da..8e932fbe8 100644 --- a/packages/cli/src/commands/connector/remove.ts +++ b/packages/cli/src/commands/connector/remove.ts @@ -1,6 +1,6 @@ import chalk from 'chalk'; import fsExtra from 'fs-extra'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { log } from '../../utilities'; import { getConnectorPackagesFrom } from './utils'; diff --git a/packages/cli/src/commands/database/alteration/index.test.ts b/packages/cli/src/commands/database/alteration/index.test.ts index 8ea61e772..490f4d15e 100644 --- a/packages/cli/src/commands/database/alteration/index.test.ts +++ b/packages/cli/src/commands/database/alteration/index.test.ts @@ -2,7 +2,7 @@ import { createMockPool } from 'slonik'; import * as functions from '.'; import * as queries from '../../../queries/logto-config'; -import { QueryType } from '../../../test-utilities'; +import type { QueryType } from '../../../test-utilities'; import { chooseAlterationsByVersion } from './version'; const mockQuery: jest.MockedFunction = jest.fn(); diff --git a/packages/cli/src/commands/database/alteration/index.ts b/packages/cli/src/commands/database/alteration/index.ts index 5055e013d..11896258e 100644 --- a/packages/cli/src/commands/database/alteration/index.ts +++ b/packages/cli/src/commands/database/alteration/index.ts @@ -1,12 +1,12 @@ import path from 'path'; -import { AlterationScript } from '@logto/schemas/lib/types/alteration'; +import type { AlterationScript } from '@logto/schemas/lib/types/alteration'; import { findPackage } from '@logto/shared'; import { conditionalString } from '@silverhand/essentials'; import chalk from 'chalk'; import { copy, existsSync, remove, readdir } from 'fs-extra'; -import { DatabasePool } from 'slonik'; -import { CommandModule } from 'yargs'; +import type { DatabasePool } from 'slonik'; +import type { CommandModule } from 'yargs'; import { createPoolFromConfig } from '../../../database'; import { @@ -14,7 +14,7 @@ import { updateDatabaseTimestamp, } from '../../../queries/logto-config'; import { getPathInModule, log } from '../../../utilities'; -import { AlterationFile } from './type'; +import type { AlterationFile } from './type'; import { chooseAlterationsByVersion } from './version'; const alterationFilenameRegex = /-(\d+)-?.*\.js$/; diff --git a/packages/cli/src/commands/database/alteration/version.ts b/packages/cli/src/commands/database/alteration/version.ts index ffc0b38ae..afbae1ac1 100644 --- a/packages/cli/src/commands/database/alteration/version.ts +++ b/packages/cli/src/commands/database/alteration/version.ts @@ -4,7 +4,7 @@ import inquirer from 'inquirer'; import { SemVer, compare, eq, gt } from 'semver'; import { findLastIndex, isTty, log } from '../../../utilities'; -import { AlterationFile } from './type'; +import type { AlterationFile } from './type'; const getVersionFromFilename = (filename: string) => { try { diff --git a/packages/cli/src/commands/database/config.ts b/packages/cli/src/commands/database/config.ts index c000afd79..1ac8f55c5 100644 --- a/packages/cli/src/commands/database/config.ts +++ b/packages/cli/src/commands/database/config.ts @@ -1,7 +1,8 @@ -import { logtoConfigGuards, LogtoConfigKey, logtoConfigKeys } from '@logto/schemas'; +import type { LogtoConfigKey } from '@logto/schemas'; +import { logtoConfigGuards, logtoConfigKeys } from '@logto/schemas'; import { deduplicate, noop } from '@silverhand/essentials'; import chalk from 'chalk'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { createPoolFromConfig } from '../../database'; import { getRowsByKeys, updateValueByKey } from '../../queries/logto-config'; diff --git a/packages/cli/src/commands/database/index.ts b/packages/cli/src/commands/database/index.ts index 226da93f9..4a81096f5 100644 --- a/packages/cli/src/commands/database/index.ts +++ b/packages/cli/src/commands/database/index.ts @@ -1,5 +1,5 @@ import { noop } from '@silverhand/essentials'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import alteration from './alteration'; import config from './config'; diff --git a/packages/cli/src/commands/database/seed/index.ts b/packages/cli/src/commands/database/seed/index.ts index 4dbc863c1..b57162c2b 100644 --- a/packages/cli/src/commands/database/seed/index.ts +++ b/packages/cli/src/commands/database/seed/index.ts @@ -4,9 +4,10 @@ import path from 'path'; import { logtoConfigGuards, LogtoOidcConfigKey, seeds } from '@logto/schemas'; import { buildApplicationSecret } from '@logto/shared'; import chalk from 'chalk'; -import { DatabasePool, DatabaseTransactionConnection, sql } from 'slonik'; +import type { DatabasePool, DatabaseTransactionConnection } from 'slonik'; +import { sql } from 'slonik'; import { raw } from 'slonik-sql-tag-raw'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { z } from 'zod'; import { createPoolAndDatabaseIfNeeded, insertInto } from '../../../database'; diff --git a/packages/cli/src/commands/database/seed/oidc-config.ts b/packages/cli/src/commands/database/seed/oidc-config.ts index 5beee6f32..4e4678263 100644 --- a/packages/cli/src/commands/database/seed/oidc-config.ts +++ b/packages/cli/src/commands/database/seed/oidc-config.ts @@ -2,7 +2,8 @@ import { generateKeyPair } from 'crypto'; import { readFile } from 'fs/promises'; import { promisify } from 'util'; -import { LogtoOidcConfigKey, LogtoOidcConfigType } from '@logto/schemas'; +import type { LogtoOidcConfigType } from '@logto/schemas'; +import { LogtoOidcConfigKey } from '@logto/schemas'; import { getEnv, getEnvAsStringArray } from '@silverhand/essentials'; import { nanoid } from 'nanoid'; diff --git a/packages/cli/src/commands/install/index.ts b/packages/cli/src/commands/install/index.ts index b0cb27fd3..4761c45b9 100644 --- a/packages/cli/src/commands/install/index.ts +++ b/packages/cli/src/commands/install/index.ts @@ -1,5 +1,5 @@ import chalk from 'chalk'; -import { CommandModule } from 'yargs'; +import type { CommandModule } from 'yargs'; import { getDatabaseUrlFromConfig } from '../../database'; import { log } from '../../utilities'; diff --git a/packages/cli/src/database.ts b/packages/cli/src/database.ts index 046ec3d7c..3c9e0ce3d 100644 --- a/packages/cli/src/database.ts +++ b/packages/cli/src/database.ts @@ -1,4 +1,4 @@ -import { SchemaLike } from '@logto/schemas'; +import type { SchemaLike } from '@logto/schemas'; import { convertToPrimitiveOrSql } from '@logto/shared'; import { assert } from '@silverhand/essentials'; import decamelize from 'decamelize'; diff --git a/packages/cli/src/include.d/slonik-interceptor-preset.d.ts b/packages/cli/src/include.d/slonik-interceptor-preset.d.ts index 5e24372aa..778cb40c0 100644 --- a/packages/cli/src/include.d/slonik-interceptor-preset.d.ts +++ b/packages/cli/src/include.d/slonik-interceptor-preset.d.ts @@ -1,5 +1,5 @@ declare module 'slonik-interceptor-preset' { - import { Interceptor } from 'slonik'; + import type { Interceptor } from 'slonik'; export const createInterceptors: (config?: { benchmarkQueries: boolean; diff --git a/packages/cli/src/queries/logto-config.test.ts b/packages/cli/src/queries/logto-config.test.ts index 2a407122d..bdfcfa857 100644 --- a/packages/cli/src/queries/logto-config.test.ts +++ b/packages/cli/src/queries/logto-config.test.ts @@ -2,7 +2,8 @@ import { AlterationStateKey, LogtoConfigs } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import { createMockPool, createMockQueryResult, sql } from 'slonik'; -import { expectSqlAssert, QueryType } from '../test-utilities'; +import type { QueryType } from '../test-utilities'; +import { expectSqlAssert } from '../test-utilities'; import { updateDatabaseTimestamp, getCurrentDatabaseAlterationTimestamp } from './logto-config'; const mockQuery: jest.MockedFunction = jest.fn(); diff --git a/packages/cli/src/queries/logto-config.ts b/packages/cli/src/queries/logto-config.ts index 1b1599c56..b4d50d716 100644 --- a/packages/cli/src/queries/logto-config.ts +++ b/packages/cli/src/queries/logto-config.ts @@ -1,14 +1,9 @@ -import { - AlterationState, - LogtoConfig, - logtoConfigGuards, - LogtoConfigKey, - LogtoConfigs, - AlterationStateKey, -} from '@logto/schemas'; +import type { AlterationState, LogtoConfig, LogtoConfigKey } from '@logto/schemas'; +import { logtoConfigGuards, LogtoConfigs, AlterationStateKey } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; -import { Nullable } from '@silverhand/essentials'; -import { DatabasePool, DatabaseTransactionConnection, sql } from 'slonik'; +import type { Nullable } from '@silverhand/essentials'; +import type { DatabasePool, DatabaseTransactionConnection } from 'slonik'; +import { sql } from 'slonik'; import { z } from 'zod'; const { table, fields } = convertToIdentifiers(LogtoConfigs); diff --git a/packages/cli/src/test-utilities.ts b/packages/cli/src/test-utilities.ts index e03d395e8..04057500c 100644 --- a/packages/cli/src/test-utilities.ts +++ b/packages/cli/src/test-utilities.ts @@ -1,7 +1,7 @@ // Copied from core -import { QueryResult, QueryResultRow } from 'slonik'; -import { PrimitiveValueExpression } from 'slonik/dist/src/types.d'; +import type { QueryResult, QueryResultRow } from 'slonik'; +import type { PrimitiveValueExpression } from 'slonik/dist/src/types.d'; export type QueryType = ( sql: string, diff --git a/packages/cli/src/utilities.ts b/packages/cli/src/utilities.ts index d6196c408..14178fd4f 100644 --- a/packages/cli/src/utilities.ts +++ b/packages/cli/src/utilities.ts @@ -2,9 +2,11 @@ import { execSync } from 'child_process'; import { createWriteStream } from 'fs'; import path from 'path'; -import { conditionalString, Optional } from '@silverhand/essentials'; +import type { Optional } from '@silverhand/essentials'; +import { conditionalString } from '@silverhand/essentials'; import chalk from 'chalk'; -import got, { Progress } from 'got'; +import type { Progress } from 'got'; +import got from 'got'; import { HttpsProxyAgent } from 'hpagent'; import inquirer from 'inquirer'; import ora from 'ora'; diff --git a/packages/console/src/components/ActionMenu/ActionMenuButton.tsx b/packages/console/src/components/ActionMenu/ActionMenuButton.tsx index a7b096d71..348608921 100644 --- a/packages/console/src/components/ActionMenu/ActionMenuButton.tsx +++ b/packages/console/src/components/ActionMenu/ActionMenuButton.tsx @@ -1,6 +1,7 @@ import { forwardRef } from 'react'; -import Button, { Props as ButtonProps } from '../Button'; +import type { Props as ButtonProps } from '../Button'; +import Button from '../Button'; const ActionMenuButton = forwardRef((props, anchorReference) => (
diff --git a/packages/console/src/components/ActionMenu/index.tsx b/packages/console/src/components/ActionMenu/index.tsx index 1fdcb0215..b3812c12d 100644 --- a/packages/console/src/components/ActionMenu/index.tsx +++ b/packages/console/src/components/ActionMenu/index.tsx @@ -1,6 +1,7 @@ -import { ReactNode, useRef, useState } from 'react'; +import type { ReactNode } from 'react'; +import { useRef, useState } from 'react'; -import { Props as ButtonProps } from '../Button'; +import type { Props as ButtonProps } from '../Button'; import Dropdown from '../Dropdown'; import ActionMenuButton from './ActionMenuButton'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/Alert/index.tsx b/packages/console/src/components/Alert/index.tsx index ac32821bb..6a8f0cdd7 100644 --- a/packages/console/src/components/Alert/index.tsx +++ b/packages/console/src/components/Alert/index.tsx @@ -1,6 +1,6 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import Info from '@/assets/images/info.svg'; import LinkButton from '@/components/LinkButton'; diff --git a/packages/console/src/components/AppBoundary/index.tsx b/packages/console/src/components/AppBoundary/index.tsx index 8a7109342..b6d85a497 100644 --- a/packages/console/src/components/AppBoundary/index.tsx +++ b/packages/console/src/components/AppBoundary/index.tsx @@ -1,5 +1,6 @@ import { AppearanceMode } from '@logto/schemas'; -import { ReactNode, useEffect } from 'react'; +import type { ReactNode } from 'react'; +import { useEffect } from 'react'; import useUserPreferences from '@/hooks/use-user-preferences'; import initI18n from '@/i18n/init'; diff --git a/packages/console/src/components/AppContent/components/Sidebar/components/Contact/hook.tsx b/packages/console/src/components/AppContent/components/Sidebar/components/Contact/hook.tsx index b83062285..6ea31aa7b 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/components/Contact/hook.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/components/Contact/hook.tsx @@ -1,4 +1,4 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import { AppearanceMode } from '@logto/schemas'; import DiscordDark from '@/assets/images/discord-dark.svg'; diff --git a/packages/console/src/components/AppContent/components/Sidebar/components/Item/index.tsx b/packages/console/src/components/AppContent/components/Sidebar/components/Item/index.tsx index 51934c9f0..27dd8bd20 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/components/Item/index.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/components/Item/index.tsx @@ -1,6 +1,8 @@ import classNames from 'classnames'; -import { ReactChild, ReactNode, useMemo, useState } from 'react'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { ReactChild, ReactNode } from 'react'; +import { useMemo, useState } from 'react'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import { getPath } from '../../utils'; diff --git a/packages/console/src/components/AppContent/components/Sidebar/components/Section/index.tsx b/packages/console/src/components/AppContent/components/Sidebar/components/Section/index.tsx index 8cd182a8a..483709487 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/components/Section/index.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/components/Section/index.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/AppContent/components/Sidebar/hook.tsx b/packages/console/src/components/AppContent/components/Sidebar/hook.tsx index dc9b570c6..7862050de 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/hook.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/hook.tsx @@ -1,6 +1,6 @@ -import { Optional } from '@silverhand/essentials'; -import { FC, ReactNode } from 'react'; -import { TFuncKey } from 'react-i18next'; +import type { Optional } from '@silverhand/essentials'; +import type { FC, ReactNode } from 'react'; +import type { TFuncKey } from 'react-i18next'; import useDocumentationUrl from '@/hooks/use-documentation-url'; import useUserPreferences from '@/hooks/use-user-preferences'; diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/BarGraph.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/BarGraph.tsx index 5ca927783..375d6681c 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/BarGraph.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/BarGraph.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const BarGraph = (props: SVGProps) => ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Bolt.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Bolt.tsx index 20a7315ed..99fe75ce4 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Bolt.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Bolt.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Bolt = (props: SVGProps) => ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Box.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Box.tsx index 2b649c1d7..80030aa17 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Box.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Box.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Box = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Cloud.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Cloud.tsx index c68eca284..6e3375e08 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Cloud.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Cloud.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Cloud = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Connection.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Connection.tsx index 4f8f3b50e..7c7592b43 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Connection.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Connection.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Connection = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Contact.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Contact.tsx index 7507f223a..e913eff00 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Contact.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Contact.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Contact = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Document.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Document.tsx index bfe1728c7..d1e0d01e1 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Document.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Document.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Document = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Gear.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Gear.tsx index e3721d206..fe4fa1a44 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Gear.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Gear.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Gear = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/List.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/List.tsx index 6d5a58e71..95e6204ce 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/List.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/List.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const List = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/UserProfile.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/UserProfile.tsx index 05d989498..f74f60b2e 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/UserProfile.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/UserProfile.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const UserProfile = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/Sidebar/icons/Web.tsx b/packages/console/src/components/AppContent/components/Sidebar/icons/Web.tsx index c4d482b6e..8e02d7ac6 100644 --- a/packages/console/src/components/AppContent/components/Sidebar/icons/Web.tsx +++ b/packages/console/src/components/AppContent/components/Sidebar/icons/Web.tsx @@ -1,4 +1,4 @@ -import { SVGProps } from 'react'; +import type { SVGProps } from 'react'; const Web = (props: SVGProps) => { return ( diff --git a/packages/console/src/components/AppContent/components/UserInfo/index.tsx b/packages/console/src/components/AppContent/components/UserInfo/index.tsx index e37935890..b6069c7f2 100644 --- a/packages/console/src/components/AppContent/components/UserInfo/index.tsx +++ b/packages/console/src/components/AppContent/components/UserInfo/index.tsx @@ -1,4 +1,5 @@ -import { useLogto, IdTokenClaims } from '@logto/react'; +import type { IdTokenClaims } from '@logto/react'; +import { useLogto } from '@logto/react'; import classNames from 'classnames'; import { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/components/ApplicationIcon/index.tsx b/packages/console/src/components/ApplicationIcon/index.tsx index 3c614d987..ab5cb66fd 100644 --- a/packages/console/src/components/ApplicationIcon/index.tsx +++ b/packages/console/src/components/ApplicationIcon/index.tsx @@ -1,4 +1,5 @@ -import { AppearanceMode, ApplicationType } from '@logto/schemas'; +import type { ApplicationType } from '@logto/schemas'; +import { AppearanceMode } from '@logto/schemas'; import { darkModeApplicationIconMap, lightModeApplicationIconMap } from '@/consts'; import { useTheme } from '@/hooks/use-theme'; diff --git a/packages/console/src/components/ApplicationName/index.tsx b/packages/console/src/components/ApplicationName/index.tsx index 895760f7a..6164b61d2 100644 --- a/packages/console/src/components/ApplicationName/index.tsx +++ b/packages/console/src/components/ApplicationName/index.tsx @@ -1,4 +1,4 @@ -import { Application } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; diff --git a/packages/console/src/components/AuditLogTable/components/ApplicationSelector/index.tsx b/packages/console/src/components/AuditLogTable/components/ApplicationSelector/index.tsx index 7636d0978..275cd0349 100644 --- a/packages/console/src/components/AuditLogTable/components/ApplicationSelector/index.tsx +++ b/packages/console/src/components/AuditLogTable/components/ApplicationSelector/index.tsx @@ -1,4 +1,4 @@ -import { Application } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; import { useTranslation } from 'react-i18next'; import useSWR from 'swr'; diff --git a/packages/console/src/components/AuditLogTable/index.tsx b/packages/console/src/components/AuditLogTable/index.tsx index 47bba45b8..219e6fe3a 100644 --- a/packages/console/src/components/AuditLogTable/index.tsx +++ b/packages/console/src/components/AuditLogTable/index.tsx @@ -1,4 +1,5 @@ -import { LogDto, LogResult } from '@logto/schemas'; +import type { LogDto } from '@logto/schemas'; +import { LogResult } from '@logto/schemas'; import { conditionalString } from '@silverhand/essentials'; import classNames from 'classnames'; import { useTranslation } from 'react-i18next'; @@ -11,7 +12,7 @@ import TableEmpty from '@/components/Table/TableEmpty'; import TableError from '@/components/Table/TableError'; import TableLoading from '@/components/Table/TableLoading'; import UserName from '@/components/UserName'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import * as tableStyles from '@/scss/table.module.scss'; import ApplicationSelector from './components/ApplicationSelector'; diff --git a/packages/console/src/components/Button/index.tsx b/packages/console/src/components/Button/index.tsx index f5dd61d14..3f52dc82e 100644 --- a/packages/console/src/components/Button/index.tsx +++ b/packages/console/src/components/Button/index.tsx @@ -1,11 +1,12 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { HTMLProps, ReactElement, ReactNode, useEffect, useRef, useState } from 'react'; +import type { HTMLProps, ReactElement, ReactNode } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Ring as Spinner } from '@/components/Spinner'; -import DangerousRaw from '../DangerousRaw'; +import type DangerousRaw from '../DangerousRaw'; import * as styles from './index.module.scss'; export type ButtonType = 'primary' | 'danger' | 'outline' | 'text' | 'default' | 'branding'; diff --git a/packages/console/src/components/Card/index.tsx b/packages/console/src/components/Card/index.tsx index 2dfd3cb1c..e3e0a62ed 100644 --- a/packages/console/src/components/Card/index.tsx +++ b/packages/console/src/components/Card/index.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; -import { forwardRef, Ref, ReactNode } from 'react'; +import type { Ref, ReactNode } from 'react'; +import { forwardRef } from 'react'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/CardTitle/index.tsx b/packages/console/src/components/CardTitle/index.tsx index 686bdd117..30efca0ca 100644 --- a/packages/console/src/components/CardTitle/index.tsx +++ b/packages/console/src/components/CardTitle/index.tsx @@ -1,9 +1,9 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactElement } from 'react'; +import type { ReactElement } from 'react'; import { useTranslation } from 'react-i18next'; -import DangerousRaw from '../DangerousRaw'; +import type DangerousRaw from '../DangerousRaw'; import * as styles from './index.module.scss'; type Props = { diff --git a/packages/console/src/components/Checkbox/index.tsx b/packages/console/src/components/Checkbox/index.tsx index 0b6cfd1a3..d71a5dc91 100644 --- a/packages/console/src/components/Checkbox/index.tsx +++ b/packages/console/src/components/Checkbox/index.tsx @@ -1,5 +1,6 @@ import { nanoid } from 'nanoid'; -import { ReactNode, useState } from 'react'; +import type { ReactNode } from 'react'; +import { useState } from 'react'; import Icon from './Icon'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/CodeEditor/index.tsx b/packages/console/src/components/CodeEditor/index.tsx index b7c232f15..8f40238ca 100644 --- a/packages/console/src/components/CodeEditor/index.tsx +++ b/packages/console/src/components/CodeEditor/index.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; -import { ChangeEvent, KeyboardEvent, useRef } from 'react'; +import type { ChangeEvent, KeyboardEvent } from 'react'; +import { useRef } from 'react'; import { PrismAsyncLight as SyntaxHighlighter } from 'react-syntax-highlighter'; import { a11yDark as theme } from 'react-syntax-highlighter/dist/esm/styles/prism'; diff --git a/packages/console/src/components/ColorPicker/index.tsx b/packages/console/src/components/ColorPicker/index.tsx index f67131653..18903582b 100644 --- a/packages/console/src/components/ColorPicker/index.tsx +++ b/packages/console/src/components/ColorPicker/index.tsx @@ -1,5 +1,6 @@ import { nanoid } from 'nanoid'; -import { ChangeEventHandler, useState } from 'react'; +import type { ChangeEventHandler } from 'react'; +import { useState } from 'react'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/ConfirmModal/index.tsx b/packages/console/src/components/ConfirmModal/index.tsx index f7ccc256b..8c586bfe2 100644 --- a/packages/console/src/components/ConfirmModal/index.tsx +++ b/packages/console/src/components/ConfirmModal/index.tsx @@ -1,9 +1,10 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import ReactModal from 'react-modal'; -import Button, { ButtonType } from '@/components/Button'; +import type { ButtonType } from '@/components/Button'; +import Button from '@/components/Button'; import * as modalStyles from '@/scss/modal.module.scss'; import ModalLayout from '../ModalLayout'; diff --git a/packages/console/src/components/CopyToClipboard/index.tsx b/packages/console/src/components/CopyToClipboard/index.tsx index fd1b0aef8..186b09d37 100644 --- a/packages/console/src/components/CopyToClipboard/index.tsx +++ b/packages/console/src/components/CopyToClipboard/index.tsx @@ -1,6 +1,8 @@ import classNames from 'classnames'; -import { MouseEventHandler, useEffect, useMemo, useRef, useState } from 'react'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { MouseEventHandler } from 'react'; +import { useEffect, useMemo, useRef, useState } from 'react'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import Copy from '@/assets/images/copy.svg'; import EyeClosed from '@/assets/images/eye-closed.svg'; diff --git a/packages/console/src/components/DangerousRaw/index.tsx b/packages/console/src/components/DangerousRaw/index.tsx index fb4c54af2..2e1f4f5cc 100644 --- a/packages/console/src/components/DangerousRaw/index.tsx +++ b/packages/console/src/components/DangerousRaw/index.tsx @@ -1,4 +1,4 @@ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; type Props = { children: ReactNode; diff --git a/packages/console/src/components/DateTime/index.tsx b/packages/console/src/components/DateTime/index.tsx index eaf1a57cf..0bc850197 100644 --- a/packages/console/src/components/DateTime/index.tsx +++ b/packages/console/src/components/DateTime/index.tsx @@ -1,4 +1,4 @@ -import { Nullable } from '@silverhand/essentials'; +import type { Nullable } from '@silverhand/essentials'; import dayjs from 'dayjs'; type Props = { diff --git a/packages/console/src/components/DeleteConfirmModal/index.tsx b/packages/console/src/components/DeleteConfirmModal/index.tsx index d0471158c..b2e75f86b 100644 --- a/packages/console/src/components/DeleteConfirmModal/index.tsx +++ b/packages/console/src/components/DeleteConfirmModal/index.tsx @@ -1,4 +1,5 @@ -import { ReactNode, useState } from 'react'; +import type { ReactNode } from 'react'; +import { useState } from 'react'; import ConfirmModal from '@/components/ConfirmModal'; import TextInput from '@/components/TextInput'; diff --git a/packages/console/src/components/Drawer/index.tsx b/packages/console/src/components/Drawer/index.tsx index 549113a9e..61f0dbc19 100644 --- a/packages/console/src/components/Drawer/index.tsx +++ b/packages/console/src/components/Drawer/index.tsx @@ -1,4 +1,4 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import ReactModal from 'react-modal'; import Close from '@/assets/images/close.svg'; diff --git a/packages/console/src/components/Dropdown/DropdownItem.tsx b/packages/console/src/components/Dropdown/DropdownItem.tsx index f5aaddc36..885bfd3fd 100644 --- a/packages/console/src/components/Dropdown/DropdownItem.tsx +++ b/packages/console/src/components/Dropdown/DropdownItem.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { MouseEvent, KeyboardEvent, ReactNode } from 'react'; +import type { MouseEvent, KeyboardEvent, ReactNode } from 'react'; import { onKeyDownHandler } from '@/utilities/a11y'; diff --git a/packages/console/src/components/Dropdown/index.tsx b/packages/console/src/components/Dropdown/index.tsx index ddb0a10bf..c10de023d 100644 --- a/packages/console/src/components/Dropdown/index.tsx +++ b/packages/console/src/components/Dropdown/index.tsx @@ -1,8 +1,10 @@ import classNames from 'classnames'; -import { ReactNode, RefObject, useRef } from 'react'; +import type { ReactNode, RefObject } from 'react'; +import { useRef } from 'react'; import ReactModal from 'react-modal'; -import usePosition, { HorizontalAlignment } from '@/hooks/use-position'; +import type { HorizontalAlignment } from '@/hooks/use-position'; +import usePosition from '@/hooks/use-position'; import { onKeyDownHandler } from '@/utilities/a11y'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/ErrorBoundary/index.tsx b/packages/console/src/components/ErrorBoundary/index.tsx index e4e3684c0..ea3db40a6 100644 --- a/packages/console/src/components/ErrorBoundary/index.tsx +++ b/packages/console/src/components/ErrorBoundary/index.tsx @@ -1,5 +1,6 @@ import { conditional } from '@silverhand/essentials'; -import { Component, ReactNode } from 'react'; +import type { ReactNode } from 'react'; +import { Component } from 'react'; import AppError from '../AppError'; diff --git a/packages/console/src/components/FormField/index.tsx b/packages/console/src/components/FormField/index.tsx index 19baebc6b..a17c3704f 100644 --- a/packages/console/src/components/FormField/index.tsx +++ b/packages/console/src/components/FormField/index.tsx @@ -1,11 +1,12 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactElement, ReactNode, useRef } from 'react'; +import type { ReactElement, ReactNode } from 'react'; +import { useRef } from 'react'; import { useTranslation } from 'react-i18next'; import Tip from '@/assets/images/tip.svg'; -import DangerousRaw from '../DangerousRaw'; +import type DangerousRaw from '../DangerousRaw'; import Spacer from '../Spacer'; import Tooltip from '../Tooltip'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/IconButton/index.tsx b/packages/console/src/components/IconButton/index.tsx index 14113cde2..41cbd8400 100644 --- a/packages/console/src/components/IconButton/index.tsx +++ b/packages/console/src/components/IconButton/index.tsx @@ -1,7 +1,8 @@ -import { AdminConsoleKey } from '@logto/phrases'; -import { Nullable } from '@silverhand/essentials'; +import type { AdminConsoleKey } from '@logto/phrases'; +import type { Nullable } from '@silverhand/essentials'; import classNames from 'classnames'; -import { ForwardedRef, forwardRef, HTMLProps, useImperativeHandle, useRef } from 'react'; +import type { ForwardedRef, HTMLProps } from 'react'; +import { forwardRef, useImperativeHandle, useRef } from 'react'; import { useTranslation } from 'react-i18next'; import Tooltip from '../Tooltip'; diff --git a/packages/console/src/components/ItemPreview/index.tsx b/packages/console/src/components/ItemPreview/index.tsx index 7baf8dca3..e918f95cc 100644 --- a/packages/console/src/components/ItemPreview/index.tsx +++ b/packages/console/src/components/ItemPreview/index.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; -import { ReactNode } from 'react'; -import { Link, To } from 'react-router-dom'; +import type { ReactNode } from 'react'; +import type { To } from 'react-router-dom'; +import { Link } from 'react-router-dom'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/components/LinkButton/index.tsx b/packages/console/src/components/LinkButton/index.tsx index 3ab773a79..cdbed5384 100644 --- a/packages/console/src/components/LinkButton/index.tsx +++ b/packages/console/src/components/LinkButton/index.tsx @@ -1,10 +1,10 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactElement, ReactNode } from 'react'; +import type { ReactElement, ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; -import DangerousRaw from '../DangerousRaw'; +import type DangerousRaw from '../DangerousRaw'; import * as styles from './index.module.scss'; type Props = { diff --git a/packages/console/src/components/Markdown/components/GithubRawImage/index.tsx b/packages/console/src/components/Markdown/components/GithubRawImage/index.tsx index 01b18694e..0b2605b9a 100644 --- a/packages/console/src/components/Markdown/components/GithubRawImage/index.tsx +++ b/packages/console/src/components/Markdown/components/GithubRawImage/index.tsx @@ -1,4 +1,5 @@ -import { HTMLProps, useRef, useState } from 'react'; +import type { HTMLProps } from 'react'; +import { useRef, useState } from 'react'; const githubRawUrlPrefix = 'https://raw.githubusercontent.com/logto-io/logto/master'; diff --git a/packages/console/src/components/Markdown/index.tsx b/packages/console/src/components/Markdown/index.tsx index b8cedcd3a..d05904221 100644 --- a/packages/console/src/components/Markdown/index.tsx +++ b/packages/console/src/components/Markdown/index.tsx @@ -1,4 +1,5 @@ -import { conditionalString, Optional } from '@silverhand/essentials'; +import type { Optional } from '@silverhand/essentials'; +import { conditionalString } from '@silverhand/essentials'; import classNames from 'classnames'; import { memo, useRef } from 'react'; import ReactMarkdown from 'react-markdown'; diff --git a/packages/console/src/components/ModalLayout/index.tsx b/packages/console/src/components/ModalLayout/index.tsx index 39b431671..82ee19dd3 100644 --- a/packages/console/src/components/ModalLayout/index.tsx +++ b/packages/console/src/components/ModalLayout/index.tsx @@ -1,6 +1,6 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import Close from '@/assets/images/close.svg'; diff --git a/packages/console/src/components/MultiTextInput/index.tsx b/packages/console/src/components/MultiTextInput/index.tsx index e3b28690b..90ce7c422 100644 --- a/packages/console/src/components/MultiTextInput/index.tsx +++ b/packages/console/src/components/MultiTextInput/index.tsx @@ -1,5 +1,6 @@ -import { AdminConsoleKey } from '@logto/phrases'; -import { KeyboardEvent, useMemo, useState } from 'react'; +import type { AdminConsoleKey } from '@logto/phrases'; +import type { KeyboardEvent } from 'react'; +import { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import Minus from '@/assets/images/minus.svg'; @@ -9,7 +10,7 @@ import ConfirmModal from '../ConfirmModal'; import IconButton from '../IconButton'; import TextInput from '../TextInput'; import * as styles from './index.module.scss'; -import { MultiTextInputError } from './types'; +import type { MultiTextInputError } from './types'; type Props = { title: AdminConsoleKey; @@ -53,7 +54,7 @@ const MultiTextInput = ({ title, value, onChange, onKeyPress, error, placeholder
{ diff --git a/packages/console/src/hooks/use-connector-in-use.ts b/packages/console/src/hooks/use-connector-in-use.ts index ab96f2b82..89d30b066 100644 --- a/packages/console/src/hooks/use-connector-in-use.ts +++ b/packages/console/src/hooks/use-connector-in-use.ts @@ -1,7 +1,8 @@ -import { ConnectorType, SignInExperience, SignInMethodState } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; +import { ConnectorType, SignInMethodState } from '@logto/schemas'; import useSWR from 'swr'; -import { RequestError } from './use-api'; +import type { RequestError } from './use-api'; const useConnectorInUse = (type?: ConnectorType, target?: string): boolean | undefined => { const { data } = useSWR(target && type && '/api/sign-in-exp'); diff --git a/packages/console/src/hooks/use-position.ts b/packages/console/src/hooks/use-position.ts index 2cc589e9f..da6bea222 100644 --- a/packages/console/src/hooks/use-position.ts +++ b/packages/console/src/hooks/use-position.ts @@ -1,4 +1,5 @@ -import { RefObject, useCallback, useEffect, useState } from 'react'; +import type { RefObject } from 'react'; +import { useCallback, useEffect, useState } from 'react'; export type VerticalAlignment = 'top' | 'center' | 'bottom'; diff --git a/packages/console/src/hooks/use-scroll.ts b/packages/console/src/hooks/use-scroll.ts index 14d4f5080..21cab2f0d 100644 --- a/packages/console/src/hooks/use-scroll.ts +++ b/packages/console/src/hooks/use-scroll.ts @@ -1,4 +1,4 @@ -import { Nullable } from '@silverhand/essentials'; +import type { Nullable } from '@silverhand/essentials'; import { useState, useEffect, useCallback } from 'react'; const useScroll = (contentRef: Nullable) => { diff --git a/packages/console/src/hooks/use-settings.ts b/packages/console/src/hooks/use-settings.ts index c402d1b96..c17481899 100644 --- a/packages/console/src/hooks/use-settings.ts +++ b/packages/console/src/hooks/use-settings.ts @@ -1,8 +1,9 @@ import { useLogto } from '@logto/react'; -import { AdminConsoleConfig, Setting } from '@logto/schemas'; +import type { AdminConsoleConfig, Setting } from '@logto/schemas'; import useSWR from 'swr'; -import useApi, { RequestError } from './use-api'; +import type { RequestError } from './use-api'; +import useApi from './use-api'; const useSettings = () => { const { isAuthenticated, error: authError } = useLogto(); diff --git a/packages/console/src/hooks/use-swr-fetcher.ts b/packages/console/src/hooks/use-swr-fetcher.ts index 19c0ce8cb..10f061a1a 100644 --- a/packages/console/src/hooks/use-swr-fetcher.ts +++ b/packages/console/src/hooks/use-swr-fetcher.ts @@ -1,8 +1,8 @@ -import { RequestErrorBody } from '@logto/schemas'; +import type { RequestErrorBody } from '@logto/schemas'; import { HTTPError } from 'ky'; import { useCallback } from 'react'; import { useTranslation } from 'react-i18next'; -import { BareFetcher } from 'swr'; +import type { BareFetcher } from 'swr'; import useApi, { RequestError } from './use-api'; diff --git a/packages/console/src/hooks/use-swr-options.ts b/packages/console/src/hooks/use-swr-options.ts index 614cb2ce0..1a0aee334 100644 --- a/packages/console/src/hooks/use-swr-options.ts +++ b/packages/console/src/hooks/use-swr-options.ts @@ -1,4 +1,4 @@ -import { SWRConfiguration } from 'swr'; +import type { SWRConfiguration } from 'swr'; import { RequestError } from './use-api'; import useSwrFetcher from './use-swr-fetcher'; diff --git a/packages/console/src/hooks/use-ui-languages.ts b/packages/console/src/hooks/use-ui-languages.ts index fcd1e42eb..d30d37ad3 100644 --- a/packages/console/src/hooks/use-ui-languages.ts +++ b/packages/console/src/hooks/use-ui-languages.ts @@ -1,11 +1,12 @@ -import { LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; import { builtInLanguages as builtInUiLanguages } from '@logto/phrases-ui'; import { useCallback, useMemo } from 'react'; import useSWR from 'swr'; -import { CustomPhraseResponse } from '@/types/custom-phrase'; +import type { CustomPhraseResponse } from '@/types/custom-phrase'; -import useApi, { RequestError } from './use-api'; +import type { RequestError } from './use-api'; +import useApi from './use-api'; const useUiLanguages = () => { const { diff --git a/packages/console/src/hooks/use-user-preferences.ts b/packages/console/src/hooks/use-user-preferences.ts index 53295acb8..4b3495ab3 100644 --- a/packages/console/src/hooks/use-user-preferences.ts +++ b/packages/console/src/hooks/use-user-preferences.ts @@ -1,7 +1,7 @@ import { builtInLanguages as builtInConsoleLanguages } from '@logto/phrases'; import { useLogto } from '@logto/react'; import { AppearanceMode } from '@logto/schemas'; -import { Nullable, Optional } from '@silverhand/essentials'; +import type { Nullable, Optional } from '@silverhand/essentials'; import { t } from 'i18next'; import { useCallback, useEffect, useMemo } from 'react'; import { toast } from 'react-hot-toast'; @@ -10,7 +10,8 @@ import { z } from 'zod'; import { themeStorageKey } from '@/consts'; -import useApi, { RequestError } from './use-api'; +import type { RequestError } from './use-api'; +import useApi from './use-api'; import useLogtoUserId from './use-logto-user-id'; const userPreferencesGuard = z.object({ diff --git a/packages/console/src/i18n/init.ts b/packages/console/src/i18n/init.ts index aa65cd7aa..8c93fdbd5 100644 --- a/packages/console/src/i18n/init.ts +++ b/packages/console/src/i18n/init.ts @@ -1,4 +1,4 @@ -import { LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; import resources from '@logto/phrases'; import i18next from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; diff --git a/packages/console/src/include.d/react-app.d.ts b/packages/console/src/include.d/react-app.d.ts index 777943041..c2ef4a4de 100644 --- a/packages/console/src/include.d/react-app.d.ts +++ b/packages/console/src/include.d/react-app.d.ts @@ -36,7 +36,7 @@ declare module '*.webp' { } declare module '*.svg' { - import * as React from 'react'; + import type * as React from 'react'; export const ReactComponent: React.FunctionComponent< React.SVGProps & { title?: string } diff --git a/packages/console/src/include.d/react-i18next.d.ts b/packages/console/src/include.d/react-i18next.d.ts index 119678c7a..555d2cc15 100644 --- a/packages/console/src/include.d/react-i18next.d.ts +++ b/packages/console/src/include.d/react-i18next.d.ts @@ -1,6 +1,6 @@ // https://react.i18next.com/latest/typescript#create-a-declaration-file -import { LocalPhrase } from '@logto/phrases'; +import type { LocalPhrase } from '@logto/phrases'; declare module 'react-i18next' { interface CustomTypeOptions { diff --git a/packages/console/src/mdx-components/DetailsSummary/index.tsx b/packages/console/src/mdx-components/DetailsSummary/index.tsx index 4065e08b5..ea269e635 100644 --- a/packages/console/src/mdx-components/DetailsSummary/index.tsx +++ b/packages/console/src/mdx-components/DetailsSummary/index.tsx @@ -1,6 +1,8 @@ import classNames from 'classnames'; -import { ReactNode, useState, useCallback } from 'react'; -import AnimateHeight, { Height } from 'react-animate-height'; +import type { ReactNode } from 'react'; +import { useState, useCallback } from 'react'; +import type { Height } from 'react-animate-height'; +import AnimateHeight from 'react-animate-height'; import ArrowRight from '@/assets/images/triangle-right.svg'; import { onKeyDownHandler } from '@/utilities/a11y'; diff --git a/packages/console/src/mdx-components/Step/index.tsx b/packages/console/src/mdx-components/Step/index.tsx index 4eeab0ae2..954bab7f2 100644 --- a/packages/console/src/mdx-components/Step/index.tsx +++ b/packages/console/src/mdx-components/Step/index.tsx @@ -1,6 +1,7 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import classNames from 'classnames'; -import { PropsWithChildren, useEffect, useRef, useState, useCallback } from 'react'; +import type { PropsWithChildren } from 'react'; +import { useEffect, useRef, useState, useCallback } from 'react'; import KeyboardArrowDown from '@/assets/images/keyboard-arrow-down.svg'; import KeyboardArrowUp from '@/assets/images/keyboard-arrow-up.svg'; diff --git a/packages/console/src/mdx-components/TabItem/index.tsx b/packages/console/src/mdx-components/TabItem/index.tsx index a5bb23c8b..e8a4bdf58 100644 --- a/packages/console/src/mdx-components/TabItem/index.tsx +++ b/packages/console/src/mdx-components/TabItem/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; export type Props = { children: ReactNode; diff --git a/packages/console/src/mdx-components/Tabs/index.tsx b/packages/console/src/mdx-components/Tabs/index.tsx index 36271e564..78966c934 100644 --- a/packages/console/src/mdx-components/Tabs/index.tsx +++ b/packages/console/src/mdx-components/Tabs/index.tsx @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -import { Nullable } from '@silverhand/essentials'; +import type { Nullable } from '@silverhand/essentials'; import { useState, isValidElement, type ReactElement, cloneElement, useRef, Children } from 'react'; import type { Props as TabItemProps } from '../TabItem'; diff --git a/packages/console/src/mdx-components/UriInputField/index.tsx b/packages/console/src/mdx-components/UriInputField/index.tsx index 1d6f5a749..19c2f35e3 100644 --- a/packages/console/src/mdx-components/UriInputField/index.tsx +++ b/packages/console/src/mdx-components/UriInputField/index.tsx @@ -1,6 +1,7 @@ -import { AdminConsoleKey } from '@logto/phrases'; -import { Application } from '@logto/schemas'; -import { useRef, KeyboardEvent } from 'react'; +import type { AdminConsoleKey } from '@logto/phrases'; +import type { Application } from '@logto/schemas'; +import type { KeyboardEvent } from 'react'; +import { useRef } from 'react'; import { Controller, FormProvider, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; import { useTranslation } from 'react-i18next'; @@ -11,8 +12,9 @@ import FormField from '@/components/FormField'; import MultiTextInput from '@/components/MultiTextInput'; import { convertRhfErrorMessage, createValidatorForRhf } from '@/components/MultiTextInput/utils'; import TextInput from '@/components/TextInput'; -import useApi, { RequestError } from '@/hooks/use-api'; -import { GuideForm } from '@/types/guide'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; +import type { GuideForm } from '@/types/guide'; import { uriValidator } from '@/utilities/validator'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/pages/ApiResourceDetails/index.tsx b/packages/console/src/pages/ApiResourceDetails/index.tsx index 8095c929f..10e8a8f34 100644 --- a/packages/console/src/pages/ApiResourceDetails/index.tsx +++ b/packages/console/src/pages/ApiResourceDetails/index.tsx @@ -1,4 +1,5 @@ -import { AppearanceMode, Resource } from '@logto/schemas'; +import type { Resource } from '@logto/schemas'; +import { AppearanceMode } from '@logto/schemas'; import { managementResource } from '@logto/schemas/lib/seeds'; import classNames from 'classnames'; import { useEffect, useState } from 'react'; @@ -24,7 +25,8 @@ import LinkButton from '@/components/LinkButton'; import TabNav, { TabNavItem } from '@/components/TabNav'; import TextInput from '@/components/TextInput'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; -import useApi, { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useTheme } from '@/hooks/use-theme'; import * as detailsStyles from '@/scss/details.module.scss'; diff --git a/packages/console/src/pages/ApiResources/components/CreateForm/index.tsx b/packages/console/src/pages/ApiResources/components/CreateForm/index.tsx index 79bb7b625..b48344a8b 100644 --- a/packages/console/src/pages/ApiResources/components/CreateForm/index.tsx +++ b/packages/console/src/pages/ApiResources/components/CreateForm/index.tsx @@ -1,4 +1,4 @@ -import { Resource } from '@logto/schemas'; +import type { Resource } from '@logto/schemas'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/ApiResources/index.tsx b/packages/console/src/pages/ApiResources/index.tsx index 99357bc1d..c17d0e727 100644 --- a/packages/console/src/pages/ApiResources/index.tsx +++ b/packages/console/src/pages/ApiResources/index.tsx @@ -1,4 +1,5 @@ -import { AppearanceMode, Resource } from '@logto/schemas'; +import type { Resource } from '@logto/schemas'; +import { AppearanceMode } from '@logto/schemas'; import classNames from 'classnames'; import { useState } from 'react'; import { toast } from 'react-hot-toast'; @@ -19,7 +20,7 @@ import Pagination from '@/components/Pagination'; import TableEmpty from '@/components/Table/TableEmpty'; import TableError from '@/components/Table/TableError'; import TableLoading from '@/components/Table/TableLoading'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import { useTheme } from '@/hooks/use-theme'; import * as modalStyles from '@/scss/modal.module.scss'; import * as tableStyles from '@/scss/table.module.scss'; diff --git a/packages/console/src/pages/ApplicationDetails/components/AdvancedSettings.tsx b/packages/console/src/pages/ApplicationDetails/components/AdvancedSettings.tsx index 0e8c6538d..ae3d3a873 100644 --- a/packages/console/src/pages/ApplicationDetails/components/AdvancedSettings.tsx +++ b/packages/console/src/pages/ApplicationDetails/components/AdvancedSettings.tsx @@ -1,4 +1,5 @@ -import { Application, ApplicationType, SnakeCaseOidcConfig, UserRole } from '@logto/schemas'; +import type { Application, SnakeCaseOidcConfig } from '@logto/schemas'; +import { ApplicationType, UserRole } from '@logto/schemas'; import { useEffect } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/ApplicationDetails/components/Settings.tsx b/packages/console/src/pages/ApplicationDetails/components/Settings.tsx index 925590801..8fb0e2fc1 100644 --- a/packages/console/src/pages/ApplicationDetails/components/Settings.tsx +++ b/packages/console/src/pages/ApplicationDetails/components/Settings.tsx @@ -1,9 +1,5 @@ -import { - Application, - ApplicationType, - SnakeCaseOidcConfig, - validateRedirectUrl, -} from '@logto/schemas'; +import type { Application, SnakeCaseOidcConfig } from '@logto/schemas'; +import { ApplicationType, validateRedirectUrl } from '@logto/schemas'; import { useEffect } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -11,7 +7,7 @@ import { useTranslation } from 'react-i18next'; import CopyToClipboard from '@/components/CopyToClipboard'; import FormField from '@/components/FormField'; import MultiTextInput from '@/components/MultiTextInput'; -import { MultiTextInputRule } from '@/components/MultiTextInput/types'; +import type { MultiTextInputRule } from '@/components/MultiTextInput/types'; import { createValidatorForRhf, convertRhfErrorMessage } from '@/components/MultiTextInput/utils'; import TextInput from '@/components/TextInput'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; diff --git a/packages/console/src/pages/ApplicationDetails/index.tsx b/packages/console/src/pages/ApplicationDetails/index.tsx index 0236091d2..adf5952b5 100644 --- a/packages/console/src/pages/ApplicationDetails/index.tsx +++ b/packages/console/src/pages/ApplicationDetails/index.tsx @@ -1,4 +1,5 @@ -import { Application, ApplicationType, SnakeCaseOidcConfig } from '@logto/schemas'; +import type { Application, SnakeCaseOidcConfig } from '@logto/schemas'; +import { ApplicationType } from '@logto/schemas'; import classNames from 'classnames'; import { useEffect, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; @@ -20,7 +21,8 @@ import DetailsSkeleton from '@/components/DetailsSkeleton'; import Drawer from '@/components/Drawer'; import LinkButton from '@/components/LinkButton'; import TabNav, { TabNavItem } from '@/components/TabNav'; -import useApi, { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useDocumentationUrl from '@/hooks/use-documentation-url'; import * as detailsStyles from '@/scss/details.module.scss'; import { applicationTypeI18nKey } from '@/types/applications'; diff --git a/packages/console/src/pages/Applications/components/CreateForm/index.tsx b/packages/console/src/pages/Applications/components/CreateForm/index.tsx index 80d04307b..ccf8c2722 100644 --- a/packages/console/src/pages/Applications/components/CreateForm/index.tsx +++ b/packages/console/src/pages/Applications/components/CreateForm/index.tsx @@ -1,4 +1,5 @@ -import { Application, ApplicationType } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; +import { ApplicationType } from '@logto/schemas'; import { useState } from 'react'; import { useController, useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/Applications/components/Guide/index.tsx b/packages/console/src/pages/Applications/components/Guide/index.tsx index 511ed53e1..4f8701c7f 100644 --- a/packages/console/src/pages/Applications/components/Guide/index.tsx +++ b/packages/console/src/pages/Applications/components/Guide/index.tsx @@ -1,13 +1,15 @@ -import { Application } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; import { MDXProvider } from '@mdx-js/react'; -import { Optional } from '@silverhand/essentials'; +import type { Optional } from '@silverhand/essentials'; import i18next from 'i18next'; -import { MDXProps } from 'mdx/types'; -import { cloneElement, lazy, LazyExoticComponent, Suspense, useEffect, useState } from 'react'; +import type { MDXProps } from 'mdx/types'; +import type { LazyExoticComponent } from 'react'; +import { cloneElement, lazy, Suspense, useEffect, useState } from 'react'; import CodeEditor from '@/components/CodeEditor'; import DetailsSummary from '@/mdx-components/DetailsSummary'; -import { applicationTypeAndSdkTypeMappings, SupportedSdk } from '@/types/applications'; +import type { SupportedSdk } from '@/types/applications'; +import { applicationTypeAndSdkTypeMappings } from '@/types/applications'; import GuideHeader from '../GuideHeader'; import SdkSelector from '../SdkSelector'; diff --git a/packages/console/src/pages/Applications/components/SdkSelector/index.tsx b/packages/console/src/pages/Applications/components/SdkSelector/index.tsx index 4250c7159..9537ebad4 100644 --- a/packages/console/src/pages/Applications/components/SdkSelector/index.tsx +++ b/packages/console/src/pages/Applications/components/SdkSelector/index.tsx @@ -13,7 +13,7 @@ import RadioGroup, { Radio } from '@/components/RadioGroup'; import Select from '@/components/Select'; import Spacer from '@/components/Spacer'; import { useTheme } from '@/hooks/use-theme'; -import { SupportedSdk } from '@/types/applications'; +import type { SupportedSdk } from '@/types/applications'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx index f63ddd341..9376e8d08 100644 --- a/packages/console/src/pages/Applications/components/TypeDescription/index.tsx +++ b/packages/console/src/pages/Applications/components/TypeDescription/index.tsx @@ -1,4 +1,4 @@ -import { ApplicationType } from '@logto/schemas'; +import type { ApplicationType } from '@logto/schemas'; import ApplicationIcon from '@/components/ApplicationIcon'; diff --git a/packages/console/src/pages/Applications/index.tsx b/packages/console/src/pages/Applications/index.tsx index af16add33..ec1ad9967 100644 --- a/packages/console/src/pages/Applications/index.tsx +++ b/packages/console/src/pages/Applications/index.tsx @@ -1,4 +1,4 @@ -import { Application } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; import classNames from 'classnames'; import { toast } from 'react-hot-toast'; import { useTranslation } from 'react-i18next'; @@ -17,7 +17,7 @@ import Pagination from '@/components/Pagination'; import TableEmpty from '@/components/Table/TableEmpty'; import TableError from '@/components/Table/TableError'; import TableLoading from '@/components/Table/TableLoading'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import * as modalStyles from '@/scss/modal.module.scss'; import * as tableStyles from '@/scss/table.module.scss'; import { applicationTypeI18nKey } from '@/types/applications'; diff --git a/packages/console/src/pages/AuditLogDetails/index.tsx b/packages/console/src/pages/AuditLogDetails/index.tsx index 0d01a5d32..1a5c8f7ad 100644 --- a/packages/console/src/pages/AuditLogDetails/index.tsx +++ b/packages/console/src/pages/AuditLogDetails/index.tsx @@ -1,4 +1,4 @@ -import { LogDto, User } from '@logto/schemas'; +import type { LogDto, User } from '@logto/schemas'; import classNames from 'classnames'; import dayjs from 'dayjs'; import { useTranslation } from 'react-i18next'; @@ -16,7 +16,7 @@ import LinkButton from '@/components/LinkButton'; import TabNav, { TabNavItem } from '@/components/TabNav'; import UserName from '@/components/UserName'; import { logEventTitle } from '@/consts/logs'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import * as detailsStyles from '@/scss/details.module.scss'; import EventIcon from './components/EventIcon'; diff --git a/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx b/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx index c70ba832f..d2b9390fc 100644 --- a/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx +++ b/packages/console/src/pages/ConnectorDetails/components/ConnectorContent.tsx @@ -1,4 +1,5 @@ -import { Connector, ConnectorResponse, ConnectorMetadata, ConnectorType } from '@logto/schemas'; +import type { Connector, ConnectorResponse, ConnectorMetadata } from '@logto/schemas'; +import { ConnectorType } from '@logto/schemas'; import { useMemo } from 'react'; import { Controller, useForm } from 'react-hook-form'; import { toast } from 'react-hot-toast'; diff --git a/packages/console/src/pages/ConnectorDetails/components/ConnectorTabs/index.tsx b/packages/console/src/pages/ConnectorDetails/components/ConnectorTabs/index.tsx index b549ba5be..f025dffb1 100644 --- a/packages/console/src/pages/ConnectorDetails/components/ConnectorTabs/index.tsx +++ b/packages/console/src/pages/ConnectorDetails/components/ConnectorTabs/index.tsx @@ -1,4 +1,5 @@ -import { ConnectorResponse, ConnectorPlatform } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { ConnectorPlatform } from '@logto/schemas'; import classNames from 'classnames'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/ConnectorDetails/index.tsx b/packages/console/src/pages/ConnectorDetails/index.tsx index 8d61831be..760df8381 100644 --- a/packages/console/src/pages/ConnectorDetails/index.tsx +++ b/packages/console/src/pages/ConnectorDetails/index.tsx @@ -1,4 +1,5 @@ -import { AppearanceMode, ConnectorResponse, ConnectorType } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { AppearanceMode, ConnectorType } from '@logto/schemas'; import classNames from 'classnames'; import { useState } from 'react'; import { toast } from 'react-hot-toast'; @@ -21,7 +22,8 @@ import Markdown from '@/components/Markdown'; import Status from '@/components/Status'; import TabNav, { TabNavItem } from '@/components/TabNav'; import UnnamedTrans from '@/components/UnnamedTrans'; -import useApi, { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useConnectorInUse from '@/hooks/use-connector-in-use'; import { useTheme } from '@/hooks/use-theme'; import * as detailsStyles from '@/scss/details.module.scss'; diff --git a/packages/console/src/pages/Connectors/components/ConnectorName/index.tsx b/packages/console/src/pages/Connectors/components/ConnectorName/index.tsx index 01838562b..9528cfd5a 100644 --- a/packages/console/src/pages/Connectors/components/ConnectorName/index.tsx +++ b/packages/console/src/pages/Connectors/components/ConnectorName/index.tsx @@ -1,4 +1,5 @@ -import { AppearanceMode, ConnectorResponse, ConnectorType } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { AppearanceMode, ConnectorType } from '@logto/schemas'; import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; diff --git a/packages/console/src/pages/Connectors/components/ConnectorRow/index.tsx b/packages/console/src/pages/Connectors/components/ConnectorRow/index.tsx index 6b2ea89c4..5bc3b2cb1 100644 --- a/packages/console/src/pages/Connectors/components/ConnectorRow/index.tsx +++ b/packages/console/src/pages/Connectors/components/ConnectorRow/index.tsx @@ -1,4 +1,5 @@ -import { ConnectorResponse, ConnectorType } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { ConnectorType } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; diff --git a/packages/console/src/pages/Connectors/components/CreateForm/PlatformSelector.tsx b/packages/console/src/pages/Connectors/components/CreateForm/PlatformSelector.tsx index 0be886cbb..7ffcc9ee0 100644 --- a/packages/console/src/pages/Connectors/components/CreateForm/PlatformSelector.tsx +++ b/packages/console/src/pages/Connectors/components/CreateForm/PlatformSelector.tsx @@ -3,7 +3,7 @@ import { useTranslation } from 'react-i18next'; import RadioGroup, { Radio } from '@/components/RadioGroup'; import UnnamedTrans from '@/components/UnnamedTrans'; import { connectorPlatformLabel } from '@/consts/connectors'; -import { ConnectorGroup } from '@/types/connector'; +import type { ConnectorGroup } from '@/types/connector'; import * as styles from './PlatformSelector.module.scss'; diff --git a/packages/console/src/pages/Connectors/components/Guide/index.tsx b/packages/console/src/pages/Connectors/components/Guide/index.tsx index cbbe1a7b9..3ee3b58a2 100644 --- a/packages/console/src/pages/Connectors/components/Guide/index.tsx +++ b/packages/console/src/pages/Connectors/components/Guide/index.tsx @@ -1,5 +1,6 @@ import { getDefaultLanguage } from '@logto/core-kit'; -import { ConnectorResponse, ConnectorType } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { ConnectorType } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; import i18next from 'i18next'; import { Controller, useForm } from 'react-hook-form'; @@ -16,7 +17,7 @@ import useApi from '@/hooks/use-api'; import useSettings from '@/hooks/use-settings'; import Step from '@/mdx-components/Step'; import SenderTester from '@/pages/ConnectorDetails/components/SenderTester'; -import { GuideForm } from '@/types/guide'; +import type { GuideForm } from '@/types/guide'; import { safeParseJson } from '@/utilities/json'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/pages/Dashboard/components/Block.tsx b/packages/console/src/pages/Dashboard/components/Block.tsx index e94e85709..969728db3 100644 --- a/packages/console/src/pages/Dashboard/components/Block.tsx +++ b/packages/console/src/pages/Dashboard/components/Block.tsx @@ -1,4 +1,4 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import { conditionalString } from '@silverhand/essentials'; import classNames from 'classnames'; import { useRef } from 'react'; diff --git a/packages/console/src/pages/Dashboard/index.tsx b/packages/console/src/pages/Dashboard/index.tsx index ae30486e2..db727d9e8 100644 --- a/packages/console/src/pages/Dashboard/index.tsx +++ b/packages/console/src/pages/Dashboard/index.tsx @@ -1,5 +1,6 @@ import dayjs from 'dayjs'; -import { ChangeEventHandler, useState } from 'react'; +import type { ChangeEventHandler } from 'react'; +import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Area, @@ -15,13 +16,13 @@ import useSWR from 'swr'; import AppError from '@/components/AppError'; import Card from '@/components/Card'; import TextInput from '@/components/TextInput'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import Block from './components/Block'; import ChartTooltip from './components/ChartTooltip'; import Skeleton from './components/Skeleton'; import * as styles from './index.module.scss'; -import { ActiveUsersResponse, NewUsersResponse, TotalUsersResponse } from './types'; +import type { ActiveUsersResponse, NewUsersResponse, TotalUsersResponse } from './types'; const tickStyle = { fill: 'var(--color-text-secondary)', diff --git a/packages/console/src/pages/GetStarted/hook.ts b/packages/console/src/pages/GetStarted/hook.ts index 041576e5d..70e8d4053 100644 --- a/packages/console/src/pages/GetStarted/hook.ts +++ b/packages/console/src/pages/GetStarted/hook.ts @@ -1,5 +1,6 @@ -import { AdminConsoleKey } from '@logto/phrases'; -import { AppearanceMode, Application } from '@logto/schemas'; +import type { AdminConsoleKey } from '@logto/phrases'; +import type { Application } from '@logto/schemas'; +import { AppearanceMode } from '@logto/schemas'; import { demoAppApplicationId } from '@logto/schemas/lib/seeds'; import { useMemo } from 'react'; import { useNavigate } from 'react-router-dom'; diff --git a/packages/console/src/pages/Settings/index.tsx b/packages/console/src/pages/Settings/index.tsx index 616ee85d2..4431cdd6a 100644 --- a/packages/console/src/pages/Settings/index.tsx +++ b/packages/console/src/pages/Settings/index.tsx @@ -15,7 +15,8 @@ import FormField from '@/components/FormField'; import Select from '@/components/Select'; import TabNav, { TabNavItem } from '@/components/TabNav'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; -import useUserPreferences, { UserPreferences } from '@/hooks/use-user-preferences'; +import type { UserPreferences } from '@/hooks/use-user-preferences'; +import useUserPreferences from '@/hooks/use-user-preferences'; import * as detailsStyles from '@/scss/details.module.scss'; import ChangePassword from './components/ChangePassword'; diff --git a/packages/console/src/pages/SignInExperience/components/AuthenticationForm.tsx b/packages/console/src/pages/SignInExperience/components/AuthenticationForm.tsx index 3261ef053..af6bbcdc8 100644 --- a/packages/console/src/pages/SignInExperience/components/AuthenticationForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/AuthenticationForm.tsx @@ -4,7 +4,7 @@ import { useTranslation } from 'react-i18next'; import FormField from '@/components/FormField'; import Switch from '@/components/Switch'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import * as styles from './index.module.scss'; const AuthenticationForm = () => { diff --git a/packages/console/src/pages/SignInExperience/components/BrandingForm.tsx b/packages/console/src/pages/SignInExperience/components/BrandingForm.tsx index b5c008180..f3b00ca59 100644 --- a/packages/console/src/pages/SignInExperience/components/BrandingForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/BrandingForm.tsx @@ -7,7 +7,7 @@ import RadioGroup, { Radio } from '@/components/RadioGroup'; import TextInput from '@/components/TextInput'; import { uriValidator } from '@/utilities/validator'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import * as styles from './index.module.scss'; const BrandingForm = () => { diff --git a/packages/console/src/pages/SignInExperience/components/ColorForm.tsx b/packages/console/src/pages/SignInExperience/components/ColorForm.tsx index 5b34369cd..def828495 100644 --- a/packages/console/src/pages/SignInExperience/components/ColorForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/ColorForm.tsx @@ -8,7 +8,7 @@ import ColorPicker from '@/components/ColorPicker'; import FormField from '@/components/FormField'; import Switch from '@/components/Switch'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import * as styles from './index.module.scss'; const ColorForm = () => { diff --git a/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx b/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx index 801326b51..09710d24a 100644 --- a/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx +++ b/packages/console/src/pages/SignInExperience/components/ConnectorSetupWarning.tsx @@ -1,10 +1,11 @@ -import { ConnectorResponse, ConnectorType, SignInMethodKey } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { ConnectorType, SignInMethodKey } from '@logto/schemas'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import useSWR from 'swr'; import Alert from '@/components/Alert'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; type Props = { method: SignInMethodKey; diff --git a/packages/console/src/pages/SignInExperience/components/GuideModal.tsx b/packages/console/src/pages/SignInExperience/components/GuideModal.tsx index 2519140ed..8f0b5eb91 100644 --- a/packages/console/src/pages/SignInExperience/components/GuideModal.tsx +++ b/packages/console/src/pages/SignInExperience/components/GuideModal.tsx @@ -1,4 +1,4 @@ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { useEffect, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -17,7 +17,7 @@ import useUserPreferences from '@/hooks/use-user-preferences'; import * as modalStyles from '@/scss/modal.module.scss'; import usePreviewConfigs from '../hooks'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import { signInExperienceParser } from '../utilities'; import BrandingForm from './BrandingForm'; import ColorForm from './ColorForm'; diff --git a/packages/console/src/pages/SignInExperience/components/LanguagesForm.tsx b/packages/console/src/pages/SignInExperience/components/LanguagesForm.tsx index 1fa734743..83791e5ee 100644 --- a/packages/console/src/pages/SignInExperience/components/LanguagesForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/LanguagesForm.tsx @@ -1,5 +1,5 @@ import { languages as uiLanguageNameMapping } from '@logto/language-kit'; -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { useEffect, useMemo } from 'react'; import { Controller, useFormContext } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; @@ -8,10 +8,10 @@ import useSWR from 'swr'; import FormField from '@/components/FormField'; import Select from '@/components/Select'; import Switch from '@/components/Switch'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import useUiLanguages from '@/hooks/use-ui-languages'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import ManageLanguageButton from './ManageLanguage/ManageLanguageButton'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/AddLanguageSelector.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/AddLanguageSelector.tsx index 3513c7386..c4167f1fe 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/AddLanguageSelector.tsx +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/AddLanguageSelector.tsx @@ -1,6 +1,8 @@ -import { LanguageTag, languages as uiLanguageNameMapping } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages as uiLanguageNameMapping } from '@logto/language-kit'; import classNames from 'classnames'; -import { ChangeEvent, useEffect, useRef, useState } from 'react'; +import type { ChangeEvent } from 'react'; +import { useEffect, useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import Plus from '@/assets/images/plus.svg'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/EditSection.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/EditSection.tsx index 4823429bd..b5982edc2 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/EditSection.tsx +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/EditSection.tsx @@ -1,4 +1,4 @@ -import { Translation } from '@logto/schemas'; +import type { Translation } from '@logto/schemas'; import { useFormContext } from 'react-hook-form'; import Textarea from '@/components/Textarea'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx index 75dd4765d..6f28dec1e 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageDetails.tsx @@ -1,7 +1,8 @@ -import { languages as uiLanguageNameMapping, LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages as uiLanguageNameMapping } from '@logto/language-kit'; import resource, { isBuiltInLanguageTag } from '@logto/phrases-ui'; import en from '@logto/phrases-ui/lib/locales/en'; -import { SignInExperience, Translation } from '@logto/schemas'; +import type { SignInExperience, Translation } from '@logto/schemas'; import cleanDeep from 'clean-deep'; import deepmerge from 'deepmerge'; import { useCallback, useContext, useEffect, useMemo, useState } from 'react'; @@ -17,7 +18,7 @@ import ConfirmModal from '@/components/ConfirmModal'; import IconButton from '@/components/IconButton'; import useApi, { RequestError } from '@/hooks/use-api'; import useUiLanguages from '@/hooks/use-ui-languages'; -import { CustomPhraseResponse } from '@/types/custom-phrase'; +import type { CustomPhraseResponse } from '@/types/custom-phrase'; import { createEmptyUiTranslation, flattenTranslation } from '../../../utilities'; import EditSection from './EditSection'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageItem.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageItem.tsx index 1a328a69a..46d9d330c 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageItem.tsx +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageItem.tsx @@ -1,4 +1,5 @@ -import { languages, LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages } from '@logto/language-kit'; import classNames from 'classnames'; import { useEffect, useRef } from 'react'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageNav.tsx b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageNav.tsx index 4c4695ccb..340af4bea 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageNav.tsx +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/LanguageNav.tsx @@ -1,8 +1,5 @@ -import { - isLanguageTag, - LanguageTag, - languages as uiLanguageNameMapping, -} from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; +import { isLanguageTag, languages as uiLanguageNameMapping } from '@logto/language-kit'; import { useContext } from 'react'; import useUiLanguages from '@/hooks/use-ui-languages'; diff --git a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts index 54fe0ef05..5b671a966 100644 --- a/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts +++ b/packages/console/src/pages/SignInExperience/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts @@ -1,4 +1,4 @@ -import { LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; import { createContext, useMemo, useState } from 'react'; const noop = () => { diff --git a/packages/console/src/pages/SignInExperience/components/Preview.tsx b/packages/console/src/pages/SignInExperience/components/Preview.tsx index 9ddc95fb3..137e467ec 100644 --- a/packages/console/src/pages/SignInExperience/components/Preview.tsx +++ b/packages/console/src/pages/SignInExperience/components/Preview.tsx @@ -1,10 +1,7 @@ -import { LanguageTag, languages as uiLanguageNameMapping } from '@logto/language-kit'; -import { - AppearanceMode, - ConnectorResponse, - ConnectorMetadata, - SignInExperience, -} from '@logto/schemas'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages as uiLanguageNameMapping } from '@logto/language-kit'; +import type { ConnectorResponse, ConnectorMetadata, SignInExperience } from '@logto/schemas'; +import { AppearanceMode } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; import classNames from 'classnames'; import dayjs from 'dayjs'; @@ -16,7 +13,7 @@ import PhoneInfo from '@/assets/images/phone-info.svg'; import Card from '@/components/Card'; import Select from '@/components/Select'; import TabNav, { TabNavItem } from '@/components/TabNav'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import useUiLanguages from '@/hooks/use-ui-languages'; import * as styles from './Preview.module.scss'; diff --git a/packages/console/src/pages/SignInExperience/components/SignInMethodsChangePreview.tsx b/packages/console/src/pages/SignInExperience/components/SignInMethodsChangePreview.tsx index 7f36c2ac5..24d8e98b5 100644 --- a/packages/console/src/pages/SignInExperience/components/SignInMethodsChangePreview.tsx +++ b/packages/console/src/pages/SignInExperience/components/SignInMethodsChangePreview.tsx @@ -1,4 +1,4 @@ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { useTranslation } from 'react-i18next'; import * as styles from './SignInMethodsChangePreview.module.scss'; diff --git a/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx b/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx index f8e0fc041..ed4d01d07 100644 --- a/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/SignInMethodsForm.tsx @@ -8,7 +8,7 @@ import FormField from '@/components/FormField'; import Select from '@/components/Select'; import Switch from '@/components/Switch'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import ConnectorSetupWarning from './ConnectorSetupWarning'; import ConnectorsTransfer from './ConnectorsTransfer'; import * as styles from './index.module.scss'; diff --git a/packages/console/src/pages/SignInExperience/components/SignInMethodsPreview.tsx b/packages/console/src/pages/SignInExperience/components/SignInMethodsPreview.tsx index c26be7065..a2dfb63fb 100644 --- a/packages/console/src/pages/SignInExperience/components/SignInMethodsPreview.tsx +++ b/packages/console/src/pages/SignInExperience/components/SignInMethodsPreview.tsx @@ -1,4 +1,5 @@ -import { SignInExperience, SignInMethodKey, SignInMethodState } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; +import { SignInMethodKey, SignInMethodState } from '@logto/schemas'; import { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/SignInExperience/components/TermsForm.tsx b/packages/console/src/pages/SignInExperience/components/TermsForm.tsx index 774ba8cc0..e0373d562 100644 --- a/packages/console/src/pages/SignInExperience/components/TermsForm.tsx +++ b/packages/console/src/pages/SignInExperience/components/TermsForm.tsx @@ -6,7 +6,7 @@ import Switch from '@/components/Switch'; import TextInput from '@/components/TextInput'; import { uriValidator } from '@/utilities/validator'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; import * as styles from './index.module.scss'; const TermsForm = () => { diff --git a/packages/console/src/pages/SignInExperience/hooks.ts b/packages/console/src/pages/SignInExperience/hooks.ts index 68541cb35..19bec86f3 100644 --- a/packages/console/src/pages/SignInExperience/hooks.ts +++ b/packages/console/src/pages/SignInExperience/hooks.ts @@ -1,7 +1,7 @@ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { useMemo } from 'react'; -import { SignInExperienceForm } from './types'; +import type { SignInExperienceForm } from './types'; import { signInExperienceParser } from './utilities'; const usePreviewConfigs = ( diff --git a/packages/console/src/pages/SignInExperience/index.tsx b/packages/console/src/pages/SignInExperience/index.tsx index c3abb6814..d03dfd173 100644 --- a/packages/console/src/pages/SignInExperience/index.tsx +++ b/packages/console/src/pages/SignInExperience/index.tsx @@ -1,4 +1,4 @@ -import { SignInExperience as SignInExperienceType } from '@logto/schemas'; +import type { SignInExperience as SignInExperienceType } from '@logto/schemas'; import classNames from 'classnames'; import { useEffect, useMemo, useState } from 'react'; import { FormProvider, useForm } from 'react-hook-form'; @@ -12,7 +12,8 @@ import Card from '@/components/Card'; import CardTitle from '@/components/CardTitle'; import ConfirmModal from '@/components/ConfirmModal'; import TabNav, { TabNavItem } from '@/components/TabNav'; -import useApi, { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useSettings from '@/hooks/use-settings'; import useUiLanguages from '@/hooks/use-ui-languages'; import * as detailsStyles from '@/scss/details.module.scss'; @@ -26,7 +27,7 @@ import * as styles from './index.module.scss'; import BrandingTab from './tabs/BrandingTab'; import OthersTab from './tabs/OthersTab'; import SignInMethodsTab from './tabs/SignInMethodsTab'; -import { SignInExperienceForm } from './types'; +import type { SignInExperienceForm } from './types'; import { compareSignInMethods, signInExperienceParser } from './utilities'; const SignInExperience = () => { diff --git a/packages/console/src/pages/SignInExperience/tabs/BrandingTab.tsx b/packages/console/src/pages/SignInExperience/tabs/BrandingTab.tsx index df4090c99..3ef205367 100644 --- a/packages/console/src/pages/SignInExperience/tabs/BrandingTab.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/BrandingTab.tsx @@ -5,7 +5,7 @@ import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; import BrandingForm from '../components/BrandingForm'; import ColorForm from '../components/ColorForm'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; type Props = { defaultData: SignInExperienceForm; diff --git a/packages/console/src/pages/SignInExperience/tabs/OthersTab.tsx b/packages/console/src/pages/SignInExperience/tabs/OthersTab.tsx index 29b461e1e..bafeda29a 100644 --- a/packages/console/src/pages/SignInExperience/tabs/OthersTab.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/OthersTab.tsx @@ -6,7 +6,7 @@ import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; import AuthenticationForm from '../components/AuthenticationForm'; import LanguagesForm from '../components/LanguagesForm'; import TermsForm from '../components/TermsForm'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; type Props = { defaultData: SignInExperienceForm; diff --git a/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx b/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx index 9f5f3dd1e..bdaeaa1ed 100644 --- a/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/SignInMethodsTab.tsx @@ -4,7 +4,7 @@ import { useFormContext } from 'react-hook-form'; import UnsavedChangesAlertModal from '@/components/UnsavedChangesAlertModal'; import SignInMethodsForm from '../components/SignInMethodsForm'; -import { SignInExperienceForm } from '../types'; +import type { SignInExperienceForm } from '../types'; type Props = { defaultData: SignInExperienceForm; diff --git a/packages/console/src/pages/SignInExperience/types.ts b/packages/console/src/pages/SignInExperience/types.ts index 87ddd9819..4432fbecd 100644 --- a/packages/console/src/pages/SignInExperience/types.ts +++ b/packages/console/src/pages/SignInExperience/types.ts @@ -1,4 +1,4 @@ -import { SignInExperience, SignInMethodKey } from '@logto/schemas'; +import type { SignInExperience, SignInMethodKey } from '@logto/schemas'; export type SignInExperienceForm = Omit & { signInMethods: { diff --git a/packages/console/src/pages/SignInExperience/utilities.ts b/packages/console/src/pages/SignInExperience/utilities.ts index bf5660fe8..8f8ee7bcd 100644 --- a/packages/console/src/pages/SignInExperience/utilities.ts +++ b/packages/console/src/pages/SignInExperience/utilities.ts @@ -1,15 +1,9 @@ import en from '@logto/phrases-ui/lib/locales/en'; -import { - SignInExperience, - SignInMethodKey, - SignInMethods, - SignInMethodState, - SignInMode, - Translation, -} from '@logto/schemas'; +import type { SignInExperience, SignInMethods, Translation } from '@logto/schemas'; +import { SignInMethodKey, SignInMethodState, SignInMode } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; -import { SignInExperienceForm } from './types'; +import type { SignInExperienceForm } from './types'; const findMethodState = ( setup: SignInExperienceForm, diff --git a/packages/console/src/pages/UserDetails/components/CreateSuccess.tsx b/packages/console/src/pages/UserDetails/components/CreateSuccess.tsx index dbca41926..a26fb1e89 100644 --- a/packages/console/src/pages/UserDetails/components/CreateSuccess.tsx +++ b/packages/console/src/pages/UserDetails/components/CreateSuccess.tsx @@ -1,4 +1,4 @@ -import { AdminConsoleKey } from '@logto/phrases'; +import type { AdminConsoleKey } from '@logto/phrases'; import { useState } from 'react'; import { toast } from 'react-hot-toast'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/UserDetails/components/ResetPasswordForm.tsx b/packages/console/src/pages/UserDetails/components/ResetPasswordForm.tsx index c2ad145ba..0a1c8b97f 100644 --- a/packages/console/src/pages/UserDetails/components/ResetPasswordForm.tsx +++ b/packages/console/src/pages/UserDetails/components/ResetPasswordForm.tsx @@ -1,4 +1,4 @@ -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { nanoid } from 'nanoid'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/UserDetails/components/UserConnectors.tsx b/packages/console/src/pages/UserDetails/components/UserConnectors.tsx index 46703d072..54d34b2d4 100644 --- a/packages/console/src/pages/UserDetails/components/UserConnectors.tsx +++ b/packages/console/src/pages/UserDetails/components/UserConnectors.tsx @@ -1,5 +1,5 @@ import type { Identities, ConnectorResponse } from '@logto/schemas'; -import { Optional } from '@silverhand/essentials'; +import type { Optional } from '@silverhand/essentials'; import { useMemo, useState } from 'react'; import { Trans, useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/UserDetails/components/UserSettings.tsx b/packages/console/src/pages/UserDetails/components/UserSettings.tsx index 91e077de1..7e3fe4376 100644 --- a/packages/console/src/pages/UserDetails/components/UserSettings.tsx +++ b/packages/console/src/pages/UserDetails/components/UserSettings.tsx @@ -1,5 +1,6 @@ -import { arbitraryObjectGuard, User } from '@logto/schemas'; -import { Nullable } from '@silverhand/essentials'; +import type { User } from '@logto/schemas'; +import { arbitraryObjectGuard } from '@logto/schemas'; +import type { Nullable } from '@silverhand/essentials'; import { useEffect } from 'react'; import { useForm, useController } from 'react-hook-form'; import { toast } from 'react-hot-toast'; diff --git a/packages/console/src/pages/UserDetails/index.tsx b/packages/console/src/pages/UserDetails/index.tsx index 5b8d647f0..8e3a9553e 100644 --- a/packages/console/src/pages/UserDetails/index.tsx +++ b/packages/console/src/pages/UserDetails/index.tsx @@ -1,4 +1,4 @@ -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import classNames from 'classnames'; import { useMemo, useState } from 'react'; import { toast } from 'react-hot-toast'; @@ -20,7 +20,8 @@ import LinkButton from '@/components/LinkButton'; import TabNav, { TabNavItem } from '@/components/TabNav'; import { generatedPasswordStorageKey } from '@/consts'; import { generateAvatarPlaceHolderById } from '@/consts/avatars'; -import useApi, { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import * as detailsStyles from '@/scss/details.module.scss'; import * as modalStyles from '@/scss/modal.module.scss'; diff --git a/packages/console/src/pages/Users/components/CreateForm/index.tsx b/packages/console/src/pages/Users/components/CreateForm/index.tsx index 0dc4ae935..2e7d83595 100644 --- a/packages/console/src/pages/Users/components/CreateForm/index.tsx +++ b/packages/console/src/pages/Users/components/CreateForm/index.tsx @@ -1,5 +1,5 @@ import { usernameRegEx } from '@logto/core-kit'; -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { nanoid } from 'nanoid'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; diff --git a/packages/console/src/pages/Users/index.tsx b/packages/console/src/pages/Users/index.tsx index acee505c4..bf71fbda5 100644 --- a/packages/console/src/pages/Users/index.tsx +++ b/packages/console/src/pages/Users/index.tsx @@ -1,4 +1,4 @@ -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { conditional, conditionalString } from '@silverhand/essentials'; import classNames from 'classnames'; import { useState } from 'react'; @@ -21,7 +21,7 @@ import TableError from '@/components/Table/TableError'; import TableLoading from '@/components/Table/TableLoading'; import { generatedPasswordStorageKey } from '@/consts'; import { generateAvatarPlaceHolderById } from '@/consts/avatars'; -import { RequestError } from '@/hooks/use-api'; +import type { RequestError } from '@/hooks/use-api'; import * as modalStyles from '@/scss/modal.module.scss'; import * as tableStyles from '@/scss/table.module.scss'; diff --git a/packages/console/src/types/connector.ts b/packages/console/src/types/connector.ts index 0c5f351e0..81a2d0101 100644 --- a/packages/console/src/types/connector.ts +++ b/packages/console/src/types/connector.ts @@ -1,4 +1,4 @@ -import { ConnectorResponse } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; export type ConnectorGroup = Pick< ConnectorResponse, diff --git a/packages/console/src/types/custom-phrase.ts b/packages/console/src/types/custom-phrase.ts index 11bf591a6..26e10519b 100644 --- a/packages/console/src/types/custom-phrase.ts +++ b/packages/console/src/types/custom-phrase.ts @@ -1,5 +1,5 @@ -import { LanguageTag } from '@logto/language-kit'; -import { Translation } from '@logto/schemas'; +import type { LanguageTag } from '@logto/language-kit'; +import type { Translation } from '@logto/schemas'; export type CustomPhraseResponse = { languageTag: LanguageTag; diff --git a/packages/console/src/utilities/a11y.ts b/packages/console/src/utilities/a11y.ts index e96dfce97..e46b51f8b 100644 --- a/packages/console/src/utilities/a11y.ts +++ b/packages/console/src/utilities/a11y.ts @@ -1,4 +1,4 @@ -import { KeyboardEventHandler, KeyboardEvent } from 'react'; +import type { KeyboardEventHandler, KeyboardEvent } from 'react'; type callbackHandler = ((event: KeyboardEvent) => void) | undefined; diff --git a/packages/core/src/__mocks__/connector.ts b/packages/core/src/__mocks__/connector.ts index f2b029db5..4d3e4bbab 100644 --- a/packages/core/src/__mocks__/connector.ts +++ b/packages/core/src/__mocks__/connector.ts @@ -1,8 +1,9 @@ import { ConnectorPlatform } from '@logto/connector-kit'; -import { Connector, ConnectorMetadata, ConnectorType } from '@logto/schemas'; +import type { Connector, ConnectorMetadata } from '@logto/schemas'; +import { ConnectorType } from '@logto/schemas'; import { any } from 'zod'; -import { LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; export const mockMetadata: ConnectorMetadata = { id: 'id', diff --git a/packages/core/src/__mocks__/index.ts b/packages/core/src/__mocks__/index.ts index 9e823098b..4f6865581 100644 --- a/packages/core/src/__mocks__/index.ts +++ b/packages/core/src/__mocks__/index.ts @@ -1,12 +1,5 @@ -import { - Application, - ApplicationType, - Passcode, - PasscodeType, - Resource, - Role, - Setting, -} from '@logto/schemas'; +import type { Application, Passcode, Resource, Role, Setting } from '@logto/schemas'; +import { ApplicationType, PasscodeType } from '@logto/schemas'; export * from './connector'; export * from './sign-in-experience'; diff --git a/packages/core/src/__mocks__/sign-in-experience.ts b/packages/core/src/__mocks__/sign-in-experience.ts index 19578d72d..825761b86 100644 --- a/packages/core/src/__mocks__/sign-in-experience.ts +++ b/packages/core/src/__mocks__/sign-in-experience.ts @@ -1,14 +1,12 @@ -import { +import type { Branding, - BrandingStyle, LanguageInfo, SignInExperience, SignInMethods, - SignInMethodState, TermsOfUse, - SignInMode, Color, } from '@logto/schemas'; +import { BrandingStyle, SignInMethodState, SignInMode } from '@logto/schemas'; export const mockSignInExperience: SignInExperience = { id: 'foo', diff --git a/packages/core/src/__mocks__/user.ts b/packages/core/src/__mocks__/user.ts index bf687d86e..7db746a5c 100644 --- a/packages/core/src/__mocks__/user.ts +++ b/packages/core/src/__mocks__/user.ts @@ -1,4 +1,5 @@ -import { userInfoSelectFields, User, UsersPasswordEncryptionMethod } from '@logto/schemas'; +import type { User } from '@logto/schemas'; +import { userInfoSelectFields, UsersPasswordEncryptionMethod } from '@logto/schemas'; import pick from 'lodash.pick'; export const mockUser: User = { diff --git a/packages/core/src/app/init.ts b/packages/core/src/app/init.ts index 6c48ce54b..c98a8b848 100644 --- a/packages/core/src/app/init.ts +++ b/packages/core/src/app/init.ts @@ -2,7 +2,7 @@ import fs from 'fs/promises'; import https from 'https'; import chalk from 'chalk'; -import Koa from 'koa'; +import type Koa from 'koa'; import compose from 'koa-compose'; import koaLogger from 'koa-logger'; import mount from 'koa-mount'; diff --git a/packages/core/src/connectors/index.ts b/packages/core/src/connectors/index.ts index 1e4c5317a..9ef3237b5 100644 --- a/packages/core/src/connectors/index.ts +++ b/packages/core/src/connectors/index.ts @@ -3,7 +3,8 @@ import { readdir } from 'fs/promises'; import path from 'path'; import { connectorDirectory } from '@logto/cli/lib/constants'; -import { AllConnector, CreateConnector, validateConfig } from '@logto/connector-kit'; +import type { AllConnector, CreateConnector } from '@logto/connector-kit'; +import { validateConfig } from '@logto/connector-kit'; import { findPackage } from '@logto/shared'; import chalk from 'chalk'; @@ -11,7 +12,7 @@ import RequestError from '@/errors/RequestError'; import { findAllConnectors, insertConnector } from '@/queries/connector'; import { defaultConnectorMethods } from './consts'; -import { LoadConnector, LogtoConnector } from './types'; +import type { LoadConnector, LogtoConnector } from './types'; import { getConnectorConfig, readUrl, validateConnectorModule } from './utilities'; // eslint-disable-next-line @silverhand/fp/no-let diff --git a/packages/core/src/connectors/types.ts b/packages/core/src/connectors/types.ts index 22a375dcd..95412a334 100644 --- a/packages/core/src/connectors/types.ts +++ b/packages/core/src/connectors/types.ts @@ -1,5 +1,5 @@ -import { AllConnector } from '@logto/connector-kit'; -import { Connector, PasscodeType } from '@logto/schemas'; +import type { AllConnector } from '@logto/connector-kit'; +import type { Connector, PasscodeType } from '@logto/schemas'; import { z } from 'zod'; export { ConnectorType } from '@logto/schemas'; diff --git a/packages/core/src/connectors/utilities/index.test.ts b/packages/core/src/connectors/utilities/index.test.ts index 184c88109..aaad17d9e 100644 --- a/packages/core/src/connectors/utilities/index.test.ts +++ b/packages/core/src/connectors/utilities/index.test.ts @@ -1,4 +1,4 @@ -import { Connector } from '@logto/schemas'; +import type { Connector } from '@logto/schemas'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/connectors/utilities/index.ts b/packages/core/src/connectors/utilities/index.ts index 52f4bb4ff..a8e66edda 100644 --- a/packages/core/src/connectors/utilities/index.ts +++ b/packages/core/src/connectors/utilities/index.ts @@ -2,12 +2,8 @@ import { existsSync } from 'fs'; import { readFile } from 'fs/promises'; import path from 'path'; -import { - BaseConnector, - ConnectorError, - ConnectorErrorCodes, - ConnectorType, -} from '@logto/connector-kit'; +import type { BaseConnector } from '@logto/connector-kit'; +import { ConnectorError, ConnectorErrorCodes, ConnectorType } from '@logto/connector-kit'; import RequestError from '@/errors/RequestError'; import { findAllConnectors } from '@/queries/connector'; diff --git a/packages/core/src/database/find-entity-by-id.ts b/packages/core/src/database/find-entity-by-id.ts index 0ed5acbcc..25a9f8927 100644 --- a/packages/core/src/database/find-entity-by-id.ts +++ b/packages/core/src/database/find-entity-by-id.ts @@ -1,4 +1,4 @@ -import { SchemaLike, GeneratedSchema } from '@logto/schemas'; +import type { SchemaLike, GeneratedSchema } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import { sql, NotFoundError } from 'slonik'; diff --git a/packages/core/src/database/insert-into.test.ts b/packages/core/src/database/insert-into.test.ts index 93994ccfc..4622dc807 100644 --- a/packages/core/src/database/insert-into.test.ts +++ b/packages/core/src/database/insert-into.test.ts @@ -1,4 +1,5 @@ -import { CreateUser, Users } from '@logto/schemas'; +import type { CreateUser } from '@logto/schemas'; +import { Users } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import decamelize from 'decamelize'; diff --git a/packages/core/src/database/insert-into.ts b/packages/core/src/database/insert-into.ts index 2e7eb61bf..b2604d486 100644 --- a/packages/core/src/database/insert-into.ts +++ b/packages/core/src/database/insert-into.ts @@ -1,13 +1,14 @@ -import { GeneratedSchema, SchemaLike } from '@logto/schemas'; +import type { GeneratedSchema, SchemaLike } from '@logto/schemas'; +import type { OmitAutoSetFields } from '@logto/shared'; import { - OmitAutoSetFields, convertToIdentifiers, excludeAutoSetFields, convertToPrimitiveOrSql, conditionalSql, } from '@logto/shared'; import { has } from '@silverhand/essentials'; -import { IdentifierSqlToken, sql } from 'slonik'; +import type { IdentifierSqlToken } from 'slonik'; +import { sql } from 'slonik'; import envSet from '@/env-set'; import { InsertionError } from '@/errors/SlonikError'; diff --git a/packages/core/src/database/row-count.ts b/packages/core/src/database/row-count.ts index 56b705adc..5a1b40c27 100644 --- a/packages/core/src/database/row-count.ts +++ b/packages/core/src/database/row-count.ts @@ -1,4 +1,5 @@ -import { IdentifierSqlToken, sql } from 'slonik'; +import type { IdentifierSqlToken } from 'slonik'; +import { sql } from 'slonik'; import envSet from '@/env-set'; diff --git a/packages/core/src/database/update-where.test.ts b/packages/core/src/database/update-where.test.ts index 16bd9b6f5..ff5bae6b9 100644 --- a/packages/core/src/database/update-where.test.ts +++ b/packages/core/src/database/update-where.test.ts @@ -1,5 +1,6 @@ -import { CreateUser, Users, Applications, User } from '@logto/schemas'; -import { UpdateWhereData } from '@logto/shared'; +import type { CreateUser, User } from '@logto/schemas'; +import { Users, Applications } from '@logto/schemas'; +import type { UpdateWhereData } from '@logto/shared'; import envSet from '@/env-set'; import { UpdateError } from '@/errors/SlonikError'; diff --git a/packages/core/src/database/update-where.ts b/packages/core/src/database/update-where.ts index b8aa0ef78..62f385900 100644 --- a/packages/core/src/database/update-where.ts +++ b/packages/core/src/database/update-where.ts @@ -1,11 +1,8 @@ -import { SchemaLike, GeneratedSchema } from '@logto/schemas'; -import { - UpdateWhereData, - convertToIdentifiers, - convertToPrimitiveOrSql, - conditionalSql, -} from '@logto/shared'; -import { notFalsy, Truthy } from '@silverhand/essentials'; +import type { SchemaLike, GeneratedSchema } from '@logto/schemas'; +import type { UpdateWhereData } from '@logto/shared'; +import { convertToIdentifiers, convertToPrimitiveOrSql, conditionalSql } from '@logto/shared'; +import type { Truthy } from '@silverhand/essentials'; +import { notFalsy } from '@silverhand/essentials'; import { sql } from 'slonik'; import envSet from '@/env-set'; diff --git a/packages/core/src/env-set/check-alteration-state.ts b/packages/core/src/env-set/check-alteration-state.ts index 3125a99b0..3314af97f 100644 --- a/packages/core/src/env-set/check-alteration-state.ts +++ b/packages/core/src/env-set/check-alteration-state.ts @@ -1,6 +1,6 @@ import { getUndeployedAlterations } from '@logto/cli/lib/commands/database/alteration'; import chalk from 'chalk'; -import { DatabasePool } from 'slonik'; +import type { DatabasePool } from 'slonik'; export const checkAlterationState = async (pool: DatabasePool) => { const alterations = await getUndeployedAlterations(pool); diff --git a/packages/core/src/env-set/index.ts b/packages/core/src/env-set/index.ts index 85b161551..862afecb6 100644 --- a/packages/core/src/env-set/index.ts +++ b/packages/core/src/env-set/index.ts @@ -1,5 +1,6 @@ -import { getEnv, getEnvAsStringArray, Optional } from '@silverhand/essentials'; -import { DatabasePool } from 'slonik'; +import type { Optional } from '@silverhand/essentials'; +import { getEnv, getEnvAsStringArray } from '@silverhand/essentials'; +import type { DatabasePool } from 'slonik'; import { getOidcConfigs } from '@/lib/logto-config'; import { appendPath } from '@/utils/url'; diff --git a/packages/core/src/env-set/oidc.ts b/packages/core/src/env-set/oidc.ts index af62f079f..1df120cec 100644 --- a/packages/core/src/env-set/oidc.ts +++ b/packages/core/src/env-set/oidc.ts @@ -1,6 +1,7 @@ import crypto from 'crypto'; -import { LogtoOidcConfigKey, LogtoOidcConfigType } from '@logto/schemas'; +import type { LogtoOidcConfigType } from '@logto/schemas'; +import { LogtoOidcConfigKey } from '@logto/schemas'; import { createLocalJWKSet } from 'jose'; import { exportJWK } from '@/utils/jwks'; diff --git a/packages/core/src/errors/RequestError/index.ts b/packages/core/src/errors/RequestError/index.ts index 708b0d55f..9325ecb92 100644 --- a/packages/core/src/errors/RequestError/index.ts +++ b/packages/core/src/errors/RequestError/index.ts @@ -1,6 +1,7 @@ -import { LogtoErrorCode, LogtoErrorI18nKey } from '@logto/phrases'; -import { RequestErrorBody, RequestErrorMetadata } from '@logto/schemas'; -import { conditional, Optional } from '@silverhand/essentials'; +import type { LogtoErrorCode, LogtoErrorI18nKey } from '@logto/phrases'; +import type { RequestErrorBody, RequestErrorMetadata } from '@logto/schemas'; +import type { Optional } from '@silverhand/essentials'; +import { conditional } from '@silverhand/essentials'; import i18next from 'i18next'; import pick from 'lodash.pick'; import { ZodError } from 'zod'; diff --git a/packages/core/src/errors/RequestError/request-error.test.ts b/packages/core/src/errors/RequestError/request-error.test.ts index 9e2529c63..b23533d01 100644 --- a/packages/core/src/errors/RequestError/request-error.test.ts +++ b/packages/core/src/errors/RequestError/request-error.test.ts @@ -1,4 +1,4 @@ -import { LogtoErrorI18nKey } from '@logto/phrases'; +import type { LogtoErrorI18nKey } from '@logto/phrases'; import i18next from 'i18next'; import initI18n from '@/i18n/init'; diff --git a/packages/core/src/errors/SlonikError/index.ts b/packages/core/src/errors/SlonikError/index.ts index af0573ce2..96fd5300e 100644 --- a/packages/core/src/errors/SlonikError/index.ts +++ b/packages/core/src/errors/SlonikError/index.ts @@ -1,5 +1,5 @@ -import { SchemaLike, GeneratedSchema } from '@logto/schemas'; -import { OmitAutoSetFields, UpdateWhereData } from '@logto/shared'; +import type { SchemaLike, GeneratedSchema } from '@logto/schemas'; +import type { OmitAutoSetFields, UpdateWhereData } from '@logto/shared'; import { SlonikError } from 'slonik'; export class DeletionError extends SlonikError { diff --git a/packages/core/src/i18n/detect-language.test.ts b/packages/core/src/i18n/detect-language.test.ts index 4039f0cc6..d16a1d30f 100644 --- a/packages/core/src/i18n/detect-language.test.ts +++ b/packages/core/src/i18n/detect-language.test.ts @@ -1,5 +1,5 @@ import { createMockContext } from '@shopify/jest-koa-mocks'; -import { ParameterizedContext } from 'koa'; +import type { ParameterizedContext } from 'koa'; import detectLanguage from './detect-language'; diff --git a/packages/core/src/i18n/detect-language.ts b/packages/core/src/i18n/detect-language.ts index 1b13d3b2e..66a13650a 100644 --- a/packages/core/src/i18n/detect-language.ts +++ b/packages/core/src/i18n/detect-language.ts @@ -1,8 +1,9 @@ -import { IncomingHttpHeaders } from 'http'; +import type { IncomingHttpHeaders } from 'http'; -import { Optional, normalizeValueToStringArray } from '@silverhand/essentials'; -import { ParameterizedContext } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { Optional } from '@silverhand/essentials'; +import { normalizeValueToStringArray } from '@silverhand/essentials'; +import type { ParameterizedContext } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; /** * Resolve language and its q value from string. diff --git a/packages/core/src/include.d/koa-body.d.ts b/packages/core/src/include.d/koa-body.d.ts index 3f6a186b4..3747a6ec7 100644 --- a/packages/core/src/include.d/koa-body.d.ts +++ b/packages/core/src/include.d/koa-body.d.ts @@ -1,6 +1,6 @@ declare module 'koa-body' { - import { MiddlewareType } from 'koa'; - import { IKoaBodyOptions } from 'node_modules/koa-body'; + import type { MiddlewareType } from 'koa'; + import type { IKoaBodyOptions } from 'node_modules/koa-body'; declare function koaBody< StateT = Record, diff --git a/packages/core/src/include.d/koa-router.d.ts b/packages/core/src/include.d/koa-router.d.ts index 8dd572718..0b87dc207 100644 --- a/packages/core/src/include.d/koa-router.d.ts +++ b/packages/core/src/include.d/koa-router.d.ts @@ -23,7 +23,7 @@ declare module 'koa-router' { =============================================== */ - import * as Koa from 'koa'; + import type * as Koa from 'koa'; declare namespace Router { export interface IRouterOptions { diff --git a/packages/core/src/include.d/koa.d.ts b/packages/core/src/include.d/koa.d.ts index 75ce02c14..8a5bcad10 100644 --- a/packages/core/src/include.d/koa.d.ts +++ b/packages/core/src/include.d/koa.d.ts @@ -1,4 +1,4 @@ -import { DefaultState, DefaultContext, ParameterizedContext, BaseRequest } from 'koa'; +import type { DefaultState, DefaultContext, ParameterizedContext, BaseRequest } from 'koa'; declare module 'koa' { // Have to do this patch since `compose.Middleware` returns `any`. diff --git a/packages/core/src/include.d/oidc-provider.d.ts b/packages/core/src/include.d/oidc-provider.d.ts index f905f348f..7f920b0f0 100644 --- a/packages/core/src/include.d/oidc-provider.d.ts +++ b/packages/core/src/include.d/oidc-provider.d.ts @@ -1,4 +1,4 @@ -import { CustomClientMetadata } from '@logto/schemas'; +import type { CustomClientMetadata } from '@logto/schemas'; declare module 'oidc-provider' { export interface AllClientMetadata extends CustomClientMetadata {} diff --git a/packages/core/src/include.d/slonik-interceptor-preset.d.ts b/packages/core/src/include.d/slonik-interceptor-preset.d.ts index 5e24372aa..778cb40c0 100644 --- a/packages/core/src/include.d/slonik-interceptor-preset.d.ts +++ b/packages/core/src/include.d/slonik-interceptor-preset.d.ts @@ -1,5 +1,5 @@ declare module 'slonik-interceptor-preset' { - import { Interceptor } from 'slonik'; + import type { Interceptor } from 'slonik'; export const createInterceptors: (config?: { benchmarkQueries: boolean; diff --git a/packages/core/src/lib/__mocks__/logto-config.ts b/packages/core/src/lib/__mocks__/logto-config.ts index 9b5a47459..e180d0440 100644 --- a/packages/core/src/lib/__mocks__/logto-config.ts +++ b/packages/core/src/lib/__mocks__/logto-config.ts @@ -1,6 +1,7 @@ import { generateKeyPairSync } from 'crypto'; -import { LogtoOidcConfigKey, LogtoOidcConfigType } from '@logto/schemas'; +import type { LogtoOidcConfigType } from '@logto/schemas'; +import { LogtoOidcConfigKey } from '@logto/schemas'; const { privateKey } = generateKeyPairSync('rsa', { modulusLength: 4096, diff --git a/packages/core/src/lib/logto-config.ts b/packages/core/src/lib/logto-config.ts index 56e516024..d43646c74 100644 --- a/packages/core/src/lib/logto-config.ts +++ b/packages/core/src/lib/logto-config.ts @@ -1,7 +1,8 @@ import { getRowsByKeys } from '@logto/cli/lib/queries/logto-config'; -import { logtoOidcConfigGuard, LogtoOidcConfigKey, LogtoOidcConfigType } from '@logto/schemas'; +import type { LogtoOidcConfigType } from '@logto/schemas'; +import { logtoOidcConfigGuard, LogtoOidcConfigKey } from '@logto/schemas'; import chalk from 'chalk'; -import { DatabasePool, DatabaseTransactionConnection } from 'slonik'; +import type { DatabasePool, DatabaseTransactionConnection } from 'slonik'; import { z, ZodError } from 'zod'; export const getOidcConfigs = async ( diff --git a/packages/core/src/lib/passcode.test.ts b/packages/core/src/lib/passcode.test.ts index b3dd1b3f2..254ecd19c 100644 --- a/packages/core/src/lib/passcode.test.ts +++ b/packages/core/src/lib/passcode.test.ts @@ -1,5 +1,6 @@ import { ConnectorType } from '@logto/connector-kit'; -import { Passcode, PasscodeType } from '@logto/schemas'; +import type { Passcode } from '@logto/schemas'; +import { PasscodeType } from '@logto/schemas'; import { any } from 'zod'; import { mockConnector, mockMetadata } from '@/__mocks__'; diff --git a/packages/core/src/lib/passcode.ts b/packages/core/src/lib/passcode.ts index f2a429d0d..1cfe0c1cd 100644 --- a/packages/core/src/lib/passcode.ts +++ b/packages/core/src/lib/passcode.ts @@ -1,15 +1,11 @@ -import { - messageTypesGuard, - ConnectorError, - ConnectorErrorCodes, - EmailConnector, - SmsConnector, -} from '@logto/connector-kit'; -import { Passcode, PasscodeType } from '@logto/schemas'; +import type { EmailConnector, SmsConnector } from '@logto/connector-kit'; +import { messageTypesGuard, ConnectorError, ConnectorErrorCodes } from '@logto/connector-kit'; +import type { Passcode, PasscodeType } from '@logto/schemas'; import { customAlphabet, nanoid } from 'nanoid'; import { getLogtoConnectors } from '@/connectors'; -import { ConnectorType, LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; +import { ConnectorType } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import { consumePasscode, diff --git a/packages/core/src/lib/phrase.test.ts b/packages/core/src/lib/phrase.test.ts index ee1e92a24..4a0553988 100644 --- a/packages/core/src/lib/phrase.test.ts +++ b/packages/core/src/lib/phrase.test.ts @@ -1,5 +1,5 @@ import resource from '@logto/phrases-ui'; -import { CustomPhrase } from '@logto/schemas'; +import type { CustomPhrase } from '@logto/schemas'; import deepmerge from 'deepmerge'; import { diff --git a/packages/core/src/lib/phrase.ts b/packages/core/src/lib/phrase.ts index 04175a040..ab674e2ab 100644 --- a/packages/core/src/lib/phrase.ts +++ b/packages/core/src/lib/phrase.ts @@ -1,5 +1,6 @@ -import resource, { isBuiltInLanguageTag, LocalePhrase } from '@logto/phrases-ui'; -import { CustomPhrase } from '@logto/schemas'; +import type { LocalePhrase } from '@logto/phrases-ui'; +import resource, { isBuiltInLanguageTag } from '@logto/phrases-ui'; +import type { CustomPhrase } from '@logto/schemas'; import cleanDeep from 'clean-deep'; import deepmerge from 'deepmerge'; diff --git a/packages/core/src/lib/session.ts b/packages/core/src/lib/session.ts index ada10f4af..e55d13001 100644 --- a/packages/core/src/lib/session.ts +++ b/packages/core/src/lib/session.ts @@ -1,5 +1,5 @@ -import { Context } from 'koa'; -import { InteractionResults, Provider } from 'oidc-provider'; +import type { Context } from 'koa'; +import type { InteractionResults, Provider } from 'oidc-provider'; import { findUserById, updateUserById } from '@/queries/user'; diff --git a/packages/core/src/lib/sign-in-experience.test.ts b/packages/core/src/lib/sign-in-experience.test.ts index 4b2e398e6..f8f6a5caf 100644 --- a/packages/core/src/lib/sign-in-experience.test.ts +++ b/packages/core/src/lib/sign-in-experience.test.ts @@ -1,4 +1,4 @@ -import { LanguageTag } from '@logto/language-kit'; +import type { LanguageTag } from '@logto/language-kit'; import { builtInLanguages } from '@logto/phrases-ui'; import { BrandingStyle, SignInMethodState, ConnectorType } from '@logto/schemas'; diff --git a/packages/core/src/lib/sign-in-experience.ts b/packages/core/src/lib/sign-in-experience.ts index 321c15122..575c323d0 100644 --- a/packages/core/src/lib/sign-in-experience.ts +++ b/packages/core/src/lib/sign-in-experience.ts @@ -1,15 +1,10 @@ import { builtInLanguages } from '@logto/phrases-ui'; -import { - Branding, - BrandingStyle, - LanguageInfo, - SignInMethods, - SignInMethodState, - TermsOfUse, -} from '@logto/schemas'; -import { Optional } from '@silverhand/essentials'; +import type { Branding, LanguageInfo, SignInMethods, TermsOfUse } from '@logto/schemas'; +import { BrandingStyle, SignInMethodState } from '@logto/schemas'; +import type { Optional } from '@silverhand/essentials'; -import { ConnectorType, LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; +import { ConnectorType } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import { findAllCustomLanguageTags } from '@/queries/custom-phrase'; import assertThat from '@/utils/assert-that'; diff --git a/packages/core/src/lib/social.ts b/packages/core/src/lib/social.ts index ed96812f6..cbbca6a9f 100644 --- a/packages/core/src/lib/social.ts +++ b/packages/core/src/lib/social.ts @@ -1,10 +1,12 @@ -import { ConnectorType, User } from '@logto/schemas'; -import { Nullable } from '@silverhand/essentials'; -import { InteractionResults } from 'oidc-provider'; +import type { User } from '@logto/schemas'; +import { ConnectorType } from '@logto/schemas'; +import type { Nullable } from '@silverhand/essentials'; +import type { InteractionResults } from 'oidc-provider'; import { z } from 'zod'; import { getLogtoConnectorById } from '@/connectors'; -import { SocialUserInfo, socialUserInfoGuard } from '@/connectors/types'; +import type { SocialUserInfo } from '@/connectors/types'; +import { socialUserInfoGuard } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import { findUserByEmail, diff --git a/packages/core/src/lib/user.ts b/packages/core/src/lib/user.ts index 20004f744..41250c2cb 100644 --- a/packages/core/src/lib/user.ts +++ b/packages/core/src/lib/user.ts @@ -1,4 +1,5 @@ -import { User, CreateUser, Users, UsersPasswordEncryptionMethod } from '@logto/schemas'; +import type { User, CreateUser } from '@logto/schemas'; +import { Users, UsersPasswordEncryptionMethod } from '@logto/schemas'; import { buildIdGenerator } from '@logto/shared'; import { argon2Verify } from 'hash-wasm'; import pRetry from 'p-retry'; diff --git a/packages/core/src/middleware/koa-auth.test.ts b/packages/core/src/middleware/koa-auth.test.ts index 3e3ec6e48..b473f46df 100644 --- a/packages/core/src/middleware/koa-auth.test.ts +++ b/packages/core/src/middleware/koa-auth.test.ts @@ -1,13 +1,14 @@ import { UserRole } from '@logto/schemas'; import { jwtVerify } from 'jose'; -import { Context } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { Context } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import envSet from '@/env-set'; import RequestError from '@/errors/RequestError'; import { createContextWithRouteParameters } from '@/utils/test-utils'; -import koaAuth, { WithAuthContext } from './koa-auth'; +import type { WithAuthContext } from './koa-auth'; +import koaAuth from './koa-auth'; jest.mock('jose', () => ({ jwtVerify: jest.fn(() => ({ payload: { sub: 'fooUser', role_names: ['admin'] } })), diff --git a/packages/core/src/middleware/koa-auth.ts b/packages/core/src/middleware/koa-auth.ts index 48342fadf..eda71e3bb 100644 --- a/packages/core/src/middleware/koa-auth.ts +++ b/packages/core/src/middleware/koa-auth.ts @@ -1,11 +1,11 @@ -import { IncomingHttpHeaders } from 'http'; +import type { IncomingHttpHeaders } from 'http'; import { UserRole } from '@logto/schemas'; import { managementResource } from '@logto/schemas/lib/seeds'; import { conditional } from '@silverhand/essentials'; import { jwtVerify } from 'jose'; -import { MiddlewareType, Request } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { MiddlewareType, Request } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import envSet from '@/env-set'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-check-demo-app.ts b/packages/core/src/middleware/koa-check-demo-app.ts index 2b93573a5..d407d6c15 100644 --- a/packages/core/src/middleware/koa-check-demo-app.ts +++ b/packages/core/src/middleware/koa-check-demo-app.ts @@ -1,5 +1,5 @@ import { demoAppApplicationId } from '@logto/schemas/lib/seeds'; -import { MiddlewareType } from 'koa'; +import type { MiddlewareType } from 'koa'; import { findApplicationById } from '@/queries/application'; diff --git a/packages/core/src/middleware/koa-connector-error-handler.ts b/packages/core/src/middleware/koa-connector-error-handler.ts index 355524634..2bcaa715d 100644 --- a/packages/core/src/middleware/koa-connector-error-handler.ts +++ b/packages/core/src/middleware/koa-connector-error-handler.ts @@ -1,6 +1,6 @@ import { ConnectorError, ConnectorErrorCodes } from '@logto/connector-kit'; import { conditional } from '@silverhand/essentials'; -import { Middleware } from 'koa'; +import type { Middleware } from 'koa'; import { z } from 'zod'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-error-handler.ts b/packages/core/src/middleware/koa-error-handler.ts index 7623674ac..19f9f78b8 100644 --- a/packages/core/src/middleware/koa-error-handler.ts +++ b/packages/core/src/middleware/koa-error-handler.ts @@ -1,5 +1,6 @@ -import { RequestErrorBody } from '@logto/schemas'; -import { HttpError, Middleware } from 'koa'; +import type { RequestErrorBody } from '@logto/schemas'; +import type { Middleware } from 'koa'; +import { HttpError } from 'koa'; import envSet from '@/env-set'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-guard.ts b/packages/core/src/middleware/koa-guard.ts index 2b319480a..af8efe14a 100644 --- a/packages/core/src/middleware/koa-guard.ts +++ b/packages/core/src/middleware/koa-guard.ts @@ -1,8 +1,9 @@ -import { has, Optional } from '@silverhand/essentials'; -import { MiddlewareType } from 'koa'; +import type { Optional } from '@silverhand/essentials'; +import { has } from '@silverhand/essentials'; +import type { MiddlewareType } from 'koa'; import koaBody from 'koa-body'; -import { IMiddleware, IRouterParamContext } from 'koa-router'; -import { ZodType } from 'zod'; +import type { IMiddleware, IRouterParamContext } from 'koa-router'; +import type { ZodType } from 'zod'; import envSet from '@/env-set'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-i18next.ts b/packages/core/src/middleware/koa-i18next.ts index 025c2f035..304f83b8b 100644 --- a/packages/core/src/middleware/koa-i18next.ts +++ b/packages/core/src/middleware/koa-i18next.ts @@ -1,6 +1,6 @@ import i18next from 'i18next'; -import { MiddlewareType } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { MiddlewareType } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import detectLanguage from '@/i18n/detect-language'; diff --git a/packages/core/src/middleware/koa-log-session.test.ts b/packages/core/src/middleware/koa-log-session.test.ts index 8ebb2fc5d..c652222b8 100644 --- a/packages/core/src/middleware/koa-log-session.test.ts +++ b/packages/core/src/middleware/koa-log-session.test.ts @@ -1,6 +1,6 @@ import { Provider } from 'oidc-provider'; -import { WithLogContext } from '@/middleware/koa-log'; +import type { WithLogContext } from '@/middleware/koa-log'; import koaLogSession from '@/middleware/koa-log-session'; import { createContextWithRouteParameters } from '@/utils/test-utils'; diff --git a/packages/core/src/middleware/koa-log-session.ts b/packages/core/src/middleware/koa-log-session.ts index 0bc931c91..c65ac48cd 100644 --- a/packages/core/src/middleware/koa-log-session.ts +++ b/packages/core/src/middleware/koa-log-session.ts @@ -1,7 +1,7 @@ -import { MiddlewareType } from 'koa'; -import { Provider } from 'oidc-provider'; +import type { MiddlewareType } from 'koa'; +import type { Provider } from 'oidc-provider'; -import { WithLogContext } from '@/middleware/koa-log'; +import type { WithLogContext } from '@/middleware/koa-log'; export default function koaLogSession( provider: Provider diff --git a/packages/core/src/middleware/koa-log.test.ts b/packages/core/src/middleware/koa-log.test.ts index 181593f44..d596d4d87 100644 --- a/packages/core/src/middleware/koa-log.test.ts +++ b/packages/core/src/middleware/koa-log.test.ts @@ -1,11 +1,13 @@ -import { LogPayload, LogResult } from '@logto/schemas'; +import type { LogPayload } from '@logto/schemas'; +import { LogResult } from '@logto/schemas'; import i18next from 'i18next'; import RequestError from '@/errors/RequestError'; import { insertLog } from '@/queries/log'; import { createContextWithRouteParameters } from '@/utils/test-utils'; -import koaLog, { WithLogContext } from './koa-log'; +import type { WithLogContext } from './koa-log'; +import koaLog from './koa-log'; const nanoIdMock = 'mockId'; diff --git a/packages/core/src/middleware/koa-log.ts b/packages/core/src/middleware/koa-log.ts index 59d8e0232..e5c88ef9d 100644 --- a/packages/core/src/middleware/koa-log.ts +++ b/packages/core/src/middleware/koa-log.ts @@ -1,7 +1,8 @@ -import { BaseLogPayload, LogPayload, LogPayloads, LogResult, LogType } from '@logto/schemas'; +import type { BaseLogPayload, LogPayload, LogPayloads, LogType } from '@logto/schemas'; +import { LogResult } from '@logto/schemas'; import deepmerge from 'deepmerge'; -import { MiddlewareType } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { MiddlewareType } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import pick from 'lodash.pick'; import { nanoid } from 'nanoid'; diff --git a/packages/core/src/middleware/koa-oidc-error-handler.ts b/packages/core/src/middleware/koa-oidc-error-handler.ts index f3a4b5766..9d3859d2a 100644 --- a/packages/core/src/middleware/koa-oidc-error-handler.ts +++ b/packages/core/src/middleware/koa-oidc-error-handler.ts @@ -1,6 +1,6 @@ -import { LogtoErrorCode } from '@logto/phrases'; +import type { LogtoErrorCode } from '@logto/phrases'; import decamelize from 'decamelize'; -import { Middleware } from 'koa'; +import type { Middleware } from 'koa'; import { errors } from 'oidc-provider'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-pagination.test.ts b/packages/core/src/middleware/koa-pagination.test.ts index 3bf55ae87..d4f931f5f 100644 --- a/packages/core/src/middleware/koa-pagination.test.ts +++ b/packages/core/src/middleware/koa-pagination.test.ts @@ -1,7 +1,8 @@ import { createMockContext } from '@shopify/jest-koa-mocks'; -import { Context } from 'koa'; +import type { Context } from 'koa'; -import koaPagination, { WithPaginationContext } from './koa-pagination'; +import type { WithPaginationContext } from './koa-pagination'; +import koaPagination from './koa-pagination'; const next = jest.fn(); const setHeader = jest.fn(); diff --git a/packages/core/src/middleware/koa-pagination.ts b/packages/core/src/middleware/koa-pagination.ts index 552f5277c..0a2878072 100644 --- a/packages/core/src/middleware/koa-pagination.ts +++ b/packages/core/src/middleware/koa-pagination.ts @@ -1,5 +1,5 @@ -import { MiddlewareType } from 'koa'; -import { IMiddleware } from 'koa-router'; +import type { MiddlewareType } from 'koa'; +import type { IMiddleware } from 'koa-router'; import { number } from 'zod'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-root-proxy.ts b/packages/core/src/middleware/koa-root-proxy.ts index 508fe8f77..2034722b2 100644 --- a/packages/core/src/middleware/koa-root-proxy.ts +++ b/packages/core/src/middleware/koa-root-proxy.ts @@ -1,5 +1,5 @@ -import { MiddlewareType } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { MiddlewareType } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import envSet from '@/env-set'; import { appendPath } from '@/utils/url'; diff --git a/packages/core/src/middleware/koa-serve-static.ts b/packages/core/src/middleware/koa-serve-static.ts index 973add6d1..62b4ddf67 100644 --- a/packages/core/src/middleware/koa-serve-static.ts +++ b/packages/core/src/middleware/koa-serve-static.ts @@ -3,7 +3,7 @@ import path from 'path'; import buildDebug from 'debug'; -import { MiddlewareType } from 'koa'; +import type { MiddlewareType } from 'koa'; import send from 'koa-send'; import assertThat from '@/utils/assert-that'; diff --git a/packages/core/src/middleware/koa-slonik-error-handler.ts b/packages/core/src/middleware/koa-slonik-error-handler.ts index 2b516aac1..961f6901c 100644 --- a/packages/core/src/middleware/koa-slonik-error-handler.ts +++ b/packages/core/src/middleware/koa-slonik-error-handler.ts @@ -19,8 +19,8 @@ * (reference)[https://github.com/gajus/slonik#error-handling] */ -import { SchemaLike } from '@logto/schemas'; -import { Middleware } from 'koa'; +import type { SchemaLike } from '@logto/schemas'; +import type { Middleware } from 'koa'; import { SlonikError, NotFoundError } from 'slonik'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/middleware/koa-spa-proxy.ts b/packages/core/src/middleware/koa-spa-proxy.ts index 7fda0f514..4eb3e4f97 100644 --- a/packages/core/src/middleware/koa-spa-proxy.ts +++ b/packages/core/src/middleware/koa-spa-proxy.ts @@ -1,9 +1,9 @@ import fs from 'fs/promises'; import path from 'path'; -import { MiddlewareType } from 'koa'; +import type { MiddlewareType } from 'koa'; import proxy from 'koa-proxies'; -import { IRouterParamContext } from 'koa-router'; +import type { IRouterParamContext } from 'koa-router'; import envSet, { MountedApps } from '@/env-set'; import serveStatic from '@/middleware/koa-serve-static'; diff --git a/packages/core/src/middleware/koa-spa-session-guard.ts b/packages/core/src/middleware/koa-spa-session-guard.ts index 885a0c7e2..dbe66c796 100644 --- a/packages/core/src/middleware/koa-spa-session-guard.ts +++ b/packages/core/src/middleware/koa-spa-session-guard.ts @@ -1,6 +1,6 @@ -import { MiddlewareType } from 'koa'; -import { IRouterParamContext } from 'koa-router'; -import { Provider } from 'oidc-provider'; +import type { MiddlewareType } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; +import type { Provider } from 'oidc-provider'; import envSet from '@/env-set'; import { appendPath } from '@/utils/url'; diff --git a/packages/core/src/middleware/koa-welcome-proxy.ts b/packages/core/src/middleware/koa-welcome-proxy.ts index 98b425524..751535e5e 100644 --- a/packages/core/src/middleware/koa-welcome-proxy.ts +++ b/packages/core/src/middleware/koa-welcome-proxy.ts @@ -1,5 +1,5 @@ -import { MiddlewareType } from 'koa'; -import { IRouterParamContext } from 'koa-router'; +import type { MiddlewareType } from 'koa'; +import type { IRouterParamContext } from 'koa-router'; import envSet from '@/env-set'; import { hasActiveUsers } from '@/queries/user'; diff --git a/packages/core/src/oidc/adapter.test.ts b/packages/core/src/oidc/adapter.test.ts index abbacf073..7cb9c54c4 100644 --- a/packages/core/src/oidc/adapter.test.ts +++ b/packages/core/src/oidc/adapter.test.ts @@ -1,4 +1,4 @@ -import { Application } from '@logto/schemas'; +import type { Application } from '@logto/schemas'; import snakecaseKeys from 'snakecase-keys'; import { mockApplication } from '@/__mocks__'; diff --git a/packages/core/src/oidc/adapter.ts b/packages/core/src/oidc/adapter.ts index b1467e7d7..5c8426268 100644 --- a/packages/core/src/oidc/adapter.ts +++ b/packages/core/src/oidc/adapter.ts @@ -1,7 +1,8 @@ -import { ApplicationType, CreateApplication, OidcClientMetadata } from '@logto/schemas'; +import type { CreateApplication, OidcClientMetadata } from '@logto/schemas'; +import { ApplicationType } from '@logto/schemas'; import { adminConsoleApplicationId, demoAppApplicationId } from '@logto/schemas/lib/seeds'; import dayjs from 'dayjs'; -import { AdapterFactory, AllClientMetadata } from 'oidc-provider'; +import type { AdapterFactory, AllClientMetadata } from 'oidc-provider'; import snakecaseKeys from 'snakecase-keys'; import envSet, { MountedApps } from '@/env-set'; diff --git a/packages/core/src/oidc/init.ts b/packages/core/src/oidc/init.ts index bffe97902..57d418cdc 100644 --- a/packages/core/src/oidc/init.ts +++ b/packages/core/src/oidc/init.ts @@ -4,7 +4,7 @@ import { readFileSync } from 'fs'; import { userClaims } from '@logto/core-kit'; import { CustomClientMetadataKey } from '@logto/schemas'; -import Koa from 'koa'; +import type Koa from 'koa'; import mount from 'koa-mount'; import { Provider, errors } from 'oidc-provider'; import snakecaseKeys from 'snakecase-keys'; diff --git a/packages/core/src/oidc/scope.ts b/packages/core/src/oidc/scope.ts index fcccfc3a4..bb30565cb 100644 --- a/packages/core/src/oidc/scope.ts +++ b/packages/core/src/oidc/scope.ts @@ -1,7 +1,8 @@ -import { idTokenClaims, UserClaim, userinfoClaims, UserScope } from '@logto/core-kit'; -import { User } from '@logto/schemas'; -import { Nullable } from '@silverhand/essentials'; -import { ClaimsParameterMember } from 'oidc-provider'; +import type { UserClaim } from '@logto/core-kit'; +import { idTokenClaims, userinfoClaims, UserScope } from '@logto/core-kit'; +import type { User } from '@logto/schemas'; +import type { Nullable } from '@silverhand/essentials'; +import type { ClaimsParameterMember } from 'oidc-provider'; export const claimToUserKey: Readonly> = Object.freeze({ name: 'name', diff --git a/packages/core/src/oidc/utils.ts b/packages/core/src/oidc/utils.ts index c15a48fb3..5325099bf 100644 --- a/packages/core/src/oidc/utils.ts +++ b/packages/core/src/oidc/utils.ts @@ -1,12 +1,8 @@ -import { - ApplicationType, - CustomClientMetadata, - customClientMetadataGuard, - GrantType, - OidcClientMetadata, -} from '@logto/schemas'; +import type { CustomClientMetadata, OidcClientMetadata } from '@logto/schemas'; +import { ApplicationType, customClientMetadataGuard, GrantType } from '@logto/schemas'; import { conditional } from '@silverhand/essentials'; -import { AllClientMetadata, ClientAuthMethod, errors } from 'oidc-provider'; +import type { AllClientMetadata, ClientAuthMethod } from 'oidc-provider'; +import { errors } from 'oidc-provider'; export const getConstantClientMetadata = ( type: ApplicationType diff --git a/packages/core/src/queries/application.test.ts b/packages/core/src/queries/application.test.ts index e798f919e..e9c7baf78 100644 --- a/packages/core/src/queries/application.test.ts +++ b/packages/core/src/queries/application.test.ts @@ -6,7 +6,8 @@ import { snakeCase } from 'snake-case'; import { mockApplication } from '@/__mocks__'; import envSet from '@/env-set'; import { DeletionError } from '@/errors/SlonikError'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findTotalNumberOfApplications, diff --git a/packages/core/src/queries/application.ts b/packages/core/src/queries/application.ts index df9edae4f..afeb353f6 100644 --- a/packages/core/src/queries/application.ts +++ b/packages/core/src/queries/application.ts @@ -1,5 +1,7 @@ -import { Application, CreateApplication, Applications } from '@logto/schemas'; -import { convertToIdentifiers, OmitAutoSetFields, conditionalSql, manyRows } from '@logto/shared'; +import type { Application, CreateApplication } from '@logto/schemas'; +import { Applications } from '@logto/schemas'; +import type { OmitAutoSetFields } from '@logto/shared'; +import { convertToIdentifiers, conditionalSql, manyRows } from '@logto/shared'; import { sql } from 'slonik'; import { buildFindEntityById } from '@/database/find-entity-by-id'; diff --git a/packages/core/src/queries/connector.test.ts b/packages/core/src/queries/connector.test.ts index 549607847..bee581128 100644 --- a/packages/core/src/queries/connector.test.ts +++ b/packages/core/src/queries/connector.test.ts @@ -4,7 +4,8 @@ import { createMockPool, createMockQueryResult, sql } from 'slonik'; import { mockConnector } from '@/__mocks__'; import envSet from '@/env-set'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findAllConnectors, insertConnector, updateConnector } from './connector'; diff --git a/packages/core/src/queries/connector.ts b/packages/core/src/queries/connector.ts index f2e2bb04a..7cd81895b 100644 --- a/packages/core/src/queries/connector.ts +++ b/packages/core/src/queries/connector.ts @@ -1,4 +1,5 @@ -import { Connector, CreateConnector, Connectors } from '@logto/schemas'; +import type { Connector, CreateConnector } from '@logto/schemas'; +import { Connectors } from '@logto/schemas'; import { convertToIdentifiers, manyRows } from '@logto/shared'; import { sql } from 'slonik'; diff --git a/packages/core/src/queries/custom-phrase.ts b/packages/core/src/queries/custom-phrase.ts index 956db17a8..947e78758 100644 --- a/packages/core/src/queries/custom-phrase.ts +++ b/packages/core/src/queries/custom-phrase.ts @@ -1,4 +1,5 @@ -import { CreateCustomPhrase, CustomPhrase, CustomPhrases } from '@logto/schemas'; +import type { CreateCustomPhrase, CustomPhrase } from '@logto/schemas'; +import { CustomPhrases } from '@logto/schemas'; import { convertToIdentifiers, manyRows } from '@logto/shared'; import { sql } from 'slonik'; diff --git a/packages/core/src/queries/log.ts b/packages/core/src/queries/log.ts index 7d71247fa..9a4a3fc25 100644 --- a/packages/core/src/queries/log.ts +++ b/packages/core/src/queries/log.ts @@ -1,4 +1,5 @@ -import { CreateLog, Log, Logs, LogType } from '@logto/schemas'; +import type { CreateLog, Log, LogType } from '@logto/schemas'; +import { Logs } from '@logto/schemas'; import { conditionalSql, convertToIdentifiers } from '@logto/shared'; import { sql } from 'slonik'; diff --git a/packages/core/src/queries/oidc-model-instance.test.ts b/packages/core/src/queries/oidc-model-instance.test.ts index ed8b3347d..499f9ff85 100644 --- a/packages/core/src/queries/oidc-model-instance.test.ts +++ b/packages/core/src/queries/oidc-model-instance.test.ts @@ -1,9 +1,11 @@ -import { OidcModelInstances, CreateOidcModelInstance } from '@logto/schemas'; +import type { CreateOidcModelInstance } from '@logto/schemas'; +import { OidcModelInstances } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import { createMockPool, createMockQueryResult, sql } from 'slonik'; import envSet from '@/env-set'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { upsertInstance, diff --git a/packages/core/src/queries/oidc-model-instance.ts b/packages/core/src/queries/oidc-model-instance.ts index 91c35e591..fccbe0058 100644 --- a/packages/core/src/queries/oidc-model-instance.ts +++ b/packages/core/src/queries/oidc-model-instance.ts @@ -1,13 +1,15 @@ -import { +import type { OidcModelInstance, CreateOidcModelInstance, OidcModelInstancePayload, - OidcModelInstances, } from '@logto/schemas'; +import { OidcModelInstances } from '@logto/schemas'; import { convertToIdentifiers, convertToTimestamp } from '@logto/shared'; -import { conditional, Nullable } from '@silverhand/essentials'; +import type { Nullable } from '@silverhand/essentials'; +import { conditional } from '@silverhand/essentials'; import dayjs from 'dayjs'; -import { sql, ValueExpression } from 'slonik'; +import type { ValueExpression } from 'slonik'; +import { sql } from 'slonik'; import { buildInsertInto } from '@/database/insert-into'; import envSet from '@/env-set'; diff --git a/packages/core/src/queries/passcode.test.ts b/packages/core/src/queries/passcode.test.ts index 0c7804e83..4b833a5b9 100644 --- a/packages/core/src/queries/passcode.test.ts +++ b/packages/core/src/queries/passcode.test.ts @@ -6,7 +6,8 @@ import { snakeCase } from 'snake-case'; import { mockPasscode } from '@/__mocks__'; import envSet from '@/env-set'; import { DeletionError } from '@/errors/SlonikError'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findUnconsumedPasscodeByJtiAndType, diff --git a/packages/core/src/queries/passcode.ts b/packages/core/src/queries/passcode.ts index 701de315c..eda2b5d4b 100644 --- a/packages/core/src/queries/passcode.ts +++ b/packages/core/src/queries/passcode.ts @@ -1,4 +1,5 @@ -import { PasscodeType, Passcode, Passcodes, CreatePasscode } from '@logto/schemas'; +import type { PasscodeType, Passcode, CreatePasscode } from '@logto/schemas'; +import { Passcodes } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import { sql } from 'slonik'; diff --git a/packages/core/src/queries/resource.test.ts b/packages/core/src/queries/resource.test.ts index 626f46f6d..2db43da2c 100644 --- a/packages/core/src/queries/resource.test.ts +++ b/packages/core/src/queries/resource.test.ts @@ -5,7 +5,8 @@ import { createMockPool, createMockQueryResult, sql } from 'slonik'; import { mockResource } from '@/__mocks__'; import envSet from '@/env-set'; import { DeletionError } from '@/errors/SlonikError'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findTotalNumberOfResources, diff --git a/packages/core/src/queries/resource.ts b/packages/core/src/queries/resource.ts index 9e0ca09a6..e4ec927f2 100644 --- a/packages/core/src/queries/resource.ts +++ b/packages/core/src/queries/resource.ts @@ -1,5 +1,7 @@ -import { Resource, CreateResource, Resources } from '@logto/schemas'; -import { convertToIdentifiers, OmitAutoSetFields, conditionalSql, manyRows } from '@logto/shared'; +import type { Resource, CreateResource } from '@logto/schemas'; +import { Resources } from '@logto/schemas'; +import type { OmitAutoSetFields } from '@logto/shared'; +import { convertToIdentifiers, conditionalSql, manyRows } from '@logto/shared'; import { sql } from 'slonik'; import { buildFindEntityById } from '@/database/find-entity-by-id'; diff --git a/packages/core/src/queries/roles.test.ts b/packages/core/src/queries/roles.test.ts index 670565bae..0351c9025 100644 --- a/packages/core/src/queries/roles.test.ts +++ b/packages/core/src/queries/roles.test.ts @@ -4,7 +4,8 @@ import { createMockPool, createMockQueryResult, sql } from 'slonik'; import { mockRole } from '@/__mocks__'; import envSet from '@/env-set'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findAllRoles, findRolesByRoleNames } from './roles'; diff --git a/packages/core/src/queries/roles.ts b/packages/core/src/queries/roles.ts index af0de4fe9..bb62ca601 100644 --- a/packages/core/src/queries/roles.ts +++ b/packages/core/src/queries/roles.ts @@ -1,4 +1,5 @@ -import { Roles, Role } from '@logto/schemas'; +import type { Role } from '@logto/schemas'; +import { Roles } from '@logto/schemas'; import { convertToIdentifiers } from '@logto/shared'; import { sql } from 'slonik'; diff --git a/packages/core/src/queries/setting.test.ts b/packages/core/src/queries/setting.test.ts index 3f77ba58e..1748aeaa4 100644 --- a/packages/core/src/queries/setting.test.ts +++ b/packages/core/src/queries/setting.test.ts @@ -4,7 +4,8 @@ import { createMockPool, createMockQueryResult, sql } from 'slonik'; import { mockSetting } from '@/__mocks__'; import envSet from '@/env-set'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { defaultSettingId, getSetting, updateSetting } from './setting'; diff --git a/packages/core/src/queries/setting.ts b/packages/core/src/queries/setting.ts index 24c7610f5..a7e263a43 100644 --- a/packages/core/src/queries/setting.ts +++ b/packages/core/src/queries/setting.ts @@ -1,5 +1,6 @@ -import { Setting, CreateSetting, Settings } from '@logto/schemas'; -import { OmitAutoSetFields } from '@logto/shared'; +import type { Setting, CreateSetting } from '@logto/schemas'; +import { Settings } from '@logto/schemas'; +import type { OmitAutoSetFields } from '@logto/shared'; import { buildFindEntityById } from '@/database/find-entity-by-id'; import { buildUpdateWhere } from '@/database/update-where'; diff --git a/packages/core/src/queries/sign-in-experience.test.ts b/packages/core/src/queries/sign-in-experience.test.ts index 5573c704c..d44aaf474 100644 --- a/packages/core/src/queries/sign-in-experience.test.ts +++ b/packages/core/src/queries/sign-in-experience.test.ts @@ -2,7 +2,8 @@ import { createMockPool, createMockQueryResult } from 'slonik'; import { mockSignInExperience } from '@/__mocks__'; import envSet from '@/env-set'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findDefaultSignInExperience, updateDefaultSignInExperience } from './sign-in-experience'; diff --git a/packages/core/src/queries/sign-in-experience.ts b/packages/core/src/queries/sign-in-experience.ts index 6650fd7dd..7029d5a6d 100644 --- a/packages/core/src/queries/sign-in-experience.ts +++ b/packages/core/src/queries/sign-in-experience.ts @@ -1,4 +1,5 @@ -import { SignInExperience, CreateSignInExperience, SignInExperiences } from '@logto/schemas'; +import type { SignInExperience, CreateSignInExperience } from '@logto/schemas'; +import { SignInExperiences } from '@logto/schemas'; import { buildFindEntityById } from '@/database/find-entity-by-id'; import { buildUpdateWhere } from '@/database/update-where'; diff --git a/packages/core/src/queries/user.test.ts b/packages/core/src/queries/user.test.ts index d3473c052..22dbb24fd 100644 --- a/packages/core/src/queries/user.test.ts +++ b/packages/core/src/queries/user.test.ts @@ -5,7 +5,8 @@ import { createMockPool, createMockQueryResult, sql } from 'slonik'; import { mockUser } from '@/__mocks__'; import envSet from '@/env-set'; import { DeletionError } from '@/errors/SlonikError'; -import { expectSqlAssert, QueryType } from '@/utils/test-utils'; +import type { QueryType } from '@/utils/test-utils'; +import { expectSqlAssert } from '@/utils/test-utils'; import { findUserByUsername, diff --git a/packages/core/src/queries/user.ts b/packages/core/src/queries/user.ts index 70c3395b2..67b1bb8d2 100644 --- a/packages/core/src/queries/user.ts +++ b/packages/core/src/queries/user.ts @@ -1,5 +1,7 @@ -import { User, CreateUser, Users, UserRole } from '@logto/schemas'; -import { conditionalSql, convertToIdentifiers, OmitAutoSetFields } from '@logto/shared'; +import type { User, CreateUser } from '@logto/schemas'; +import { Users, UserRole } from '@logto/schemas'; +import type { OmitAutoSetFields } from '@logto/shared'; +import { conditionalSql, convertToIdentifiers } from '@logto/shared'; import { sql } from 'slonik'; import { buildUpdateWhere } from '@/database/update-where'; diff --git a/packages/core/src/routes/admin-user.test.ts b/packages/core/src/routes/admin-user.test.ts index fa9f1d88d..11b48627f 100644 --- a/packages/core/src/routes/admin-user.test.ts +++ b/packages/core/src/routes/admin-user.test.ts @@ -1,4 +1,5 @@ -import { CreateUser, Role, User, userInfoSelectFields } from '@logto/schemas'; +import type { CreateUser, Role, User } from '@logto/schemas'; +import { userInfoSelectFields } from '@logto/schemas'; import pick from 'lodash.pick'; import { mockUser, mockUserList, mockUserListResponse, mockUserResponse } from '@/__mocks__'; diff --git a/packages/core/src/routes/admin-user.ts b/packages/core/src/routes/admin-user.ts index 8961a6286..c62653a69 100644 --- a/packages/core/src/routes/admin-user.ts +++ b/packages/core/src/routes/admin-user.ts @@ -20,7 +20,7 @@ import { } from '@/queries/user'; import assertThat from '@/utils/assert-that'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; export default function adminUserRoutes(router: T) { router.get( diff --git a/packages/core/src/routes/application.test.ts b/packages/core/src/routes/application.test.ts index 55d758be1..73b0cad3c 100644 --- a/packages/core/src/routes/application.test.ts +++ b/packages/core/src/routes/application.test.ts @@ -1,4 +1,5 @@ -import { Application, CreateApplication, ApplicationType } from '@logto/schemas'; +import type { Application, CreateApplication } from '@logto/schemas'; +import { ApplicationType } from '@logto/schemas'; import { mockApplication } from '@/__mocks__'; import { findApplicationById } from '@/queries/application'; diff --git a/packages/core/src/routes/application.ts b/packages/core/src/routes/application.ts index e834e9698..0cac1fcc4 100644 --- a/packages/core/src/routes/application.ts +++ b/packages/core/src/routes/application.ts @@ -14,7 +14,7 @@ import { findTotalNumberOfApplications, } from '@/queries/application'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; const applicationId = buildIdGenerator(21); diff --git a/packages/core/src/routes/authn.ts b/packages/core/src/routes/authn.ts index c76c9ed03..d6a99b439 100644 --- a/packages/core/src/routes/authn.ts +++ b/packages/core/src/routes/authn.ts @@ -5,7 +5,7 @@ import { verifyBearerTokenFromRequest } from '@/middleware/koa-auth'; import koaGuard from '@/middleware/koa-guard'; import assertThat from '@/utils/assert-that'; -import { AnonymousRouter } from './types'; +import type { AnonymousRouter } from './types'; /** * Authn stands for authentication. diff --git a/packages/core/src/routes/connector.test.ts b/packages/core/src/routes/connector.test.ts index 61f4d6af6..019e9b64f 100644 --- a/packages/core/src/routes/connector.test.ts +++ b/packages/core/src/routes/connector.test.ts @@ -1,10 +1,11 @@ -import { EmailConnector, MessageTypes, SmsConnector } from '@logto/connector-kit'; +import type { EmailConnector, SmsConnector } from '@logto/connector-kit'; +import { MessageTypes } from '@logto/connector-kit'; import { ConnectorType } from '@logto/schemas'; import { any } from 'zod'; import { mockMetadata, mockConnector, mockLogtoConnectorList } from '@/__mocks__'; import { defaultConnectorMethods } from '@/connectors/consts'; -import { LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import assertThat from '@/utils/assert-that'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/connector.ts b/packages/core/src/routes/connector.ts index 1c6b57a04..0663ed4f6 100644 --- a/packages/core/src/routes/connector.ts +++ b/packages/core/src/routes/connector.ts @@ -1,16 +1,17 @@ import { MessageTypes } from '@logto/connector-kit'; import { emailRegEx, phoneRegEx } from '@logto/core-kit'; -import { arbitraryObjectGuard, ConnectorResponse, Connectors, ConnectorType } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; +import { arbitraryObjectGuard, Connectors, ConnectorType } from '@logto/schemas'; import { object, string } from 'zod'; import { getLogtoConnectorById, getLogtoConnectors } from '@/connectors'; -import { LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import koaGuard from '@/middleware/koa-guard'; import { updateConnector } from '@/queries/connector'; import assertThat from '@/utils/assert-that'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; const transpileLogtoConnector = ({ dbEntry, diff --git a/packages/core/src/routes/connector.update.test.ts b/packages/core/src/routes/connector.update.test.ts index c7ed39fcd..2bd028b16 100644 --- a/packages/core/src/routes/connector.update.test.ts +++ b/packages/core/src/routes/connector.update.test.ts @@ -7,7 +7,7 @@ import { mockLogtoConnectorList, mockLogtoConnector, } from '@/__mocks__'; -import { LogtoConnector } from '@/connectors/types'; +import type { LogtoConnector } from '@/connectors/types'; import RequestError from '@/errors/RequestError'; import { updateConnector } from '@/queries/connector'; import assertThat from '@/utils/assert-that'; diff --git a/packages/core/src/routes/custom-phrase.test.ts b/packages/core/src/routes/custom-phrase.test.ts index 35ecad9ac..e137ea7b1 100644 --- a/packages/core/src/routes/custom-phrase.test.ts +++ b/packages/core/src/routes/custom-phrase.test.ts @@ -1,5 +1,5 @@ import en from '@logto/phrases-ui/lib/locales/en'; -import { CustomPhrase, SignInExperience, Translation } from '@logto/schemas'; +import type { CustomPhrase, SignInExperience, Translation } from '@logto/schemas'; import { mockSignInExperience } from '@/__mocks__'; import { mockZhCnCustomPhrase, trTrTag, zhCnTag } from '@/__mocks__/custom-phrase'; diff --git a/packages/core/src/routes/custom-phrase.ts b/packages/core/src/routes/custom-phrase.ts index a852f5009..c32404d89 100644 --- a/packages/core/src/routes/custom-phrase.ts +++ b/packages/core/src/routes/custom-phrase.ts @@ -1,6 +1,7 @@ import { languageTagGuard } from '@logto/language-kit'; import resource from '@logto/phrases-ui'; -import { CustomPhrases, Translation, translationGuard } from '@logto/schemas'; +import type { Translation } from '@logto/schemas'; +import { CustomPhrases, translationGuard } from '@logto/schemas'; import cleanDeep from 'clean-deep'; import { object } from 'zod'; @@ -16,7 +17,7 @@ import { findDefaultSignInExperience } from '@/queries/sign-in-experience'; import assertThat from '@/utils/assert-that'; import { isValidStructure } from '@/utils/translation'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; const cleanDeepTranslation = (translation: Translation) => // Since `Translation` type actually equals `Partial`, force to cast it back to `Translation`. diff --git a/packages/core/src/routes/dashboard.ts b/packages/core/src/routes/dashboard.ts index 6f5417a4f..c708fb060 100644 --- a/packages/core/src/routes/dashboard.ts +++ b/packages/core/src/routes/dashboard.ts @@ -1,5 +1,6 @@ import { dateRegex } from '@logto/core-kit'; -import dayjs, { Dayjs } from 'dayjs'; +import type { Dayjs } from 'dayjs'; +import dayjs from 'dayjs'; import { object, string } from 'zod'; import koaGuard from '@/middleware/koa-guard'; @@ -9,7 +10,7 @@ import { } from '@/queries/log'; import { countUsers, getDailyNewUserCountsByTimeInterval } from '@/queries/user'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; const getDateString = (day: Dayjs) => day.format('YYYY-MM-DD'); diff --git a/packages/core/src/routes/init.ts b/packages/core/src/routes/init.ts index 0d4cd141d..22240e263 100644 --- a/packages/core/src/routes/init.ts +++ b/packages/core/src/routes/init.ts @@ -2,7 +2,7 @@ import { UserRole } from '@logto/schemas'; import Koa from 'koa'; import mount from 'koa-mount'; import Router from 'koa-router'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import koaAuth from '@/middleware/koa-auth'; import koaLogSession from '@/middleware/koa-log-session'; @@ -23,7 +23,7 @@ import statusRoutes from '@/routes/status'; import swaggerRoutes from '@/routes/swagger'; import wellKnownRoutes from '@/routes/well-known'; -import { AnonymousRouter, AuthedRouter } from './types'; +import type { AnonymousRouter, AuthedRouter } from './types'; const createRouters = (provider: Provider) => { const sessionRouter: AnonymousRouter = new Router(); diff --git a/packages/core/src/routes/log.test.ts b/packages/core/src/routes/log.test.ts index 9f28ce056..25c6e8d3d 100644 --- a/packages/core/src/routes/log.test.ts +++ b/packages/core/src/routes/log.test.ts @@ -1,4 +1,4 @@ -import { LogCondition } from '@/queries/log'; +import type { LogCondition } from '@/queries/log'; import logRoutes from '@/routes/log'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/log.ts b/packages/core/src/routes/log.ts index 3c1fca537..d30fd9297 100644 --- a/packages/core/src/routes/log.ts +++ b/packages/core/src/routes/log.ts @@ -5,7 +5,7 @@ import koaGuard from '@/middleware/koa-guard'; import koaPagination from '@/middleware/koa-pagination'; import { countLogs, findLogById, findLogs } from '@/queries/log'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; export default function logRoutes(router: T) { router.get( diff --git a/packages/core/src/routes/phrase.test.ts b/packages/core/src/routes/phrase.test.ts index 0e39b4e8c..faa884f0b 100644 --- a/packages/core/src/routes/phrase.test.ts +++ b/packages/core/src/routes/phrase.test.ts @@ -1,5 +1,5 @@ import zhCN from '@logto/phrases-ui/lib/locales/zh-cn'; -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { adminConsoleApplicationId, adminConsoleSignInExperience } from '@logto/schemas/lib/seeds'; import { Provider } from 'oidc-provider'; diff --git a/packages/core/src/routes/phrase.ts b/packages/core/src/routes/phrase.ts index 39fb3d5b6..fa9784a3f 100644 --- a/packages/core/src/routes/phrase.ts +++ b/packages/core/src/routes/phrase.ts @@ -1,13 +1,13 @@ import { isBuiltInLanguageTag } from '@logto/phrases-ui'; import { adminConsoleApplicationId, adminConsoleSignInExperience } from '@logto/schemas/lib/seeds'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import detectLanguage from '@/i18n/detect-language'; import { getPhrase } from '@/lib/phrase'; import { findAllCustomLanguageTags } from '@/queries/custom-phrase'; import { findDefaultSignInExperience } from '@/queries/sign-in-experience'; -import { AnonymousRouter } from './types'; +import type { AnonymousRouter } from './types'; const getLanguageInfo = async (applicationId: unknown) => { if (applicationId === adminConsoleApplicationId) { diff --git a/packages/core/src/routes/resource.test.ts b/packages/core/src/routes/resource.test.ts index bc7f40b24..e36546b94 100644 --- a/packages/core/src/routes/resource.test.ts +++ b/packages/core/src/routes/resource.test.ts @@ -1,4 +1,4 @@ -import { Resource, CreateResource } from '@logto/schemas'; +import type { Resource, CreateResource } from '@logto/schemas'; import { mockResource } from '@/__mocks__'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/resource.ts b/packages/core/src/routes/resource.ts index aab628836..aa36bbf4f 100644 --- a/packages/core/src/routes/resource.ts +++ b/packages/core/src/routes/resource.ts @@ -13,7 +13,7 @@ import { deleteResourceById, } from '@/queries/resource'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; const resourceId = buildIdGenerator(21); diff --git a/packages/core/src/routes/role.test.ts b/packages/core/src/routes/role.test.ts index cabeca569..9e9ff88fa 100644 --- a/packages/core/src/routes/role.test.ts +++ b/packages/core/src/routes/role.test.ts @@ -1,4 +1,4 @@ -import { Role } from '@logto/schemas'; +import type { Role } from '@logto/schemas'; import { mockRole } from '@/__mocks__'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/role.ts b/packages/core/src/routes/role.ts index 4342a70a8..f2e5905e8 100644 --- a/packages/core/src/routes/role.ts +++ b/packages/core/src/routes/role.ts @@ -1,6 +1,6 @@ import { findAllRoles } from '@/queries/roles'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; export default function roleRoutes(router: T) { router.get('/roles', async (ctx, next) => { diff --git a/packages/core/src/routes/session/forgot-password.test.ts b/packages/core/src/routes/session/forgot-password.test.ts index 83c2816c1..3182843c7 100644 --- a/packages/core/src/routes/session/forgot-password.test.ts +++ b/packages/core/src/routes/session/forgot-password.test.ts @@ -1,4 +1,5 @@ -import { PasscodeType, User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; +import { PasscodeType } from '@logto/schemas'; import dayjs from 'dayjs'; import { Provider } from 'oidc-provider'; diff --git a/packages/core/src/routes/session/forgot-password.ts b/packages/core/src/routes/session/forgot-password.ts index 7942bacf7..2e979d101 100644 --- a/packages/core/src/routes/session/forgot-password.ts +++ b/packages/core/src/routes/session/forgot-password.ts @@ -1,6 +1,6 @@ import { passwordRegEx } from '@logto/core-kit'; import { argon2Verify } from 'hash-wasm'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import { z } from 'zod'; import RequestError from '@/errors/RequestError'; @@ -9,7 +9,7 @@ import koaGuard from '@/middleware/koa-guard'; import { findUserById, updateUserById } from '@/queries/user'; import assertThat from '@/utils/assert-that'; -import { AnonymousRouter } from '../types'; +import type { AnonymousRouter } from '../types'; import { forgotPasswordSessionResultGuard } from './types'; import { clearVerificationResult, diff --git a/packages/core/src/routes/session/index.test.ts b/packages/core/src/routes/session/index.test.ts index 21509059d..0ab8896e3 100644 --- a/packages/core/src/routes/session/index.test.ts +++ b/packages/core/src/routes/session/index.test.ts @@ -1,4 +1,4 @@ -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; import { Provider } from 'oidc-provider'; diff --git a/packages/core/src/routes/session/index.ts b/packages/core/src/routes/session/index.ts index 54ddbc0b5..0c48b849a 100644 --- a/packages/core/src/routes/session/index.ts +++ b/packages/core/src/routes/session/index.ts @@ -1,10 +1,10 @@ import path from 'path'; -import { LogtoErrorCode } from '@logto/phrases'; +import type { LogtoErrorCode } from '@logto/phrases'; import { UserRole } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; import { conditional } from '@silverhand/essentials'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import { object, string } from 'zod'; import RequestError from '@/errors/RequestError'; @@ -12,7 +12,7 @@ import { assignInteractionResults, saveUserFirstConsentedAppId } from '@/lib/ses import { findUserById } from '@/queries/user'; import assertThat from '@/utils/assert-that'; -import { AnonymousRouter } from '../types'; +import type { AnonymousRouter } from '../types'; import forgotPasswordRoutes from './forgot-password'; import koaGuardSessionAction from './middleware/koa-guard-session-action'; import passwordlessRoutes from './passwordless'; diff --git a/packages/core/src/routes/session/middleware/koa-guard-session-action.ts b/packages/core/src/routes/session/middleware/koa-guard-session-action.ts index c37b4c8d1..6c5048fde 100644 --- a/packages/core/src/routes/session/middleware/koa-guard-session-action.ts +++ b/packages/core/src/routes/session/middleware/koa-guard-session-action.ts @@ -1,7 +1,8 @@ import { SignInMode } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; -import { MiddlewareType } from 'koa'; -import { Provider, errors } from 'oidc-provider'; +import type { MiddlewareType } from 'koa'; +import type { Provider } from 'oidc-provider'; +import { errors } from 'oidc-provider'; import RequestError from '@/errors/RequestError'; import { findDefaultSignInExperience } from '@/queries/sign-in-experience'; diff --git a/packages/core/src/routes/session/middleware/passwordless-action.ts b/packages/core/src/routes/session/middleware/passwordless-action.ts index bf54023d3..e4ba467f3 100644 --- a/packages/core/src/routes/session/middleware/passwordless-action.ts +++ b/packages/core/src/routes/session/middleware/passwordless-action.ts @@ -1,11 +1,11 @@ import { PasscodeType } from '@logto/schemas'; -import { MiddlewareType } from 'koa'; -import { Provider } from 'oidc-provider'; +import type { MiddlewareType } from 'koa'; +import type { Provider } from 'oidc-provider'; import RequestError from '@/errors/RequestError'; import { assignInteractionResults } from '@/lib/session'; import { generateUserId, insertUser } from '@/lib/user'; -import { WithLogContext } from '@/middleware/koa-log'; +import type { WithLogContext } from '@/middleware/koa-log'; import { hasUserWithPhone, hasUserWithEmail, diff --git a/packages/core/src/routes/session/passwordless.test.ts b/packages/core/src/routes/session/passwordless.test.ts index bb42252ca..b0c2688ef 100644 --- a/packages/core/src/routes/session/passwordless.test.ts +++ b/packages/core/src/routes/session/passwordless.test.ts @@ -1,5 +1,6 @@ /* eslint-disable max-lines */ -import { PasscodeType, User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; +import { PasscodeType } from '@logto/schemas'; import dayjs from 'dayjs'; import { Provider } from 'oidc-provider'; diff --git a/packages/core/src/routes/session/passwordless.ts b/packages/core/src/routes/session/passwordless.ts index b6778d60c..c038f560d 100644 --- a/packages/core/src/routes/session/passwordless.ts +++ b/packages/core/src/routes/session/passwordless.ts @@ -1,6 +1,6 @@ import { emailRegEx, phoneRegEx } from '@logto/core-kit'; import { PasscodeType } from '@logto/schemas'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import { object, string } from 'zod'; import RequestError from '@/errors/RequestError'; @@ -15,7 +15,7 @@ import { import { passcodeTypeGuard } from '@/routes/session/types'; import assertThat from '@/utils/assert-that'; -import { AnonymousRouter } from '../types'; +import type { AnonymousRouter } from '../types'; import { smsSignInAction, emailSignInAction, diff --git a/packages/core/src/routes/session/social.test.ts b/packages/core/src/routes/session/social.test.ts index 0724b771f..1751a53c7 100644 --- a/packages/core/src/routes/session/social.test.ts +++ b/packages/core/src/routes/session/social.test.ts @@ -1,5 +1,5 @@ import { ConnectorType } from '@logto/connector-kit'; -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { Provider } from 'oidc-provider'; import { mockLogtoConnectorList, mockUser } from '@/__mocks__'; diff --git a/packages/core/src/routes/session/social.ts b/packages/core/src/routes/session/social.ts index 4d6de7138..a7da77fb6 100644 --- a/packages/core/src/routes/session/social.ts +++ b/packages/core/src/routes/session/social.ts @@ -1,7 +1,7 @@ import { validateRedirectUrl } from '@logto/core-kit'; import { ConnectorType, userInfoSelectFields } from '@logto/schemas'; import pick from 'lodash.pick'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import { object, string, unknown } from 'zod'; import { getLogtoConnectorById } from '@/connectors'; @@ -23,7 +23,7 @@ import { import assertThat from '@/utils/assert-that'; import { maskUserInfo } from '@/utils/format'; -import { AnonymousRouter } from '../types'; +import type { AnonymousRouter } from '../types'; import { getRoutePrefix } from './utils'; export const registerRoute = getRoutePrefix('register', 'social'); diff --git a/packages/core/src/routes/session/username-password.test.ts b/packages/core/src/routes/session/username-password.test.ts index 4684c5eb2..71a8b9f84 100644 --- a/packages/core/src/routes/session/username-password.test.ts +++ b/packages/core/src/routes/session/username-password.test.ts @@ -1,4 +1,5 @@ -import { User, UserRole } from '@logto/schemas'; +import type { User } from '@logto/schemas'; +import { UserRole } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; import { Provider } from 'oidc-provider'; diff --git a/packages/core/src/routes/session/username-password.ts b/packages/core/src/routes/session/username-password.ts index 8fd6db9b3..41e6c7381 100644 --- a/packages/core/src/routes/session/username-password.ts +++ b/packages/core/src/routes/session/username-password.ts @@ -1,7 +1,7 @@ import { passwordRegEx, usernameRegEx } from '@logto/core-kit'; import { UserRole } from '@logto/schemas'; import { adminConsoleApplicationId } from '@logto/schemas/lib/seeds'; -import { Provider } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; import { object, string } from 'zod'; import RequestError from '@/errors/RequestError'; @@ -16,7 +16,7 @@ import koaGuard from '@/middleware/koa-guard'; import { hasUser, hasActiveUsers, updateUserById } from '@/queries/user'; import assertThat from '@/utils/assert-that'; -import { AnonymousRouter } from '../types'; +import type { AnonymousRouter } from '../types'; import { getRoutePrefix } from './utils'; export const registerRoute = getRoutePrefix('register', 'username-password'); diff --git a/packages/core/src/routes/session/utils.ts b/packages/core/src/routes/session/utils.ts index 371e3b91b..8f15038b5 100644 --- a/packages/core/src/routes/session/utils.ts +++ b/packages/core/src/routes/session/utils.ts @@ -1,15 +1,17 @@ -import { logTypeGuard, LogType, PasscodeType } from '@logto/schemas'; -import { Truthy } from '@silverhand/essentials'; +import type { LogType, PasscodeType } from '@logto/schemas'; +import { logTypeGuard } from '@logto/schemas'; +import type { Truthy } from '@silverhand/essentials'; import dayjs from 'dayjs'; -import { Context } from 'koa'; -import { Provider } from 'oidc-provider'; -import { z, ZodType } from 'zod'; +import type { Context } from 'koa'; +import type { Provider } from 'oidc-provider'; +import type { ZodType } from 'zod'; +import { z } from 'zod'; import RequestError from '@/errors/RequestError'; import assertThat from '@/utils/assert-that'; import { verificationTimeout } from './consts'; -import { Method, Operation, VerificationResult, VerificationStorage } from './types'; +import type { Method, Operation, VerificationResult, VerificationStorage } from './types'; export const getRoutePrefix = ( type: 'sign-in' | 'register' | 'forgot-password', diff --git a/packages/core/src/routes/setting.test.ts b/packages/core/src/routes/setting.test.ts index c44e1a507..5ca217534 100644 --- a/packages/core/src/routes/setting.test.ts +++ b/packages/core/src/routes/setting.test.ts @@ -1,4 +1,4 @@ -import { Setting, CreateSetting } from '@logto/schemas'; +import type { Setting, CreateSetting } from '@logto/schemas'; import { mockSetting } from '@/__mocks__'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/setting.ts b/packages/core/src/routes/setting.ts index b6a4aec3f..0b87d92e0 100644 --- a/packages/core/src/routes/setting.ts +++ b/packages/core/src/routes/setting.ts @@ -3,7 +3,7 @@ import { Settings } from '@logto/schemas'; import koaGuard from '@/middleware/koa-guard'; import { getSetting, updateSetting } from '@/queries/setting'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; export default function settingRoutes(router: T) { router.get('/settings', async (ctx, next) => { diff --git a/packages/core/src/routes/sign-in-experience.branding.guard.test.ts b/packages/core/src/routes/sign-in-experience.branding.guard.test.ts index d84378c30..07391ffc2 100644 --- a/packages/core/src/routes/sign-in-experience.branding.guard.test.ts +++ b/packages/core/src/routes/sign-in-experience.branding.guard.test.ts @@ -1,4 +1,5 @@ -import { BrandingStyle, CreateSignInExperience, SignInExperience } from '@logto/schemas'; +import type { CreateSignInExperience, SignInExperience } from '@logto/schemas'; +import { BrandingStyle } from '@logto/schemas'; import { mockBranding, mockSignInExperience } from '@/__mocks__'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/sign-in-experience.color.guard.test.ts b/packages/core/src/routes/sign-in-experience.color.guard.test.ts index 86e036db1..00c9f0d9b 100644 --- a/packages/core/src/routes/sign-in-experience.color.guard.test.ts +++ b/packages/core/src/routes/sign-in-experience.color.guard.test.ts @@ -1,4 +1,4 @@ -import { CreateSignInExperience, SignInExperience } from '@logto/schemas'; +import type { CreateSignInExperience, SignInExperience } from '@logto/schemas'; import { mockColor, mockSignInExperience } from '@/__mocks__'; import { createRequester } from '@/utils/test-utils'; diff --git a/packages/core/src/routes/sign-in-experience.guard.test.ts b/packages/core/src/routes/sign-in-experience.guard.test.ts index e0520a1c6..680343fd0 100644 --- a/packages/core/src/routes/sign-in-experience.guard.test.ts +++ b/packages/core/src/routes/sign-in-experience.guard.test.ts @@ -1,9 +1,5 @@ -import { - CreateSignInExperience, - LanguageInfo, - SignInExperience, - SignInMethodState, -} from '@logto/schemas'; +import type { CreateSignInExperience, LanguageInfo, SignInExperience } from '@logto/schemas'; +import { SignInMethodState } from '@logto/schemas'; import { mockAliyunDmConnector, diff --git a/packages/core/src/routes/sign-in-experience.test.ts b/packages/core/src/routes/sign-in-experience.test.ts index 5546c112f..ae2a7b5b4 100644 --- a/packages/core/src/routes/sign-in-experience.test.ts +++ b/packages/core/src/routes/sign-in-experience.test.ts @@ -1,9 +1,5 @@ -import { - SignInExperience, - CreateSignInExperience, - TermsOfUse, - SignInMethodState, -} from '@logto/schemas'; +import type { SignInExperience, CreateSignInExperience, TermsOfUse } from '@logto/schemas'; +import { SignInMethodState } from '@logto/schemas'; import { mockFacebookConnector, diff --git a/packages/core/src/routes/sign-in-experience.ts b/packages/core/src/routes/sign-in-experience.ts index 382c53c54..a53c902ec 100644 --- a/packages/core/src/routes/sign-in-experience.ts +++ b/packages/core/src/routes/sign-in-experience.ts @@ -14,7 +14,7 @@ import { updateDefaultSignInExperience, } from '@/queries/sign-in-experience'; -import { AuthedRouter } from './types'; +import type { AuthedRouter } from './types'; export default function signInExperiencesRoutes(router: T) { /** diff --git a/packages/core/src/routes/status.ts b/packages/core/src/routes/status.ts index 10fd9de18..1dba71d37 100644 --- a/packages/core/src/routes/status.ts +++ b/packages/core/src/routes/status.ts @@ -1,6 +1,6 @@ import koaGuard from '@/middleware/koa-guard'; -import { AnonymousRouter } from './types'; +import type { AnonymousRouter } from './types'; export default function statusRoutes(router: T) { router.get('/status', koaGuard({ status: 204 }), async (ctx, next) => { diff --git a/packages/core/src/routes/swagger.test.ts b/packages/core/src/routes/swagger.test.ts index c42cdb5e5..03928e532 100644 --- a/packages/core/src/routes/swagger.test.ts +++ b/packages/core/src/routes/swagger.test.ts @@ -6,7 +6,7 @@ import { number, object, string } from 'zod'; import koaGuard from '@/middleware/koa-guard'; import koaPagination from '@/middleware/koa-pagination'; -import { AnonymousRouter } from '@/routes/types'; +import type { AnonymousRouter } from '@/routes/types'; import swaggerRoutes, { defaultResponses, paginationParameters } from './swagger'; diff --git a/packages/core/src/routes/swagger.ts b/packages/core/src/routes/swagger.ts index 95eb82b26..18e6565c9 100644 --- a/packages/core/src/routes/swagger.ts +++ b/packages/core/src/routes/swagger.ts @@ -2,16 +2,18 @@ import { readFile } from 'fs/promises'; import { toTitle } from '@silverhand/essentials'; import { load } from 'js-yaml'; -import Router, { IMiddleware } from 'koa-router'; -import { OpenAPIV3 } from 'openapi-types'; +import type { IMiddleware } from 'koa-router'; +import type Router from 'koa-router'; +import type { OpenAPIV3 } from 'openapi-types'; import { ZodObject, ZodOptional } from 'zod'; -import { isGuardMiddleware, WithGuardConfig } from '@/middleware/koa-guard'; +import type { WithGuardConfig } from '@/middleware/koa-guard'; +import { isGuardMiddleware } from '@/middleware/koa-guard'; import { fallbackDefaultPageSize, isPaginationMiddleware } from '@/middleware/koa-pagination'; import assertThat from '@/utils/assert-that'; import { translationSchemas, zodTypeToSwagger } from '@/utils/zod'; -import { AnonymousRouter } from './types'; +import type { AnonymousRouter } from './types'; type RouteObject = { path: string; diff --git a/packages/core/src/routes/types.ts b/packages/core/src/routes/types.ts index dab1740d4..f1b3330bc 100644 --- a/packages/core/src/routes/types.ts +++ b/packages/core/src/routes/types.ts @@ -1,8 +1,8 @@ -import Router from 'koa-router'; +import type Router from 'koa-router'; -import { WithAuthContext } from '@/middleware/koa-auth'; -import { WithI18nContext } from '@/middleware/koa-i18next'; -import { WithLogContext } from '@/middleware/koa-log'; +import type { WithAuthContext } from '@/middleware/koa-auth'; +import type { WithI18nContext } from '@/middleware/koa-i18next'; +import type { WithLogContext } from '@/middleware/koa-log'; export type AnonymousRouter = Router; diff --git a/packages/core/src/routes/well-known.ts b/packages/core/src/routes/well-known.ts index cdde25391..91a295c1a 100644 --- a/packages/core/src/routes/well-known.ts +++ b/packages/core/src/routes/well-known.ts @@ -1,4 +1,4 @@ -import { ConnectorMetadata } from '@logto/connector-kit'; +import type { ConnectorMetadata } from '@logto/connector-kit'; import { SignInMode } from '@logto/schemas'; import { adminConsoleApplicationId, @@ -7,13 +7,14 @@ import { } from '@logto/schemas/lib/seeds'; import etag from 'etag'; import i18next from 'i18next'; -import { Provider, errors } from 'oidc-provider'; +import type { Provider } from 'oidc-provider'; +import { errors } from 'oidc-provider'; import { getLogtoConnectors } from '@/connectors'; import { findDefaultSignInExperience } from '@/queries/sign-in-experience'; import { hasActiveUsers } from '@/queries/user'; -import { AnonymousRouter } from './types'; +import type { AnonymousRouter } from './types'; export default function wellKnownRoutes(router: T, provider: Provider) { router.get( diff --git a/packages/core/src/utils/assert-that.ts b/packages/core/src/utils/assert-that.ts index 42c851526..a1273aa71 100644 --- a/packages/core/src/utils/assert-that.ts +++ b/packages/core/src/utils/assert-that.ts @@ -1,4 +1,4 @@ -import { LogtoErrorCode } from '@logto/phrases'; +import type { LogtoErrorCode } from '@logto/phrases'; import { assert } from '@silverhand/essentials'; import RequestError from '@/errors/RequestError'; diff --git a/packages/core/src/utils/jwks.ts b/packages/core/src/utils/jwks.ts index 36aba8a96..bffa43a50 100644 --- a/packages/core/src/utils/jwks.ts +++ b/packages/core/src/utils/jwks.ts @@ -5,7 +5,8 @@ import { createHash } from 'crypto'; -import { JWK, KeyLike, exportJWK as joseExportJWK } from 'jose'; +import type { JWK, KeyLike } from 'jose'; +import { exportJWK as joseExportJWK } from 'jose'; const getCalculateKidComponents = (jwk: JWK) => { switch (jwk.kty) { diff --git a/packages/core/src/utils/oidc-provider-event-listener.ts b/packages/core/src/utils/oidc-provider-event-listener.ts index 812380245..862fe9c60 100644 --- a/packages/core/src/utils/oidc-provider-event-listener.ts +++ b/packages/core/src/utils/oidc-provider-event-listener.ts @@ -1,8 +1,8 @@ import { GrantType, TokenType, LogResult } from '@logto/schemas'; import { notFalsy } from '@silverhand/essentials'; -import { errors, KoaContextWithOIDC, Provider } from 'oidc-provider'; +import type { errors, KoaContextWithOIDC, Provider } from 'oidc-provider'; -import { WithLogContext } from '@/middleware/koa-log'; +import type { WithLogContext } from '@/middleware/koa-log'; export const addOidcEventListeners = (provider: Provider) => { /** diff --git a/packages/core/src/utils/pagination.ts b/packages/core/src/utils/pagination.ts index b69f7dadd..9419e3457 100644 --- a/packages/core/src/utils/pagination.ts +++ b/packages/core/src/utils/pagination.ts @@ -1,4 +1,4 @@ -import { Request } from 'koa'; +import type { Request } from 'koa'; import { stringify } from 'query-string'; type LinkRelationType = 'first' | 'prev' | 'next' | 'last'; diff --git a/packages/core/src/utils/schema.ts b/packages/core/src/utils/schema.ts index cda5e0c8b..e609bd5a2 100644 --- a/packages/core/src/utils/schema.ts +++ b/packages/core/src/utils/schema.ts @@ -1,4 +1,4 @@ -import { GeneratedSchema, SchemaLike } from '@logto/schemas'; +import type { GeneratedSchema, SchemaLike } from '@logto/schemas'; export const isKeyOf = ({ fieldKeys }: GeneratedSchema) => diff --git a/packages/core/src/utils/test-utils.ts b/packages/core/src/utils/test-utils.ts index e72fa7e53..6a5be9040 100644 --- a/packages/core/src/utils/test-utils.ts +++ b/packages/core/src/utils/test-utils.ts @@ -1,12 +1,16 @@ -import { createMockContext, Options } from '@shopify/jest-koa-mocks'; -import Koa, { MiddlewareType, Context, Middleware } from 'koa'; -import Router, { IRouterParamContext } from 'koa-router'; -import { Provider } from 'oidc-provider'; -import { createMockPool, createMockQueryResult, QueryResult, QueryResultRow } from 'slonik'; -import { PrimitiveValueExpression } from 'slonik/dist/src/types.d'; +import type { Options } from '@shopify/jest-koa-mocks'; +import { createMockContext } from '@shopify/jest-koa-mocks'; +import type { MiddlewareType, Context, Middleware } from 'koa'; +import Koa from 'koa'; +import type { IRouterParamContext } from 'koa-router'; +import Router from 'koa-router'; +import type { Provider } from 'oidc-provider'; +import type { QueryResult, QueryResultRow } from 'slonik'; +import { createMockPool, createMockQueryResult } from 'slonik'; +import type { PrimitiveValueExpression } from 'slonik/dist/src/types.d'; import request from 'supertest'; -import { AuthedRouter, AnonymousRouter } from '@/routes/types'; +import type { AuthedRouter, AnonymousRouter } from '@/routes/types'; /** * Slonik Query Mock Utils diff --git a/packages/core/src/utils/translation.ts b/packages/core/src/utils/translation.ts index 625123c7e..4801531d7 100644 --- a/packages/core/src/utils/translation.ts +++ b/packages/core/src/utils/translation.ts @@ -1,4 +1,4 @@ -import { Translation } from '@logto/schemas'; +import type { Translation } from '@logto/schemas'; // LOG-4385: Refactor me // eslint-disable-next-line complexity diff --git a/packages/core/src/utils/zod.test.ts b/packages/core/src/utils/zod.test.ts index a70c5917e..bc6cb09df 100644 --- a/packages/core/src/utils/zod.test.ts +++ b/packages/core/src/utils/zod.test.ts @@ -4,7 +4,8 @@ import { string, boolean, number, object, nativeEnum, unknown, literal, union } import RequestError from '@/errors/RequestError'; -import { ZodStringCheck, zodTypeToSwagger } from './zod'; +import type { ZodStringCheck } from './zod'; +import { zodTypeToSwagger } from './zod'; describe('zodTypeToSwagger', () => { it('arbitrary object guard', () => { diff --git a/packages/core/src/utils/zod.ts b/packages/core/src/utils/zod.ts index f75c89190..3d3b36c55 100644 --- a/packages/core/src/utils/zod.ts +++ b/packages/core/src/utils/zod.ts @@ -1,7 +1,9 @@ import { languages, languageTagGuard } from '@logto/language-kit'; import { arbitraryObjectGuard, translationGuard } from '@logto/schemas'; -import { conditional, ValuesOf } from '@silverhand/essentials'; -import { OpenAPIV3 } from 'openapi-types'; +import type { ValuesOf } from '@silverhand/essentials'; +import { conditional } from '@silverhand/essentials'; +import type { OpenAPIV3 } from 'openapi-types'; +import type { ZodStringDef } from 'zod'; import { ZodArray, ZodBoolean, @@ -14,7 +16,6 @@ import { ZodObject, ZodOptional, ZodString, - ZodStringDef, ZodUnion, ZodUnknown, } from 'zod'; diff --git a/packages/demo-app/src/App.tsx b/packages/demo-app/src/App.tsx index 7327d8a98..b60944ac8 100644 --- a/packages/demo-app/src/App.tsx +++ b/packages/demo-app/src/App.tsx @@ -1,4 +1,5 @@ -import { LogtoProvider, useLogto, IdTokenClaims, Prompt } from '@logto/react'; +import type { IdTokenClaims } from '@logto/react'; +import { LogtoProvider, useLogto, Prompt } from '@logto/react'; import { demoAppApplicationId } from '@logto/schemas/lib/seeds'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/demo-app/src/include.d/react-i18next.d.ts b/packages/demo-app/src/include.d/react-i18next.d.ts index 9f69cc137..738817fc7 100644 --- a/packages/demo-app/src/include.d/react-i18next.d.ts +++ b/packages/demo-app/src/include.d/react-i18next.d.ts @@ -1,6 +1,6 @@ // https://react.i18next.com/latest/typescript#create-a-declaration-file -import { LocalPhrase } from '@logto/phrases'; +import type { LocalPhrase } from '@logto/phrases'; // eslint-disable-next-line unused-imports/no-unused-imports import { CustomTypeOptions } from 'react-i18next'; diff --git a/packages/integration-tests/src/api/admin-user.ts b/packages/integration-tests/src/api/admin-user.ts index 903dc17ab..529fd17fc 100644 --- a/packages/integration-tests/src/api/admin-user.ts +++ b/packages/integration-tests/src/api/admin-user.ts @@ -1,4 +1,4 @@ -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { authedAdminApi } from './api'; diff --git a/packages/integration-tests/src/api/application.ts b/packages/integration-tests/src/api/application.ts index bc28178e5..f441e143f 100644 --- a/packages/integration-tests/src/api/application.ts +++ b/packages/integration-tests/src/api/application.ts @@ -1,4 +1,4 @@ -import { +import type { Application, CreateApplication, ApplicationType, diff --git a/packages/integration-tests/src/api/connector.ts b/packages/integration-tests/src/api/connector.ts index fe8cb57aa..939d9505d 100644 --- a/packages/integration-tests/src/api/connector.ts +++ b/packages/integration-tests/src/api/connector.ts @@ -1,4 +1,4 @@ -import { ConnectorResponse } from '@logto/schemas'; +import type { ConnectorResponse } from '@logto/schemas'; import { authedAdminApi } from './api'; diff --git a/packages/integration-tests/src/api/logs.ts b/packages/integration-tests/src/api/logs.ts index 3bd4b27ea..7382c860f 100644 --- a/packages/integration-tests/src/api/logs.ts +++ b/packages/integration-tests/src/api/logs.ts @@ -1,4 +1,4 @@ -import { Log } from '@logto/schemas'; +import type { Log } from '@logto/schemas'; import { authedAdminApi } from './api'; diff --git a/packages/integration-tests/src/api/me.ts b/packages/integration-tests/src/api/me.ts index 1dce695c7..be4ce11f1 100644 --- a/packages/integration-tests/src/api/me.ts +++ b/packages/integration-tests/src/api/me.ts @@ -1,4 +1,4 @@ -import { ArbitraryObject, UserInfo } from '@logto/schemas'; +import type { ArbitraryObject, UserInfo } from '@logto/schemas'; import api from './api'; diff --git a/packages/integration-tests/src/api/resource.ts b/packages/integration-tests/src/api/resource.ts index 7a45f8cae..e60049a89 100644 --- a/packages/integration-tests/src/api/resource.ts +++ b/packages/integration-tests/src/api/resource.ts @@ -1,5 +1,5 @@ import type { Resource, CreateResource } from '@logto/schemas'; -import { OptionsOfTextResponseBody } from 'got'; +import type { OptionsOfTextResponseBody } from 'got'; import { generateResourceIndicator, generateResourceName } from '@/utils'; diff --git a/packages/integration-tests/src/api/sign-in-experience.ts b/packages/integration-tests/src/api/sign-in-experience.ts index b4395e0ec..9fda9d08b 100644 --- a/packages/integration-tests/src/api/sign-in-experience.ts +++ b/packages/integration-tests/src/api/sign-in-experience.ts @@ -1,4 +1,4 @@ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import { authedAdminApi } from './api'; diff --git a/packages/integration-tests/src/api/wellknown.ts b/packages/integration-tests/src/api/wellknown.ts index 638cd9115..eac1cf112 100644 --- a/packages/integration-tests/src/api/wellknown.ts +++ b/packages/integration-tests/src/api/wellknown.ts @@ -1,4 +1,4 @@ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import api from './api'; diff --git a/packages/integration-tests/src/client/index.ts b/packages/integration-tests/src/client/index.ts index 8e4a6e3b8..75dfe7047 100644 --- a/packages/integration-tests/src/client/index.ts +++ b/packages/integration-tests/src/client/index.ts @@ -1,4 +1,5 @@ -import LogtoClient, { LogtoConfig } from '@logto/node'; +import type { LogtoConfig } from '@logto/node'; +import LogtoClient from '@logto/node'; import { demoAppApplicationId } from '@logto/schemas/lib/seeds'; import { assert } from '@silverhand/essentials'; import got from 'got'; diff --git a/packages/integration-tests/src/client/storage.ts b/packages/integration-tests/src/client/storage.ts index 50108d80e..cf4afe059 100644 --- a/packages/integration-tests/src/client/storage.ts +++ b/packages/integration-tests/src/client/storage.ts @@ -1,5 +1,5 @@ -import { Storage, StorageKey } from '@logto/node'; -import { Nullable } from '@silverhand/essentials'; +import type { Storage, StorageKey } from '@logto/node'; +import type { Nullable } from '@silverhand/essentials'; export class MemoryStorage implements Storage { private storage: { [key in StorageKey]: Nullable } = { diff --git a/packages/integration-tests/src/helpers.ts b/packages/integration-tests/src/helpers.ts index 3df398984..eaf95d769 100644 --- a/packages/integration-tests/src/helpers.ts +++ b/packages/integration-tests/src/helpers.ts @@ -1,7 +1,7 @@ import fs from 'fs/promises'; import path from 'path'; -import { User } from '@logto/schemas'; +import type { User } from '@logto/schemas'; import { assert } from '@silverhand/essentials'; import { HTTPError } from 'got'; diff --git a/packages/integration-tests/src/utils.ts b/packages/integration-tests/src/utils.ts index 2f1024853..7203ce9b2 100644 --- a/packages/integration-tests/src/utils.ts +++ b/packages/integration-tests/src/utils.ts @@ -1,4 +1,4 @@ -import { Response } from 'got'; +import type { Response } from 'got'; export const extractCookie = (response: Response) => { const { headers } = response; diff --git a/packages/integration-tests/tests/api/dashboard.test.ts b/packages/integration-tests/tests/api/dashboard.test.ts index 1621ab81a..7b67a683c 100644 --- a/packages/integration-tests/tests/api/dashboard.test.ts +++ b/packages/integration-tests/tests/api/dashboard.test.ts @@ -1,4 +1,5 @@ -import { getTotalUsersCount, getNewUsersData, getActiveUsersData, StatisticsData } from '@/api'; +import type { StatisticsData } from '@/api'; +import { getTotalUsersCount, getNewUsersData, getActiveUsersData } from '@/api'; import { createUserByAdmin, registerNewUser, signIn } from '@/helpers'; import { generateUsername, generatePassword } from '@/utils'; diff --git a/packages/integration-tests/tests/api/swagger-check.test.ts b/packages/integration-tests/tests/api/swagger-check.test.ts index a07cc6940..c816bf614 100644 --- a/packages/integration-tests/tests/api/swagger-check.test.ts +++ b/packages/integration-tests/tests/api/swagger-check.test.ts @@ -1,5 +1,5 @@ import OpenApiSchemaValidator from 'openapi-schema-validator'; -import { OpenAPI } from 'openapi-types'; +import type { OpenAPI } from 'openapi-types'; import { api } from '@/api'; diff --git a/packages/phrases-ui/src/index.ts b/packages/phrases-ui/src/index.ts index eea0892af..947f9f012 100644 --- a/packages/phrases-ui/src/index.ts +++ b/packages/phrases-ui/src/index.ts @@ -1,6 +1,7 @@ import { fallback } from '@logto/core-kit'; -import { languages, LanguageTag } from '@logto/language-kit'; -import { NormalizeKeyPaths } from '@silverhand/essentials'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages } from '@logto/language-kit'; +import type { NormalizeKeyPaths } from '@silverhand/essentials'; import { z } from 'zod'; import en from './locales/en'; @@ -9,7 +10,7 @@ import koKR from './locales/ko-kr'; import ptPT from './locales/pt-pt'; import trTR from './locales/tr-tr'; import zhCN from './locales/zh-cn'; -import { LocalePhrase } from './types'; +import type { LocalePhrase } from './types'; export type { LocalePhrase } from './types'; diff --git a/packages/phrases-ui/src/locales/fr.ts b/packages/phrases-ui/src/locales/fr.ts index 5e3735ca5..ea6501686 100644 --- a/packages/phrases-ui/src/locales/fr.ts +++ b/packages/phrases-ui/src/locales/fr.ts @@ -1,4 +1,4 @@ -import { LocalePhrase } from '../types'; +import type { LocalePhrase } from '../types'; const translation = { input: { diff --git a/packages/phrases-ui/src/locales/ko-kr.ts b/packages/phrases-ui/src/locales/ko-kr.ts index 2c09f0507..bfc617a0b 100644 --- a/packages/phrases-ui/src/locales/ko-kr.ts +++ b/packages/phrases-ui/src/locales/ko-kr.ts @@ -1,4 +1,4 @@ -import { LocalePhrase } from '../types'; +import type { LocalePhrase } from '../types'; const translation = { input: { diff --git a/packages/phrases-ui/src/locales/pt-pt.ts b/packages/phrases-ui/src/locales/pt-pt.ts index 2a87c596f..da4737952 100644 --- a/packages/phrases-ui/src/locales/pt-pt.ts +++ b/packages/phrases-ui/src/locales/pt-pt.ts @@ -1,4 +1,4 @@ -import { LocalePhrase } from '../types'; +import type { LocalePhrase } from '../types'; const translation = { input: { diff --git a/packages/phrases-ui/src/locales/tr-tr.ts b/packages/phrases-ui/src/locales/tr-tr.ts index 7fee4ac22..3ae6a26f7 100644 --- a/packages/phrases-ui/src/locales/tr-tr.ts +++ b/packages/phrases-ui/src/locales/tr-tr.ts @@ -1,4 +1,4 @@ -import { LocalePhrase } from '../types'; +import type { LocalePhrase } from '../types'; const translation = { input: { diff --git a/packages/phrases-ui/src/locales/zh-cn.ts b/packages/phrases-ui/src/locales/zh-cn.ts index ec242f1e0..707459fae 100644 --- a/packages/phrases-ui/src/locales/zh-cn.ts +++ b/packages/phrases-ui/src/locales/zh-cn.ts @@ -1,4 +1,4 @@ -import { LocalePhrase } from '../types'; +import type { LocalePhrase } from '../types'; const translation = { input: { diff --git a/packages/phrases-ui/src/types.ts b/packages/phrases-ui/src/types.ts index 6c5768035..9d6e5a80b 100644 --- a/packages/phrases-ui/src/types.ts +++ b/packages/phrases-ui/src/types.ts @@ -1,3 +1,3 @@ -import en from './locales/en'; +import type en from './locales/en'; export type LocalePhrase = typeof en; diff --git a/packages/phrases/src/index.ts b/packages/phrases/src/index.ts index d8f3b948e..2ee13dbbc 100644 --- a/packages/phrases/src/index.ts +++ b/packages/phrases/src/index.ts @@ -1,6 +1,7 @@ import { fallback } from '@logto/core-kit'; -import { languages, LanguageTag } from '@logto/language-kit'; -import { NormalizeKeyPaths } from '@silverhand/essentials'; +import type { LanguageTag } from '@logto/language-kit'; +import { languages } from '@logto/language-kit'; +import type { NormalizeKeyPaths } from '@silverhand/essentials'; import { z } from 'zod'; import en from './locales/en'; @@ -9,7 +10,7 @@ import koKR from './locales/ko-kr'; import ptPT from './locales/pt-pt'; import trTR from './locales/tr-tr'; import zhCN from './locales/zh-cn'; -import { LocalPhrase } from './types'; +import type { LocalPhrase } from './types'; export type { LocalPhrase } from './types'; diff --git a/packages/phrases/src/locales/fr/index.ts b/packages/phrases/src/locales/fr/index.ts index f2dbf4643..7eaf393f6 100644 --- a/packages/phrases/src/locales/fr/index.ts +++ b/packages/phrases/src/locales/fr/index.ts @@ -1,4 +1,4 @@ -import { LocalPhrase } from '../../types'; +import type { LocalPhrase } from '../../types'; import errors from './errors'; import translation from './translation'; diff --git a/packages/phrases/src/locales/ko-kr/index.ts b/packages/phrases/src/locales/ko-kr/index.ts index 0cc717165..d7ba7975c 100644 --- a/packages/phrases/src/locales/ko-kr/index.ts +++ b/packages/phrases/src/locales/ko-kr/index.ts @@ -1,4 +1,4 @@ -import { LocalPhrase } from '../../types'; +import type { LocalPhrase } from '../../types'; import errors from './errors'; import translation from './translation'; diff --git a/packages/phrases/src/locales/pt-pt/index.ts b/packages/phrases/src/locales/pt-pt/index.ts index d05767c78..b6fa212b7 100644 --- a/packages/phrases/src/locales/pt-pt/index.ts +++ b/packages/phrases/src/locales/pt-pt/index.ts @@ -1,4 +1,4 @@ -import { LocalPhrase } from '../../types'; +import type { LocalPhrase } from '../../types'; import errors from './errors'; import translation from './translation'; diff --git a/packages/phrases/src/locales/tr-tr/index.ts b/packages/phrases/src/locales/tr-tr/index.ts index d03b5324f..55bd2f884 100644 --- a/packages/phrases/src/locales/tr-tr/index.ts +++ b/packages/phrases/src/locales/tr-tr/index.ts @@ -1,4 +1,4 @@ -import { LocalPhrase } from '../../types'; +import type { LocalPhrase } from '../../types'; import errors from './errors'; import translation from './translation'; diff --git a/packages/phrases/src/locales/zh-cn/index.ts b/packages/phrases/src/locales/zh-cn/index.ts index b1bf96f33..3bc867641 100644 --- a/packages/phrases/src/locales/zh-cn/index.ts +++ b/packages/phrases/src/locales/zh-cn/index.ts @@ -1,4 +1,4 @@ -import { LocalPhrase } from '../../types'; +import type { LocalPhrase } from '../../types'; import errors from './errors'; import translation from './translation'; diff --git a/packages/phrases/src/types.ts b/packages/phrases/src/types.ts index d8cab9855..78c521c85 100644 --- a/packages/phrases/src/types.ts +++ b/packages/phrases/src/types.ts @@ -1,3 +1,3 @@ -import en from './locales/en'; +import type en from './locales/en'; export type LocalPhrase = typeof en; diff --git a/packages/schemas/src/foundations/schemas.ts b/packages/schemas/src/foundations/schemas.ts index 5f0041177..7d203d7d6 100644 --- a/packages/schemas/src/foundations/schemas.ts +++ b/packages/schemas/src/foundations/schemas.ts @@ -1,4 +1,4 @@ -import { ZodObject, ZodType, ZodOptional } from 'zod'; +import type { ZodObject, ZodType, ZodOptional } from 'zod'; type ParseOptional = undefined extends K ? ZodOptional>> diff --git a/packages/schemas/src/gen/index.ts b/packages/schemas/src/gen/index.ts index 32530fb91..850c244f2 100644 --- a/packages/schemas/src/gen/index.ts +++ b/packages/schemas/src/gen/index.ts @@ -11,7 +11,7 @@ import uniq from 'lodash.uniq'; import pluralize from 'pluralize'; import { generateSchema } from './schema'; -import { FileData, Table, Field, Type, GeneratedType, TableWithType } from './types'; +import type { FileData, Table, Field, Type, GeneratedType, TableWithType } from './types'; import { findFirstParentheses, normalizeWhitespaces, diff --git a/packages/schemas/src/gen/schema.ts b/packages/schemas/src/gen/schema.ts index ca65db427..09ed9256e 100644 --- a/packages/schemas/src/gen/schema.ts +++ b/packages/schemas/src/gen/schema.ts @@ -4,7 +4,7 @@ import { conditionalString } from '@silverhand/essentials'; import camelcase from 'camelcase'; import pluralize from 'pluralize'; -import { TableWithType } from './types'; +import type { TableWithType } from './types'; export const generateSchema = ({ name, fields }: TableWithType) => { const modelName = pluralize(camelcase(name, { pascalCase: true }), 1); diff --git a/packages/schemas/src/gen/utils.ts b/packages/schemas/src/gen/utils.ts index 1e143bc1a..a7fa600be 100644 --- a/packages/schemas/src/gen/utils.ts +++ b/packages/schemas/src/gen/utils.ts @@ -1,6 +1,7 @@ -import { conditional, Optional, assert } from '@silverhand/essentials'; +import type { Optional } from '@silverhand/essentials'; +import { conditional, assert } from '@silverhand/essentials'; -import { Field } from './types'; +import type { Field } from './types'; export const normalizeWhitespaces = (string: string): string => string.replace(/\s+/g, ' ').trim(); diff --git a/packages/schemas/src/seeds/application.ts b/packages/schemas/src/seeds/application.ts index 1caac5576..db3301c2c 100644 --- a/packages/schemas/src/seeds/application.ts +++ b/packages/schemas/src/seeds/application.ts @@ -1,4 +1,5 @@ -import { ApplicationType, CreateApplication } from '../db-entries'; +import type { CreateApplication } from '../db-entries'; +import { ApplicationType } from '../db-entries'; /** * The fixed application ID for Admin Console. diff --git a/packages/schemas/src/seeds/resource.ts b/packages/schemas/src/seeds/resource.ts index 323045d2d..ddaf88735 100644 --- a/packages/schemas/src/seeds/resource.ts +++ b/packages/schemas/src/seeds/resource.ts @@ -1,4 +1,4 @@ -import { CreateResource } from '../db-entries'; +import type { CreateResource } from '../db-entries'; export const managementResource: Readonly = Object.freeze({ id: 'management-api', diff --git a/packages/schemas/src/seeds/roles.ts b/packages/schemas/src/seeds/roles.ts index 322b690fe..eeb18e807 100644 --- a/packages/schemas/src/seeds/roles.ts +++ b/packages/schemas/src/seeds/roles.ts @@ -1,4 +1,4 @@ -import { CreateRole } from '../db-entries'; +import type { CreateRole } from '../db-entries'; import { UserRole } from '../types'; /** diff --git a/packages/schemas/src/seeds/setting.ts b/packages/schemas/src/seeds/setting.ts index 447b4f370..04dbe1069 100644 --- a/packages/schemas/src/seeds/setting.ts +++ b/packages/schemas/src/seeds/setting.ts @@ -1,4 +1,4 @@ -import { CreateSetting } from '../db-entries'; +import type { CreateSetting } from '../db-entries'; import { AppearanceMode } from '../foundations'; export const defaultSettingId = 'default'; diff --git a/packages/schemas/src/seeds/sign-in-experience.ts b/packages/schemas/src/seeds/sign-in-experience.ts index 0f3fcc8a3..d1c3308cd 100644 --- a/packages/schemas/src/seeds/sign-in-experience.ts +++ b/packages/schemas/src/seeds/sign-in-experience.ts @@ -1,6 +1,7 @@ import { generateDarkColor } from '@logto/core-kit'; -import { CreateSignInExperience, SignInMode } from '../db-entries'; +import type { CreateSignInExperience } from '../db-entries'; +import { SignInMode } from '../db-entries'; import { BrandingStyle, SignInMethodState } from '../foundations'; const defaultPrimaryColor = '#6139F6'; diff --git a/packages/schemas/src/types/connector.ts b/packages/schemas/src/types/connector.ts index b3e4db848..83e75cdab 100644 --- a/packages/schemas/src/types/connector.ts +++ b/packages/schemas/src/types/connector.ts @@ -1,6 +1,6 @@ -import { BaseConnector, ConnectorMetadata, ConnectorType } from '@logto/connector-kit'; +import type { BaseConnector, ConnectorMetadata, ConnectorType } from '@logto/connector-kit'; -import { Connector } from '../db-entries'; +import type { Connector } from '../db-entries'; export type { ConnectorMetadata } from '@logto/connector-kit'; export { ConnectorType, ConnectorPlatform } from '@logto/connector-kit'; diff --git a/packages/schemas/src/types/log.ts b/packages/schemas/src/types/log.ts index ec2b69dd5..2d60fee15 100644 --- a/packages/schemas/src/types/log.ts +++ b/packages/schemas/src/types/log.ts @@ -1,6 +1,6 @@ import { z } from 'zod'; -import { Log } from '../db-entries'; +import type { Log } from '../db-entries'; export enum LogResult { Success = 'Success', diff --git a/packages/schemas/src/types/logto-config.ts b/packages/schemas/src/types/logto-config.ts index 5d9e6d8d2..0ca795a3c 100644 --- a/packages/schemas/src/types/logto-config.ts +++ b/packages/schemas/src/types/logto-config.ts @@ -1,4 +1,5 @@ -import { z, ZodType } from 'zod'; +import type { ZodType } from 'zod'; +import { z } from 'zod'; // Alteration state export enum AlterationStateKey { diff --git a/packages/schemas/src/types/oidc-config.ts b/packages/schemas/src/types/oidc-config.ts index ce3a60a5e..496249497 100644 --- a/packages/schemas/src/types/oidc-config.ts +++ b/packages/schemas/src/types/oidc-config.ts @@ -1,4 +1,4 @@ -import { KeysToCamelCase } from '@silverhand/essentials'; +import type { KeysToCamelCase } from '@silverhand/essentials'; export type SnakeCaseOidcConfig = { authorization_endpoint: string; diff --git a/packages/schemas/src/types/user.ts b/packages/schemas/src/types/user.ts index d7791450a..e553a9cd4 100644 --- a/packages/schemas/src/types/user.ts +++ b/packages/schemas/src/types/user.ts @@ -1,4 +1,4 @@ -import { CreateUser } from '../db-entries'; +import type { CreateUser } from '../db-entries'; export const userInfoSelectFields = Object.freeze([ 'id', diff --git a/packages/shared/src/database/types.ts b/packages/shared/src/database/types.ts index beae5eaf1..88a449216 100644 --- a/packages/shared/src/database/types.ts +++ b/packages/shared/src/database/types.ts @@ -1,5 +1,5 @@ -import { SchemaLike } from '@logto/schemas'; -import { IdentifierSqlToken } from 'slonik'; +import type { SchemaLike } from '@logto/schemas'; +import type { IdentifierSqlToken } from 'slonik'; export type Table = { table: string; fields: Record }; export type FieldIdentifiers = { diff --git a/packages/shared/src/database/utils.test.ts b/packages/shared/src/database/utils.test.ts index b966768b6..396fd981b 100644 --- a/packages/shared/src/database/utils.test.ts +++ b/packages/shared/src/database/utils.test.ts @@ -2,7 +2,7 @@ import dayjs from 'dayjs'; import { sql } from 'slonik'; import { SqlToken } from 'slonik/dist/src/tokens.js'; -import { Table } from './types'; +import type { Table } from './types'; import { excludeAutoSetFields, autoSetFields, diff --git a/packages/shared/src/database/utils.ts b/packages/shared/src/database/utils.ts index 3460b5668..d18afdcf1 100644 --- a/packages/shared/src/database/utils.ts +++ b/packages/shared/src/database/utils.ts @@ -1,9 +1,11 @@ -import { SchemaValuePrimitive, SchemaValue } from '@logto/schemas'; -import { Falsy, notFalsy } from '@silverhand/essentials'; +import type { SchemaValuePrimitive, SchemaValue } from '@logto/schemas'; +import type { Falsy } from '@silverhand/essentials'; +import { notFalsy } from '@silverhand/essentials'; import dayjs from 'dayjs'; -import { sql, SqlSqlToken, SqlToken, QueryResult, IdentifierSqlToken } from 'slonik'; +import type { SqlSqlToken, SqlToken, QueryResult, IdentifierSqlToken } from 'slonik'; +import { sql } from 'slonik'; -import { FieldIdentifiers, Table } from './types'; +import type { FieldIdentifiers, Table } from './types'; export const conditionalSql = (value: T, buildSql: (value: Exclude) => SqlSqlToken) => notFalsy(value) ? buildSql(value) : sql``; diff --git a/packages/ui/src/__mocks__/RenderWithPageContext/SettingsProvider.tsx b/packages/ui/src/__mocks__/RenderWithPageContext/SettingsProvider.tsx index f525b543b..7f58d0c43 100644 --- a/packages/ui/src/__mocks__/RenderWithPageContext/SettingsProvider.tsx +++ b/packages/ui/src/__mocks__/RenderWithPageContext/SettingsProvider.tsx @@ -1,7 +1,8 @@ -import { useContext, useEffect, ReactElement } from 'react'; +import type { ReactElement } from 'react'; +import { useContext, useEffect } from 'react'; import { PageContext } from '@/hooks/use-page-context'; -import { SignInExperienceSettings } from '@/types'; +import type { SignInExperienceSettings } from '@/types'; import { mockSignInExperienceSettings } from '../logto'; diff --git a/packages/ui/src/__mocks__/RenderWithPageContext/index.tsx b/packages/ui/src/__mocks__/RenderWithPageContext/index.tsx index 6950e2ec4..fdec9cdba 100644 --- a/packages/ui/src/__mocks__/RenderWithPageContext/index.tsx +++ b/packages/ui/src/__mocks__/RenderWithPageContext/index.tsx @@ -1,5 +1,6 @@ -import { render, Queries, queries, RenderOptions } from '@testing-library/react'; -import { ReactElement } from 'react'; +import type { Queries, queries, RenderOptions } from '@testing-library/react'; +import { render } from '@testing-library/react'; +import type { ReactElement } from 'react'; import ContextProvider from './ContextProvider'; diff --git a/packages/ui/src/__mocks__/logto.tsx b/packages/ui/src/__mocks__/logto.tsx index f057568fd..e0067d726 100644 --- a/packages/ui/src/__mocks__/logto.tsx +++ b/packages/ui/src/__mocks__/logto.tsx @@ -1,13 +1,13 @@ +import type { SignInExperience } from '@logto/schemas'; import { BrandingStyle, ConnectorPlatform, ConnectorType, - SignInExperience, SignInMethodState, SignInMode, } from '@logto/schemas'; -import { SignInExperienceSettings } from '@/types'; +import type { SignInExperienceSettings } from '@/types'; export const appLogo = 'https://avatars.githubusercontent.com/u/88327661?s=200&v=4'; export const appHeadline = 'Build user identity in a modern way'; diff --git a/packages/ui/src/apis/settings.ts b/packages/ui/src/apis/settings.ts index 2ffc4169f..6061b43cd 100644 --- a/packages/ui/src/apis/settings.ts +++ b/packages/ui/src/apis/settings.ts @@ -3,7 +3,7 @@ * The API will be deprecated in the future once SSR is implemented. */ -import { SignInExperience } from '@logto/schemas'; +import type { SignInExperience } from '@logto/schemas'; import ky from 'ky'; export const getSignInExperience = async (): Promise => { diff --git a/packages/ui/src/apis/utils.ts b/packages/ui/src/apis/utils.ts index 91ae6f784..72f866ce7 100644 --- a/packages/ui/src/apis/utils.ts +++ b/packages/ui/src/apis/utils.ts @@ -1,4 +1,4 @@ -import { UserFlow } from '@/types'; +import type { UserFlow } from '@/types'; import { sendForgotPasswordEmailPasscode, diff --git a/packages/ui/src/components/Button/IconButton.tsx b/packages/ui/src/components/Button/IconButton.tsx index 46db13242..c709f9bd6 100644 --- a/packages/ui/src/components/Button/IconButton.tsx +++ b/packages/ui/src/components/Button/IconButton.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; -import { HTMLProps, forwardRef, Ref } from 'react'; +import type { HTMLProps, Ref } from 'react'; +import { forwardRef } from 'react'; import * as styles from './IconButton.module.scss'; diff --git a/packages/ui/src/components/Button/index.tsx b/packages/ui/src/components/Button/index.tsx index 3d7a2d726..61768432e 100644 --- a/packages/ui/src/components/Button/index.tsx +++ b/packages/ui/src/components/Button/index.tsx @@ -1,6 +1,6 @@ -import { I18nKey } from '@logto/phrases-ui'; +import type { I18nKey } from '@logto/phrases-ui'; import classNames from 'classnames'; -import { HTMLProps } from 'react'; +import type { HTMLProps } from 'react'; import { useTranslation } from 'react-i18next'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/components/Checkbox/index.tsx b/packages/ui/src/components/Checkbox/index.tsx index 5dc6e1c55..cab79df99 100644 --- a/packages/ui/src/components/Checkbox/index.tsx +++ b/packages/ui/src/components/Checkbox/index.tsx @@ -1,4 +1,5 @@ -import { forwardRef, InputHTMLAttributes, Ref } from 'react'; +import type { InputHTMLAttributes, Ref } from 'react'; +import { forwardRef } from 'react'; import CheckBox from '@/assets/icons/checkbox-icon.svg'; import RadioButton from '@/assets/icons/radio-button-icon.svg'; diff --git a/packages/ui/src/components/ConfirmModal/AcModal.tsx b/packages/ui/src/components/ConfirmModal/AcModal.tsx index d55609f92..2dc670d56 100644 --- a/packages/ui/src/components/ConfirmModal/AcModal.tsx +++ b/packages/ui/src/components/ConfirmModal/AcModal.tsx @@ -8,7 +8,7 @@ import IconButton from '@/components/Button/IconButton'; import * as modalStyles from '../../scss/modal.module.scss'; import * as styles from './Acmodal.module.scss'; -import { ModalProps } from './type'; +import type { ModalProps } from './type'; const AcModal = ({ className, diff --git a/packages/ui/src/components/ConfirmModal/MobileModal.tsx b/packages/ui/src/components/ConfirmModal/MobileModal.tsx index 093b50537..1acb3733c 100644 --- a/packages/ui/src/components/ConfirmModal/MobileModal.tsx +++ b/packages/ui/src/components/ConfirmModal/MobileModal.tsx @@ -5,7 +5,7 @@ import Button from '@/components/Button'; import * as modalStyles from '../../scss/modal.module.scss'; import * as styles from './MobileModal.module.scss'; -import { ModalProps } from './type'; +import type { ModalProps } from './type'; const MobileModal = ({ className, diff --git a/packages/ui/src/components/ConfirmModal/type.ts b/packages/ui/src/components/ConfirmModal/type.ts index 10489d884..5c76ae5fa 100644 --- a/packages/ui/src/components/ConfirmModal/type.ts +++ b/packages/ui/src/components/ConfirmModal/type.ts @@ -1,5 +1,5 @@ -import { ReactNode, MouseEventHandler } from 'react'; -import { TFuncKey } from 'react-i18next'; +import type { ReactNode, MouseEventHandler } from 'react'; +import type { TFuncKey } from 'react-i18next'; export type ModalProps = { className?: string; diff --git a/packages/ui/src/components/Divider/index.tsx b/packages/ui/src/components/Divider/index.tsx index 7964bb498..044c5cdf6 100644 --- a/packages/ui/src/components/Divider/index.tsx +++ b/packages/ui/src/components/Divider/index.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/components/Drawer/index.tsx b/packages/ui/src/components/Drawer/index.tsx index 2c2e7f5e3..393a067ae 100644 --- a/packages/ui/src/components/Drawer/index.tsx +++ b/packages/ui/src/components/Drawer/index.tsx @@ -1,5 +1,5 @@ import classNames from 'classnames'; -import { ReactNode } from 'react'; +import type { ReactNode } from 'react'; import ReactModal from 'react-modal'; import CloseIcon from '@/assets/icons/close-icon.svg'; diff --git a/packages/ui/src/components/Dropdown/index.tsx b/packages/ui/src/components/Dropdown/index.tsx index cbea56233..83ace8a82 100644 --- a/packages/ui/src/components/Dropdown/index.tsx +++ b/packages/ui/src/components/Dropdown/index.tsx @@ -1,5 +1,6 @@ import classNames from 'classnames'; -import ReactModal, { Props as ModalProps } from 'react-modal'; +import type { Props as ModalProps } from 'react-modal'; +import ReactModal from 'react-modal'; import { onKeyDownHandler } from '@/utils/a11y'; diff --git a/packages/ui/src/components/ErrorMessage/index.tsx b/packages/ui/src/components/ErrorMessage/index.tsx index 0c8b5fbc9..9766da8ef 100644 --- a/packages/ui/src/components/ErrorMessage/index.tsx +++ b/packages/ui/src/components/ErrorMessage/index.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; -import { ReactNode } from 'react'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { ReactNode } from 'react'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/components/Input/PasswordInput.tsx b/packages/ui/src/components/Input/PasswordInput.tsx index bb58794f6..6f22af369 100644 --- a/packages/ui/src/components/Input/PasswordInput.tsx +++ b/packages/ui/src/components/Input/PasswordInput.tsx @@ -1,9 +1,11 @@ import classNames from 'classnames'; -import { useState, useRef, HTMLProps } from 'react'; +import type { HTMLProps } from 'react'; +import { useState, useRef } from 'react'; import PasswordHideIcon from '@/assets/icons/password-hide-icon.svg'; import PasswordShowIcon from '@/assets/icons/password-show-icon.svg'; -import ErrorMessage, { ErrorType } from '@/components/ErrorMessage'; +import type { ErrorType } from '@/components/ErrorMessage'; +import ErrorMessage from '@/components/ErrorMessage'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/components/Input/PhoneInput.tsx b/packages/ui/src/components/Input/PhoneInput.tsx index 9b281fde7..8ec00f9bd 100644 --- a/packages/ui/src/components/Input/PhoneInput.tsx +++ b/packages/ui/src/components/Input/PhoneInput.tsx @@ -3,8 +3,9 @@ import { useState, useMemo, useRef } from 'react'; import DownArrowIcon from '@/assets/icons/arrow-down.svg'; import ClearIcon from '@/assets/icons/clear-icon.svg'; -import ErrorMessage, { ErrorType } from '@/components/ErrorMessage'; -import { CountryCallingCode, CountryMetaData } from '@/hooks/use-phone-number'; +import type { ErrorType } from '@/components/ErrorMessage'; +import ErrorMessage from '@/components/ErrorMessage'; +import type { CountryCallingCode, CountryMetaData } from '@/hooks/use-phone-number'; import * as styles from './index.module.scss'; import * as phoneInputStyles from './phoneInput.module.scss'; diff --git a/packages/ui/src/components/Input/index.tsx b/packages/ui/src/components/Input/index.tsx index bd5c66084..fe639c22b 100644 --- a/packages/ui/src/components/Input/index.tsx +++ b/packages/ui/src/components/Input/index.tsx @@ -1,8 +1,9 @@ import classNames from 'classnames'; -import { HTMLProps } from 'react'; +import type { HTMLProps } from 'react'; import ClearIcon from '@/assets/icons/clear-icon.svg'; -import ErrorMessage, { ErrorType } from '@/components/ErrorMessage'; +import type { ErrorType } from '@/components/ErrorMessage'; +import ErrorMessage from '@/components/ErrorMessage'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/components/Passcode/index.tsx b/packages/ui/src/components/Passcode/index.tsx index f99234ace..7a17f0386 100644 --- a/packages/ui/src/components/Passcode/index.tsx +++ b/packages/ui/src/components/Passcode/index.tsx @@ -1,12 +1,5 @@ -import { - useMemo, - useRef, - useCallback, - useEffect, - FormEventHandler, - KeyboardEventHandler, - ClipboardEventHandler, -} from 'react'; +import type { FormEventHandler, KeyboardEventHandler, ClipboardEventHandler } from 'react'; +import { useMemo, useRef, useCallback, useEffect } from 'react'; import ErrorMessage from '@/components/ErrorMessage'; diff --git a/packages/ui/src/components/TextLink/index.tsx b/packages/ui/src/components/TextLink/index.tsx index 8e10648f6..eecfaeadc 100644 --- a/packages/ui/src/components/TextLink/index.tsx +++ b/packages/ui/src/components/TextLink/index.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; -import { ReactNode, AnchorHTMLAttributes } from 'react'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { ReactNode, AnchorHTMLAttributes } from 'react'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import { Link } from 'react-router-dom'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/containers/AppContent/index.tsx b/packages/ui/src/containers/AppContent/index.tsx index 862b0afca..55e35f46a 100644 --- a/packages/ui/src/containers/AppContent/index.tsx +++ b/packages/ui/src/containers/AppContent/index.tsx @@ -1,5 +1,6 @@ import { conditionalString } from '@silverhand/essentials'; -import { ReactNode, useEffect, useCallback, useContext } from 'react'; +import type { ReactNode } from 'react'; +import { useEffect, useCallback, useContext } from 'react'; import Toast from '@/components/Toast'; import ConfirmModalProvider from '@/containers/ConfirmModalProvider'; diff --git a/packages/ui/src/containers/ConfirmModalProvider/index.tsx b/packages/ui/src/containers/ConfirmModalProvider/index.tsx index f3683efe1..32c51807a 100644 --- a/packages/ui/src/containers/ConfirmModalProvider/index.tsx +++ b/packages/ui/src/containers/ConfirmModalProvider/index.tsx @@ -1,7 +1,8 @@ -import { Nullable } from '@silverhand/essentials'; +import type { Nullable } from '@silverhand/essentials'; import { useState, useRef, useMemo, createContext, useCallback } from 'react'; -import { WebModal, MobileModal, ModalProps } from '@/components/ConfirmModal'; +import type { ModalProps } from '@/components/ConfirmModal'; +import { WebModal, MobileModal } from '@/components/ConfirmModal'; import usePlatform from '@/hooks/use-platform'; export type ModalContentRenderProps = { diff --git a/packages/ui/src/containers/CreateAccount/index.tsx b/packages/ui/src/containers/CreateAccount/index.tsx index 63a160a91..b008a9de1 100644 --- a/packages/ui/src/containers/CreateAccount/index.tsx +++ b/packages/ui/src/containers/CreateAccount/index.tsx @@ -6,7 +6,8 @@ import { register } from '@/apis/register'; import Button from '@/components/Button'; import Input from '@/components/Input'; import TermsOfUse from '@/containers/TermsOfUse'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useForm from '@/hooks/use-form'; import useTerms from '@/hooks/use-terms'; import { diff --git a/packages/ui/src/containers/PasscodeValidation/index.tsx b/packages/ui/src/containers/PasscodeValidation/index.tsx index 0a0c8bd58..4af51c20c 100644 --- a/packages/ui/src/containers/PasscodeValidation/index.tsx +++ b/packages/ui/src/containers/PasscodeValidation/index.tsx @@ -7,9 +7,11 @@ import { useTimer } from 'react-timer-hook'; import { getSendPasscodeApi, getVerifyPasscodeApi } from '@/apis/utils'; import Passcode, { defaultLength } from '@/components/Passcode'; import TextLink from '@/components/TextLink'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { PageContext } from '@/hooks/use-page-context'; -import { UserFlow, SearchParameters } from '@/types'; +import type { UserFlow } from '@/types'; +import { SearchParameters } from '@/types'; import { getSearchParameters } from '@/utils'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-email-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-email-error-handler.ts index 8e0bb2067..1e5f3a19f 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-email-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-email-error-handler.ts @@ -2,7 +2,7 @@ import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; -import { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; const useForgotPasswordWithEmailErrorHandler = (email: string) => { diff --git a/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-sms-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-sms-error-handler.ts index aa8461d11..cf4b28c79 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-sms-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-forgot-password-with-sms-error-handler.ts @@ -2,7 +2,7 @@ import { useCallback, useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; -import { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; import { formatPhoneNumberWithCountryCallingCode } from '@/utils/country-code'; diff --git a/packages/ui/src/containers/PasscodeValidation/use-passcode-validation-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-passcode-validation-error-handler.ts index 1454f66c3..e416ea075 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-passcode-validation-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-passcode-validation-error-handler.ts @@ -1,4 +1,4 @@ -import { UserFlow } from '@/types'; +import type { UserFlow } from '@/types'; import useForgotPasswordWithEmailErrorHandler from './use-forgot-password-with-email-error-handler'; import useForgotPasswordWithSmsErrorHandler from './use-forgot-password-with-sms-error-handler'; diff --git a/packages/ui/src/containers/PasscodeValidation/use-register-with-sms-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-register-with-sms-error-handler.ts index 66d72f737..af70f2323 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-register-with-sms-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-register-with-sms-error-handler.ts @@ -3,7 +3,8 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { signInWithSms } from '@/apis/sign-in'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; import { formatPhoneNumberWithCountryCallingCode } from '@/utils/country-code'; diff --git a/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-email-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-email-error-handler.ts index 7fa92996a..058404280 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-email-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-email-error-handler.ts @@ -3,7 +3,8 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { registerWithEmail } from '@/apis/register'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; import { PageContext } from '@/hooks/use-page-context'; import { SearchParameters } from '@/types'; diff --git a/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-sms-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-sms-error-handler.ts index 615a1c221..84c414554 100644 --- a/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-sms-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/use-sign-in-with-sms-error-handler.ts @@ -3,7 +3,8 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { registerWithSms } from '@/apis/register'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; import { PageContext } from '@/hooks/use-page-context'; import { SearchParameters } from '@/types'; diff --git a/packages/ui/src/containers/PasscodeValidation/user-register-with-email-error-handler.ts b/packages/ui/src/containers/PasscodeValidation/user-register-with-email-error-handler.ts index b38e382a3..d10aa1fd3 100644 --- a/packages/ui/src/containers/PasscodeValidation/user-register-with-email-error-handler.ts +++ b/packages/ui/src/containers/PasscodeValidation/user-register-with-email-error-handler.ts @@ -3,7 +3,8 @@ import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import { signInWithEmail } from '@/apis/sign-in'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; const useRegisterWithEmailErrorHandler = (email: string) => { diff --git a/packages/ui/src/containers/Passwordless/EmailPasswordless.tsx b/packages/ui/src/containers/Passwordless/EmailPasswordless.tsx index 7d34d4d3e..dc25c1124 100644 --- a/packages/ui/src/containers/Passwordless/EmailPasswordless.tsx +++ b/packages/ui/src/containers/Passwordless/EmailPasswordless.tsx @@ -7,10 +7,11 @@ import { getSendPasscodeApi } from '@/apis/utils'; import Button from '@/components/Button'; import Input from '@/components/Input'; import TermsOfUse from '@/containers/TermsOfUse'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useForm from '@/hooks/use-form'; import useTerms from '@/hooks/use-terms'; -import { UserFlow } from '@/types'; +import type { UserFlow } from '@/types'; import { emailValidation } from '@/utils/field-validations'; import PasswordlessSwitch from './PasswordlessSwitch'; diff --git a/packages/ui/src/containers/Passwordless/PhonePasswordless.tsx b/packages/ui/src/containers/Passwordless/PhonePasswordless.tsx index b0f9b9bc4..cf0dd9bfc 100644 --- a/packages/ui/src/containers/Passwordless/PhonePasswordless.tsx +++ b/packages/ui/src/containers/Passwordless/PhonePasswordless.tsx @@ -7,11 +7,12 @@ import { getSendPasscodeApi } from '@/apis/utils'; import Button from '@/components/Button'; import { PhoneInput } from '@/components/Input'; import TermsOfUse from '@/containers/TermsOfUse'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useForm from '@/hooks/use-form'; import usePhoneNumber from '@/hooks/use-phone-number'; import useTerms from '@/hooks/use-terms'; -import { UserFlow } from '@/types'; +import type { UserFlow } from '@/types'; import PasswordlessSwitch from './PasswordlessSwitch'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/containers/ResetPassword/index.tsx b/packages/ui/src/containers/ResetPassword/index.tsx index 31eeb9f32..096ba680b 100644 --- a/packages/ui/src/containers/ResetPassword/index.tsx +++ b/packages/ui/src/containers/ResetPassword/index.tsx @@ -7,7 +7,8 @@ import { resetPassword } from '@/apis/forgot-password'; import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import Input from '@/components/Input'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; import useForm from '@/hooks/use-form'; import { PageContext } from '@/hooks/use-page-context'; diff --git a/packages/ui/src/containers/SignInMethodsLink/index.tsx b/packages/ui/src/containers/SignInMethodsLink/index.tsx index 12d4ad912..5c0062a73 100644 --- a/packages/ui/src/containers/SignInMethodsLink/index.tsx +++ b/packages/ui/src/containers/SignInMethodsLink/index.tsx @@ -1,11 +1,13 @@ import classNames from 'classnames'; -import { useMemo, ReactNode } from 'react'; -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { ReactNode } from 'react'; +import { useMemo } from 'react'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import reactStringReplace from 'react-string-replace'; import TextLink from '@/components/TextLink'; -import { LocalSignInMethod } from '@/types'; +import type { LocalSignInMethod } from '@/types'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx index 11505627b..3f88d4267 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.test.tsx @@ -1,4 +1,4 @@ -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import { fireEvent } from '@testing-library/react'; import { MemoryRouter } from 'react-router-dom'; diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.tsx index 7744b327e..68452180d 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInDropdown/index.tsx @@ -1,5 +1,5 @@ import { getDefaultLanguage } from '@logto/core-kit'; -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import { useState, useCallback } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInIconList/index.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInIconList/index.tsx index 2cb09de56..0d2521ab8 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInIconList/index.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInIconList/index.tsx @@ -1,10 +1,11 @@ -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import classNames from 'classnames'; import MoreSocialIcon from '@/assets/icons/more-social-icon.svg'; import IconButton from '@/components/Button/IconButton'; import SocialIconButton from '@/components/Button/SocialIconButton'; import useSocial from '@/hooks/use-social'; +import { getLogoUrl } from '@/utils/logo'; import { isAppleConnector } from '@/utils/social-connectors'; import * as styles from './index.module.scss'; @@ -29,21 +30,13 @@ const SocialSignInIconList = ({ return (
{connectors.map((connector) => { - const { id, target, logo, logoDark } = connector; - - const getLogo = () => { - if (theme === 'dark') { - return (!isAppleConnector(target) && logoDark) || logo; - } - - return (isAppleConnector(target) && logoDark) || logo; - }; + const { id, target, logo: logoUrl, logoDark: darkLogoUrl } = connector; return ( { void invokeSocialSignIn(connector); diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInList/index.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInList/index.tsx index 29d302117..a86cc3d25 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInList/index.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInList/index.tsx @@ -1,4 +1,4 @@ -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import classNames from 'classnames'; import { useState, useMemo } from 'react'; @@ -6,6 +6,7 @@ import ExpandIcon from '@/assets/icons/expand-icon.svg'; import IconButton from '@/components/Button/IconButton'; import SocialLinkButton from '@/components/Button/SocialLinkButton'; import useSocial from '@/hooks/use-social'; +import { getLogoUrl } from '@/utils/logo'; import * as styles from './index.module.scss'; @@ -40,14 +41,14 @@ const SocialSignInList = ({ return (
{displayConnectors.map((connector) => { - const { id, name, logo, logoDark, target } = connector; + const { id, name, logo: logoUrl, logoDark: darkLogoUrl, target } = connector; return ( { void invokeSocialSignIn(connector); diff --git a/packages/ui/src/containers/SocialSignIn/SocialSignInPopUp/index.tsx b/packages/ui/src/containers/SocialSignIn/SocialSignInPopUp/index.tsx index 8ccf27c58..14146b3d9 100644 --- a/packages/ui/src/containers/SocialSignIn/SocialSignInPopUp/index.tsx +++ b/packages/ui/src/containers/SocialSignIn/SocialSignInPopUp/index.tsx @@ -1,4 +1,4 @@ -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import Drawer from '@/components/Drawer'; diff --git a/packages/ui/src/containers/TermsOfUse/TermsOfUseConfirmModalContent/index.tsx b/packages/ui/src/containers/TermsOfUse/TermsOfUseConfirmModalContent/index.tsx index 5ebefc27c..2ad598400 100644 --- a/packages/ui/src/containers/TermsOfUse/TermsOfUseConfirmModalContent/index.tsx +++ b/packages/ui/src/containers/TermsOfUse/TermsOfUseConfirmModalContent/index.tsx @@ -2,7 +2,7 @@ import { useContext } from 'react'; import { useTranslation, Trans } from 'react-i18next'; import TextLink from '@/components/TextLink'; -import { ModalContentRenderProps } from '@/hooks/use-confirm-modal'; +import type { ModalContentRenderProps } from '@/hooks/use-confirm-modal'; import { PageContext } from '@/hooks/use-page-context'; import usePlatform from '@/hooks/use-platform'; import { ConfirmModalMessage } from '@/types'; diff --git a/packages/ui/src/containers/UsernameSignIn/index.tsx b/packages/ui/src/containers/UsernameSignIn/index.tsx index b827978ad..f1c9e0f72 100644 --- a/packages/ui/src/containers/UsernameSignIn/index.tsx +++ b/packages/ui/src/containers/UsernameSignIn/index.tsx @@ -7,7 +7,8 @@ import Button from '@/components/Button'; import ErrorMessage from '@/components/ErrorMessage'; import Input, { PasswordInput } from '@/components/Input'; import TermsOfUse from '@/containers/TermsOfUse'; -import useApi, { ErrorHandlers } from '@/hooks/use-api'; +import type { ErrorHandlers } from '@/hooks/use-api'; +import useApi from '@/hooks/use-api'; import useForm from '@/hooks/use-form'; import useTerms from '@/hooks/use-terms'; import { SearchParameters } from '@/types'; diff --git a/packages/ui/src/hooks/use-api.ts b/packages/ui/src/hooks/use-api.ts index a3781410a..303b2eb0d 100644 --- a/packages/ui/src/hooks/use-api.ts +++ b/packages/ui/src/hooks/use-api.ts @@ -1,5 +1,5 @@ import type { LogtoErrorCode } from '@logto/phrases'; -import { RequestErrorBody } from '@logto/schemas'; +import type { RequestErrorBody } from '@logto/schemas'; import { HTTPError } from 'ky'; import { useState, useCallback, useContext, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; diff --git a/packages/ui/src/hooks/use-bind-social.ts b/packages/ui/src/hooks/use-bind-social.ts index f18f603cc..1c0ef8c70 100644 --- a/packages/ui/src/hooks/use-bind-social.ts +++ b/packages/ui/src/hooks/use-bind-social.ts @@ -6,7 +6,7 @@ import { is } from 'superstruct'; import { registerWithSocial, bindSocialRelatedUser } from '@/apis/social'; import useApi from '@/hooks/use-api'; import { PageContext } from '@/hooks/use-page-context'; -import { LocalSignInMethod } from '@/types'; +import type { LocalSignInMethod } from '@/types'; import { bindSocialStateGuard } from '@/types/guard'; const useBindSocial = () => { diff --git a/packages/ui/src/hooks/use-form.ts b/packages/ui/src/hooks/use-form.ts index 3a0743ff1..79ab8756c 100644 --- a/packages/ui/src/hooks/use-form.ts +++ b/packages/ui/src/hooks/use-form.ts @@ -1,7 +1,9 @@ -import { useState, useCallback, useEffect, useRef, FormEvent } from 'react'; +import type { FormEvent } from 'react'; +import { useState, useCallback, useEffect, useRef } from 'react'; -import { ErrorType } from '@/components/ErrorMessage'; -import { entries, fromEntries, Entries } from '@/utils'; +import type { ErrorType } from '@/components/ErrorMessage'; +import type { Entries } from '@/utils'; +import { entries, fromEntries } from '@/utils'; const useForm = >(initialState: T) => { type ErrorState = { diff --git a/packages/ui/src/hooks/use-page-context.ts b/packages/ui/src/hooks/use-page-context.ts index 3656a0c1d..29648b124 100644 --- a/packages/ui/src/hooks/use-page-context.ts +++ b/packages/ui/src/hooks/use-page-context.ts @@ -1,7 +1,7 @@ import { useState, useMemo, createContext } from 'react'; import { isMobile } from 'react-device-detect'; -import { SignInExperienceSettings, Platform, Theme } from '@/types'; +import type { SignInExperienceSettings, Platform, Theme } from '@/types'; export type Context = { theme: Theme; diff --git a/packages/ui/src/hooks/use-phone-number.ts b/packages/ui/src/hooks/use-phone-number.ts index 275c04414..b8de5ee6b 100644 --- a/packages/ui/src/hooks/use-phone-number.ts +++ b/packages/ui/src/hooks/use-phone-number.ts @@ -3,12 +3,8 @@ * Reference [libphonenumber-js](https://gitlab.com/catamphetamine/libphonenumber-js) */ -import { - parsePhoneNumberWithError, - CountryCallingCode, - ParseError, - CountryCode, -} from 'libphonenumber-js/mobile'; +import type { CountryCallingCode, CountryCode } from 'libphonenumber-js/mobile'; +import { parsePhoneNumberWithError, ParseError } from 'libphonenumber-js/mobile'; import { useState } from 'react'; import { diff --git a/packages/ui/src/hooks/use-preview.ts b/packages/ui/src/hooks/use-preview.ts index 0229e978f..b18b0c010 100644 --- a/packages/ui/src/hooks/use-preview.ts +++ b/packages/ui/src/hooks/use-preview.ts @@ -3,10 +3,10 @@ import { conditionalString } from '@silverhand/essentials'; import { useEffect, useState } from 'react'; import * as styles from '@/App.module.scss'; -import { Context } from '@/hooks/use-page-context'; +import type { Context } from '@/hooks/use-page-context'; import initI18n from '@/i18n/init'; import { changeLanguage } from '@/i18n/utils'; -import { SignInExperienceSettings, PreviewConfig } from '@/types'; +import type { SignInExperienceSettings, PreviewConfig } from '@/types'; import { parseQueryParameters } from '@/utils'; import { getPrimarySignInMethod, getSecondarySignInMethods } from '@/utils/sign-in-experience'; import { filterPreviewSocialConnectors } from '@/utils/social-connectors'; diff --git a/packages/ui/src/hooks/use-social-sign-in-listener.ts b/packages/ui/src/hooks/use-social-sign-in-listener.ts index 1336903e7..17aa2732f 100644 --- a/packages/ui/src/hooks/use-social-sign-in-listener.ts +++ b/packages/ui/src/hooks/use-social-sign-in-listener.ts @@ -6,7 +6,8 @@ import { signInWithSocial } from '@/apis/social'; import { parseQueryParameters } from '@/utils'; import { stateValidation } from '@/utils/social-connectors'; -import useApi, { ErrorHandlers } from './use-api'; +import type { ErrorHandlers } from './use-api'; +import useApi from './use-api'; import { PageContext } from './use-page-context'; const useSocialSignInListener = () => { diff --git a/packages/ui/src/hooks/use-social.ts b/packages/ui/src/hooks/use-social.ts index da23c402d..7086e74a2 100644 --- a/packages/ui/src/hooks/use-social.ts +++ b/packages/ui/src/hooks/use-social.ts @@ -1,4 +1,4 @@ -import { ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; import { useCallback, useContext } from 'react'; import { invokeSocialSignIn } from '@/apis/social'; diff --git a/packages/ui/src/hooks/use-theme.ts b/packages/ui/src/hooks/use-theme.ts index 289428390..e85eb79b8 100644 --- a/packages/ui/src/hooks/use-theme.ts +++ b/packages/ui/src/hooks/use-theme.ts @@ -1,6 +1,6 @@ import { useEffect, useContext } from 'react'; -import { Theme } from '@/types'; +import type { Theme } from '@/types'; import { PageContext } from './use-page-context'; diff --git a/packages/ui/src/i18n/init.ts b/packages/ui/src/i18n/init.ts index 7e10ef9c1..f5f6f27e6 100644 --- a/packages/ui/src/i18n/init.ts +++ b/packages/ui/src/i18n/init.ts @@ -1,5 +1,6 @@ -import { LanguageInfo } from '@logto/schemas'; -import i18next, { InitOptions } from 'i18next'; +import type { LanguageInfo } from '@logto/schemas'; +import type { InitOptions } from 'i18next'; +import i18next from 'i18next'; import { initReactI18next } from 'react-i18next'; import { getI18nResource, detectLanguage } from '@/i18n/utils'; diff --git a/packages/ui/src/i18n/utils.ts b/packages/ui/src/i18n/utils.ts index b46e44889..a0a758859 100644 --- a/packages/ui/src/i18n/utils.ts +++ b/packages/ui/src/i18n/utils.ts @@ -1,6 +1,8 @@ -import resource, { LocalePhrase } from '@logto/phrases-ui'; -import { LanguageInfo } from '@logto/schemas'; -import i18next, { Resource } from 'i18next'; +import type { LocalePhrase } from '@logto/phrases-ui'; +import resource from '@logto/phrases-ui'; +import type { LanguageInfo } from '@logto/schemas'; +import type { Resource } from 'i18next'; +import i18next from 'i18next'; import LanguageDetector from 'i18next-browser-languagedetector'; import { getPhrases } from '@/apis/settings'; diff --git a/packages/ui/src/include.d/react-app.d.ts b/packages/ui/src/include.d/react-app.d.ts index 777943041..c2ef4a4de 100644 --- a/packages/ui/src/include.d/react-app.d.ts +++ b/packages/ui/src/include.d/react-app.d.ts @@ -36,7 +36,7 @@ declare module '*.webp' { } declare module '*.svg' { - import * as React from 'react'; + import type * as React from 'react'; export const ReactComponent: React.FunctionComponent< React.SVGProps & { title?: string } diff --git a/packages/ui/src/include.d/react-i18next.d.ts b/packages/ui/src/include.d/react-i18next.d.ts index 4b99b1185..427faa7a7 100644 --- a/packages/ui/src/include.d/react-i18next.d.ts +++ b/packages/ui/src/include.d/react-i18next.d.ts @@ -2,7 +2,7 @@ // eslint-disable-next-line import/no-unassigned-import import 'react-i18next'; -import en from '@logto/phrases-ui/lib/locales/en.js'; +import type en from '@logto/phrases-ui/lib/locales/en.js'; declare module 'react-i18next' { interface CustomTypeOptions { diff --git a/packages/ui/src/pages/Consent/index.tsx b/packages/ui/src/pages/Consent/index.tsx index 9bb7eaab9..eddb35cc6 100644 --- a/packages/ui/src/pages/Consent/index.tsx +++ b/packages/ui/src/pages/Consent/index.tsx @@ -4,12 +4,14 @@ import { consent } from '@/apis/consent'; import { LoadingIcon } from '@/components/LoadingLayer'; import useApi from '@/hooks/use-api'; import { PageContext } from '@/hooks/use-page-context'; +import { getLogoUrl } from '@/utils/logo'; import * as styles from './index.module.scss'; const Consent = () => { const { experienceSettings, theme } = useContext(PageContext); const { error, result, run: asyncConsent } = useApi(consent); + const branding = experienceSettings?.branding; useEffect(() => { void asyncConsent(); @@ -23,13 +25,12 @@ const Consent = () => { return (
- logo + {branding && ( + logo + )} {!error && }
); diff --git a/packages/ui/src/pages/ErrorPage/index.tsx b/packages/ui/src/pages/ErrorPage/index.tsx index efa78051f..213b74340 100644 --- a/packages/ui/src/pages/ErrorPage/index.tsx +++ b/packages/ui/src/pages/ErrorPage/index.tsx @@ -1,4 +1,5 @@ -import { TFuncKey, useTranslation } from 'react-i18next'; +import type { TFuncKey } from 'react-i18next'; +import { useTranslation } from 'react-i18next'; import { useNavigate } from 'react-router-dom'; import ErrorImage from '@/assets/icons/error.svg'; @@ -17,7 +18,7 @@ const ErrorPage = ({ title = 'description.not_found', message, rawMessage }: Pro const { t } = useTranslation(); const navigate = useNavigate(); - const errorMessage = rawMessage || (message && t(message)); + const errorMessage = rawMessage ?? (message && t(message)); return (
diff --git a/packages/ui/src/pages/Passcode/index.tsx b/packages/ui/src/pages/Passcode/index.tsx index 7a604dfd3..751771a2b 100644 --- a/packages/ui/src/pages/Passcode/index.tsx +++ b/packages/ui/src/pages/Passcode/index.tsx @@ -5,7 +5,7 @@ import { is } from 'superstruct'; import NavBar from '@/components/NavBar'; import PasscodeValidation from '@/containers/PasscodeValidation'; import ErrorPage from '@/pages/ErrorPage'; -import { UserFlow } from '@/types'; +import type { UserFlow } from '@/types'; import { passcodeStateGuard, passcodeMethodGuard, userFlowGuard } from '@/types/guard'; import * as styles from './index.module.scss'; diff --git a/packages/ui/src/pages/SignIn/index.tsx b/packages/ui/src/pages/SignIn/index.tsx index 6e4d7ffb5..ab13942ba 100644 --- a/packages/ui/src/pages/SignIn/index.tsx +++ b/packages/ui/src/pages/SignIn/index.tsx @@ -5,6 +5,7 @@ import { useContext } from 'react'; import BrandingHeader from '@/components/BrandingHeader'; import AppNotification from '@/containers/AppNotification'; import { PageContext } from '@/hooks/use-page-context'; +import { getLogoUrl } from '@/utils/logo'; import * as styles from './index.module.scss'; import { PrimarySection, SecondarySection, CreateAccountLink } from './registry'; @@ -25,7 +26,7 @@ const SignIn = () => { = ((event: KeyboardEvent) => void) | undefined; diff --git a/packages/ui/src/utils/country-code.ts b/packages/ui/src/utils/country-code.ts index f0cf11cd6..9ad096532 100644 --- a/packages/ui/src/utils/country-code.ts +++ b/packages/ui/src/utils/country-code.ts @@ -1,9 +1,7 @@ import i18next from 'i18next'; +import type { CountryCode, CountryCallingCode, E164Number } from 'libphonenumber-js/mobile'; import { getCountries, - CountryCode, - CountryCallingCode, - E164Number, getCountryCallingCode, parsePhoneNumberWithError, } from 'libphonenumber-js/mobile'; diff --git a/packages/ui/src/utils/field-validations.ts b/packages/ui/src/utils/field-validations.ts index 2b542e6e8..714037b73 100644 --- a/packages/ui/src/utils/field-validations.ts +++ b/packages/ui/src/utils/field-validations.ts @@ -1,4 +1,4 @@ -import { ErrorType } from '@/components/ErrorMessage'; +import type { ErrorType } from '@/components/ErrorMessage'; const usernameRegex = /^[A-Z_a-z-][\w-]*$/; const emailRegex = /^\S+@\S+\.\S+$/; diff --git a/packages/ui/src/utils/logo.ts b/packages/ui/src/utils/logo.ts new file mode 100644 index 000000000..5fe96d767 --- /dev/null +++ b/packages/ui/src/utils/logo.ts @@ -0,0 +1,18 @@ +import type { Nullable } from '@silverhand/essentials'; + +import type { Theme } from '@/types'; + +export type GetLogoUrl = { + theme: Theme; + logoUrl: string; + darkLogoUrl?: Nullable; + isApple?: boolean; +}; + +export const getLogoUrl = ({ theme, logoUrl, darkLogoUrl, isApple }: GetLogoUrl) => { + if (theme === (isApple ? 'light' : 'dark')) { + return darkLogoUrl ?? logoUrl; + } + + return logoUrl; +}; diff --git a/packages/ui/src/utils/sign-in-experience.ts b/packages/ui/src/utils/sign-in-experience.ts index a324af03b..c903a054c 100644 --- a/packages/ui/src/utils/sign-in-experience.ts +++ b/packages/ui/src/utils/sign-in-experience.ts @@ -3,10 +3,14 @@ * Remove this once we have a better way to get the sign in experience through SSR */ -import { SignInMethods } from '@logto/schemas'; +import type { SignInMethods } from '@logto/schemas'; import { getSignInExperience } from '@/apis/settings'; -import { SignInMethod, SignInExperienceSettingsResponse, SignInExperienceSettings } from '@/types'; +import type { + SignInMethod, + SignInExperienceSettingsResponse, + SignInExperienceSettings, +} from '@/types'; import { filterSocialConnectors } from '@/utils/social-connectors'; import { entries } from '.'; diff --git a/packages/ui/src/utils/social-connectors.test.ts b/packages/ui/src/utils/social-connectors.test.ts index de75319de..6c54dd5e8 100644 --- a/packages/ui/src/utils/social-connectors.test.ts +++ b/packages/ui/src/utils/social-connectors.test.ts @@ -1,4 +1,5 @@ -import { ConnectorPlatform, ConnectorMetadata } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; +import { ConnectorPlatform } from '@logto/schemas'; import { SearchParameters } from '@/types'; import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk'; diff --git a/packages/ui/src/utils/social-connectors.ts b/packages/ui/src/utils/social-connectors.ts index 89fd40e6a..ec668ec20 100644 --- a/packages/ui/src/utils/social-connectors.ts +++ b/packages/ui/src/utils/social-connectors.ts @@ -1,4 +1,5 @@ -import { ConnectorMetadata, ConnectorPlatform } from '@logto/schemas'; +import type { ConnectorMetadata } from '@logto/schemas'; +import { ConnectorPlatform } from '@logto/schemas'; import { SearchParameters } from '@/types'; import { generateRandomString } from '@/utils';