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 starting...": "Plugin starting...",
"Plugin stopping...": "Plugin stopping...", "Plugin stopping...": "Plugin stopping...",
"Are you sure to delete this plugin?": "Are you sure to delete this plugin?", "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", "re-download file": "re-download file",
"Not enabled": "Not enabled", "Not enabled": "Not enabled",
"Search plugin": "Search plugin", "Search plugin": "Search plugin",

View File

@ -661,6 +661,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 delete this plugin":"本当にこのプラグインを無効にしますか?",
"re-download file": "ファイルを再ダウンロード", "re-download file": "ファイルを再ダウンロード",
"Not enabled": "有効になっていません", "Not enabled": "有効になっていません",
"Search plugin": "プラグインを検索", "Search plugin": "プラグインを検索",

View File

@ -651,6 +651,7 @@
"Plugin starting...": "Plugin iniciando...", "Plugin starting...": "Plugin iniciando...",
"Plugin stopping...": "Plugin parando...", "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 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", "re-download file": "re-fazer download do arquivo",
"Not enabled": "Não habilitado", "Not enabled": "Não habilitado",
"Search plugin": "Pesquisar plugin", "Search plugin": "Pesquisar plugin",

View File

@ -201,7 +201,7 @@
"Actions": "操作", "Actions": "操作",
"Update": "更新", "Update": "更新",
"Update record": "更新数据", "Update record": "更新数据",
"Unnamed":"未命名", "Unnamed": "未命名",
"View": "查看", "View": "查看",
"View record": "查看数据", "View record": "查看数据",
"Refresh": "刷新", "Refresh": "刷新",
@ -225,7 +225,7 @@
"General collection": "普通数据表", "General collection": "普通数据表",
"SQL collection": "SQL数据表", "SQL collection": "SQL数据表",
"Connect to database view": "连接数据库视图", "Connect to database view": "连接数据库视图",
"Sync from database":"从数据库同步", "Sync from database": "从数据库同步",
"Source collections": "来源数据表", "Source collections": "来源数据表",
"Field source": "来源字段", "Field source": "来源字段",
"Preview": "预览", "Preview": "预览",
@ -715,6 +715,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?": "确定要禁用此插件吗?",
"re-download file": "重新下载文件", "re-download file": "重新下载文件",
"Not enabled": "未启用", "Not enabled": "未启用",
"Search plugin": "搜索插件", "Search plugin": "搜索插件",
@ -841,6 +842,12 @@
"Sign in with another account": "登录其他账号", "Sign in with another account": "登录其他账号",
"Return to the main application": "返回主应用", "Return to the main application": "返回主应用",
"Permission denied": "没有权限", "Permission denied": "没有权限",
"Allow add new":"允许新增", "Allow add new": "允许新增",
"Allow selection of existing records":"允许选择已有数据" "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) { function PluginInfo(props: IPluginInfo) {
const { data, onClick } = props; const { data, onClick } = props;
const app = useApp(); 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 { styles, theme } = useStyles();
const navigate = useNavigate(); const navigate = useNavigate();
const { t } = useTranslation(); const { t } = useTranslation();
@ -78,7 +79,15 @@ function PluginInfo(props: IPluginInfo) {
`} `}
actions={[ actions={[
<Space split={<Divider type="vertical" />} key={'1'}> <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')} <ReadOutlined /> {t('Docs')}
</a> </a>
{updatable && ( {updatable && (
@ -143,12 +152,26 @@ function PluginInfo(props: IPluginInfo) {
message.error(t("Dependencies check failed, can't enable.")); message.error(t("Dependencies check failed, can't enable."));
return; return;
} }
await api.request({ if (!checked) {
url: `pm:${checked ? 'enable' : 'disable'}`, modal.confirm({
params: { title: t('Are you sure to disable this plugin?'),
filterByTk: name, onOk: async () => {
}, await api.request({
}); url: `pm:disable`,
params: {
filterByTk: name,
},
});
},
});
} else {
await api.request({
url: `pm:enable`,
params: {
filterByTk: name,
},
});
}
}} }}
checked={enabledVal} checked={enabledVal}
></Switch>, ></Switch>,

View File

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

View File

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

View File

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

View File

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

View File

@ -7,6 +7,9 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@types/jsonwebtoken": "^8.5.8", "@types/jsonwebtoken": "^8.5.8",
"async-mutex": "^0.3.2", "async-mutex": "^0.3.2",

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-bulk-edit", "name": "@nocobase/plugin-action-bulk-edit",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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": "Bulk edit action",
"displayName.zh-CN": "批量编辑操作", "displayName.zh-CN": "批量编辑操作",
"description": "Provides bulk edit action", "description": "Provides bulk edit action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
} }

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-bulk-update", "name": "@nocobase/plugin-action-bulk-update",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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": "Bulk update action",
"displayName.zh-CN": "批量更新操作", "displayName.zh-CN": "批量更新操作",
"description": "Provides bulk update action", "description": "Provides bulk update action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
} }

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-duplicate", "name": "@nocobase/plugin-action-duplicate",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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": "Data duplicate",
"displayName.zh-CN": "数据复制", "displayName.zh-CN": "数据复制",
"description": "Provides deplicate action", "description": "Provides deplicate action",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["action"]
} }

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-action-print", "name": "@nocobase/plugin-action-print",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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": "Print",
"displayName.zh-CN": "打印操作", "displayName.zh-CN": "打印操作",
"description": "Provides print action", "description": "Provides print action",
@ -12,5 +14,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "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 文档生成器", "description.zh-CN": "NocoBase HTTP API 的 OpenAPI 文档生成器",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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", "types": "./dist/server/index.d.ts",
"devDependencies": { "devDependencies": {
"swagger-ui-dist": "^5.3.1" "swagger-ui-dist": "^5.3.1"

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@formily/react": "2.x", "@formily/react": "2.x",
"@formily/shared": "2.x", "@formily/shared": "2.x",

View File

@ -6,6 +6,8 @@
"description": "Data addition, modification, deletion logs", "description": "Data addition, modification, deletion logs",
"description.zh-CN": "数据的增删改日志", "description.zh-CN": "数据的增删改日志",
"main": "./dist/server/index.js", "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", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
@ -21,5 +23,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
} }

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "repository": {
"type": "git", "type": "git",
"url": "git+https://github.com/nocobase/nocobase.git", "url": "git+https://github.com/nocobase/nocobase.git",
@ -35,5 +37,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
} },
"keywords":["system"]
} }

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/cas",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/cas",
"peerDependencies": { "peerDependencies": {
"@nocobase/actions": "0.x", "@nocobase/actions": "0.x",
"@nocobase/client": "0.x", "@nocobase/client": "0.x",
@ -21,5 +23,6 @@
"antd": "5.x", "antd": "5.x",
"react-router-dom": "6.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": "Provides China region data and field interface",
"description.zh-CN": "提供中国行政区数据和字段Interface类型", "description.zh-CN": "提供中国行政区数据和字段Interface类型",
"main": "./dist/server/index.js", "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", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@formily/core": "2.x", "@formily/core": "2.x",
@ -20,5 +22,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
} }

View File

@ -6,6 +6,8 @@
"description.zh-CN": "提供便捷的数据表管理能力", "description.zh-CN": "提供便捷的数据表管理能力",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "./dist/server/index.js", "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", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@hapi/topo": "^6.0.0", "@hapi/topo": "^6.0.0",
@ -20,5 +22,6 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["data model"]
} }

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-custom-request", "name": "@nocobase/plugin-custom-request",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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": "Custom request",
"displayName.zh-CN": "自定义请求", "displayName.zh-CN": "自定义请求",
"description": "Custom request action", "description": "Custom request action",
@ -20,5 +22,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "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": "Provides business intelligence and data visualization features",
"description.zh-CN": "提供 BI 面板和数据可视化功能", "description.zh-CN": "提供 BI 面板和数据可视化功能",
"main": "dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@ant-design/plots": "^1.2.5", "@ant-design/plots": "^1.2.5",
@ -31,5 +33,6 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
} }

View File

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

View File

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

View File

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

View File

@ -7,6 +7,8 @@
"description.zh-CN": "提供文件存储服务,并拓展了文件表模板和附件字段", "description.zh-CN": "提供文件存储服务,并拓展了文件表模板和附件字段",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@aws-sdk/client-s3": "^3.245.0", "@aws-sdk/client-s3": "^3.245.0",
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",
"@formily/core": "2.x", "@formily/core": "2.x",
@ -23,5 +25,6 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["field"]
} }

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@antv/x6": "^2.0.0", "@antv/x6": "^2.0.0",
@ -33,5 +35,6 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "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", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/react": "2.x", "@formily/react": "2.x",
@ -23,5 +25,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
} }

View File

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

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-kanban", "name": "@nocobase/plugin-kanban",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "dist/server/index.js", "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", "license": "AGPL-3.0",
"displayName": "Kanban", "displayName": "Kanban",
"displayName.zh-CN": "看板", "displayName.zh-CN": "看板",
@ -12,5 +14,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["block"]
} }

View File

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

View File

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

View File

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

View File

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

View File

@ -2,6 +2,8 @@
"name": "@nocobase/plugin-mobile-client", "name": "@nocobase/plugin-mobile-client",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "./dist/server/index.js", "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", "license": "AGPL-3.0",
"displayName": "Mobile client", "displayName": "Mobile client",
"displayName.zh-CN": "移动端", "displayName.zh-CN": "移动端",

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@formily/react": "2.x", "@formily/react": "2.x",
"@formily/shared": "2.x", "@formily/shared": "2.x",
@ -26,5 +28,6 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords":["system"]
} }

View File

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

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/oidc",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/oidc",
"devDependencies": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",
@ -27,5 +29,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "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", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "main": "./dist/server/index.js",
"homepage": "https://docs.nocobase.com/plugins/saml",
"homepage.zh-CN": "https://docs-cn.nocobase.com/plugins/saml",
"devDependencies": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/react": "2.x", "@formily/react": "2.x",
@ -25,5 +27,6 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "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", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",
"@formily/core": "2.x", "@formily/core": "2.x",
@ -27,5 +29,8 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "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", "description.zh-CN": "SMS authentication for NocoBase",
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"main": "./dist/server/index.js", "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", "license": "AGPL-3.0",
"devDependencies": { "devDependencies": {
"@formily/react": "2.x", "@formily/react": "2.x",
@ -23,5 +25,9 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "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", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/core": "2.x", "@formily/core": "2.x",
@ -24,5 +26,8 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"field"
]
} }

View File

@ -7,11 +7,16 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "peerDependencies": {
"@nocobase/client": "0.x", "@nocobase/client": "0.x",
"@nocobase/database": "0.x", "@nocobase/database": "0.x",
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
} }

View File

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

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@formily/json-schema": "2.x" "@formily/json-schema": "2.x"
}, },
@ -22,5 +24,8 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"system"
]
} }

View File

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

View File

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

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"antd": "5.x", "antd": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"antd": "5.x", "antd": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",
@ -28,5 +30,8 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"antd": "5.x", "antd": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"@formily/antd-v5": "1.x", "@formily/antd-v5": "1.x",
@ -28,5 +30,8 @@
"@nocobase/test": "0.x", "@nocobase/test": "0.x",
"@nocobase/utils": "0.x" "@nocobase/utils": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"@ant-design/icons": "5.x", "@ant-design/icons": "5.x",
"antd": "5.x", "antd": "5.x",
@ -20,5 +22,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"antd": "5.x", "antd": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

@ -7,6 +7,8 @@
"version": "0.19.0-alpha.5", "version": "0.19.0-alpha.5",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "./dist/server/index.js", "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": { "devDependencies": {
"antd": "5.x", "antd": "5.x",
"react": "18.x", "react": "18.x",
@ -19,5 +21,8 @@
"@nocobase/server": "0.x", "@nocobase/server": "0.x",
"@nocobase/test": "0.x" "@nocobase/test": "0.x"
}, },
"gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde" "gitHead": "979a9c59a98c61a2287dd847580746a9b597cbde",
"keywords": [
"workflow"
]
} }

View File

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