feat: multi app and plugins (#1020)
Reviewed-on: daoyoucloud/tachybase#1020
This commit is contained in:
parent
b545855729
commit
4e2a4cd9fe
@ -54,6 +54,7 @@
|
|||||||
"@tachybase/cli": "workspace:*",
|
"@tachybase/cli": "workspace:*",
|
||||||
"@tachybase/preset-hera-rental": "workspace:*",
|
"@tachybase/preset-hera-rental": "workspace:*",
|
||||||
"@tachybase/preset-hera-sancongtou": "workspace:*",
|
"@tachybase/preset-hera-sancongtou": "workspace:*",
|
||||||
|
"@tachybase/preset-mini": "workspace:*",
|
||||||
"@tachybase/preset-tachybase": "workspace:*",
|
"@tachybase/preset-tachybase": "workspace:*",
|
||||||
"@tachybase/test": "workspace:*",
|
"@tachybase/test": "workspace:*",
|
||||||
"@types/react": "^18.2.79",
|
"@types/react": "^18.2.79",
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
"@tachybase/database": "workspace:*",
|
"@tachybase/database": "workspace:*",
|
||||||
"@tachybase/preset-hera-rental": "workspace:*",
|
"@tachybase/preset-hera-rental": "workspace:*",
|
||||||
"@tachybase/preset-hera-sancongtou": "workspace:*",
|
"@tachybase/preset-hera-sancongtou": "workspace:*",
|
||||||
|
"@tachybase/preset-mini": "workspace:*",
|
||||||
"@tachybase/preset-tachybase": "workspace:*",
|
"@tachybase/preset-tachybase": "workspace:*",
|
||||||
"@tachybase/server": "workspace:*"
|
"@tachybase/server": "workspace:*"
|
||||||
},
|
},
|
||||||
|
@ -18,6 +18,49 @@ interface IPluginInfo extends IPluginCard {
|
|||||||
onClick: () => void;
|
onClick: () => void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const SwitchAction = (props: IPluginData) => {
|
||||||
|
const { name, enabled, builtIn, error, isCompatible } = props;
|
||||||
|
const api = useAPIClient();
|
||||||
|
const { t } = useTranslation();
|
||||||
|
const { modal } = App.useApp();
|
||||||
|
return (
|
||||||
|
<Switch
|
||||||
|
aria-label="enable"
|
||||||
|
key={'enable'}
|
||||||
|
size={'small'}
|
||||||
|
disabled={builtIn || error}
|
||||||
|
onChange={async (checked, e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
if (!isCompatible && checked) {
|
||||||
|
message.error(t("Dependencies check failed, can't enable."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!checked) {
|
||||||
|
modal.confirm({
|
||||||
|
title: t('Are you sure to disable this plugin?'),
|
||||||
|
onOk: async () => {
|
||||||
|
await api.request({
|
||||||
|
url: `pm:disable`,
|
||||||
|
params: {
|
||||||
|
filterByTk: name,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
await api.request({
|
||||||
|
url: `pm:enable`,
|
||||||
|
params: {
|
||||||
|
filterByTk: name,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
checked={!!enabled}
|
||||||
|
></Switch>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
function PluginInfo(props: IPluginInfo) {
|
function PluginInfo(props: IPluginInfo) {
|
||||||
const { data, onClick } = props;
|
const { data, onClick } = props;
|
||||||
const app = useApp();
|
const app = useApp();
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
export * from './PluginManagerLink';
|
export * from './PluginManagerLink';
|
||||||
|
import type { TableProps } from 'antd';
|
||||||
import { PageHeader } from '@ant-design/pro-layout';
|
import { PageHeader } from '@ant-design/pro-layout';
|
||||||
import { useDebounce } from 'ahooks';
|
import { useDebounce } from 'ahooks';
|
||||||
import { Button, Col, Divider, Input, List, Result, Row, Space, Spin, Tabs } from 'antd';
|
import { Button, Card, Col, Divider, Input, List, Result, Row, Space, Spin, Tabs, Table, Tag } from 'antd';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import React, { useEffect, useMemo, useState } from 'react';
|
import React, { useEffect, useMemo, useState } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
@ -11,10 +12,10 @@ import { css } from '@emotion/css';
|
|||||||
import { useACLRoleContext } from '../acl/ACLProvider';
|
import { useACLRoleContext } from '../acl/ACLProvider';
|
||||||
import { useRequest } from '../api-client';
|
import { useRequest } from '../api-client';
|
||||||
import { useToken } from '../style';
|
import { useToken } from '../style';
|
||||||
import { PluginCard } from './PluginCard';
|
import { PluginCard, SwitchAction } from './PluginCard';
|
||||||
import { PluginAddModal } from './PluginForm/modal/PluginAddModal';
|
|
||||||
import { useStyles } from './style';
|
import { useStyles } from './style';
|
||||||
import { IPluginData } from './types';
|
import { IPluginData } from './types';
|
||||||
|
import { fuzzysearch } from '@tachybase/utils/client';
|
||||||
|
|
||||||
export interface TData {
|
export interface TData {
|
||||||
data: IPluginData[];
|
data: IPluginData[];
|
||||||
@ -35,12 +36,46 @@ export interface AllowedActions {
|
|||||||
destroy: number[];
|
destroy: number[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const columns: TableProps<IPluginData>['columns'] = [
|
||||||
|
{
|
||||||
|
title: 'Name',
|
||||||
|
dataIndex: 'name',
|
||||||
|
key: 'name',
|
||||||
|
render: (text) => <a>{text}</a>,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Keywords',
|
||||||
|
dataIndex: 'keywords',
|
||||||
|
key: 'keywords',
|
||||||
|
render: (keywords) => keywords?.map((keyword) => <Tag key={keyword}>{keyword}</Tag>),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Description',
|
||||||
|
dataIndex: 'description',
|
||||||
|
key: 'description',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'Action',
|
||||||
|
key: 'action',
|
||||||
|
render: (_, record) => (
|
||||||
|
<Space size="middle">
|
||||||
|
<SwitchAction {...record} />
|
||||||
|
</Space>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
const LocalPlugins = () => {
|
const LocalPlugins = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { theme } = useStyles();
|
const { theme } = useStyles();
|
||||||
const { data, loading, refresh } = useRequest<TData>({
|
const { data, loading, refresh } = useRequest<TData>({
|
||||||
url: 'pm:list',
|
url: 'pm:list',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const [searchValue, setSearchValue] = useState('');
|
||||||
|
const filteredList = (data?.data || []).filter(
|
||||||
|
(data) => fuzzysearch(searchValue, data.name) || fuzzysearch(searchValue, data.description ?? ''),
|
||||||
|
);
|
||||||
const filterList = useMemo(() => {
|
const filterList = useMemo(() => {
|
||||||
let list = data?.data || [];
|
let list = data?.data || [];
|
||||||
list = list.reverse();
|
list = list.reverse();
|
||||||
@ -69,8 +104,6 @@ const LocalPlugins = () => {
|
|||||||
}, [data?.data]);
|
}, [data?.data]);
|
||||||
|
|
||||||
const [filterIndex, setFilterIndex] = useState(0);
|
const [filterIndex, setFilterIndex] = useState(0);
|
||||||
const [isShowAddForm, setShowAddForm] = useState(false);
|
|
||||||
const [searchValue, setSearchValue] = useState('');
|
|
||||||
const [keyword, setKeyword] = useState(null);
|
const [keyword, setKeyword] = useState(null);
|
||||||
const debouncedSearchValue = useDebounce(searchValue, { wait: 100 });
|
const debouncedSearchValue = useDebounce(searchValue, { wait: 100 });
|
||||||
|
|
||||||
@ -140,15 +173,7 @@ const LocalPlugins = () => {
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<PluginAddModal
|
{/* <div style={{ width: '100%' }}>
|
||||||
isShow={isShowAddForm}
|
|
||||||
onClose={(isRefresh) => {
|
|
||||||
setShowAddForm(false);
|
|
||||||
// if (isRefresh) refresh();
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div style={{ width: '100%' }}>
|
|
||||||
<div
|
<div
|
||||||
style={{ marginBottom: theme.marginLG }}
|
style={{ marginBottom: theme.marginLG }}
|
||||||
className={css`
|
className={css`
|
||||||
@ -178,13 +203,6 @@ const LocalPlugins = () => {
|
|||||||
/>
|
/>
|
||||||
</Space>
|
</Space>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<Space>
|
|
||||||
<Button onClick={() => setShowAddForm(true)} type="primary">
|
|
||||||
{t('Add new')}
|
|
||||||
</Button>
|
|
||||||
</Space>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<Row style={{ width: '100%' }} wrap={false}>
|
<Row style={{ width: '100%' }} wrap={false}>
|
||||||
<Col flex="200px">
|
<Col flex="200px">
|
||||||
@ -222,8 +240,20 @@ const LocalPlugins = () => {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
</Col>
|
</Col>
|
||||||
</Row>
|
</Row> */}
|
||||||
</div>
|
<Card
|
||||||
|
style={{ marginTop: '8px' }}
|
||||||
|
extra={
|
||||||
|
<Input
|
||||||
|
value={searchValue}
|
||||||
|
placeholder="Search by name or descriptions"
|
||||||
|
onChange={(e) => setSearchValue(e.target.value)}
|
||||||
|
/>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
<Table columns={columns} dataSource={filteredList} rowKey="id" />
|
||||||
|
</Card>
|
||||||
|
{/* </div> */}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
@ -251,37 +281,8 @@ export const PluginManager = () => {
|
|||||||
|
|
||||||
return snippets.includes('pm') ? (
|
return snippets.includes('pm') ? (
|
||||||
<div>
|
<div>
|
||||||
<PageHeader
|
<PageHeader className={styles.pageHeader} ghost={false} title={t('Plugin manager')}></PageHeader>
|
||||||
className={styles.pageHeader}
|
<LocalPlugins />
|
||||||
ghost={false}
|
|
||||||
title={t('Plugin manager')}
|
|
||||||
footer={
|
|
||||||
<Tabs
|
|
||||||
activeKey={tabName}
|
|
||||||
onChange={(activeKey) => {
|
|
||||||
navigate(`/admin/pm/list/${activeKey}`);
|
|
||||||
}}
|
|
||||||
items={[
|
|
||||||
{
|
|
||||||
key: 'local',
|
|
||||||
label: t('Local'),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: 'marketplace',
|
|
||||||
label: t('Marketplace'),
|
|
||||||
},
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
<div className={styles.pageContent} style={{ display: 'flex', flexFlow: 'row wrap' }}>
|
|
||||||
{React.createElement(
|
|
||||||
{
|
|
||||||
local: LocalPlugins,
|
|
||||||
marketplace: MarketplacePlugins,
|
|
||||||
}[tabName],
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
) : (
|
||||||
<Result status="404" title="404" subTitle="Sorry, the page you visited does not exist." />
|
<Result status="404" title="404" subTitle="Sorry, the page you visited does not exist." />
|
||||||
|
@ -25,7 +25,6 @@ import {
|
|||||||
} from '../../../';
|
} from '../../../';
|
||||||
import { Plugin } from '../../../application/Plugin';
|
import { Plugin } from '../../../application/Plugin';
|
||||||
import { useAppSpin } from '../../../application/hooks/useAppSpin';
|
import { useAppSpin } from '../../../application/hooks/useAppSpin';
|
||||||
import { Help } from '../../../user/Help';
|
|
||||||
import { VariablesProvider } from '../../../variables';
|
import { VariablesProvider } from '../../../variables';
|
||||||
|
|
||||||
const filterByACL = (schema, options) => {
|
const filterByACL = (schema, options) => {
|
||||||
@ -338,23 +337,33 @@ export const InternalAdminLayout = (props: any) => {
|
|||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
className={css`
|
className={css`
|
||||||
width: 200px;
|
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
padding: 0 12px 0 12px;
|
||||||
`}
|
`}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
className={css`
|
className={css`
|
||||||
padding: 0 16px;
|
|
||||||
object-fit: contain;
|
object-fit: contain;
|
||||||
width: 100%;
|
height: 28px;
|
||||||
height: 100%;
|
|
||||||
`}
|
`}
|
||||||
src={result?.data?.data?.logo?.url}
|
src={result?.data?.data?.logo?.url}
|
||||||
/>
|
/>
|
||||||
|
<h1
|
||||||
|
className={css`
|
||||||
|
color: #fff;
|
||||||
|
height: 32px;
|
||||||
|
margin: 0 0 0 12px;
|
||||||
|
font-weight: 600;
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 32px;
|
||||||
|
`}
|
||||||
|
>
|
||||||
|
{result?.data?.data?.title}
|
||||||
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
className={css`
|
className={css`
|
||||||
|
2
packages/presets/mini/.npmignore
Normal file
2
packages/presets/mini/.npmignore
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
/node_modules
|
||||||
|
/src
|
3
packages/presets/mini/client.d.ts
vendored
Normal file
3
packages/presets/mini/client.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export * from './src/client';
|
||||||
|
export { default } from './src/client';
|
||||||
|
|
1
packages/presets/mini/client.js
Normal file
1
packages/presets/mini/client.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
module.exports = require('./lib/client/index.js');
|
67
packages/presets/mini/package.json
Normal file
67
packages/presets/mini/package.json
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"name": "@tachybase/preset-mini",
|
||||||
|
"version": "0.21.24",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"main": "./lib/server/index.js",
|
||||||
|
"dependencies": {
|
||||||
|
"@hera/plugin-approval": "workspace:*",
|
||||||
|
"@hera/plugin-audit-logs": "workspace:*",
|
||||||
|
"@hera/plugin-core": "workspace:*",
|
||||||
|
"@hera/plugin-homepage": "workspace:*",
|
||||||
|
"@hera/plugin-rental": "workspace:*",
|
||||||
|
"@nocobase/plugin-acl": "workspace:*",
|
||||||
|
"@nocobase/plugin-action-bulk-edit": "workspace:*",
|
||||||
|
"@nocobase/plugin-action-bulk-update": "workspace:*",
|
||||||
|
"@nocobase/plugin-action-duplicate": "workspace:*",
|
||||||
|
"@nocobase/plugin-action-print": "workspace:*",
|
||||||
|
"@nocobase/plugin-api-doc": "workspace:*",
|
||||||
|
"@nocobase/plugin-api-keys": "workspace:*",
|
||||||
|
"@nocobase/plugin-auth": "workspace:*",
|
||||||
|
"@nocobase/plugin-backup-restore": "workspace:*",
|
||||||
|
"@nocobase/plugin-calendar": "workspace:*",
|
||||||
|
"@nocobase/plugin-cas": "workspace:*",
|
||||||
|
"@nocobase/plugin-china-region": "workspace:*",
|
||||||
|
"@nocobase/plugin-client": "workspace:*",
|
||||||
|
"@nocobase/plugin-collection-manager": "workspace:*",
|
||||||
|
"@nocobase/plugin-custom-request": "workspace:*",
|
||||||
|
"@nocobase/plugin-data-source-manager": "workspace:*",
|
||||||
|
"@nocobase/plugin-data-visualization": "workspace:*",
|
||||||
|
"@nocobase/plugin-error-handler": "workspace:*",
|
||||||
|
"@nocobase/plugin-export": "workspace:*",
|
||||||
|
"@nocobase/plugin-file-manager": "workspace:*",
|
||||||
|
"@nocobase/plugin-formula-field": "workspace:*",
|
||||||
|
"@nocobase/plugin-gantt": "workspace:*",
|
||||||
|
"@nocobase/plugin-graph-collection-manager": "workspace:*",
|
||||||
|
"@nocobase/plugin-iframe-block": "workspace:*",
|
||||||
|
"@nocobase/plugin-import": "workspace:*",
|
||||||
|
"@nocobase/plugin-kanban": "workspace:*",
|
||||||
|
"@nocobase/plugin-localization-management": "workspace:*",
|
||||||
|
"@nocobase/plugin-logger": "workspace:*",
|
||||||
|
"@nocobase/plugin-map": "workspace:*",
|
||||||
|
"@nocobase/plugin-mock-collections": "workspace:*",
|
||||||
|
"@nocobase/plugin-multi-app-manager": "workspace:*",
|
||||||
|
"@nocobase/plugin-multi-app-share-collection": "workspace:*",
|
||||||
|
"@nocobase/plugin-oidc": "workspace:*",
|
||||||
|
"@nocobase/plugin-saml": "workspace:*",
|
||||||
|
"@nocobase/plugin-sequence-field": "workspace:*",
|
||||||
|
"@nocobase/plugin-sms-auth": "workspace:*",
|
||||||
|
"@nocobase/plugin-snapshot-field": "workspace:*",
|
||||||
|
"@nocobase/plugin-theme-editor": "workspace:*",
|
||||||
|
"@nocobase/plugin-ui-schema-storage": "workspace:*",
|
||||||
|
"@nocobase/plugin-users": "workspace:*",
|
||||||
|
"@nocobase/plugin-verification": "workspace:*",
|
||||||
|
"@tachybase/client": "workspace:*",
|
||||||
|
"@tachybase/plugin-external-data-source": "workspace:*",
|
||||||
|
"@tachybase/plugin-mobile-client": "workspace:*",
|
||||||
|
"@tachybase/plugin-system-settings": "workspace:*",
|
||||||
|
"@tachybase/plugin-workflow": "workspace:*",
|
||||||
|
"@tachybase/preset-tachybase": "workspace:*",
|
||||||
|
"@tachybase/schema": "workspace:*",
|
||||||
|
"@tachybase/server": "workspace:*",
|
||||||
|
"cronstrue": "^2.11.0",
|
||||||
|
"lodash": "4.17.21"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/lodash": "^4.17.0"
|
||||||
|
}
|
||||||
|
}
|
3
packages/presets/mini/server.d.ts
vendored
Normal file
3
packages/presets/mini/server.d.ts
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
export * from './src/server';
|
||||||
|
export { default } from './src/server';
|
||||||
|
|
1
packages/presets/mini/server.js
Normal file
1
packages/presets/mini/server.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
module.exports = require('./lib/server/index.js');
|
3
packages/presets/mini/src/client/index.ts
Normal file
3
packages/presets/mini/src/client/index.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { TachyBaseClientPresetPlugin } from '@tachybase/preset-tachybase/client';
|
||||||
|
|
||||||
|
export class PluginMini extends TachyBaseClientPresetPlugin {}
|
1
packages/presets/mini/src/index.ts
Normal file
1
packages/presets/mini/src/index.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export { default } from './server';
|
31
packages/presets/mini/src/server/index.ts
Normal file
31
packages/presets/mini/src/server/index.ts
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import PresetTachyBase from '@tachybase/preset-tachybase';
|
||||||
|
import _ from 'lodash';
|
||||||
|
|
||||||
|
export class PluginMini extends PresetTachyBase {
|
||||||
|
#builtInPlugins = [
|
||||||
|
'data-source-manager',
|
||||||
|
'error-handler',
|
||||||
|
'collection-manager',
|
||||||
|
'ui-schema-storage',
|
||||||
|
'file-manager',
|
||||||
|
'system-settings',
|
||||||
|
'client',
|
||||||
|
'auth',
|
||||||
|
'verification',
|
||||||
|
'users',
|
||||||
|
'acl',
|
||||||
|
'multi-app-manager',
|
||||||
|
];
|
||||||
|
|
||||||
|
#localPlugins = [];
|
||||||
|
|
||||||
|
get builtInPlugins() {
|
||||||
|
return this.#builtInPlugins;
|
||||||
|
}
|
||||||
|
|
||||||
|
get localPlugins() {
|
||||||
|
return this.#localPlugins;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default PluginMini;
|
181
pnpm-lock.yaml
181
pnpm-lock.yaml
@ -55,6 +55,9 @@ importers:
|
|||||||
'@tachybase/preset-hera-sancongtou':
|
'@tachybase/preset-hera-sancongtou':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:packages/presets/sancongtou
|
version: link:packages/presets/sancongtou
|
||||||
|
'@tachybase/preset-mini':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:packages/presets/mini
|
||||||
'@tachybase/preset-tachybase':
|
'@tachybase/preset-tachybase':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:packages/presets/base
|
version: link:packages/presets/base
|
||||||
@ -176,6 +179,9 @@ importers:
|
|||||||
'@tachybase/preset-hera-sancongtou':
|
'@tachybase/preset-hera-sancongtou':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../presets/sancongtou
|
version: link:../../presets/sancongtou
|
||||||
|
'@tachybase/preset-mini':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../presets/mini
|
||||||
'@tachybase/preset-tachybase':
|
'@tachybase/preset-tachybase':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../presets/base
|
version: link:../../presets/base
|
||||||
@ -4217,6 +4223,181 @@ importers:
|
|||||||
specifier: ^4.17.0
|
specifier: ^4.17.0
|
||||||
version: 4.17.0
|
version: 4.17.0
|
||||||
|
|
||||||
|
packages/presets/mini:
|
||||||
|
dependencies:
|
||||||
|
'@hera/plugin-approval':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@hera/plugin-approval
|
||||||
|
'@hera/plugin-audit-logs':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@hera/plugin-audit-logs
|
||||||
|
'@hera/plugin-core':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@hera/plugin-core
|
||||||
|
'@hera/plugin-homepage':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@hera/plugin-homepage
|
||||||
|
'@hera/plugin-rental':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@hera/plugin-rental
|
||||||
|
'@nocobase/plugin-acl':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-acl
|
||||||
|
'@nocobase/plugin-action-bulk-edit':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-action-bulk-edit
|
||||||
|
'@nocobase/plugin-action-bulk-update':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-action-bulk-update
|
||||||
|
'@nocobase/plugin-action-duplicate':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-action-duplicate
|
||||||
|
'@nocobase/plugin-action-print':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-action-print
|
||||||
|
'@nocobase/plugin-api-doc':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-api-doc
|
||||||
|
'@nocobase/plugin-api-keys':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-api-keys
|
||||||
|
'@nocobase/plugin-auth':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-auth
|
||||||
|
'@nocobase/plugin-backup-restore':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-backup-restore
|
||||||
|
'@nocobase/plugin-calendar':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-calendar
|
||||||
|
'@nocobase/plugin-cas':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-cas
|
||||||
|
'@nocobase/plugin-china-region':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-china-region
|
||||||
|
'@nocobase/plugin-client':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-client
|
||||||
|
'@nocobase/plugin-collection-manager':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-collection-manager
|
||||||
|
'@nocobase/plugin-custom-request':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-custom-request
|
||||||
|
'@nocobase/plugin-data-source-manager':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-data-source-manager
|
||||||
|
'@nocobase/plugin-data-visualization':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-data-visualization
|
||||||
|
'@nocobase/plugin-error-handler':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-error-handler
|
||||||
|
'@nocobase/plugin-export':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-export
|
||||||
|
'@nocobase/plugin-file-manager':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-file-manager
|
||||||
|
'@nocobase/plugin-formula-field':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-formula-field
|
||||||
|
'@nocobase/plugin-gantt':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-gantt
|
||||||
|
'@nocobase/plugin-graph-collection-manager':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-graph-collection-manager
|
||||||
|
'@nocobase/plugin-iframe-block':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-iframe-block
|
||||||
|
'@nocobase/plugin-import':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-import
|
||||||
|
'@nocobase/plugin-kanban':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-kanban
|
||||||
|
'@nocobase/plugin-localization-management':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-localization-management
|
||||||
|
'@nocobase/plugin-logger':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-logger
|
||||||
|
'@nocobase/plugin-map':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-map
|
||||||
|
'@nocobase/plugin-mock-collections':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-mock-collections
|
||||||
|
'@nocobase/plugin-multi-app-manager':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-multi-app-manager
|
||||||
|
'@nocobase/plugin-multi-app-share-collection':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-multi-app-share-collection
|
||||||
|
'@nocobase/plugin-oidc':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-oidc
|
||||||
|
'@nocobase/plugin-saml':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-saml
|
||||||
|
'@nocobase/plugin-sequence-field':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-sequence-field
|
||||||
|
'@nocobase/plugin-sms-auth':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-sms-auth
|
||||||
|
'@nocobase/plugin-snapshot-field':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-snapshot-field
|
||||||
|
'@nocobase/plugin-theme-editor':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-theme-editor
|
||||||
|
'@nocobase/plugin-ui-schema-storage':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-ui-schema-storage
|
||||||
|
'@nocobase/plugin-users':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-users
|
||||||
|
'@nocobase/plugin-verification':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@nocobase/plugin-verification
|
||||||
|
'@tachybase/client':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../core/client
|
||||||
|
'@tachybase/plugin-external-data-source':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@tachybase/plugin-external-data-source
|
||||||
|
'@tachybase/plugin-mobile-client':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@tachybase/plugin-mobile-client
|
||||||
|
'@tachybase/plugin-system-settings':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@tachybase/plugin-system-settings
|
||||||
|
'@tachybase/plugin-workflow':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../plugins/@tachybase/plugin-workflow
|
||||||
|
'@tachybase/preset-tachybase':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../base
|
||||||
|
'@tachybase/schema':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../core/schema
|
||||||
|
'@tachybase/server':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../core/server
|
||||||
|
cronstrue:
|
||||||
|
specifier: ^2.11.0
|
||||||
|
version: 2.47.0
|
||||||
|
lodash:
|
||||||
|
specifier: 4.17.21
|
||||||
|
version: 4.17.21
|
||||||
|
devDependencies:
|
||||||
|
'@types/lodash':
|
||||||
|
specifier: ^4.17.0
|
||||||
|
version: 4.17.0
|
||||||
|
|
||||||
packages/presets/rental:
|
packages/presets/rental:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hera/plugin-approval':
|
'@hera/plugin-approval':
|
||||||
|
Loading…
Reference in New Issue
Block a user