refactor: plugin manager optimize & support keywords (#3467)

* refactor: plugin manager refactor

* refactor: plugin manager keywords

* refactor: plugin manager keywords

* refactor: disabled plugin support seccend confirm

* refactor: plugin manager

* refactor: plugin manager

* refactor: plugin manager

* refactor: plugin manager

* refactor: plugin manager

* refactor: plugin manager

* fix: styles

* fix: 4

* refactor: plugin manger sort by display name

* refactor: plugin manger homepage

* refactor: plugin manger keyword

---------

Co-authored-by: chenos <chenlinxh@gmail.com>
This commit is contained in:
katherinehhh 2024-02-02 12:02:18 +08:00 committed by GitHub
parent 4d4a70b2f4
commit 44a70107af
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
64 changed files with 452 additions and 168 deletions

View File

@ -698,6 +698,7 @@
"Plugin starting...": "Plugin starting...",
"Plugin stopping...": "Plugin stopping...",
"Are you sure to delete this plugin?": "Are you sure to delete this plugin?",
"Are you sure to disable this plugin?": "Are you sure to disable this plugin?",
"re-download file": "re-download file",
"Not enabled": "Not enabled",
"Search plugin": "Search plugin",

View File

@ -661,6 +661,7 @@
"Plugin starting...": "プラグインを起動しています...",
"Plugin stopping...": "プラグインを停止しています...",
"Are you sure to delete this plugin?": "このプラグインを削除してもよろしいですか?",
"Are you sure to delete this plugin":"本当にこのプラグインを無効にしますか?",
"re-download file": "ファイルを再ダウンロード",
"Not enabled": "有効になっていません",
"Search plugin": "プラグインを検索",

View File

@ -651,6 +651,7 @@
"Plugin starting...": "Plugin iniciando...",
"Plugin stopping...": "Plugin parando...",
"Are you sure to delete this plugin?": "Tem certeza de que deseja excluir este plugin?",
"Are you sure to delete this plugin":"Tem a certeza que deseja desactivar este plugin",
"re-download file": "re-fazer download do arquivo",
"Not enabled": "Não habilitado",
"Search plugin": "Pesquisar plugin",

View File

@ -201,7 +201,7 @@
"Actions": "操作",
"Update": "更新",
"Update record": "更新数据",
"Unnamed":"未命名",
"Unnamed": "未命名",
"View": "查看",
"View record": "查看数据",
"Refresh": "刷新",
@ -225,7 +225,7 @@
"General collection": "普通数据表",
"SQL collection": "SQL数据表",
"Connect to database view": "连接数据库视图",
"Sync from database":"从数据库同步",
"Sync from database": "从数据库同步",
"Source collections": "来源数据表",
"Field source": "来源字段",
"Preview": "预览",
@ -715,6 +715,7 @@
"Plugin starting...": "插件启动中...",
"Plugin stopping...": "插件停止中...",
"Are you sure to delete this plugin?": "确定要删除此插件吗?",
"Are you sure to disable this plugin?": "确定要禁用此插件吗?",
"re-download file": "重新下载文件",
"Not enabled": "未启用",
"Search plugin": "搜索插件",
@ -841,6 +842,12 @@
"Sign in with another account": "登录其他账号",
"Return to the main application": "返回主应用",
"Permission denied": "没有权限",
"Allow add new":"允许新增",
"Allow selection of existing records":"允许选择已有数据"
"Allow add new": "允许新增",
"Allow selection of existing records": "允许选择已有数据",
"Data model": "数据模型",
"Security": "认证与安全",
"Action": "操作",
"System": "系统管理",
"Other": "其他",
"Workflow":"工作流"
}

View File

@ -20,7 +20,8 @@ interface IPluginInfo extends IPluginCard {
function PluginInfo(props: IPluginInfo) {
const { data, onClick } = props;
const app = useApp();
const { name, displayName, isCompatible, packageName, updatable, builtIn, enabled, description, type, error } = data;
const { name, displayName, isCompatible, packageName, updatable, builtIn, enabled, description, error, homepage } =
data;
const { styles, theme } = useStyles();
const navigate = useNavigate();
const { t } = useTranslation();
@ -78,7 +79,15 @@ function PluginInfo(props: IPluginInfo) {
`}
actions={[
<Space split={<Divider type="vertical" />} key={'1'}>
<a key={'5'}>
<a
key={'5'}
href={homepage}
target="_blank"
onClick={(event) => {
event.stopPropagation();
}}
rel="noreferrer"
>
<ReadOutlined /> {t('Docs')}
</a>
{updatable && (
@ -143,12 +152,26 @@ function PluginInfo(props: IPluginInfo) {
message.error(t("Dependencies check failed, can't enable."));
return;
}
await api.request({
url: `pm:${checked ? 'enable' : 'disable'}`,
params: {
filterByTk: name,
},
});
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={enabledVal}
></Switch>,

View File

@ -111,90 +111,81 @@ export const PluginDetail: FC<IPluginDetail> = ({ plugin, onCancel }) => {
label: t('Readme'),
children: (
<Row gutter={20}>
<Col span={16}>
{plugin?.readmeUrl ? (
<PluginDocument url={plugin?.readmeUrl} packageName={plugin.packageName} />
) : (
t('No README.md file')
)}
{plugin.name && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Name')}</Typography.Text>
<Typography.Text strong>{plugin.name}</Typography.Text>
</div>
</Col>
)}
{plugin.displayName && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('DisplayName')}</Typography.Text>
<Typography.Text strong>{plugin.displayName}</Typography.Text>
</div>
</Col>
)}
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('PackageName')}</Typography.Text>
<Typography.Text strong>{plugin.packageName}</Typography.Text>
</div>
</Col>
<Col span={8}>
<Row>
{plugin.name && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Name')}</Typography.Text>
<Typography.Text strong>{plugin.name}</Typography.Text>
</div>
</Col>
)}
{plugin.displayName && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('DisplayName')}</Typography.Text>
<Typography.Text strong>{plugin.displayName}</Typography.Text>
</div>
</Col>
)}
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('PackageName')}</Typography.Text>
<Typography.Text strong>{plugin.packageName}</Typography.Text>
</div>
</Col>
{repository && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Repository')}</Typography.Text>
<Typography.Text strong>{repository}</Typography.Text>
</div>
</Col>
)}
{data?.data?.packageJson.homepage && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Homepage')}</Typography.Text>
<Typography.Text strong>{data?.data?.packageJson.homepage}</Typography.Text>
</div>
</Col>
)}
{plugin.description && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Description')}</Typography.Text>
<Typography.Text strong>{plugin.description}</Typography.Text>
</div>
</Col>
)}
{data?.data?.packageJson.license && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('License')}</Typography.Text>
<Typography.Text strong>{data?.data?.packageJson.license}</Typography.Text>
</div>
</Col>
)}
{author && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Author')}</Typography.Text>
<Typography.Text strong>{author}</Typography.Text>
</div>
</Col>
)}
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Last updated')}</Typography.Text>
<Typography.Text strong>{dayjs(data?.data?.lastUpdated).fromNow()}</Typography.Text>
</div>
</Col>
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Version')}</Typography.Text>
<Typography.Text strong>{plugin?.version}</Typography.Text>
</div>
</Col>
</Row>
{repository && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Repository')}</Typography.Text>
<Typography.Text strong>{repository}</Typography.Text>
</div>
</Col>
)}
{data?.data?.packageJson.homepage && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Homepage')}</Typography.Text>
<a href={data?.data?.packageJson.homepage} target="_blank" rel="noreferrer">
{data?.data?.packageJson.homepage}
</a>
</div>
</Col>
)}
{plugin.description && (
<Col span={24}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Description')}</Typography.Text>
<Typography.Text strong>{plugin.description}</Typography.Text>
</div>
</Col>
)}
{data?.data?.packageJson.license && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('License')}</Typography.Text>
<Typography.Text strong>{data?.data?.packageJson.license}</Typography.Text>
</div>
</Col>
)}
{author && (
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Author')}</Typography.Text>
<Typography.Text strong>{author}</Typography.Text>
</div>
</Col>
)}
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Last updated')}</Typography.Text>
<Typography.Text strong>{dayjs(data?.data?.lastUpdated).fromNow()}</Typography.Text>
</div>
</Col>
<Col span={12}>
<div className={styles.PluginDetailBaseInfo}>
<Typography.Text type="secondary">{t('Version')}</Typography.Text>
<Typography.Text strong>{plugin?.version}</Typography.Text>
</div>
</Col>
</Row>
),
@ -239,7 +230,7 @@ export const PluginDetail: FC<IPluginDetail> = ({ plugin, onCancel }) => {
];
return (
<Modal open={!!plugin} footer={false} destroyOnClose width={1200} onCancel={onCancel}>
<Modal open={!!plugin} footer={false} destroyOnClose width={600} onCancel={onCancel}>
{loading ? (
<Spin />
) : (

View File

@ -1,7 +1,7 @@
export * from './PluginManagerLink';
import { PageHeader } from '@ant-design/pro-layout';
import { useDebounce } from 'ahooks';
import { Button, Divider, Input, Result, Space, Spin, Tabs } from 'antd';
import { Button, Col, Divider, Input, List, Result, Row, Space, Spin, Tabs } from 'antd';
import _ from 'lodash';
import React, { useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
@ -71,10 +71,50 @@ const LocalPlugins = () => {
const [filterIndex, setFilterIndex] = useState(0);
const [isShowAddForm, setShowAddForm] = useState(false);
const [searchValue, setSearchValue] = useState('');
const [keyword, setKeyword] = useState(null);
const debouncedSearchValue = useDebounce(searchValue, { wait: 100 });
const keywordList = useMemo(() => {
let keyWordlists = [];
data?.data.forEach((v) => {
if (v.keywords) {
keyWordlists = keyWordlists.concat(v.keywords);
}
});
keyWordlists.sort((a, b) => {
if (a === 'data model') return -1;
if (b === 'data model') return 1;
return 0;
});
return _.uniq(keyWordlists).concat('other');
}, [data?.data]);
const keyWordsfilterList = useMemo(() => {
const list = keywordList.map((i) => {
if (i === 'other') {
const result = data?.data.filter((v) => !v.keywords);
return {
key: i,
list: result,
};
}
const result = data?.data.filter((v) => v.keywords?.includes(i));
return {
key: i,
list: result,
};
});
return list;
}, [keywordList]);
const pluginList = useMemo(() => {
let list = filterList[filterIndex]?.list || [];
if (!filterIndex && keyword) {
list = keyWordsfilterList.find((v) => v.key === keyword).list;
} else if (filterIndex && keyword) {
const keyList = keyWordsfilterList.find((v) => v.key === keyword).list;
list = keyList.filter((value) => list.find((k) => k.name === value.name));
}
const searchLowerCaseValue = debouncedSearchValue.toLocaleLowerCase().trim();
if (searchLowerCaseValue) {
list = _.filter(
@ -88,8 +128,8 @@ const LocalPlugins = () => {
.includes(searchLowerCaseValue),
);
}
return list;
}, [filterIndex, filterList, debouncedSearchValue]);
return list.sort((a, b) => a.displayName.localeCompare(b.displayName));
}, [filterIndex, filterList, debouncedSearchValue, keyword]);
const handleSearch = (value: string) => {
setSearchValue(value);
@ -98,7 +138,6 @@ const LocalPlugins = () => {
if (loading) {
return <Spin />;
}
return (
<>
<PluginAddModal
@ -108,6 +147,7 @@ const LocalPlugins = () => {
// if (isRefresh) refresh();
}}
/>
<div style={{ width: '100%' }}>
<div
style={{ marginBottom: theme.marginLG }}
@ -117,7 +157,7 @@ const LocalPlugins = () => {
align-items: center;
`}
>
<div>
<div style={{ marginLeft: 200 }}>
<Space size={theme.marginXXS} split={<Divider type="vertical" />}>
{filterList.map((item, index) => (
<a
@ -127,7 +167,8 @@ const LocalPlugins = () => {
key={item.type}
style={{ fontWeight: filterIndex === index ? 'bold' : 'normal' }}
>
{t(item.type)}({item.list?.length})
{t(item.type)}
{filterIndex === index ? `(${pluginList?.length})` : null}
</a>
))}
<Input
@ -145,22 +186,45 @@ const LocalPlugins = () => {
</Space>
</div>
</div>
<div
className={css`
--grid-gutter: ${theme.margin}px;
--extensions-card-width: 350px;
display: grid;
grid-column-gap: var(--grid-gutter);
grid-row-gap: var(--grid-gutter);
grid-template-columns: repeat(auto-fill, var(--extensions-card-width));
justify-content: center;
margin: auto;
`}
>
{pluginList.map((item) => (
<PluginCard key={item.name} data={item} />
))}
</div>
<Row style={{ width: '100%' }}>
<Col flex="200px">
<List
size="small"
dataSource={keyWordsfilterList}
split={false}
renderItem={(item) => {
return (
<List.Item
style={{ padding: '3px 0' }}
onClick={() => (item.key !== keyword ? setKeyword(item.key) : setKeyword(null))}
>
<a style={{ fontWeight: keyword === item.key ? 'bold' : 'normal' }}>
{t(item.key?.charAt?.(0).toUpperCase() + item.key?.slice?.(1))}
</a>
</List.Item>
);
}}
/>
</Col>
<Col flex="auto">
<div
className={css`
--grid-gutter: ${theme.margin}px;
--extensions-card-width: calc(25% - var(--grid-gutter) + var(--grid-gutter) / 4);
display: grid;
grid-column-gap: var(--grid-gutter);
grid-row-gap: var(--grid-gutter);
grid-template-columns: repeat(auto-fill, var(--extensions-card-width));
justify-content: left;
margin: auto;
`}
>
{pluginList.map((item) => (
<PluginCard key={item.name} data={item} />
))}
</div>
</Col>
</Row>
</div>
</>
);

View File

@ -20,4 +20,6 @@ export interface IPluginData {
changelogUrl: string;
error: boolean;
updatable?: boolean;
homepage?: string;
keywords?: string[];
}

View File

@ -208,10 +208,12 @@ export abstract class Plugin<O = any> implements PluginInterface {
const results = {
...this.options,
keywords: packageJson.keywords,
readmeUrl: getExposeReadmeUrl(packageName, locale),
changelogUrl: getExposeChangelogUrl(packageName),
displayName: packageJson[`displayName.${locale}`] || packageJson.displayName || name,
description: packageJson[`description.${locale}`] || packageJson.description,
homepage: packageJson[`homepage.${locale}`] || packageJson.homepage,
};
if (!options.withOutOpenFile) {

View File

@ -7,6 +7,9 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/acl",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/acl",
"keywords":["security","users"],
"devDependencies": {
"@types/jsonwebtoken": "^8.5.8",
"async-mutex": "^0.3.2",

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-bulk-edit",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/action-bulk-edit",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/action-bulk-edit",
"displayName": "Bulk edit action",
"displayName.zh-CN": "批量编辑操作",
"description": "Provides bulk edit action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-bulk-update",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/action-bulk-update",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/action-bulk-update",
"displayName": "Bulk update action",
"displayName.zh-CN": "批量更新操作",
"description": "Provides bulk update action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-duplicate",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/action-duplicate",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/action-duplicate",
"displayName": "Data duplicate",
"displayName.zh-CN": "数据复制",
"description": "Provides deplicate action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-print",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/action-print",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/action-print",
"displayName": "Print",
"displayName.zh-CN": "打印操作",
"description": "Provides print action",
@ -12,5 +14,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"action"
]
}

View File

@ -7,6 +7,8 @@
"description.zh-CN": "NocoBase HTTP API 的 OpenAPI 文档生成器",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/api-doc",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/api-doc",
"types": "./dist/server/index.d.ts",
"devDependencies": {
"swagger-ui-dist": "^5.3.1"

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/api-keys",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/api-keys",
"devDependencies": {
"@formily/react": "2.x",
"@formily/shared": "2.x",

View File

@ -6,6 +6,8 @@
"description": "Data addition, modification, deletion logs",
"description.zh-CN": "数据的增删改日志",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/audit-logs",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/audit-logs",
"license": "AGPL-3.0",
"devDependencies": {
"@ant-design/icons": "5.x",
@ -21,5 +23,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-auth",
"version": "0.19.0-alpha.5",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/auth",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/auth",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/react": "2.x",
@ -24,5 +26,6 @@
"displayName.zh-CN": "用户认证",
"description": "Basic authentication and authenticator management",
"description.zh-CN": "提供基础认证功能和扩展认证器管理功能",
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["security","users"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/backup-restore",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/backup-restore",
"repository": {
"type": "git",
"url": "git+https://github.com/nocobase/nocobase.git",
@ -35,5 +37,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
}
},
"keywords":["system"]
}

View File

@ -7,6 +7,8 @@
"description.zh-CN": "提供日历模板和区块",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/calendar",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/calendar",
"types": "./dist/server/index.d.ts",
"devDependencies": {
"@ant-design/icons": "5.x",
@ -34,5 +36,8 @@
"url": "git+https://github.com/nocobase/nocobase.git",
"directory": "packages/plugins/calendar"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"block"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/cas",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/cas",
"peerDependencies": {
"@nocobase/actions": "0.x",
"@nocobase/client": "0.x",
@ -21,5 +23,6 @@
"antd": "5.x",
"react-router-dom": "6.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["security","users"]
}

View File

@ -6,6 +6,8 @@
"description": "Provides China region data and field interface",
"description.zh-CN": "提供中国行政区数据和字段Interface类型",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/china-region",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/china-region",
"license": "AGPL-3.0",
"devDependencies": {
"@formily/core": "2.x",
@ -20,5 +22,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
}

View File

@ -6,6 +6,8 @@
"description.zh-CN": "提供便捷的数据表管理能力",
"version": "0.19.0-alpha.5",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/collection-manager",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/collection-manager",
"license": "AGPL-3.0",
"devDependencies": {
"@hapi/topo": "^6.0.0",
@ -20,5 +22,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["data model"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-custom-request",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/custom-request",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/custom-request",
"displayName": "Custom request",
"displayName.zh-CN": "自定义请求",
"description": "Custom request action",
@ -20,5 +22,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -6,6 +6,8 @@
"description": "Provides business intelligence and data visualization features",
"description.zh-CN": "提供 BI 面板和数据可视化功能",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/data-visualization",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/data-visualization",
"devDependencies": {
"@ant-design/icons": "5.x",
"@ant-design/plots": "^1.2.5",
@ -31,5 +33,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
}

View File

@ -7,5 +7,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["pm"]
}

View File

@ -16,5 +16,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/export",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/export",
"devDependencies": {
"@formily/antd-v5": "1.x",
"@formily/react": "2.x",
@ -25,5 +27,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -7,6 +7,8 @@
"description.zh-CN": "提供文件存储服务,并拓展了文件表模板和附件字段",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/file-manager",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/file-manager",
"devDependencies": {
"@aws-sdk/client-s3": "^3.245.0",
"@formily/antd-v5": "1.x",

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/formula-field",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/formula-field",
"devDependencies": {
"@formily/antd-v5": "1.x",
"@formily/core": "2.x",
@ -23,5 +25,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
}

View File

@ -7,6 +7,8 @@
"description.zh-CN": "提供甘特图区块",
"license": "AGPL-3.0",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/gantt",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/gantt",
"dependencies": {
"antd-style": "3.4.5"
},
@ -15,5 +17,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/graph-collection-manager",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/graph-collection-manager",
"devDependencies": {
"@ant-design/icons": "5.x",
"@antv/x6": "^2.0.0",
@ -33,5 +35,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["data model"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/iframe-block",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/iframe-block",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/react": "2.x",
@ -23,5 +25,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/import",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/import",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x",
@ -32,5 +34,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-kanban",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/kanban",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/kanban",
"license": "AGPL-3.0",
"displayName": "Kanban",
"displayName.zh-CN": "看板",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-localization-management",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/localization-management",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/localization-management",
"license": "AGPL-3.0",
"devDependencies": {
"deepmerge": "^4.3.1"
@ -19,5 +21,6 @@
"displayName.zh-CN": "多语言管理",
"description": "Allows to manage localization resources of the application.",
"description.zh-CN": "支持管理应用程序的多语言资源。",
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/logger",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/logger",
"devDependencies": {
"@types/tar-fs": "^2.0.2",
"tar-fs": "^3.0.4"
@ -17,5 +19,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -7,6 +7,8 @@
"description.zh-CN": "提供地图字段和区块",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/map",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/map",
"devDependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@amap/amap-jsapi-types": "^0.0.10",
@ -34,5 +36,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
}

View File

@ -19,5 +19,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-mobile-client",
"version": "0.19.0-alpha.5",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/mobile-client",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/mobile-client",
"license": "AGPL-3.0",
"displayName": "Mobile client",
"displayName.zh-CN": "移动端",

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/multi-app-manager",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/multi-app-manager",
"devDependencies": {
"@formily/react": "2.x",
"@formily/shared": "2.x",
@ -26,5 +28,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -23,5 +23,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -16,5 +16,6 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/oidc",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/oidc",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x",
@ -27,5 +29,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["security","users"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/saml",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/saml",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/react": "2.x",
@ -25,5 +27,6 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["security","users"]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/sequence-field",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/sequence-field",
"devDependencies": {
"@formily/antd-v5": "1.x",
"@formily/core": "2.x",
@ -27,5 +29,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"field"
]
}

View File

@ -6,6 +6,8 @@
"description.zh-CN": "SMS authentication for NocoBase",
"version": "0.19.0-alpha.5",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/sms-auth",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/sms-auth",
"license": "AGPL-3.0",
"devDependencies": {
"@formily/react": "2.x",
@ -23,5 +25,9 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"security",
"users"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/snapshot-field",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/snapshot-field",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/core": "2.x",
@ -24,5 +26,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"field"
]
}

View File

@ -7,11 +7,16 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/system-settings",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/system-settings",
"peerDependencies": {
"@nocobase/client": "0.x",
"@nocobase/database": "0.x",
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
}

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-theme-editor",
"version": "0.19.0-alpha.5",
"main": "dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/theme-editor",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/theme-editor",
"displayName": "Theme editor",
"displayName.zh-CN": "主题编辑器",
"description": "Allows you to customize UI colors, sizes, etc",
@ -30,5 +32,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
}

View File

@ -17,5 +17,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/ui-schema-storage",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/ui-schema-storage",
"devDependencies": {
"@formily/json-schema": "2.x"
},
@ -22,5 +24,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/users",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/users",
"devDependencies": {
"@types/jsonwebtoken": "^8.5.8",
"jsonwebtoken": "^8.5.1"
@ -22,5 +24,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"users"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/verification",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/verification",
"devDependencies": {
"@alicloud/dysmsapi20170525": "2.0.17",
"@alicloud/openapi-client": "0.4.1",
@ -29,5 +31,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-aggregate",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-aggregate",
"devDependencies": {
"antd": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-delay",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-delay",
"devDependencies": {
"antd": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-dynamic-calculation",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-dynamic-calculation",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x",
@ -28,5 +30,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-form-trigger",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-form-trigger",
"devDependencies": {
"antd": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-loop",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-loop",
"devDependencies": {
"@ant-design/icons": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-manual",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-manual",
"devDependencies": {
"@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x",
@ -28,5 +30,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-parallel",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-parallel",
"devDependencies": {
"@ant-design/icons": "5.x",
"antd": "5.x",
@ -20,5 +22,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-request",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-request",
"devDependencies": {
"antd": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow-sql",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow-sql",
"devDependencies": {
"antd": "5.x",
"react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x",
"@nocobase/test": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5",
"license": "AGPL-3.0",
"main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/workflow",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/workflow",
"dependencies": {
"@nocobase/plugin-workflow-test": "0.19.0-alpha.5"
},
@ -43,5 +45,8 @@
"@nocobase/test": "0.x",
"@nocobase/utils": "0.x"
},
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde"
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
}