From 1d9448a7597accaacc80c18ef4edf2fa4e4eaefc Mon Sep 17 00:00:00 2001 From: jack zhang <1098626505@qq.com> Date: Fri, 10 May 2024 16:55:35 +0800 Subject: [PATCH] refactor: export AuthenticatorsContextProvider and add client.d.ts (#4311) --- .eslintignore | 3 +- .../templates/plugin/src/client/client.d.ts | 249 ++++++++++++++++++ .../templates/app/.eslintignore | 3 +- .../plugin-auth/src/client/index.tsx | 1 + .../src/client/pages/AuthLayout.tsx | 15 +- 5 files changed, 264 insertions(+), 7 deletions(-) create mode 100644 packages/core/cli/templates/plugin/src/client/client.d.ts diff --git a/.eslintignore b/.eslintignore index 84d08bb1b4..807ba05882 100755 --- a/.eslintignore +++ b/.eslintignore @@ -29,4 +29,5 @@ docker storage benchmark packages/core/cli/src -t.js \ No newline at end of file +t.js +packages/**/client.d.ts diff --git a/packages/core/cli/templates/plugin/src/client/client.d.ts b/packages/core/cli/templates/plugin/src/client/client.d.ts new file mode 100644 index 0000000000..4e96f83fa1 --- /dev/null +++ b/packages/core/cli/templates/plugin/src/client/client.d.ts @@ -0,0 +1,249 @@ +/** + * This file is part of the NocoBase (R) project. + * Copyright (c) 2020-2024 NocoBase Co., Ltd. + * Authors: NocoBase Team. + * + * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License. + * For more information, please refer to: https://www.nocobase.com/agreement. + */ + +// CSS modules +type CSSModuleClasses = { readonly [key: string]: string }; + +declare module '*.module.css' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.scss' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.sass' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.less' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.styl' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.stylus' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.pcss' { + const classes: CSSModuleClasses; + export default classes; +} +declare module '*.module.sss' { + const classes: CSSModuleClasses; + export default classes; +} + +// CSS +declare module '*.css' { } +declare module '*.scss' { } +declare module '*.sass' { } +declare module '*.less' { } +declare module '*.styl' { } +declare module '*.stylus' { } +declare module '*.pcss' { } +declare module '*.sss' { } + +// Built-in asset types +// see `src/node/constants.ts` + +// images +declare module '*.apng' { + const src: string; + export default src; +} +declare module '*.png' { + const src: string; + export default src; +} +declare module '*.jpg' { + const src: string; + export default src; +} +declare module '*.jpeg' { + const src: string; + export default src; +} +declare module '*.jfif' { + const src: string; + export default src; +} +declare module '*.pjpeg' { + const src: string; + export default src; +} +declare module '*.pjp' { + const src: string; + export default src; +} +declare module '*.gif' { + const src: string; + export default src; +} +declare module '*.svg' { + const src: string; + export default src; +} +declare module '*.ico' { + const src: string; + export default src; +} +declare module '*.webp' { + const src: string; + export default src; +} +declare module '*.avif' { + const src: string; + export default src; +} + +// media +declare module '*.mp4' { + const src: string; + export default src; +} +declare module '*.webm' { + const src: string; + export default src; +} +declare module '*.ogg' { + const src: string; + export default src; +} +declare module '*.mp3' { + const src: string; + export default src; +} +declare module '*.wav' { + const src: string; + export default src; +} +declare module '*.flac' { + const src: string; + export default src; +} +declare module '*.aac' { + const src: string; + export default src; +} +declare module '*.opus' { + const src: string; + export default src; +} +declare module '*.mov' { + const src: string; + export default src; +} +declare module '*.m4a' { + const src: string; + export default src; +} +declare module '*.vtt' { + const src: string; + export default src; +} + +// fonts +declare module '*.woff' { + const src: string; + export default src; +} +declare module '*.woff2' { + const src: string; + export default src; +} +declare module '*.eot' { + const src: string; + export default src; +} +declare module '*.ttf' { + const src: string; + export default src; +} +declare module '*.otf' { + const src: string; + export default src; +} + +// other +declare module '*.webmanifest' { + const src: string; + export default src; +} +declare module '*.pdf' { + const src: string; + export default src; +} +declare module '*.txt' { + const src: string; + export default src; +} + +// wasm?init +declare module '*.wasm?init' { + const initWasm: (options?: WebAssembly.Imports) => Promise; + export default initWasm; +} + +// web worker +declare module '*?worker' { + const workerConstructor: { + new(options?: { name?: string }): Worker; + }; + export default workerConstructor; +} + +declare module '*?worker&inline' { + const workerConstructor: { + new(options?: { name?: string }): Worker; + }; + export default workerConstructor; +} + +declare module '*?worker&url' { + const src: string; + export default src; +} + +declare module '*?sharedworker' { + const sharedWorkerConstructor: { + new(options?: { name?: string }): SharedWorker; + }; + export default sharedWorkerConstructor; +} + +declare module '*?sharedworker&inline' { + const sharedWorkerConstructor: { + new(options?: { name?: string }): SharedWorker; + }; + export default sharedWorkerConstructor; +} + +declare module '*?sharedworker&url' { + const src: string; + export default src; +} + +declare module '*?raw' { + const src: string; + export default src; +} + +declare module '*?url' { + const src: string; + export default src; +} + +declare module '*?inline' { + const src: string; + export default src; +} diff --git a/packages/core/create-nocobase-app/templates/app/.eslintignore b/packages/core/create-nocobase-app/templates/app/.eslintignore index 92c7bb0609..973fb2e12c 100755 --- a/packages/core/create-nocobase-app/templates/app/.eslintignore +++ b/packages/core/create-nocobase-app/templates/app/.eslintignore @@ -13,4 +13,5 @@ packages/element esm doc-site public -package \ No newline at end of file +package +packages/**/client.d.ts diff --git a/packages/plugins/@nocobase/plugin-auth/src/client/index.tsx b/packages/plugins/@nocobase/plugin-auth/src/client/index.tsx index 1aa3729d9b..fffdebd1c2 100644 --- a/packages/plugins/@nocobase/plugin-auth/src/client/index.tsx +++ b/packages/plugins/@nocobase/plugin-auth/src/client/index.tsx @@ -17,6 +17,7 @@ import { Options, SignInForm, SignUpForm } from './basic'; import { NAMESPACE } from './locale'; import { AuthLayout, SignInPage, SignUpPage } from './pages'; import { Authenticator } from './settings/Authenticator'; +export { AuthenticatorsContextProvider } from './pages/AuthLayout'; export type AuthOptions = { components: Partial<{ diff --git a/packages/plugins/@nocobase/plugin-auth/src/client/pages/AuthLayout.tsx b/packages/plugins/@nocobase/plugin-auth/src/client/pages/AuthLayout.tsx index c37e8ae155..b0dc6a1c15 100644 --- a/packages/plugins/@nocobase/plugin-auth/src/client/pages/AuthLayout.tsx +++ b/packages/plugins/@nocobase/plugin-auth/src/client/pages/AuthLayout.tsx @@ -8,14 +8,13 @@ */ import { css } from '@emotion/css'; -import React from 'react'; +import React, { FC } from 'react'; import { Outlet } from 'react-router-dom'; import { useSystemSettings, PoweredBy, useRequest, useAPIClient } from '@nocobase/client'; import { AuthenticatorsContext } from '../authenticator'; import { Spin } from 'antd'; -export function AuthLayout(props: any) { - const { data } = useSystemSettings(); +export const AuthenticatorsContextProvider: FC<{ children: React.ReactNode }> = ({ children }) => { const api = useAPIClient(); const { data: authenticators = [], @@ -38,6 +37,12 @@ export function AuthLayout(props: any) { throw error; } + return {children}; +}; + +export function AuthLayout() { + const { data } = useSystemSettings(); + return (

{data?.data?.title}

- + - +