From d8befa75c6f6804e7de2531e68003428b72a8624 Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 25 Jul 2023 09:42:59 +0800 Subject: [PATCH 01/34] refactor: table column field provider optimize (#2312) --- .../components/ColumnFieldProvider.tsx | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/table-v2/components/ColumnFieldProvider.tsx b/packages/core/client/src/schema-component/antd/table-v2/components/ColumnFieldProvider.tsx index d84d62d400..67677602a1 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/components/ColumnFieldProvider.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/components/ColumnFieldProvider.tsx @@ -14,10 +14,23 @@ export const ColumnFieldProvider = observer( return buf; }, null); const collectionField = fieldSchema && getCollectionJoinField(fieldSchema['x-collection-field']); - if (fieldSchema && record?.__collection && ['select', 'multipleSelect'].includes(collectionField?.interface)) { + if ( + fieldSchema && + record?.__collection && + collectionField && + ['select', 'multipleSelect'].includes(collectionField.interface) + ) { const fieldName = `${record.__collection}.${fieldSchema.name}`; - schema.properties[fieldSchema.name]['x-collection-field'] = fieldName; - return ; + const newSchema = { + ...schema.toJSON(), + properties: { + [fieldSchema.name]: { + ...fieldSchema.toJSON(), + 'x-collection-field': fieldName, + }, + }, + }; + return ; } return props.children; }, From df4e6de4dcd7bdd7c4b883a49e6019b336f63d44 Mon Sep 17 00:00:00 2001 From: Junyi Date: Tue, 25 Jul 2023 09:41:54 +0700 Subject: [PATCH 02/34] fix(plugin-workflow): fix schedule duplicated triggering in multi-apps (#2313) --- packages/plugins/workflow/src/server/triggers/schedule.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/plugins/workflow/src/server/triggers/schedule.ts b/packages/plugins/workflow/src/server/triggers/schedule.ts index 48ddaeb673..31a7fd3ab1 100644 --- a/packages/plugins/workflow/src/server/triggers/schedule.ts +++ b/packages/plugins/workflow/src/server/triggers/schedule.ts @@ -424,6 +424,10 @@ export default class ScheduleTrigger extends Trigger { } init() { + if (this.plugin.app.name !== 'main') { + return; + } + if (this.timer) { return; } @@ -435,7 +439,7 @@ export default class ScheduleTrigger extends Trigger { this.run, // NOTE: // try to align to system time on each second starts, - // after at least 1 second initialized for anything to get ready. + // after at least 1 second initialized for everything to get ready. // so jobs in 2 seconds will be missed at first start. 1_000 - now.getMilliseconds(), ); From 137e3eb171411343ecceca22b5b4fce514eadcc2 Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 25 Jul 2023 13:51:50 +0800 Subject: [PATCH 03/34] refactor: date field UI supports configuration formatting (#2241) * refactor: support format in datetime field * refactor: support format config in datetime field * fix: datetime field support dateformat config * fix: datetime field support dateformat config * refactor: table column support date format config * refactor: table column support date format config * refactor: table column support date format config * refactor: code improve * refactor: code improve * fix: merge bug * fix: merge bug * style: style improve * Update index.tsx * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: locale improve * refactor: locale improve --------- Co-authored-by: chenos --- packages/core/client/src/locale/en_US.ts | 3 +- packages/core/client/src/locale/ja_JP.ts | 3 +- packages/core/client/src/locale/zh_CN.ts | 3 +- .../antd/form-item/FormItem.tsx | 11 +- .../antd/form-item/SchemaSettingOptions.tsx | 2 +- .../antd/table-v2/Table.Column.Designer.tsx | 11 +- .../DateFormat/ExpiresRadio.tsx | 105 +++++++++++++ .../src/schema-settings/SchemaSettings.tsx | 147 ++++++++++++++++++ 8 files changed, 273 insertions(+), 12 deletions(-) create mode 100644 packages/core/client/src/schema-settings/DateFormat/ExpiresRadio.tsx diff --git a/packages/core/client/src/locale/en_US.ts b/packages/core/client/src/locale/en_US.ts index 68a8875db0..f4fd5e52c5 100644 --- a/packages/core/client/src/locale/en_US.ts +++ b/packages/core/client/src/locale/en_US.ts @@ -707,5 +707,6 @@ export default { "Current form": "Current form", "Current object":"Current object", "Linkage with form fields":"Linkage with form fields", - "Allow add new, update and delete actions":"Allow add new, update and delete actions" + "Allow add new, update and delete actions":"Allow add new, update and delete actions", + "Date display format":"Date display format" }; diff --git a/packages/core/client/src/locale/ja_JP.ts b/packages/core/client/src/locale/ja_JP.ts index ca3496767b..39e05fb4af 100644 --- a/packages/core/client/src/locale/ja_JP.ts +++ b/packages/core/client/src/locale/ja_JP.ts @@ -618,5 +618,6 @@ export default { "Current form":"現在のフォーム", "Current object":"現在のオブジェクト", "Linkage with form fields":"フォームデータから連動", - "Allow add new, update and delete actions":"削除変更操作の許可" + "Allow add new, update and delete actions":"削除変更操作の許可", + "Date display format":"日付表示形式" } diff --git a/packages/core/client/src/locale/zh_CN.ts b/packages/core/client/src/locale/zh_CN.ts index 9f808c41a0..1bc7ea021d 100644 --- a/packages/core/client/src/locale/zh_CN.ts +++ b/packages/core/client/src/locale/zh_CN.ts @@ -792,5 +792,6 @@ export default { "Copy into the form and continue to fill in": "复制到表单并继续填写", "Linkage with form fields":"从表单字段联动", "Failed to load plugin": "插件加载失败", - "Allow add new, update and delete actions":"允许增删改操作" + "Allow add new, update and delete actions":"允许增删改操作", + "Date display format":"日期显示格式" } diff --git a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx index 3e781f9870..3b1ad0a9bb 100644 --- a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx +++ b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx @@ -1,7 +1,7 @@ import { css, cx } from '@emotion/css'; -import { ArrayCollapse, ArrayItems, FormLayout, FormItem as Item } from '@formily/antd-v5'; +import { ArrayCollapse, ArrayItems, FormItem as Item, FormLayout } from '@formily/antd-v5'; import { Field } from '@formily/core'; -import { ISchema, Schema, observer, useField, useFieldSchema } from '@formily/react'; +import { ISchema, observer, Schema, useField, useFieldSchema } from '@formily/react'; import { dayjs } from '@nocobase/utils/client'; import { Select } from 'antd'; import _ from 'lodash'; @@ -20,9 +20,9 @@ import { } from '../../../collection-manager'; import { isTitleField } from '../../../collection-manager/Configuration/CollectionFields'; import { GeneralSchemaItems } from '../../../schema-items/GeneralSchemaItems'; -import { GeneralSchemaDesigner, SchemaSettings, isPatternDisabled, isShowDefaultValue } from '../../../schema-settings'; -import { VariableInput } from '../../../schema-settings/VariableInput/VariableInput'; +import { GeneralSchemaDesigner, isPatternDisabled, isShowDefaultValue, SchemaSettings } from '../../../schema-settings'; import { useIsShowMultipleSwitch } from '../../../schema-settings/hooks/useIsShowMultipleSwitch'; +import { VariableInput } from '../../../schema-settings/VariableInput/VariableInput'; import { isVariable, parseVariables, useVariablesCtx } from '../../common/utils/uitls'; import { SchemaComponent } from '../../core'; import { useCompile, useDesignable, useFieldModeOptions } from '../../hooks'; @@ -175,6 +175,8 @@ FormItem.Designer = function Designer() { const isPickerMode = fieldSchema['x-component-props']?.mode === 'Picker'; const showFieldMode = isAssociationField && fieldModeOptions && !isTableField; const showModeSelect = showFieldMode && isPickerMode; + const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField.interface); + return ( @@ -840,6 +842,7 @@ FormItem.Designer = function Designer() { }} /> )} + {isDateField && } {collectionField && } { // 需要在组件顶层调用 @@ -44,6 +44,7 @@ export const TableColumnDesigner = (props) => { const { currentMode, field: tableField } = useAssociationFieldContext(); const defaultFilter = fieldSchema?.['x-component-props']?.service?.params?.filter || {}; const dataSource = useCollectionFilterOptions(collectionField?.target); + const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField.interface); let readOnlyMode = 'editable'; if (fieldSchema['x-disabled'] === true) { readOnlyMode = 'readonly'; @@ -323,6 +324,8 @@ export const TableColumnDesigner = (props) => { }} /> )} + {isDateField && } + .ant-space-item { + flex: 1; + } +`; +export const DateFormatCom = (props?) => { + const date = moment(); + return ( +
+ {props.format} + +
+ ); +}; + +const DateTimeFormatPreview = ({ content }) => { + const { token } = useToken(); + return ( + + {content} + + ); +}; + +const InternalExpiresRadio = (props) => { + const { onChange, defaultValue, formats, timeFormat } = props; + const [isCustom, { setFalse, setTrue }] = useBoolean(props.value && !formats.includes(props.value)); + const targetValue = props.value && !formats.includes(props.value) ? props.value : defaultValue; + const [customFormatPreview, setCustomFormatPreview] = useState(targetValue ? date.format(targetValue) : null); + const onSelectChange = (v) => { + if (v.target.value === 'custom') { + setTrue(); + onChange(targetValue); + } else { + setFalse(); + onChange(v.target.value); + } + }; + + return ( + + + + {props.options.map((v) => { + if (v.value === 'custom') { + return ( + + { + if ( + e.target.value && + moment(timeFormat ? date.format() : date.toLocaleString(), e.target.value).isValid() + ) { + setCustomFormatPreview(date.format(e.target.value)); + } else { + setCustomFormatPreview(null); + } + if (isCustom) { + onChange(e.target.value); + } + }} + /> + + + ); + } + return {v.label}; + })} + + + + ); +}; + +const ExpiresRadio = connect( + InternalExpiresRadio, + mapProps({ + dataSource: 'options', + }), +); + +export { ExpiresRadio }; diff --git a/packages/core/client/src/schema-settings/SchemaSettings.tsx b/packages/core/client/src/schema-settings/SchemaSettings.tsx index dc9f664107..ae8c4edc45 100644 --- a/packages/core/client/src/schema-settings/SchemaSettings.tsx +++ b/packages/core/client/src/schema-settings/SchemaSettings.tsx @@ -1,3 +1,4 @@ +import { css } from '@emotion/css'; import { ArrayCollapse, ArrayItems, FormItem, FormLayout, Input } from '@formily/antd-v5'; import { Field, GeneralField, createForm } from '@formily/core'; import { ISchema, Schema, SchemaOptionsContext, useField, useFieldSchema, useForm } from '@formily/react'; @@ -63,6 +64,7 @@ import { getTargetKey } from '../schema-component/antd/association-filter/utilts import { useSchemaTemplateManager } from '../schema-templates'; import { useBlockTemplateContext } from '../schema-templates/BlockTemplate'; import { FormDataTemplates } from './DataTemplates'; +import { DateFormatCom, ExpiresRadio } from './DateFormat/ExpiresRadio'; import { EnableChildCollections } from './EnableChildCollections'; import { ChildDynamicComponent } from './EnableChildCollections/DynamicComponent'; import { FormLinkageRules } from './LinkageRules'; @@ -1267,6 +1269,151 @@ SchemaSettings.EnableChildCollections = function EnableChildCollectionsItem(prop ); }; +SchemaSettings.DataFormat = function DateFormatConfig(props: { fieldSchema: Schema }) { + const { fieldSchema } = props; + const field = useField(); + const form = useForm(); + const { dn } = useDesignable(); + const { t } = useTranslation(); + const { getCollectionJoinField } = useCollectionManager(); + const collectionField = getCollectionJoinField(fieldSchema?.['x-collection-field']) || {}; + const isShowTime = fieldSchema?.['x-component-props']?.showTime; + const dateFormatDefaultValue = + fieldSchema?.['x-component-props']?.dateFormat || + collectionField?.uiSchema?.['x-component-props']?.dateFormat || + 'YYYY-MM-DD'; + const timeFormatDefaultValue = + fieldSchema?.['x-component-props']?.timeFormat || collectionField?.uiSchema?.['x-component-props']?.timeFormat; + return ( + { + field.query('.timeFormat').take(f => { + f.display = field.value ? 'visible' : 'none'; + }); + }}}`, + ], + }, + timeFormat: { + type: 'string', + title: '{{t("Time format")}}', + 'x-component': ExpiresRadio, + 'x-decorator': 'FormItem', + 'x-decorator-props': { + className: css` + margin-bottom: 0px; + `, + }, + 'x-component-props': { + className: css` + color: red; + .ant-radio-wrapper { + display: flex; + margin: 5px 0px; + } + `, + defaultValue: 'h:mm a', + formats: ['hh:mm:ss a', 'HH:mm:ss'], + timeFormat: true, + }, + default: timeFormatDefaultValue, + enum: [ + { + label: DateFormatCom({ format: 'hh:mm:ss a' }), + value: 'hh:mm:ss a', + }, + { + label: DateFormatCom({ format: 'HH:mm:ss' }), + value: 'HH:mm:ss', + }, + { + label: 'custom', + value: 'custom', + }, + ], + }, + }, + } as ISchema + } + onSubmit={(data) => { + const schema = { + ['x-uid']: fieldSchema['x-uid'], + }; + schema['x-component-props'] = fieldSchema['x-component-props'] || {}; + fieldSchema['x-component-props'] = { + ...(fieldSchema['x-component-props'] || {}), + ...data, + }; + schema['x-component-props'] = fieldSchema['x-component-props']; + field.componentProps = fieldSchema['x-component-props']; + field.query(`.*.${fieldSchema.name}`).forEach((f) => { + f.componentProps = fieldSchema['x-component-props']; + }); + dn.emit('patch', { + schema, + }); + dn.refresh(); + }} + /> + ); +}; + // 是否显示默认值配置项 export const isShowDefaultValue = (collectionField: CollectionFieldOptions, getInterface) => { return ( From 1f8e0284fb9674a784502a84818bb7ba24b5df0b Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 25 Jul 2023 14:01:54 +0800 Subject: [PATCH 04/34] refactor: sub-table acl ignore (#2259) --- packages/core/client/src/acl/ACLProvider.tsx | 5 ++++- .../src/schema-component/antd/association-field/SubTable.tsx | 1 + .../core/client/src/schema-component/antd/table-v2/Table.tsx | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/core/client/src/acl/ACLProvider.tsx b/packages/core/client/src/acl/ACLProvider.tsx index 13d4942340..ffb378a3d2 100644 --- a/packages/core/client/src/acl/ACLProvider.tsx +++ b/packages/core/client/src/acl/ACLProvider.tsx @@ -233,7 +233,10 @@ export const useACLFieldWhitelist = () => { .concat(params?.appends || []); return { whitelist, - schemaInWhitelist(fieldSchema: Schema) { + schemaInWhitelist(fieldSchema: Schema, isSkip?) { + if (isSkip) { + return true; + } if (whitelist.length === 0) { return true; } diff --git a/packages/core/client/src/schema-component/antd/association-field/SubTable.tsx b/packages/core/client/src/schema-component/antd/association-field/SubTable.tsx index 1be5f1e05a..0853a793a7 100644 --- a/packages/core/client/src/schema-component/antd/association-field/SubTable.tsx +++ b/packages/core/client/src/schema-component/antd/association-field/SubTable.tsx @@ -97,6 +97,7 @@ export const SubTable: any = observer( ) } + isSubTable={true} /> ); diff --git a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx index 8a2fe69775..e215e0ef47 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx @@ -37,7 +37,7 @@ const useTableColumns = (props) => { const { exists, render } = useSchemaInitializer(schema['x-initializer']); const columns = schema .reduceProperties((buf, s) => { - if (isColumnComponent(s) && schemaInWhitelist(Object.values(s.properties || {}).pop())) { + if (isColumnComponent(s) && schemaInWhitelist(Object.values(s.properties || {}).pop(), props?.isSubTable)) { return buf.concat([s]); } return buf; From 2c8e7b163e1371234472bb780fd952156916b777 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=AB=E9=9B=A8=E6=B0=B4=E8=BF=87=E6=BB=A4=E7=9A=84?= =?UTF-8?q?=E7=A9=BA=E6=B0=94-Rain?= <958414905@qq.com> Date: Tue, 25 Jul 2023 14:09:02 +0800 Subject: [PATCH 05/34] chore: auto fix eslint errors when pre-commit (#2304) * chore: run lint when pre-commit * chore: auto fix eslint errors --- package.json | 15 ++++- yarn.lock | 173 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 180 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index b4e07acc14..d7bcb62119 100644 --- a/package.json +++ b/package.json @@ -40,11 +40,20 @@ }, "config": { "ghooks": { + "pre-commit": "yarn lint-staged", "commit-msg": "commitlint --edit" } }, + "lint-staged": { + "*.{js,json}": [ + "prettier --write" + ], + "*.ts?(x)": [ + "eslint --fix", + "prettier --parser=typescript --write" + ] + }, "devDependencies": { - "commander": "^9.2.0", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", "@commitlint/prompt-cli": "^16.1.0", @@ -55,13 +64,15 @@ "@types/react-dom": "^17.0.0", "@vitejs/plugin-react": "^4.0.0", "auto-changelog": "^2.4.0", + "commander": "^9.2.0", "dumi": "^2.2.0", "dumi-theme-nocobase": "^0.2.14", "eslint-plugin-jest-dom": "^5.0.1", "eslint-plugin-testing-library": "^5.11.0", "ghooks": "^2.0.4", "jsdom-worker": "^0.3.0", - "prettier": "^2.2.1", + "lint-staged": "^13.2.3", + "prettier": "^3.0.0", "pretty-format": "^24.0.0", "pretty-quick": "^3.1.0", "react": "^18.0.0", diff --git a/yarn.lock b/yarn.lock index cf73fd23ad..5b73222738 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7272,7 +7272,7 @@ ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" -ansi-escapes@^4.2.1: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.2" resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" dependencies: @@ -7310,6 +7310,11 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -7330,6 +7335,11 @@ ansi-styles@^5.0.0: version "5.2.0" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" +ansi-styles@^6.0.0: + version "6.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" + integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== + ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" resolved "https://registry.npmmirror.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" @@ -7780,6 +7790,11 @@ astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + astring@^1.8.0: version "1.8.6" resolved "https://registry.npmmirror.com/astring/-/astring-1.8.6.tgz#2c9c157cf1739d67561c56ba896e6948f6b93731" @@ -8822,6 +8837,11 @@ chalk@3.0.0, chalk@^3.0.0, chalk@~3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@5.2.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" + integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== + chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -9048,6 +9068,22 @@ cli-tableau@^2.0.0: dependencies: chalk "3.0.0" +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + +cli-truncate@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" + integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== + dependencies: + slice-ansi "^5.0.0" + string-width "^5.0.0" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.npmmirror.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -9280,6 +9316,11 @@ colord@^2.9.1: version "2.9.3" resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" +colorette@^2.0.19: + version "2.0.20" + resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + colors@^1.1.2: version "1.4.0" resolved "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -9334,6 +9375,11 @@ commander@7, commander@^7.2.0: version "7.2.0" resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" +commander@^10.0.0: + version "10.0.1" + resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" + integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== + commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0: version "2.20.3" resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -11245,6 +11291,11 @@ dynamic-dedupe@^0.3.0: dependencies: xtend "^4.0.0" +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.npmmirror.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -11311,6 +11362,11 @@ emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -12045,7 +12101,7 @@ execa@^5.0.0, execa@^5.1.1: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -execa@^7.1.1: +execa@^7.0.0, execa@^7.1.1: version "7.1.1" resolved "https://registry.npmmirror.com/execa/-/execa-7.1.1.tgz#3eb3c83d239488e7b409d48e8813b76bb55c9c43" dependencies: @@ -14427,6 +14483,11 @@ is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -16306,7 +16367,7 @@ lightningcss@1.19.0: lightningcss-linux-x64-musl "1.19.0" lightningcss-win32-x64-msvc "1.19.0" -lilconfig@^2.0.3, lilconfig@^2.0.5: +lilconfig@2.1.0, lilconfig@^2.0.3, lilconfig@^2.0.5: version "2.1.0" resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -16320,6 +16381,39 @@ linkify-it@^4.0.1: dependencies: uc.micro "^1.0.1" +lint-staged@^13.2.3: + version "13.2.3" + resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.3.tgz#f899aad6c093473467e9c9e316e3c2d8a28f87a7" + integrity sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg== + dependencies: + chalk "5.2.0" + cli-truncate "^3.1.0" + commander "^10.0.0" + debug "^4.3.4" + execa "^7.0.0" + lilconfig "2.1.0" + listr2 "^5.0.7" + micromatch "^4.0.5" + normalize-path "^3.0.0" + object-inspect "^1.12.3" + pidtree "^0.6.0" + string-argv "^0.3.1" + yaml "^2.2.2" + +listr2@^5.0.7: + version "5.0.8" + resolved "https://registry.npmmirror.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" + integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.19" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.8.0" + through "^2.3.8" + wrap-ansi "^7.0.0" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -16556,6 +16650,16 @@ log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + logform@^2.3.2, logform@^2.4.0: version "2.5.1" resolved "https://registry.npmmirror.com/logform/-/logform-2.5.1.tgz#44c77c34becd71b3a42a3970c77929e52c6ed48b" @@ -17423,7 +17527,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: +micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" dependencies: @@ -19247,6 +19351,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc version "2.3.1" resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" +pidtree@^0.6.0: + version "0.6.0" + resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" + integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== + pidusage@^2.0.21: version "2.0.21" resolved "https://registry.npmmirror.com/pidusage/-/pidusage-2.0.21.tgz#7068967b3d952baea73e57668c98b9eaa876894e" @@ -22034,6 +22143,11 @@ reusify@^1.0.4: version "1.0.4" resolved "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + rgb-regex@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/rgb-regex/-/rgb-regex-1.0.1.tgz#c0e0d6882df0e23be254a475e8edd41915feaeb1" @@ -22257,7 +22371,7 @@ rxjs@^6.4.0, rxjs@^6.6.0: dependencies: tslib "^1.9.0" -rxjs@^7.0.0, rxjs@^7.5.5: +rxjs@^7.0.0, rxjs@^7.5.5, rxjs@^7.8.0: version "7.8.1" resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543" dependencies: @@ -22655,6 +22769,32 @@ slash@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" + integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== + dependencies: + ansi-styles "^6.0.0" + is-fullwidth-code-point "^4.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.npmmirror.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -23091,7 +23231,7 @@ strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" -string-argv@~0.3.1: +string-argv@^0.3.1, string-argv@~0.3.1: version "0.3.2" resolved "https://registry.npmmirror.com/string-argv/-/string-argv-0.3.2.tgz#2b6d0ef24b656274d957d54e0a4bbf6153dc02b6" @@ -23148,6 +23288,15 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" +string-width@^5.0.0: + version "5.1.2" + resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + string.prototype.matchall@^4.0.8: version "4.0.8" resolved "https://registry.npmmirror.com/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz#3bf85722021816dcd1bf38bb714915887ca79fd3" @@ -23232,6 +23381,13 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.1.0" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" + integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -25544,6 +25700,11 @@ yaml@^1.10.0, yaml@^1.10.2: version "1.10.2" resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" +yaml@^2.2.2: + version "2.3.1" + resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" + integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== + yamljs@0.3.0: version "0.3.0" resolved "https://registry.npmmirror.com/yamljs/-/yamljs-0.3.0.tgz#dc060bf267447b39f7304e9b2bfbe8b5a7ddb03b" From b42e3b4042fa22f152940788c4c446930a63da34 Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 25 Jul 2023 14:42:30 +0800 Subject: [PATCH 06/34] refactor: form data template support data scope config (#2229) * refactor: data template support data scope config * refactor: data template support data scope config * refactor: locale improve * refactor: code improve * refactor: data template config data scope and title field should linkage with collection field * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: locale improve * refactor: locale improve * refactor: code improve --- packages/core/client/src/locale/en_US.ts | 3 +- packages/core/client/src/locale/ja_JP.ts | 3 +- packages/core/client/src/locale/zh_CN.ts | 3 +- .../antd/form-v2/Templates.tsx | 140 ++++++++++-------- .../DataTemplates/FormDataTemplates.tsx | 99 +++++++------ .../DataTemplates/hooks/useCollectionState.ts | 70 ++++++++- 6 files changed, 203 insertions(+), 115 deletions(-) diff --git a/packages/core/client/src/locale/en_US.ts b/packages/core/client/src/locale/en_US.ts index f4fd5e52c5..d7a2d31532 100644 --- a/packages/core/client/src/locale/en_US.ts +++ b/packages/core/client/src/locale/en_US.ts @@ -708,5 +708,6 @@ export default { "Current object":"Current object", "Linkage with form fields":"Linkage with form fields", "Allow add new, update and delete actions":"Allow add new, update and delete actions", - "Date display format":"Date display format" + "Date display format":"Date display format", + "Assign data scope for the template":"Assign data scope for the template", }; diff --git a/packages/core/client/src/locale/ja_JP.ts b/packages/core/client/src/locale/ja_JP.ts index 39e05fb4af..175508b795 100644 --- a/packages/core/client/src/locale/ja_JP.ts +++ b/packages/core/client/src/locale/ja_JP.ts @@ -619,5 +619,6 @@ export default { "Current object":"現在のオブジェクト", "Linkage with form fields":"フォームデータから連動", "Allow add new, update and delete actions":"削除変更操作の許可", - "Date display format":"日付表示形式" + "Date display format":"日付表示形式", + "Assign data scope for the template":"テンプレートのデータ範囲の指定", } diff --git a/packages/core/client/src/locale/zh_CN.ts b/packages/core/client/src/locale/zh_CN.ts index 1bc7ea021d..2e285cc186 100644 --- a/packages/core/client/src/locale/zh_CN.ts +++ b/packages/core/client/src/locale/zh_CN.ts @@ -793,5 +793,6 @@ export default { "Linkage with form fields":"从表单字段联动", "Failed to load plugin": "插件加载失败", "Allow add new, update and delete actions":"允许增删改操作", - "Date display format":"日期显示格式" + "Date display format":"日期显示格式", + "Assign data scope for the template":"为模板指定数据范围", } diff --git a/packages/core/client/src/schema-component/antd/form-v2/Templates.tsx b/packages/core/client/src/schema-component/antd/form-v2/Templates.tsx index 479d635620..f4126253c1 100644 --- a/packages/core/client/src/schema-component/antd/form-v2/Templates.tsx +++ b/packages/core/client/src/schema-component/antd/form-v2/Templates.tsx @@ -1,14 +1,16 @@ import { useFieldSchema } from '@formily/react'; import { error, forEach } from '@nocobase/utils/client'; -import { Select } from 'antd'; +import { Select, Space } from 'antd'; import _ from 'lodash'; -import React, { useCallback, useEffect, useMemo } from 'react'; +import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useAPIClient } from '../../../api-client'; import { findFormBlock } from '../../../block-provider'; import { useCollectionManager } from '../../../collection-manager'; import { useDuplicatefieldsContext } from '../../../schema-initializer/components'; +import { compatibleDataId } from '../../../schema-settings/DataTemplates/FormDataTemplates'; import { useToken } from '../__builtins__'; +import { RemoteSelect } from '../remote-select'; export interface ITemplate { config?: { @@ -23,9 +25,11 @@ export interface ITemplate { key: string; title: string; collection: string; - dataId: number; + dataId?: number; fields: string[]; default?: boolean; + dataScope?: object; + titleField?: string; }[]; /** 是否在 Form 区块显示模板选择器 */ display: boolean; @@ -63,49 +67,38 @@ const useDataTemplates = () => { key: 'none', title: t('None'), }, - ].concat(items.map((item, i) => ({ key: i, ...item }))); - + ].concat( + items.map((t, i) => ({ + key: i, + ...t, + isLeaf: t.dataId !== null && t.dataId !== undefined, + titleCollectionField: t?.titleField && getCollectionJoinField(`${t.collection}.${t.titleField}`), + })), + ); const defaultTemplate = items.find((item) => item.default); return { templates, display, defaultTemplate, - enabled: items.length > 0 && items.every((item) => item.dataId !== undefined), + enabled: items.length > 0 && items.every((item) => item.dataId || item.dataScope), }; }; -function filterReferences(obj) { - const filteredObj = {}; - for (const key in obj) { - if (typeof obj[key] !== 'object') { - filteredObj[key] = obj[key]; - } - } - return filteredObj; -} export const Templates = ({ style = {}, form }) => { const { token } = useToken(); const { templates, display, enabled, defaultTemplate } = useDataTemplates(); - const [value, setValue] = React.useState(defaultTemplate?.key || 'none'); + const { getCollectionJoinField } = useCollectionManager(); + const templateOptions = compatibleDataId(templates); + const [targetTemplate, setTargetTemplate] = useState(defaultTemplate?.key || 'none'); + const [targetTemplateData, setTemplateData] = useState(null); const api = useAPIClient(); const { t } = useTranslation(); useEffect(() => { if (enabled && defaultTemplate) { form.__template = true; - fetchTemplateData(api, defaultTemplate, t) - .then((data) => { - if (form && data) { - forEach(data, (value, key) => { - if (value) { - form.values[key] = value; - } - }); - } - return data; - }) - .catch((err) => { - console.error(err); - }); + if (defaultTemplate.key === 'duplicate') { + handleTemplateDataChange(defaultTemplate.dataId, defaultTemplate); + } } }, []); @@ -122,46 +115,69 @@ export const Templates = ({ style = {}, form }) => { return { fontSize: token.fontSize, fontWeight: 'bold', whiteSpace: 'nowrap', marginRight: token.marginXS }; }, [token.fontSize, token.marginXS]); - const handleChange = useCallback(async (value, option) => { - setValue(value); - if (option.key !== 'none') { - fetchTemplateData(api, option, t) - .then((data) => { - if (form && data) { - // 切换之前先把之前的数据清空 - form.reset(); - form.__template = true; + const handleTemplateChange = useCallback(async (value, option) => { + setTargetTemplate(value); + setTemplateData(null); + form?.reset(); + }, []); - forEach(data, (value, key) => { - if (value) { - form.values[key] = value; - } - }); - } - return data; - }) - .catch((err) => { - console.error(err); - }); - } else { - form?.reset(); - } + const handleTemplateDataChange: any = useCallback(async (value, option) => { + const template = { ...option, dataId: value }; + setTemplateData(option); + fetchTemplateData(api, template, t) + .then((data) => { + if (form && data) { + // 切换之前先把之前的数据清空 + form.reset(); + form.__template = true; + + forEach(data, (value, key) => { + if (value) { + form.values[key] = value; + } + }); + } + return data; + }) + .catch((err) => { + console.error(err); + }); }, []); if (!enabled || !display) { return null; } + const template = templateOptions?.find((v) => v.key === targetTemplate); return (
- - + {targetTemplate !== 'none' && ( + handleTemplateDataChange(value.id, { ...value, ...template })} + targetField={getCollectionJoinField(`${template?.collection}.${template.titleField}`)} + /> + )} +
); }; @@ -175,7 +191,7 @@ function findDataTemplates(fieldSchema): ITemplate { } export async function fetchTemplateData(api, template: { collection: string; dataId: number; fields: string[] }, t) { - if (template.fields.length === 0) { + if (template.fields.length === 0 || !template.dataId) { return; } return api diff --git a/packages/core/client/src/schema-settings/DataTemplates/FormDataTemplates.tsx b/packages/core/client/src/schema-settings/DataTemplates/FormDataTemplates.tsx index 335b92706c..4337b88c88 100644 --- a/packages/core/client/src/schema-settings/DataTemplates/FormDataTemplates.tsx +++ b/packages/core/client/src/schema-settings/DataTemplates/FormDataTemplates.tsx @@ -7,16 +7,11 @@ import React, { useMemo } from 'react'; import { useTranslation } from 'react-i18next'; import { mergeFilter } from '../../block-provider'; import { useCollectionManager } from '../../collection-manager'; -import { - AssociationSelect, - SchemaComponent, - SchemaComponentContext, - removeNullCondition, -} from '../../schema-component'; +import { SchemaComponent, SchemaComponentContext, removeNullCondition } from '../../schema-component'; import { ITemplate } from '../../schema-component/antd/form-v2/Templates'; import { AsDefaultTemplate } from './components/AsDefaultTemplate'; import { ArrayCollapse } from './components/DataTemplateTitle'; -import { Designer, getSelectedIdFilter } from './components/Designer'; +import { getSelectedIdFilter } from './components/Designer'; import { useCollectionState } from './hooks/useCollectionState'; const Tree = connect( @@ -27,11 +22,30 @@ const Tree = connect( }), ); +export const compatibleDataId = (data, config?) => { + return data?.map((v) => { + const { dataId, ...others } = v; + const obj = { ...others }; + if (dataId) { + obj.dataScope = { $and: [{ id: { $eq: dataId } }] }; + obj.titleField = obj?.titleField || config?.[v.collection]?.['titleField'] || 'id'; + } + return obj; + }); +}; + export const FormDataTemplates = observer( (props: any) => { const { useProps, formSchema, designerCtx } = props; const { defaultValues, collectionName } = useProps(); - const { collectionList, getEnableFieldTree, getOnLoadData, getOnCheck } = useCollectionState(collectionName); + const { + collectionList, + getEnableFieldTree, + getOnLoadData, + getOnCheck, + getScopeDataSource, + useTitleFieldDataSource, + } = useCollectionState(collectionName); const { getCollection, getCollectionField } = useCollectionManager(); const { t } = useTranslation(); @@ -39,11 +53,15 @@ export const FormDataTemplates = observer( const activeData = useMemo( () => observable( - defaultValues || { items: [], display: true, config: { [collectionName]: { titleField: '', filter: {} } } }, + { ...defaultValues, items: compatibleDataId(defaultValues?.items || [], defaultValues?.config) } || { + items: [], + display: true, + config: { [collectionName]: { titleField: '', filter: {} } }, + }, ), [], ); - + console.log(activeData); const getTargetField = (collectionName: string) => { const collection = getCollection(collectionName); return getCollectionField( @@ -63,8 +81,8 @@ export const FormDataTemplates = observer( const filter = activeData.config?.[collectionName]?.filter; return _.isEmpty(filter) ? {} : removeNullCondition(mergeFilter([filter, getSelectedIdFilter(value)], '$or')); }; - const components = useMemo(() => ({ ArrayCollapse }), []); + const scope = useMemo( () => ({ getEnableFieldTree, @@ -75,6 +93,8 @@ export const FormDataTemplates = observer( getOnLoadData, getOnCheck, collectionName, + getScopeDataSource, + useTitleFieldDataSource, }), [], ); @@ -117,49 +137,39 @@ export const FormDataTemplates = observer( options: collectionList, }, }, - dataId: { - type: 'number', - title: '{{ t("Template Data") }}', - required: true, - description: t('Select an existing piece of data as the initialization data for the form'), - 'x-designer': Designer, - 'x-designer-props': { - formSchema, - data: activeData, - }, + dataScope: { + type: 'object', + title: '{{ t("Assign data scope for the template") }}', 'x-decorator': 'FormItem', - 'x-component': AssociationSelect, - 'x-component-props': { - service: { - resource: '{{ $record.collection || collectionName }}', - params: { - filter: '{{ getFilter($self.componentProps.service.resource, $self.value) }}', - }, + 'x-component': 'Filter', + 'x-decorator-props': { + style: { + marginBottom: '0px', }, - action: 'list', - multiple: false, - objectValue: false, - manual: false, - targetField: '{{ getTargetField($self.componentProps.service.resource) }}', - mapOptions: getMapOptions(), - fieldNames: '{{ getFieldNames($self.componentProps.service.resource) }}', }, + required: true, 'x-reactions': [ { dependencies: ['.collection'], fulfill: { state: { disabled: '{{ !$deps[0] }}', - componentProps: { - service: { - resource: '{{ getResource($deps[0], $self) }}', - }, - }, + }, + schema: { + enum: '{{ getScopeDataSource($deps[0]) }}', }, }, }, ], }, + titleField: { + type: 'string', + 'x-decorator': 'FormItem', + title: '{{ t("Title field") }}', + 'x-component': 'Select', + required: true, + 'x-reactions': '{{useTitleFieldDataSource}}', + }, fields: { type: 'array', title: '{{ t("Data fields") }}', @@ -246,15 +256,6 @@ export function getLabel(titleField) { return titleField || 'label'; } -function getMapOptions() { - return (option) => { - if (option?.id === undefined) { - return null; - } - return option; - }; -} - function getResource(resource: string, field: Field) { if (resource !== field.componentProps.service.resource) { // 切换 collection 后,之前选中的其它 collection 的数据就没有意义了,需要清空 diff --git a/packages/core/client/src/schema-settings/DataTemplates/hooks/useCollectionState.ts b/packages/core/client/src/schema-settings/DataTemplates/hooks/useCollectionState.ts index f9e1ec95fd..abd65c4c49 100644 --- a/packages/core/client/src/schema-settings/DataTemplates/hooks/useCollectionState.ts +++ b/packages/core/client/src/schema-settings/DataTemplates/hooks/useCollectionState.ts @@ -1,11 +1,12 @@ import { ArrayField } from '@formily/core'; import React, { useCallback, useState } from 'react'; import { useCollectionManager } from '../../../collection-manager'; +import { isTitleField } from '../../../collection-manager/Configuration/CollectionFields'; import { useCompile } from '../../../schema-component'; import { TreeNode } from '../TreeLabel'; export const useCollectionState = (currentCollectionName: string) => { - const { getCollectionFields, getAllCollectionsInheritChain, getCollection } = useCollectionManager(); + const { getCollectionFields, getAllCollectionsInheritChain, getCollection, getInterface } = useCollectionManager(); const [collectionList] = useState(getCollectionList); const compile = useCompile(); @@ -150,11 +151,78 @@ export const useCollectionState = (currentCollectionName: string) => { }; }, []); + const getScopeDataSource = (resource: string) => { + const fields = getCollectionFields(resource); + const field2option = (field, depth) => { + if (!field.interface) { + return; + } + const fieldInterface = getInterface(field.interface); + if (!fieldInterface?.filterable) { + return; + } + const { nested, children, operators } = fieldInterface.filterable; + const option = { + name: field.name, + title: field?.uiSchema?.title || field.name, + schema: field?.uiSchema, + operators: + operators?.filter?.((operator) => { + return !operator?.visible || operator.visible(field); + }) || [], + interface: field.interface, + }; + if (field.target && depth > 2) { + return; + } + if (depth > 2) { + return option; + } + if (children?.length) { + option['children'] = children; + } + if (nested) { + const targetFields = getCollectionFields(field.target); + const options = getOptions(targetFields, depth + 1).filter(Boolean); + option['children'] = option['children'] || []; + option['children'].push(...options); + } + return option; + }; + const getOptions = (fields, depth) => { + const options = []; + fields.forEach((field) => { + const option = field2option(field, depth); + if (option) { + options.push(option); + } + }); + return options; + }; + const options = getOptions(fields, 1); + return options; + }; + const useTitleFieldDataSource = (field) => { + const fieldPath = field.path.entire.replace('titleField', 'collection'); + const collectionName = field.query(fieldPath).get('value'); + const targetFields = getCollectionFields(collectionName); + const options = targetFields + .filter((field) => { + return !field.isForeignKey && getInterface(field.interface)?.titleUsable; + }) + .map((field) => ({ + value: field?.name, + label: compile(field?.uiSchema?.title) || field?.name, + })); + field.dataSource = options; + }; return { collectionList, getEnableFieldTree, getOnLoadData, getOnCheck, + getScopeDataSource, + useTitleFieldDataSource, }; }; From 18900d54f48b16af70a60cb657766d0ef6e9eaeb Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Tue, 25 Jul 2023 14:51:45 +0800 Subject: [PATCH 07/34] feat: customize action support create record for any collection (#2264) * feat: customize button support customize add record * refactor: code improve * refactor: schemaSetting default value * refactor: schemaSetting default value * refactor: schemaSetting default value * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: code improve * refactor: locale improve * refactor: code improve * fix: fix style of default variable input (T-1154) * fix: merge bug --------- Co-authored-by: Rain <958414905@qq.com> --- .../src/block-provider/FormBlockProvider.tsx | 8 +- .../src/block-provider/TableBlockProvider.tsx | 15 +- packages/core/client/src/locale/en_US.ts | 1 + packages/core/client/src/locale/zh_CN.ts | 1 + .../antd/__builtins__/style.ts | 2 + .../antd/action/Action.Designer.tsx | 2 +- .../association-field/AssociationSelect.tsx | 8 +- .../antd/form-item/FormItem.tsx | 136 +++++++----------- .../antd/table-v2/Table.Column.Designer.tsx | 6 +- .../schema-component/antd/variable/Input.tsx | 7 +- .../schema-component/antd/variable/style.ts | 3 - .../schema-component/common/utils/uitls.tsx | 6 +- .../CusomeizeCreateFormBlockInitializers.tsx | 43 ++++++ .../buttons/TableActionInitializers.tsx | 13 ++ .../src/schema-initializer/buttons/index.ts | 2 +- .../CustomizeAddRecordActionInitializer.tsx | 52 +++++++ .../items/DataBlockInitializer.tsx | 6 +- .../items/FormBlockInitializer.tsx | 4 +- .../src/schema-initializer/items/index.tsx | 2 +- .../src/schema-settings/SchemaSettings.tsx | 116 +++++++++++++++ .../VariableInput/VariableInput.tsx | 16 ++- .../hooks/useContextAssociationFields.tsx | 121 ++++++++++++++++ 22 files changed, 459 insertions(+), 111 deletions(-) create mode 100644 packages/core/client/src/schema-initializer/buttons/CusomeizeCreateFormBlockInitializers.tsx create mode 100644 packages/core/client/src/schema-initializer/items/CustomizeAddRecordActionInitializer.tsx create mode 100644 packages/core/client/src/schema-settings/VariableInput/hooks/useContextAssociationFields.tsx diff --git a/packages/core/client/src/block-provider/FormBlockProvider.tsx b/packages/core/client/src/block-provider/FormBlockProvider.tsx index ff4f5ae647..2245a3d20e 100644 --- a/packages/core/client/src/block-provider/FormBlockProvider.tsx +++ b/packages/core/client/src/block-provider/FormBlockProvider.tsx @@ -66,7 +66,7 @@ export const useIsEmptyRecord = () => { export const FormBlockProvider = (props) => { const record = useRecord(); - const { collection } = props; + const { collection, isCusomeizeCreate } = props; const { __collection } = record; const currentCollection = useCollection(); const { designable } = useDesignable(); @@ -81,9 +81,9 @@ export const FormBlockProvider = (props) => { const createFlag = (currentCollection.name === (collection?.name || collection) && !isEmptyRecord) || !currentCollection.name; return ( - (detailFlag || createFlag) && ( - - + (detailFlag || createFlag || isCusomeizeCreate) && ( + + ) ); diff --git a/packages/core/client/src/block-provider/TableBlockProvider.tsx b/packages/core/client/src/block-provider/TableBlockProvider.tsx index 181ba8a570..013c95dcf0 100644 --- a/packages/core/client/src/block-provider/TableBlockProvider.tsx +++ b/packages/core/client/src/block-provider/TableBlockProvider.tsx @@ -3,10 +3,10 @@ import { FormContext, useField, useFieldSchema } from '@formily/react'; import React, { createContext, useContext, useEffect, useMemo, useState } from 'react'; import { useCollectionManager } from '../collection-manager'; import { useFilterBlock } from '../filter-provider/FilterProvider'; -import { FixedBlockWrapper, removeNullCondition, SchemaComponentOptions } from '../schema-component'; +import { FixedBlockWrapper, SchemaComponentOptions, removeNullCondition } from '../schema-component'; import { BlockProvider, RenderChildrenWithAssociationFilter, useBlockRequestContext } from './BlockProvider'; -import { findFilterTargets } from './hooks'; import { mergeFilter } from './SharedFilterProvider'; +import { findFilterTargets } from './hooks'; export const TableBlockContext = createContext({}); export function getIdsWithChildren(nodes) { @@ -31,7 +31,7 @@ interface Props { } const InternalTableBlockProvider = (props: Props) => { - const { params, showIndex, dragSort, rowKey, childrenColumnName, fieldNames } = props; + const { params, showIndex, dragSort, rowKey, childrenColumnName, fieldNames, ...others } = props; const field: any = useField(); const { resource, service } = useBlockRequestContext(); const fieldSchema = useFieldSchema(); @@ -47,6 +47,7 @@ const InternalTableBlockProvider = (props: Props) => { { - + @@ -117,7 +122,7 @@ export const useTableBlockProps = () => { useEffect(() => { if (!ctx?.service?.loading) { - field.value=[]; + field.value = []; field.value = ctx?.service?.data?.data; field.data = field.data || {}; field.data.selectedRowKeys = ctx?.field?.data?.selectedRowKeys; diff --git a/packages/core/client/src/locale/en_US.ts b/packages/core/client/src/locale/en_US.ts index d7a2d31532..ad83395bb0 100644 --- a/packages/core/client/src/locale/en_US.ts +++ b/packages/core/client/src/locale/en_US.ts @@ -710,4 +710,5 @@ export default { "Allow add new, update and delete actions":"Allow add new, update and delete actions", "Date display format":"Date display format", "Assign data scope for the template":"Assign data scope for the template", + "Table selected records":"Table selected records" }; diff --git a/packages/core/client/src/locale/zh_CN.ts b/packages/core/client/src/locale/zh_CN.ts index 2e285cc186..73e2c4f5e4 100644 --- a/packages/core/client/src/locale/zh_CN.ts +++ b/packages/core/client/src/locale/zh_CN.ts @@ -795,4 +795,5 @@ export default { "Allow add new, update and delete actions":"允许增删改操作", "Date display format":"日期显示格式", "Assign data scope for the template":"为模板指定数据范围", + "Table selected records":"表格中选中的记录" } diff --git a/packages/core/client/src/schema-component/antd/__builtins__/style.ts b/packages/core/client/src/schema-component/antd/__builtins__/style.ts index b8e9efc1d8..2a5519562d 100644 --- a/packages/core/client/src/schema-component/antd/__builtins__/style.ts +++ b/packages/core/client/src/schema-component/antd/__builtins__/style.ts @@ -59,6 +59,7 @@ export type UseComponentStyleResult = { wrapSSR: ReturnType; hashId: string; componentCls: string; + rootPrefixCls: string; }; export const genStyleHook = ( @@ -99,6 +100,7 @@ export const genStyleHook = ( ), hashId, componentCls: prefixCls, + rootPrefixCls, }; }; }; diff --git a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx index 343ea14d6c..25df35327e 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.Designer.tsx @@ -580,7 +580,7 @@ export const ActionDesigner = (props) => { const { name } = useCollection(); const { getChildrenCollections } = useCollectionManager(); const isAction = useLinkageAction(); - const isPopupAction = ['create', 'update', 'view', 'customize:popup', 'duplicate'].includes( + const isPopupAction = ['create', 'update', 'view', 'customize:popup', 'duplicate','customize:create'].includes( fieldSchema['x-action'] || '', ); const isUpdateModePopupAction = ['customize:bulkUpdate', 'customize:bulkEdit'].includes(fieldSchema['x-action']); diff --git a/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx b/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx index 2803d4c699..af99905507 100644 --- a/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx +++ b/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx @@ -4,7 +4,8 @@ import { Space, message } from 'antd'; import { isFunction } from 'mathjs'; import React from 'react'; import { useTranslation } from 'react-i18next'; -import { RecordProvider, useAPIClient, useCollectionManager } from '../../../'; +import { RecordProvider, useAPIClient } from '../../../'; +import { isVariable } from '../../common/utils/uitls'; import { RemoteSelect, RemoteSelectProps } from '../remote-select'; import useServiceOptions, { useAssociationFieldContext } from './hooks'; @@ -17,10 +18,10 @@ const InternalAssociationSelect = observer((props: AssociationSelectProps) => { const { objectValue = true } = props; const field: any = useField(); const fieldSchema = useFieldSchema(); - const { getCollection } = useCollectionManager(); const service = useServiceOptions(props); const { options: collectionField } = useAssociationFieldContext(); - const value = Array.isArray(props.value) ? props.value.filter(Boolean) : props.value; + const initValue = isVariable(props.value) ? undefined : props.value; + const value = Array.isArray(initValue) ? initValue.filter(Boolean) : initValue; const addMode = fieldSchema['x-component-props']?.addMode; const isAllowAddNew = fieldSchema['x-add-new']; const { t } = useTranslation(); @@ -28,7 +29,6 @@ const InternalAssociationSelect = observer((props: AssociationSelectProps) => { const form = useForm(); const api = useAPIClient(); const resource = api.resource(collectionField.target); - const targetCollection = getCollection(collectionField.target); const handleCreateAction = async (props) => { const { search: value, callBack } = props; const { diff --git a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx index 3b1ad0a9bb..3607e887bf 100644 --- a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx +++ b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx @@ -22,9 +22,7 @@ import { isTitleField } from '../../../collection-manager/Configuration/Collecti import { GeneralSchemaItems } from '../../../schema-items/GeneralSchemaItems'; import { GeneralSchemaDesigner, isPatternDisabled, isShowDefaultValue, SchemaSettings } from '../../../schema-settings'; import { useIsShowMultipleSwitch } from '../../../schema-settings/hooks/useIsShowMultipleSwitch'; -import { VariableInput } from '../../../schema-settings/VariableInput/VariableInput'; import { isVariable, parseVariables, useVariablesCtx } from '../../common/utils/uitls'; -import { SchemaComponent } from '../../core'; import { useCompile, useDesignable, useFieldModeOptions } from '../../hooks'; import { BlockItem } from '../block-item'; import { removeNullCondition } from '../filter'; @@ -33,29 +31,72 @@ import { FilterDynamicComponent } from '../table-v2/FilterDynamicComponent'; import { FilterFormDesigner } from './FormItem.FilterFormDesigner'; import { useEnsureOperatorsValid } from './SchemaSettingOptions'; -const defaultInputStyle = css` - & > .nb-form-item { - flex: 1; - } -`; +export const findColumnFieldSchema = (fieldSchema, getCollectionJoinField) => { + const childsSchema = new Set(); + const getAssociationAppends = (schema) => { + schema.reduceProperties((_, s) => { + const collectionfield = s['x-collection-field'] && getCollectionJoinField(s['x-collection-field']); + const isAssociationField = collectionfield && ['belongsTo'].includes(collectionfield.type); + if (collectionfield && isAssociationField && s.default?.includes?.('$context')) { + childsSchema.add(JSON.stringify({ name: s.name, default: s.default })); + } else { + getAssociationAppends(s); + } + }, []); + }; + + getAssociationAppends(fieldSchema); + return [...childsSchema]; +}; export const FormItem: any = observer( (props: any) => { useEnsureOperatorsValid(); - const field = useField(); const ctx = useBlockRequestContext(); const schema = useFieldSchema(); const variablesCtx = useVariablesCtx(); - + const { getCollectionJoinField } = useCollectionManager(); + const collectionField = getCollectionJoinField(schema['x-collection-field']); useEffect(() => { if (ctx?.block === 'form') { ctx.field.data = ctx.field.data || {}; ctx.field.data.activeFields = ctx.field.data.activeFields || new Set(); ctx.field.data.activeFields.add(schema.name); // 如果默认值是一个变量,则需要解析之后再显示出来 - if (isVariable(schema?.default)) { + if (isVariable(schema?.default) && !schema?.default.includes('$context')) { field.setInitialValue?.(parseVariables(schema.default, variablesCtx)); + } else if ( + isVariable(schema?.default) && + schema?.default?.includes('$context') && + collectionField.interface === 'm2m' + ) { + // 直接对多 + const contextData = parseVariables('{{$context}}', variablesCtx); + let iniValues = []; + contextData?.map((v) => { + const data = parseVariables(schema.default, { $context: v }); + iniValues = iniValues.concat(data); + }); + field.setInitialValue?.(_.uniqBy(iniValues, 'id')); + } else if ( + collectionField?.interface === 'o2m' && + ['SubTable', 'Nester'].includes(schema?.['x-component-props']?.['mode']) // 间接对多 + ) { + const childrenFieldWithDefault = findColumnFieldSchema(schema, getCollectionJoinField); + // 子表格/子表单中找出所有belongsTo字段的上下文默认值 + if (childrenFieldWithDefault.length > 0) { + const contextData = parseVariables('{{$context}}', variablesCtx); + const initValues = contextData?.map((v) => { + const obj = {}; + childrenFieldWithDefault.forEach((s: any) => { + const child = JSON.parse(s); + obj[child.name] = parseVariables(child.default, { $context: v }); + }); + return obj; + }); + field.setInitialValue?.(initValues); + } } } }, []); @@ -109,7 +150,6 @@ FormItem.Designer = function Designer() { const { t } = useTranslation(); const { dn, refresh, insertAdjacent } = useDesignable(); const compile = useCompile(); - const variablesCtx = useVariablesCtx(); const IsShowMultipleSwitch = useIsShowMultipleSwitch(); const collectionField = getField(fieldSchema['name']) || getCollectionJoinField(fieldSchema['x-collection-field']); if (collectionField?.target) { @@ -168,9 +208,6 @@ FormItem.Designer = function Designer() { direction: 'asc', }; }); - - const fieldSchemaWithoutRequired = _.omit(fieldSchema, 'required'); - const isSubFormMode = fieldSchema['x-component-props']?.mode === 'Nester'; const isPickerMode = fieldSchema['x-component-props']?.mode === 'Picker'; const showFieldMode = isAssociationField && fieldModeOptions && !isTableField; @@ -345,76 +382,7 @@ FormItem.Designer = function Designer() { {form && !form?.readPretty && isShowDefaultValue(collectionField, getInterface) && - !isPatternDisabled(fieldSchema) && ( - - ); - }, - }, - name: 'default', - title: t('Default value'), - default: getFieldDefaultValue(fieldSchema, collectionField), - }, - }, - } as ISchema - } - onSubmit={(v) => { - const schema: ISchema = { - ['x-uid']: fieldSchema['x-uid'], - }; - if (field.value !== v.default) { - field.value = parseVariables(v.default, variablesCtx); - } - fieldSchema.default = v.default; - schema.default = v.default; - dn.emit('patch', { - schema, - }); - refresh(); - }} - /> - )} + !isPatternDisabled(fieldSchema) && } {isSelectFieldMode && !field.readPretty && ( { )} {isDateField && } + + {isSubTableColumn && !field?.readPretty && isShowDefaultValue(collectionField, getInterface) && ( + + )} { const tagFontSize = token.fontSizeSM; const tagLineHeight = `${token.lineHeightSM * tagFontSize}px`; const defaultBg = colorFillQuaternary; - const lightColor = token[`blue1`]; - const lightBorderColor = token[`blue3`]; - const textColor = token[`blue7`]; return { [componentCls]: { diff --git a/packages/core/client/src/schema-component/common/utils/uitls.tsx b/packages/core/client/src/schema-component/common/utils/uitls.tsx index 392ef7c087..fcf584efd7 100644 --- a/packages/core/client/src/schema-component/common/utils/uitls.tsx +++ b/packages/core/client/src/schema-component/common/utils/uitls.tsx @@ -2,6 +2,7 @@ import { dayjs } from '@nocobase/utils/client'; import flat from 'flat'; import _, { every, findIndex, isArray, some } from 'lodash'; import { useMemo } from 'react'; +import { useTableBlockContext } from '../../../block-provider'; import { useCurrentUserContext } from '../../../user'; import jsonLogic from '../../common/utils/logic'; @@ -14,12 +15,15 @@ type VariablesCtx = { export const useVariablesCtx = (): VariablesCtx => { const { data } = useCurrentUserContext() || {}; + const { field, service, rowKey } = useTableBlockContext(); + const contextData = service?.data?.data?.filter((v) => (field?.data?.selectedRowKeys || [])?.includes(v[rowKey])); return useMemo(() => { return { $user: data?.data || {}, $date: { now: () => dayjs().toISOString(), }, + $context: contextData, }; }, [data]); }; @@ -33,7 +37,7 @@ export const isVariable = (str: unknown) => { return matches ? true : false; }; -export const parseVariables = (str: string, ctx: VariablesCtx) => { +export const parseVariables = (str: string, ctx: VariablesCtx | any) => { const regex = /{{(.*?)}}/; const matches = str?.match?.(regex); if (matches) { diff --git a/packages/core/client/src/schema-initializer/buttons/CusomeizeCreateFormBlockInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/CusomeizeCreateFormBlockInitializers.tsx new file mode 100644 index 0000000000..bd5cb4dc8a --- /dev/null +++ b/packages/core/client/src/schema-initializer/buttons/CusomeizeCreateFormBlockInitializers.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { useTranslation } from 'react-i18next'; +import { SchemaInitializer } from '../..'; +import { gridRowColWrap } from '../utils'; + +export const CusomeizeCreateFormBlockInitializers = (props: any) => { + const { t } = useTranslation(); + const { insertPosition, component } = props; + return ( + + ); +}; diff --git a/packages/core/client/src/schema-initializer/buttons/TableActionInitializers.tsx b/packages/core/client/src/schema-initializer/buttons/TableActionInitializers.tsx index 8d7a0ff8dd..4ba1e4e858 100644 --- a/packages/core/client/src/schema-initializer/buttons/TableActionInitializers.tsx +++ b/packages/core/client/src/schema-initializer/buttons/TableActionInitializers.tsx @@ -156,6 +156,19 @@ export const TableActionInitializers = { }, }, }, + { + type: 'item', + title: '{{t("Add record")}}', + component: 'CustomizeAddRecordActionInitializer', + schema: { + 'x-align': 'right', + 'x-decorator': 'ACLActionProvider', + 'x-acl-action': 'create', + 'x-acl-action-props': { + skipScopeCheck: true, + }, + }, + }, ], visible: function useVisible() { const collection = useCollection(); diff --git a/packages/core/client/src/schema-initializer/buttons/index.ts b/packages/core/client/src/schema-initializer/buttons/index.ts index a8b747449c..a02b9ce469 100644 --- a/packages/core/client/src/schema-initializer/buttons/index.ts +++ b/packages/core/client/src/schema-initializer/buttons/index.ts @@ -4,6 +4,7 @@ export * from './CalendarActionInitializers'; export * from './CalendarFormActionInitializers'; export * from './CreateFormBlockInitializers'; export * from './CreateFormBulkEditBlockInitializers'; +export * from './CusomeizeCreateFormBlockInitializers'; export * from './CustomFormItemInitializers'; export * from './DetailsActionInitializers'; export * from './FilterFormActionInitializers'; @@ -25,4 +26,3 @@ export * from './TableColumnInitializers'; export * from './TableSelectorInitializers'; // association filter export * from '../../schema-component/antd/association-filter/AssociationFilter'; - diff --git a/packages/core/client/src/schema-initializer/items/CustomizeAddRecordActionInitializer.tsx b/packages/core/client/src/schema-initializer/items/CustomizeAddRecordActionInitializer.tsx new file mode 100644 index 0000000000..4c00836dd0 --- /dev/null +++ b/packages/core/client/src/schema-initializer/items/CustomizeAddRecordActionInitializer.tsx @@ -0,0 +1,52 @@ +import React from 'react'; +import { BlockInitializer } from './BlockInitializer'; + +export const CustomizeAddRecordActionInitializer = (props) => { + const schema = { + type: 'void', + title: '{{t("Add record")}}', + 'x-designer': 'Action.Designer', + 'x-component': 'Action', + 'x-action': 'customize:create', + 'x-component-props': { + openMode: 'drawer', + icon: 'PlusOutlined', + }, + properties: { + drawer: { + type: 'void', + title: '{{t("Add record")}}', + 'x-component': 'Action.Container', + 'x-component-props': { + className: 'nb-action-popup', + }, + properties: { + tabs: { + type: 'void', + 'x-component': 'Tabs', + 'x-component-props': {}, + 'x-initializer': 'TabPaneInitializersForCreateFormBlock', + properties: { + tab1: { + type: 'void', + title: '{{t("Add record")}}', + 'x-component': 'Tabs.TabPane', + 'x-designer': 'Tabs.Designer', + 'x-component-props': {}, + properties: { + grid: { + type: 'void', + 'x-component': 'Grid', + 'x-initializer': 'CusomeizeCreateFormBlockInitializers', + properties: {}, + }, + }, + }, + }, + }, + }, + }, + }, + }; + return ; +}; diff --git a/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx b/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx index 68fdad2e1a..baa2624e46 100644 --- a/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/DataBlockInitializer.tsx @@ -6,10 +6,10 @@ import { useSchemaTemplateManager } from '../../schema-templates'; import { useCollectionDataSourceItems } from '../utils'; export const DataBlockInitializer = (props) => { - const { templateWrap, onCreateBlockSchema, componentType, createBlockSchema, insert, ...others } = props; + const { templateWrap, onCreateBlockSchema, componentType, createBlockSchema, insert, isCusomeizeCreate, ...others } = + props; const { getTemplateSchemaByMode } = useSchemaTemplateManager(); const { setVisible } = useContext(SchemaInitializerButtonContext); - return ( } @@ -22,7 +22,7 @@ export const DataBlockInitializer = (props) => { if (onCreateBlockSchema) { onCreateBlockSchema({ item }); } else if (createBlockSchema) { - insert(createBlockSchema({ collection: item.name })); + insert(createBlockSchema({ collection: item.name, isCusomeizeCreate })); } } setVisible(false); diff --git a/packages/core/client/src/schema-initializer/items/FormBlockInitializer.tsx b/packages/core/client/src/schema-initializer/items/FormBlockInitializer.tsx index 05b33d2f23..36a30849b8 100644 --- a/packages/core/client/src/schema-initializer/items/FormBlockInitializer.tsx +++ b/packages/core/client/src/schema-initializer/items/FormBlockInitializer.tsx @@ -1,9 +1,10 @@ -import React from 'react'; import { FormOutlined } from '@ant-design/icons'; +import React from 'react'; import { createFormBlockSchema } from '../utils'; import { DataBlockInitializer } from './DataBlockInitializer'; export const FormBlockInitializer = (props) => { + const { isCusomeizeCreate } = props; return ( { componentType={'FormItem'} templateWrap={(templateSchema, { item }) => { const s = createFormBlockSchema({ + isCusomeizeCreate, template: templateSchema, collection: item.name, }); diff --git a/packages/core/client/src/schema-initializer/items/index.tsx b/packages/core/client/src/schema-initializer/items/index.tsx index 1f9a95bb0c..fe0b4f5585 100644 --- a/packages/core/client/src/schema-initializer/items/index.tsx +++ b/packages/core/client/src/schema-initializer/items/index.tsx @@ -17,6 +17,7 @@ export * from './CreateFormBulkEditBlockInitializer'; export * from './CreateResetActionInitializer'; export * from './CreateSubmitActionInitializer'; export * from './CustomizeActionInitializer'; +export * from './CustomizeAddRecordActionInitializer'; export * from './CustomizeBulkEditActionInitializer'; export * from './DataBlockInitializer'; export * from './DeleteEventActionInitializer'; @@ -53,4 +54,3 @@ export * from './TableSelectorInitializer'; export * from './UpdateActionInitializer'; export * from './UpdateSubmitActionInitializer'; export * from './ViewActionInitializer'; - diff --git a/packages/core/client/src/schema-settings/SchemaSettings.tsx b/packages/core/client/src/schema-settings/SchemaSettings.tsx index ae8c4edc45..7285930a83 100644 --- a/packages/core/client/src/schema-settings/SchemaSettings.tsx +++ b/packages/core/client/src/schema-settings/SchemaSettings.tsx @@ -57,10 +57,13 @@ import { useGlobalTheme, useLinkageCollectionFilterOptions, } from '..'; +import { useTableBlockContext } from '../block-provider'; import { findFilterTargets, updateFilterTargets } from '../block-provider/hooks'; import { FilterBlockType, isSameCollection, useSupportedBlocks } from '../filter-provider/utils'; import { useCollectMenuItem, useCollectMenuItems, useMenuItem } from '../hooks/useMenuItem'; import { getTargetKey } from '../schema-component/antd/association-filter/utilts'; +import { getFieldDefaultValue } from '../schema-component/antd/form-item'; +import { parseVariables, useVariablesCtx } from '../schema-component/common/utils/uitls'; import { useSchemaTemplateManager } from '../schema-templates'; import { useBlockTemplateContext } from '../schema-templates/BlockTemplate'; import { FormDataTemplates } from './DataTemplates'; @@ -69,6 +72,7 @@ import { EnableChildCollections } from './EnableChildCollections'; import { ChildDynamicComponent } from './EnableChildCollections/DynamicComponent'; import { FormLinkageRules } from './LinkageRules'; import { useLinkageCollectionFieldOptions } from './LinkageRules/action-hooks'; +import { VariableInput } from './VariableInput/VariableInput'; interface SchemaSettingsProps { title?: any; @@ -1414,6 +1418,118 @@ SchemaSettings.DataFormat = function DateFormatConfig(props: { fieldSchema: Sche ); }; +const defaultInputStyle = css` + & > .nb-form-item { + flex: 1; + } +`; + +export const findParentFieldSchema = (fieldSchema: Schema) => { + let parent = fieldSchema.parent; + while (parent) { + if (parent['x-component'] === 'CollectionField') { + return parent; + } + parent = parent.parent; + } +}; + +SchemaSettings.DefaultValue = function DefaultvalueConfigure(props) { + const variablesCtx = useVariablesCtx(); + const currentSchema = useFieldSchema(); + const fieldSchema = props?.fieldSchema ?? currentSchema; + const field = useField(); + const { dn } = useDesignable(); + const { t } = useTranslation(); + let targetField; + const { getField } = useCollection(); + const { getCollectionJoinField } = useCollectionManager(); + const collectionField = getField(fieldSchema['name']) || getCollectionJoinField(fieldSchema['x-collection-field']); + const fieldSchemaWithoutRequired = _.omit(fieldSchema, 'required'); + if (collectionField?.target) { + targetField = getCollectionJoinField( + `${collectionField.target}.${fieldSchema['x-component-props']?.fieldNames?.label || 'id'}`, + ); + } + const parentFieldSchema = collectionField.interface === 'm2o' && findParentFieldSchema(fieldSchema); + const parentCollectionField = parentFieldSchema && getCollectionJoinField(parentFieldSchema?.['x-collection-field']); + const tableCtx = useTableBlockContext(); + const isAllowContexVariable = + collectionField.interface === 'm2m' || + (parentCollectionField?.type === 'hasMany' && collectionField.interface === 'm2o'); + return ( + + ); + }, + }, + name: 'default', + title: t('Default value'), + default: getFieldDefaultValue(fieldSchema, collectionField), + }, + }, + } as ISchema + } + onSubmit={(v) => { + const schema: ISchema = { + ['x-uid']: fieldSchema['x-uid'], + }; + if (field.value !== v.default) { + field.value = parseVariables(v.default, variablesCtx); + } + fieldSchema.default = v.default; + schema.default = v.default; + dn.emit('patch', { + schema, + currentSchema, + }); + dn.refresh(); + }} + /> + ); +}; // 是否显示默认值配置项 export const isShowDefaultValue = (collectionField: CollectionFieldOptions, getInterface) => { return ( diff --git a/packages/core/client/src/schema-settings/VariableInput/VariableInput.tsx b/packages/core/client/src/schema-settings/VariableInput/VariableInput.tsx index 8960becd20..457cbee1ab 100644 --- a/packages/core/client/src/schema-settings/VariableInput/VariableInput.tsx +++ b/packages/core/client/src/schema-settings/VariableInput/VariableInput.tsx @@ -1,6 +1,7 @@ import React, { useMemo } from 'react'; import { CollectionFieldOptions } from '../../collection-manager'; import { useCompile, Variable } from '../../schema-component'; +import { useContextAssociationFields } from './hooks/useContextAssociationFields'; import { useUserVariable } from './hooks/useUserVariable'; type Props = { @@ -14,6 +15,7 @@ type Props = { className?: string; style?: React.CSSProperties; collectionField?: CollectionFieldOptions; + contextCollectionName?: string; }; export const VariableInput = (props: Props) => { @@ -25,9 +27,11 @@ export const VariableInput = (props: Props) => { schema, className, collectionField, + contextCollectionName, } = props; const compile = useCompile(); const userVariable = useUserVariable({ schema, maxDepth: 1 }); + const contextVariable = useContextAssociationFields({ schema, maxDepth: 2, contextCollectionName }); const scope = useMemo(() => { const data = [ compile({ @@ -47,11 +51,21 @@ export const VariableInput = (props: Props) => { if (collectionField?.target === 'users') { data.unshift(userVariable); } + if (contextCollectionName) { + data.unshift(contextVariable); + } return data; }, []); return ( - + ); diff --git a/packages/core/client/src/schema-settings/VariableInput/hooks/useContextAssociationFields.tsx b/packages/core/client/src/schema-settings/VariableInput/hooks/useContextAssociationFields.tsx new file mode 100644 index 0000000000..ce1087529d --- /dev/null +++ b/packages/core/client/src/schema-settings/VariableInput/hooks/useContextAssociationFields.tsx @@ -0,0 +1,121 @@ +import { error } from '@nocobase/utils/client'; +import { useMemo } from 'react'; +import { useTranslation } from 'react-i18next'; +import { useCompile, useGetFilterOptions } from '../../../schema-component'; +import { FieldOption, Option } from '../type'; + +interface GetOptionsParams { + schema: any; + depth: number; + maxDepth?: number; + loadChildren?: (option: Option) => Promise; + compile: (value: string) => any; +} + +const getChildren = ( + options: FieldOption[], + { schema, depth, maxDepth, loadChildren, compile }: GetOptionsParams, +): Option[] => { + const result = options + .map((option): Option => { + if (!option.target) { + return { + key: option.name, + value: option.name, + label: compile(option.title), + // TODO: 现在是通过组件的名称来过滤能够被选择的选项,这样的坏处是不够精确,后续可以优化 + // disabled: schema?.['x-component'] !== option.schema?.['x-component'], + isLeaf: true, + depth, + }; + } + + if (depth >= maxDepth) { + return null; + } + + return { + key: option.name, + value: option.name, + label: compile(option.title), + isLeaf: true, + field: option, + depth, + loadChildren, + }; + }) + .filter(Boolean); + + return result; +}; + +export const useContextAssociationFields = ({ + schema, + maxDepth = 3, + contextCollectionName, +}: { + schema: any; + maxDepth?: number; + contextCollectionName: string; +}) => { + const { t } = useTranslation(); + const compile = useCompile(); + const getFilterOptions = useGetFilterOptions(); + + const loadChildren = (option: Option): Promise => { + if (!option.field?.target) { + return new Promise((resolve) => { + error('Must be set field target'); + option.children = []; + resolve(void 0); + }); + } + + const collectionName = option.field.target; + return new Promise((resolve) => { + setTimeout(() => { + const children = + getChildren( + getFilterOptions(collectionName).filter((v) => { + const isAssociationField = ['hasOne', 'hasMany', 'belongsTo', 'belongsToMany'].includes(v.type); + return isAssociationField; + }), + { + schema, + depth: option.depth + 1, + maxDepth, + loadChildren, + compile, + }, + ) || []; + + if (children.length === 0) { + option.disabled = true; + option.children = []; + resolve(); + return; + } + option.children = children; + resolve(); + + // 延迟 5 毫秒,防止阻塞主线程,导致 UI 卡顿 + }, 5); + }); + }; + + const result = useMemo(() => { + return { + label: t('Table selected records'), + value: '$context', + key: '$context', + isLeaf: false, + field: { + target: contextCollectionName, + }, + depth: 0, + loadChildren, + } as Option; + }, [schema?.['x-component']]); + + return result; +}; From a80815c5ad1f48da02d8aa05efb19fac0bff2467 Mon Sep 17 00:00:00 2001 From: dijoux Date: Tue, 25 Jul 2023 11:04:35 +0400 Subject: [PATCH 08/34] Feat/translation fr_FR (#2275) * feat: client and plugin translation FR * fix: fr translation * fix: fr translation --- packages/core/client/src/locale/fr_FR.ts | 711 ++++++++++++++++++ .../api-keys/src/client/locale/fr-FR.ts | 3 + .../api-keys/src/server/locale/fr-FR.ts | 1 + .../audit-logs/src/client/locale/fr-FR.ts | 3 + .../plugins/auth/src/server/locale/fr-FR.ts | 10 + .../plugins/charts/src/client/locale/fr-FR.ts | 23 + .../src/client/locale/fr-FR.ts | 23 + .../error-handler/src/server/locale/fr_FR.ts | 6 + .../file-manager/src/client/locale/fr-FR.ts | 21 + .../src/client/locale/fr-FR.ts | 15 + .../plugins/import/src/server/locale/fr-FR.ts | 10 + .../plugins/map/src/client/locale/fr-FR.ts | 3 + .../mobile-client/src/client/locale/fr-FR.ts | 5 + .../plugins/oidc/src/client/locale/fr-FR.ts | 22 + .../plugins/saml/src/client/locale/fr-FR.ts | 23 + .../sequence-field/src/client/locale/fr-FR.ts | 24 + .../sms-auth/src/server/locale/fr-FR.ts | 10 + .../snapshot-field/src/client/locale/fr-FR.ts | 12 + .../antd-token-previewer/locale/fr-FR.ts | 20 + .../theme-editor/src/client/locale/fr-FR.ts | 26 + .../plugins/users/src/server/locale/fr-FR.ts | 8 + .../workflow/src/client/locale/fr-FR.ts | 136 ++++ 22 files changed, 1115 insertions(+) create mode 100644 packages/core/client/src/locale/fr_FR.ts create mode 100644 packages/plugins/api-keys/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/api-keys/src/server/locale/fr-FR.ts create mode 100644 packages/plugins/audit-logs/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/auth/src/server/locale/fr-FR.ts create mode 100644 packages/plugins/charts/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/data-visualization/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/error-handler/src/server/locale/fr_FR.ts create mode 100644 packages/plugins/file-manager/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/import/src/server/locale/fr-FR.ts create mode 100644 packages/plugins/map/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/mobile-client/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/oidc/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/saml/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/sequence-field/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/sms-auth/src/server/locale/fr-FR.ts create mode 100644 packages/plugins/snapshot-field/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/theme-editor/src/client/antd-token-previewer/locale/fr-FR.ts create mode 100644 packages/plugins/theme-editor/src/client/locale/fr-FR.ts create mode 100644 packages/plugins/users/src/server/locale/fr-FR.ts create mode 100644 packages/plugins/workflow/src/client/locale/fr-FR.ts diff --git a/packages/core/client/src/locale/fr_FR.ts b/packages/core/client/src/locale/fr_FR.ts new file mode 100644 index 0000000000..2fead3fa81 --- /dev/null +++ b/packages/core/client/src/locale/fr_FR.ts @@ -0,0 +1,711 @@ +export default { + "Display <1><0>10<1>20<2>50<3>100 items per page": "Afficher <1><0>10<1>20<2>50<3>100 éléments par page", + "Meet <1><0>All<1>Any conditions in the group": "Remplir <1><0>Toutes<1>Quelconques conditions dans le groupe", + "Open in<1><0>Modal<1>Drawer<2>Window": "Ouvrir dans<1><0>Modale<1>Tiroir<2>Fenêtre", + "{{count}} filter items": "{{count}} éléments filtrés", + "{{count}} more items": "{{count}} autres éléments", + "Total {{count}} items": "Total {{count}} éléments", + "Today": "Aujourd'hui", + "Yesterday": "Hier", + "Tomorrow": "Demain", + "Month": "Mois", + "Week": "Semaine", + "This week": "Cette semaine", + "This month": "Ce mois-ci", + "This year": "Cette année", + "Next year": "L'année prochaine", + "Last week": "La semaine dernière", + "Next week": "La semaine prochaine", + "Last month": "Le mois dernier", + "Next month": "Le mois prochain", + "Last quarter": "Le dernier trimestre", + "This quarter": "Ce trimestre", + "Next quarter": "Le prochain trimestre", + "Last year": "L'année dernière", + "Last 7 days": "Les 7 derniers jours", + "Last 30 days": "Les 30 derniers jours", + "Last 90 days": "Les 90 derniers jours", + "Next 7 days": "Les 7 prochains jours", + "Next 30 days": "Les 30 prochains jours", + "Next 90 days": "Les 90 prochains jours", + "Work week": "Semaine de travail", + "Day": "Jour", + "Agenda": "Agenda", + "Date": "Date", + "Time": "Heure", + "Event": "Événement", + "None": "Aucun", + "Unconnected": "Non connecté", + "System settings": "Paramètres système", + "System title": "Titre du système", + "Logo": "Logo", + "Add menu item": "Ajouter un élément de menu", + "Page": "Page", + "Name": "Nom", + "Icon": "Icône", + "Group": "Groupe", + "Link": "Lien", + "Save conditions": "Enregistrer les conditions", + "Edit menu item": "Modifier l'élément de menu", + "Move to": "Déplacer vers", + "Insert left": "Insérer à gauche", + "Insert right": "Insérer à droite", + "Insert inner": "Insérer à l'intérieur", + "Delete": "Supprimer", + "UI editor": "Éditeur d'interface utilisateur", + "Collection": "Collection", + "Collections & Fields": "Collections et champs", + "All collections":"Toutes les collections", + "Add category":"Ajouter une catégorie", + "Enable child collections":"Activer les collections enfants", + "Allow adding records to the current collection":"Autoriser l'ajout d'enregistrements à la collection actuelle", + "Delete category":"Supprimer la catégorie", + "Edit category":"Modifier la catégorie", + "Collection category":"Catégorie de collection", + "Collection template":"Modèle de collection", + "Sort":"Trier", + "Categories":"Catégories", + "Visible":"Visible", + "Read only":"Lecture seule", + "Easy reading":"Lecture facile", + "Hidden":"Caché", + "Hidden(reserved value)":"Caché (valeur réservée)", + "Not required":"Non requis", + "Value":"Valeur", + "Disabled":"Désactivé", + "Enabled":"Activé", + 'On':'Actif', + 'Off':'Inactif', + "Empty":"Vide", + "Linkage rule":"Règle de liaison", + "Linkage rules":"Règles de liaison", + "Condition":"Condition", + "Properties":"Propriétés", + "Add linkage rule":"Ajouter une règle de liaison", + "Add property":"Ajouter une propriété", + "Category name":"Nom de la catégorie", + "Roles & Permissions": "Rôles & permissions", + "Edit profile": "Modifier le profil", + "Change password": "Changer de mot de passe", + "Old password": "Ancien mot de passe", + "New password": "Nouveau mot de passe", + "Switch role": "Changer de rôle", + "Super admin": "Super administrateur", + "Language": "Langue", + "Allow sign up": "Autoriser l'inscription", + "Enable SMS authentication": "Activer l'authentification par SMS", + "Sign out": "Déconnexion", + "Cancel": "Annuler", + "Submit": "Envoyer", + "Close": "Fermer", + "Set the data scope": "Définir la portée des données", + "Data blocks": "Blocs de données", + "Filter blocks": "Blocs de filtre", + "Table": "Tableau", + "Table OID(Inheritance)": "Table OID(Héritage)", + "Form": "Formulaire", + "List": "Liste", + "Grid Card": "Grille de cartes", + "pixels": "pixels", + "Screen size": "Taille de l'écran", + "Display title": "Titre d'affichage", + 'Set the count of columns displayed in a row': 'Définir le nombre de colonnes affichées par ligne', + 'Column': 'Colonne', + 'Phone device': 'Smartphone', + 'Tablet device': 'Tablette', + 'Desktop device': 'Ordinateur de bureau', + 'Large screen device': 'Ordinateur à grand écran', + "Collapse": "Pliable", + "Select data source": "Sélectionner la source de données", + "Calendar": "Calendrier", + "Delete events": "Supprimer les événements", + "This event": "Cet événement", + "This and following events": "Cet événement et les suivants", + "All events": "Tous les événements", + "Delete this event?": "Supprimer cet événement ?", + "Delete Event": "Supprimer l'événement", + "Kanban": "Kanban", + "Gantt": "Gantt", + "Create gantt block": "Créer un bloc de Gantt", + "Progress field": "Champ de progression", + "Time scale": "Échelle de temps", + "Hour": "Heure", + "Quarter of day": "Quart de journée", + "Half of day": "Demi-journée", + "Year": "Année", + "QuarterYear": "Trimestre", + "Select grouping field": "Sélectionner le champ de regroupement", + "Media": "Média", + "Markdown": "Markdown", + "Wysiwyg": "Wysiwyg", + "Chart blocks": "Blocs de graphique", + "Column chart": "Graphique en colonnes", + "Bar chart": "Graphique à barres", + "Line chart": "Graphique linéaire", + "Pie chart": "Graphique en camembert", + "Area chart": "Graphique en aires", + "Other chart": "Autre graphique", + "Other blocks": "Autres blocs", + "In configuration": "En configuration", + "Chart title": "Titre du graphique", + "Chart type": "Type de graphique", + "Chart config": "Configuration du graphique", + "Templates": "Modèles", + "Select template": "Sélectionner un modèle", + "Action logs": "Logs d'action", + "Create template": "Créer un modèle", + "Edit markdown": "Modifier le markdown", + "Add block": "Ajouter un bloc", + "Add new": "Ajouter nouveau", + "Add record": "Ajouter un enregistrement", + 'Add child': 'Ajouter un enfant', + 'Collapse all': 'Réduire tout', + 'Expand all': 'Développer tout', + 'Expand/Collapse': 'Développer/Réduire', + 'Default collapse': 'Développé/réduit par défaut', + "Tree table": "Tableau arborescent", + "Custom field display name": "Nom d'affichage personnalisé du champ", + "Display fields": "Afficher les champs de la collection", + "Edit record": "Modifier l'enregistrement", + "Delete menu item": "Supprimer l'élément de menu", + "Add page": "Ajouter une page", + "Add group": "Ajouter un groupe", + "Add link": "Ajouter un lien", + "Insert above": "Insérer au-dessus", + "Insert below": "Insérer en dessous", + "Save": "Enregistrer", + "Delete block": "Supprimer le bloc", + "Are you sure you want to delete it?": "Êtes-vous sûr de vouloir le supprimer ?", + "This is a demo text, **supports Markdown syntax**.": "Ceci est un texte de démonstration, **prend en charge la syntaxe Markdown.**", + "Filter": "Filtrer", + "Connect data blocks": "Connecter les blocs de données", + "Action type": "Type d'action", + "Actions": "Actions", + "Insert": "Insérer", + "Update": "Mettre à jour", + "View": "Voir", + "View record": "Voir l'enregistrement", + "Refresh": "Actualiser", + "Data changes": "Modifications des données", + "Field name": "Nom du champ", + "Before change": "Avant modification", + "After change": "Après modification", + "Delete record": "Supprimer l'enregistrement", + "Create collection": "Créer une collection", + "Collection display name": "Nom d'affichage de la collection", + "Collection name": "Nom de la collection", + "Inherits": "Hérite de", + "Generate ID field automatically": "Générer automatiquement le champ ID", + "Store the creation user of each record": "Enregistrer l'utilisateur de création de chaque enregistrement", + "Store the last update user of each record": "Enregistrer l'utilisateur de dernière mise à jour de chaque enregistrement", + "Store the creation time of each record": "Stocker l'heure de création de chaque enregistrement", + "Store the last update time of each record": "Stocker l'heure de dernière mise à jour de chaque enregistrement", + "More options": "Plus d'options", + "Records can be sorted": "Les enregistrements peuvent être triés", + "Calendar collection": "Collection de calendrier", + "General collection": "Collection générale", + "Connect to database view": "Connexion à la vue de la base de données", + "Source collections": "Collections source", + "Field source": "Source de champ", + "Preview": "Aperçu", + "Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.": "Généré aléatoirement et peut être modifié. Prend en charge les lettres, les chiffres et les traits de soulignement, doit commencer par une lettre.", + "Edit": "Modifier", + "Edit collection": "Modifier la collection", + "Configure fields": "Configurer les champs", + "Configure columns": "Configurer les colonnes", + "Edit field": "Modifier le champ", + "Override": "Remplacer", + "Override field": "Remplacer le champ", + "Configure fields of {{title}}": "Configurer les champs de {{title}}", + "Association fields filter": "Filtre des champs d'association", + "PK & FK fields": "Champs PK & FK", + "Association fields": "Champs d'association", + "Choices fields": "Champs de choix", + "System fields": "Champs système", + "General fields": "Champs généraux", + "Inherited fields": "Champs hérités", + "Parent collection fields": "Champs de la collection parente", + "Basic": "Basique", + "Single line text": "Texte sur une seule ligne", + "Long text": "Texte long", + "Phone": "Téléphone", + "Email": "Email", + "Number": "Nombre", + "Integer": "Entier", + "Percent": "Pourcentage", + "Password": "Mot de passe", + "Advanced type": "Type avancé", + "Formula": "Formule", + "Formula description": "Calcule une valeur dans chaque enregistrement en fonction d'autres champs dans le même enregistrement.", + "Choices": "Choix", + "Checkbox": "Case à cocher", + "Single select": "Sélection unique", + "Multiple select": "Sélection multiple", + "Radio group": "Groupe de boutons radio", + "Checkbox group": "Groupe de cases à cocher", + "China region": "Région de Chine", + "Date & Time": "Date & heure", + "Datetime": "Date et heure", + "Relation": "Relation", + "Link to": "Lien vers", + "Link to description": "Utilisé pour créer rapidement des relations entre collections et compatible avec la plupart des scénarios courants. Convient à une utilisation sans développement. Lorsqu'il est présent en tant que champ, c'est une sélection déroulante utilisée pour sélectionner des enregistrements de la collection cible. Une fois créé, il génère simultanément les champs associés de la collection actuelle dans la collection cible.", + "Sub-table": "Sous-tableau", + "Sub-details": "Sous-détails", + "System info": "Informations système", + "Created at": "Créé le", + "Last updated at": "Dernière mise à jour le", + "Created by": "Créé par", + "Last updated by": "Dernière mise à jour par", + "Add field": "Ajouter un champ", + "Field display name": "Nom d'affichage du champ", + "Field type": "Type de champ", + "Field interface": "Interface du champ", + "Date format": "Format de date", + "Year/Month/Day": "Année/Mois/Jour", + "Year-Month-Day": "Année-Mois-Jour", + "Day/Month/Year": "Jour/Mois/Année", + "Show time": "Afficher l'heure", + "Time format": "Format d'heure", + "12 hour": "12 heures", + "24 hour": "24 heures", + "Relationship type": "Type de relation", + "Inverse relationship type": "Type de relation inverse", + "Source collection": "Collection source", + "Source key": "Clé source", + "Target collection": "Collection cible", + "Through collection": "Collection intermédiaire", + "Target key": "Clé cible", + "Foreign key": "Clé étrangère", + "One to one": "One to one", + "One to many": "One to many", + "Many to one": "Many to one", + "Many to many": "Many to many", + "Foreign key 1": "Clé étrangère 1", + "Foreign key 2": "Clé étrangère 2", + "One to one description": "Utilisé pour créer des relations un à un. Par exemple, un utilisateur a un profil.", + "One to many description": "Utilisé pour créer une relation un à plusieurs. Par exemple, un pays aura de nombreuses villes et une ville ne peut être que dans un pays. Lorsqu'il est présent en tant que champ, c'est un sous-tableau qui affiche les enregistrements de la collection associée. Lors de la création, un champ Many to one est automatiquement généré dans la collection associée.", + "Many to one description": "Utilisé pour créer des relations de plusieurs à un. Par exemple, une ville peut appartenir à un seul pays et un pays peut avoir de nombreuses villes. Lorsqu'il est présent en tant que champ, c'est une sélection déroulante utilisée pour sélectionner un enregistrement dans la collection associée. Une fois créé, un champ One to many est automatiquement généré dans la collection associée.", + "Many to many description": "Utilisé pour créer des relations de plusieurs à plusieurs. Par exemple, un étudiant aura de nombreux enseignants et un enseignant aura de nombreux étudiants. Lorsqu'il est présent en tant que champ, c'est une sélection déroulante utilisée pour sélectionner des enregistrements dans la collection associée.", + "Generated automatically if left blank": "Généré automatiquement si laissé vide", + "Display association fields": "Afficher les champs d'association", + "Display field title": "Afficher le titre du champ", + "Field component": "Composant de champ", + "Allow multiple": "Autoriser plusieurs", + "Quick upload": "Téléchargement rapide", + "Select file": "Sélectionner un fichier", + "Subtable": "Sous-tableau", + "Sub-form": "Sous-formulaire", + "Field mode": "Mode du champ", + "Allow add new data": "Autoriser l'ajout de nouvelles données", + "Record picker": "Sélecteur d'enregistrement", + "Toggles the subfield mode": "Activer/désactiver le mode sous-champ", + "Selector mode": "Mode sélecteur", + "Subtable mode": "Mode sous-table", + "Subform mode": "Mode sous-formulaire", + "Edit block title": "Modifier le titre du bloc", + "Block title": "Titre du bloc", + "Pattern": "Motif", + "Operator": "Opérateur", + "Editable": "Modifiable", + "Readonly": "Lecture seule", + "Easy-reading": "Lecture facile", + "Add filter": "Ajouter un filtre", + "Add filter group": "Ajouter un groupe de filtres", + "Comparision": "Comparaison", + "is": "est", + "is not": "n'est pas", + "contains": "contient", + "does not contain": "ne contient pas", + "starts with": "commence par", + "not starts with": "ne commence pas par", + "ends with": "se termine par", + "not ends with": "ne se termine pas par", + "is empty": "est vide", + "is not empty": "n'est pas vide", + "Edit chart": "Modifier le graphique", + "Add text": "Ajouter du texte", + "Filterable fields": "Champs filtrables", + "Edit button": "Modifier le bouton", + "Hide": "Masquer", + "Enable actions": "Activer les actions", + "Import": "Importer", + "Export": "Exporter", + "Customize": "Personnaliser", + "Custom": "Personnalisé", + "Function": "Fonction", + "Popup form": "Formulaire popup", + "Flexible popup": "Flexible popup", + "Configure actions": "Configurer les actions", + "Display order number": "Afficher numéro d'ordre", + "Enable drag and drop sorting": "Activer le tri par glisser-déposer", + "Triggered when the row is clicked": "Déclenché lorsque la ligne est cliquée", + "Add tab": "Ajouter un onglet", + "Disable tabs": "Désactiver les onglets", + "Details": "Détails", + "Edit tab": "Modifier l'onglet", + "Relationship blocks": "Blocs de relations", + "Select record": "Sélectionner un enregistrement", + "Display name": "Nom d'affichage", + "Select icon": "Sélectionner une icône", + "Custom column name": "Nom de colonne personnalisé", + "Edit description": "Modifier la description", + "Required": "Requis", + "Unique": "Unique", + "Label field": "Champ d'étiquette", + "Default is the ID field": "La valeur par défaut est le champ ID", + "Set default sorting rules": "Définir les règles de tri par défaut", + "Set validation rules": "Définir les règles de validation", + "Max length": "Longueur maximale", + "Min length": "Longueur minimale", + "Maximum": "Maximum", + "Minimum": "Minimum", + "Max length must greater than min length": "La longueur maximale doit être supérieure à la longueur minimale", + "Min length must less than max length": "La longueur minimale doit être inférieure à la longueur maximale", + "Maximum must greater than minimum": "La valeur maximale doit être supérieure à la valeur minimale", + "Minimum must less than maximum": "La valeur minimale doit être inférieure à la valeur maximale", + "Validation rule": "Règle de validation", + "Add validation rule": "Ajouter une règle de validation", + "Format": "Format", + "Regular expression": "Expression régulière", + "Error message": "Message d'erreur", + "Length": "Longueur", + "The field value cannot be greater than ": "La valeur du champ ne peut pas être supérieure à ", + "The field value cannot be less than ": "La valeur du champ ne peut pas être inférieure à ", + "The field value is not an integer number": "La valeur du champ n'est pas un nombre entier", + "Set default value": "Définir la valeur par défaut", + "Default value": "Valeur par défaut", + "is before": "est avant", + "is after": "est après", + "is on or after": "est le même jour ou après", + "is on or before": "est le même jour ou avant", + "is between": "est entre", + "Upload": "Télécharger", + "Select level": "Sélectionner un niveau", + "Province": "Province", + "City": "Ville", + "Area": "Région", + "Street": "Rue", + "Village": "Village", + "Must select to the last level": "Doit sélectionner jusqu'au dernier niveau", + "Move {{title}} to": "Déplacer {{title}} vers", + "Target position": "Position cible", + "After": "Après", + "Before": "Avant", + "Add {{type}} before \"{{title}}\"": "Ajouter {{type}} avant \"{{title}}\"", + "Add {{type}} after \"{{title}}\"": "Ajouter {{type}} après \"{{title}}\"", + "Add {{type}} in \"{{title}}\"": "Ajouter {{type}} dans \"{{title}}\"", + "Original name": "Nom d'origine", + "Custom name": "Nom personnalisé", + "Custom Title": "Titre personnalisé", + "Options": "Options", + "Option value": "Valeur de l'option", + "Option label": "Étiquette de l'option", + "Color": "Couleur", + "Add option": "Ajouter une option", + "Related collection": "Collection associée", + "Allow linking to multiple records": "Autoriser la liaison à plusieurs enregistrements", + "Allow uploading multiple files": "Autoriser le téléchargement de plusieurs fichiers", + "Configure calendar": "Configurer le calendrier", + "Title field": "Champ de titre", + "Custom title": "Titre personnalisé", + "Daily": "Quotidien", + "Weekly": "Hebdomadaire", + "Monthly": "Mensuel", + "Yearly": "Annuel", + "Repeats": "Répétitions", + "Show lunar": "Afficher le calendrier lunaire", + "Start date field": "Champ de date de début", + "End date field": "Champ de date de fin", + "Navigate": "Naviguer", + "Title": "Titre", + "Description": "Description", + "Select view": "Sélectionner la vue", + "Reset": "Réinitialiser", + "Importable fields": "Champs importables", + "Exportable fields": "Champs exportables", + "Saved successfully": "Enregistré avec succès", + "Nickname": "Pseudo", + "Sign in": "Se connecter", + "Sign in via account": "Se connecter via un compte", + "Sign in via phone": "Se connecter via un numéro de téléphone", + "Create an account": "Créer un compte", + "Sign up": "S'inscrire", + "Confirm password": "Confirmer le mot de passe", + "Log in with an existing account": "Se connecter avec un compte existant", + "Signed up successfully. It will jump to the login page.": "Inscription réussie. Vous allez être redirigé(e) vers la page de connexion.", + "Password mismatch": "Erreur de mot de passe", + "Users": "Utilisateurs", + "Verification code": "Code de vérification", + "Send code": "Envoyer le code", + "Retry after {{count}} seconds": "Réessayer après {{count}} secondes", + "Roles": "Rôles", + "Add role": "Ajouter un rôle", + "Role name": "Nom du rôle", + "Configure": "Configurer", + "Configure permissions": "Configurer les permissions", + "Edit role": "Modifier le rôle", + "Action permissions": "Permissions d'action", + "Menu permissions": "Permissions de menu", + "Menu item name": "Nom de l'élément de menu", + "Allow access": "Autoriser l'accès", + "Action name": "Nom de l'action", + "Allow action": "Autoriser l'action", + "Action scope": "Portée de l'action", + "Operate on new data": "Opérer sur de nouvelles données", + "Operate on existing data": "Opérer sur des données existantes", + "Yes": "Oui", + "No": "Non", + "Red": "Rouge", + "Magenta": "Magenta", + "Volcano": "Volcan", + "Orange": "Orange", + "Gold": "Or", + "Lime": "Citron vert", + "Green": "Vert", + "Cyan": "Cyan", + "Blue": "Bleu", + "Geek blue": "Bleu geek", + "Purple": "Violet", + "Default": "Par défaut", + "Add card": "Ajouter une carte", + "edit title": "modifier le titre", + "Turn pages": "Tourner les pages", + "Others": "Autres", + "Save as template": "Enregistrer en tant que modèle", + "Save as block template": "Enregistrer en tant que modèle de bloc", + "Block templates": "Modèles de bloc", + "Convert reference to duplicate": "Convertir la référence en doublon", + "Template name": "Nom du modèle", + "Block type": "Type de bloc", + "No blocks to connect": "Aucun bloc à connecter", + "Action column": "Colonne d'action", + "Records per page": "Enregistrements par page", + "(Fields only)": "(Champs uniquement)", + "Button title": "Titre du bouton", + "Button icon": "Icône du bouton", + "Submitted successfully": "Envoyé avec succès", + "Operation succeeded": "Opération réussie", + "Operation failed": "Échec de l'opération", + "Open mode": "Mode d'ouverture", + "Popup size": "Taille de la popup", + "Small": "Petite", + "Middle": "Moyenne", + "Large": "Grande", + "Menu item title": "Titre de l'élément de menu", + "Menu item icon": "Icône de l'élément de menu", + "Target": "Cible", + "Position": "Position", + "Insert before": "Insérer avant", + "Insert after": "Insérer après", + "UI Editor": "Éditeur d'interface utilisateur", + "ASC": "ASC", + "DESC": "DESC", + "Add sort field": "Ajouter un champ de tri", + "ID": "ID", + "Identifier for program usage. Support letters, numbers and underscores, must start with an letter.": "Identifiant pour une utilisation dans le programme. Prend en charge les lettres, les chiffres et les traits de soulignement et doit commencer par une lettre.", + "Drawer": "Tiroir", + "Dialog": "Dialogue", + "Delete action": "Supprimer l'action", + "Custom column title": "Titre de colonne personnalisé", + 'Column title': 'Titre de colonne', + "Original title: ": "Titre original : ", + "Delete table column": "Supprimer la colonne de tableau", + "Skip required validation": "Ignorer la validation requise", + "Form values": "Valeurs du formulaire", + "Fields values": "Valeurs des champs", + 'The field has been deleted': 'Le champ a été supprimé', + "When submitting the following fields, the saved values are": "Lors de l'envoi des champs suivants, les valeurs enregistrées sont", + "After successful submission": "Après un envoi réussi", + "Then": "Ensuite", + "Stay on current page": "Rester sur la page actuelle", + "Redirect to": "Rediriger vers", + "Save action": "Enregistrer l'action", + "Exists": "Existe", + "Add condition": "Ajouter une condition", + "Add condition group": "Ajouter un groupe de conditions", + "exists": "existe", + "not exists": "n'existe pas", + "=": "=", + "≠": "≠", + ">": ">", + "≥": "≥", + "<": "<", + "≤": "≤", + "Role UID": "UID du rôle", + "Precision": "Précision", + "Formula mode": "Mode formule", + "Expression": "Expression", + "Input +, -, *, /, ( ) to calculate, input @ to open field variables.": "Saisissez +, -, *, /, ( ) pour calculer, saisissez @ pour ouvrir les variables de champ.", + "Formula error.": "Erreur de formule.", + "Rich Text": "Texte enrichi", + "Junction collection": "Collection de jonction", + "Leave it blank, unless you need a custom intermediate table": "Laissez-le vide, sauf si vous avez besoin d'une table intermédiaire personnalisée", + "Fields": "Champs", + "Edit field title": "Modifier le titre du champ", + "Field title": "Titre du champ", + "Original field title: ": "Titre du champ d'origine : ", + "Edit tooltip": "Modifier l'info-bulle", + "Delete field": "Supprimer le champ", + "Select collection": "Sélectionner une collection", + "Blank block": "Bloc vierge", + "Duplicate template": "Dupliquer le modèle", + "Reference template": "Référencer le modèle", + "Create calendar block": "Créer un bloc de calendrier", + "Create kanban block": "Créer un bloc kanban", + "Grouping field": "Champ de regroupement", + "Single select and radio fields can be used as the grouping field": "Les champs de sélection unique et radio peuvent être utilisés comme champ de regroupement", + "Tab name": "Nom de l'onglet", + "Current record blocks": "Blocs d'enregistrement actuels", + "Popup message": "Message popup", + "Delete role": "Supprimer le rôle", + "Role display name": "Nom d'affichage du rôle", + "Default role": "Rôle par défaut", + "All collections use general action permissions by default; permission configured individually will override the default one.": "Toutes les collections utilisent les permissions d'action générales par défaut ; les permissions configurées individuellement remplaceront celles par défaut.", + "Allows configuration of the whole system, including UI, collections, permissions, etc.": "Permet de configurer l'ensemble du système, y compris l'interface utilisateur, les collections, les permissions, etc.", + "New menu items are allowed to be accessed by default.": "Les nouveaux éléments de menu peuvent être accessibles par défaut.", + "Global permissions": "Permissions globales", + "General permissions": "Permissions générales", + "Global action permissions": "Permissions d'action globales", + "General action permissions": "Permissions d'action générales", + "Plugin settings permissions": "Permissions de configuration des plugins", + "Allow to desgin pages": "Autoriser la conception des pages", + "Allow to manage plugins": "Autoriser la gestion des plugins", + "Allow to configure plugins": "Autoriser la configuration des plugins", + "Allows to configure interface": "Permet de configurer l'interface", + "Allows to install, activate, disable plugins": "Permet d'installer, d'activer, de désactiver des plugins", + "Allows to configure plugins": "Permet de configurer des plugins", + "Action display name": "Nom d'affichage de l'action", + "Allow": "Autoriser", + "Data scope": "Portée des données", + "Action on new records": "Action sur les nouveaux enregistrements", + "Action on existing records": "Action sur les enregistrements existants", + "All records": "Tous les enregistrements", + "Own records": "Ses propres enregistrements", + "Permission policy": "Politique de permission", + "Individual": "Individuelle", + "General": "Générale", + "Accessible": "Accessible", + "Configure permission": "Configurer la permission", + "Action permission": "Permission d'action", + "Field permission": "Permission de champ", + "Scope name": "Nom de la portée", + "Unsaved changes": "Modifications non enregistrées", + "Are you sure you don't want to save?": "Êtes-vous sûr de ne pas vouloir enregistrer ?", + "Dragging": "Déplacement", + "Popup": "Popup", + "Trigger workflow": "Déclencher un workflow", + "Request API": "Interroger une API", + "Assign field values": "Attribuer des valeurs de champ", + "Constant value": "Valeur constante", + "Dynamic value": "Valeur dynamique", + "Current user": "Utilisateur actuel", + "Current record": "Enregistrement actuel", + "Current time": "Heure actuelle", + "System variables": "Variables système", + "Date variables": "Variables de date", + "Popup close method": "Méthode de fermeture de la popup", + "Automatic close": "Fermeture automatique", + "Manually close": "Fermeture manuelle", + "After successful update": "Après une mise à jour réussie", + "Save record": "Enregistrer", + "Updated successfully": "Mis à jour avec succès", + "After successful save": "Après un enregistrement réussie", + "After clicking the custom button, the following field values will be assigned according to the following form.": "Après avoir cliqué sur le bouton personnalisé, les valeurs de champ suivantes seront attribuées selon le formulaire suivant.", + "After clicking the custom button, the following fields of the current record will be saved according to the following form.": "Après avoir cliqué sur le bouton personnalisé, les champs suivants de l'enregistrement actuel seront sauvegardés selon le formulaire suivant.", + "Button background color": "Couleur d'arrière-plan du bouton", + "Highlight": "Mise en évidence", + "Danger red": "Rouge danger", + "Custom request": "Requête personnalisée", + "Request settings": "Paramètres de la requête", + "Request URL": "URL de la requête", + "Request method": "Méthode de requête", + "Request query parameters": "Paramètres de requête", + "Request headers": "En-têtes de requête", + "Request body": "Corps de la requête", + "Request success": "Succès de la requête", + "Invalid JSON format": "Format JSON invalide", + "After successful request": "Après une requête réussie", + "Add exportable field": "Ajouter un champ exportable", + "Audit logs": "Journaux d'audit", + "Record ID": "ID de l'enregistrement", + "User": "Utilisateur", + "Field": "Champ", + "Select": "Sélectionner", + "Select field": "Sélectionner un champ", + "Field value changes": "Changements de valeur du champ", + "One to one (has one)": "One to one (has one)", + "One to one (belongs to)": "One to one (belongs to)", + "Use the same time zone (GMT) for all users": "Utiliser le même fuseau horaire (GMT) pour tous les utilisateurs", + "Province/city/area name": "Nom de la province/ville/région", + "Enabled languages": "Langues activées", + "View all plugins": "Voir tous les plugins", + "Print": "Imprimer", + "Done": "Terminé", + "Sign up successfully, and automatically jump to the sign in page": "Inscription réussie, et redirection automatique vers la page de connexion", + "File manager": "Gestionnaire de fichiers", + "ACL": "ACL", + "Collection manager": "Gestionnaire de collection", + "Plugin manager": "Gestionnaire de plugins", + "Local": "Local", + "Built-in": "Intégré", + "Marketplace": "Place de marché", + "Coming soon...": "Bientôt...", + "All plugin settings": "Tous les paramètres de plugin", + "Bookmark": "Signet", + "Manage all settings": "Gérer tous les paramètres", + "Create inverse field in the target collection": "Créer un champ inverse dans la collection cible", + "Inverse field name": "Nom du champ inverse", + "Inverse field display name": "Nom d'affichage du champ inverse", + "Bulk update": "Mise à jour en masse", + "After successful bulk update": "Après une mise à jour en masse réussie", + "Bulk edit": "Édition en masse", + "Data will be updated": "Les données seront mises à jour", + "Selected": "Sélectionné", + "All": "Tous", + "Update selected data?": "Mettre à jour les données sélectionnées ?", + "Update all data?": "Mettre à jour toutes les données ?", + "Remains the same": "Reste inchangé", + "Changed to": "Modifié en", + "Clear": "Effacer", + "Add attach": "Ajouter une pièce jointe", + "Please select the records to be updated": "Veuillez sélectionner les enregistrements à mettre à jour", + "Selector": "Sélecteur", + "Inner": "Interne", + "Search and select collection": "Rechercher et sélectionner une collection", + "Please fill in the iframe URL": "Veuillez remplir l'URL de l'iframe", + "Fix block": "Fixer le bloc", + "Plugin name": "Nom du plugin", + "Plugin tab name": "Nom de l'onglet du plugin", + "AutoGenId": "Champ d'ID généré automatiquement", + "CreatedBy": "Enregistrer l'utilisateur qui a créé une ligne", + "UpdatedBy": "Enregistrer le dernier utilisateur ayant effectué une mise à jour de la ligne", + "CreatedAt": "Enregistrer l'heure de création d'une ligne", + "UpdatedAt": "Enregistrer le dernier utilisateur ayant effectué une mise à jour de la ligne", + "Column width": "Largeur de colonne", + "Sortable": "Triable", + "Enable link": "Activer le lien", + "This is likely a NocoBase internals bug. Please open an issue at <1>here": "Ceci est probablement un bogue interne de NocoBase. Veuillez ouvrir un problème <1>ici", + "Render Failed": "Échec du rendu", + "Feedback": "Commentaires", + "Try again": "Réessayer", + "Data template": "Modèle de données", + "Duplicate":"Dupliquer", + "Duplicating":"Duplication", + "Duplicate mode":"Mode de duplication", + "Quick duplicate":"Duplication rapide", + "Duplicate and continue":"Dupliquer et continuer", + "Please configure the duplicate fields":"Veuillez configurer les champs de duplication", + "Add":"Ajouter", + "Add new mode":"Mode d'ajout", + "Quick add":"Ajout rapide", + "Modal add":"Ajout modal", + "Save mode":"Mode d'enregistrement", + "First or create":"D'abord ou créer", + "Update or create":"Mettre à jour ou créer", + "Find by the following fields":"Trouver par les champs suivants", + "Create":"Créer", + "Current form": "Formulaire actuel", + "Current object":"Objet actuel", + "Linkage with form fields":"Lien avec les champs de formulaire", + "Allow add new, update and delete actions":"Autoriser les actions d'ajout, de mise à jour et de suppression" +}; diff --git a/packages/plugins/api-keys/src/client/locale/fr-FR.ts b/packages/plugins/api-keys/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..2d905d194d --- /dev/null +++ b/packages/plugins/api-keys/src/client/locale/fr-FR.ts @@ -0,0 +1,3 @@ +const locale = {}; + +export default locale; diff --git a/packages/plugins/api-keys/src/server/locale/fr-FR.ts b/packages/plugins/api-keys/src/server/locale/fr-FR.ts new file mode 100644 index 0000000000..ff8b4c5632 --- /dev/null +++ b/packages/plugins/api-keys/src/server/locale/fr-FR.ts @@ -0,0 +1 @@ +export default {}; diff --git a/packages/plugins/audit-logs/src/client/locale/fr-FR.ts b/packages/plugins/audit-logs/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..7e42ec620c --- /dev/null +++ b/packages/plugins/audit-logs/src/client/locale/fr-FR.ts @@ -0,0 +1,3 @@ +export default { + 'Details of changes': 'Détails des changements', +}; diff --git a/packages/plugins/auth/src/server/locale/fr-FR.ts b/packages/plugins/auth/src/server/locale/fr-FR.ts new file mode 100644 index 0000000000..37476d1bd6 --- /dev/null +++ b/packages/plugins/auth/src/server/locale/fr-FR.ts @@ -0,0 +1,10 @@ +export default { + 'The email is incorrect, please re-enter': 'L\'email est incorrect, veuillez le saisir à nouveau', + 'Please fill in your email address': 'Veuillez remplir votre adresse e-mail', + 'The password is incorrect, please re-enter': 'Le mot de passe est incorrect, veuillez le saisir à nouveau', + 'Not a valid cellphone number, please re-enter': 'Numéro de téléphone portable non valide, veuillez le saisir à nouveau', + 'The phone number has been registered, please login directly': + 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', + 'The phone number is not registered, please register first': + 'Le numéro de téléphone n\'est pas enregistré, veuillez vous inscrire d\'abord', +}; diff --git a/packages/plugins/charts/src/client/locale/fr-FR.ts b/packages/plugins/charts/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..9c4d4711a3 --- /dev/null +++ b/packages/plugins/charts/src/client/locale/fr-FR.ts @@ -0,0 +1,23 @@ +export default { + Edit: 'Modifier', + Delete: 'Supprimer', + Cancel: 'Annuler', + Submit: 'Envoyer', + Actions: 'Actions', + Title: 'Titre', + Enable: 'Activer', + 'SAML manager': 'SAML manager', + 'SAML Providers': 'SAML Providers', + 'Redirect url': 'URL de redirection', + 'SP entity id': 'SP entity id', + 'Add provider': 'Ajouter', + 'Edit provider': 'Modifier', + 'Client id': 'Client id', + 'Entity id or issuer': 'Entity id or issuer', + 'Login Url': 'URL de connexion', + 'Public cert': 'Public cert', + 'Delete provider': 'Supprimer', + 'Are you sure you want to delete it?': 'Êtes-vous sûr de vouloir le supprimer ?', + 'Sign in button name, which will be displayed on the sign in page': + 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', +}; diff --git a/packages/plugins/data-visualization/src/client/locale/fr-FR.ts b/packages/plugins/data-visualization/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..5d10c14598 --- /dev/null +++ b/packages/plugins/data-visualization/src/client/locale/fr-FR.ts @@ -0,0 +1,23 @@ +export default { + Edit: 'Modifier', + Delete: 'Supprimer', + Cancel: 'Annuler', + Submit: 'Envoyer', + Actions: 'Actions', + Title: 'Titre', + Enable: 'Activer', + 'SAML manager': 'SAML manager', + 'SAML Providers': 'SAML Providers', + 'Redirect url': 'Url de redirection', + 'SP entity id': 'SP entity id', + 'Add provider': 'Ajouter', + 'Edit provider': 'Modifier', + 'Client id': 'Client id', + 'Entity id or issuer': 'Entity id or issuer', + 'Login Url': 'Url de connexion', + 'Public cert': 'Public cert', + 'Delete provider': 'Supprimer', + 'Are you sure you want to delete it?': 'Êtes-vous sûr de vouloir le supprimer ?', + 'Sign in button name, which will be displayed on the sign in page': + 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', +}; diff --git a/packages/plugins/error-handler/src/server/locale/fr_FR.ts b/packages/plugins/error-handler/src/server/locale/fr_FR.ts new file mode 100644 index 0000000000..10463d83d9 --- /dev/null +++ b/packages/plugins/error-handler/src/server/locale/fr_FR.ts @@ -0,0 +1,6 @@ +export default { + 'unique violation': '{{field}} doit être unique', + 'notNull violation': 'Violation de contrainte notNull', + 'Validation error': 'Erreur de validation de {{field}}', + 'notNull Violation': '{{field}} ne peut pas être null', +}; diff --git a/packages/plugins/file-manager/src/client/locale/fr-FR.ts b/packages/plugins/file-manager/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..dffb6879e5 --- /dev/null +++ b/packages/plugins/file-manager/src/client/locale/fr-FR.ts @@ -0,0 +1,21 @@ +export default { + 'File manager': 'Gestionnaire de fichiers', + 'Attachment': 'Pièce jointe', + 'MIME type': 'Type MIME', + 'Storage display name': 'Nom d\'affichage du stockage', + 'Storage name': 'Nom du stockage', + 'Storage type': 'Type de stockage', + 'Default storage': 'Stockage par défaut', + 'Storage base URL': 'URL de base du stockage', + 'Destination': 'Destination', + 'Use the built-in static file server': 'Utiliser le serveur de fichiers statique intégré', + 'Local storage': 'Stockage local', + 'Aliyun OSS': 'Aliyun OSS', + 'Tencent COS': 'Tencent COS', + 'Amazon S3': 'Amazon S3', + 'Region': 'Region', + 'Bucket': 'Bucket', + 'Path': 'Chemin', + 'Filename': 'Nom de fichier', + 'Will be used for API': 'Sera utilisé pour l\'API', +}; diff --git a/packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts b/packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..583f1b0da2 --- /dev/null +++ b/packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts @@ -0,0 +1,15 @@ +export default { + 'Graph Collection': 'Collection de graphiques', + 'Collection List': 'Liste des collections', + 'Full Screen': 'Plein écran', + 'Collection Search': 'Recherche de collection', + 'Create Collection': 'Créer une collection', + 'All Fields': 'Tous les champs', + 'Association Fields': 'Champs d\'association', + 'Choices fields': 'Champs de choix', + 'All relationships': 'Toutes les relations', + 'Entity relationship only': 'Uniquement les relations d\'entité', + 'Inheritance relationship only': 'Uniquement les relations d\'héritage', + 'Graphical interface': 'Interface graphique', + 'Selection': 'Sélection', +}; diff --git a/packages/plugins/import/src/server/locale/fr-FR.ts b/packages/plugins/import/src/server/locale/fr-FR.ts new file mode 100644 index 0000000000..6294aa1e33 --- /dev/null +++ b/packages/plugins/import/src/server/locale/fr-FR.ts @@ -0,0 +1,10 @@ +export default { + Yes: 'Oui', + No: 'Non', + 'can not find value': 'valeur introuvable', + 'password is empty': 'le mot de passe est vide', + 'Incorrect time format': 'Format de l\'heure incorrect', + 'Incorrect date format': 'Format de la date incorrect', + 'Incorrect email format': 'Format d\'email incorrect', + 'Illegal percentage format': 'Format de pourcentage illégal', +}; diff --git a/packages/plugins/map/src/client/locale/fr-FR.ts b/packages/plugins/map/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..2d905d194d --- /dev/null +++ b/packages/plugins/map/src/client/locale/fr-FR.ts @@ -0,0 +1,3 @@ +const locale = {}; + +export default locale; diff --git a/packages/plugins/mobile-client/src/client/locale/fr-FR.ts b/packages/plugins/mobile-client/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..53b270f6fe --- /dev/null +++ b/packages/plugins/mobile-client/src/client/locale/fr-FR.ts @@ -0,0 +1,5 @@ +const locale = { + +} + +export default locale; diff --git a/packages/plugins/oidc/src/client/locale/fr-FR.ts b/packages/plugins/oidc/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..18b00edbfa --- /dev/null +++ b/packages/plugins/oidc/src/client/locale/fr-FR.ts @@ -0,0 +1,22 @@ +export default { + Enable: 'Activer', + Issuer: 'Issuer', + 'OIDC manager': 'OIDC manager', + 'OIDC Providers': 'OIDC Providers', + 'Provider name': 'Nom', + 'Client id': 'Client id', + 'Client secret': 'Client secret', + 'Openid configuration': 'Openid configuration', + 'Authorization endpoint': 'Authorization endpoint', + 'Access token endpoint': 'Access token endpoint', + 'JWKS endpoint': 'JWKS endpoint', + 'Userinfo endpoint': 'Userinfo endpoint', + 'Redirect url': 'Redirect url', + 'Logout endpoint': 'Logout endpoint', + 'Id token sign alg': 'Id token sign alg', + 'Add provider': 'Ajouter', + 'Edit provider': 'Modifier', + 'Delete provider': 'Supprimer', + 'Sign in button name, which will be displayed on the sign in page': + 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', +}; diff --git a/packages/plugins/saml/src/client/locale/fr-FR.ts b/packages/plugins/saml/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..5d10c14598 --- /dev/null +++ b/packages/plugins/saml/src/client/locale/fr-FR.ts @@ -0,0 +1,23 @@ +export default { + Edit: 'Modifier', + Delete: 'Supprimer', + Cancel: 'Annuler', + Submit: 'Envoyer', + Actions: 'Actions', + Title: 'Titre', + Enable: 'Activer', + 'SAML manager': 'SAML manager', + 'SAML Providers': 'SAML Providers', + 'Redirect url': 'Url de redirection', + 'SP entity id': 'SP entity id', + 'Add provider': 'Ajouter', + 'Edit provider': 'Modifier', + 'Client id': 'Client id', + 'Entity id or issuer': 'Entity id or issuer', + 'Login Url': 'Url de connexion', + 'Public cert': 'Public cert', + 'Delete provider': 'Supprimer', + 'Are you sure you want to delete it?': 'Êtes-vous sûr de vouloir le supprimer ?', + 'Sign in button name, which will be displayed on the sign in page': + 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', +}; diff --git a/packages/plugins/sequence-field/src/client/locale/fr-FR.ts b/packages/plugins/sequence-field/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..abd0950538 --- /dev/null +++ b/packages/plugins/sequence-field/src/client/locale/fr-FR.ts @@ -0,0 +1,24 @@ +export default { + Sequence: 'Séquence', + 'Sequence rules': 'Règles de séquence', + 'Add rule': 'Ajouter une règle', + Inputable: 'Modifiable', + 'Match rules': 'Règles de correspondance', + Type: 'Type', + Autoincrement: 'Incrémentation automatique', + 'Fixed text': 'Texte fixe', + 'Text content': 'Contenu du texte', + 'Rule content': 'Contenu de la règle', + '{{value}} Digits': '{{value}} chiffres', + Digits: 'Chiffres', + 'Start from': 'Commencer à partir de', + 'Starts from {{value}}': 'Commence à partir de {{value}}', + 'Reset cycle': 'Cycle de réinitialisation', + 'No reset': 'Pas de réinitialisation', + Daily: 'Quotidien', + 'Every Monday': 'Chaque lundi', + Monthly: 'Mensuel', + Yearly: 'Annuel', + Operations: 'Opérations', + Customize: 'Personnaliser', +}; diff --git a/packages/plugins/sms-auth/src/server/locale/fr-FR.ts b/packages/plugins/sms-auth/src/server/locale/fr-FR.ts new file mode 100644 index 0000000000..ea51f6bf9c --- /dev/null +++ b/packages/plugins/sms-auth/src/server/locale/fr-FR.ts @@ -0,0 +1,10 @@ +export default { + 'The email is incorrect, please re-enter': 'L\'email est incorrect, veuillez le saisir à nouveau', + 'Please fill in your email address': 'Veuillez remplir votre adresse e-mail', + 'The password is incorrect, please re-enter': 'Le mot de passe est incorrect, veuillez le saisir à nouveau', + 'Not a valid cellphone number, please re-enter': 'Numéro de téléphone portable invalide, veuillez le saisir à nouveau', + 'The phone number has been registered, please login directly': + 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', + 'The phone number is not registered, please register first': + 'Le numéro de téléphone n\'est pas enregistré, veuillez vous inscrire d\'abord', +}; diff --git a/packages/plugins/snapshot-field/src/client/locale/fr-FR.ts b/packages/plugins/snapshot-field/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..7c78f7b718 --- /dev/null +++ b/packages/plugins/snapshot-field/src/client/locale/fr-FR.ts @@ -0,0 +1,12 @@ +export default { + Detail: 'Détail', + Snapshot: 'Snapshot', + 'View record': 'Voir l\'enregistrement', + 'Add block': 'Ajouter un bloc', + 'Allow linking to multiple records': 'Autoriser la liaison à plusieurs enregistrements', + 'When adding a new record, create a snapshot for its relational record and save in the current record. The snapshot is not updated when the record is subsequently updated.': + 'Lors de l\'ajout d\'un nouvel enregistrement, créez un snapshot pour son enregistrement relationnel et enregistrez-le dans l\'enregistrement actuel. Le snapshot n\'est pas mis à jour lorsque l\'enregistrement est ultérieurement modifié.', + 'The association field to snapshot': 'Le champ d\'association à un snapshot', + "Snapshot the snapshot's association fields": "Snapshot des champs d'association du snapshot", + 'Please select': 'Veuillez sélectionner', +}; diff --git a/packages/plugins/theme-editor/src/client/antd-token-previewer/locale/fr-FR.ts b/packages/plugins/theme-editor/src/client/antd-token-previewer/locale/fr-FR.ts new file mode 100644 index 0000000000..3defd37d19 --- /dev/null +++ b/packages/plugins/theme-editor/src/client/antd-token-previewer/locale/fr-FR.ts @@ -0,0 +1,20 @@ +import type { Locale } from './interface'; + +const locale: Locale = { + _lang: 'fr-FR', + followPrimary: 'Suivre la couleur du branding', + reset: 'Réinitialiser', + next: 'Suivant', + groupView: 'Vue groupe', + fill: 'Remplir', + border: 'Bordure', + background: 'Arrière-plan', + text: 'Texte', + demo: { + overview: 'Aperçu', + components: 'Composants', + relatedTokens: 'Jetons associés', + }, +}; + +export default locale; diff --git a/packages/plugins/theme-editor/src/client/locale/fr-FR.ts b/packages/plugins/theme-editor/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..fb5602d288 --- /dev/null +++ b/packages/plugins/theme-editor/src/client/locale/fr-FR.ts @@ -0,0 +1,26 @@ +const locale = { + Theme: 'Thème', + Local: 'Local', + 'Dark theme': 'Thème sombre', + Optional: 'Optionnel', + 'Non-optional': 'Non-optionnel', + Current: 'Actuel', + Default: 'Par défaut', + + // 主题编辑器 + 'Theme Editor': 'Éditeur de thème', + Save: 'Enregistrer', + Close: 'Fermer', + Edit: 'Modifier', + Export: 'Exporter', + 'edit Theme Config': 'Modifier la configuration du thème', + 'The theme of the JSON format is incorrect': 'Le thème au format JSON est incorrect', + 'Edited successfully': 'Modifié avec succès', + 'Saved successfully': 'Enregistré avec succès', + 'Initializing Editor...': 'Initialisation de l\'éditeur...', + 'Save theme': 'Enregistrer le thème', + 'Please set a name for this theme': 'Veuillez définir un nom pour ce thème', + 'Please input the theme name': 'Veuillez saisir le nom du thème', +}; + +export default locale; diff --git a/packages/plugins/users/src/server/locale/fr-FR.ts b/packages/plugins/users/src/server/locale/fr-FR.ts new file mode 100644 index 0000000000..1657dd1e77 --- /dev/null +++ b/packages/plugins/users/src/server/locale/fr-FR.ts @@ -0,0 +1,8 @@ +export default { + 'The email is incorrect, please re-enter': 'L\'adresse e-mail est incorrecte, veuillez la saisir à nouveau', + 'Please fill in your email address': 'Veuillez remplir votre adresse e-mail', + 'The password is incorrect, please re-enter': 'Le mot de passe est incorrect, veuillez le saisir à nouveau', + 'Not a valid cellphone number, please re-enter': 'Numéro de téléphone portable invalide, veuillez le saisir à nouveau', + 'The phone number has been registered, please login directly': 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', + 'The phone number is not registered, please register first': 'Le numéro de téléphone n\'est pas enregistré, veuillez vous inscrire d\'abord', +}; diff --git a/packages/plugins/workflow/src/client/locale/fr-FR.ts b/packages/plugins/workflow/src/client/locale/fr-FR.ts new file mode 100644 index 0000000000..f659ef17b1 --- /dev/null +++ b/packages/plugins/workflow/src/client/locale/fr-FR.ts @@ -0,0 +1,136 @@ +export default { + Workflow: 'Workflow', + 'Execution history': 'Historique d\'exécution', + Executed: 'Exécuté', + 'Trigger type': 'Type de déclencheur', + Status: 'Statut', + On: 'Activé', + Off: 'Désactivé', + Version: 'Version', + 'Copy to new version': 'Copier vers une nouvelle version', + Duplicate: 'Dupliquer', + Loading: 'Chargement', + 'Load failed': 'Échec du chargement', + Trigger: 'Déclencheur', + 'Trigger variables': 'Variables de déclenchement', + 'Trigger data': 'Données de déclenchement', + 'Trigger time': 'Temps de déclenchement', + 'Triggered at': 'Déclenché à', + 'Collection event': 'Événement de collection', + 'Trigger on': 'Déclencher sur', + 'After record added': 'Après l\'ajout d\'un enregistrement', + 'After record updated': 'Après la mise à jour d\'un enregistrement', + 'After record added or updated': 'Après l\'ajout ou la mise à jour d\'un enregistrement', + 'After record deleted': 'Après la suppression d\'un enregistrement', + 'Changed fields': 'Champs modifiés', + 'Triggered only if one of the selected fields changes. If unselected, it means that it will be triggered when any field changes. When record is added or deleted, any field is considered to have been changed.': + 'Déclenché uniquement si l\'un des champs sélectionnés change. S\'il n\'est pas sélectionné, cela signifie qu\'il sera déclenché lorsque n\'importe quel champ change. Lorsque l\'enregistrement est ajouté ou supprimé, n\'importe quel champ est considéré comme ayant été modifié.', + 'Only triggers when match conditions': 'Déclenche uniquement lorsque les conditions correspondent', + 'Schedule event': 'Événement planifié', + 'Trigger mode': 'Mode de déclenchement', + 'Based on certain date': 'Basé sur une date spécifique', + 'Based on date field of collection': 'Basé sur le champ de date de la collection', + 'Starts on': 'Commence le', + 'Ends on': 'Se termine le', + 'No end': 'Pas de fin', + 'Exactly at': 'Exactement à', + 'Repeat mode': 'Mode de répétition', + 'Repeat limit': 'Limite de répétition', + 'No limit': 'Pas de limite', + Seconds: 'Secondes', + Minutes: 'Minutes', + Hours: 'Heures', + Days: 'Jours', + Weeks: 'Semaines', + Months: 'Mois', + 'No repeat': 'Pas de répétition', + Every: 'Chaque', + 'By minute': 'Par minute', + 'By hour': 'Par heure', + 'By day': 'Par jour', + 'By week': 'Par semaine', + 'By month': 'Par mois', + 'By field': 'Par champ', + 'By custom date': 'Par date personnalisée', + Advanced: 'Avancé', + End: 'Fin', + 'Node result': 'Résultat du nœud', + Constant: 'Constante', + Null: 'Null', + Boolean: 'Booléen', + String: 'Chaîne de caractères', + Calculator: 'Calculatrice', + 'Arithmetic calculation': 'Calcul arithmétique', + 'String operation': 'Opération sur les chaînes de caractères', + 'Executed at': 'Exécuté à', + Queueing: 'En attente', + 'On going': 'En cours', + Succeeded: 'Réussi', + Failed: 'Échoué', + Pending: 'En attente', + Canceled: 'Annulé', + 'This node contains branches, deleting will also be preformed to them, are you sure?': + 'Ce nœud contient des branches, leur suppression sera également effectuée, êtes-vous sûr(e) ?', + Control: 'Contrôle', + 'Collection operations': 'Opérations sur la collection', + 'Extended types': 'Types étendus', + 'Node type': 'Type de nœud', + Calculation: 'Calcul', + 'Configure calculation': 'Configurer le calcul', + 'Calculation result': 'Résultat du calcul', + True: 'Vrai', + False: 'Faux', + concat: 'concat', + Condition: 'Condition', + Mode: 'Mode', + 'Continue when "Yes"': 'Continuer quand "Oui"', + 'Branch into "Yes" and "No"': 'Brancher sur "Oui" et "Non"', + Conditions: 'Conditions', + 'Parallel branch': 'Branche parallèle', + 'Add branch': 'Ajouter une branche', + 'All succeeded': 'Tous réussis', + 'Any succeeded': 'Un réussi', + 'Any succeeded or failed': 'Un réussi ou un échoué', + 'Continue after all branches succeeded': 'Continuer après la réussite de toutes les branches', + 'Continue after any branch succeeded': 'Continuer après la réussite d\'une branche', + 'Continue after any branch succeeded, or exit after any branch failed': + 'Continuer après la réussite d\'une branche, ou quitter après l\'échec d\'une branche', + Delay: 'Délai', + Duration: 'Durée', + 'End Status': 'Statut de fin', + 'Select status': 'Sélectionner un statut', + 'Succeed and continue': 'Réussir et continuer', + 'Fail and exit': 'Échouer et quitter', + 'Create record': 'Créer un enregistrement', + 'Update record': 'Mettre à jour un enregistrement', + 'Query record': 'Interroger un enregistrement', + 'Multiple records': 'Multiples enregistrements', + 'Please select collection first': 'Veuillez d\'abord sélectionner une collection', + 'Only update records matching conditions': 'Mettre à jour uniquement les enregistrements correspondant aux conditions', + 'Fields that are not assigned a value will be set to the default value, and those that do not have a default value are set to null.': + 'Les champs qui ne reçoivent pas de valeur seront définis sur la valeur par défaut, et ceux qui n\'ont pas de valeur par défaut seront définis sur null.', + 'Trigger in executed workflow cannot be modified': 'Le déclencheur dans le workflow exécuté ne peut pas être modifié', + 'Node in executed workflow cannot be modified': 'Le nœud dans le workflow exécuté ne peut pas être modifié', + 'Can not delete': 'Impossible de supprimer', + 'The result of this node has been referenced by other nodes ({{nodes}}), please remove the usage before deleting.': + 'Le résultat de ce nœud a été référencé par d\'autres nœuds ({{nodes}}), veuillez supprimer son utilisation avant de le supprimer.', + + 'HTTP request': 'Requête HTTP', + 'HTTP method': 'Méthode HTTP', + URL: 'URL', + Headers: 'En-têtes', + 'Add request header': 'Ajouter un en-tête de requête', + Parameters: 'Paramètres', + 'Add parameter': 'Ajouter un paramètre', + Body: 'Corps', + 'Use variable': 'Utiliser une variable', + Format: 'Format', + Insert: 'Insérer', + 'Timeout config': 'Configuration du délai d\'expiration', + ms: 'ms', + 'Input request data': 'Entrée des données de requête', + 'Only support standard JSON data': 'Prend uniquement en charge les données JSON standard', + '"Content-Type" only support "application/json", and no need to specify': + '"Content-Type" prend uniquement en charge "application/json" et n\'a pas besoin d\'être spécifié', + 'Ignore fail request and continue workflow': 'Ignorer l\'échec de la requête et continuer le workflow', +}; From 30b0d9b3f303a43eeb340482a567a50145437f27 Mon Sep 17 00:00:00 2001 From: Rain <958414905@qq.com> Date: Tue, 25 Jul 2023 16:29:49 +0800 Subject: [PATCH 09/34] chore: fix prettier --- package.json | 1 - packages/core/devtools/package.json | 4 ++-- yarn.lock | 17 ++++++++++------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index d7bcb62119..5b32e4d978 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,6 @@ "ghooks": "^2.0.4", "jsdom-worker": "^0.3.0", "lint-staged": "^13.2.3", - "prettier": "^3.0.0", "pretty-format": "^24.0.0", "pretty-quick": "^3.1.0", "react": "^18.0.0", diff --git a/packages/core/devtools/package.json b/packages/core/devtools/package.json index d37cb92201..1bfd5d3868 100644 --- a/packages/core/devtools/package.json +++ b/packages/core/devtools/package.json @@ -23,7 +23,7 @@ "eslint-plugin-import": "^2.27.5", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.32.2", "eslint-plugin-react-hooks": "^4.6.0", @@ -35,7 +35,7 @@ "jest-watch-lerna-packages": "^1.1.0", "jsdom": "^16.0.0", "lerna": "^4.0.0", - "prettier": "^2.2.1", + "prettier": "^3.0.0", "pretty-format": "^24.0.0", "pretty-quick": "^3.1.0", "react": "^18.0.0", diff --git a/yarn.lock b/yarn.lock index 5b73222738..c84d1b65f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11808,11 +11808,13 @@ eslint-plugin-node@^11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@^4.2.1: - version "4.2.1" - resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" +eslint-plugin-prettier@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" + integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== dependencies: prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" eslint-plugin-promise@^6.1.1: version "6.1.1" @@ -20404,9 +20406,10 @@ prettier@2.2.1: version "2.2.1" resolved "https://registry.npmmirror.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" -prettier@^2.2.1: - version "2.8.8" - resolved "https://registry.npmmirror.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" +prettier@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" + integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== pretty-error@^4.0.0: version "4.0.0" @@ -23660,7 +23663,7 @@ symbol-tree@^3.2.2, symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npmmirror.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" -synckit@0.8.5: +synckit@0.8.5, synckit@^0.8.5: version "0.8.5" resolved "https://registry.npmmirror.com/synckit/-/synckit-0.8.5.tgz#b7f4358f9bb559437f9f167eb6bc46b3c9818fa3" dependencies: From e27c72e8b060fcd0d9a34c88a42b2956f0054af0 Mon Sep 17 00:00:00 2001 From: Junyi Date: Tue, 25 Jul 2023 15:41:42 +0700 Subject: [PATCH 10/34] fix(plugin-workflow): fix styles (#2316) --- .../antd/action/Action.style.ts | 74 +++++++++---------- .../schema-component/antd/action/Action.tsx | 50 +++++++------ .../workflow/src/client/nodes/index.tsx | 15 ++++ .../plugins/workflow/src/client/style.tsx | 9 ++- 4 files changed, 83 insertions(+), 65 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/action/Action.style.ts b/packages/core/client/src/schema-component/antd/action/Action.style.ts index 0c89a12907..9a512d45e3 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.style.ts +++ b/packages/core/client/src/schema-component/antd/action/Action.style.ts @@ -5,50 +5,42 @@ const useStyles = genStyleHook('nb-action', (token) => { return { [componentCls]: { - '.renderButton': { - position: 'relative', - '&:hover': { '> .general-schema-designer': { display: 'block' } }, - '&.nb-action-link': { - '> .general-schema-designer': { - top: '-10px', - bottom: '-10px', - left: '-10px', - right: '-10px', - }, - }, + position: 'relative', + '&:hover': { '> .general-schema-designer': { display: 'block' } }, + '&.nb-action-link': { '> .general-schema-designer': { - position: 'absolute', - zIndex: 999, - top: '0', - bottom: '0', - left: '0', - right: '0', - display: 'none', - background: 'var(--colorBgSettingsHover)', - border: '0', - pointerEvents: 'none', - '> .general-schema-designer-icons': { - position: 'absolute', - right: '2px', - top: '2px', - lineHeight: '16px', - pointerEvents: 'all', - '.ant-space-item': { - backgroundColor: token.colorSettings, - color: '#fff', - lineHeight: '16px', - width: '16px', - paddingLeft: '1px', - alignSelf: 'stretch', - }, - }, + top: '-10px', + bottom: '-10px', + left: '-10px', + right: '-10px', }, }, - - '.popover': { - display: 'flex', - justifyContent: 'flex-end', - width: '100%', + '> .general-schema-designer': { + position: 'absolute', + zIndex: 999, + top: '0', + bottom: '0', + left: '0', + right: '0', + display: 'none', + background: 'var(--colorBgSettingsHover)', + border: '0', + pointerEvents: 'none', + '> .general-schema-designer-icons': { + position: 'absolute', + right: '2px', + top: '2px', + lineHeight: '16px', + pointerEvents: 'all', + '.ant-space-item': { + backgroundColor: token.colorSettings, + color: '#fff', + lineHeight: '16px', + width: '16px', + paddingLeft: '1px', + alignSelf: 'stretch', + }, + }, }, }, }; diff --git a/packages/core/client/src/schema-component/antd/action/Action.tsx b/packages/core/client/src/schema-component/antd/action/Action.tsx index e68dfdb376..dc53882d10 100644 --- a/packages/core/client/src/schema-component/antd/action/Action.tsx +++ b/packages/core/client/src/schema-component/antd/action/Action.tsx @@ -1,4 +1,5 @@ import { observer, RecursionField, useField, useFieldSchema, useForm } from '@formily/react'; +import { lodash } from '@nocobase/utils'; import { App, Button, Popover } from 'antd'; import classnames from 'classnames'; import React, { useEffect, useState } from 'react'; @@ -21,7 +22,6 @@ import { ActionContextProvider } from './context'; import { useA } from './hooks'; import { ComposedAction } from './types'; import { linkageAction } from './utils'; -import { lodash } from '@nocobase/utils'; export const Action: ComposedAction = observer( (props: any) => { @@ -105,7 +105,7 @@ export const Action: ComposedAction = observer( } }} component={tarComponent || Button} - className={classnames('renderButton', className)} + className={classnames(componentCls, hashId, className)} type={props.type === 'danger' ? undefined : props.type} > {actionTitle} @@ -115,24 +115,22 @@ export const Action: ComposedAction = observer( }; return wrapSSR( -
- - {popover && } - {!popover && renderButton()} - {!popover &&
e.stopPropagation()}>{props.children}
} - {element} -
-
, + + {popover && } + {!popover && renderButton()} + {!popover &&
e.stopPropagation()}>{props.children}
} + {element} +
, ); }, { displayName: 'Action' }, @@ -160,7 +158,17 @@ Action.Popover = observer( Action.Popover.Footer = observer( (props) => { - return
{props.children}
; + return ( +
+ {props.children} +
+ ); }, { displayName: 'Action.Popover.Footer' }, ); diff --git a/packages/plugins/workflow/src/client/nodes/index.tsx b/packages/plugins/workflow/src/client/nodes/index.tsx index 5613f5e233..6646924f7f 100644 --- a/packages/plugins/workflow/src/client/nodes/index.tsx +++ b/packages/plugins/workflow/src/client/nodes/index.tsx @@ -441,10 +441,25 @@ export function NodeDefaultView(props) { 'x-component': 'fieldset', 'x-component-props': { className: css` + .ant-input, .ant-select, .ant-cascader-picker, .ant-picker, .ant-input-number, + .ant-input-affix-wrapper { + &:not(.full-width) { + width: auto; + min-width: 6em; + } + } + .ant-input-affix-wrapper { + &:not(.full-width) { + .ant-input { + width: auto; + min-width: 6em; + } + } + } `, }, properties: instruction.fieldset, diff --git a/packages/plugins/workflow/src/client/style.tsx b/packages/plugins/workflow/src/client/style.tsx index be0b7f2a0e..3f14dcae6b 100644 --- a/packages/plugins/workflow/src/client/style.tsx +++ b/packages/plugins/workflow/src/client/style.tsx @@ -96,7 +96,7 @@ const useStyles = createStyles(({ css, token }) => { bottom: 0; left: calc(50% - 0.5px); width: 1px; - background-color: ${token.colorBorder}; + background-color: ${token.colorBgLayout}; } `, @@ -220,7 +220,9 @@ const useStyles = createStyles(({ css, token }) => { font-weight: bold; &:not(:focus) { - transition: background-color 0.3s ease, border-color 0.3s ease; + transition: + background-color 0.3s ease, + border-color 0.3s ease; border-color: ${token.colorBorderBg}; background-color: ${token.colorBgContainerDisabled}; @@ -254,7 +256,7 @@ const useStyles = createStyles(({ css, token }) => { right: 1em; justify-content: center; align-items: center; - color: ${token.colorText}; + color: ${token.colorTextLightSolid}; &[type='button'] { border: none; @@ -327,6 +329,7 @@ const useStyles = createStyles(({ css, token }) => { top: calc(1.5em - 1px); line-height: 1em; color: ${token.colorTextSecondary}; + background-color: ${token.colorBgLayout}; padding: 1px; } `, From 45bc0b83ba231485e9fbbd75f978bea072f85040 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Tue, 25 Jul 2023 17:09:34 +0800 Subject: [PATCH 11/34] feat(locale): allows to manage locale resources in core package (#2293) * feat(locale): add app.locales * chore: change directory * chore: change locale directories * fix: test * fix: cached resources changed after sync * chore: change fr-FR locale directory --- packages/core/actions/package.json | 2 +- packages/core/resourcer/package.json | 2 +- packages/core/server/package.json | 2 +- packages/core/server/src/application.ts | 9 ++ .../server => core/server/src/locale}/antd.ts | 0 .../server => core/server/src/locale}/cron.ts | 0 .../server/src/locale}/cronstrue.ts | 0 packages/core/server/src/locale/index.ts | 1 + packages/core/server/src/locale/locale.ts | 68 +++++++++ packages/core/server/src/locale/resource.ts | 27 ++++ .../api-keys/src/{client => }/locale/en-US.ts | 0 .../api-keys/src/{client => }/locale/fr-FR.ts | 0 .../api-keys/src/{client => }/locale/zh-CN.ts | 1 + .../src/{client => }/locale/en-US.ts | 0 .../src/{client => }/locale/es-ES.ts | 0 .../src/{client => }/locale/fr-FR.ts | 0 .../src/{client => }/locale/ja-JP.ts | 0 .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/ru-RU.ts | 0 .../src/{client => }/locale/tr-TR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../plugins/auth/src/client/locale/zh-CN.ts | 10 -- packages/plugins/auth/src/locale/zh-CN.ts | 17 +++ .../plugins/charts/src/client/locale/fr-FR.ts | 23 --- .../charts/src/{client => }/locale/en-US.ts | 0 .../charts/src/{client => }/locale/es-ES.ts | 0 .../locale/ja-JP.ts => locale/fr-FR.ts} | 0 .../src/client => charts/src}/locale/ja-JP.ts | 0 .../charts/src/{client => }/locale/pt-BR.ts | 0 .../charts/src/{client => }/locale/ru-RU.ts | 0 .../charts/src/{client => }/locale/tr-TR.ts | 0 .../charts/src/{client => }/locale/zh-CN.ts | 0 packages/plugins/client/src/index.ts | 2 +- packages/plugins/client/src/server/index.ts | 1 - .../client/src/server/moment-locale.ts | 141 ------------------ .../plugins/client/src/server/resource.ts | 69 --------- packages/plugins/client/src/server/server.ts | 26 +--- .../src/{client => }/locale/en-US.ts | 0 .../locale/ru-RU.ts => locale/fr-FR.ts} | 0 .../src}/locale/ja-JP.ts | 0 .../src/{client => }/locale/pt-BR.ts | 0 .../src}/locale/ru-RU.ts | 0 .../src/{client => }/locale/tr-TR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../plugins/duplicator/src/locale/zh-CN.ts | 8 + .../plugins/error-handler/src/locale/en_US.ts | 6 + .../plugins/error-handler/src/locale/es-ES.ts | 6 + .../plugins/error-handler/src/locale/fr_FR.ts | 6 + .../plugins/error-handler/src/locale/ja_JP.ts | 4 + .../plugins/error-handler/src/locale/pt-BR.ts | 6 + .../plugins/error-handler/src/locale/zh_CN.ts | 5 + .../src/{client => }/locale/en-US.ts | 12 +- .../src/{client => }/locale/fr-FR.ts | 16 +- .../src/{client => }/locale/ja-JP.ts | 0 .../src/{client => }/locale/ru-RU.ts | 0 .../src/{client => }/locale/tr-TR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../src/client/locale/index.ts | 6 +- .../src/{client => }/locale/en-US.ts | 0 .../src/{client => }/locale/es-ES.ts | 0 .../src/{client => }/locale/fr-FR.ts | 8 +- .../src/{client => }/locale/ja-JP.ts | 0 .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../plugins/import/src/client/locale/index.ts | 4 +- .../import/src/{client => }/locale/en-US.ts | 0 .../import/src/{client => }/locale/es-ES.ts | 0 .../import/src/{client => }/locale/pt-BR.ts | 0 .../import/src/{client => }/locale/zh-CN.ts | 7 + .../localization-management/package.json | 2 +- .../src/{client => }/locale/zh-CN.ts | 0 .../src/server/actions/localization.ts | 9 +- .../map/src/{client => }/locale/en-US.ts | 0 .../map/src/{client => }/locale/fr-FR.ts | 0 .../map/src/{client => }/locale/pt-BR.ts | 0 .../map/src/{client => }/locale/zh-CN.ts | 0 .../src/{client => }/locale/en-US.ts | 4 +- .../src/{client => }/locale/fr-FR.ts | 4 +- .../src/{client => }/locale/zh-CN.ts | 0 .../src/client/locale/es-ES.ts | 9 -- .../multi-app-manager/src/locale/es-ES.ts | 9 ++ .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../src/client/locale/es-ES.ts | 13 -- .../src/locale/es-ES.ts | 12 ++ .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../oidc/src/{client => }/locale/en-US.ts | 0 .../oidc/src/{client => }/locale/es-ES.ts | 0 .../oidc/src/{client => }/locale/fr-FR.ts | 0 .../src/client => oidc/src}/locale/ja-JP.ts | 0 .../oidc/src/{client => }/locale/pt-BR.ts | 0 .../src/client => oidc/src}/locale/ru-RU.ts | 0 .../oidc/src/{client => }/locale/tr-TR.ts | 0 .../oidc/src/{client => }/locale/zh-CN.ts | 0 .../plugins/saml/src/client/locale/fr-FR.ts | 23 --- .../saml/src/{client => }/locale/en-US.ts | 0 .../saml/src/{client => }/locale/es-ES.ts | 0 .../src/client => saml/src}/locale/fr-FR.ts | 0 .../src/client => saml/src}/locale/ja-JP.ts | 0 .../saml/src/{client => }/locale/pt-BR.ts | 0 .../src/client => saml/src}/locale/ru-RU.ts | 0 .../saml/src/{client => }/locale/tr-TR.ts | 0 .../saml/src/{client => }/locale/zh-CN.ts | 0 .../src/{client => }/locale/en-US.ts | 0 .../src/{client => }/locale/es-ES.ts | 0 .../src/{client => }/locale/fr-FR.ts | 0 .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 0 .../sms-auth/src/client/locale/index.ts | 4 - .../sms-auth/src/{client => }/locale/zh-CN.ts | 0 .../src/{client => }/locale/en-US.ts | 0 .../src/{client => }/locale/es-ES.ts | 0 .../src/{client => }/locale/fr-FR.ts | 6 +- .../locale/tr-TR.ts => locale/ja-JP.ts} | 0 .../src/{client => }/locale/pt-BR.ts | 0 .../snapshot-field/src/locale/ru-RU.ts | 1 + .../snapshot-field/src/locale/tr-TR.ts | 1 + .../src/{client => }/locale/zh-CN.ts | 0 .../src/{client => }/locale/en-US.ts | 0 .../src/{client => }/locale/fr-FR.ts | 2 +- .../src/{client => }/locale/zh-CN.ts | 0 packages/plugins/users/src/locale/en-US.ts | 10 ++ packages/plugins/users/src/locale/es-ES.ts | 8 + packages/plugins/users/src/locale/fr-FR.ts | 11 ++ packages/plugins/users/src/locale/ja-JP.ts | 4 + packages/plugins/users/src/locale/pt-BR.ts | 10 ++ packages/plugins/users/src/locale/zh-CN.ts | 8 + .../plugins/users/src/server/locale/fr-FR.ts | 11 +- .../src/{client => }/locale/pt-BR.ts | 0 .../src/{client => }/locale/zh-CN.ts | 6 + .../workflow/src/{client => }/locale/en-US.ts | 0 .../workflow/src/{client => }/locale/es-ES.ts | 0 .../workflow/src/{client => }/locale/fr-FR.ts | 33 ++-- .../workflow/src/{client => }/locale/ja-JP.ts | 0 .../workflow/src/{client => }/locale/pt-BR.ts | 0 .../workflow/src/{client => }/locale/ru-RU.ts | 0 .../workflow/src/{client => }/locale/tr-TR.ts | 0 .../workflow/src/{client => }/locale/zh-CN.ts | 0 yarn.lock | 34 ++--- 141 files changed, 326 insertions(+), 403 deletions(-) rename packages/{plugins/client/src/server => core/server/src/locale}/antd.ts (100%) rename packages/{plugins/client/src/server => core/server/src/locale}/cron.ts (100%) rename packages/{plugins/client/src/server => core/server/src/locale}/cronstrue.ts (100%) create mode 100644 packages/core/server/src/locale/index.ts create mode 100644 packages/core/server/src/locale/locale.ts create mode 100644 packages/core/server/src/locale/resource.ts rename packages/plugins/api-keys/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/api-keys/src/{client => }/locale/fr-FR.ts (100%) rename packages/plugins/api-keys/src/{client => }/locale/zh-CN.ts (94%) rename packages/plugins/audit-logs/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/fr-FR.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/ja-JP.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/ru-RU.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/audit-logs/src/{client => }/locale/zh-CN.ts (100%) delete mode 100644 packages/plugins/auth/src/client/locale/zh-CN.ts create mode 100644 packages/plugins/auth/src/locale/zh-CN.ts delete mode 100644 packages/plugins/charts/src/client/locale/fr-FR.ts rename packages/plugins/charts/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/charts/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/charts/src/{client/locale/ja-JP.ts => locale/fr-FR.ts} (100%) rename packages/plugins/{data-visualization/src/client => charts/src}/locale/ja-JP.ts (100%) rename packages/plugins/charts/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/charts/src/{client => }/locale/ru-RU.ts (100%) rename packages/plugins/charts/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/charts/src/{client => }/locale/zh-CN.ts (100%) delete mode 100644 packages/plugins/client/src/server/moment-locale.ts delete mode 100644 packages/plugins/client/src/server/resource.ts rename packages/plugins/data-visualization/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/data-visualization/src/{client/locale/ru-RU.ts => locale/fr-FR.ts} (100%) rename packages/plugins/{oidc/src/client => data-visualization/src}/locale/ja-JP.ts (100%) rename packages/plugins/data-visualization/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/{oidc/src/client => data-visualization/src}/locale/ru-RU.ts (100%) rename packages/plugins/data-visualization/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/data-visualization/src/{client => }/locale/zh-CN.ts (100%) create mode 100644 packages/plugins/duplicator/src/locale/zh-CN.ts create mode 100644 packages/plugins/error-handler/src/locale/en_US.ts create mode 100644 packages/plugins/error-handler/src/locale/es-ES.ts create mode 100644 packages/plugins/error-handler/src/locale/fr_FR.ts create mode 100644 packages/plugins/error-handler/src/locale/ja_JP.ts create mode 100644 packages/plugins/error-handler/src/locale/pt-BR.ts create mode 100644 packages/plugins/error-handler/src/locale/zh_CN.ts rename packages/plugins/file-manager/src/{client => }/locale/en-US.ts (78%) rename packages/plugins/file-manager/src/{client => }/locale/fr-FR.ts (63%) rename packages/plugins/file-manager/src/{client => }/locale/ja-JP.ts (100%) rename packages/plugins/file-manager/src/{client => }/locale/ru-RU.ts (100%) rename packages/plugins/file-manager/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/file-manager/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/formula-field/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/fr-FR.ts (65%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/ja-JP.ts (100%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/graph-collection-manager/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/import/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/import/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/import/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/import/src/{client => }/locale/zh-CN.ts (73%) rename packages/plugins/localization-management/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/map/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/map/src/{client => }/locale/fr-FR.ts (100%) rename packages/plugins/map/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/map/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/mobile-client/src/{client => }/locale/en-US.ts (54%) rename packages/plugins/mobile-client/src/{client => }/locale/fr-FR.ts (54%) rename packages/plugins/mobile-client/src/{client => }/locale/zh-CN.ts (100%) delete mode 100644 packages/plugins/multi-app-manager/src/client/locale/es-ES.ts create mode 100644 packages/plugins/multi-app-manager/src/locale/es-ES.ts rename packages/plugins/multi-app-manager/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/multi-app-manager/src/{client => }/locale/zh-CN.ts (100%) delete mode 100644 packages/plugins/multi-app-share-collection/src/client/locale/es-ES.ts create mode 100644 packages/plugins/multi-app-share-collection/src/locale/es-ES.ts rename packages/plugins/multi-app-share-collection/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/multi-app-share-collection/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/fr-FR.ts (100%) rename packages/plugins/{saml/src/client => oidc/src}/locale/ja-JP.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/{saml/src/client => oidc/src}/locale/ru-RU.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/oidc/src/{client => }/locale/zh-CN.ts (100%) delete mode 100644 packages/plugins/saml/src/client/locale/fr-FR.ts rename packages/plugins/saml/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/saml/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/{data-visualization/src/client => saml/src}/locale/fr-FR.ts (100%) rename packages/plugins/{snapshot-field/src/client => saml/src}/locale/ja-JP.ts (100%) rename packages/plugins/saml/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/{snapshot-field/src/client => saml/src}/locale/ru-RU.ts (100%) rename packages/plugins/saml/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/saml/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/sequence-field/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/sequence-field/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/sequence-field/src/{client => }/locale/fr-FR.ts (100%) rename packages/plugins/sequence-field/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/sequence-field/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/sms-auth/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/snapshot-field/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/snapshot-field/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/snapshot-field/src/{client => }/locale/fr-FR.ts (57%) rename packages/plugins/snapshot-field/src/{client/locale/tr-TR.ts => locale/ja-JP.ts} (100%) rename packages/plugins/snapshot-field/src/{client => }/locale/pt-BR.ts (100%) create mode 100644 packages/plugins/snapshot-field/src/locale/ru-RU.ts create mode 100644 packages/plugins/snapshot-field/src/locale/tr-TR.ts rename packages/plugins/snapshot-field/src/{client => }/locale/zh-CN.ts (100%) rename packages/plugins/theme-editor/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/theme-editor/src/{client => }/locale/fr-FR.ts (92%) rename packages/plugins/theme-editor/src/{client => }/locale/zh-CN.ts (100%) create mode 100644 packages/plugins/users/src/locale/en-US.ts create mode 100644 packages/plugins/users/src/locale/es-ES.ts create mode 100644 packages/plugins/users/src/locale/fr-FR.ts create mode 100644 packages/plugins/users/src/locale/ja-JP.ts create mode 100644 packages/plugins/users/src/locale/pt-BR.ts create mode 100644 packages/plugins/users/src/locale/zh-CN.ts rename packages/plugins/verification/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/verification/src/{client => }/locale/zh-CN.ts (54%) rename packages/plugins/workflow/src/{client => }/locale/en-US.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/es-ES.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/fr-FR.ts (73%) rename packages/plugins/workflow/src/{client => }/locale/ja-JP.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/pt-BR.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/ru-RU.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/tr-TR.ts (100%) rename packages/plugins/workflow/src/{client => }/locale/zh-CN.ts (100%) diff --git a/packages/core/actions/package.json b/packages/core/actions/package.json index d1f7c4a338..ea4e2f7e10 100644 --- a/packages/core/actions/package.json +++ b/packages/core/actions/package.json @@ -16,4 +16,4 @@ "directory": "packages/actions" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} +} \ No newline at end of file diff --git a/packages/core/resourcer/package.json b/packages/core/resourcer/package.json index 431df030ac..ee51d90a08 100644 --- a/packages/core/resourcer/package.json +++ b/packages/core/resourcer/package.json @@ -19,4 +19,4 @@ "directory": "packages/resourcer" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} +} \ No newline at end of file diff --git a/packages/core/server/package.json b/packages/core/server/package.json index 19347f6f45..7b851cd732 100644 --- a/packages/core/server/package.json +++ b/packages/core/server/package.json @@ -31,4 +31,4 @@ "@types/semver": "^7.3.9" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} +} \ No newline at end of file diff --git a/packages/core/server/src/application.ts b/packages/core/server/src/application.ts index 370e4d2bca..12e198fba1 100644 --- a/packages/core/server/src/application.ts +++ b/packages/core/server/src/application.ts @@ -18,6 +18,7 @@ import { createACL } from './acl'; import { AppManager } from './app-manager'; import { registerCli } from './commands'; import { createI18n, createResourcer, registerMiddlewares } from './helper'; +import { Locale } from './locale'; import { Plugin } from './plugin'; import { InstallOptions, PluginManager } from './plugin-manager'; @@ -167,6 +168,8 @@ export class Application exten protected _authManager: AuthManager; + protected _locales: Locale; + protected _version: ApplicationVersion; protected plugins = new Map(); @@ -230,6 +233,10 @@ export class Application exten return this._logger; } + get locales() { + return this._locales; + } + get name() { return this.options.name || 'main'; } @@ -298,6 +305,8 @@ export class Application exten this._resourcer.use(this._acl.middleware(), { tag: 'acl', after: ['auth'] }); } + this._locales = new Locale(this); + registerMiddlewares(this, options); if (options.registerActions !== false) { diff --git a/packages/plugins/client/src/server/antd.ts b/packages/core/server/src/locale/antd.ts similarity index 100% rename from packages/plugins/client/src/server/antd.ts rename to packages/core/server/src/locale/antd.ts diff --git a/packages/plugins/client/src/server/cron.ts b/packages/core/server/src/locale/cron.ts similarity index 100% rename from packages/plugins/client/src/server/cron.ts rename to packages/core/server/src/locale/cron.ts diff --git a/packages/plugins/client/src/server/cronstrue.ts b/packages/core/server/src/locale/cronstrue.ts similarity index 100% rename from packages/plugins/client/src/server/cronstrue.ts rename to packages/core/server/src/locale/cronstrue.ts diff --git a/packages/core/server/src/locale/index.ts b/packages/core/server/src/locale/index.ts new file mode 100644 index 0000000000..5501675d52 --- /dev/null +++ b/packages/core/server/src/locale/index.ts @@ -0,0 +1 @@ +export * from './locale'; diff --git a/packages/core/server/src/locale/locale.ts b/packages/core/server/src/locale/locale.ts new file mode 100644 index 0000000000..83455613dd --- /dev/null +++ b/packages/core/server/src/locale/locale.ts @@ -0,0 +1,68 @@ +import { Cache, createCache } from '@nocobase/cache'; +import { lodash } from '@nocobase/utils'; +import Application from '../application'; +import { PluginManager } from '../plugin-manager'; +import { getAntdLocale } from './antd'; +import { getCronstrueLocale } from './cronstrue'; +import { getResource } from './resource'; + +export class Locale { + app: Application; + cache: Cache; + defaultLang = 'en-US'; + + constructor(app: Application) { + this.app = app; + this.cache = createCache(); + + this.app.on('afterLoad', () => this.load()); + } + + load() { + this.getCacheResources(this.defaultLang); + } + + async get(lang: string) { + return { + antd: await this.wrapCache(`locale:antd:${lang}`, () => getAntdLocale(lang)), + cronstrue: await this.wrapCache(`locale:cronstrue:${lang}`, () => getCronstrueLocale(lang)), + resources: await this.getCacheResources(lang), + }; + } + + async wrapCache(key: string, fn: () => any) { + const result = await this.cache.get(key); + if (result) { + return result; + } + const value = await fn(); + if (lodash.isEmpty(value)) { + return value; + } + await this.cache.set(key, value); + return value; + } + + async getCacheResources(lang: string) { + return await this.wrapCache(`locale:resources:${lang}`, () => this.getResources(lang)); + } + + getResources(lang: string) { + const resources = {}; + const plugins = this.app.pm.getPlugins(); + for (const name of plugins.keys()) { + try { + const packageName = PluginManager.getPackageName(name); + const res = getResource(packageName, lang); + if (res) { + resources[name] = { ...res }; + } + } catch (err) {} + } + const res = getResource('@nocobase/client', lang); + if (res) { + resources['client'] = { ...(resources['client'] || {}), ...res }; + } + return resources; + } +} diff --git a/packages/core/server/src/locale/resource.ts b/packages/core/server/src/locale/resource.ts new file mode 100644 index 0000000000..7a467c9767 --- /dev/null +++ b/packages/core/server/src/locale/resource.ts @@ -0,0 +1,27 @@ +const arr2obj = (items: any[]) => { + const obj = {}; + for (const item of items) { + Object.assign(obj, item); + } + return obj; +}; + +export const getResource = (packageName: string, lang: string) => { + const resources = []; + const prefixes = ['src', 'lib']; + for (const prefix of prefixes) { + try { + const file = `${packageName}/${prefix}/locale/${lang}`; + require.resolve(file); + const resource = require(file).default; + resources.push(resource); + } catch (error) {} + if (resources.length) { + break; + } + } + if (resources.length === 0 && lang.replace('-', '_') !== lang) { + return getResource(packageName, lang.replace('-', '_')); + } + return arr2obj(resources); +}; diff --git a/packages/plugins/api-keys/src/client/locale/en-US.ts b/packages/plugins/api-keys/src/locale/en-US.ts similarity index 100% rename from packages/plugins/api-keys/src/client/locale/en-US.ts rename to packages/plugins/api-keys/src/locale/en-US.ts diff --git a/packages/plugins/api-keys/src/client/locale/fr-FR.ts b/packages/plugins/api-keys/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/api-keys/src/client/locale/fr-FR.ts rename to packages/plugins/api-keys/src/locale/fr-FR.ts diff --git a/packages/plugins/api-keys/src/client/locale/zh-CN.ts b/packages/plugins/api-keys/src/locale/zh-CN.ts similarity index 94% rename from packages/plugins/api-keys/src/client/locale/zh-CN.ts rename to packages/plugins/api-keys/src/locale/zh-CN.ts index fc6b2c7c79..bab920eb3d 100644 --- a/packages/plugins/api-keys/src/client/locale/zh-CN.ts +++ b/packages/plugins/api-keys/src/locale/zh-CN.ts @@ -16,6 +16,7 @@ const locale = { '7 Days': '7 天', '30 Days': '30 天', '90 Days': '90 天', + 'Role not found': '角色不存在', }; export default locale; diff --git a/packages/plugins/audit-logs/src/client/locale/en-US.ts b/packages/plugins/audit-logs/src/locale/en-US.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/en-US.ts rename to packages/plugins/audit-logs/src/locale/en-US.ts diff --git a/packages/plugins/audit-logs/src/client/locale/es-ES.ts b/packages/plugins/audit-logs/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/es-ES.ts rename to packages/plugins/audit-logs/src/locale/es-ES.ts diff --git a/packages/plugins/audit-logs/src/client/locale/fr-FR.ts b/packages/plugins/audit-logs/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/fr-FR.ts rename to packages/plugins/audit-logs/src/locale/fr-FR.ts diff --git a/packages/plugins/audit-logs/src/client/locale/ja-JP.ts b/packages/plugins/audit-logs/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/ja-JP.ts rename to packages/plugins/audit-logs/src/locale/ja-JP.ts diff --git a/packages/plugins/audit-logs/src/client/locale/pt-BR.ts b/packages/plugins/audit-logs/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/pt-BR.ts rename to packages/plugins/audit-logs/src/locale/pt-BR.ts diff --git a/packages/plugins/audit-logs/src/client/locale/ru-RU.ts b/packages/plugins/audit-logs/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/ru-RU.ts rename to packages/plugins/audit-logs/src/locale/ru-RU.ts diff --git a/packages/plugins/audit-logs/src/client/locale/tr-TR.ts b/packages/plugins/audit-logs/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/tr-TR.ts rename to packages/plugins/audit-logs/src/locale/tr-TR.ts diff --git a/packages/plugins/audit-logs/src/client/locale/zh-CN.ts b/packages/plugins/audit-logs/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/audit-logs/src/client/locale/zh-CN.ts rename to packages/plugins/audit-logs/src/locale/zh-CN.ts diff --git a/packages/plugins/auth/src/client/locale/zh-CN.ts b/packages/plugins/auth/src/client/locale/zh-CN.ts deleted file mode 100644 index cf10b9eeaf..0000000000 --- a/packages/plugins/auth/src/client/locale/zh-CN.ts +++ /dev/null @@ -1,10 +0,0 @@ -const locale = { - 'Auth Type': '认证类型', - Authenticators: '认证器', - Authentication: '用户认证', - 'Sign in via email': '邮箱登录', - 'Not allowed to sign up': '禁止注册', - 'Allow to sign up': '允许注册', -}; - -export default locale; diff --git a/packages/plugins/auth/src/locale/zh-CN.ts b/packages/plugins/auth/src/locale/zh-CN.ts new file mode 100644 index 0000000000..aa7800971f --- /dev/null +++ b/packages/plugins/auth/src/locale/zh-CN.ts @@ -0,0 +1,17 @@ +const locale = { + 'Auth Type': '认证类型', + Authenticators: '认证器', + Authentication: '用户认证', + 'Sign in via email': '邮箱登录', + 'Not allowed to sign up': '禁止注册', + 'Allow to sign up': '允许注册', + 'The email is incorrect, please re-enter': '邮箱有误,请重新输入', + 'Please fill in your email address': '请填写邮箱', + 'The password is incorrect, please re-enter': '密码有误,请重新输入', + 'Not a valid cellphone number, please re-enter': '不是有效的手机号,请重新输入', + 'The phone number has been registered, please login directly': '手机号已注册,请直接登录', + 'The phone number is not registered, please register first': '手机号未注册,请先注册', + 'Please keep and enable at least one authenticator': '请至少保留并启用一个认证器', +}; + +export default locale; diff --git a/packages/plugins/charts/src/client/locale/fr-FR.ts b/packages/plugins/charts/src/client/locale/fr-FR.ts deleted file mode 100644 index 9c4d4711a3..0000000000 --- a/packages/plugins/charts/src/client/locale/fr-FR.ts +++ /dev/null @@ -1,23 +0,0 @@ -export default { - Edit: 'Modifier', - Delete: 'Supprimer', - Cancel: 'Annuler', - Submit: 'Envoyer', - Actions: 'Actions', - Title: 'Titre', - Enable: 'Activer', - 'SAML manager': 'SAML manager', - 'SAML Providers': 'SAML Providers', - 'Redirect url': 'URL de redirection', - 'SP entity id': 'SP entity id', - 'Add provider': 'Ajouter', - 'Edit provider': 'Modifier', - 'Client id': 'Client id', - 'Entity id or issuer': 'Entity id or issuer', - 'Login Url': 'URL de connexion', - 'Public cert': 'Public cert', - 'Delete provider': 'Supprimer', - 'Are you sure you want to delete it?': 'Êtes-vous sûr de vouloir le supprimer ?', - 'Sign in button name, which will be displayed on the sign in page': - 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', -}; diff --git a/packages/plugins/charts/src/client/locale/en-US.ts b/packages/plugins/charts/src/locale/en-US.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/en-US.ts rename to packages/plugins/charts/src/locale/en-US.ts diff --git a/packages/plugins/charts/src/client/locale/es-ES.ts b/packages/plugins/charts/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/es-ES.ts rename to packages/plugins/charts/src/locale/es-ES.ts diff --git a/packages/plugins/charts/src/client/locale/ja-JP.ts b/packages/plugins/charts/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/ja-JP.ts rename to packages/plugins/charts/src/locale/fr-FR.ts diff --git a/packages/plugins/data-visualization/src/client/locale/ja-JP.ts b/packages/plugins/charts/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/ja-JP.ts rename to packages/plugins/charts/src/locale/ja-JP.ts diff --git a/packages/plugins/charts/src/client/locale/pt-BR.ts b/packages/plugins/charts/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/pt-BR.ts rename to packages/plugins/charts/src/locale/pt-BR.ts diff --git a/packages/plugins/charts/src/client/locale/ru-RU.ts b/packages/plugins/charts/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/ru-RU.ts rename to packages/plugins/charts/src/locale/ru-RU.ts diff --git a/packages/plugins/charts/src/client/locale/tr-TR.ts b/packages/plugins/charts/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/tr-TR.ts rename to packages/plugins/charts/src/locale/tr-TR.ts diff --git a/packages/plugins/charts/src/client/locale/zh-CN.ts b/packages/plugins/charts/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/charts/src/client/locale/zh-CN.ts rename to packages/plugins/charts/src/locale/zh-CN.ts diff --git a/packages/plugins/client/src/index.ts b/packages/plugins/client/src/index.ts index ce9f71d9ff..7ddad58145 100644 --- a/packages/plugins/client/src/index.ts +++ b/packages/plugins/client/src/index.ts @@ -1 +1 @@ -export { default, getResourceLocale } from './server'; +export { default } from './server'; diff --git a/packages/plugins/client/src/server/index.ts b/packages/plugins/client/src/server/index.ts index 1d7c99f426..7ddad58145 100644 --- a/packages/plugins/client/src/server/index.ts +++ b/packages/plugins/client/src/server/index.ts @@ -1,2 +1 @@ -export { getResourceLocale } from './resource'; export { default } from './server'; diff --git a/packages/plugins/client/src/server/moment-locale.ts b/packages/plugins/client/src/server/moment-locale.ts deleted file mode 100644 index 932259a1d9..0000000000 --- a/packages/plugins/client/src/server/moment-locale.ts +++ /dev/null @@ -1,141 +0,0 @@ -const locales = { - af: 'af', - 'ar-dz': 'ar-dz', - 'ar-kw': 'ar-kw', - 'ar-ly': 'ar-ly', - 'ar-ma': 'ar-ma', - 'ar-sa': 'ar-sa', - 'ar-tn': 'ar-tn', - ar: 'ar', - az: 'az', - be: 'be', - bg: 'bg', - bm: 'bm', - 'bn-bd': 'bn-bd', - bn: 'bn', - bo: 'bo', - br: 'br', - bs: 'bs', - ca: 'ca', - cs: 'cs', - cv: 'cv', - cy: 'cy', - da: 'da', - 'de-at': 'de-at', - 'de-ch': 'de-ch', - de: 'de', - dv: 'dv', - el: 'el', - 'en-au': 'en-au', - 'en-ca': 'en-ca', - 'en-gb': 'en-gb', - 'en-ie': 'en-ie', - 'en-il': 'en-il', - 'en-in': 'en-in', - 'en-nz': 'en-nz', - 'en-sg': 'en-sg', - eo: 'eo', - 'es-do': 'es-do', - 'es-mx': 'es-mx', - 'es-us': 'es-us', - es: 'es', - et: 'et', - eu: 'eu', - fa: 'fa', - fi: 'fi', - fil: 'fil', - fo: 'fo', - 'fr-ca': 'fr-ca', - 'fr-ch': 'fr-ch', - fr: 'fr', - fy: 'fy', - ga: 'ga', - gd: 'gd', - gl: 'gl', - 'gom-deva': 'gom-deva', - 'gom-latn': 'gom-latn', - gu: 'gu', - he: 'he', - hi: 'hi', - hr: 'hr', - hu: 'hu', - 'hy-am': 'hy-am', - id: 'id', - is: 'is', - 'it-ch': 'it-ch', - it: 'it', - 'ja-JP': 'ja', - jv: 'jv', - ka: 'ka', - kk: 'kk', - km: 'km', - kn: 'kn', - ko: 'ko', - ku: 'ku', - ky: 'ky', - lb: 'lb', - lo: 'lo', - lt: 'lt', - lv: 'lv', - me: 'me', - mi: 'mi', - mk: 'mk', - ml: 'ml', - mn: 'mn', - mr: 'mr', - 'ms-my': 'ms-my', - ms: 'ms', - mt: 'mt', - my: 'my', - nb: 'nb', - ne: 'ne', - 'nl-be': 'nl-be', - nl: 'nl', - nn: 'nn', - 'oc-lnc': 'oc-lnc', - 'pa-in': 'pa-in', - pl: 'pl', - 'pt-br': 'pt-br', - pt: 'pt', - ro: 'ro', - 'ru-RU': 'ru', - sd: 'sd', - se: 'se', - si: 'si', - sk: 'sk', - sl: 'sl', - sq: 'sq', - 'sr-cyrl': 'sr-cyrl', - sr: 'sr', - ss: 'ss', - sv: 'sv', - sw: 'sw', - ta: 'ta', - te: 'te', - tet: 'tet', - tg: 'tg', - 'th-TH': 'th', - tk: 'tk', - 'tl-ph': 'tl-ph', - tlh: 'tlh', - 'tr-TR': 'tr', - tzl: 'tzl', - 'tzm-latn': 'tzm-latn', - tzm: 'tzm', - 'ug-cn': 'ug-cn', - uk: 'uk', - ur: 'ur', - 'uz-latn': 'uz-latn', - uz: 'uz', - vi: 'vi', - 'x-pseudo': 'x-pseudo', - yo: 'yo', - 'zh-CN': 'zh-cn', - 'zh-hk': 'zh-hk', - 'zh-mo': 'zh-mo', - 'zh-TW': 'zh-tw', -}; - -export const getMomentLocale = (lang: string) => { - return locales[lang] || 'en'; -}; diff --git a/packages/plugins/client/src/server/resource.ts b/packages/plugins/client/src/server/resource.ts deleted file mode 100644 index 354f5bc21f..0000000000 --- a/packages/plugins/client/src/server/resource.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { PluginManager } from '@nocobase/server'; - -const arr2obj = (items: any[]) => { - const obj = {}; - for (const item of items) { - Object.assign(obj, item); - } - return obj; -}; - -const getResource = (packageName: string, lang: string) => { - const resources = []; - const prefixes = ['src', 'lib']; - const localeKeys = ['locale', 'client/locale', 'server/locale']; - for (const prefix of prefixes) { - for (const localeKey of localeKeys) { - try { - const file = `${packageName}/${prefix}/${localeKey}/${lang}`; - require.resolve(file); - const resource = require(file).default; - resources.push(resource); - } catch (error) {} - } - if (resources.length) { - break; - } - } - if (resources.length === 0 && lang.replace('-', '_') !== lang) { - return getResource(packageName, lang.replace('-', '_')); - } - return arr2obj(resources); -}; - -export const getResourceLocale = async (lang: string, db: any) => { - const resources = {}; - const res = getResource('@nocobase/client', lang); - const defaults = getResource('@nocobase/client', 'zh-CN'); - for (const key in defaults) { - if (Object.prototype.hasOwnProperty.call(defaults, key)) { - defaults[key] = key; - } - } - if (res) { - resources['client'] = { ...defaults, ...res }; - } else { - resources['client'] = defaults; - } - const plugins = await db.getRepository('applicationPlugins').find({ - filter: { - 'name.$ne': 'client', - }, - }); - for (const plugin of plugins) { - const packageName = PluginManager.getPackageName(plugin.get('name')); - const res = getResource(packageName, lang); - const defaults = getResource(packageName, 'zh-CN'); - for (const key in defaults) { - if (Object.prototype.hasOwnProperty.call(defaults, key)) { - defaults[key] = key; - } - } - if (res) { - resources[plugin.get('name')] = { ...defaults, ...res }; - } else { - resources['client'] = defaults; - } - } - return resources; -}; diff --git a/packages/plugins/client/src/server/server.ts b/packages/plugins/client/src/server/server.ts index 6838cc6e36..c7994714cf 100644 --- a/packages/plugins/client/src/server/server.ts +++ b/packages/plugins/client/src/server/server.ts @@ -1,14 +1,8 @@ import { Plugin, PluginManager } from '@nocobase/server'; -import { lodash } from '@nocobase/utils'; import fs from 'fs'; import send from 'koa-send'; import serve from 'koa-static'; import { isAbsolute, resolve } from 'path'; -import { getAntdLocale } from './antd'; -import { getCronLocale } from './cron'; -import { getCronstrueLocale } from './cronstrue'; -import { getMomentLocale } from './moment-locale'; -import { getResourceLocale } from './resource'; async function getReadMe(name: string, locale: string) { const packageName = PluginManager.getPackageName(name); @@ -128,7 +122,6 @@ export class ClientPlugin extends Plugin { actions: ['app:reboot', 'app:clearCache'], }); const dialect = this.app.db.sequelize.getDialect(); - const locales = require('./locale').default; const restartMark = resolve(process.cwd(), 'storage', 'restart'); this.app.on('beforeStart', async () => { if (fs.existsSync(restartMark)) { @@ -159,25 +152,10 @@ export class ClientPlugin extends Plugin { }, async getLang(ctx, next) { const lang = await getLang(ctx); - if (lodash.isEmpty(locales[lang])) { - locales[lang] = {}; - } - if (lodash.isEmpty(locales[lang].resources)) { - locales[lang].resources = await getResourceLocale(lang, ctx.db); - } - if (lodash.isEmpty(locales[lang].antd)) { - locales[lang].antd = getAntdLocale(lang); - } - if (lodash.isEmpty(locales[lang].cronstrue)) { - locales[lang].cronstrue = getCronstrueLocale(lang); - } - if (lodash.isEmpty(locales[lang].cron)) { - locales[lang].cron = getCronLocale(lang); - } + const resources = await ctx.app.locales.get(lang); ctx.body = { lang, - moment: getMomentLocale(lang), - ...locales[lang], + ...resources, }; await next(); }, diff --git a/packages/plugins/data-visualization/src/client/locale/en-US.ts b/packages/plugins/data-visualization/src/locale/en-US.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/en-US.ts rename to packages/plugins/data-visualization/src/locale/en-US.ts diff --git a/packages/plugins/data-visualization/src/client/locale/ru-RU.ts b/packages/plugins/data-visualization/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/ru-RU.ts rename to packages/plugins/data-visualization/src/locale/fr-FR.ts diff --git a/packages/plugins/oidc/src/client/locale/ja-JP.ts b/packages/plugins/data-visualization/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/ja-JP.ts rename to packages/plugins/data-visualization/src/locale/ja-JP.ts diff --git a/packages/plugins/data-visualization/src/client/locale/pt-BR.ts b/packages/plugins/data-visualization/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/pt-BR.ts rename to packages/plugins/data-visualization/src/locale/pt-BR.ts diff --git a/packages/plugins/oidc/src/client/locale/ru-RU.ts b/packages/plugins/data-visualization/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/ru-RU.ts rename to packages/plugins/data-visualization/src/locale/ru-RU.ts diff --git a/packages/plugins/data-visualization/src/client/locale/tr-TR.ts b/packages/plugins/data-visualization/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/tr-TR.ts rename to packages/plugins/data-visualization/src/locale/tr-TR.ts diff --git a/packages/plugins/data-visualization/src/client/locale/zh-CN.ts b/packages/plugins/data-visualization/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/zh-CN.ts rename to packages/plugins/data-visualization/src/locale/zh-CN.ts diff --git a/packages/plugins/duplicator/src/locale/zh-CN.ts b/packages/plugins/duplicator/src/locale/zh-CN.ts new file mode 100644 index 0000000000..0736493f78 --- /dev/null +++ b/packages/plugins/duplicator/src/locale/zh-CN.ts @@ -0,0 +1,8 @@ +export default { + 'Select Import data': '请选择导入数据', + 'Select Import Plugins': '请选择导入插件', + 'Select User Collections': '请选择用户数据', + 'Basic Data': '基础数据', + 'Optional Data': '可选数据', + 'User Data': '用户数据', +}; diff --git a/packages/plugins/error-handler/src/locale/en_US.ts b/packages/plugins/error-handler/src/locale/en_US.ts new file mode 100644 index 0000000000..b248d9b0cd --- /dev/null +++ b/packages/plugins/error-handler/src/locale/en_US.ts @@ -0,0 +1,6 @@ +export default { + 'unique violation': '{{field}} must be unique', + 'notNull violation': 'notNull violation', + 'Validation error': '{{field}} validation error', + 'notNull Violation': '{{field}} cannot be null', +}; diff --git a/packages/plugins/error-handler/src/locale/es-ES.ts b/packages/plugins/error-handler/src/locale/es-ES.ts new file mode 100644 index 0000000000..81ac5606ca --- /dev/null +++ b/packages/plugins/error-handler/src/locale/es-ES.ts @@ -0,0 +1,6 @@ +export default { + "unique violation": "{{field}} debe ser único", + "notNull violation": "notNull violación", + "Validation error": "{{field}} error de validación", + "notNull Violation": "{{field}} no puede ser null" +}; diff --git a/packages/plugins/error-handler/src/locale/fr_FR.ts b/packages/plugins/error-handler/src/locale/fr_FR.ts new file mode 100644 index 0000000000..10463d83d9 --- /dev/null +++ b/packages/plugins/error-handler/src/locale/fr_FR.ts @@ -0,0 +1,6 @@ +export default { + 'unique violation': '{{field}} doit être unique', + 'notNull violation': 'Violation de contrainte notNull', + 'Validation error': 'Erreur de validation de {{field}}', + 'notNull Violation': '{{field}} ne peut pas être null', +}; diff --git a/packages/plugins/error-handler/src/locale/ja_JP.ts b/packages/plugins/error-handler/src/locale/ja_JP.ts new file mode 100644 index 0000000000..ffd51b9844 --- /dev/null +++ b/packages/plugins/error-handler/src/locale/ja_JP.ts @@ -0,0 +1,4 @@ +export default { + 'unique violation': '{{field}} は一意でなくてはなりません', + 'notNull Violation': '{{field}} はNullにできません', +}; diff --git a/packages/plugins/error-handler/src/locale/pt-BR.ts b/packages/plugins/error-handler/src/locale/pt-BR.ts new file mode 100644 index 0000000000..6ee8e7caab --- /dev/null +++ b/packages/plugins/error-handler/src/locale/pt-BR.ts @@ -0,0 +1,6 @@ +export default { + 'unique violation': '{{field}} deve ser único', + 'notNull violation': 'violação de não nulo', + 'Validation error': 'erro de validação de {{field}}', + 'notNull Violation': '{{field}} não pode ser nulo', +}; diff --git a/packages/plugins/error-handler/src/locale/zh_CN.ts b/packages/plugins/error-handler/src/locale/zh_CN.ts new file mode 100644 index 0000000000..1849dd4dc4 --- /dev/null +++ b/packages/plugins/error-handler/src/locale/zh_CN.ts @@ -0,0 +1,5 @@ +export default { + 'unique violation': '{{field}} 字段值是唯一的', + 'notNull violation': '{{field}} 字段不能为空', + 'Validation error': '{{field}} 字段规则验证失败', +}; diff --git a/packages/plugins/file-manager/src/client/locale/en-US.ts b/packages/plugins/file-manager/src/locale/en-US.ts similarity index 78% rename from packages/plugins/file-manager/src/client/locale/en-US.ts rename to packages/plugins/file-manager/src/locale/en-US.ts index 9f3414989c..553d8c7cc0 100644 --- a/packages/plugins/file-manager/src/client/locale/en-US.ts +++ b/packages/plugins/file-manager/src/locale/en-US.ts @@ -1,21 +1,21 @@ export default { 'File manager': 'File manager', - 'Attachment': 'Attachment', + Attachment: 'Attachment', 'MIME type': 'MIME type', 'Storage display name': 'Storage display name', 'Storage name': 'Storage name', 'Storage type': 'Storage type', 'Default storage': 'Default storage', 'Storage base URL': 'Storage base URL', - 'Destination': 'Destination', + Destination: 'Destination', 'Use the built-in static file server': 'Use the built-in static file server', 'Local storage': 'Local storage', 'Aliyun OSS': 'Aliyun OSS', 'Tencent COS': 'Tencent COS', 'Amazon S3': 'Amazon S3', - 'Region': 'Region', - 'Bucket': 'Bucket', - 'Path': 'Path', - 'Filename': 'Filename', + Region: 'Region', + Bucket: 'Bucket', + Path: 'Path', + Filename: 'Filename', 'Will be used for API': 'Will be used for API', }; diff --git a/packages/plugins/file-manager/src/client/locale/fr-FR.ts b/packages/plugins/file-manager/src/locale/fr-FR.ts similarity index 63% rename from packages/plugins/file-manager/src/client/locale/fr-FR.ts rename to packages/plugins/file-manager/src/locale/fr-FR.ts index dffb6879e5..6ef4d51d54 100644 --- a/packages/plugins/file-manager/src/client/locale/fr-FR.ts +++ b/packages/plugins/file-manager/src/locale/fr-FR.ts @@ -1,21 +1,21 @@ export default { 'File manager': 'Gestionnaire de fichiers', - 'Attachment': 'Pièce jointe', + Attachment: 'Pièce jointe', 'MIME type': 'Type MIME', - 'Storage display name': 'Nom d\'affichage du stockage', + 'Storage display name': "Nom d'affichage du stockage", 'Storage name': 'Nom du stockage', 'Storage type': 'Type de stockage', 'Default storage': 'Stockage par défaut', 'Storage base URL': 'URL de base du stockage', - 'Destination': 'Destination', + Destination: 'Destination', 'Use the built-in static file server': 'Utiliser le serveur de fichiers statique intégré', 'Local storage': 'Stockage local', 'Aliyun OSS': 'Aliyun OSS', 'Tencent COS': 'Tencent COS', 'Amazon S3': 'Amazon S3', - 'Region': 'Region', - 'Bucket': 'Bucket', - 'Path': 'Chemin', - 'Filename': 'Nom de fichier', - 'Will be used for API': 'Sera utilisé pour l\'API', + Region: 'Region', + Bucket: 'Bucket', + Path: 'Chemin', + Filename: 'Nom de fichier', + 'Will be used for API': "Sera utilisé pour l'API", }; diff --git a/packages/plugins/file-manager/src/client/locale/ja-JP.ts b/packages/plugins/file-manager/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/file-manager/src/client/locale/ja-JP.ts rename to packages/plugins/file-manager/src/locale/ja-JP.ts diff --git a/packages/plugins/file-manager/src/client/locale/ru-RU.ts b/packages/plugins/file-manager/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/file-manager/src/client/locale/ru-RU.ts rename to packages/plugins/file-manager/src/locale/ru-RU.ts diff --git a/packages/plugins/file-manager/src/client/locale/tr-TR.ts b/packages/plugins/file-manager/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/file-manager/src/client/locale/tr-TR.ts rename to packages/plugins/file-manager/src/locale/tr-TR.ts diff --git a/packages/plugins/file-manager/src/client/locale/zh-CN.ts b/packages/plugins/file-manager/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/file-manager/src/client/locale/zh-CN.ts rename to packages/plugins/file-manager/src/locale/zh-CN.ts diff --git a/packages/plugins/formula-field/src/client/locale/zh-CN.ts b/packages/plugins/formula-field/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/formula-field/src/client/locale/zh-CN.ts rename to packages/plugins/formula-field/src/locale/zh-CN.ts diff --git a/packages/plugins/graph-collection-manager/src/client/locale/index.ts b/packages/plugins/graph-collection-manager/src/client/locale/index.ts index 70f55564f7..086314849e 100644 --- a/packages/plugins/graph-collection-manager/src/client/locale/index.ts +++ b/packages/plugins/graph-collection-manager/src/client/locale/index.ts @@ -1,3 +1,3 @@ -export { default as enUS } from './en-US'; -export { default as zhCN } from './zh-CN'; -export { default as jaJP } from './ja-JP'; +// export { default as enUS } from './en-US'; +// export { default as zhCN } from './zh-CN'; +// export { default as jaJP } from './ja-JP'; diff --git a/packages/plugins/graph-collection-manager/src/client/locale/en-US.ts b/packages/plugins/graph-collection-manager/src/locale/en-US.ts similarity index 100% rename from packages/plugins/graph-collection-manager/src/client/locale/en-US.ts rename to packages/plugins/graph-collection-manager/src/locale/en-US.ts diff --git a/packages/plugins/graph-collection-manager/src/client/locale/es-ES.ts b/packages/plugins/graph-collection-manager/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/graph-collection-manager/src/client/locale/es-ES.ts rename to packages/plugins/graph-collection-manager/src/locale/es-ES.ts diff --git a/packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts b/packages/plugins/graph-collection-manager/src/locale/fr-FR.ts similarity index 65% rename from packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts rename to packages/plugins/graph-collection-manager/src/locale/fr-FR.ts index 583f1b0da2..d8cbcd487a 100644 --- a/packages/plugins/graph-collection-manager/src/client/locale/fr-FR.ts +++ b/packages/plugins/graph-collection-manager/src/locale/fr-FR.ts @@ -5,11 +5,11 @@ export default { 'Collection Search': 'Recherche de collection', 'Create Collection': 'Créer une collection', 'All Fields': 'Tous les champs', - 'Association Fields': 'Champs d\'association', + 'Association Fields': "Champs d'association", 'Choices fields': 'Champs de choix', 'All relationships': 'Toutes les relations', - 'Entity relationship only': 'Uniquement les relations d\'entité', - 'Inheritance relationship only': 'Uniquement les relations d\'héritage', + 'Entity relationship only': "Uniquement les relations d'entité", + 'Inheritance relationship only': "Uniquement les relations d'héritage", 'Graphical interface': 'Interface graphique', - 'Selection': 'Sélection', + Selection: 'Sélection', }; diff --git a/packages/plugins/graph-collection-manager/src/client/locale/ja-JP.ts b/packages/plugins/graph-collection-manager/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/graph-collection-manager/src/client/locale/ja-JP.ts rename to packages/plugins/graph-collection-manager/src/locale/ja-JP.ts diff --git a/packages/plugins/graph-collection-manager/src/client/locale/pt-BR.ts b/packages/plugins/graph-collection-manager/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/graph-collection-manager/src/client/locale/pt-BR.ts rename to packages/plugins/graph-collection-manager/src/locale/pt-BR.ts diff --git a/packages/plugins/graph-collection-manager/src/client/locale/zh-CN.ts b/packages/plugins/graph-collection-manager/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/graph-collection-manager/src/client/locale/zh-CN.ts rename to packages/plugins/graph-collection-manager/src/locale/zh-CN.ts diff --git a/packages/plugins/import/src/client/locale/index.ts b/packages/plugins/import/src/client/locale/index.ts index b0b1d48d5d..3a2a6d6ca7 100644 --- a/packages/plugins/import/src/client/locale/index.ts +++ b/packages/plugins/import/src/client/locale/index.ts @@ -1,2 +1,2 @@ -export { default as enUS } from './en-US'; -export { default as zhCN } from './zh-CN'; +// export { default as enUS } from './en-US'; +// export { default as zhCN } from './zh-CN'; diff --git a/packages/plugins/import/src/client/locale/en-US.ts b/packages/plugins/import/src/locale/en-US.ts similarity index 100% rename from packages/plugins/import/src/client/locale/en-US.ts rename to packages/plugins/import/src/locale/en-US.ts diff --git a/packages/plugins/import/src/client/locale/es-ES.ts b/packages/plugins/import/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/import/src/client/locale/es-ES.ts rename to packages/plugins/import/src/locale/es-ES.ts diff --git a/packages/plugins/import/src/client/locale/pt-BR.ts b/packages/plugins/import/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/import/src/client/locale/pt-BR.ts rename to packages/plugins/import/src/locale/pt-BR.ts diff --git a/packages/plugins/import/src/client/locale/zh-CN.ts b/packages/plugins/import/src/locale/zh-CN.ts similarity index 73% rename from packages/plugins/import/src/client/locale/zh-CN.ts rename to packages/plugins/import/src/locale/zh-CN.ts index 95ceeffd32..40830edc24 100644 --- a/packages/plugins/import/src/client/locale/zh-CN.ts +++ b/packages/plugins/import/src/locale/zh-CN.ts @@ -20,4 +20,11 @@ export default { Yes: '是', No: '否', 'Field {{fieldName}} does not exist': '字段 {{fieldName}} 不存在', + 'can not find value': '找不到对应值', + 'password is empty': '密码为空', + 'Incorrect time format': '时间格式不正确', + 'Incorrect date format': '日期格式不正确', + 'Incorrect email format': '邮箱格式不正确', + 'Illegal percentage format': '百分比格式有误', + 'Imported template does not match, please download again.': '导入模板不匹配,请检查导入文件标题行或重新下载导入模板', }; diff --git a/packages/plugins/localization-management/package.json b/packages/plugins/localization-management/package.json index eca2fdeb7b..042950efc9 100644 --- a/packages/plugins/localization-management/package.json +++ b/packages/plugins/localization-management/package.json @@ -18,4 +18,4 @@ "displayName.zh-CN": "多语言管理", "description": "Allows to manage localization resources of the application.", "description.zh-CN": "支持管理应用程序的多语言资源。" -} +} \ No newline at end of file diff --git a/packages/plugins/localization-management/src/client/locale/zh-CN.ts b/packages/plugins/localization-management/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/localization-management/src/client/locale/zh-CN.ts rename to packages/plugins/localization-management/src/locale/zh-CN.ts diff --git a/packages/plugins/localization-management/src/server/actions/localization.ts b/packages/plugins/localization-management/src/server/actions/localization.ts index 941cb98ee3..6b79018589 100644 --- a/packages/plugins/localization-management/src/server/actions/localization.ts +++ b/packages/plugins/localization-management/src/server/actions/localization.ts @@ -1,6 +1,5 @@ import { Context, Next } from '@nocobase/actions'; import { Database, Model, Op } from '@nocobase/database'; -import { getResourceLocale } from '@nocobase/plugin-client'; import { UiSchemaRepository } from '@nocobase/plugin-ui-schema-storage'; import LocalizationManagementPlugin from '../plugin'; import { getTextsFromDBRecord, getTextsFromUISchema } from '../utils'; @@ -10,8 +9,8 @@ const getResourcesInstance = async (ctx: Context) => { return plugin.resources; }; -export const getResources = async (locale: string, db: Database) => { - const resources = await getResourceLocale(locale, db); +export const getResources = async (ctx: Context) => { + const resources = await ctx.app.locales.getCacheResources(ctx.get('X-Locale') || 'en-US'); const client = resources['client']; // Remove duplicated keys Object.keys(resources).forEach((module) => { @@ -24,7 +23,7 @@ export const getResources = async (locale: string, db: Database) => { } }); }); - return resources; + return { ...resources }; }; export const getUISchemas = async (db: Database) => { @@ -174,7 +173,7 @@ const sync = async (ctx: Context, next: Next) => { let resources: { [module: string]: any } = { client: {} }; if (type.includes('local')) { - resources = await getResources(locale, ctx.db); + resources = await getResources(ctx); } if (type.includes('menu')) { const menuTexts = await getTextsFromMenu(ctx.db); diff --git a/packages/plugins/map/src/client/locale/en-US.ts b/packages/plugins/map/src/locale/en-US.ts similarity index 100% rename from packages/plugins/map/src/client/locale/en-US.ts rename to packages/plugins/map/src/locale/en-US.ts diff --git a/packages/plugins/map/src/client/locale/fr-FR.ts b/packages/plugins/map/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/map/src/client/locale/fr-FR.ts rename to packages/plugins/map/src/locale/fr-FR.ts diff --git a/packages/plugins/map/src/client/locale/pt-BR.ts b/packages/plugins/map/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/map/src/client/locale/pt-BR.ts rename to packages/plugins/map/src/locale/pt-BR.ts diff --git a/packages/plugins/map/src/client/locale/zh-CN.ts b/packages/plugins/map/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/map/src/client/locale/zh-CN.ts rename to packages/plugins/map/src/locale/zh-CN.ts diff --git a/packages/plugins/mobile-client/src/client/locale/en-US.ts b/packages/plugins/mobile-client/src/locale/en-US.ts similarity index 54% rename from packages/plugins/mobile-client/src/client/locale/en-US.ts rename to packages/plugins/mobile-client/src/locale/en-US.ts index 53b270f6fe..2d905d194d 100644 --- a/packages/plugins/mobile-client/src/client/locale/en-US.ts +++ b/packages/plugins/mobile-client/src/locale/en-US.ts @@ -1,5 +1,3 @@ -const locale = { - -} +const locale = {}; export default locale; diff --git a/packages/plugins/mobile-client/src/client/locale/fr-FR.ts b/packages/plugins/mobile-client/src/locale/fr-FR.ts similarity index 54% rename from packages/plugins/mobile-client/src/client/locale/fr-FR.ts rename to packages/plugins/mobile-client/src/locale/fr-FR.ts index 53b270f6fe..2d905d194d 100644 --- a/packages/plugins/mobile-client/src/client/locale/fr-FR.ts +++ b/packages/plugins/mobile-client/src/locale/fr-FR.ts @@ -1,5 +1,3 @@ -const locale = { - -} +const locale = {}; export default locale; diff --git a/packages/plugins/mobile-client/src/client/locale/zh-CN.ts b/packages/plugins/mobile-client/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/mobile-client/src/client/locale/zh-CN.ts rename to packages/plugins/mobile-client/src/locale/zh-CN.ts diff --git a/packages/plugins/multi-app-manager/src/client/locale/es-ES.ts b/packages/plugins/multi-app-manager/src/client/locale/es-ES.ts deleted file mode 100644 index 65de84ff05..0000000000 --- a/packages/plugins/multi-app-manager/src/client/locale/es-ES.ts +++ /dev/null @@ -1,9 +0,0 @@ -export default { - "Multi-app manager": "Gestor de aplicaciones múltiples", - "Applications": "Aplicaciones", - "App display name": "Mostrar nombre de aplicación", - "App ID": "ID de aplicación", - "Pin to menu": " Fijar al menú", - "Custom domain": "Dominio personalizado", - "Manage applications": "Gestionar aplicaciones" -}; diff --git a/packages/plugins/multi-app-manager/src/locale/es-ES.ts b/packages/plugins/multi-app-manager/src/locale/es-ES.ts new file mode 100644 index 0000000000..beacf9530b --- /dev/null +++ b/packages/plugins/multi-app-manager/src/locale/es-ES.ts @@ -0,0 +1,9 @@ +export default { + 'Multi-app manager': 'Gestor de aplicaciones múltiples', + Applications: 'Aplicaciones', + 'App display name': 'Mostrar nombre de aplicación', + 'App ID': 'ID de aplicación', + 'Pin to menu': ' Fijar al menú', + 'Custom domain': 'Dominio personalizado', + 'Manage applications': 'Gestionar aplicaciones', +}; diff --git a/packages/plugins/multi-app-manager/src/client/locale/pt-BR.ts b/packages/plugins/multi-app-manager/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/multi-app-manager/src/client/locale/pt-BR.ts rename to packages/plugins/multi-app-manager/src/locale/pt-BR.ts diff --git a/packages/plugins/multi-app-manager/src/client/locale/zh-CN.ts b/packages/plugins/multi-app-manager/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/multi-app-manager/src/client/locale/zh-CN.ts rename to packages/plugins/multi-app-manager/src/locale/zh-CN.ts diff --git a/packages/plugins/multi-app-share-collection/src/client/locale/es-ES.ts b/packages/plugins/multi-app-share-collection/src/client/locale/es-ES.ts deleted file mode 100644 index f28a6c027e..0000000000 --- a/packages/plugins/multi-app-share-collection/src/client/locale/es-ES.ts +++ /dev/null @@ -1,13 +0,0 @@ -export default { - "Share collections": "Tablas compartidas", - "Unshared collections": "Tablas no compartidas", - "Shared collections": "Tablas compartidas", - "All categories": "Todas las categorías", - "Enter name or title...": "Introducir nombre o título...", - "Are you sure to add the following collections?": "¿Está seguro de que desea añadir las siguientes tablas?", - "Are you sure to remove the following collections?": "¿Está seguro de que desea eliminar las siguientes tablas?", - "Collection display name": "Mostrar nombre de la tabla", - "Collection name": "Nombre de la tabla", - "Collection category": "Categoría de tabla" -}; - diff --git a/packages/plugins/multi-app-share-collection/src/locale/es-ES.ts b/packages/plugins/multi-app-share-collection/src/locale/es-ES.ts new file mode 100644 index 0000000000..eb7fb1e9c7 --- /dev/null +++ b/packages/plugins/multi-app-share-collection/src/locale/es-ES.ts @@ -0,0 +1,12 @@ +export default { + 'Share collections': 'Tablas compartidas', + 'Unshared collections': 'Tablas no compartidas', + 'Shared collections': 'Tablas compartidas', + 'All categories': 'Todas las categorías', + 'Enter name or title...': 'Introducir nombre o título...', + 'Are you sure to add the following collections?': '¿Está seguro de que desea añadir las siguientes tablas?', + 'Are you sure to remove the following collections?': '¿Está seguro de que desea eliminar las siguientes tablas?', + 'Collection display name': 'Mostrar nombre de la tabla', + 'Collection name': 'Nombre de la tabla', + 'Collection category': 'Categoría de tabla', +}; diff --git a/packages/plugins/multi-app-share-collection/src/client/locale/pt-BR.ts b/packages/plugins/multi-app-share-collection/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/multi-app-share-collection/src/client/locale/pt-BR.ts rename to packages/plugins/multi-app-share-collection/src/locale/pt-BR.ts diff --git a/packages/plugins/multi-app-share-collection/src/client/locale/zh-CN.ts b/packages/plugins/multi-app-share-collection/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/multi-app-share-collection/src/client/locale/zh-CN.ts rename to packages/plugins/multi-app-share-collection/src/locale/zh-CN.ts diff --git a/packages/plugins/oidc/src/client/locale/en-US.ts b/packages/plugins/oidc/src/locale/en-US.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/en-US.ts rename to packages/plugins/oidc/src/locale/en-US.ts diff --git a/packages/plugins/oidc/src/client/locale/es-ES.ts b/packages/plugins/oidc/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/es-ES.ts rename to packages/plugins/oidc/src/locale/es-ES.ts diff --git a/packages/plugins/oidc/src/client/locale/fr-FR.ts b/packages/plugins/oidc/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/fr-FR.ts rename to packages/plugins/oidc/src/locale/fr-FR.ts diff --git a/packages/plugins/saml/src/client/locale/ja-JP.ts b/packages/plugins/oidc/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/ja-JP.ts rename to packages/plugins/oidc/src/locale/ja-JP.ts diff --git a/packages/plugins/oidc/src/client/locale/pt-BR.ts b/packages/plugins/oidc/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/pt-BR.ts rename to packages/plugins/oidc/src/locale/pt-BR.ts diff --git a/packages/plugins/saml/src/client/locale/ru-RU.ts b/packages/plugins/oidc/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/ru-RU.ts rename to packages/plugins/oidc/src/locale/ru-RU.ts diff --git a/packages/plugins/oidc/src/client/locale/tr-TR.ts b/packages/plugins/oidc/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/tr-TR.ts rename to packages/plugins/oidc/src/locale/tr-TR.ts diff --git a/packages/plugins/oidc/src/client/locale/zh-CN.ts b/packages/plugins/oidc/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/oidc/src/client/locale/zh-CN.ts rename to packages/plugins/oidc/src/locale/zh-CN.ts diff --git a/packages/plugins/saml/src/client/locale/fr-FR.ts b/packages/plugins/saml/src/client/locale/fr-FR.ts deleted file mode 100644 index 5d10c14598..0000000000 --- a/packages/plugins/saml/src/client/locale/fr-FR.ts +++ /dev/null @@ -1,23 +0,0 @@ -export default { - Edit: 'Modifier', - Delete: 'Supprimer', - Cancel: 'Annuler', - Submit: 'Envoyer', - Actions: 'Actions', - Title: 'Titre', - Enable: 'Activer', - 'SAML manager': 'SAML manager', - 'SAML Providers': 'SAML Providers', - 'Redirect url': 'Url de redirection', - 'SP entity id': 'SP entity id', - 'Add provider': 'Ajouter', - 'Edit provider': 'Modifier', - 'Client id': 'Client id', - 'Entity id or issuer': 'Entity id or issuer', - 'Login Url': 'Url de connexion', - 'Public cert': 'Public cert', - 'Delete provider': 'Supprimer', - 'Are you sure you want to delete it?': 'Êtes-vous sûr de vouloir le supprimer ?', - 'Sign in button name, which will be displayed on the sign in page': - 'Nom du bouton de connexion, qui sera affiché sur la page de connexion', -}; diff --git a/packages/plugins/saml/src/client/locale/en-US.ts b/packages/plugins/saml/src/locale/en-US.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/en-US.ts rename to packages/plugins/saml/src/locale/en-US.ts diff --git a/packages/plugins/saml/src/client/locale/es-ES.ts b/packages/plugins/saml/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/es-ES.ts rename to packages/plugins/saml/src/locale/es-ES.ts diff --git a/packages/plugins/data-visualization/src/client/locale/fr-FR.ts b/packages/plugins/saml/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/data-visualization/src/client/locale/fr-FR.ts rename to packages/plugins/saml/src/locale/fr-FR.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/ja-JP.ts b/packages/plugins/saml/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/ja-JP.ts rename to packages/plugins/saml/src/locale/ja-JP.ts diff --git a/packages/plugins/saml/src/client/locale/pt-BR.ts b/packages/plugins/saml/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/pt-BR.ts rename to packages/plugins/saml/src/locale/pt-BR.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/ru-RU.ts b/packages/plugins/saml/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/ru-RU.ts rename to packages/plugins/saml/src/locale/ru-RU.ts diff --git a/packages/plugins/saml/src/client/locale/tr-TR.ts b/packages/plugins/saml/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/tr-TR.ts rename to packages/plugins/saml/src/locale/tr-TR.ts diff --git a/packages/plugins/saml/src/client/locale/zh-CN.ts b/packages/plugins/saml/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/saml/src/client/locale/zh-CN.ts rename to packages/plugins/saml/src/locale/zh-CN.ts diff --git a/packages/plugins/sequence-field/src/client/locale/en-US.ts b/packages/plugins/sequence-field/src/locale/en-US.ts similarity index 100% rename from packages/plugins/sequence-field/src/client/locale/en-US.ts rename to packages/plugins/sequence-field/src/locale/en-US.ts diff --git a/packages/plugins/sequence-field/src/client/locale/es-ES.ts b/packages/plugins/sequence-field/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/sequence-field/src/client/locale/es-ES.ts rename to packages/plugins/sequence-field/src/locale/es-ES.ts diff --git a/packages/plugins/sequence-field/src/client/locale/fr-FR.ts b/packages/plugins/sequence-field/src/locale/fr-FR.ts similarity index 100% rename from packages/plugins/sequence-field/src/client/locale/fr-FR.ts rename to packages/plugins/sequence-field/src/locale/fr-FR.ts diff --git a/packages/plugins/sequence-field/src/client/locale/pt-BR.ts b/packages/plugins/sequence-field/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/sequence-field/src/client/locale/pt-BR.ts rename to packages/plugins/sequence-field/src/locale/pt-BR.ts diff --git a/packages/plugins/sequence-field/src/client/locale/zh-CN.ts b/packages/plugins/sequence-field/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/sequence-field/src/client/locale/zh-CN.ts rename to packages/plugins/sequence-field/src/locale/zh-CN.ts diff --git a/packages/plugins/sms-auth/src/client/locale/index.ts b/packages/plugins/sms-auth/src/client/locale/index.ts index ba0c934a5f..af716e8135 100644 --- a/packages/plugins/sms-auth/src/client/locale/index.ts +++ b/packages/plugins/sms-auth/src/client/locale/index.ts @@ -1,11 +1,7 @@ -import { i18n } from '@nocobase/client'; import { useTranslation } from 'react-i18next'; -import zhCN from './zh-CN'; export const NAMESPACE = 'sms-auth'; -i18n.addResources('zh-CN', NAMESPACE, zhCN); - export function useAuthTranslation() { return useTranslation(NAMESPACE); } diff --git a/packages/plugins/sms-auth/src/client/locale/zh-CN.ts b/packages/plugins/sms-auth/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/sms-auth/src/client/locale/zh-CN.ts rename to packages/plugins/sms-auth/src/locale/zh-CN.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/en-US.ts b/packages/plugins/snapshot-field/src/locale/en-US.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/en-US.ts rename to packages/plugins/snapshot-field/src/locale/en-US.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/es-ES.ts b/packages/plugins/snapshot-field/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/es-ES.ts rename to packages/plugins/snapshot-field/src/locale/es-ES.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/fr-FR.ts b/packages/plugins/snapshot-field/src/locale/fr-FR.ts similarity index 57% rename from packages/plugins/snapshot-field/src/client/locale/fr-FR.ts rename to packages/plugins/snapshot-field/src/locale/fr-FR.ts index 7c78f7b718..655155a8ab 100644 --- a/packages/plugins/snapshot-field/src/client/locale/fr-FR.ts +++ b/packages/plugins/snapshot-field/src/locale/fr-FR.ts @@ -1,12 +1,12 @@ export default { Detail: 'Détail', Snapshot: 'Snapshot', - 'View record': 'Voir l\'enregistrement', + 'View record': "Voir l'enregistrement", 'Add block': 'Ajouter un bloc', 'Allow linking to multiple records': 'Autoriser la liaison à plusieurs enregistrements', 'When adding a new record, create a snapshot for its relational record and save in the current record. The snapshot is not updated when the record is subsequently updated.': - 'Lors de l\'ajout d\'un nouvel enregistrement, créez un snapshot pour son enregistrement relationnel et enregistrez-le dans l\'enregistrement actuel. Le snapshot n\'est pas mis à jour lorsque l\'enregistrement est ultérieurement modifié.', - 'The association field to snapshot': 'Le champ d\'association à un snapshot', + "Lors de l'ajout d'un nouvel enregistrement, créez un snapshot pour son enregistrement relationnel et enregistrez-le dans l'enregistrement actuel. Le snapshot n'est pas mis à jour lorsque l'enregistrement est ultérieurement modifié.", + 'The association field to snapshot': "Le champ d'association à un snapshot", "Snapshot the snapshot's association fields": "Snapshot des champs d'association du snapshot", 'Please select': 'Veuillez sélectionner', }; diff --git a/packages/plugins/snapshot-field/src/client/locale/tr-TR.ts b/packages/plugins/snapshot-field/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/tr-TR.ts rename to packages/plugins/snapshot-field/src/locale/ja-JP.ts diff --git a/packages/plugins/snapshot-field/src/client/locale/pt-BR.ts b/packages/plugins/snapshot-field/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/pt-BR.ts rename to packages/plugins/snapshot-field/src/locale/pt-BR.ts diff --git a/packages/plugins/snapshot-field/src/locale/ru-RU.ts b/packages/plugins/snapshot-field/src/locale/ru-RU.ts new file mode 100644 index 0000000000..ff8b4c5632 --- /dev/null +++ b/packages/plugins/snapshot-field/src/locale/ru-RU.ts @@ -0,0 +1 @@ +export default {}; diff --git a/packages/plugins/snapshot-field/src/locale/tr-TR.ts b/packages/plugins/snapshot-field/src/locale/tr-TR.ts new file mode 100644 index 0000000000..ff8b4c5632 --- /dev/null +++ b/packages/plugins/snapshot-field/src/locale/tr-TR.ts @@ -0,0 +1 @@ +export default {}; diff --git a/packages/plugins/snapshot-field/src/client/locale/zh-CN.ts b/packages/plugins/snapshot-field/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/snapshot-field/src/client/locale/zh-CN.ts rename to packages/plugins/snapshot-field/src/locale/zh-CN.ts diff --git a/packages/plugins/theme-editor/src/client/locale/en-US.ts b/packages/plugins/theme-editor/src/locale/en-US.ts similarity index 100% rename from packages/plugins/theme-editor/src/client/locale/en-US.ts rename to packages/plugins/theme-editor/src/locale/en-US.ts diff --git a/packages/plugins/theme-editor/src/client/locale/fr-FR.ts b/packages/plugins/theme-editor/src/locale/fr-FR.ts similarity index 92% rename from packages/plugins/theme-editor/src/client/locale/fr-FR.ts rename to packages/plugins/theme-editor/src/locale/fr-FR.ts index fb5602d288..c0ee955046 100644 --- a/packages/plugins/theme-editor/src/client/locale/fr-FR.ts +++ b/packages/plugins/theme-editor/src/locale/fr-FR.ts @@ -17,7 +17,7 @@ const locale = { 'The theme of the JSON format is incorrect': 'Le thème au format JSON est incorrect', 'Edited successfully': 'Modifié avec succès', 'Saved successfully': 'Enregistré avec succès', - 'Initializing Editor...': 'Initialisation de l\'éditeur...', + 'Initializing Editor...': "Initialisation de l'éditeur...", 'Save theme': 'Enregistrer le thème', 'Please set a name for this theme': 'Veuillez définir un nom pour ce thème', 'Please input the theme name': 'Veuillez saisir le nom du thème', diff --git a/packages/plugins/theme-editor/src/client/locale/zh-CN.ts b/packages/plugins/theme-editor/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/theme-editor/src/client/locale/zh-CN.ts rename to packages/plugins/theme-editor/src/locale/zh-CN.ts diff --git a/packages/plugins/users/src/locale/en-US.ts b/packages/plugins/users/src/locale/en-US.ts new file mode 100644 index 0000000000..8da957a8b4 --- /dev/null +++ b/packages/plugins/users/src/locale/en-US.ts @@ -0,0 +1,10 @@ +export default { + 'The email is incorrect, please re-enter': 'The email is incorrect, please re-enter', + 'Please fill in your email address': 'Please fill in your email address', + 'The password is incorrect, please re-enter': 'The password is incorrect, please re-enter', + 'Not a valid cellphone number, please re-enter': 'Not a valid cellphone number, please re-enter', + 'The phone number has been registered, please login directly': + 'The phone number has been registered, please login directly', + 'The phone number is not registered, please register first': + 'The phone number is not registered, please register first', +}; diff --git a/packages/plugins/users/src/locale/es-ES.ts b/packages/plugins/users/src/locale/es-ES.ts new file mode 100644 index 0000000000..d5c3193377 --- /dev/null +++ b/packages/plugins/users/src/locale/es-ES.ts @@ -0,0 +1,8 @@ +export default { + "The email is incorrect, please re-enter": "El correo electrónico es incorrecto, por favor vuelva a introducirlo", + "Please fill in your email address": "Por favor, introduzca su dirección de correo electrónico", + "The password is incorrect, please re-enter": "La contraseña es incorrecta, por favor, vuelva a introducirla", + "Not a valid cellphone number, please re-enter": "No es un número de móvil válido, por favor, vuelva a introducirlo", + "The phone number has been registered, please login directly": "El número de teléfono ha sido registrado, por favor, inicie sesión directamente", + "The phone number is not registered, please register first": "El número de teléfono no está registrado, por favor regístrese primero" +}; \ No newline at end of file diff --git a/packages/plugins/users/src/locale/fr-FR.ts b/packages/plugins/users/src/locale/fr-FR.ts new file mode 100644 index 0000000000..4dfacf6b7c --- /dev/null +++ b/packages/plugins/users/src/locale/fr-FR.ts @@ -0,0 +1,11 @@ +export default { + 'The email is incorrect, please re-enter': "L'adresse e-mail est incorrecte, veuillez la saisir à nouveau", + 'Please fill in your email address': 'Veuillez remplir votre adresse e-mail', + 'The password is incorrect, please re-enter': 'Le mot de passe est incorrect, veuillez le saisir à nouveau', + 'Not a valid cellphone number, please re-enter': + 'Numéro de téléphone portable invalide, veuillez le saisir à nouveau', + 'The phone number has been registered, please login directly': + 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', + 'The phone number is not registered, please register first': + "Le numéro de téléphone n'est pas enregistré, veuillez vous inscrire d'abord", +}; diff --git a/packages/plugins/users/src/locale/ja-JP.ts b/packages/plugins/users/src/locale/ja-JP.ts new file mode 100644 index 0000000000..5af98b70f1 --- /dev/null +++ b/packages/plugins/users/src/locale/ja-JP.ts @@ -0,0 +1,4 @@ +export default { + 'Please fill in your email address': 'メールアドレスを入力してください', + 'The password is incorrect, please re-enter': 'パスワードが正しくありません。再度入力してください。', +}; diff --git a/packages/plugins/users/src/locale/pt-BR.ts b/packages/plugins/users/src/locale/pt-BR.ts new file mode 100644 index 0000000000..d6b5f77ec1 --- /dev/null +++ b/packages/plugins/users/src/locale/pt-BR.ts @@ -0,0 +1,10 @@ +export default { + 'The email is incorrect, please re-enter': 'O e-mail está incorreto, por favor, digite novamente', + 'Please fill in your email address': 'Por favor, preencha o seu endereço de e-mail', + 'The password is incorrect, please re-enter': 'A senha está incorreta, por favor, digite novamente', + 'Not a valid cellphone number, please re-enter': 'Número de celular inválido, por favor, digite novamente', + 'The phone number has been registered, please login directly': + 'O número de celular já está registrado, por favor, faça login diretamente', + 'The phone number is not registered, please register first': + 'O número de celular não está registrado, por favor, registre-se primeiro', +}; diff --git a/packages/plugins/users/src/locale/zh-CN.ts b/packages/plugins/users/src/locale/zh-CN.ts new file mode 100644 index 0000000000..a8650e64b8 --- /dev/null +++ b/packages/plugins/users/src/locale/zh-CN.ts @@ -0,0 +1,8 @@ +export default { + 'The email is incorrect, please re-enter': '邮箱有误,请重新输入', + 'Please fill in your email address': '请填写邮箱', + 'The password is incorrect, please re-enter': '密码有误,请重新输入', + 'Not a valid cellphone number, please re-enter': '不是有效的手机号,请重新输入', + 'The phone number has been registered, please login directly': '手机号已注册,请直接登录', + 'The phone number is not registered, please register first': '手机号未注册,请先注册', +}; diff --git a/packages/plugins/users/src/server/locale/fr-FR.ts b/packages/plugins/users/src/server/locale/fr-FR.ts index 1657dd1e77..4dfacf6b7c 100644 --- a/packages/plugins/users/src/server/locale/fr-FR.ts +++ b/packages/plugins/users/src/server/locale/fr-FR.ts @@ -1,8 +1,11 @@ export default { - 'The email is incorrect, please re-enter': 'L\'adresse e-mail est incorrecte, veuillez la saisir à nouveau', + 'The email is incorrect, please re-enter': "L'adresse e-mail est incorrecte, veuillez la saisir à nouveau", 'Please fill in your email address': 'Veuillez remplir votre adresse e-mail', 'The password is incorrect, please re-enter': 'Le mot de passe est incorrect, veuillez le saisir à nouveau', - 'Not a valid cellphone number, please re-enter': 'Numéro de téléphone portable invalide, veuillez le saisir à nouveau', - 'The phone number has been registered, please login directly': 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', - 'The phone number is not registered, please register first': 'Le numéro de téléphone n\'est pas enregistré, veuillez vous inscrire d\'abord', + 'Not a valid cellphone number, please re-enter': + 'Numéro de téléphone portable invalide, veuillez le saisir à nouveau', + 'The phone number has been registered, please login directly': + 'Le numéro de téléphone a été enregistré, veuillez vous connecter directement', + 'The phone number is not registered, please register first': + "Le numéro de téléphone n'est pas enregistré, veuillez vous inscrire d'abord", }; diff --git a/packages/plugins/verification/src/client/locale/pt-BR.ts b/packages/plugins/verification/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/verification/src/client/locale/pt-BR.ts rename to packages/plugins/verification/src/locale/pt-BR.ts diff --git a/packages/plugins/verification/src/client/locale/zh-CN.ts b/packages/plugins/verification/src/locale/zh-CN.ts similarity index 54% rename from packages/plugins/verification/src/client/locale/zh-CN.ts rename to packages/plugins/verification/src/locale/zh-CN.ts index 814ba398a9..a4d281553f 100644 --- a/packages/plugins/verification/src/client/locale/zh-CN.ts +++ b/packages/plugins/verification/src/locale/zh-CN.ts @@ -17,4 +17,10 @@ export default { 'Sign name': '短信签名内容', 'Sms sdk app id': '短信应用 ID', 'Template Id': '短信模板 ID', + + 'Verification send failed, please try later or contact to administrator': '验证码发送失败,请稍后重试或联系管理员', + 'Not a valid cellphone number, please re-enter': '不是有效的手机号,请重新输入', + "Please don't retry in {{time}} seconds": '请 {{time}} 秒后再试', + 'You are trying so frequently, please slow down': '您的操作太频繁,请稍后再试', + 'Verification code is invalid': '无效的验证码', }; diff --git a/packages/plugins/workflow/src/client/locale/en-US.ts b/packages/plugins/workflow/src/locale/en-US.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/en-US.ts rename to packages/plugins/workflow/src/locale/en-US.ts diff --git a/packages/plugins/workflow/src/client/locale/es-ES.ts b/packages/plugins/workflow/src/locale/es-ES.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/es-ES.ts rename to packages/plugins/workflow/src/locale/es-ES.ts diff --git a/packages/plugins/workflow/src/client/locale/fr-FR.ts b/packages/plugins/workflow/src/locale/fr-FR.ts similarity index 73% rename from packages/plugins/workflow/src/client/locale/fr-FR.ts rename to packages/plugins/workflow/src/locale/fr-FR.ts index f659ef17b1..a7d58324bf 100644 --- a/packages/plugins/workflow/src/client/locale/fr-FR.ts +++ b/packages/plugins/workflow/src/locale/fr-FR.ts @@ -1,6 +1,6 @@ export default { Workflow: 'Workflow', - 'Execution history': 'Historique d\'exécution', + 'Execution history': "Historique d'exécution", Executed: 'Exécuté', 'Trigger type': 'Type de déclencheur', Status: 'Statut', @@ -18,13 +18,13 @@ export default { 'Triggered at': 'Déclenché à', 'Collection event': 'Événement de collection', 'Trigger on': 'Déclencher sur', - 'After record added': 'Après l\'ajout d\'un enregistrement', - 'After record updated': 'Après la mise à jour d\'un enregistrement', - 'After record added or updated': 'Après l\'ajout ou la mise à jour d\'un enregistrement', - 'After record deleted': 'Après la suppression d\'un enregistrement', + 'After record added': "Après l'ajout d'un enregistrement", + 'After record updated': "Après la mise à jour d'un enregistrement", + 'After record added or updated': "Après l'ajout ou la mise à jour d'un enregistrement", + 'After record deleted': "Après la suppression d'un enregistrement", 'Changed fields': 'Champs modifiés', 'Triggered only if one of the selected fields changes. If unselected, it means that it will be triggered when any field changes. When record is added or deleted, any field is considered to have been changed.': - 'Déclenché uniquement si l\'un des champs sélectionnés change. S\'il n\'est pas sélectionné, cela signifie qu\'il sera déclenché lorsque n\'importe quel champ change. Lorsque l\'enregistrement est ajouté ou supprimé, n\'importe quel champ est considéré comme ayant été modifié.', + "Déclenché uniquement si l'un des champs sélectionnés change. S'il n'est pas sélectionné, cela signifie qu'il sera déclenché lorsque n'importe quel champ change. Lorsque l'enregistrement est ajouté ou supprimé, n'importe quel champ est considéré comme ayant été modifié.", 'Only triggers when match conditions': 'Déclenche uniquement lorsque les conditions correspondent', 'Schedule event': 'Événement planifié', 'Trigger mode': 'Mode de déclenchement', @@ -70,7 +70,7 @@ export default { Pending: 'En attente', Canceled: 'Annulé', 'This node contains branches, deleting will also be preformed to them, are you sure?': - 'Ce nœud contient des branches, leur suppression sera également effectuée, êtes-vous sûr(e) ?', + 'Ce nœud contient des branches, leur suppression sera également effectuée, êtes-vous sûr(e) ?', Control: 'Contrôle', 'Collection operations': 'Opérations sur la collection', 'Extended types': 'Types étendus', @@ -92,9 +92,9 @@ export default { 'Any succeeded': 'Un réussi', 'Any succeeded or failed': 'Un réussi ou un échoué', 'Continue after all branches succeeded': 'Continuer après la réussite de toutes les branches', - 'Continue after any branch succeeded': 'Continuer après la réussite d\'une branche', + 'Continue after any branch succeeded': "Continuer après la réussite d'une branche", 'Continue after any branch succeeded, or exit after any branch failed': - 'Continuer après la réussite d\'une branche, ou quitter après l\'échec d\'une branche', + "Continuer après la réussite d'une branche, ou quitter après l'échec d'une branche", Delay: 'Délai', Duration: 'Durée', 'End Status': 'Statut de fin', @@ -105,15 +105,16 @@ export default { 'Update record': 'Mettre à jour un enregistrement', 'Query record': 'Interroger un enregistrement', 'Multiple records': 'Multiples enregistrements', - 'Please select collection first': 'Veuillez d\'abord sélectionner une collection', - 'Only update records matching conditions': 'Mettre à jour uniquement les enregistrements correspondant aux conditions', + 'Please select collection first': "Veuillez d'abord sélectionner une collection", + 'Only update records matching conditions': + 'Mettre à jour uniquement les enregistrements correspondant aux conditions', 'Fields that are not assigned a value will be set to the default value, and those that do not have a default value are set to null.': - 'Les champs qui ne reçoivent pas de valeur seront définis sur la valeur par défaut, et ceux qui n\'ont pas de valeur par défaut seront définis sur null.', + "Les champs qui ne reçoivent pas de valeur seront définis sur la valeur par défaut, et ceux qui n'ont pas de valeur par défaut seront définis sur null.", 'Trigger in executed workflow cannot be modified': 'Le déclencheur dans le workflow exécuté ne peut pas être modifié', 'Node in executed workflow cannot be modified': 'Le nœud dans le workflow exécuté ne peut pas être modifié', 'Can not delete': 'Impossible de supprimer', 'The result of this node has been referenced by other nodes ({{nodes}}), please remove the usage before deleting.': - 'Le résultat de ce nœud a été référencé par d\'autres nœuds ({{nodes}}), veuillez supprimer son utilisation avant de le supprimer.', + "Le résultat de ce nœud a été référencé par d'autres nœuds ({{nodes}}), veuillez supprimer son utilisation avant de le supprimer.", 'HTTP request': 'Requête HTTP', 'HTTP method': 'Méthode HTTP', @@ -126,11 +127,11 @@ export default { 'Use variable': 'Utiliser une variable', Format: 'Format', Insert: 'Insérer', - 'Timeout config': 'Configuration du délai d\'expiration', + 'Timeout config': "Configuration du délai d'expiration", ms: 'ms', 'Input request data': 'Entrée des données de requête', 'Only support standard JSON data': 'Prend uniquement en charge les données JSON standard', '"Content-Type" only support "application/json", and no need to specify': - '"Content-Type" prend uniquement en charge "application/json" et n\'a pas besoin d\'être spécifié', - 'Ignore fail request and continue workflow': 'Ignorer l\'échec de la requête et continuer le workflow', + '"Content-Type" prend uniquement en charge "application/json" et n\'a pas besoin d\'être spécifié', + 'Ignore fail request and continue workflow': "Ignorer l'échec de la requête et continuer le workflow", }; diff --git a/packages/plugins/workflow/src/client/locale/ja-JP.ts b/packages/plugins/workflow/src/locale/ja-JP.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/ja-JP.ts rename to packages/plugins/workflow/src/locale/ja-JP.ts diff --git a/packages/plugins/workflow/src/client/locale/pt-BR.ts b/packages/plugins/workflow/src/locale/pt-BR.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/pt-BR.ts rename to packages/plugins/workflow/src/locale/pt-BR.ts diff --git a/packages/plugins/workflow/src/client/locale/ru-RU.ts b/packages/plugins/workflow/src/locale/ru-RU.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/ru-RU.ts rename to packages/plugins/workflow/src/locale/ru-RU.ts diff --git a/packages/plugins/workflow/src/client/locale/tr-TR.ts b/packages/plugins/workflow/src/locale/tr-TR.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/tr-TR.ts rename to packages/plugins/workflow/src/locale/tr-TR.ts diff --git a/packages/plugins/workflow/src/client/locale/zh-CN.ts b/packages/plugins/workflow/src/locale/zh-CN.ts similarity index 100% rename from packages/plugins/workflow/src/client/locale/zh-CN.ts rename to packages/plugins/workflow/src/locale/zh-CN.ts diff --git a/yarn.lock b/yarn.lock index c84d1b65f8..e669bb9103 100644 --- a/yarn.lock +++ b/yarn.lock @@ -153,7 +153,6 @@ "@ant-design/cssinjs@^1.11.1": version "1.13.2" resolved "https://registry.npmmirror.com/@ant-design/cssinjs/-/cssinjs-1.13.2.tgz#833098a6866a9f754e31562b0d5dc8b1133648d9" - integrity sha512-II3QJx6V6boYkAIUiEd1/hquSeX1r67sUOtsvco35fTmV46JvkJz946/6K+ikiuODBSE1kLf7fJ5gHetQyUyww== dependencies: "@babel/runtime" "^7.11.1" "@emotion/hash" "^0.8.0" @@ -7313,7 +7312,6 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: ansi-regex@^6.0.1: version "6.0.1" resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== ansi-styles@^2.2.1: version "2.2.1" @@ -7338,7 +7336,6 @@ ansi-styles@^5.0.0: ansi-styles@^6.0.0: version "6.2.1" resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== ansi-wrap@0.1.0, ansi-wrap@^0.1.0: version "0.1.0" @@ -7793,7 +7790,6 @@ astral-regex@^1.0.0: astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== astring@^1.8.0: version "1.8.6" @@ -8840,7 +8836,6 @@ chalk@3.0.0, chalk@^3.0.0, chalk@~3.0.0: chalk@5.2.0: version "5.2.0" resolved "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" - integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.3: version "1.1.3" @@ -9071,7 +9066,6 @@ cli-tableau@^2.0.0: cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: slice-ansi "^3.0.0" string-width "^4.2.0" @@ -9079,7 +9073,6 @@ cli-truncate@^2.1.0: cli-truncate@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/cli-truncate/-/cli-truncate-3.1.0.tgz#3f23ab12535e3d73e839bb43e73c9de487db1389" - integrity sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA== dependencies: slice-ansi "^5.0.0" string-width "^5.0.0" @@ -9319,7 +9312,6 @@ colord@^2.9.1: colorette@^2.0.19: version "2.0.20" resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== colors@^1.1.2: version "1.4.0" @@ -9378,7 +9370,6 @@ commander@7, commander@^7.2.0: commander@^10.0.0: version "10.0.1" resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" - integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== commander@^2.19.0, commander@^2.20.0, commander@^2.8.1, commander@^2.9.0: version "2.20.3" @@ -11294,7 +11285,6 @@ dynamic-dedupe@^0.3.0: eastasianwidth@^0.2.0: version "0.2.0" resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== ecc-jsbn@~0.1.1: version "0.1.2" @@ -11365,7 +11355,6 @@ emoji-regex@^8.0.0: emoji-regex@^9.2.2: version "9.2.2" resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== emojis-list@^3.0.0: version "3.0.0" @@ -11816,6 +11805,13 @@ eslint-plugin-prettier@^5.0.0: prettier-linter-helpers "^1.0.0" synckit "^0.8.5" +eslint-plugin-prettier@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" + dependencies: + prettier-linter-helpers "^1.0.0" + synckit "^0.8.5" + eslint-plugin-promise@^6.1.1: version "6.1.1" resolved "https://registry.npmmirror.com/eslint-plugin-promise/-/eslint-plugin-promise-6.1.1.tgz#269a3e2772f62875661220631bd4dafcb4083816" @@ -14488,7 +14484,6 @@ is-fullwidth-code-point@^3.0.0: is-fullwidth-code-point@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" - integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== is-generator-fn@^2.0.0: version "2.1.0" @@ -16386,7 +16381,6 @@ linkify-it@^4.0.1: lint-staged@^13.2.3: version "13.2.3" resolved "https://registry.npmmirror.com/lint-staged/-/lint-staged-13.2.3.tgz#f899aad6c093473467e9c9e316e3c2d8a28f87a7" - integrity sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg== dependencies: chalk "5.2.0" cli-truncate "^3.1.0" @@ -16405,7 +16399,6 @@ lint-staged@^13.2.3: listr2@^5.0.7: version "5.0.8" resolved "https://registry.npmmirror.com/listr2/-/listr2-5.0.8.tgz#a9379ffeb4bd83a68931a65fb223a11510d6ba23" - integrity sha512-mC73LitKHj9w6v30nLNGPetZIlfpUniNSsxxrbaPcWOjDb92SHPzJPi/t+v1YC/lxKz/AJ9egOjww0qUuFxBpA== dependencies: cli-truncate "^2.1.0" colorette "^2.0.19" @@ -16655,7 +16648,6 @@ log-symbols@^4.1.0: log-update@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== dependencies: ansi-escapes "^4.3.0" cli-cursor "^3.1.0" @@ -19356,7 +19348,6 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc pidtree@^0.6.0: version "0.6.0" resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" - integrity sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g== pidusage@^2.0.21: version "2.0.21" @@ -20411,6 +20402,10 @@ prettier@^3.0.0: resolved "https://registry.npmmirror.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== +prettier@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -22149,7 +22144,6 @@ reusify@^1.0.4: rfdc@^1.3.0: version "1.3.0" resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== rgb-regex@^1.0.1: version "1.0.1" @@ -22775,7 +22769,6 @@ slash@^4.0.0: slice-ansi@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: ansi-styles "^4.0.0" astral-regex "^2.0.0" @@ -22784,7 +22777,6 @@ slice-ansi@^3.0.0: slice-ansi@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" astral-regex "^2.0.0" @@ -22793,7 +22785,6 @@ slice-ansi@^4.0.0: slice-ansi@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-5.0.0.tgz#b73063c57aa96f9cd881654b15294d95d285c42a" - integrity sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ== dependencies: ansi-styles "^6.0.0" is-fullwidth-code-point "^4.0.0" @@ -23294,7 +23285,6 @@ string-width@^3.0.0, string-width@^3.1.0: string-width@^5.0.0: version "5.1.2" resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== dependencies: eastasianwidth "^0.2.0" emoji-regex "^9.2.2" @@ -23387,7 +23377,6 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: strip-ansi@^7.0.1: version "7.1.0" resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.0.tgz#d5b6568ca689d8561370b0707685d22434faff45" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== dependencies: ansi-regex "^6.0.1" @@ -25706,7 +25695,6 @@ yaml@^1.10.0, yaml@^1.10.2: yaml@^2.2.2: version "2.3.1" resolved "https://registry.npmmirror.com/yaml/-/yaml-2.3.1.tgz#02fe0975d23cd441242aa7204e09fc28ac2ac33b" - integrity sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ== yamljs@0.3.0: version "0.3.0" From e5612f87f80cdc27b7210034fb6a48d6cdf33d10 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Tue, 25 Jul 2023 18:07:17 +0800 Subject: [PATCH 12/34] chore: merge docker build (#2317) * chore: merge docker build * chore: build image * chore: build image * chore: job name --- ...er-registry.yml => build-docker-image.yml} | 38 ++++++++--- .github/workflows/docker-hub.yml | 61 ------------------ Dockerfile | 13 ++-- Dockerfile.acr | 63 ------------------- yarn.lock | 5 ++ 5 files changed, 42 insertions(+), 138 deletions(-) rename .github/workflows/{aliyun-container-registry.yml => build-docker-image.yml} (69%) delete mode 100644 .github/workflows/docker-hub.yml delete mode 100644 Dockerfile.acr diff --git a/.github/workflows/aliyun-container-registry.yml b/.github/workflows/build-docker-image.yml similarity index 69% rename from .github/workflows/aliyun-container-registry.yml rename to .github/workflows/build-docker-image.yml index b85ab9d502..cc34d3860f 100644 --- a/.github/workflows/aliyun-container-registry.yml +++ b/.github/workflows/build-docker-image.yml @@ -1,26 +1,25 @@ -name: Aliyun Container Registry +name: Build Docker Image on: push: branches: - 'main' - - 'develop' paths: - 'packages/**' - 'docker/nocobase/**' - - 'Dockerfile.acr' - - '.github/workflows/aliyun-container-registry.yml' + - 'Dockerfile' + - '.github/workflows/build-docker-image.yml' pull_request: branches: - '**' paths: - 'packages/**' - 'docker/nocobase/**' - - 'Dockerfile.acr' - - '.github/workflows/aliyun-container-registry.yml' + - 'Dockerfile' + - '.github/workflows/build-docker-image.yml' jobs: - push-acr: + build-and-push: if: github.event.pull_request.head.repo.fork != true runs-on: ubuntu-latest services: @@ -51,22 +50,41 @@ jobs: type=ref,event=pr type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} - - name: Login to Docker Hub + + - name: Login to Aliyun Container Registry uses: docker/login-action@v2 with: registry: ${{ secrets.ALI_DOCKER_REGISTRY }} username: ${{ secrets.ALI_DOCKER_USERNAME }} password: ${{ secrets.ALI_DOCKER_PASSWORD }} + + - name: Login to Docker Hub + if: github.ref == 'refs/heads/main' + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Set tags + id: set-tags + run: | + if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then + echo "::set-output name=tags::${{ steps.meta.outputs.tags }},${{ secrets.ALI_DOCKER_REGISTRY }}/${{ steps.meta.outputs.tags }}" + else + echo "::set-output name=tags::${{ secrets.ALI_DOCKER_REGISTRY }}/${{ steps.meta.outputs.tags }}" + fi + - name: Build and push uses: docker/build-push-action@v3 with: context: . - file: Dockerfile.acr + file: Dockerfile build-args: | VERDACCIO_URL=http://localhost:4873/ COMMIT_HASH=${GITHUB_SHA} push: true - tags: ${{ secrets.ALI_DOCKER_REGISTRY }}/${{ steps.meta.outputs.tags }} + tags: ${{ steps.set-tags.outputs.tags }} + - name: Deploy NocoBase env: IMAGE_TAG: ${{ steps.meta.outputs.tags }} diff --git a/.github/workflows/docker-hub.yml b/.github/workflows/docker-hub.yml deleted file mode 100644 index f1f7232fd5..0000000000 --- a/.github/workflows/docker-hub.yml +++ /dev/null @@ -1,61 +0,0 @@ -name: Docker Hub - -on: - push: - branches: - - 'main' - paths: - - 'packages/**' - - 'docker/nocobase/**' - - 'Dockerfile' - - '.github/workflows/docker-hub.yml' - -jobs: - push-docker: - runs-on: ubuntu-latest - services: - verdaccio: - image: verdaccio/verdaccio - ports: - - 4873:4873 - steps: - - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 - with: - driver-opts: network=host - - - name: Docker meta - id: meta - uses: docker/metadata-action@v4 - with: - images: | - nocobase/nocobase - tags: | - type=ref,event=branch - type=ref,event=pr - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - - - name: Login to Docker Hub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v3 - with: - context: . - file: Dockerfile - build-args: | - VERDACCIO_URL=http://localhost:4873/ - # platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 50fafb328a..9b714f7e12 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,8 @@ -FROM node:18 as builder +FROM node:16 as builder ARG VERDACCIO_URL=http://host.docker.internal:10104/ -ARG COMIT_HASH +ARG COMMIT_HASH +ARG APPEND_PRESET_LOCAL_PLUGINS +ARG BEFORE_PACK_NOCOBASE="ls -l" RUN apt-get update && apt-get install -y jq WORKDIR /tmp @@ -23,10 +25,13 @@ RUN yarn config set registry $VERDACCIO_URL WORKDIR /app RUN cd /app \ && yarn config set network-timeout 600000 -g \ - && yarn create nocobase-app my-nocobase-app -a -e APP_ENV=production \ + && yarn create nocobase-app my-nocobase-app -a -e APP_ENV=production -e APPEND_PRESET_LOCAL_PLUGINS=$APPEND_PRESET_LOCAL_PLUGINS \ && cd /app/my-nocobase-app \ && yarn install --production +WORKDIR /app/my-nocobase-app +RUN $BEFORE_PACK_NOCOBASE + RUN cd /app \ && rm -rf my-nocobase-app/packages/app/client/src/.umi \ && rm -rf nocobase.tar.gz \ @@ -50,7 +55,7 @@ COPY --from=builder /app/nocobase.tar.gz /app/nocobase.tar.gz WORKDIR /app/nocobase -RUN mkdir -p /app/nocobase/storage/uploads/ && echo "$COMIT_HASH" >> /app/nocobase/storage/uploads/COMIT_HASH +RUN mkdir -p /app/nocobase/storage/uploads/ && echo "$COMMIT_HASH" >> /app/nocobase/storage/uploads/COMMIT_HASH COPY ./docker/nocobase/docker-entrypoint.sh /app/ diff --git a/Dockerfile.acr b/Dockerfile.acr deleted file mode 100644 index 9b714f7e12..0000000000 --- a/Dockerfile.acr +++ /dev/null @@ -1,63 +0,0 @@ -FROM node:16 as builder -ARG VERDACCIO_URL=http://host.docker.internal:10104/ -ARG COMMIT_HASH -ARG APPEND_PRESET_LOCAL_PLUGINS -ARG BEFORE_PACK_NOCOBASE="ls -l" - -RUN apt-get update && apt-get install -y jq -WORKDIR /tmp -COPY . /tmp -RUN npx npm-cli-adduser --username test --password test -e test@nocobase.com -r $VERDACCIO_URL -RUN cd /tmp && \ - NEWVERSION="$(cat lerna.json | jq '.version' | tr -d '"').$(date +'%Y%m%d%H%M%S')" \ - && tmp=$(mktemp) \ - && jq ".version = \"${NEWVERSION}\"" lerna.json > "$tmp" && mv "$tmp" lerna.json -RUN yarn install && yarn build - -RUN git checkout -b release \ - && yarn version:alpha -y \ - && git config user.email "test@mail.com" \ - && git config user.name "test" && git add . \ - && git commit -m "chore(versions): test publish packages xxx" \ - && yarn release:force --registry $VERDACCIO_URL - -RUN yarn config set registry $VERDACCIO_URL -WORKDIR /app -RUN cd /app \ - && yarn config set network-timeout 600000 -g \ - && yarn create nocobase-app my-nocobase-app -a -e APP_ENV=production -e APPEND_PRESET_LOCAL_PLUGINS=$APPEND_PRESET_LOCAL_PLUGINS \ - && cd /app/my-nocobase-app \ - && yarn install --production - -WORKDIR /app/my-nocobase-app -RUN $BEFORE_PACK_NOCOBASE - -RUN cd /app \ - && rm -rf my-nocobase-app/packages/app/client/src/.umi \ - && rm -rf nocobase.tar.gz \ - && rm -rf ./my-nocobase-app/node_modules/@antv \ - && rm -rf ./my-nocobase-app/node_modules/antd/dist \ - && rm -rf ./my-nocobase-app/node_modules/antd/es \ - && rm -rf ./my-nocobase-app/node_modules/antd/node_modules \ - && rm -rf ./my-nocobase-app/node_modules/@ant-design \ - && rm -rf ./my-nocobase-app/node_modules/china-division/dist/villages.json \ - && find ./my-nocobase-app/node_modules/china-division/dist -name '*.csv' -delete \ - && find ./my-nocobase-app/node_modules/china-division/dist -name '*.sqlite' -delete \ - && tar -zcf ./nocobase.tar.gz -C /app/my-nocobase-app . - - -FROM node:16.20-bullseye-slim -RUN apt-get update && apt-get install -y nginx - -RUN rm -rf /etc/nginx/sites-enabled/default -COPY ./docker/nocobase/nocobase.conf /etc/nginx/sites-enabled/nocobase.conf -COPY --from=builder /app/nocobase.tar.gz /app/nocobase.tar.gz - -WORKDIR /app/nocobase - -RUN mkdir -p /app/nocobase/storage/uploads/ && echo "$COMMIT_HASH" >> /app/nocobase/storage/uploads/COMMIT_HASH - -COPY ./docker/nocobase/docker-entrypoint.sh /app/ - -CMD ["/app/docker-entrypoint.sh"] - diff --git a/yarn.lock b/yarn.lock index e669bb9103..d58413f4db 100644 --- a/yarn.lock +++ b/yarn.lock @@ -20406,6 +20406,11 @@ prettier@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" +prettier@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" + integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== + pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" From 17ad645e45abecb838bba58e0a179e50f0ba50cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=AB=E9=9B=A8=E6=B0=B4=E8=BF=87=E6=BB=A4=E7=9A=84?= =?UTF-8?q?=E7=A9=BA=E6=B0=94-Rain?= <958414905@qq.com> Date: Tue, 25 Jul 2023 18:17:17 +0800 Subject: [PATCH 13/34] feat(filter-block): support foreign key and inheritance (#2302) * feat: support foreign key * feat: inherit * fix: exclude belongsTo * fix: should get all collection names on inherit chain --- .../collection-manager/hooks/useCollection.ts | 6 + .../hooks/useCollectionManager.ts | 29 ++++ .../src/filter-provider/FilterProvider.tsx | 22 ++- .../filter-provider/__tests__/utiles.test.ts | 133 ++++++++++++++++++ .../core/client/src/filter-provider/utils.ts | 34 ++++- .../src/schema-settings/SchemaSettings.tsx | 29 ++-- 6 files changed, 237 insertions(+), 16 deletions(-) create mode 100644 packages/core/client/src/filter-provider/__tests__/utiles.test.ts diff --git a/packages/core/client/src/collection-manager/hooks/useCollection.ts b/packages/core/client/src/collection-manager/hooks/useCollection.ts index ced71ea955..2920a4442a 100644 --- a/packages/core/client/src/collection-manager/hooks/useCollection.ts +++ b/packages/core/client/src/collection-manager/hooks/useCollection.ts @@ -26,6 +26,11 @@ export const useCollection = () => { const totalFields = unionBy(currentFields?.concat(inheritedFields), 'name').filter((v) => { return !v.isForeignKey; }); + + const foreignKeyFields = unionBy(currentFields?.concat(inheritedFields), 'name').filter((v) => { + return v.isForeignKey; + }); + return { ...collection, resource, @@ -47,5 +52,6 @@ export const useCollection = () => { }, currentFields, inheritedFields, + foreignKeyFields, }; }; diff --git a/packages/core/client/src/collection-manager/hooks/useCollectionManager.ts b/packages/core/client/src/collection-manager/hooks/useCollectionManager.ts index 4b252f43d1..1397f4319e 100644 --- a/packages/core/client/src/collection-manager/hooks/useCollectionManager.ts +++ b/packages/core/client/src/collection-manager/hooks/useCollectionManager.ts @@ -236,6 +236,34 @@ export const useCollectionManager = () => { return getInheritChain(collectionName); }; + /** + * 获取继承的所有 collectionName,排列顺序为当前表往祖先表排列 + * @param collectionName + * @returns + */ + const getInheritCollectionsChain = (collectionName: string) => { + const collectionsInheritChain = [collectionName]; + const getInheritChain = (name: string) => { + const collection = getCollection(name); + if (collection) { + const { inherits } = collection; + if (inherits) { + for (let index = 0; index < inherits.length; index++) { + const collectionKey = inherits[index]; + if (collectionsInheritChain.includes(collectionKey)) { + continue; + } + collectionsInheritChain.push(collectionKey); + getInheritChain(collectionKey); + } + } + } + return collectionsInheritChain; + }; + + return getInheritChain(collectionName); + }; + return { service, interfaces, @@ -299,5 +327,6 @@ export const useCollectionManager = () => { }); }, getAllCollectionsInheritChain, + getInheritCollectionsChain, }; }; diff --git a/packages/core/client/src/filter-provider/FilterProvider.tsx b/packages/core/client/src/filter-provider/FilterProvider.tsx index 03f252424d..831a3172c4 100644 --- a/packages/core/client/src/filter-provider/FilterProvider.tsx +++ b/packages/core/client/src/filter-provider/FilterProvider.tsx @@ -3,10 +3,20 @@ import { uniqBy } from 'lodash'; import React, { createContext, useEffect, useRef } from 'react'; import { useBlockRequestContext } from '../block-provider/BlockProvider'; import { SharedFilter, mergeFilter } from '../block-provider/SharedFilterProvider'; -import { CollectionFieldOptions, useCollection } from '../collection-manager'; +import { CollectionFieldOptions, FieldOptions, useCollection } from '../collection-manager'; import { removeNullCondition } from '../schema-component'; import { useAssociatedFields } from './utils'; +export interface ForeignKeyField extends FieldOptions { + /** 外键字段所在的数据表的名称 */ + collectionName: string; + isForeignKey: boolean; + key: string; + name: string; + parentKey: null | string; + reverseKey: null | string; +} + type Collection = ReturnType; export interface DataBlock { @@ -14,7 +24,7 @@ export interface DataBlock { uid: string; /** 用户自行设置的区块名称 */ title?: string; - /** 与当前区块相关的数据表信息 */ + /** 与数据区块相关的数据表信息 */ collection: Collection; /** 根据提供的参数执行该方法即可刷新数据区块的数据 */ doFilter: (params: any, params2?: any) => Promise; @@ -22,10 +32,13 @@ export interface DataBlock { clearFilter: (uid: string) => void; /** 数据区块表中所有的关系字段 */ associatedFields?: CollectionFieldOptions[]; - /** 通过右上角菜单设置的过滤条件 */ + /** 数据区块表中所有的外键字段 */ + foreignKeyFields?: ForeignKeyField[]; + /** 数据区块已经存在的过滤条件(通过 `设置数据范围` 或者其它能设置筛选条件的功能) */ defaultFilter?: SharedFilter; + /** 数据区块用于请求数据的接口 */ service?: any; - /** 区块所对应的 DOM 容器 */ + /** 数据区块所的 DOM 容器 */ dom: HTMLElement; } @@ -73,6 +86,7 @@ export const FilterBlockRecord = ({ doFilter: service.runAsync, collection, associatedFields, + foreignKeyFields: collection.foreignKeyFields as ForeignKeyField[], defaultFilter: params?.filter || {}, service, dom: container.current, diff --git a/packages/core/client/src/filter-provider/__tests__/utiles.test.ts b/packages/core/client/src/filter-provider/__tests__/utiles.test.ts new file mode 100644 index 0000000000..3b4f688d70 --- /dev/null +++ b/packages/core/client/src/filter-provider/__tests__/utiles.test.ts @@ -0,0 +1,133 @@ +import { getSupportFieldsByAssociation, getSupportFieldsByForeignKey } from '../utils'; + +describe('getSupportFieldsByAssociation', () => { + it('should return all associated fields matching the inherited collections chain', () => { + const block = { + associatedFields: [ + { id: 1, target: 'collection1', name: 'field1' }, + { id: 2, target: 'collection2', name: 'field2' }, + { id: 3, target: 'collection1', name: 'field3' }, + ], + }; + + const inheritCollectionsChain = ['collection1', 'collection2']; + + const result = getSupportFieldsByAssociation(inheritCollectionsChain, block as any); + + expect(result).toEqual([ + { id: 1, target: 'collection1', name: 'field1' }, + { id: 2, target: 'collection2', name: 'field2' }, + { id: 3, target: 'collection1', name: 'field3' }, + ]); + }); + + it('should return an empty array when there are no matching associated fields', () => { + const block = { + associatedFields: [ + { id: 1, target: 'collection1', name: 'field1' }, + { id: 2, target: 'collection2', name: 'field2' }, + { id: 3, target: 'collection1', name: 'field3' }, + ], + }; + + const inheritCollectionsChain = ['collection3', 'collection4']; + + const result = getSupportFieldsByAssociation(inheritCollectionsChain, block as any); + + expect(result).toEqual([]); + }); + + it('should return associated fields matching the inherited collections chain', () => { + const block = { + associatedFields: [ + { id: 1, target: 'collection1', name: 'field1' }, + { id: 2, target: 'collection2', name: 'field2' }, + { id: 3, target: 'collection1', name: 'field3' }, + ], + }; + + const inheritCollectionsChain = ['collection1']; + + const result = getSupportFieldsByAssociation(inheritCollectionsChain, block as any); + + expect(result).toEqual([ + { id: 1, target: 'collection1', name: 'field1' }, + { id: 3, target: 'collection1', name: 'field3' }, + ]); + }); +}); + +describe('getSupportFieldsByForeignKey', () => { + it("should return all foreign key fields matching the filter block collection's foreign key properties", () => { + const filterBlockCollection = { + fields: [ + { id: 1, name: 'field1', foreignKey: 'fk1' }, + { id: 2, name: 'field2', foreignKey: 'fk2' }, + { id: 3, name: 'field3', foreignKey: 'fk3' }, + ], + }; + + const block = { + foreignKeyFields: [ + { id: 1, name: 'fk1', target: 'collection1' }, + { id: 2, name: 'fk2', target: 'collection2' }, + { id: 3, name: 'fk4', target: 'collection1' }, + ], + }; + + const result = getSupportFieldsByForeignKey(filterBlockCollection as any, block as any); + + expect(result).toEqual([ + { id: 1, name: 'fk1', target: 'collection1' }, + { id: 2, name: 'fk2', target: 'collection2' }, + ]); + }); + + it('should return an empty array when there are no matching foreign key fields', () => { + const filterBlockCollection = { + fields: [ + { id: 1, name: 'field1', foreignKey: 'fk1' }, + { id: 2, name: 'field2', foreignKey: 'fk2' }, + { id: 3, name: 'field3', foreignKey: 'fk3' }, + ], + }; + + const block = { + foreignKeyFields: [ + { id: 1, name: 'fk4', target: 'collection1' }, + { id: 2, name: 'fk5', target: 'collection2' }, + { id: 3, name: 'fk6', target: 'collection1' }, + ], + }; + + const result = getSupportFieldsByForeignKey(filterBlockCollection as any, block as any); + + expect(result).toEqual([]); + }); + + it("should return foreign key fields matching the filter block collection's foreign key properties", () => { + const filterBlockCollection = { + fields: [ + { id: 1, name: 'field1', foreignKey: 'fk1' }, + { id: 2, name: 'field2', foreignKey: 'fk2' }, + { id: 3, name: 'field3', foreignKey: 'fk3' }, + ], + }; + + const block = { + foreignKeyFields: [ + { id: 1, name: 'fk1', target: 'collection1' }, + { id: 2, name: 'fk2', target: 'collection2' }, + { id: 3, name: 'fk3', target: 'collection1' }, + ], + }; + + const result = getSupportFieldsByForeignKey(filterBlockCollection as any, block as any); + + expect(result).toEqual([ + { id: 1, name: 'fk1', target: 'collection1' }, + { id: 2, name: 'fk2', target: 'collection2' }, + { id: 3, name: 'fk3', target: 'collection1' }, + ]); + }); +}); diff --git a/packages/core/client/src/filter-provider/utils.ts b/packages/core/client/src/filter-provider/utils.ts index e1b5c2a621..9bf65e62a4 100644 --- a/packages/core/client/src/filter-provider/utils.ts +++ b/packages/core/client/src/filter-provider/utils.ts @@ -4,10 +4,16 @@ import _ from 'lodash'; import { useCallback, useEffect, useState } from 'react'; import { mergeFilter } from '../block-provider'; import { FilterTarget, findFilterTargets } from '../block-provider/hooks'; -import { Collection, CollectionFieldOptions, FieldOptions, useCollection } from '../collection-manager'; +import { + Collection, + CollectionFieldOptions, + FieldOptions, + useCollection, + useCollectionManager, +} from '../collection-manager'; import { removeNullCondition } from '../schema-component'; import { findFilterOperators } from '../schema-component/antd/form-item/SchemaSettingOptions'; -import { useFilterBlock } from './FilterProvider'; +import { DataBlock, useFilterBlock } from './FilterProvider'; export enum FilterBlockType { FORM, @@ -16,6 +22,23 @@ export enum FilterBlockType { COLLAPSE, } +export const getSupportFieldsByAssociation = (inheritCollectionsChain: string[], block: DataBlock) => { + return block.associatedFields?.filter((field) => + inheritCollectionsChain.some((collectionName) => collectionName === field.target), + ); +}; + +export const getSupportFieldsByForeignKey = ( + filterBlockCollection: ReturnType, + block: DataBlock, +) => { + return block.foreignKeyFields?.filter((foreignKeyField) => { + return filterBlockCollection.fields.some( + (field) => field.type !== 'belongsTo' && field.foreignKey === foreignKeyField.name, + ); + }); +}; + /** * 根据筛选区块类型筛选出支持的数据区块(同表或具有关系字段的表) * @param filterBlockType @@ -25,6 +48,7 @@ export const useSupportedBlocks = (filterBlockType: FilterBlockType) => { const { getDataBlocks } = useFilterBlock(); const fieldSchema = useFieldSchema(); const collection = useCollection(); + const { getAllCollectionsInheritChain } = useCollectionManager(); // Form 和 Collapse 仅支持同表的数据区块 if (filterBlockType === FilterBlockType.FORM || filterBlockType === FilterBlockType.COLLAPSE) { @@ -36,10 +60,14 @@ export const useSupportedBlocks = (filterBlockType: FilterBlockType) => { // Table 和 Tree 支持同表或者关系表的数据区块 if (filterBlockType === FilterBlockType.TABLE || filterBlockType === FilterBlockType.TREE) { return getDataBlocks().filter((block) => { + // 1. 同表 + // 2. 关系字段 + // 3. 外键字段 return ( fieldSchema['x-uid'] !== block.uid && (isSameCollection(block.collection, collection) || - block.associatedFields.some((field) => field.target === collection.name)) + getSupportFieldsByAssociation(getAllCollectionsInheritChain(collection.name), block)?.length || + getSupportFieldsByForeignKey(collection, block)?.length) ); }); } diff --git a/packages/core/client/src/schema-settings/SchemaSettings.tsx b/packages/core/client/src/schema-settings/SchemaSettings.tsx index 7285930a83..441bc4bf4d 100644 --- a/packages/core/client/src/schema-settings/SchemaSettings.tsx +++ b/packages/core/client/src/schema-settings/SchemaSettings.tsx @@ -59,7 +59,13 @@ import { } from '..'; import { useTableBlockContext } from '../block-provider'; import { findFilterTargets, updateFilterTargets } from '../block-provider/hooks'; -import { FilterBlockType, isSameCollection, useSupportedBlocks } from '../filter-provider/utils'; +import { + FilterBlockType, + getSupportFieldsByAssociation, + getSupportFieldsByForeignKey, + isSameCollection, + useSupportedBlocks, +} from '../filter-provider/utils'; import { useCollectMenuItem, useCollectMenuItems, useMenuItem } from '../hooks/useMenuItem'; import { getTargetKey } from '../schema-component/antd/association-filter/utilts'; import { getFieldDefaultValue } from '../schema-component/antd/form-item'; @@ -550,6 +556,7 @@ SchemaSettings.ConnectDataBlocks = function ConnectDataBlocks(props: { // eslint-disable-next-line prefer-const let { targets = [], uid } = findFilterTargets(fieldSchema); const compile = useCompile(); + const { getAllCollectionsInheritChain } = useCollectionManager(); if (!inProvider) { return null; @@ -614,14 +621,18 @@ SchemaSettings.ConnectDataBlocks = function ConnectDataBlocks(props: { title={title} value={target?.field || ''} options={[ - ...block.associatedFields - .filter((field) => field.target === collection.name) - .map((field) => { - return { - label: compile(field.uiSchema.title) || field.name, - value: `${field.name}.${getTargetKey(field)}`, - }; - }), + ...getSupportFieldsByAssociation(getAllCollectionsInheritChain(collection.name), block).map((field) => { + return { + label: compile(field.uiSchema.title) || field.name, + value: `${field.name}.${getTargetKey(field)}`, + }; + }), + ...getSupportFieldsByForeignKey(collection, block).map((field) => { + return { + label: `${compile(field.uiSchema.title) || field.name} [${t('Foreign key')}]`, + value: field.name, + }; + }), { label: t('Unconnected'), value: '', From c8b1668dc0a91050b0a00af0a8d39c089d5082d0 Mon Sep 17 00:00:00 2001 From: chenos Date: Tue, 25 Jul 2023 18:58:42 +0800 Subject: [PATCH 14/34] fix: collectionField interface undefined --- .../schema-component/antd/table-v2/Table.Column.Designer.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx b/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx index afbe503c92..afa4f51141 100644 --- a/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx +++ b/packages/core/client/src/schema-component/antd/table-v2/Table.Column.Designer.tsx @@ -44,7 +44,7 @@ export const TableColumnDesigner = (props) => { const { currentMode, field: tableField } = useAssociationFieldContext(); const defaultFilter = fieldSchema?.['x-component-props']?.service?.params?.filter || {}; const dataSource = useCollectionFilterOptions(collectionField?.target); - const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField.interface); + const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField?.interface); let readOnlyMode = 'editable'; if (fieldSchema['x-disabled'] === true) { readOnlyMode = 'readonly'; @@ -326,9 +326,8 @@ export const TableColumnDesigner = (props) => { )} {isDateField && } - {isSubTableColumn && !field?.readPretty && isShowDefaultValue(collectionField, getInterface) && ( - + )} Date: Tue, 25 Jul 2023 20:33:38 +0800 Subject: [PATCH 15/34] chore: fix Warning if eslint --- package.json | 1 + packages/core/devtools/package.json | 8 +- yarn.lock | 241 ++++++++++++++++++---------- 3 files changed, 164 insertions(+), 86 deletions(-) diff --git a/package.json b/package.json index 5b32e4d978..14651de5c6 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "resolutions": { "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", + "@typescript-eslint/parser": "^6.2.0", "react-router-dom": "^6.11.2", "react-router": "^6.11.2", "react": "^18.0.0", diff --git a/packages/core/devtools/package.json b/packages/core/devtools/package.json index 1bfd5d3868..14f1ae1561 100644 --- a/packages/core/devtools/package.json +++ b/packages/core/devtools/package.json @@ -14,18 +14,18 @@ "@types/node": "*", "@types/react": "^18.0.0", "@types/react-dom": "^18.0.0", - "@typescript-eslint/eslint-plugin": "^5.59.1", - "@typescript-eslint/parser": "^5.59.1", + "@typescript-eslint/eslint-plugin": "^6.2.0", + "@typescript-eslint/parser": "^6.2.0", "concurrently": "^7.0.0", "cross-env": "^7.0.3", - "eslint": "^8.39.0", + "eslint": "^8.45.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-import": "^2.27.5", "eslint-plugin-markdown": "^3.0.0", "eslint-plugin-node": "^11.1.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.32.2", + "eslint-plugin-react": "^7.33.0", "eslint-plugin-react-hooks": "^4.6.0", "jest": "^26.0.0", "jest-codemods": "^0.19.1", diff --git a/yarn.lock b/yarn.lock index d58413f4db..03d0045889 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3090,7 +3090,7 @@ version "0.18.11" resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz#6526c7e1b40d5b9f0a222c6b767c22f6fb97aa57" -"@eslint-community/eslint-utils@^4.2.0": +"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" dependencies: @@ -3100,6 +3100,11 @@ version "4.5.1" resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.5.1.tgz#cdd35dce4fa1a89a4fd42b1599eb35b3af408884" +"@eslint-community/regexpp@^4.5.1": + version "4.6.1" + resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.6.1.tgz#0b371c118b8e4ebf9dbddb56120ab4befd791211" + integrity sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A== + "@eslint/eslintrc@^2.1.0": version "2.1.0" resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-2.1.0.tgz#82256f164cc9e0b59669efc19d57f8092706841d" @@ -6114,7 +6119,7 @@ version "2.2.7" resolved "https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-2.2.7.tgz#226a9e31680835a6188e887f3988e60c04d3f6a3" -"@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.12" resolved "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" @@ -6360,7 +6365,7 @@ version "0.16.3" resolved "https://registry.npmmirror.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5" -"@types/semver@^7.3.12", "@types/semver@^7.3.9": +"@types/semver@^7.3.12", "@types/semver@^7.3.9", "@types/semver@^7.5.0": version "7.5.0" resolved "https://registry.npmmirror.com/@types/semver/-/semver-7.5.0.tgz#591c1ce3a702c45ee15f47a42ade72c2fd78978a" @@ -6491,37 +6496,33 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/eslint-plugin@^5.59.1": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.61.0.tgz#a1a5290cf33863b4db3fb79350b3c5275a7b1223" +"@typescript-eslint/eslint-plugin@^6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz#57047c400be0632d4797ac081af8d399db3ebc3b" + integrity sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ== dependencies: - "@eslint-community/regexpp" "^4.4.0" - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/type-utils" "5.61.0" - "@typescript-eslint/utils" "5.61.0" + "@eslint-community/regexpp" "^4.5.1" + "@typescript-eslint/scope-manager" "6.2.0" + "@typescript-eslint/type-utils" "6.2.0" + "@typescript-eslint/utils" "6.2.0" + "@typescript-eslint/visitor-keys" "6.2.0" debug "^4.3.4" graphemer "^1.4.0" - ignore "^5.2.0" + ignore "^5.2.4" + natural-compare "^1.4.0" natural-compare-lite "^1.4.0" - semver "^7.3.7" - tsutils "^3.21.0" + semver "^7.5.4" + ts-api-utils "^1.0.1" -"@typescript-eslint/parser@5.48.1": - version "5.48.1" - resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.48.1.tgz#d0125792dab7e232035434ab8ef0658154db2f10" +"@typescript-eslint/parser@5.48.1", "@typescript-eslint/parser@^6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.2.0.tgz#d37c30b0f459c6f39455335d8f4f085919a1c644" + integrity sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g== dependencies: - "@typescript-eslint/scope-manager" "5.48.1" - "@typescript-eslint/types" "5.48.1" - "@typescript-eslint/typescript-estree" "5.48.1" - debug "^4.3.4" - -"@typescript-eslint/parser@^5.59.1": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-5.61.0.tgz#7fbe3e2951904bb843f8932ebedd6e0635bffb70" - dependencies: - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/typescript-estree" "5.61.0" + "@typescript-eslint/scope-manager" "6.2.0" + "@typescript-eslint/types" "6.2.0" + "@typescript-eslint/typescript-estree" "6.2.0" + "@typescript-eslint/visitor-keys" "6.2.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.48.1": @@ -6531,42 +6532,60 @@ "@typescript-eslint/types" "5.48.1" "@typescript-eslint/visitor-keys" "5.48.1" -"@typescript-eslint/scope-manager@5.61.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.61.0.tgz#b670006d069c9abe6415c41f754b1b5d949ef2b2" +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/visitor-keys" "5.61.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/scope-manager@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz#412a710d8fa20bc045533b3b19f423810b24f87a" + integrity sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q== + dependencies: + "@typescript-eslint/types" "6.2.0" + "@typescript-eslint/visitor-keys" "6.2.0" "@typescript-eslint/type-utils@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz#5d94ac0c269a81a91ad77c03407cea2caf481412" + integrity sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ== dependencies: "@typescript-eslint/typescript-estree" "5.48.1" "@typescript-eslint/utils" "5.48.1" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@5.61.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.61.0.tgz#e90799eb2045c4435ea8378cb31cd8a9fddca47a" +"@typescript-eslint/type-utils@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz#02b27a3eeb41aa5460d6275d12cce5dd72e1c9fc" + integrity sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw== dependencies: - "@typescript-eslint/typescript-estree" "5.61.0" - "@typescript-eslint/utils" "5.61.0" + "@typescript-eslint/typescript-estree" "6.2.0" + "@typescript-eslint/utils" "6.2.0" debug "^4.3.4" - tsutils "^3.21.0" + ts-api-utils "^1.0.1" "@typescript-eslint/types@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.48.1.tgz#efd1913a9aaf67caf8a6e6779fd53e14e8587e14" -"@typescript-eslint/types@5.61.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.61.0.tgz#e99ff11b5792d791554abab0f0370936d8ca50c0" +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/types@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.2.0.tgz#b341a4e6d5f609267306b07afc6f62bcf92b1495" + integrity sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA== "@typescript-eslint/typescript-estree@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz#9efa8ee2aa471c6ab62e649f6e64d8d121bc2056" + integrity sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA== dependencies: "@typescript-eslint/types" "5.48.1" "@typescript-eslint/visitor-keys" "5.48.1" @@ -6576,21 +6595,36 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@5.61.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.61.0.tgz#4c7caca84ce95bb41aa585d46a764bcc050b92f3" +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/visitor-keys" "5.61.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz#4969944b831b481996aa4fbd73c7164ca683b8ef" + integrity sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w== + dependencies: + "@typescript-eslint/types" "6.2.0" + "@typescript-eslint/visitor-keys" "6.2.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.5.4" + ts-api-utils "^1.0.1" + "@typescript-eslint/utils@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.1.tgz#20f2f4e88e9e2a0961cbebcb47a1f0f7da7ba7f9" + integrity sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" @@ -6601,16 +6635,30 @@ eslint-utils "^3.0.0" semver "^7.3.7" -"@typescript-eslint/utils@5.61.0", "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.61.0.tgz#5064838a53e91c754fffbddd306adcca3fe0af36" +"@typescript-eslint/utils@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.2.0.tgz#606a20e5c13883c2d2bd0538ddc4b96b8d410979" + integrity sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + "@types/json-schema" "^7.0.12" + "@types/semver" "^7.5.0" + "@typescript-eslint/scope-manager" "6.2.0" + "@typescript-eslint/types" "6.2.0" + "@typescript-eslint/typescript-estree" "6.2.0" + semver "^7.5.4" + +"@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": + version "5.62.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" - "@typescript-eslint/scope-manager" "5.61.0" - "@typescript-eslint/types" "5.61.0" - "@typescript-eslint/typescript-estree" "5.61.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" eslint-scope "^5.1.1" semver "^7.3.7" @@ -6621,13 +6669,22 @@ "@typescript-eslint/types" "5.48.1" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@5.61.0": - version "5.61.0" - resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.61.0.tgz#c79414fa42158fd23bd2bb70952dc5cdbb298140" +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: - "@typescript-eslint/types" "5.61.0" + "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@6.2.0": + version "6.2.0" + resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz#71943f42fdaa2ec86dc3222091f41761a49ae71a" + integrity sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ== + dependencies: + "@typescript-eslint/types" "6.2.0" + eslint-visitor-keys "^3.4.1" + "@umijs/ast@4.0.72": version "4.0.72" resolved "https://registry.npmmirror.com/@umijs/ast/-/ast-4.0.72.tgz#54cf0d5edc5a09b06a2dff51d978cb3dc6bc6e11" @@ -11797,14 +11854,6 @@ eslint-plugin-node@^11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" - integrity sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w== - dependencies: - prettier-linter-helpers "^1.0.0" - synckit "^0.8.5" - eslint-plugin-prettier@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz#6887780ed95f7708340ec79acfdf60c35b9be57a" @@ -11820,7 +11869,7 @@ eslint-plugin-react-hooks@4.6.0, eslint-plugin-react-hooks@^4.6.0: version "4.6.0" resolved "https://registry.npmmirror.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" -eslint-plugin-react@7.32.2, eslint-plugin-react@^7.32.2: +eslint-plugin-react@7.32.2: version "7.32.2" resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10" dependencies: @@ -11840,6 +11889,27 @@ eslint-plugin-react@7.32.2, eslint-plugin-react@^7.32.2: semver "^6.3.0" string.prototype.matchall "^4.0.8" +eslint-plugin-react@^7.33.0: + version "7.33.0" + resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz#6c356fb0862fec2cd1b04426c669ea746e9b6eb3" + integrity sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + eslint-plugin-testing-library@^5.11.0: version "5.11.0" resolved "https://registry.npmmirror.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.0.tgz#0bad7668e216e20dd12f8c3652ca353009163121" @@ -11884,9 +11954,10 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: version "3.4.1" resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz#c22c48f48942d08ca824cc526211ae400478a994" -eslint@^8.39.0: - version "8.44.0" - resolved "https://registry.npmmirror.com/eslint/-/eslint-8.44.0.tgz#51246e3889b259bbcd1d7d736a0c10add4f0e500" +eslint@^8.45.0: + version "8.45.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" + integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" @@ -11913,7 +11984,6 @@ eslint@^8.39.0: globals "^13.19.0" graphemer "^1.4.0" ignore "^5.2.0" - import-fresh "^3.0.0" imurmurhash "^0.1.4" is-glob "^4.0.0" is-path-inside "^3.0.3" @@ -11925,7 +11995,6 @@ eslint@^8.39.0: natural-compare "^1.4.0" optionator "^0.9.3" strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" text-table "^0.2.0" espree@^9.6.0: @@ -13965,7 +14034,7 @@ ignore@^3.3.5: version "3.3.10" resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" -ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -20397,15 +20466,6 @@ prettier@2.2.1: version "2.2.1" resolved "https://registry.npmmirror.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" -prettier@^3.0.0: - version "3.0.0" - resolved "https://registry.npmmirror.com/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" - integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== - -prettier@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" - prettier@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" @@ -22558,6 +22618,18 @@ semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.3.2, semver@^7. dependencies: lru-cache "^6.0.0" +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.5.4: + version "7.5.4" + resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + semver@~7.2.0: version "7.2.3" resolved "https://registry.npmmirror.com/semver/-/semver-7.2.3.tgz#3641217233c6382173c76bf2c7ecd1e1c16b0d8a" @@ -23437,7 +23509,7 @@ strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" @@ -24130,6 +24202,11 @@ trough@^2.0.0: version "2.1.0" resolved "https://registry.npmmirror.com/trough/-/trough-2.1.0.tgz#0f7b511a4fde65a46f18477ab38849b22c554876" +ts-api-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d" + integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A== + ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" From 78bfcba24f1bea3fbcb646ce07ba89de5a3e9016 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Tue, 25 Jul 2023 20:45:01 +0800 Subject: [PATCH 16/34] fix(bi): issue of dnd (#2315) --- .../src/schema-component/common/dnd-context/index.tsx | 1 - .../data-visualization/src/client/block/ChartConfigure.tsx | 3 +-- .../src/client/renderer/ChartRenderer.tsx | 6 +----- .../plugins/data-visualization/src/server/actions/query.ts | 6 +----- 4 files changed, 3 insertions(+), 13 deletions(-) diff --git a/packages/core/client/src/schema-component/common/dnd-context/index.tsx b/packages/core/client/src/schema-component/common/dnd-context/index.tsx index d72a488a36..be7394b258 100644 --- a/packages/core/client/src/schema-component/common/dnd-context/index.tsx +++ b/packages/core/client/src/schema-component/common/dnd-context/index.tsx @@ -20,7 +20,6 @@ const useDragEnd = (props?: any) => { const wrapSchema = over?.data?.current?.wrapSchema; const onSuccess = over?.data?.current?.onSuccess; const removeParentsIfNoChildren = over?.data?.current?.removeParentsIfNoChildren ?? true; - if (!activeSchema || !overSchema) { props?.onDragEnd?.(event); return; diff --git a/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx b/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx index a69144e720..6ada068744 100644 --- a/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx +++ b/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx @@ -199,9 +199,8 @@ export const ChartConfigure: React.FC<{ afterSave(); return; } - insert(createRendererSchema(rendererProps), { + insert(gridRowColWrap(createRendererSchema(rendererProps)), { onSuccess: afterSave, - wrap: gridRowColWrap, }); }} onCancel={() => { diff --git a/packages/plugins/data-visualization/src/client/renderer/ChartRenderer.tsx b/packages/plugins/data-visualization/src/client/renderer/ChartRenderer.tsx index da781d5c9f..7cd1b4bbdc 100644 --- a/packages/plugins/data-visualization/src/client/renderer/ChartRenderer.tsx +++ b/packages/plugins/data-visualization/src/client/renderer/ChartRenderer.tsx @@ -96,11 +96,7 @@ ChartRenderer.Designer = function Designer() { - insertAdjacent('afterEnd', createRendererSchema(schema?.['x-decorator-props']), { - wrap: gridRowColWrap, - }) - } + onClick={() => insertAdjacent('afterEnd', gridRowColWrap(createRendererSchema(schema?.['x-decorator-props'])))} > {t('Duplicate')} diff --git a/packages/plugins/data-visualization/src/server/actions/query.ts b/packages/plugins/data-visualization/src/server/actions/query.ts index 2ba510469b..7fd7733db8 100644 --- a/packages/plugins/data-visualization/src/server/actions/query.ts +++ b/packages/plugins/data-visualization/src/server/actions/query.ts @@ -161,11 +161,7 @@ export const parseBuilder = (ctx: Context, builder: QueryParams) => { }); orders.forEach((item: OrderProps) => { - const dialect = sequelize.getDialect(); - let alias = `"${item.alias}"`; - if (dialect === 'mysql') { - alias = `\`${item.alias}\``; - } + const alias = sequelize.getQueryInterface().quoteIdentifier(item.alias); const name = hasAgg ? sequelize.literal(alias) : sequelize.col(item.field as string); order.push([name, item.order || 'ASC']); }); From 07ff868133e9350113d67b8e2b6bb0a89121ef10 Mon Sep 17 00:00:00 2001 From: Dunqing Date: Tue, 25 Jul 2023 21:51:23 +0800 Subject: [PATCH 17/34] fix: should use `filter` instead of `where` (#2318) --- packages/plugins/auth/src/server/token-blacklist.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/plugins/auth/src/server/token-blacklist.ts b/packages/plugins/auth/src/server/token-blacklist.ts index 841b9dbf82..cb7f20bac5 100644 --- a/packages/plugins/auth/src/server/token-blacklist.ts +++ b/packages/plugins/auth/src/server/token-blacklist.ts @@ -41,7 +41,7 @@ export class TokenBlacklistService implements ITokenBlacklistService { async has(token: string) { return !!(await this.repo.findOne({ - where: { + filter: { token, }, })); From 673ea808b01008b4eb7225575d5df501b2cb0e2f Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Wed, 26 Jul 2023 10:18:02 +0800 Subject: [PATCH 18/34] fix: collectionField undefined (#2320) --- .../client/src/schema-component/antd/form-item/FormItem.tsx | 4 ++-- packages/core/client/src/schema-settings/SchemaSettings.tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx index 3607e887bf..05cf804f8a 100644 --- a/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx +++ b/packages/core/client/src/schema-component/antd/form-item/FormItem.tsx @@ -69,7 +69,7 @@ export const FormItem: any = observer( } else if ( isVariable(schema?.default) && schema?.default?.includes('$context') && - collectionField.interface === 'm2m' + collectionField?.interface === 'm2m' ) { // 直接对多 const contextData = parseVariables('{{$context}}', variablesCtx); @@ -212,7 +212,7 @@ FormItem.Designer = function Designer() { const isPickerMode = fieldSchema['x-component-props']?.mode === 'Picker'; const showFieldMode = isAssociationField && fieldModeOptions && !isTableField; const showModeSelect = showFieldMode && isPickerMode; - const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField.interface); + const isDateField = ['datetime', 'createdAt', 'updatedAt'].includes(collectionField?.interface); return ( diff --git a/packages/core/client/src/schema-settings/SchemaSettings.tsx b/packages/core/client/src/schema-settings/SchemaSettings.tsx index 441bc4bf4d..ab98a5bc13 100644 --- a/packages/core/client/src/schema-settings/SchemaSettings.tsx +++ b/packages/core/client/src/schema-settings/SchemaSettings.tsx @@ -1462,12 +1462,12 @@ SchemaSettings.DefaultValue = function DefaultvalueConfigure(props) { `${collectionField.target}.${fieldSchema['x-component-props']?.fieldNames?.label || 'id'}`, ); } - const parentFieldSchema = collectionField.interface === 'm2o' && findParentFieldSchema(fieldSchema); + const parentFieldSchema = collectionField?.interface === 'm2o' && findParentFieldSchema(fieldSchema); const parentCollectionField = parentFieldSchema && getCollectionJoinField(parentFieldSchema?.['x-collection-field']); const tableCtx = useTableBlockContext(); const isAllowContexVariable = - collectionField.interface === 'm2m' || - (parentCollectionField?.type === 'hasMany' && collectionField.interface === 'm2o'); + collectionField?.interface === 'm2m' || + (parentCollectionField?.type === 'hasMany' && collectionField?.interface === 'm2o'); return ( Date: Wed, 26 Jul 2023 15:25:07 +0800 Subject: [PATCH 19/34] chore: platforms: linux/amd64,linux/arm64 --- .github/workflows/build-docker-image.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-docker-image.yml b/.github/workflows/build-docker-image.yml index cc34d3860f..a10a82110f 100644 --- a/.github/workflows/build-docker-image.yml +++ b/.github/workflows/build-docker-image.yml @@ -83,6 +83,7 @@ jobs: VERDACCIO_URL=http://localhost:4873/ COMMIT_HASH=${GITHUB_SHA} push: true + platforms: linux/amd64,linux/arm64 tags: ${{ steps.set-tags.outputs.tags }} - name: Deploy NocoBase From 0de44589366bac839e322f482f0d98d1161241b2 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Wed, 26 Jul 2023 15:32:59 +0800 Subject: [PATCH 20/34] chore: improve FormProvider (#2322) --- .../schema-component/core/FormProvider.tsx | 25 ++- .../src/client/block/ChartConfigure.tsx | 174 ++++++++---------- yarn.lock | 23 --- 3 files changed, 97 insertions(+), 125 deletions(-) diff --git a/packages/core/client/src/schema-component/core/FormProvider.tsx b/packages/core/client/src/schema-component/core/FormProvider.tsx index 1b57322ec1..75b2774bd2 100644 --- a/packages/core/client/src/schema-component/core/FormProvider.tsx +++ b/packages/core/client/src/schema-component/core/FormProvider.tsx @@ -7,13 +7,12 @@ import { import React, { useContext, useMemo } from 'react'; import { SchemaComponentOptions } from './SchemaComponentOptions'; -export const FormProvider: React.FC = (props) => { - const { children, ...others } = props; +const WithForm = (props) => { + const { children, form, ...others } = props; const options = useContext(SchemaOptionsContext); const expressionScope = useContext(SchemaExpressionScopeContext); const scope = { ...options?.scope, ...expressionScope }; const components = { ...options?.components }; - const form = useMemo(() => props.form || createForm(), []); return ( @@ -22,3 +21,23 @@ export const FormProvider: React.FC = (props) => { ); }; + +const WithoutForm = (props) => { + const { children, ...others } = props; + const options = useContext(SchemaOptionsContext); + const expressionScope = useContext(SchemaExpressionScopeContext); + const scope = { ...options?.scope, ...expressionScope }; + const components = { ...options?.components }; + const form = useMemo(() => createForm(), []); + return ( + + + {children} + + + ); +}; + +export const FormProvider: React.FC = (props) => { + return props.form ? : ; +}; diff --git a/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx b/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx index 6ada068744..881f37d93b 100644 --- a/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx +++ b/packages/plugins/data-visualization/src/client/block/ChartConfigure.tsx @@ -1,17 +1,11 @@ import { RightSquareOutlined } from '@ant-design/icons'; -import { ArrayItems, Editable, Form, FormCollapse, FormItem, Switch } from '@formily/antd-v5'; +import { ArrayItems, Editable, FormCollapse, FormItem, FormLayout, Switch } from '@formily/antd-v5'; import { Form as FormType, ObjectField, createForm, onFieldChange, onFormInit } from '@formily/core'; import { FormConsumer, ISchema, Schema } from '@formily/react'; import { AutoComplete, - Cascader, - DatePicker, - Filter, - Input, - InputNumber, - Radio, + FormProvider, SchemaComponent, - Select, gridRowColWrap, useCollectionFieldsOptions, useCollectionFilterOptions, @@ -126,17 +120,14 @@ export const ChartConfigure: React.FC<{ }; const chartType = useDefaultChartType(); const form = useMemo( - () => { - return createForm({ + () => + createForm({ values: { config: { chartType }, ...(initialValues || field?.decoratorProps), collection }, effects: (form) => { onFieldChange('config.chartType', () => initChart(true)); - onFormInit(() => { - queryReact(form); - }); + onFormInit(() => queryReact(form)); }, - }); - }, + }), // visible, collection added here to re-initialize form when visible, collection change // eslint-disable-next-line react-hooks/exhaustive-deps [field, visible, collection], @@ -223,70 +214,72 @@ export const ChartConfigure: React.FC<{ background: 'rgba(128, 128, 128, 0.08)', }} > -
- - - - } - items={[ - { - label: t('Query'), - key: 'query', - children: , - }, - { - label: t('Data'), - key: 'data', - children: , - }, - ]} - /> - - - - - , - }, - { - label: t('Transform'), - key: 'transform', - children: , - }, - ]} - /> - - - - - - - - -
+ + + + + + } + items={[ + { + label: t('Query'), + key: 'query', + children: , + }, + { + label: t('Data'), + key: 'data', + children: , + }, + ]} + /> + + + + + , + }, + { + label: t('Transform'), + key: 'transform', + children: , + }, + ]} + /> + + + + + + + + + + ); }; @@ -358,24 +351,7 @@ ChartConfigure.Query = function Query() { collection: current?.collection, useOrderReaction: useOrderReaction(compiledFieldOptions, fields), }} - components={{ - ArrayItems, - Editable, - FormCollapse, - Card, - Switch, - Select, - Input, - InputNumber, - FormItem, - Radio, - Space, - Filter, - DatePicker, - Text, - FromSql, - Cascader, - }} + components={{ ArrayItems, Editable, FormCollapse, FormItem, Space, Switch, FromSql }} /> ); }; @@ -410,7 +386,7 @@ ChartConfigure.Config = function Config() { ); }} @@ -426,7 +402,7 @@ ChartConfigure.Transform = function Transform() { return ( ); diff --git a/yarn.lock b/yarn.lock index 03d0045889..edc44b6d15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3103,7 +3103,6 @@ "@eslint-community/regexpp@^4.5.1": version "4.6.1" resolved "https://registry.npmmirror.com/@eslint-community/regexpp/-/regexpp-4.6.1.tgz#0b371c118b8e4ebf9dbddb56120ab4befd791211" - integrity sha512-O7x6dMstWLn2ktjcoiNLDkAGG2EjveHL+Vvc+n0fXumkJYAcSqcVYKtwDU+hDZ0uDUsnUagSYaZrOLAYE8un1A== "@eslint/eslintrc@^2.1.0": version "2.1.0" @@ -6499,7 +6498,6 @@ "@typescript-eslint/eslint-plugin@^6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.2.0.tgz#57047c400be0632d4797ac081af8d399db3ebc3b" - integrity sha512-rClGrMuyS/3j0ETa1Ui7s6GkLhfZGKZL3ZrChLeAiACBE/tRc1wq8SNZESUuluxhLj9FkUefRs2l6bCIArWBiQ== dependencies: "@eslint-community/regexpp" "^4.5.1" "@typescript-eslint/scope-manager" "6.2.0" @@ -6517,7 +6515,6 @@ "@typescript-eslint/parser@5.48.1", "@typescript-eslint/parser@^6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/parser/-/parser-6.2.0.tgz#d37c30b0f459c6f39455335d8f4f085919a1c644" - integrity sha512-igVYOqtiK/UsvKAmmloQAruAdUHihsOCvplJpplPZ+3h4aDkC/UKZZNKgB6h93ayuYLuEymU3h8nF1xMRbh37g== dependencies: "@typescript-eslint/scope-manager" "6.2.0" "@typescript-eslint/types" "6.2.0" @@ -6535,7 +6532,6 @@ "@typescript-eslint/scope-manager@5.62.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" @@ -6543,7 +6539,6 @@ "@typescript-eslint/scope-manager@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/scope-manager/-/scope-manager-6.2.0.tgz#412a710d8fa20bc045533b3b19f423810b24f87a" - integrity sha512-1ZMNVgm5nnHURU8ZSJ3snsHzpFeNK84rdZjluEVBGNu7jDymfqceB3kdIZ6A4xCfEFFhRIB6rF8q/JIqJd2R0Q== dependencies: "@typescript-eslint/types" "6.2.0" "@typescript-eslint/visitor-keys" "6.2.0" @@ -6551,7 +6546,6 @@ "@typescript-eslint/type-utils@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz#5d94ac0c269a81a91ad77c03407cea2caf481412" - integrity sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ== dependencies: "@typescript-eslint/typescript-estree" "5.48.1" "@typescript-eslint/utils" "5.48.1" @@ -6561,7 +6555,6 @@ "@typescript-eslint/type-utils@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/type-utils/-/type-utils-6.2.0.tgz#02b27a3eeb41aa5460d6275d12cce5dd72e1c9fc" - integrity sha512-DnGZuNU2JN3AYwddYIqrVkYW0uUQdv0AY+kz2M25euVNlujcN2u+rJgfJsBFlUEzBB6OQkUqSZPyuTLf2bP5mw== dependencies: "@typescript-eslint/typescript-estree" "6.2.0" "@typescript-eslint/utils" "6.2.0" @@ -6575,17 +6568,14 @@ "@typescript-eslint/types@5.62.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== "@typescript-eslint/types@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/types/-/types-6.2.0.tgz#b341a4e6d5f609267306b07afc6f62bcf92b1495" - integrity sha512-1nRRaDlp/XYJQLvkQJG5F3uBTno5SHPT7XVcJ5n1/k2WfNI28nJsvLakxwZRNY5spuatEKO7d5nZWsQpkqXwBA== "@typescript-eslint/typescript-estree@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz#9efa8ee2aa471c6ab62e649f6e64d8d121bc2056" - integrity sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA== dependencies: "@typescript-eslint/types" "5.48.1" "@typescript-eslint/visitor-keys" "5.48.1" @@ -6598,7 +6588,6 @@ "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== dependencies: "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" @@ -6611,7 +6600,6 @@ "@typescript-eslint/typescript-estree@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.2.0.tgz#4969944b831b481996aa4fbd73c7164ca683b8ef" - integrity sha512-Mts6+3HQMSM+LZCglsc2yMIny37IhUgp1Qe8yJUYVyO6rHP7/vN0vajKu3JvHCBIy8TSiKddJ/Zwu80jhnGj1w== dependencies: "@typescript-eslint/types" "6.2.0" "@typescript-eslint/visitor-keys" "6.2.0" @@ -6624,7 +6612,6 @@ "@typescript-eslint/utils@5.48.1": version "5.48.1" resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.48.1.tgz#20f2f4e88e9e2a0961cbebcb47a1f0f7da7ba7f9" - integrity sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA== dependencies: "@types/json-schema" "^7.0.9" "@types/semver" "^7.3.12" @@ -6638,7 +6625,6 @@ "@typescript-eslint/utils@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-6.2.0.tgz#606a20e5c13883c2d2bd0538ddc4b96b8d410979" - integrity sha512-RCFrC1lXiX1qEZN8LmLrxYRhOkElEsPKTVSNout8DMzf8PeWoQG7Rxz2SadpJa3VSh5oYKGwt7j7X/VRg+Y3OQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" @@ -6651,7 +6637,6 @@ "@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.58.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" - integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@types/json-schema" "^7.0.9" @@ -6672,7 +6657,6 @@ "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== dependencies: "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" @@ -6680,7 +6664,6 @@ "@typescript-eslint/visitor-keys@6.2.0": version "6.2.0" resolved "https://registry.npmmirror.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.2.0.tgz#71943f42fdaa2ec86dc3222091f41761a49ae71a" - integrity sha512-QbaYUQVKKo9bgCzpjz45llCfwakyoxHetIy8CAvYCtd16Zu1KrpzNHofwF8kGkpPOxZB2o6kz+0nqH8ZkIzuoQ== dependencies: "@typescript-eslint/types" "6.2.0" eslint-visitor-keys "^3.4.1" @@ -11892,7 +11875,6 @@ eslint-plugin-react@7.32.2: eslint-plugin-react@^7.33.0: version "7.33.0" resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.33.0.tgz#6c356fb0862fec2cd1b04426c669ea746e9b6eb3" - integrity sha512-qewL/8P34WkY8jAqdQxsiL82pDUeT7nhs8IsuXgfgnsEloKCT4miAV9N9kGtx7/KM9NH/NCGUE7Edt9iGxLXFw== dependencies: array-includes "^3.1.6" array.prototype.flatmap "^1.3.1" @@ -11957,7 +11939,6 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1: eslint@^8.45.0: version "8.45.0" resolved "https://registry.npmmirror.com/eslint/-/eslint-8.45.0.tgz#bab660f90d18e1364352c0a6b7c6db8edb458b78" - integrity sha512-pd8KSxiQpdYRfYa9Wufvdoct3ZPQQuVuU5O6scNgMuOMYuxvH0IGaYK0wUFjo4UYYQQCUndlXiMbnxopwvvTiw== dependencies: "@eslint-community/eslint-utils" "^4.2.0" "@eslint-community/regexpp" "^4.4.0" @@ -20469,7 +20450,6 @@ prettier@2.2.1: prettier@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz#e7b19f691245a21d618c68bc54dc06122f6105ae" - integrity sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g== pretty-error@^4.0.0: version "4.0.0" @@ -22621,12 +22601,10 @@ semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.3.2, semver@^7. semver@^6.3.1: version "6.3.1" resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== semver@^7.5.4: version "7.5.4" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== dependencies: lru-cache "^6.0.0" @@ -24205,7 +24183,6 @@ trough@^2.0.0: ts-api-utils@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.0.1.tgz#8144e811d44c749cd65b2da305a032510774452d" - integrity sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A== ts-dedent@^2.2.0: version "2.2.0" From 80779c3a980ace528049347621bd57310dc11506 Mon Sep 17 00:00:00 2001 From: Junyi Date: Wed, 26 Jul 2023 14:38:51 +0700 Subject: [PATCH 21/34] fix(plugin-workflow): fix expression field in sub-form (#2324) --- .../src/client/components/DynamicExpression.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/plugins/workflow/src/client/components/DynamicExpression.tsx b/packages/plugins/workflow/src/client/components/DynamicExpression.tsx index 385b998f73..777173bd28 100644 --- a/packages/plugins/workflow/src/client/components/DynamicExpression.tsx +++ b/packages/plugins/workflow/src/client/components/DynamicExpression.tsx @@ -1,5 +1,5 @@ import { onFieldInputValueChange, onFormInitialValuesChange } from '@formily/core'; -import { connect, mapReadPretty, observer, useForm, useFormEffects } from '@formily/react'; +import { connect, mapReadPretty, observer, useField, useForm, useFormEffects } from '@formily/react'; import { Tag } from 'antd'; import React, { useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -12,16 +12,20 @@ import { getCollectionFieldOptions } from '../variable'; const InternalExpression = observer( (props: any) => { const { onChange } = props; - const { values } = useForm(); - const [collection, setCollection] = useState(values?.sourceCollection); + const field = useField(); + // TODO(refactor): better to provide another context like useFieldset() + const form = useForm(); + const basePath = field.path.segments.slice(0, -1); + const collectionPath = [...basePath, 'sourceCollection'].join('.'); + const [collection, setCollection] = useState(form.getValuesIn(collectionPath)); const compile = useCompile(); const { getCollectionFields } = useCollectionManager(); useFormEffects(() => { onFormInitialValuesChange((form) => { - setCollection(form.values.sourceCollection); + setCollection(form.getValuesIn(collectionPath)); }); - onFieldInputValueChange('sourceCollection', (f) => { + onFieldInputValueChange(collectionPath, (f) => { setCollection(f.value); onChange(null); }); From 894167d41384f3cabb1946ea9dd2aa777dde3c62 Mon Sep 17 00:00:00 2001 From: chenos Date: Wed, 26 Jul 2023 17:32:57 +0800 Subject: [PATCH 22/34] Revert "chore: platforms: linux/amd64,linux/arm64" This reverts commit f9de7c3156fed7600a4c012ebed13e4417c745a2. --- .github/workflows/build-docker-image.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build-docker-image.yml b/.github/workflows/build-docker-image.yml index a10a82110f..cc34d3860f 100644 --- a/.github/workflows/build-docker-image.yml +++ b/.github/workflows/build-docker-image.yml @@ -83,7 +83,6 @@ jobs: VERDACCIO_URL=http://localhost:4873/ COMMIT_HASH=${GITHUB_SHA} push: true - platforms: linux/amd64,linux/arm64 tags: ${{ steps.set-tags.outputs.tags }} - name: Deploy NocoBase From 81819f04e3bdd108a1a70038352545748552c2f9 Mon Sep 17 00:00:00 2001 From: chenos Date: Wed, 26 Jul 2023 17:37:20 +0800 Subject: [PATCH 23/34] =?UTF-8?q?chore(versions):=20=F0=9F=98=8A=20publish?= =?UTF-8?q?=20v0.11.1-alpha.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lerna.json | 6 +- packages/app/client/package.json | 4 +- packages/app/server/package.json | 4 +- packages/core/acl/package.json | 6 +- packages/core/actions/package.json | 10 +-- packages/core/auth/package.json | 10 +-- packages/core/build/package.json | 2 +- packages/core/cache/package.json | 2 +- packages/core/cli/package.json | 4 +- packages/core/client/package.json | 8 +- .../core/create-nocobase-app/package.json | 2 +- packages/core/database/package.json | 6 +- packages/core/devtools/package.json | 4 +- packages/core/evaluators/package.json | 4 +- packages/core/logger/package.json | 2 +- packages/core/resourcer/package.json | 6 +- packages/core/sdk/package.json | 2 +- packages/core/server/package.json | 18 ++--- packages/core/test/package.json | 4 +- packages/core/utils/package.json | 2 +- packages/plugins/acl/package.json | 16 ++-- packages/plugins/api-keys/package.json | 16 ++-- packages/plugins/audit-logs/package.json | 10 +-- packages/plugins/auth/package.json | 14 ++-- packages/plugins/charts/package.json | 12 +-- packages/plugins/china-region/package.json | 10 +-- packages/plugins/client/package.json | 12 +-- .../plugins/collection-manager/package.json | 14 ++-- .../plugins/data-visualization/package.json | 16 ++-- packages/plugins/duplicator/package.json | 12 +-- packages/plugins/error-handler/package.json | 12 +-- .../plugins/excel-formula-field/package.json | 10 +-- packages/plugins/export/package.json | 14 ++-- packages/plugins/file-manager/package.json | 14 ++-- packages/plugins/formula-field/package.json | 14 ++-- .../graph-collection-manager/package.json | 12 +-- packages/plugins/iframe-block/package.json | 12 +-- packages/plugins/import/package.json | 14 ++-- .../localization-management/package.json | 18 ++--- packages/plugins/map/package.json | 14 ++-- .../plugins/math-formula-field/package.json | 10 +-- packages/plugins/mobile-client/package.json | 12 +-- .../plugins/multi-app-manager/package.json | 12 +-- .../multi-app-share-collection/package.json | 20 ++--- packages/plugins/notifications/package.json | 12 +-- packages/plugins/oidc/package.json | 14 ++-- packages/plugins/saml/package.json | 14 ++-- packages/plugins/sequence-field/package.json | 14 ++-- packages/plugins/sms-auth/package.json | 18 ++--- packages/plugins/snapshot-field/package.json | 12 +-- packages/plugins/system-settings/package.json | 10 +-- packages/plugins/theme-editor/package.json | 12 +-- .../plugins/ui-routes-storage/package.json | 12 +-- .../plugins/ui-schema-storage/package.json | 22 +++--- packages/plugins/users/package.json | 20 ++--- packages/plugins/verification/package.json | 16 ++-- packages/plugins/workflow/package.json | 4 +- packages/presets/nocobase/package.json | 78 +++++++++---------- packages/samples/command/package.json | 8 +- packages/samples/custom-block/package.json | 8 +- .../custom-collection-template/package.json | 8 +- packages/samples/custom-page/package.json | 8 +- .../samples/custom-signup-page/package.json | 8 +- packages/samples/hello/package.json | 8 +- packages/samples/ratelimit/package.json | 8 +- packages/samples/shop-actions/package.json | 8 +- packages/samples/shop-events/package.json | 8 +- packages/samples/shop-i18n/package.json | 8 +- packages/samples/shop-modeling/package.json | 10 +-- 69 files changed, 386 insertions(+), 388 deletions(-) diff --git a/lerna.json b/lerna.json index b65498d384..19b61269fb 100644 --- a/lerna.json +++ b/lerna.json @@ -1,10 +1,8 @@ { - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "npmClient": "yarn", "useWorkspaces": true, - "npmClientArgs": [ - "--ignore-engines" - ], + "npmClientArgs": ["--ignore-engines"], "command": { "version": { "forcePublish": true, diff --git a/packages/app/client/package.json b/packages/app/client/package.json index 5e376fdcef..6a009a6151 100644 --- a/packages/app/client/package.json +++ b/packages/app/client/package.json @@ -1,9 +1,9 @@ { "name": "@nocobase/app-client", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3" }, "repository": { "type": "git", diff --git a/packages/app/server/package.json b/packages/app/server/package.json index bc4c8abb53..467d7afcf8 100644 --- a/packages/app/server/package.json +++ b/packages/app/server/package.json @@ -1,12 +1,12 @@ { "name": "@nocobase/app-server", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "AGPL-3.0", "main": "./lib/index.js", "types": "./lib/index.d.ts", "dependencies": { - "@nocobase/preset-nocobase": "0.11.1-alpha.2" + "@nocobase/preset-nocobase": "0.11.1-alpha.3" }, "repository": { "type": "git", diff --git a/packages/core/acl/package.json b/packages/core/acl/package.json index 5b9b9e1efa..5f80806442 100644 --- a/packages/core/acl/package.json +++ b/packages/core/acl/package.json @@ -1,13 +1,13 @@ { "name": "@nocobase/acl", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./lib/index.js", "types": "./lib/index.d.ts", "dependencies": { - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "minimatch": "^5.1.1" }, "repository": { diff --git a/packages/core/actions/package.json b/packages/core/actions/package.json index ea4e2f7e10..b0636d0e97 100644 --- a/packages/core/actions/package.json +++ b/packages/core/actions/package.json @@ -1,14 +1,14 @@ { "name": "@nocobase/actions", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./lib/index.js", "types": "./lib/index.d.ts", "dependencies": { - "@nocobase/cache": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2" + "@nocobase/cache": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3" }, "repository": { "type": "git", @@ -16,4 +16,4 @@ "directory": "packages/actions" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} \ No newline at end of file +} diff --git a/packages/core/auth/package.json b/packages/core/auth/package.json index 102199f4b1..82ec2ac978 100644 --- a/packages/core/auth/package.json +++ b/packages/core/auth/package.json @@ -1,15 +1,15 @@ { "name": "@nocobase/auth", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./lib/index.js", "types": "./lib/index.d.ts", "dependencies": { - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2" + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3" }, "repository": { "type": "git", diff --git a/packages/core/build/package.json b/packages/core/build/package.json index c7a8b6f1e6..b62ed90c34 100755 --- a/packages/core/build/package.json +++ b/packages/core/build/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/build", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "Library build tool based on rollup.", "main": "lib/index.js", "bin": { diff --git a/packages/core/cache/package.json b/packages/core/cache/package.json index a5329c01a8..ce5d8a3106 100644 --- a/packages/core/cache/package.json +++ b/packages/core/cache/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/cache", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./lib/index.js", diff --git a/packages/core/cli/package.json b/packages/core/cli/package.json index aa01a27f61..366f06acfd 100644 --- a/packages/core/cli/package.json +++ b/packages/core/cli/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/cli", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./src/index.js", @@ -21,7 +21,7 @@ "serve": "^13.0.2" }, "devDependencies": { - "@nocobase/devtools": "0.11.1-alpha.2" + "@nocobase/devtools": "0.11.1-alpha.3" }, "repository": { "type": "git", diff --git a/packages/core/client/package.json b/packages/core/client/package.json index 625a950fd4..644c942429 100644 --- a/packages/core/client/package.json +++ b/packages/core/client/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/client", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "Apache-2.0", "main": "lib", "module": "es/index.js", @@ -15,9 +15,9 @@ "@formily/antd-v5": "^1.1.0-beta.4", "@formily/core": "2.2.26", "@formily/react": "2.2.26", - "@nocobase/evaluators": "0.11.1-alpha.2", - "@nocobase/sdk": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/evaluators": "0.11.1-alpha.3", + "@nocobase/sdk": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "ahooks": "^3.7.2", "antd": "^5.6.4", "antd-style": "^3.3.0", diff --git a/packages/core/create-nocobase-app/package.json b/packages/core/create-nocobase-app/package.json index 88caea6c92..cfb9fd160e 100755 --- a/packages/core/create-nocobase-app/package.json +++ b/packages/core/create-nocobase-app/package.json @@ -1,6 +1,6 @@ { "name": "create-nocobase-app", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "src/index.js", "license": "Apache-2.0", "dependencies": { diff --git a/packages/core/database/package.json b/packages/core/database/package.json index 7a2e78569d..5aadf2f5cb 100644 --- a/packages/core/database/package.json +++ b/packages/core/database/package.json @@ -1,13 +1,13 @@ { "name": "@nocobase/database", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "main": "./lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", "dependencies": { - "@nocobase/logger": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/logger": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "async-mutex": "^0.3.2", "cron-parser": "4.4.0", "dayjs": "^1.11.8", diff --git a/packages/core/devtools/package.json b/packages/core/devtools/package.json index 14f1ae1561..3112a43070 100644 --- a/packages/core/devtools/package.json +++ b/packages/core/devtools/package.json @@ -1,11 +1,11 @@ { "name": "@nocobase/devtools", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "Apache-2.0", "main": "./src/index.js", "dependencies": { - "@nocobase/build": "0.11.1-alpha.2", + "@nocobase/build": "0.11.1-alpha.3", "@testing-library/react": "^12.1.5", "@types/jest": "^26.0.0", "@types/koa": "^2.13.4", diff --git a/packages/core/evaluators/package.json b/packages/core/evaluators/package.json index b227d17c3e..a958d868ba 100644 --- a/packages/core/evaluators/package.json +++ b/packages/core/evaluators/package.json @@ -1,13 +1,13 @@ { "name": "@nocobase/evaluators", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "main": "./lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", "dependencies": { "@formulajs/formulajs": "4.2.0", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/utils": "0.11.1-alpha.3", "mathjs": "^10.6.0" }, "repository": { diff --git a/packages/core/logger/package.json b/packages/core/logger/package.json index 58a74478ad..244920252a 100644 --- a/packages/core/logger/package.json +++ b/packages/core/logger/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/logger", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "nocobase logging library", "license": "Apache-2.0", "main": "./lib/index.js", diff --git a/packages/core/resourcer/package.json b/packages/core/resourcer/package.json index ee51d90a08..b2d728625e 100644 --- a/packages/core/resourcer/package.json +++ b/packages/core/resourcer/package.json @@ -1,12 +1,12 @@ { "name": "@nocobase/resourcer", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "main": "./lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", "dependencies": { - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/utils": "0.11.1-alpha.3", "deepmerge": "^4.2.2", "koa-compose": "^4.1.0", "lodash": "^4.17.21", @@ -19,4 +19,4 @@ "directory": "packages/resourcer" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} \ No newline at end of file +} diff --git a/packages/core/sdk/package.json b/packages/core/sdk/package.json index fbcf273523..34f61cc6d5 100644 --- a/packages/core/sdk/package.json +++ b/packages/core/sdk/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/sdk", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "Apache-2.0", "main": "lib", "module": "es/index.js", diff --git a/packages/core/server/package.json b/packages/core/server/package.json index 7b851cd732..296a501de8 100644 --- a/packages/core/server/package.json +++ b/packages/core/server/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/server", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", @@ -8,13 +8,13 @@ "@hapi/topo": "^6.0.0", "@koa/cors": "^3.1.0", "@koa/router": "^9.4.0", - "@nocobase/acl": "0.11.1-alpha.2", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/auth": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/logger": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/acl": "0.11.1-alpha.3", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/auth": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/logger": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "chalk": "^4.1.1", "commander": "^9.2.0", "dayjs": "^1.11.8", @@ -31,4 +31,4 @@ "@types/semver": "^7.3.9" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" -} \ No newline at end of file +} diff --git a/packages/core/test/package.json b/packages/core/test/package.json index ae8408e277..c15cf76524 100644 --- a/packages/core/test/package.json +++ b/packages/core/test/package.json @@ -1,11 +1,11 @@ { "name": "@nocobase/test", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", "dependencies": { - "@nocobase/server": "0.11.1-alpha.2", + "@nocobase/server": "0.11.1-alpha.3", "@types/supertest": "^2.0.11", "mockjs": "^1.1.0", "mysql2": "^2.3.3", diff --git a/packages/core/utils/package.json b/packages/core/utils/package.json index 0aed267bbf..8457a7417f 100644 --- a/packages/core/utils/package.json +++ b/packages/core/utils/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/utils", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "lib/index.js", "types": "./lib/index.d.ts", "license": "Apache-2.0", diff --git a/packages/plugins/acl/package.json b/packages/plugins/acl/package.json index 72d3433e03..f9e1df6a38 100644 --- a/packages/plugins/acl/package.json +++ b/packages/plugins/acl/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "权限控制", "description": "A simple access control based on roles, resources and actions", "description.zh-CN": "基于角色、资源和操作的权限控制。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -19,13 +19,13 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/acl": "0.11.1-alpha.2", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/acl": "0.11.1-alpha.3", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "@types/jsonwebtoken": "^8.5.8", "jsonwebtoken": "^8.5.1", "react": "^18.2.0", diff --git a/packages/plugins/api-keys/package.json b/packages/plugins/api-keys/package.json index 077ba7147c..680c1ec01b 100644 --- a/packages/plugins/api-keys/package.json +++ b/packages/plugins/api-keys/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "API keys", "description": "Allow users to use API key to access NocoBase's api", "description.zh-CN": "允许用户使用 API key 访问 NocoBase 的 api", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -21,13 +21,13 @@ "devDependencies": { "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "dayjs": "^1.11.8", "i18next": "^22.4.9", diff --git a/packages/plugins/audit-logs/package.json b/packages/plugins/audit-logs/package.json index 1fb8fe28fc..79320ab0f0 100644 --- a/packages/plugins/audit-logs/package.json +++ b/packages/plugins/audit-logs/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-audit-logs", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "displayName": "audit-logs", "displayName.zh-CN": "审计日志", "description": "audit logs plugin", @@ -23,10 +23,10 @@ "@formily/antd-v5": "1.1.0-beta.4", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "^18.2.0", "react-i18next": "^11.15.1" }, diff --git a/packages/plugins/auth/package.json b/packages/plugins/auth/package.json index bd80ced636..fa1402ff57 100644 --- a/packages/plugins/auth/package.json +++ b/packages/plugins/auth/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-auth", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -17,18 +17,18 @@ "@ant-design/icons": "^5.1.4", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/auth": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/auth": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "@types/cron": "^2.0.1", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1" }, "dependencies": { - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", "cron": "^2.3.1" }, "displayName": "Authentication", diff --git a/packages/plugins/charts/package.json b/packages/plugins/charts/package.json index 55da8ead7c..e3a62f21d5 100644 --- a/packages/plugins/charts/package.json +++ b/packages/plugins/charts/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "图表", "description": "Out-of-the-box, feature-rich chart plugins.", "description.zh-CN": "开箱即用、丰富的报表。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -26,11 +26,11 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1", diff --git a/packages/plugins/china-region/package.json b/packages/plugins/china-region/package.json index 8813149dd1..dce6bfb1e1 100644 --- a/packages/plugins/china-region/package.json +++ b/packages/plugins/china-region/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-china-region", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "displayName": "china-region", "displayName.zh-CN": "中国行政区", "description": "Chinese Administrative Division Plugin, including all administrative regions of China.", @@ -24,10 +24,10 @@ "devDependencies": { "@formily/core": "2.2.26", "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/client/package.json b/packages/plugins/client/package.json index f4705bf0ed..085ef69e64 100644 --- a/packages/plugins/client/package.json +++ b/packages/plugins/client/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "客户端", "description": "client", "description.zh-CN": "客户端。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -25,11 +25,11 @@ "koa-static": "^5.0.0" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/collection-manager/package.json b/packages/plugins/collection-manager/package.json index 3f59f74bfe..0b6146952f 100644 --- a/packages/plugins/collection-manager/package.json +++ b/packages/plugins/collection-manager/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "数据库管理", "description": " database management plugin designed to simplify the process of managing and operating databases. It seamlessly integrates with various relational database systems such as MySQL and PostgreSQL, and provides an intuitive user interface for performing various database tasks.", "description.zh-CN": "可以与多种关系型数据库系统(如MySQL、PostgreSQL)无缝集成,并提供直观的用户界面来执行各种数据库任务。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -24,12 +24,12 @@ "toposort": "^2.0.2" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-error-handler": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-error-handler": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/data-visualization/package.json b/packages/plugins/data-visualization/package.json index f19e7b8bac..b9a9696027 100644 --- a/packages/plugins/data-visualization/package.json +++ b/packages/plugins/data-visualization/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-data-visualization", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "displayName": "Data Visualization", "displayName.zh-CN": "数据可视化", "description": "Provides business intelligence and data visualization features", @@ -17,13 +17,13 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/cache": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/cache": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "@testing-library/react": "^12.1.5", "antd": "^5.6.4", "lodash": "^4.17.21", diff --git a/packages/plugins/duplicator/package.json b/packages/plugins/duplicator/package.json index 245445c7c9..38bccc1eb2 100644 --- a/packages/plugins/duplicator/package.json +++ b/packages/plugins/duplicator/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "NocoBase应用备份与还原", "description": "Backup and Restore Plugin for NocoBase applications, used for scenarios such as application replication, migration, and upgrade.", "description.zh-CN": "NocoBase 应用的备份与还原插件,可用于应用的复制、迁移、升级等场景。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -35,11 +35,11 @@ "tar": "^6.1.13" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0" } diff --git a/packages/plugins/error-handler/package.json b/packages/plugins/error-handler/package.json index 00341515d5..6ce0e20355 100644 --- a/packages/plugins/error-handler/package.json +++ b/packages/plugins/error-handler/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "错误处理", "description": "Managing and handling errors and exceptions in an application.", "description.zh-CN": "管理和处理应用程序中的错误和异常。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -20,11 +20,11 @@ ], "devDependencies": { "@formily/json-schema": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "supertest": "^6.1.6" }, "repository": { diff --git a/packages/plugins/excel-formula-field/package.json b/packages/plugins/excel-formula-field/package.json index 9fef127fd1..2c5c34c50a 100644 --- a/packages/plugins/excel-formula-field/package.json +++ b/packages/plugins/excel-formula-field/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-excel-formula-field", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "AGPL-3.0", "main": "./lib/server/index.js", @@ -20,10 +20,10 @@ }, "devDependencies": { "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "^18.2.0", "react-i18next": "^11.15.1" } diff --git a/packages/plugins/export/package.json b/packages/plugins/export/package.json index 1740fd7883..b06cd9165c 100644 --- a/packages/plugins/export/package.json +++ b/packages/plugins/export/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "导出", "description": "export data", "description.zh-CN": "导出数据。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -27,12 +27,12 @@ "@formily/antd-v5": "1.1.0-beta.4", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "react": "^18.2.0", "react-i18next": "^11.15.1" }, diff --git a/packages/plugins/file-manager/package.json b/packages/plugins/file-manager/package.json index 831c65f759..9efef86812 100644 --- a/packages/plugins/file-manager/package.json +++ b/packages/plugins/file-manager/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-file-manager", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "displayName": "file manager", "displayName.zh-CN": "文件管理", "description": "file management plugin.", @@ -37,12 +37,12 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1", diff --git a/packages/plugins/formula-field/package.json b/packages/plugins/formula-field/package.json index ce069843dc..08febbe77d 100644 --- a/packages/plugins/formula-field/package.json +++ b/packages/plugins/formula-field/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "字段", "description": "formula-field", "description.zh-CN": "字段。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -23,12 +23,12 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/reactive": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/evaluators": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/evaluators": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "react": "^18.2.0", "react-i18next": "^11.15.1" } diff --git a/packages/plugins/graph-collection-manager/package.json b/packages/plugins/graph-collection-manager/package.json index 50806dcdfe..7417e2653f 100644 --- a/packages/plugins/graph-collection-manager/package.json +++ b/packages/plugins/graph-collection-manager/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "数据库可视化管理", "description": "database collection manage", "description.zh-CN": "数据库管理。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -29,11 +29,11 @@ "@formily/react": "2.2.26", "@formily/reactive": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1" diff --git a/packages/plugins/iframe-block/package.json b/packages/plugins/iframe-block/package.json index 4629a5d122..db012aaae9 100644 --- a/packages/plugins/iframe-block/package.json +++ b/packages/plugins/iframe-block/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "iframe", "description": "create and manage IFrame blocks on the page for embedding and displaying external web pages or content.", "description.zh-CN": "在页面上创建和管理iframe,用于嵌入和展示外部网页或内容。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -25,11 +25,11 @@ "@ant-design/icons": "^5.1.4", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1" diff --git a/packages/plugins/import/package.json b/packages/plugins/import/package.json index 2fade51c9b..b7ce1c5668 100644 --- a/packages/plugins/import/package.json +++ b/packages/plugins/import/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "导入", "description": "import data.", "description.zh-CN": "导入数据。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -32,12 +32,12 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/plugins/localization-management/package.json b/packages/plugins/localization-management/package.json index 042950efc9..bc12ca3bde 100644 --- a/packages/plugins/localization-management/package.json +++ b/packages/plugins/localization-management/package.json @@ -1,15 +1,15 @@ { "name": "@nocobase/plugin-localization-management", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "lib/server/index.js", "devDependencies": { - "@nocobase/cache": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-client": "0.11.1-alpha.2", - "@nocobase/plugin-ui-schema-storage": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/cache": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-client": "0.11.1-alpha.3", + "@nocobase/plugin-ui-schema-storage": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "dependencies": { "deepmerge": "^4.3.1" @@ -18,4 +18,4 @@ "displayName.zh-CN": "多语言管理", "description": "Allows to manage localization resources of the application.", "description.zh-CN": "支持管理应用程序的多语言资源。" -} \ No newline at end of file +} diff --git a/packages/plugins/map/package.json b/packages/plugins/map/package.json index 6257d884a1..824df23432 100644 --- a/packages/plugins/map/package.json +++ b/packages/plugins/map/package.json @@ -2,7 +2,7 @@ "name": "@nocobase/plugin-map", "displayName": "Map", "displayName.zh-CN": "地图", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "Provide map fields and blocks", "description.zh-CN": "提供地图字段和区块", "license": "AGPL-3.0", @@ -31,12 +31,12 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "antd": "^5.6.4", diff --git a/packages/plugins/math-formula-field/package.json b/packages/plugins/math-formula-field/package.json index fab3dc5d92..8a2d7449e1 100644 --- a/packages/plugins/math-formula-field/package.json +++ b/packages/plugins/math-formula-field/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "数学公式字段", "description": "A powerful mathematical formula field plugin designed to provide flexible mathematical and formula calculation capabilities for databases or data management systems. It seamlessly integrates with various database systems such as MySQL, PostgreSQL, and offers an intuitive user interface for defining and executing mathematical formula fields.", "description.zh-CN": "一个功能强大的数学公式字段插件,旨在为数据库或数据管理系统提供灵活的数学计算和公式计算功能。它可以与各种数据库系统(如MySQL、PostgreSQL)无缝集成,并提供直观的用户界面来定义和执行数学公式字段。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -23,10 +23,10 @@ }, "devDependencies": { "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "18.x", "react-i18next": "^11.15.1" } diff --git a/packages/plugins/mobile-client/package.json b/packages/plugins/mobile-client/package.json index 27b477d4e5..7bf03e7cfd 100644 --- a/packages/plugins/mobile-client/package.json +++ b/packages/plugins/mobile-client/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-mobile-client", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -22,11 +22,11 @@ "@formily/antd-v5": "^1.1.0-beta.4", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "@types/react": "^17.0.0", "@types/react-dom": "^17.0.0", "antd": "^5.6.4", diff --git a/packages/plugins/multi-app-manager/package.json b/packages/plugins/multi-app-manager/package.json index c37e1896d8..64ccdbec36 100644 --- a/packages/plugins/multi-app-manager/package.json +++ b/packages/plugins/multi-app-manager/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "多应用管理", "description": "manage app", "description.zh-CN": "管理应用", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -21,11 +21,11 @@ "devDependencies": { "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1", diff --git a/packages/plugins/multi-app-share-collection/package.json b/packages/plugins/multi-app-share-collection/package.json index 885e36936e..93069391c8 100644 --- a/packages/plugins/multi-app-share-collection/package.json +++ b/packages/plugins/multi-app-share-collection/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "多应用数据共享", "description": "multi app share collection", "description.zh-CN": "多应用数据共享", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -19,15 +19,15 @@ ], "devDependencies": { "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-collection-manager": "0.11.1-alpha.2", - "@nocobase/plugin-error-handler": "0.11.1-alpha.2", - "@nocobase/plugin-multi-app-manager": "0.11.1-alpha.2", - "@nocobase/plugin-users": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-collection-manager": "0.11.1-alpha.3", + "@nocobase/plugin-error-handler": "0.11.1-alpha.3", + "@nocobase/plugin-multi-app-manager": "0.11.1-alpha.3", + "@nocobase/plugin-users": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1" diff --git a/packages/plugins/notifications/package.json b/packages/plugins/notifications/package.json index c760c29d5b..6082ab678e 100644 --- a/packages/plugins/notifications/package.json +++ b/packages/plugins/notifications/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-notifications", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "description": "", "license": "AGPL-3.0", "main": "./lib/server/index.js", @@ -20,11 +20,11 @@ "nodemailer": "^6.6.1" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "nodemailer-mock": "^1.5.11" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" diff --git a/packages/plugins/oidc/package.json b/packages/plugins/oidc/package.json index b3c4ef634c..c5e0a3d795 100644 --- a/packages/plugins/oidc/package.json +++ b/packages/plugins/oidc/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "OpenID Connect", "description": "Provides OIDC authentication and authorization functionality for applications or authentication systems.", "description.zh-CN": "为应用程序或身份验证系统提供OIDC认证和授权功能。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -22,12 +22,12 @@ "@ant-design/icons": "^5.1.4", "@formily/antd-v5": "1.1.0-beta.4", "@formily/react": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/auth": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/auth": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "ahooks": "^3.7.2", "antd": "^5.6.4", "react": "18.x", diff --git a/packages/plugins/saml/package.json b/packages/plugins/saml/package.json index 3f2cb40356..82ebf47ac5 100644 --- a/packages/plugins/saml/package.json +++ b/packages/plugins/saml/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "SAML", "description": "Provides SAML authentication and authorization functionality for applications or authentication systems.", "description.zh-CN": "为应用程序或身份验证系统提供SAML认证和授权功能。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -21,12 +21,12 @@ "devDependencies": { "@ant-design/icons": "^5.1.4", "@formily/react": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/auth": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/auth": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1" diff --git a/packages/plugins/sequence-field/package.json b/packages/plugins/sequence-field/package.json index 36ef40f18f..99be22e0e2 100644 --- a/packages/plugins/sequence-field/package.json +++ b/packages/plugins/sequence-field/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "字段序列", "description": "provide the functionality of automatically generating unique sequence values for databases or data management systems.", "description.zh-CN": "为数据库或数据管理系统提供自动生成唯一序列值的功能。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -27,12 +27,12 @@ "@formily/antd-v5": "1.1.0-beta.4", "@formily/core": "2.2.26", "@formily/react": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/plugin-collection-manager": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/plugin-collection-manager": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1" diff --git a/packages/plugins/sms-auth/package.json b/packages/plugins/sms-auth/package.json index f18239ebbc..e58fa57315 100644 --- a/packages/plugins/sms-auth/package.json +++ b/packages/plugins/sms-auth/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "短信登录", "description": "SMS authentication function", "description.zh-CN": "提供短信登录认证功能。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -19,14 +19,14 @@ ], "devDependencies": { "@formily/react": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/auth": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-auth": "0.11.1-alpha.2", - "@nocobase/plugin-verification": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/auth": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-auth": "0.11.1-alpha.3", + "@nocobase/plugin-verification": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1" diff --git a/packages/plugins/snapshot-field/package.json b/packages/plugins/snapshot-field/package.json index 789183edc1..babb5234a3 100644 --- a/packages/plugins/snapshot-field/package.json +++ b/packages/plugins/snapshot-field/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "关系数据库快照", "description": "provide fast and reliable database backup and recovery functionality for database systems.", "description.zh-CN": "为数据库系统提供快速、可靠的数据库备份和恢复功能。。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -23,11 +23,11 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "rc-tree-select": "5.5.5", "react": "18.x", diff --git a/packages/plugins/system-settings/package.json b/packages/plugins/system-settings/package.json index 75e8f1742f..112d10fcf5 100644 --- a/packages/plugins/system-settings/package.json +++ b/packages/plugins/system-settings/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "系统配置", "description": "A plugin specifically designed to adjust the system-level settings of NocoBase.", "description.zh-CN": "用于调整 nocobase 的系统级设置。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -19,10 +19,10 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/theme-editor/package.json b/packages/plugins/theme-editor/package.json index 9464065684..8d4d5f1e21 100644 --- a/packages/plugins/theme-editor/package.json +++ b/packages/plugins/theme-editor/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-theme-editor", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "lib/server/index.js", "displayName": "Theme editor", "displayName.zh-CN": "主题编辑器", @@ -21,11 +21,11 @@ "@ant-design/cssinjs": "^1.11.1", "@ant-design/icons": "^5.1.4", "@emotion/css": "^11.11.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "lodash": "4.17.21", "react": "^18.2.0" diff --git a/packages/plugins/ui-routes-storage/package.json b/packages/plugins/ui-routes-storage/package.json index 7ec6d46f16..c520428f9c 100644 --- a/packages/plugins/ui-routes-storage/package.json +++ b/packages/plugins/ui-routes-storage/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "路由管理", "description": "manage the routes of nocobase", "description.zh-CN": "管理页面路由。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -22,11 +22,11 @@ "flat-to-nested": "^1.1.1" }, "devDependencies": { - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/ui-schema-storage/package.json b/packages/plugins/ui-schema-storage/package.json index 15b314346d..cd3300717a 100644 --- a/packages/plugins/ui-schema-storage/package.json +++ b/packages/plugins/ui-schema-storage/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "UI schema", "description": "A plugin used for managing page UI schemas.", "description.zh-CN": "UI schema 配置。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -20,16 +20,16 @@ ], "devDependencies": { "@formily/json-schema": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/cache": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-error-handler": "0.11.1-alpha.2", - "@nocobase/plugin-users": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2" + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/cache": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-error-handler": "0.11.1-alpha.3", + "@nocobase/plugin-users": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/users/package.json b/packages/plugins/users/package.json index e587b0e109..743575783c 100644 --- a/packages/plugins/users/package.json +++ b/packages/plugins/users/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "用户管理", "description": "manage the uses of nocobase system", "description.zh-CN": "管理系统用户", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -23,15 +23,15 @@ "jsonwebtoken": "^8.5.1" }, "devDependencies": { - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/plugin-acl": "0.11.1-alpha.2", - "@nocobase/plugin-auth": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2" + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/plugin-acl": "0.11.1-alpha.3", + "@nocobase/plugin-auth": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/plugins/verification/package.json b/packages/plugins/verification/package.json index 5810c113c6..2a8a2b308c 100644 --- a/packages/plugins/verification/package.json +++ b/packages/plugins/verification/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "验证码", "description": "verification setting.", "description.zh-CN": "验证码配置。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -29,13 +29,13 @@ "@formily/core": "2.2.26", "@formily/react": "2.2.26", "@formily/shared": "2.2.26", - "@nocobase/actions": "0.11.1-alpha.2", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/resourcer": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", - "@nocobase/utils": "0.11.1-alpha.2", + "@nocobase/actions": "0.11.1-alpha.3", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/resourcer": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", + "@nocobase/utils": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "18.x", "react-i18next": "^11.15.1" diff --git a/packages/plugins/workflow/package.json b/packages/plugins/workflow/package.json index 4f60ea0de3..11e7fa5861 100644 --- a/packages/plugins/workflow/package.json +++ b/packages/plugins/workflow/package.json @@ -4,7 +4,7 @@ "displayName.zh-CN": "工作流", "description": "A powerful workflow plugin designed to support business process management and automation.", "description.zh-CN": "工作流插件,为业务流程管理和自动化提供支持。", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "files": [ @@ -48,7 +48,7 @@ "winston": "^3.8.2" }, "devDependencies": { - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/test": "0.11.1-alpha.3", "@types/ejs": "^3.1.1" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" diff --git a/packages/presets/nocobase/package.json b/packages/presets/nocobase/package.json index 1f6626cb88..1e8e4793f7 100644 --- a/packages/presets/nocobase/package.json +++ b/packages/presets/nocobase/package.json @@ -1,47 +1,47 @@ { "name": "@nocobase/preset-nocobase", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "license": "AGPL-3.0", "main": "./lib/server/index.js", "dependencies": { - "@nocobase/plugin-acl": "0.11.1-alpha.2", - "@nocobase/plugin-api-keys": "0.11.1-alpha.2", - "@nocobase/plugin-audit-logs": "0.11.1-alpha.2", - "@nocobase/plugin-auth": "0.11.1-alpha.2", - "@nocobase/plugin-charts": "0.11.1-alpha.2", - "@nocobase/plugin-china-region": "0.11.1-alpha.2", - "@nocobase/plugin-client": "0.11.1-alpha.2", - "@nocobase/plugin-collection-manager": "0.11.1-alpha.2", - "@nocobase/plugin-data-visualization": "0.11.1-alpha.2", - "@nocobase/plugin-duplicator": "0.11.1-alpha.2", - "@nocobase/plugin-error-handler": "0.11.1-alpha.2", - "@nocobase/plugin-excel-formula-field": "0.11.1-alpha.2", - "@nocobase/plugin-export": "0.11.1-alpha.2", - "@nocobase/plugin-file-manager": "0.11.1-alpha.2", - "@nocobase/plugin-formula-field": "0.11.1-alpha.2", - "@nocobase/plugin-graph-collection-manager": "0.11.1-alpha.2", - "@nocobase/plugin-iframe-block": "0.11.1-alpha.2", - "@nocobase/plugin-import": "0.11.1-alpha.2", - "@nocobase/plugin-localization-management": "0.11.1-alpha.2", - "@nocobase/plugin-map": "0.11.1-alpha.2", - "@nocobase/plugin-math-formula-field": "0.11.1-alpha.2", - "@nocobase/plugin-mobile-client": "0.11.1-alpha.2", - "@nocobase/plugin-multi-app-manager": "0.11.1-alpha.2", - "@nocobase/plugin-multi-app-share-collection": "0.11.1-alpha.2", - "@nocobase/plugin-oidc": "0.11.1-alpha.2", - "@nocobase/plugin-saml": "0.11.1-alpha.2", - "@nocobase/plugin-sample-hello": "0.11.1-alpha.2", - "@nocobase/plugin-sequence-field": "0.11.1-alpha.2", - "@nocobase/plugin-sms-auth": "0.11.1-alpha.2", - "@nocobase/plugin-snapshot-field": "0.11.1-alpha.2", - "@nocobase/plugin-system-settings": "0.11.1-alpha.2", - "@nocobase/plugin-theme-editor": "0.11.1-alpha.2", - "@nocobase/plugin-ui-routes-storage": "0.11.1-alpha.2", - "@nocobase/plugin-ui-schema-storage": "0.11.1-alpha.2", - "@nocobase/plugin-users": "0.11.1-alpha.2", - "@nocobase/plugin-verification": "0.11.1-alpha.2", - "@nocobase/plugin-workflow": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2" + "@nocobase/plugin-acl": "0.11.1-alpha.3", + "@nocobase/plugin-api-keys": "0.11.1-alpha.3", + "@nocobase/plugin-audit-logs": "0.11.1-alpha.3", + "@nocobase/plugin-auth": "0.11.1-alpha.3", + "@nocobase/plugin-charts": "0.11.1-alpha.3", + "@nocobase/plugin-china-region": "0.11.1-alpha.3", + "@nocobase/plugin-client": "0.11.1-alpha.3", + "@nocobase/plugin-collection-manager": "0.11.1-alpha.3", + "@nocobase/plugin-data-visualization": "0.11.1-alpha.3", + "@nocobase/plugin-duplicator": "0.11.1-alpha.3", + "@nocobase/plugin-error-handler": "0.11.1-alpha.3", + "@nocobase/plugin-excel-formula-field": "0.11.1-alpha.3", + "@nocobase/plugin-export": "0.11.1-alpha.3", + "@nocobase/plugin-file-manager": "0.11.1-alpha.3", + "@nocobase/plugin-formula-field": "0.11.1-alpha.3", + "@nocobase/plugin-graph-collection-manager": "0.11.1-alpha.3", + "@nocobase/plugin-iframe-block": "0.11.1-alpha.3", + "@nocobase/plugin-import": "0.11.1-alpha.3", + "@nocobase/plugin-localization-management": "0.11.1-alpha.3", + "@nocobase/plugin-map": "0.11.1-alpha.3", + "@nocobase/plugin-math-formula-field": "0.11.1-alpha.3", + "@nocobase/plugin-mobile-client": "0.11.1-alpha.3", + "@nocobase/plugin-multi-app-manager": "0.11.1-alpha.3", + "@nocobase/plugin-multi-app-share-collection": "0.11.1-alpha.3", + "@nocobase/plugin-oidc": "0.11.1-alpha.3", + "@nocobase/plugin-saml": "0.11.1-alpha.3", + "@nocobase/plugin-sample-hello": "0.11.1-alpha.3", + "@nocobase/plugin-sequence-field": "0.11.1-alpha.3", + "@nocobase/plugin-sms-auth": "0.11.1-alpha.3", + "@nocobase/plugin-snapshot-field": "0.11.1-alpha.3", + "@nocobase/plugin-system-settings": "0.11.1-alpha.3", + "@nocobase/plugin-theme-editor": "0.11.1-alpha.3", + "@nocobase/plugin-ui-routes-storage": "0.11.1-alpha.3", + "@nocobase/plugin-ui-schema-storage": "0.11.1-alpha.3", + "@nocobase/plugin-users": "0.11.1-alpha.3", + "@nocobase/plugin-verification": "0.11.1-alpha.3", + "@nocobase/plugin-workflow": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3" }, "repository": { "type": "git", diff --git a/packages/samples/command/package.json b/packages/samples/command/package.json index 4395d54c6d..b1ea6596ae 100644 --- a/packages/samples/command/package.json +++ b/packages/samples/command/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-command", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -14,9 +14,9 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/samples/custom-block/package.json b/packages/samples/custom-block/package.json index c1b371f7f0..a711a0be52 100644 --- a/packages/samples/custom-block/package.json +++ b/packages/samples/custom-block/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-custom-block", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -16,9 +16,9 @@ "devDependencies": { "@ant-design/icons": "^5.1.4", "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "^18.2.0", "react-i18next": "^11.15.1" }, diff --git a/packages/samples/custom-collection-template/package.json b/packages/samples/custom-collection-template/package.json index 1bf2e1247f..6537fc438f 100644 --- a/packages/samples/custom-collection-template/package.json +++ b/packages/samples/custom-collection-template/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-custom-collection-template", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -14,9 +14,9 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/samples/custom-page/package.json b/packages/samples/custom-page/package.json index b3b1a71b8c..204a403a0f 100644 --- a/packages/samples/custom-page/package.json +++ b/packages/samples/custom-page/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-custom-page", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -14,9 +14,9 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "^18.2.0" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" diff --git a/packages/samples/custom-signup-page/package.json b/packages/samples/custom-signup-page/package.json index 839aa74de2..fd489941dc 100644 --- a/packages/samples/custom-signup-page/package.json +++ b/packages/samples/custom-signup-page/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-custom-signup-page", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -15,9 +15,9 @@ ], "devDependencies": { "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "react": "^18.2.0" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" diff --git a/packages/samples/hello/package.json b/packages/samples/hello/package.json index 4a420e5c15..4f0908ae47 100644 --- a/packages/samples/hello/package.json +++ b/packages/samples/hello/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-hello", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -20,9 +20,9 @@ "devDependencies": { "@ant-design/icons": "^5.1.4", "@formily/react": "2.2.26", - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1" diff --git a/packages/samples/ratelimit/package.json b/packages/samples/ratelimit/package.json index ee49d228e2..c20e38ee90 100644 --- a/packages/samples/ratelimit/package.json +++ b/packages/samples/ratelimit/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-ratelimit", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -17,9 +17,9 @@ "koa-ratelimit": "^5.0.1" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/samples/shop-actions/package.json b/packages/samples/shop-actions/package.json index 0244c75624..7ee162f21f 100644 --- a/packages/samples/shop-actions/package.json +++ b/packages/samples/shop-actions/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-shop-actions", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -14,9 +14,9 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/samples/shop-events/package.json b/packages/samples/shop-events/package.json index 72e0562792..2348662a94 100644 --- a/packages/samples/shop-events/package.json +++ b/packages/samples/shop-events/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-shop-events", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -14,9 +14,9 @@ "client.d.ts" ], "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } diff --git a/packages/samples/shop-i18n/package.json b/packages/samples/shop-i18n/package.json index b0d49a07b9..bfdab16f2a 100644 --- a/packages/samples/shop-i18n/package.json +++ b/packages/samples/shop-i18n/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-shop-i18n", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -17,9 +17,9 @@ "nodejs-snowflake": "2.0.1" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2", + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3", "antd": "^5.6.4", "react": "^18.2.0", "react-i18next": "^11.15.1" diff --git a/packages/samples/shop-modeling/package.json b/packages/samples/shop-modeling/package.json index 70156d5a31..54c6911fbd 100644 --- a/packages/samples/shop-modeling/package.json +++ b/packages/samples/shop-modeling/package.json @@ -1,6 +1,6 @@ { "name": "@nocobase/plugin-sample-shop-modeling", - "version": "0.11.1-alpha.2", + "version": "0.11.1-alpha.3", "main": "./lib/server/index.js", "files": [ "lib", @@ -17,10 +17,10 @@ "nodejs-snowflake": "2.0.1" }, "devDependencies": { - "@nocobase/client": "0.11.1-alpha.2", - "@nocobase/database": "0.11.1-alpha.2", - "@nocobase/server": "0.11.1-alpha.2", - "@nocobase/test": "0.11.1-alpha.2" + "@nocobase/client": "0.11.1-alpha.3", + "@nocobase/database": "0.11.1-alpha.3", + "@nocobase/server": "0.11.1-alpha.3", + "@nocobase/test": "0.11.1-alpha.3" }, "gitHead": "ce588eefb0bfc50f7d5bbee575e0b5e843bf6644" } From 54f240539c5cf82d31c689bf409bcb5656ded496 Mon Sep 17 00:00:00 2001 From: chenos Date: Wed, 26 Jul 2023 17:38:21 +0800 Subject: [PATCH 24/34] chore: update changelog --- CHANGELOG.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd2b60d0d6..c713a1573f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,104 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +## [v0.11.1-alpha.3](https://github.com/nocobase/nocobase/compare/v0.11.1-alpha.2...v0.11.1-alpha.3) - 2023-07-26 + +### Merged + +- fix(plugin-workflow): fix expression field in sub-form [`#2324`](https://github.com/nocobase/nocobase/pull/2324) +- chore: improve FormProvider [`#2322`](https://github.com/nocobase/nocobase/pull/2322) +- fix: collectionField undefined [`#2320`](https://github.com/nocobase/nocobase/pull/2320) +- fix: should use `filter` instead of `where` [`#2318`](https://github.com/nocobase/nocobase/pull/2318) +- fix(bi): issue of dnd [`#2315`](https://github.com/nocobase/nocobase/pull/2315) +- feat(filter-block): support foreign key and inheritance [`#2302`](https://github.com/nocobase/nocobase/pull/2302) +- chore: merge docker build [`#2317`](https://github.com/nocobase/nocobase/pull/2317) +- feat(locale): allows to manage locale resources in core package [`#2293`](https://github.com/nocobase/nocobase/pull/2293) +- fix(plugin-workflow): fix styles [`#2316`](https://github.com/nocobase/nocobase/pull/2316) +- Feat/translation fr_FR [`#2275`](https://github.com/nocobase/nocobase/pull/2275) +- feat: customize action support create record for any collection [`#2264`](https://github.com/nocobase/nocobase/pull/2264) +- refactor: form data template support data scope config [`#2229`](https://github.com/nocobase/nocobase/pull/2229) +- chore: auto fix eslint errors when pre-commit [`#2304`](https://github.com/nocobase/nocobase/pull/2304) +- refactor: sub-table acl ignore [`#2259`](https://github.com/nocobase/nocobase/pull/2259) +- refactor: date field UI supports configuration formatting [`#2241`](https://github.com/nocobase/nocobase/pull/2241) +- fix(plugin-workflow): fix schedule duplicated triggering in multi-apps [`#2313`](https://github.com/nocobase/nocobase/pull/2313) +- refactor: table column field provider optimize [`#2312`](https://github.com/nocobase/nocobase/pull/2312) +- fix: table column field undefined fix [`#2311`](https://github.com/nocobase/nocobase/pull/2311) +- fix: table column field failed to be actived [`#2309`](https://github.com/nocobase/nocobase/pull/2309) +- fix(default-value): fix tag in RemoteSelect [`#2306`](https://github.com/nocobase/nocobase/pull/2306) +- fix: modal not displayed when clicking on the association field in the table [`#2292`](https://github.com/nocobase/nocobase/pull/2292) +- fix(database): skip reference delete on view collection [`#2303`](https://github.com/nocobase/nocobase/pull/2303) + +### Commits + +- chore(versions): 😊 publish v0.11.1-alpha.3 [`81819f0`](https://github.com/nocobase/nocobase/commit/81819f04e3bdd108a1a70038352545748552c2f9) +- chore: fix Warning if eslint [`986e241`](https://github.com/nocobase/nocobase/commit/986e2414d4b8eba2bd0cf3cf1932a74ff507271e) +- chore: fix prettier [`30b0d9b`](https://github.com/nocobase/nocobase/commit/30b0d9b3f303a43eeb340482a567a50145437f27) + +## [v0.11.1-alpha.2](https://github.com/nocobase/nocobase/compare/v0.11.1-alpha.1...v0.11.1-alpha.2) - 2023-07-23 + +### Commits + +- chore(versions): 😊 publish v0.11.1-alpha.2 [`c84476d`](https://github.com/nocobase/nocobase/commit/c84476d805bae897fea7a23cec38813dbe28cae0) +- chore(theme-editor): fix deps [`d0528cf`](https://github.com/nocobase/nocobase/commit/d0528cf1f273fd7e3efbe6eb58a247a20dbaffb1) +- chore(theme-editor): fix deps [`25decf0`](https://github.com/nocobase/nocobase/commit/25decf0aa9f6d37b972ba460a999558ecc25a819) + +## [v0.11.1-alpha.1](https://github.com/nocobase/nocobase/compare/v0.11.0-alpha.1...v0.11.1-alpha.1) - 2023-07-22 + +### Merged + +- fix(plugin-workflow): workflow collections should not appear in blocks [`#2290`](https://github.com/nocobase/nocobase/pull/2290) +- chore: remove belongsToMany through table as collection dependency [`#2289`](https://github.com/nocobase/nocobase/pull/2289) +- feat(database): handle targetCollection option in repository find [`#2175`](https://github.com/nocobase/nocobase/pull/2175) +- feat: add built-in themes [`#2284`](https://github.com/nocobase/nocobase/pull/2284) +- docs: add doc for Theme Editor [`#2280`](https://github.com/nocobase/nocobase/pull/2280) +- fix: fix sorting of user menu [`#2288`](https://github.com/nocobase/nocobase/pull/2288) +- feat(theme-editor): support to config Header's color and Settings button's color [`#2263`](https://github.com/nocobase/nocobase/pull/2263) +- feat(plugin-workflow): add sql node [`#2276`](https://github.com/nocobase/nocobase/pull/2276) +- fix: the drop-down multiple selection fields are not displayed as title fields when inherited collection [`#2257`](https://github.com/nocobase/nocobase/pull/2257) +- fix(bi): orderBy bug under MySQL [`#2283`](https://github.com/nocobase/nocobase/pull/2283) +- test: make testing more stable [`#2277`](https://github.com/nocobase/nocobase/pull/2277) +- fix(bi): eliminate redundancy queries [`#2268`](https://github.com/nocobase/nocobase/pull/2268) +- fix(client): using component as action title [`#2274`](https://github.com/nocobase/nocobase/pull/2274) +- fix(middleware): revert now variable back [`#2267`](https://github.com/nocobase/nocobase/pull/2267) +- fix: linkage failed with current date variable [`#2272`](https://github.com/nocobase/nocobase/pull/2272) +- fix: fix style of page tab [`#2270`](https://github.com/nocobase/nocobase/pull/2270) +- fix: collection select no options [`#2271`](https://github.com/nocobase/nocobase/pull/2271) +- refactor: add locale plugin [`#2261`](https://github.com/nocobase/nocobase/pull/2261) +- feat(plugin-workflow): allow manual form button to be configured with preset values [`#2225`](https://github.com/nocobase/nocobase/pull/2225) +- feat(plugin-workflow): change to unlimited depth preloading associations in workflow [`#2142`](https://github.com/nocobase/nocobase/pull/2142) +- feat: localization management [`#2210`](https://github.com/nocobase/nocobase/pull/2210) +- refactor: linkage rules support datetime [`#2260`](https://github.com/nocobase/nocobase/pull/2260) +- fix: view inherited collection field reported error [`#2249`](https://github.com/nocobase/nocobase/pull/2249) +- fix: loading did not disappear after submission failure [`#2252`](https://github.com/nocobase/nocobase/pull/2252) +- feat: support custome themes [`#2228`](https://github.com/nocobase/nocobase/pull/2228) +- chore(plugin-workflow): fix breadcrumb warning [`#2256`](https://github.com/nocobase/nocobase/pull/2256) +- fix(plugin-workflow): fix request node error in loop [`#2254`](https://github.com/nocobase/nocobase/pull/2254) +- feat(database): view collection support for add new, update and delete actions [`#2119`](https://github.com/nocobase/nocobase/pull/2119) +- refactor(client): change isTitleField check to interface property titleUsable [`#2250`](https://github.com/nocobase/nocobase/pull/2250) +- fix: option field display value in workflow todo list [`#2246`](https://github.com/nocobase/nocobase/pull/2246) +- fix(plugin-workflow): fix dispatch bug [`#2247`](https://github.com/nocobase/nocobase/pull/2247) +- fix: avoid crashes when emptying DatePicker's value [`#2237`](https://github.com/nocobase/nocobase/pull/2237) +- fix: no template data requested during depulicating [`#2240`](https://github.com/nocobase/nocobase/pull/2240) +- fix(plugin-workflow): fix job button style [`#2243`](https://github.com/nocobase/nocobase/pull/2243) +- fix: avoid crashing when delete group menu [`#2239`](https://github.com/nocobase/nocobase/pull/2239) +- fix: should auto focus in drop-down menu [`#2234`](https://github.com/nocobase/nocobase/pull/2234) +- fix(plugin-fm): adjust upload file size to 1G which same as default on server side [`#2236`](https://github.com/nocobase/nocobase/pull/2236) +- fix: should only show one scroll bar in drop-down menu [`#2231`](https://github.com/nocobase/nocobase/pull/2231) +- fix: failed to correctly respond to optional fields in the child collection in the parent collection table [`#2207`](https://github.com/nocobase/nocobase/pull/2207) +- fix(core): fix batch update query logic [`#2230`](https://github.com/nocobase/nocobase/pull/2230) +- fix: should limit submenu height [`#2227`](https://github.com/nocobase/nocobase/pull/2227) +- fix(upload): fix style of attachement in Table [`#2213`](https://github.com/nocobase/nocobase/pull/2213) + +### Fixed + +- fix(plugin-fm): adjust upload file size to 1G which same as default on server side (#2236) [`#2215`](https://github.com/nocobase/nocobase/issues/2215) + +### Commits + +- chore(versions): 😊 publish v0.11.1-alpha.1 [`e979194`](https://github.com/nocobase/nocobase/commit/e979194cf29debcc10d2e6765c96083793186331) +- fix(theme-editor): remove db.sync [`fa2de8e`](https://github.com/nocobase/nocobase/commit/fa2de8e8060da00a85b381df0d7fbf9fca2793b3) +- fix(theme-editor): fix color of menu when it is selected [`8c90436`](https://github.com/nocobase/nocobase/commit/8c904363ad055d6aaacfe67d9f74a9467e7c90b5) + ## [v0.11.0-alpha.1](https://github.com/nocobase/nocobase/compare/v0.10.1-alpha.1...v0.11.0-alpha.1) - 2023-07-08 ### Merged From 840254f517c08f2c1d2a44c12b44a7e2c01e54a8 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Wed, 26 Jul 2023 17:53:51 +0800 Subject: [PATCH 25/34] chore: upgrade jest (#2323) * chore: upgrade jest * fix: eslint * chore: github action backend test * fix: import * chore: export * fix: test --- .eslintrc | 5 + .github/workflows/nocobase-test-backend.yml | 9 +- jest.config.js | 22 +- packages/core/devtools/package.json | 11 +- .../plugins/collection-manager/src/index.ts | 1 + .../__tests__/collections.repository.test.ts | 2 +- .../collection-manager/src/server/index.ts | 3 + .../map/src/server/__tests__/fields.test.ts | 47 +- .../users/src/server/__tests__/utils.ts | 2 +- yarn.lock | 1648 ++++++----------- 10 files changed, 660 insertions(+), 1090 deletions(-) diff --git a/.eslintrc b/.eslintrc index 56347a65bb..09e2b94ad9 100755 --- a/.eslintrc +++ b/.eslintrc @@ -1,4 +1,9 @@ { + "env": { + "node": true, + "es6": true, + "browser": true + }, "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended", diff --git a/.github/workflows/nocobase-test-backend.yml b/.github/workflows/nocobase-test-backend.yml index 18b4775f36..bc0e75b8e1 100644 --- a/.github/workflows/nocobase-test-backend.yml +++ b/.github/workflows/nocobase-test-backend.yml @@ -38,9 +38,8 @@ jobs: cache: 'yarn' - run: yarn install - name: Test with Sqlite - run: yarn nocobase install -f && yarn test + run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: - NODE_OPTIONS: '--max_old_space_size=4096' DB_DIALECT: sqlite DB_STORAGE: /tmp/db.sqlite DB_UNDERSCORED: ${{ matrix.underscored }} @@ -80,9 +79,8 @@ jobs: - run: yarn install # - run: yarn build - name: Test with postgres - run: yarn nocobase install -f && yarn test + run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: - NODE_OPTIONS: '--max_old_space_size=4096' DB_DIALECT: postgres DB_HOST: postgres DB_PORT: 5432 @@ -118,9 +116,8 @@ jobs: - run: yarn install # - run: yarn build - name: Test with MySQL - run: yarn nocobase install -f && yarn test + run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: - NODE_OPTIONS: '--max_old_space_size=4096' DB_DIALECT: mysql DB_HOST: mysql DB_PORT: 3306 diff --git a/jest.config.js b/jest.config.js index eed650b4a5..c3dcc996a9 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,4 +1,4 @@ -const { pathsToModuleNameMapper } = require('ts-jest/utils'); +const { pathsToModuleNameMapper } = require('ts-jest'); const { compilerOptions } = require('./tsconfig.json'); const { defaults } = require('jest-config'); @@ -6,26 +6,26 @@ module.exports = { rootDir: process.cwd(), collectCoverage: false, verbose: true, - testEnvironment: 'jsdom', preset: 'ts-jest', testMatch: ['**/__tests__/**/*.test.[jt]s'], setupFiles: ['./jest.setup.ts'], - setupFilesAfterEnv: [require.resolve('jest-dom/extend-expect'), './jest.setupAfterEnv.ts'], + setupFilesAfterEnv: ['./jest.setupAfterEnv.ts'], moduleNameMapper: { ...pathsToModuleNameMapper(compilerOptions.paths, { prefix: '/', }), }, - globals: { - 'ts-jest': { - babelConfig: false, - tsconfig: './tsconfig.jest.json', - diagnostics: false, - }, + transform: { + '^.+\\.{ts|tsx}?$': [ + 'ts-jest', + { + babelConfig: false, + tsconfig: './tsconfig.jest.json', + diagnostics: false, + }, + ], }, modulePathIgnorePatterns: ['/esm/', '/es/', '/dist/', '/lib/', '/client/', '/sdk/', '\\.test\\.tsx$'], - // add .mjs .cjs for formula.js - moduleFileExtensions: [...defaults.moduleFileExtensions, 'mjs', 'cjs'], coveragePathIgnorePatterns: [ '/node_modules/', '/__tests__/', diff --git a/packages/core/devtools/package.json b/packages/core/devtools/package.json index 3112a43070..03e7b438f7 100644 --- a/packages/core/devtools/package.json +++ b/packages/core/devtools/package.json @@ -7,7 +7,7 @@ "dependencies": { "@nocobase/build": "0.11.1-alpha.3", "@testing-library/react": "^12.1.5", - "@types/jest": "^26.0.0", + "@types/jest": "^29.0.0", "@types/koa": "^2.13.4", "@types/koa-bodyparser": "^4.3.4", "@types/lodash": "^4.14.177", @@ -27,12 +27,9 @@ "eslint-plugin-promise": "^6.1.1", "eslint-plugin-react": "^7.33.0", "eslint-plugin-react-hooks": "^4.6.0", - "jest": "^26.0.0", - "jest-codemods": "^0.19.1", + "jest": "^29.0.0", + "jest-cli": "^29.0.0", "jest-dom": "^3.1.2", - "jest-localstorage-mock": "^2.3.0", - "jest-styled-components": "6.3.3", - "jest-watch-lerna-packages": "^1.1.0", "jsdom": "^16.0.0", "lerna": "^4.0.0", "prettier": "^3.0.0", @@ -42,7 +39,7 @@ "react-dom": "^18.0.0", "rimraf": "^3.0.0", "serve": "^13.0.2", - "ts-jest": "^26.0.0", + "ts-jest": "^29.0.0", "ts-loader": "^7.0.4", "ts-node": "9.1.1", "ts-node-dev": "1.1.8", diff --git a/packages/plugins/collection-manager/src/index.ts b/packages/plugins/collection-manager/src/index.ts index 7ddad58145..7e74612df8 100644 --- a/packages/plugins/collection-manager/src/index.ts +++ b/packages/plugins/collection-manager/src/index.ts @@ -1 +1,2 @@ +export * from './server'; export { default } from './server'; diff --git a/packages/plugins/collection-manager/src/server/__tests__/collections.repository.test.ts b/packages/plugins/collection-manager/src/server/__tests__/collections.repository.test.ts index 629e8e7183..fd0104264e 100644 --- a/packages/plugins/collection-manager/src/server/__tests__/collections.repository.test.ts +++ b/packages/plugins/collection-manager/src/server/__tests__/collections.repository.test.ts @@ -1,7 +1,7 @@ import Database, { Collection as DBCollection, HasManyRepository } from '@nocobase/database'; import Application from '@nocobase/server'; import { createApp } from '.'; -import CollectionManagerPlugin, { CollectionRepository } from '@nocobase/plugin-collection-manager'; +import CollectionManagerPlugin, { CollectionRepository } from '../index'; describe('collections repository', () => { let db: Database; diff --git a/packages/plugins/collection-manager/src/server/index.ts b/packages/plugins/collection-manager/src/server/index.ts index 962d2196ec..948c0824a5 100644 --- a/packages/plugins/collection-manager/src/server/index.ts +++ b/packages/plugins/collection-manager/src/server/index.ts @@ -1,4 +1,7 @@ export * from './repositories'; + export { default as fieldsCollection } from './collections/fields'; + export { default as collectionsCollection } from './collections/collections'; + export { default } from './server'; diff --git a/packages/plugins/map/src/server/__tests__/fields.test.ts b/packages/plugins/map/src/server/__tests__/fields.test.ts index a7e891f44e..bf27cb8738 100644 --- a/packages/plugins/map/src/server/__tests__/fields.test.ts +++ b/packages/plugins/map/src/server/__tests__/fields.test.ts @@ -121,30 +121,15 @@ describe('fields', () => { polygon: null, }); - expect(await findOne()).toMatchInlineSnapshot(` - Object { - "circle": Array [ - 114.058996, - 22.549695, - 4171, - ], - "lineString": Array [ - Array [ - 114.047323, - 22.534158, - ], - Array [ - 114.120966, - 22.544146, - ], - ], - "point": Array [ - 1, - 2, - ], - "polygon": null, - } - `); + expect(await findOne()).toMatchObject({ + circle: [114.058996, 22.549695, 4171], + lineString: [ + [114.047323, 22.534158], + [114.120966, 22.544146], + ], + point: [1, 2], + polygon: null, + }); }); it('empty', async () => { @@ -162,13 +147,11 @@ describe('fields', () => { except: ['createdAt', 'updatedAt', 'id'], }); - expect(await findOne()).toMatchInlineSnapshot(` - Object { - "circle": null, - "lineString": null, - "point": null, - "polygon": null, - } - `); + expect(await findOne()).toMatchObject({ + circle: null, + lineString: null, + point: null, + polygon: null, + }); }); }); diff --git a/packages/plugins/users/src/server/__tests__/utils.ts b/packages/plugins/users/src/server/__tests__/utils.ts index 53d9f3e52b..baa1589e35 100644 --- a/packages/plugins/users/src/server/__tests__/utils.ts +++ b/packages/plugins/users/src/server/__tests__/utils.ts @@ -1,4 +1,4 @@ -import { UserPluginConfig } from '..'; +import { UserPluginConfig } from '../server'; export const userPluginConfig: UserPluginConfig = { name: 'users', diff --git a/yarn.lock b/yarn.lock index edc44b6d15..05d2137c7c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1065,7 +1065,7 @@ json5 "^2.2.2" semver "^6.3.0" -"@babel/core@7.22.5", "@babel/core@^7.1.0", "@babel/core@^7.1.2", "@babel/core@^7.1.6", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6", "@babel/core@^7.17.9", "@babel/core@^7.19.6", "@babel/core@^7.21.4", "@babel/core@^7.22.5", "@babel/core@^7.7.5": +"@babel/core@7.22.5", "@babel/core@^7.1.0", "@babel/core@^7.1.2", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.14.6", "@babel/core@^7.17.9", "@babel/core@^7.19.6", "@babel/core@^7.21.4", "@babel/core@^7.22.5": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89" dependencies: @@ -1121,6 +1121,16 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" +"@babel/generator@^7.7.2": + version "7.22.9" + resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" + integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== + dependencies: + "@babel/types" "^7.22.5" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.0", "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -1303,7 +1313,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.1.6", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.22.5", "@babel/parser@^7.4.3", "@babel/parser@^7.4.5": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.21.0", "@babel/parser@^7.22.5", "@babel/parser@^7.4.3", "@babel/parser@^7.4.5": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea" @@ -1468,7 +1478,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-syntax-object-rest-spread" "^7.2.0" -"@babel/plugin-proposal-object-rest-spread@^7.0.0", "@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.4.4": +"@babel/plugin-proposal-object-rest-spread@^7.12.1", "@babel/plugin-proposal-object-rest-spread@^7.4.4": version "7.20.7" resolved "https://registry.npmmirror.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" dependencies: @@ -1592,12 +1602,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-flow@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz#163b820b9e7696ce134df3ee716d9c0c98035859" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-function-bind@^7.2.0": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-function-bind/-/plugin-syntax-function-bind-7.22.5.tgz#4a01aa675dac0431b47eb440900ed0d4efd54d50" @@ -1628,7 +1632,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.22.5": +"@babel/plugin-syntax-jsx@^7.22.5", "@babel/plugin-syntax-jsx@^7.7.2": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" dependencies: @@ -1688,7 +1692,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/plugin-syntax-typescript@^7.22.5": +"@babel/plugin-syntax-typescript@^7.22.5", "@babel/plugin-syntax-typescript@^7.7.2": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz#aac8d383b062c5072c647a31ef990c1d0af90272" dependencies: @@ -1818,13 +1822,6 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-transform-flow-strip-types@^7.22.5": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz#0bb17110c7bf5b35a60754b2f00c58302381dee2" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-flow" "^7.22.5" - "@babel/plugin-transform-for-of@^7.12.1", "@babel/plugin-transform-for-of@^7.22.5", "@babel/plugin-transform-for-of@^7.4.4": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.22.5.tgz#ab1b8a200a8f990137aff9a084f8de4099ab173f" @@ -2262,7 +2259,7 @@ js-levenshtein "^1.1.3" semver "^5.5.0" -"@babel/preset-env@^7.1.0", "@babel/preset-env@^7.1.6", "@babel/preset-env@^7.12.1": +"@babel/preset-env@^7.1.0", "@babel/preset-env@^7.12.1": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.22.5.tgz#3da66078b181f3d62512c51cf7014392c511504e" dependencies: @@ -2347,14 +2344,6 @@ core-js-compat "^3.30.2" semver "^6.3.0" -"@babel/preset-flow@^7.0.0": - version "7.22.5" - resolved "https://registry.npmmirror.com/@babel/preset-flow/-/preset-flow-7.22.5.tgz#876f24ab6b38bd79703a93f32020ca2162312784" - dependencies: - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/helper-validator-option" "^7.22.5" - "@babel/plugin-transform-flow-strip-types" "^7.22.5" - "@babel/preset-modules@^0.1.3", "@babel/preset-modules@^0.1.5": version "0.1.5" resolved "https://registry.npmmirror.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" @@ -2403,7 +2392,7 @@ "@babel/helper-plugin-utils" "^7.0.0" "@babel/plugin-transform-typescript" "^7.3.2" -"@babel/register@7.22.5", "@babel/register@^7.0.0": +"@babel/register@7.22.5": version "7.22.5" resolved "https://registry.npmmirror.com/@babel/register/-/register-7.22.5.tgz#e4d8d0f615ea3233a27b5c6ada6750ee59559939" dependencies: @@ -3397,15 +3386,16 @@ chalk "^2.0.1" slash "^2.0.0" -"@jest/console@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" +"@jest/console@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz#b48ba7b9c34b51483e6d590f46e5837f1ab5f639" + integrity sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^29.6.1" + jest-util "^29.6.1" slash "^3.0.0" "@jest/core@^24.9.0": @@ -3441,36 +3431,37 @@ slash "^2.0.0" strip-ansi "^5.0.0" -"@jest/core@^26.6.3": - version "26.6.3" - resolved "https://registry.npmmirror.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" +"@jest/core@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz#fac0d9ddf320490c93356ba201451825231e95f6" + integrity sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/reporters" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^29.6.1" + "@jest/reporters" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" + ci-info "^3.2.0" exit "^0.1.2" - graceful-fs "^4.2.4" - jest-changed-files "^26.6.2" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-resolve-dependencies "^26.6.3" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - jest-watcher "^26.6.2" - micromatch "^4.0.2" - p-each-series "^2.1.0" - rimraf "^3.0.0" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.6.1" + jest-haste-map "^29.6.1" + jest-message-util "^29.6.1" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.1" + jest-resolve-dependencies "^29.6.1" + jest-runner "^29.6.1" + jest-runtime "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" + jest-watcher "^29.6.1" + micromatch "^4.0.4" + pretty-format "^29.6.1" slash "^3.0.0" strip-ansi "^6.0.0" @@ -3483,14 +3474,15 @@ "@jest/types" "^24.9.0" jest-mock "^24.9.0" -"@jest/environment@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" +"@jest/environment@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz#ee358fff2f68168394b4a50f18c68278a21fe82f" + integrity sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A== dependencies: - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/fake-timers" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^26.6.2" + jest-mock "^29.6.1" "@jest/expect-utils@^29.5.0": version "29.5.0" @@ -3498,6 +3490,21 @@ dependencies: jest-get-type "^29.4.3" +"@jest/expect-utils@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" + integrity sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw== + dependencies: + jest-get-type "^29.4.3" + +"@jest/expect@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz#fef18265188f6a97601f1ea0a2912d81a85b4657" + integrity sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg== + dependencies: + expect "^29.6.1" + jest-snapshot "^29.6.1" + "@jest/fake-timers@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" @@ -3506,24 +3513,27 @@ jest-message-util "^24.9.0" jest-mock "^24.9.0" -"@jest/fake-timers@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" +"@jest/fake-timers@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz#c773efddbc61e1d2efcccac008139f621de57c69" + integrity sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg== dependencies: - "@jest/types" "^26.6.2" - "@sinonjs/fake-timers" "^6.0.1" + "@jest/types" "^29.6.1" + "@sinonjs/fake-timers" "^10.0.2" "@types/node" "*" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-message-util "^29.6.1" + jest-mock "^29.6.1" + jest-util "^29.6.1" -"@jest/globals@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" +"@jest/globals@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz#c8a8923e05efd757308082cc22893d82b8aa138f" + integrity sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A== dependencies: - "@jest/environment" "^26.6.2" - "@jest/types" "^26.6.2" - expect "^26.6.2" + "@jest/environment" "^29.6.1" + "@jest/expect" "^29.6.1" + "@jest/types" "^29.6.1" + jest-mock "^29.6.1" "@jest/reporters@^24.9.0": version "24.9.0" @@ -3551,36 +3561,35 @@ source-map "^0.6.0" string-length "^2.0.0" -"@jest/reporters@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" +"@jest/reporters@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz#3325a89c9ead3cf97ad93df3a427549d16179863" + integrity sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.4" + glob "^7.1.3" + graceful-fs "^4.2.9" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.3" + istanbul-lib-instrument "^5.1.0" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - jest-haste-map "^26.6.2" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" + istanbul-reports "^3.1.3" + jest-message-util "^29.6.1" + jest-util "^29.6.1" + jest-worker "^29.6.1" slash "^3.0.0" - source-map "^0.6.0" string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^7.0.0" - optionalDependencies: - node-notifier "^8.0.0" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" "@jest/schemas@^29.4.3": version "29.4.3" @@ -3588,6 +3597,13 @@ dependencies: "@sinclair/typebox" "^0.25.16" +"@jest/schemas@^29.6.0": + version "29.6.0" + resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" + integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== + dependencies: + "@sinclair/typebox" "^0.27.8" + "@jest/source-map@^24.3.0", "@jest/source-map@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/source-map/-/source-map-24.9.0.tgz#0e263a94430be4b41da683ccc1e6bffe2a191714" @@ -3596,13 +3612,14 @@ graceful-fs "^4.1.15" source-map "^0.6.0" -"@jest/source-map@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" +"@jest/source-map@^29.6.0": + version "29.6.0" + resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz#bd34a05b5737cb1a99d43e1957020ac8e5b9ddb1" + integrity sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA== dependencies: + "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" - graceful-fs "^4.2.4" - source-map "^0.6.0" + graceful-fs "^4.2.9" "@jest/test-result@^24.9.0": version "24.9.0" @@ -3612,12 +3629,13 @@ "@jest/types" "^24.9.0" "@types/istanbul-lib-coverage" "^2.0.0" -"@jest/test-result@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" +"@jest/test-result@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz#850e565a3f58ee8ca6ec424db00cb0f2d83c36ba" + integrity sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw== dependencies: - "@jest/console" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^29.6.1" + "@jest/types" "^29.6.1" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" @@ -3630,15 +3648,15 @@ jest-runner "^24.9.0" jest-runtime "^24.9.0" -"@jest/test-sequencer@^26.6.3": - version "26.6.3" - resolved "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" +"@jest/test-sequencer@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz#e3e582ee074dd24ea9687d7d1aaf05ee3a9b068e" + integrity sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg== dependencies: - "@jest/test-result" "^26.6.2" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-runner "^26.6.3" - jest-runtime "^26.6.3" + "@jest/test-result" "^29.6.1" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.1" + slash "^3.0.0" "@jest/transform@^24.9.0": version "24.9.0" @@ -3661,26 +3679,6 @@ source-map "^0.6.1" write-file-atomic "2.4.1" -"@jest/transform@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^26.6.2" - babel-plugin-istanbul "^6.0.0" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.4" - jest-haste-map "^26.6.2" - jest-regex-util "^26.0.0" - jest-util "^26.6.2" - micromatch "^4.0.2" - pirates "^4.0.1" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - "@jest/transform@^29.5.0": version "29.5.0" resolved "https://registry.npmmirror.com/@jest/transform/-/transform-29.5.0.tgz#cf9c872d0965f0cbd32f1458aa44a2b1988b00f9" @@ -3701,6 +3699,27 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/transform@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz#acb5606019a197cb99beda3c05404b851f441c92" + integrity sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.1" + jest-regex-util "^29.4.3" + jest-util "^29.6.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + "@jest/types@27.5.1": version "27.5.1" resolved "https://registry.npmmirror.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" @@ -3719,16 +3738,6 @@ "@types/istanbul-reports" "^1.1.1" "@types/yargs" "^13.0.0" -"@jest/types@^26.6.2": - version "26.6.2" - resolved "https://registry.npmmirror.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^15.0.0" - chalk "^4.0.0" - "@jest/types@^29.5.0": version "29.5.0" resolved "https://registry.npmmirror.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593" @@ -3740,6 +3749,18 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" +"@jest/types@^29.6.1": + version "29.6.1" + resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" + integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== + dependencies: + "@jest/schemas" "^29.6.0" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + "@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.3" resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" @@ -3782,7 +3803,7 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.18" resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6" dependencies: @@ -4453,13 +4474,6 @@ semver "^7.3.5" tar "^6.1.11" -"@mrmlnc/readdir-enhanced@^2.2.1": - version "2.2.1" - resolved "https://registry.npmmirror.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" resolved "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" @@ -4493,10 +4507,6 @@ version "2.0.5" resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": version "1.2.8" resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" @@ -4923,6 +4933,11 @@ version "1.7.1" resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.7.1.tgz#fea7ac35ae4014637c130011f59428f618730498" +"@remix-run/router@1.7.2": + version "1.7.2" + resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz#cba1cf0a04bc04cb66027c51fa600e9cbc388bc8" + integrity sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A== + "@restart/hooks@^0.4.7": version "0.4.9" resolved "https://registry.npmmirror.com/@restart/hooks/-/hooks-0.4.9.tgz#ad858fb39d99e252cccce19416adc18fc3f18fcb" @@ -5022,21 +5037,28 @@ version "0.25.24" resolved "https://registry.npmmirror.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718" +"@sinclair/typebox@^0.27.8": + version "0.27.8" + resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" + integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" -"@sinonjs/commons@^1.7.0": - version "1.8.6" - resolved "https://registry.npmmirror.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" +"@sinonjs/commons@^3.0.0": + version "3.0.0" + resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" + integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^6.0.1": - version "6.0.1" - resolved "https://registry.npmmirror.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" +"@sinonjs/fake-timers@^10.0.2": + version "10.3.0" + resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" + integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: - "@sinonjs/commons" "^1.7.0" + "@sinonjs/commons" "^3.0.0" "@sketch-hq/sketch-file-format-ts@^6": version "6.5.0" @@ -5705,7 +5727,7 @@ version "5.0.1" resolved "https://registry.npmmirror.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc" -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.7": +"@types/babel__core@^7.1.0", "@types/babel__core@^7.1.14": version "7.20.1" resolved "https://registry.npmmirror.com/@types/babel__core/-/babel__core-7.20.1.tgz#916ecea274b0c776fec721e333e55762d3a9614b" dependencies: @@ -5728,7 +5750,7 @@ "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": version "7.20.1" resolved "https://registry.npmmirror.com/@types/babel__traverse/-/babel__traverse-7.20.1.tgz#dd6f1d2411ae677dcb2db008c962598be31d6acf" dependencies: @@ -6036,7 +6058,7 @@ version "3.53.4" resolved "https://registry.npmmirror.com/@types/google.maps/-/google.maps-3.53.4.tgz#741442764ebaef1a6705f3ab2c047ffeba333020" -"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3": +"@types/graceful-fs@^4.1.3": version "4.1.6" resolved "https://registry.npmmirror.com/@types/graceful-fs/-/graceful-fs-4.1.6.tgz#e14b2576a1c25026b7f02ede1de3b84c3a1efeae" dependencies: @@ -6107,12 +6129,13 @@ expect "^29.0.0" pretty-format "^29.0.0" -"@types/jest@^26.0.0": - version "26.0.24" - resolved "https://registry.npmmirror.com/@types/jest/-/jest-26.0.24.tgz#943d11976b16739185913a1936e0de0c4a7d595a" +"@types/jest@^29.0.0": + version "29.5.3" + resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz#7a35dc0044ffb8b56325c6802a4781a626b05777" + integrity sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA== dependencies: - jest-diff "^26.0.0" - pretty-format "^26.0.0" + expect "^29.0.0" + pretty-format "^29.0.0" "@types/js-cookie@^2.x.x": version "2.2.7" @@ -6287,9 +6310,10 @@ dependencies: "@types/express" "*" -"@types/prettier@^2.0.0": +"@types/prettier@^2.1.5": version "2.7.3" - resolved "https://registry.npmmirror.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": version "15.7.5" @@ -6339,6 +6363,7 @@ "@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^17", "@types/react@^17.0.0", "@types/react@^18.0.0": version "17.0.62" resolved "https://registry.npmmirror.com/@types/react/-/react-17.0.62.tgz#2efe8ddf8533500ec44b1334dd1a97caa2f860e3" + integrity sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -6463,12 +6488,6 @@ dependencies: "@types/yargs-parser" "*" -"@types/yargs@^15.0.0": - version "15.0.15" - resolved "https://registry.npmmirror.com/@types/yargs/-/yargs-15.0.15.tgz#e609a2b1ef9e05d90489c2f5f45bbfb2be092158" - dependencies: - "@types/yargs-parser" "*" - "@types/yargs@^16.0.0": version "16.0.5" resolved "https://registry.npmmirror.com/@types/yargs/-/yargs-16.0.5.tgz#12cc86393985735a283e387936398c2f9e5f88e3" @@ -7307,7 +7326,7 @@ ansi-cyan@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-escapes@^3.0.0, ansi-escapes@^3.1.0, ansi-escapes@^3.2.0: +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -7345,7 +7364,7 @@ ansi-regex@^4.0.0, ansi-regex@^4.1.0: version "4.1.1" resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" -ansi-regex@^5.0.0, ansi-regex@^5.0.1: +ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" @@ -7654,10 +7673,6 @@ array-buffer-byte-length@^1.0.0: call-bind "^1.0.2" is-array-buffer "^3.0.1" -array-differ@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" - array-differ@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" @@ -7666,10 +7681,6 @@ array-equal@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.npmmirror.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - array-ify@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" @@ -7692,20 +7703,10 @@ array-tree-filter@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz#873ac00fec83749f255ac8dd083814b4f6329190" -array-union@^1.0.1: - version "1.0.2" - resolved "https://registry.npmmirror.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - dependencies: - array-uniq "^1.0.1" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.npmmirror.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - array-unique@^0.3.2: version "0.3.2" resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" @@ -7767,7 +7768,7 @@ array.prototype.tosorted@^1.1.1: es-shim-unscopables "^1.0.0" get-intrinsic "^1.1.3" -arrify@^1.0.0, arrify@^1.0.1: +arrify@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" @@ -7813,10 +7814,6 @@ assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" -ast-types@0.11.7: - version "0.11.7" - resolved "https://registry.npmmirror.com/ast-types/-/ast-types-0.11.7.tgz#f318bf44e339db6a320be0009ded64ec1471f46c" - ast-types@^0.13.2: version "0.13.4" resolved "https://registry.npmmirror.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" @@ -7976,7 +7973,7 @@ axios@^0.27.2: follow-redirects "^1.14.9" form-data "^4.0.0" -babel-core@7.0.0-bridge.0, babel-core@^7.0.0-bridge.0: +babel-core@7.0.0-bridge.0: version "7.0.0-bridge.0" resolved "https://registry.npmmirror.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" @@ -7992,19 +7989,6 @@ babel-jest@^24.8.0, babel-jest@^24.9.0: chalk "^2.4.2" slash "^2.0.0" -babel-jest@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" - dependencies: - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/babel__core" "^7.1.7" - babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^26.6.2" - chalk "^4.0.0" - graceful-fs "^4.2.4" - slash "^3.0.0" - babel-jest@^29.4.3: version "29.5.0" resolved "https://registry.npmmirror.com/babel-jest/-/babel-jest-29.5.0.tgz#3fe3ddb109198e78b1c88f9ebdecd5e4fc2f50a5" @@ -8017,6 +8001,19 @@ babel-jest@^29.4.3: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a" + integrity sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A== + dependencies: + "@jest/transform" "^29.6.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-plugin-dynamic-import-node@2.3.3: version "2.3.3" resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -8032,7 +8029,7 @@ babel-plugin-istanbul@^5.1.0, babel-plugin-istanbul@^5.2.0: istanbul-lib-instrument "^3.3.0" test-exclude "^5.2.3" -babel-plugin-istanbul@^6.0.0, babel-plugin-istanbul@^6.1.1: +babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.npmmirror.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" dependencies: @@ -8048,15 +8045,6 @@ babel-plugin-jest-hoist@^24.9.0: dependencies: "@types/babel__traverse" "^7.0.6" -babel-plugin-jest-hoist@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - babel-plugin-jest-hoist@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz#a97db437936f441ec196990c9738d4b88538618a" @@ -8173,13 +8161,6 @@ babel-preset-jest@^24.9.0: "@babel/plugin-syntax-object-rest-spread" "^7.0.0" babel-plugin-jest-hoist "^24.9.0" -babel-preset-jest@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" - dependencies: - babel-plugin-jest-hoist "^26.6.2" - babel-preset-current-node-syntax "^1.0.0" - babel-preset-jest@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz#57bc8cc88097af7ff6a5ab59d1cd29d52a5916e2" @@ -8527,7 +8508,7 @@ buffer-fill@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" -buffer-from@1.x, buffer-from@^1.0.0, buffer-from@^1.1.1: +buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.2" resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -8723,10 +8704,6 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -call-me-maybe@^1.0.1: - version "1.0.2" - resolved "https://registry.npmmirror.com/call-me-maybe/-/call-me-maybe-1.0.2.tgz#03f964f19522ba643b1b0693acb9152fe2074baa" - caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -8754,13 +8731,6 @@ camel-case@^4.1.1, camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - camelcase-keys@^6.2.2: version "6.2.2" resolved "https://registry.npmmirror.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" @@ -8773,10 +8743,6 @@ camelcase@^1.0.2: version "1.2.1" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.npmmirror.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - camelcase@^4.0.0: version "4.1.0" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" @@ -8785,7 +8751,7 @@ camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" -camelcase@^6.0.0, camelcase@^6.2.0: +camelcase@^6.2.0: version "6.3.0" resolved "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" @@ -8877,7 +8843,7 @@ chalk@5.2.0: version "5.2.0" resolved "https://registry.npmmirror.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" -chalk@^1.1.1, chalk@^1.1.3, chalk@~1.1.3: +chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -9038,9 +9004,10 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" -cjs-module-lexer@^0.6.0: - version "0.6.0" - resolved "https://registry.npmmirror.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" +cjs-module-lexer@^1.0.0: + version "1.2.3" + resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" + integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== class-utils@^0.3.5: version "0.3.6" @@ -9157,14 +9124,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.npmmirror.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.npmmirror.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -9353,10 +9312,6 @@ colorette@^2.0.19: version "2.0.20" resolved "https://registry.npmmirror.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.npmmirror.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - colors@~0.6.0-1: version "0.6.2" resolved "https://registry.npmmirror.com/colors/-/colors-0.6.2.tgz#2423fe6678ac0c5dae8852e5d0e5be08c997abcc" @@ -9909,13 +9864,6 @@ cross-fetch@3.1.6: dependencies: node-fetch "^2.6.11" -cross-spawn-async@^2.1.1: - version "2.2.5" - resolved "https://registry.npmmirror.com/cross-spawn-async/-/cross-spawn-async-2.2.5.tgz#845ff0c0834a3ded9d160daca6d390906bb288cc" - dependencies: - lru-cache "^4.0.0" - which "^1.2.8" - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -10101,7 +10049,7 @@ css.escape@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" -css@^2.2.3, css@^2.2.4: +css@^2.2.3: version "2.2.4" resolved "https://registry.npmmirror.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" dependencies: @@ -10272,12 +10220,6 @@ current-script-polyfill@1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/current-script-polyfill/-/current-script-polyfill-1.0.0.tgz#f31cf7e4f3e218b0726e738ca92a02d3488ef615" -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.npmmirror.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - dependencies: - array-find-index "^1.0.1" - cwd@^0.9.1: version "0.9.1" resolved "https://registry.npmmirror.com/cwd/-/cwd-0.9.1.tgz#41e10a7e1ab833dc59c2eca83814c7de77b5a4fd" @@ -10664,7 +10606,7 @@ decamelize-keys@^1.1.0: decamelize "^1.1.0" map-obj "^1.0.0" -decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -10989,10 +10931,6 @@ diff-sequences@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-24.9.0.tgz#5715d6244e2aa65f48bba0bc972db0b0b11e95b5" -diff-sequences@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" - diff-sequences@^29.4.3: version "29.4.3" resolved "https://registry.npmmirror.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2" @@ -11017,13 +10955,6 @@ digest-header@^1.0.0: version "1.1.0" resolved "https://registry.npmmirror.com/digest-header/-/digest-header-1.1.0.tgz#e16ab6cf4545bc4eea878c8c35acd1b89664d800" -dir-glob@2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" - dependencies: - arrify "^1.0.1" - path-type "^3.0.0" - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -11380,9 +11311,10 @@ emittery@^0.12.1: version "0.12.1" resolved "https://registry.npmmirror.com/emittery/-/emittery-0.12.1.tgz#cb9a4a18745816f7a1fa03a8953e7eaededb45f2" -emittery@^0.7.1: - version "0.7.2" - resolved "https://registry.npmmirror.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^7.0.1: version "7.0.3" @@ -11550,7 +11482,7 @@ errno@^0.1.1, errno@^0.1.3: dependencies: prr "~1.0.1" -error-ex@^1.2.0, error-ex@^1.3.1: +error-ex@^1.3.1: version "1.3.2" resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" dependencies: @@ -11986,7 +11918,7 @@ espree@^9.6.0: acorn-jsx "^5.3.2" eslint-visitor-keys "^3.4.1" -esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: +esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" @@ -12086,17 +12018,6 @@ exec-sh@^0.3.2: version "0.3.6" resolved "https://registry.npmmirror.com/exec-sh/-/exec-sh-0.3.6.tgz#ff264f9e325519a60cb5e273692943483cca63bc" -execa@^0.4.0, execa@~0.4.0: - version "0.4.0" - resolved "https://registry.npmmirror.com/execa/-/execa-0.4.0.tgz#4eb6467a36a095fabb2970ff9d5e3fb7bce6ebc3" - dependencies: - cross-spawn-async "^2.1.1" - is-stream "^1.1.0" - npm-run-path "^1.0.0" - object-assign "^4.0.1" - path-key "^1.0.0" - strip-eof "^1.0.0" - execa@^0.7.0: version "0.7.0" resolved "https://registry.npmmirror.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" @@ -12204,17 +12125,6 @@ expect@^24.9.0: jest-message-util "^24.9.0" jest-regex-util "^24.9.0" -expect@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" - dependencies: - "@jest/types" "^26.6.2" - ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-regex-util "^26.0.0" - expect@^29.0.0: version "29.5.0" resolved "https://registry.npmmirror.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7" @@ -12225,6 +12135,18 @@ expect@^29.0.0: jest-message-util "^29.5.0" jest-util "^29.5.0" +expect@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" + integrity sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g== + dependencies: + "@jest/expect-utils" "^29.6.1" + "@types/node" "*" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-util "^29.6.1" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -12308,17 +12230,6 @@ fast-glob@3.2.12: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^2.0.2: - version "2.2.7" - resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9: version "3.3.0" resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.0.tgz#7c40cb491e1e2ed5664749e87bfb516dbe8727c0" @@ -12530,13 +12441,6 @@ find-root@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.npmmirror.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" @@ -12597,10 +12501,6 @@ flatted@^3.1.0: version "3.2.7" resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" -flow-parser@0.*: - version "0.211.0" - resolved "https://registry.npmmirror.com/flow-parser/-/flow-parser-0.211.0.tgz#710c7dabdfe11494377dcef9a65602e8c445e35a" - flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: version "1.1.1" resolved "https://registry.npmmirror.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" @@ -12842,7 +12742,7 @@ fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@^2.1.2, fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.1, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -12974,10 +12874,6 @@ get-ready@^1.0.0, get-ready@~1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/get-ready/-/get-ready-1.0.0.tgz#f91817f1e9adecfea13a562adfc8de883ab34782" -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.npmmirror.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - get-stream@^2.2.0: version "2.3.1" resolved "https://registry.npmmirror.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" @@ -13174,10 +13070,6 @@ glob-stream@^6.1.0: to-absolute-glob "^2.0.0" unique-stream "^2.0.2" -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.npmmirror.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.3: version "7.2.3" resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" @@ -13262,18 +13154,6 @@ globby@^13.1.2: merge2 "^1.4.1" slash "^4.0.0" -globby@^8.0.1: - version "8.0.2" - resolved "https://registry.npmmirror.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" - dependencies: - array-union "^1.0.1" - dir-glob "2.0.0" - fast-glob "^2.0.2" - glob "^7.1.2" - ignore "^3.3.5" - pify "^3.0.0" - slash "^1.0.0" - gopd@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -14011,10 +13891,6 @@ ignore-walk@^3.0.3: dependencies: minimatch "^3.0.4" -ignore@^3.3.5: - version "3.3.10" - resolved "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - ignore@^5.1.1, ignore@^5.1.4, ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.npmmirror.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -14093,12 +13969,6 @@ imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - dependencies: - repeating "^2.0.0" - indent-string@^3.0.0: version "3.2.0" resolved "https://registry.npmmirror.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -14162,7 +14032,7 @@ inline-style-parser@0.1.1: version "0.1.1" resolved "https://registry.npmmirror.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" -inquirer@^6.2.1, inquirer@^6.2.2, inquirer@^6.5.2: +inquirer@^6.2.2, inquirer@^6.5.2: version "6.5.2" resolved "https://registry.npmmirror.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" dependencies: @@ -14513,10 +14383,6 @@ is-finalizationregistry@^1.0.2: dependencies: call-bind "^1.0.2" -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -14545,14 +14411,6 @@ is-generator-function@^1.0.10, is-generator-function@^1.0.7: dependencies: has-tostringtag "^1.0.0" -is-git-clean@~1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/is-git-clean/-/is-git-clean-1.1.0.tgz#13abd6dda711bb08aafd42604da487845ddcf88d" - dependencies: - execa "^0.4.0" - is-obj "^1.0.1" - multimatch "^2.1.0" - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -14638,7 +14496,7 @@ is-number@^7.0.0: version "7.0.0" resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" -is-obj@^1.0.0, is-obj@^1.0.1: +is-obj@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" @@ -14652,12 +14510,6 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" -is-path-inside@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" - dependencies: - path-is-inside "^1.0.2" - is-path-inside@^3.0.3: version "3.0.3" resolved "https://registry.npmmirror.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" @@ -14809,7 +14661,7 @@ is-url@1.2.4: version "1.2.4" resolved "https://registry.npmmirror.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.1: version "0.2.1" resolved "https://registry.npmmirror.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -14917,16 +14769,7 @@ istanbul-lib-instrument@^3.0.1, istanbul-lib-instrument@^3.3.0: istanbul-lib-coverage "^2.0.5" semver "^6.0.0" -istanbul-lib-instrument@^4.0.3: - version "4.0.3" - resolved "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-instrument@^5.0.4: +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: version "5.2.1" resolved "https://registry.npmmirror.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" dependencies: @@ -14976,9 +14819,10 @@ istanbul-reports@^2.2.6: dependencies: html-escaper "^2.0.0" -istanbul-reports@^3.0.2: +istanbul-reports@^3.1.3: version "3.1.5" - resolved "https://registry.npmmirror.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -15003,13 +14847,39 @@ jest-changed-files@^24.9.0: execa "^1.0.0" throat "^4.0.0" -jest-changed-files@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" +jest-changed-files@^29.5.0: + version "29.5.0" + resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" + integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== dependencies: - "@jest/types" "^26.6.2" - execa "^4.0.0" - throat "^5.0.0" + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz#861dab37e71a89907d1c0fabc54a0019738ed824" + integrity sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ== + dependencies: + "@jest/environment" "^29.6.1" + "@jest/expect" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^29.6.1" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-runtime "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" + p-limit "^3.1.0" + pretty-format "^29.6.1" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" jest-cli@^24.8.0, jest-cli@^24.9.0: version "24.9.0" @@ -15029,36 +14899,23 @@ jest-cli@^24.8.0, jest-cli@^24.9.0: realpath-native "^1.1.0" yargs "^13.3.0" -jest-cli@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" +jest-cli@^29.0.0, jest-cli@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz#99d9afa7449538221c71f358f0fdd3e9c6e89f72" + integrity sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing== dependencies: - "@jest/core" "^26.6.3" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/core" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" import-local "^3.0.2" - is-ci "^2.0.0" - jest-config "^26.6.3" - jest-util "^26.6.2" - jest-validate "^26.6.2" + jest-config "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" prompts "^2.0.1" - yargs "^15.4.1" - -jest-codemods@^0.19.1: - version "0.19.1" - resolved "https://registry.npmmirror.com/jest-codemods/-/jest-codemods-0.19.1.tgz#823a0662d95bf8cb9158b8b6a705d0f6e9bb7b60" - dependencies: - chalk "~1.1.3" - execa "~0.4.0" - globby "^8.0.1" - inquirer "^6.2.1" - is-git-clean "~1.1.0" - jscodeshift "^0.6.2" - meow "~3.7.0" - update-notifier "^2.2.0" + yargs "^17.3.1" jest-config@^24.9.0: version "24.9.0" @@ -15082,28 +14939,33 @@ jest-config@^24.9.0: pretty-format "^24.9.0" realpath-native "^1.1.0" -jest-config@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" +jest-config@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz#d785344509065d53a238224c6cdc0ed8e2f2f0dd" + integrity sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ== dependencies: - "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^26.6.3" - "@jest/types" "^26.6.2" - babel-jest "^26.6.3" + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.6.1" + "@jest/types" "^29.6.1" + babel-jest "^29.6.1" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.4" - jest-environment-jsdom "^26.6.2" - jest-environment-node "^26.6.2" - jest-get-type "^26.3.0" - jest-jasmine2 "^26.6.3" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" - micromatch "^4.0.2" - pretty-format "^26.6.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.6.1" + jest-environment-node "^29.6.1" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.1" + jest-runner "^29.6.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.6.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" jest-diff@^24.0.0, jest-diff@^24.9.0: version "24.9.0" @@ -15114,15 +14976,6 @@ jest-diff@^24.0.0, jest-diff@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-diff@^26.0.0, jest-diff@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" - dependencies: - chalk "^4.0.0" - diff-sequences "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - jest-diff@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63" @@ -15132,15 +14985,26 @@ jest-diff@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" +jest-diff@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" + integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.6.1" + jest-docblock@^24.3.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" dependencies: detect-newline "^2.1.0" -jest-docblock@^26.0.0: - version "26.0.0" - resolved "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" +jest-docblock@^29.4.3: + version "29.4.3" + resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" + integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== dependencies: detect-newline "^3.0.0" @@ -15167,15 +15031,16 @@ jest-each@^24.9.0: jest-util "^24.9.0" pretty-format "^24.9.0" -jest-each@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" +jest-each@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz#975058e5b8f55c6780beab8b6ab214921815c89c" + integrity sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^29.6.1" chalk "^4.0.0" - jest-get-type "^26.3.0" - jest-util "^26.6.2" - pretty-format "^26.6.2" + jest-get-type "^29.4.3" + jest-util "^29.6.1" + pretty-format "^29.6.1" jest-environment-jsdom@^24.9.0: version "24.9.0" @@ -15188,18 +15053,6 @@ jest-environment-jsdom@^24.9.0: jest-util "^24.9.0" jsdom "^11.5.1" -jest-environment-jsdom@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" - dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" - jsdom "^16.4.0" - jest-environment-node@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-24.9.0.tgz#333d2d2796f9687f2aeebf0742b519f33c1cbfd3" @@ -15210,25 +15063,22 @@ jest-environment-node@^24.9.0: jest-mock "^24.9.0" jest-util "^24.9.0" -jest-environment-node@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" +jest-environment-node@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz#08a122dece39e58bc388da815a2166c58b4abec6" + integrity sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ== dependencies: - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/environment" "^29.6.1" + "@jest/fake-timers" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" - jest-mock "^26.6.2" - jest-util "^26.6.2" + jest-mock "^29.6.1" + jest-util "^29.6.1" jest-get-type@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" -jest-get-type@^26.3.0: - version "26.3.0" - resolved "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" - jest-get-type@^29.4.3: version "29.4.3" resolved "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5" @@ -15251,26 +15101,6 @@ jest-haste-map@^24.9.0: optionalDependencies: fsevents "^1.2.7" -jest-haste-map@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" - dependencies: - "@jest/types" "^26.6.2" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.4" - jest-regex-util "^26.0.0" - jest-serializer "^26.6.2" - jest-util "^26.6.2" - jest-worker "^26.6.2" - micromatch "^4.0.2" - sane "^4.0.3" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.1.2" - jest-haste-map@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/jest-haste-map/-/jest-haste-map-29.5.0.tgz#69bd67dc9012d6e2723f20a945099e972b2e94de" @@ -15289,6 +15119,25 @@ jest-haste-map@^29.5.0: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz#62655c7a1c1b349a3206441330fb2dbdb4b63803" + integrity sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig== + dependencies: + "@jest/types" "^29.6.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.6.1" + jest-worker "^29.6.1" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-jasmine2@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" @@ -15310,29 +15159,6 @@ jest-jasmine2@^24.9.0: pretty-format "^24.9.0" throat "^4.0.0" -jest-jasmine2@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" - dependencies: - "@babel/traverse" "^7.1.0" - "@jest/environment" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^26.6.2" - is-generator-fn "^2.0.0" - jest-each "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-runtime "^26.6.3" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - pretty-format "^26.6.2" - throat "^5.0.0" - jest-leak-detector@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz#b665dea7c77100c5c4f7dfcb153b65cf07dcf96a" @@ -15340,16 +15166,13 @@ jest-leak-detector@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-leak-detector@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" +jest-leak-detector@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz#66a902c81318e66e694df7d096a95466cb962f8e" + integrity sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ== dependencies: - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - -jest-localstorage-mock@^2.3.0: - version "2.4.26" - resolved "https://registry.npmmirror.com/jest-localstorage-mock/-/jest-localstorage-mock-2.4.26.tgz#7d57fb3555f2ed5b7ed16fd8423fd81f95e9e8db" + jest-get-type "^29.4.3" + pretty-format "^29.6.1" jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: version "24.9.0" @@ -15360,15 +15183,6 @@ jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: jest-get-type "^24.9.0" pretty-format "^24.9.0" -jest-matcher-utils@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" - dependencies: - chalk "^4.0.0" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - pretty-format "^26.6.2" - jest-matcher-utils@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5" @@ -15378,6 +15192,16 @@ jest-matcher-utils@^29.5.0: jest-get-type "^29.4.3" pretty-format "^29.5.0" +jest-matcher-utils@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" + integrity sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA== + dependencies: + chalk "^4.0.0" + jest-diff "^29.6.1" + jest-get-type "^29.4.3" + pretty-format "^29.6.1" + jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -15391,20 +15215,6 @@ jest-message-util@^24.9.0: slash "^2.0.0" stack-utils "^1.0.1" -jest-message-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - pretty-format "^26.6.2" - slash "^3.0.0" - stack-utils "^2.0.2" - jest-message-util@^29.5.0: version "29.5.0" resolved "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e" @@ -15419,18 +15229,35 @@ jest-message-util@^29.5.0: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" + integrity sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.1" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" dependencies: "@jest/types" "^24.9.0" -jest-mock@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" +jest-mock@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz#049ee26aea8cbf54c764af649070910607316517" + integrity sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" + jest-util "^29.6.1" jest-pnp-resolver@^1.2.0, jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: version "1.2.3" @@ -15440,10 +15267,6 @@ jest-regex-util@^24.3.0, jest-regex-util@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-24.9.0.tgz#c13fb3380bde22bf6575432c493ea8fe37965636" -jest-regex-util@^26.0.0: - version "26.0.0" - resolved "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" - jest-regex-util@^29.4.3: version "29.4.3" resolved "https://registry.npmmirror.com/jest-regex-util/-/jest-regex-util-29.4.3.tgz#a42616141e0cae052cfa32c169945d00c0aa0bb8" @@ -15456,13 +15279,13 @@ jest-resolve-dependencies@^24.9.0: jest-regex-util "^24.3.0" jest-snapshot "^24.9.0" -jest-resolve-dependencies@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" +jest-resolve-dependencies@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz#b85b06670f987a62515bbf625d54a499e3d708f5" + integrity sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw== dependencies: - "@jest/types" "^26.6.2" - jest-regex-util "^26.0.0" - jest-snapshot "^26.6.2" + jest-regex-util "^29.4.3" + jest-snapshot "^29.6.1" jest-resolve@^24.8.0, jest-resolve@^24.9.0: version "24.9.0" @@ -15474,17 +15297,19 @@ jest-resolve@^24.8.0, jest-resolve@^24.9.0: jest-pnp-resolver "^1.2.1" realpath-native "^1.1.0" -jest-resolve@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" +jest-resolve@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz#4c3324b993a85e300add2f8609f51b80ddea39ee" + integrity sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg== dependencies: - "@jest/types" "^26.6.2" chalk "^4.0.0" - graceful-fs "^4.2.4" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.1" jest-pnp-resolver "^1.2.2" - jest-util "^26.6.2" - read-pkg-up "^7.0.1" - resolve "^1.18.1" + jest-util "^29.6.1" + jest-validate "^29.6.1" + resolve "^1.20.0" + resolve.exports "^2.0.0" slash "^3.0.0" jest-runner@^24.9.0: @@ -15511,30 +15336,32 @@ jest-runner@^24.9.0: source-map-support "^0.5.6" throat "^4.0.0" -jest-runner@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" +jest-runner@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz#54557087e7972d345540d622ab5bfc3d8f34688c" + integrity sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/console" "^29.6.1" + "@jest/environment" "^29.6.1" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.7.1" - exit "^0.1.2" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-docblock "^26.0.0" - jest-haste-map "^26.6.2" - jest-leak-detector "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" - jest-runtime "^26.6.3" - jest-util "^26.6.2" - jest-worker "^26.6.2" - source-map-support "^0.5.6" - throat "^5.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.6.1" + jest-haste-map "^29.6.1" + jest-leak-detector "^29.6.1" + jest-message-util "^29.6.1" + jest-resolve "^29.6.1" + jest-runtime "^29.6.1" + jest-util "^29.6.1" + jest-watcher "^29.6.1" + jest-worker "^29.6.1" + p-limit "^3.1.0" + source-map-support "0.5.13" jest-runtime@^24.9.0: version "24.9.0" @@ -15564,49 +15391,38 @@ jest-runtime@^24.9.0: strip-bom "^3.0.0" yargs "^13.3.0" -jest-runtime@^26.6.3: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" +jest-runtime@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz#8a0fc9274ef277f3d70ba19d238e64334958a0dc" + integrity sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ== dependencies: - "@jest/console" "^26.6.2" - "@jest/environment" "^26.6.2" - "@jest/fake-timers" "^26.6.2" - "@jest/globals" "^26.6.2" - "@jest/source-map" "^26.6.2" - "@jest/test-result" "^26.6.2" - "@jest/transform" "^26.6.2" - "@jest/types" "^26.6.2" - "@types/yargs" "^15.0.0" + "@jest/environment" "^29.6.1" + "@jest/fake-timers" "^29.6.1" + "@jest/globals" "^29.6.1" + "@jest/source-map" "^29.6.0" + "@jest/test-result" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" + "@types/node" "*" chalk "^4.0.0" - cjs-module-lexer "^0.6.0" + cjs-module-lexer "^1.0.0" collect-v8-coverage "^1.0.0" - exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.4" - jest-config "^26.6.3" - jest-haste-map "^26.6.2" - jest-message-util "^26.6.2" - jest-mock "^26.6.2" - jest-regex-util "^26.0.0" - jest-resolve "^26.6.2" - jest-snapshot "^26.6.2" - jest-util "^26.6.2" - jest-validate "^26.6.2" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.1" + jest-message-util "^29.6.1" + jest-mock "^29.6.1" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.1" + jest-snapshot "^29.6.1" + jest-util "^29.6.1" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.4.1" jest-serializer@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" -jest-serializer@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" - dependencies: - "@types/node" "*" - graceful-fs "^4.2.4" - jest-snapshot@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-24.9.0.tgz#ec8e9ca4f2ec0c5c87ae8f925cf97497b0e951ba" @@ -15625,32 +15441,32 @@ jest-snapshot@^24.9.0: pretty-format "^24.9.0" semver "^6.2.0" -jest-snapshot@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" +jest-snapshot@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz#0d083cb7de716d5d5cdbe80d598ed2fbafac0239" + integrity sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A== dependencies: - "@babel/types" "^7.0.0" - "@jest/types" "^26.6.2" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.0.0" + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.6.1" + "@jest/transform" "^29.6.1" + "@jest/types" "^29.6.1" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^26.6.2" - graceful-fs "^4.2.4" - jest-diff "^26.6.2" - jest-get-type "^26.3.0" - jest-haste-map "^26.6.2" - jest-matcher-utils "^26.6.2" - jest-message-util "^26.6.2" - jest-resolve "^26.6.2" + expect "^29.6.1" + graceful-fs "^4.2.9" + jest-diff "^29.6.1" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.1" + jest-message-util "^29.6.1" + jest-util "^29.6.1" natural-compare "^1.4.0" - pretty-format "^26.6.2" - semver "^7.3.2" - -jest-styled-components@6.3.3: - version "6.3.3" - resolved "https://registry.npmmirror.com/jest-styled-components/-/jest-styled-components-6.3.3.tgz#e15bbda13a6b6ff876d6b783751fe9840860c52a" - dependencies: - css "^2.2.4" + pretty-format "^29.6.1" + semver "^7.5.3" jest-util@^24.9.0: version "24.9.0" @@ -15669,16 +15485,17 @@ jest-util@^24.9.0: slash "^2.0.0" source-map "^0.6.0" -jest-util@^26.1.0, jest-util@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" +jest-util@^29.0.0, jest-util@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" + integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== dependencies: - "@jest/types" "^26.6.2" + "@jest/types" "^29.6.1" "@types/node" "*" chalk "^4.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - micromatch "^4.0.2" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" jest-util@^29.4.3, jest-util@^29.5.0: version "29.5.0" @@ -15702,32 +15519,17 @@ jest-validate@^24.9.0: leven "^3.1.0" pretty-format "^24.9.0" -jest-validate@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" +jest-validate@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz#765e684af6e2c86dce950aebefbbcd4546d69f7b" + integrity sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA== dependencies: - "@jest/types" "^26.6.2" - camelcase "^6.0.0" + "@jest/types" "^29.6.1" + camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^26.3.0" + jest-get-type "^29.4.3" leven "^3.1.0" - pretty-format "^26.6.2" - -jest-watch-directories@1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/jest-watch-directories/-/jest-watch-directories-1.1.0.tgz#c9cd3fb40ba3d985c5c029ca91d95b081e92efbb" - dependencies: - ansi-escapes "^3.1.0" - glob "^7.1.3" - is-path-inside "^2.0.0" - messageformat "^2.0.4" - prompts "^1.1.1" - -jest-watch-lerna-packages@^1.1.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/jest-watch-lerna-packages/-/jest-watch-lerna-packages-1.1.0.tgz#d689399d06f4c7c5b9f25658ba3910af7df86440" - dependencies: - jest-watch-directories "1.1.0" + pretty-format "^29.6.1" jest-watcher@^24.9.0: version "24.9.0" @@ -15741,16 +15543,18 @@ jest-watcher@^24.9.0: jest-util "^24.9.0" string-length "^2.0.0" -jest-watcher@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" +jest-watcher@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz#7c0c43ddd52418af134c551c92c9ea31e5ec942e" + integrity sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA== dependencies: - "@jest/test-result" "^26.6.2" - "@jest/types" "^26.6.2" + "@jest/test-result" "^29.6.1" + "@jest/types" "^29.6.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^26.6.2" + emittery "^0.13.1" + jest-util "^29.6.1" string-length "^4.0.1" jest-worker@24.9.0, jest-worker@^24.6.0, jest-worker@^24.9.0: @@ -15769,7 +15573,7 @@ jest-worker@29.4.3: merge-stream "^2.0.0" supports-color "^8.0.0" -jest-worker@^26.2.1, jest-worker@^26.6.2: +jest-worker@^26.2.1: version "26.6.2" resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" dependencies: @@ -15786,6 +15590,16 @@ jest-worker@^29.5.0: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" + integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== + dependencies: + "@types/node" "*" + jest-util "^29.6.1" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^24.8.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" @@ -15793,13 +15607,15 @@ jest@^24.8.0: import-local "^2.0.0" jest-cli "^24.9.0" -jest@^26.0.0: - version "26.6.3" - resolved "https://registry.npmmirror.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" +jest@^29.0.0: + version "29.6.1" + resolved "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz#74be1cb719c3abe439f2d94aeb18e6540a5b02ad" + integrity sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw== dependencies: - "@jest/core" "^26.6.3" + "@jest/core" "^29.6.1" + "@jest/types" "^29.6.1" import-local "^3.0.2" - jest-cli "^26.6.3" + jest-cli "^29.6.1" jose@^4.14.1: version "4.14.4" @@ -15855,29 +15671,6 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.npmmirror.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -jscodeshift@^0.6.2: - version "0.6.4" - resolved "https://registry.npmmirror.com/jscodeshift/-/jscodeshift-0.6.4.tgz#e19ab86214edac86a75c4557fc88b3937d558a8e" - dependencies: - "@babel/core" "^7.1.6" - "@babel/parser" "^7.1.6" - "@babel/plugin-proposal-class-properties" "^7.1.0" - "@babel/plugin-proposal-object-rest-spread" "^7.0.0" - "@babel/preset-env" "^7.1.6" - "@babel/preset-flow" "^7.0.0" - "@babel/preset-typescript" "^7.1.0" - "@babel/register" "^7.0.0" - babel-core "^7.0.0-bridge.0" - colors "^1.1.2" - flow-parser "0.*" - graceful-fs "^4.1.11" - micromatch "^3.1.10" - neo-async "^2.5.0" - node-dir "^0.1.17" - recast "^0.16.1" - temp "^0.8.1" - write-file-atomic "^2.3.0" - jsdom-worker@^0.3.0: version "0.3.0" resolved "https://registry.npmmirror.com/jsdom-worker/-/jsdom-worker-0.3.0.tgz#aff32ec089d17f56a5a344a426b6fb2f56e7de54" @@ -15916,7 +15709,7 @@ jsdom@^11.5.1: ws "^5.2.0" xml-name-validator "^3.0.0" -jsdom@^16.0.0, jsdom@^16.4.0: +jsdom@^16.0.0: version "16.7.0" resolved "https://registry.npmmirror.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" dependencies: @@ -16004,10 +15797,6 @@ json2mq@^0.2.0: dependencies: string-convert "^0.2.0" -json5@2.x, json5@^2.1.0, json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: - version "2.2.3" - resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - json5@^0.5.1: version "0.5.1" resolved "https://registry.npmmirror.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" @@ -16018,6 +15807,11 @@ json5@^1.0.1, json5@^1.0.2: dependencies: minimist "^1.2.0" +json5@^2.1.0, json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + jsonc-parser@^3.2.0: version "3.2.0" resolved "https://registry.npmmirror.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76" @@ -16148,7 +15942,7 @@ kitx@^2.0.0, kitx@^2.1.0: dependencies: "@types/node" "^12.0.2" -kleur@^3.0.0, kleur@^3.0.3: +kleur@^3.0.3: version "3.0.3" resolved "https://registry.npmmirror.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" @@ -16459,16 +16253,6 @@ listr2@^5.0.7: through "^2.3.8" wrap-ansi "^7.0.0" -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -16633,7 +16417,7 @@ lodash.isstring@^4.0.1: version "4.0.1" resolved "https://registry.npmmirror.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" -lodash.memoize@^4.1.2: +lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -16674,7 +16458,7 @@ lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" -lodash@4.17.21, lodash@4.x, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.7.0: version "4.17.21" resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -16733,13 +16517,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.npmmirror.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - loupe@^2.3.1, loupe@^2.3.6: version "2.3.6" resolved "https://registry.npmmirror.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53" @@ -16764,7 +16541,7 @@ lru-cache@8.0.5: version "8.0.5" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-8.0.5.tgz#983fe337f3e176667f8e567cfcce7cb064ea214e" -lru-cache@^4.0.0, lru-cache@^4.0.1, lru-cache@^4.1.1: +lru-cache@^4.0.1, lru-cache@^4.1.1: version "4.1.5" resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" dependencies: @@ -16897,12 +16674,6 @@ make-fetch-happen@^9.0.1, make-fetch-happen@^9.1.0: socks-proxy-agent "^6.0.0" ssri "^8.0.0" -make-plural@^4.3.0: - version "4.3.0" - resolved "https://registry.npmmirror.com/make-plural/-/make-plural-4.3.0.tgz#f23de08efdb0cac2e0c9ba9f315b0dff6b4c2735" - optionalDependencies: - minimist "^1.2.0" - makeerror@1.0.12: version "1.0.12" resolved "https://registry.npmmirror.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -16917,7 +16688,7 @@ map-cache@^0.2.2: version "0.2.2" resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" -map-obj@^1.0.0, map-obj@^1.0.1: +map-obj@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" @@ -17206,21 +16977,6 @@ meow@^8.0.0: type-fest "^0.18.0" yargs-parser "^20.2.3" -meow@~3.7.0: - version "3.7.0" - resolved "https://registry.npmmirror.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - merge-descriptors@^1.0.1: version "1.0.1" resolved "https://registry.npmmirror.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -17235,7 +16991,7 @@ merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" -merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: +merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" @@ -17260,22 +17016,6 @@ mermaid@9.4.3: uuid "^9.0.0" web-worker "^1.2.0" -messageformat-formatters@^2.0.1: - version "2.0.1" - resolved "https://registry.npmmirror.com/messageformat-formatters/-/messageformat-formatters-2.0.1.tgz#0492c1402a48775f751c9b17c0354e92be012b08" - -messageformat-parser@^4.1.2: - version "4.1.3" - resolved "https://registry.npmmirror.com/messageformat-parser/-/messageformat-parser-4.1.3.tgz#b824787f57fcda7d50769f5b63e8d4fda68f5b9e" - -messageformat@^2.0.4: - version "2.3.0" - resolved "https://registry.npmmirror.com/messageformat/-/messageformat-2.3.0.tgz#de263c49029d5eae65d7ee25e0754f57f425ad91" - dependencies: - make-plural "^4.3.0" - messageformat-formatters "^2.0.1" - messageformat-parser "^4.1.2" - methods@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" @@ -17571,7 +17311,7 @@ micromatch@^3.1.10, micromatch@^3.1.4: snapdragon "^0.8.1" to-regex "^3.0.2" -micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" dependencies: @@ -17665,7 +17405,7 @@ minimatch@3.0.4: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: +minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" dependencies: @@ -17685,7 +17425,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5, minimist@~1.2.7: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.5, minimist@~1.2.7: version "1.2.8" resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" @@ -17809,7 +17549,7 @@ mkdirp-infer-owner@^2.0.0: infer-owner "^1.0.4" mkdirp "^1.0.3" -mkdirp@1.0.4, mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: +mkdirp@1.0.4, mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" @@ -17919,15 +17659,6 @@ multer@^1.4.2: type-is "^1.6.4" xtend "^4.0.0" -multimatch@^2.1.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" - dependencies: - array-differ "^1.0.0" - array-union "^1.0.1" - arrify "^1.0.0" - minimatch "^3.0.0" - multimatch@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -18069,7 +17800,7 @@ negotiator@0.6.3, negotiator@^0.6.2: version "0.6.3" resolved "https://registry.npmmirror.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" -neo-async@^2.5.0, neo-async@^2.6.0: +neo-async@^2.6.0: version "2.6.2" resolved "https://registry.npmmirror.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" @@ -18096,12 +17827,6 @@ node-addon-api@^4.2.0: version "4.3.0" resolved "https://registry.npmmirror.com/node-addon-api/-/node-addon-api-4.3.0.tgz#52a1a0b475193e0928e98e0426a0d1254782b77f" -node-dir@^0.1.17: - version "0.1.17" - resolved "https://registry.npmmirror.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" - dependencies: - minimatch "^3.0.2" - node-domexception@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" @@ -18220,17 +17945,6 @@ node-notifier@^5.4.2: shellwords "^0.1.1" which "^1.3.0" -node-notifier@^8.0.0: - version "8.0.2" - resolved "https://registry.npmmirror.com/node-notifier/-/node-notifier-8.0.2.tgz#f3167a38ef0d2c8a866a83e318c1ba0efeb702c5" - dependencies: - growly "^1.3.0" - is-wsl "^2.2.0" - semver "^7.3.2" - shellwords "^0.1.1" - uuid "^8.3.0" - which "^2.0.2" - node-releases@^2.0.12: version "2.0.12" resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.12.tgz#35627cc224a23bfb06fb3380f2b3afaaa7eb1039" @@ -18275,7 +17989,7 @@ nopt@^5.0.0: dependencies: abbrev "1" -normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: +normalize-package-data@^2.0.0, normalize-package-data@^2.3.2, normalize-package-data@^2.4.0, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" dependencies: @@ -18420,12 +18134,6 @@ npm-registry-fetch@^9.0.0: minizlib "^2.0.0" npm-package-arg "^8.0.0" -npm-run-path@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-1.0.0.tgz#f5c32bf595fe81ae927daec52e82f8b000ac3c8f" - dependencies: - path-key "^1.0.0" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.npmmirror.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -18821,10 +18529,6 @@ p-each-series@^1.0.0: dependencies: p-reduce "^1.0.0" -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" @@ -18841,7 +18545,7 @@ p-limit@^2.0.0, p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: +p-limit@^3.0.2, p-limit@^3.1.0: version "3.1.0" resolved "https://registry.npmmirror.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" dependencies: @@ -19110,12 +18814,6 @@ parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.npmmirror.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - dependencies: - error-ex "^1.2.0" - parse-json@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" @@ -19123,7 +18821,7 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-json@^5.0.0: +parse-json@^5.0.0, parse-json@^5.2.0: version "5.2.0" resolved "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" dependencies: @@ -19217,12 +18915,6 @@ path-exists@3.0.0, path-exists@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.npmmirror.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - dependencies: - pinkie-promise "^2.0.0" - path-exists@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -19231,14 +18923,10 @@ path-is-absolute@1.0.1, path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" -path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2: +path-is-inside@1.0.2, path-is-inside@^1.0.1: version "1.0.2" resolved "https://registry.npmmirror.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/path-key/-/path-key-1.0.0.tgz#5d53d578019646c0d68800db4e146e6bdc2ac7af" - path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -19273,14 +18961,6 @@ path-to-regexp@^6.1.0: version "6.2.1" resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - path-type@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" @@ -19411,7 +19091,7 @@ pidusage@~3.0: dependencies: safe-buffer "^5.2.1" -pify@^2.0.0, pify@^2.3.0: +pify@^2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -20467,15 +20147,6 @@ pretty-format@^24.0.0, pretty-format@^24.9.0: ansi-styles "^3.2.0" react-is "^16.8.4" -pretty-format@^26.0.0, pretty-format@^26.6.2: - version "26.6.2" - resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" - dependencies: - "@jest/types" "^26.6.2" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^17.0.1" - pretty-format@^27.0.2: version "27.5.1" resolved "https://registry.npmmirror.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" @@ -20492,6 +20163,15 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.6.1: + version "29.6.1" + resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" + integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== + dependencies: + "@jest/schemas" "^29.6.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-quick@^3.1.0: version "3.1.3" resolved "https://registry.npmmirror.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" @@ -20519,10 +20199,6 @@ prismjs@^1.29.0: version "1.29.0" resolved "https://registry.npmmirror.com/prismjs/-/prismjs-1.29.0.tgz#f113555a8fa9b57c35e637bba27509dcf802dd12" -private@~0.1.5: - version "0.1.8" - resolved "https://registry.npmmirror.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" @@ -20569,13 +20245,6 @@ promptly@^2: dependencies: read "^1.0.4" -prompts@^1.1.1: - version "1.2.1" - resolved "https://registry.npmmirror.com/prompts/-/prompts-1.2.1.tgz#7fd4116a458d6a62761e3ccb1432d7bbd8b2cb29" - dependencies: - kleur "^3.0.0" - sisteransi "^1.0.0" - prompts@^2.0.1: version "2.4.2" resolved "https://registry.npmmirror.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -20704,6 +20373,11 @@ punycode@^2.1.0, punycode@^2.1.1: version "2.3.0" resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" +pure-rand@^6.0.0: + version "6.0.2" + resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" + integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== + q@^1.1.2, q@^1.5.1: version "1.5.1" resolved "https://registry.npmmirror.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" @@ -21458,10 +21132,11 @@ react-router-dom@6.3.0, react-router-dom@^6.11.2: react-router "6.14.1" react-router@6.14.1, react-router@6.3.0, react-router@^6.11.2: - version "6.14.1" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.14.1.tgz#5e82bcdabf21add859dc04b1859f91066b3a5810" + version "6.14.2" + resolved "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz#1f60994d8c369de7b8ba7a78d8f7ec23df76b300" + integrity sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ== dependencies: - "@remix-run/router" "1.7.1" + "@remix-run/router" "1.7.2" react-side-effect@^2.1.0: version "2.1.2" @@ -21549,13 +21224,6 @@ read-package-tree@^5.3.1: readdir-scoped-modules "^1.0.0" util-promisify "^2.1.0" -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - read-pkg-up@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" @@ -21578,14 +21246,6 @@ read-pkg-up@^7.0.1: read-pkg "^5.2.0" type-fest "^0.8.1" -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - read-pkg@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" @@ -21692,22 +21352,6 @@ realpath-native@^1.1.0: dependencies: util.promisify "^1.0.0" -recast@^0.16.1: - version "0.16.2" - resolved "https://registry.npmmirror.com/recast/-/recast-0.16.2.tgz#3796ebad5fe49ed85473b479cd6df554ad725dc2" - dependencies: - ast-types "0.11.7" - esprima "~4.0.0" - private "~0.1.5" - source-map "~0.6.1" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - redent@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" @@ -21969,12 +21613,6 @@ repeat-string@^1.5.2, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.npmmirror.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - dependencies: - is-finite "^1.0.0" - replace-ext@^1.0.0: version "1.0.1" resolved "https://registry.npmmirror.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" @@ -22120,11 +21758,16 @@ resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +resolve.exports@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" + integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== + resolve@1.1.7, resolve@~1.1.6: version "1.1.7" resolved "https://registry.npmmirror.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" -resolve@^1.0.0, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@~1.22.1: +resolve@^1.0.0, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.3.2, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.8.1, resolve@~1.22.1: version "1.22.2" resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f" dependencies: @@ -22204,7 +21847,7 @@ right-align@^0.1.1: dependencies: align-text "^0.1.1" -rimraf@2.6.3, rimraf@~2.6.2: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" dependencies: @@ -22592,17 +22235,17 @@ semver@7.3.7: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.1: +semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + +semver@^7.1.1, semver@^7.1.3, semver@^7.2, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.1: version "7.5.3" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e" dependencies: lru-cache "^6.0.0" -semver@^6.3.1: - version "6.3.1" - resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - -semver@^7.5.4: +semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" dependencies: @@ -22784,7 +22427,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -sisteransi@^1.0.0, sisteransi@^1.0.5: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.npmmirror.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -22805,10 +22448,6 @@ slash2@2.0.0, slash2@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/slash2/-/slash2-2.0.0.tgz#f4e0a11708b8545b912695981cf7096f52c63487" -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - slash@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" @@ -22982,6 +22621,14 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map-support@0.5.21, source-map-support@^0.5.12, source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@^0.5.21, source-map-support@^0.5.6, source-map-support@~0.5.20: version "0.5.21" resolved "https://registry.npmmirror.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" @@ -23176,7 +22823,7 @@ stack-utils@^1.0.1: dependencies: escape-string-regexp "^2.0.0" -stack-utils@^2.0.2, stack-utils@^2.0.3: +stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.npmmirror.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" dependencies: @@ -23435,12 +23082,6 @@ strip-ansi@^7.0.1: dependencies: ansi-regex "^6.0.1" -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - dependencies: - is-utf8 "^0.2.0" - strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -23467,12 +23108,6 @@ strip-final-newline@^3.0.0: version "3.0.0" resolved "https://registry.npmmirror.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - dependencies: - get-stdin "^4.0.1" - strip-indent@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" @@ -23623,13 +23258,6 @@ supports-color@^8.0.0, supports-color@^8.1.0: dependencies: has-flag "^4.0.0" -supports-hyperlinks@^2.0.0: - version "2.3.0" - resolved "https://registry.npmmirror.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - supports-preserve-symlinks-flag@^1.0.0: version "1.0.0" resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" @@ -23829,12 +23457,6 @@ temp-write@^4.0.0: temp-dir "^1.0.0" uuid "^3.3.2" -temp@^0.8.1: - version "0.8.4" - resolved "https://registry.npmmirror.com/temp/-/temp-0.8.4.tgz#8c97a33a4770072e0a05f919396c7665a7dd59f2" - dependencies: - rimraf "~2.6.2" - tencentcloud-sdk-nodejs@^4.0.525: version "4.0.634" resolved "https://registry.npmmirror.com/tencentcloud-sdk-nodejs/-/tencentcloud-sdk-nodejs-4.0.634.tgz#c6ea98d2bc2fb8ee6d164edd819b78f641c51ce2" @@ -23852,13 +23474,6 @@ term-size@^1.2.0: dependencies: execa "^0.7.0" -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.npmmirror.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - ternary-stream@^2.0.1: version "2.1.1" resolved "https://registry.npmmirror.com/ternary-stream/-/ternary-stream-2.1.1.tgz#4ad64b98668d796a085af2c493885a435a8a8bfc" @@ -23932,10 +23547,6 @@ throat@^4.0.0: version "4.1.0" resolved "https://registry.npmmirror.com/throat/-/throat-4.1.0.tgz#89037cbc92c56ab18926e6ba4cbb200e15672a6a" -throat@^5.0.0: - version "5.0.0" - resolved "https://registry.npmmirror.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" - throttle-debounce@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.0.tgz#a17a4039e82a2ed38a5e7268e4132d6960d41933" @@ -24164,10 +23775,6 @@ trim-lines@^3.0.0: version "3.0.1" resolved "https://registry.npmmirror.com/trim-lines/-/trim-lines-3.0.1.tgz#d802e332a07df861c48802c04321017b1bd87338" -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - trim-newlines@^3.0.0: version "3.0.1" resolved "https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" @@ -24188,20 +23795,19 @@ ts-dedent@^2.2.0: version "2.2.0" resolved "https://registry.npmmirror.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" -ts-jest@^26.0.0: - version "26.5.6" - resolved "https://registry.npmmirror.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" +ts-jest@^29.0.0: + version "29.1.1" + resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== dependencies: bs-logger "0.x" - buffer-from "1.x" fast-json-stable-stringify "2.x" - jest-util "^26.1.0" - json5 "2.x" - lodash "4.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" make-error "1.x" - mkdirp "1.x" - semver "7.x" - yargs-parser "20.x" + semver "^7.5.3" + yargs-parser "^21.0.1" ts-loader@^7.0.4: version "7.0.5" @@ -24995,7 +24601,7 @@ uuid@^3.2.1, uuid@^3.3.2: version "3.4.0" resolved "https://registry.npmmirror.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" -uuid@^8.2.0, uuid@^8.3.0, uuid@^8.3.2: +uuid@^8.2.0, uuid@^8.3.2: version "8.3.2" resolved "https://registry.npmmirror.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" @@ -25020,13 +24626,14 @@ v8-compile-cache@2.3.0: version "2.3.0" resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" -v8-to-istanbul@^7.0.0: - version "7.1.2" - resolved "https://registry.npmmirror.com/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz#30898d1a7fa0c84d225a2c1434fb958f290883c1" +v8-to-istanbul@^9.0.1: + version "9.1.0" + resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" + integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: + "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" - source-map "^0.7.3" validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" @@ -25397,7 +25004,7 @@ which-typed-array@^1.1.9: has-tostringtag "^1.0.0" is-typed-array "^1.1.10" -which@^1.2.12, which@^1.2.8, which@^1.2.9, which@^1.3.0, which@^1.3.1: +which@^1.2.12, which@^1.2.9, which@^1.3.0, which@^1.3.1: version "1.3.1" resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" dependencies: @@ -25543,7 +25150,7 @@ write-file-atomic@2.4.1: imurmurhash "^0.1.4" signal-exit "^3.0.2" -write-file-atomic@^2.0.0, write-file-atomic@^2.3.0, write-file-atomic@^2.4.2: +write-file-atomic@^2.0.0, write-file-atomic@^2.4.2: version "2.4.3" resolved "https://registry.npmmirror.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" dependencies: @@ -25787,18 +25394,11 @@ yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" -yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^21.1.1: +yargs-parser@^21.0.1, yargs-parser@^21.1.1: version "21.1.1" resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" @@ -25817,22 +25417,6 @@ yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^15.4.1: - version "15.4.1" - resolved "https://registry.npmmirror.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^16.2.0: version "16.2.0" resolved "https://registry.npmmirror.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" From f983e39cff4eb07e0d4c4f29f8b7b8f2510c6bb1 Mon Sep 17 00:00:00 2001 From: Zhou Date: Thu, 27 Jul 2023 08:04:28 +0800 Subject: [PATCH 26/34] Update README.zh-CN.md --- README.zh-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.zh-CN.md b/README.zh-CN.md index 7bb8b73e68..fb56de5df8 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -67,7 +67,7 @@ NocoBase 采用插件化架构,所有新功能都可以通过开发和安装 如果你需要商业版本和商业服务,欢迎通过邮件联系我们:hello@nocobase.com -也可以添加我们的微信,沟通商业合作或者加入微信群: +也可以添加我们的微信,沟通商业合作或者加入用户交流群: ![](https://www.nocobase.com/images/wechat.png) From 331147dfaa5e03c26554bd9caa9fdbdec5b6388b Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 09:17:08 +0800 Subject: [PATCH 27/34] chore: incr test timeout --- .github/workflows/nocobase-test-backend.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/nocobase-test-backend.yml b/.github/workflows/nocobase-test-backend.yml index bc0e75b8e1..89e018a313 100644 --- a/.github/workflows/nocobase-test-backend.yml +++ b/.github/workflows/nocobase-test-backend.yml @@ -38,12 +38,12 @@ jobs: cache: 'yarn' - run: yarn install - name: Test with Sqlite - run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB + run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: DB_DIALECT: sqlite DB_STORAGE: /tmp/db.sqlite DB_UNDERSCORED: ${{ matrix.underscored }} - timeout-minutes: 30 + timeout-minutes: 35 postgres-test: strategy: @@ -79,7 +79,7 @@ jobs: - run: yarn install # - run: yarn build - name: Test with postgres - run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB + run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: DB_DIALECT: postgres DB_HOST: postgres @@ -90,7 +90,7 @@ jobs: DB_UNDERSCORED: ${{ matrix.underscored }} DB_SCHEMA: ${{ matrix.schema }} COLLECTION_MANAGER_SCHEMA: ${{ matrix.collection_schema }} - timeout-minutes: 30 + timeout-minutes: 35 mysql-test: strategy: @@ -116,7 +116,7 @@ jobs: - run: yarn install # - run: yarn build - name: Test with MySQL - run: yarn nocobase install -f && node --max_old_space_size=4096 --no-compilation-cache ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB + run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: DB_DIALECT: mysql DB_HOST: mysql @@ -125,4 +125,4 @@ jobs: DB_PASSWORD: password DB_DATABASE: nocobase DB_UNDERSCORED: ${{ matrix.underscored }} - timeout-minutes: 30 + timeout-minutes: 35 From 0d92e59985ac8061f57f8ce62ac440c7a30ae9f1 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 10:29:07 +0800 Subject: [PATCH 28/34] chore: tsx (#2329) * chore: upgrade jest * fix: eslint * chore: github action backend test * fix: import * chore: export * fix: test * chore: install tsx * chore: type * chore: replace @koa/multer * chore: replace ts-node-dev with tsx --- packages/core/cli/package.json | 3 +- packages/core/cli/src/commands/dev.js | 7 ++- packages/core/cli/src/util.js | 8 +-- packages/core/utils/package.json | 1 + packages/core/utils/src/index.ts | 2 +- packages/core/utils/src/koa-multer.ts | 58 +++++++++++++++++++ .../plugins/duplicator/src/server/server.ts | 12 ++-- .../src/server/actions/attachments.ts | 4 +- .../import/src/server/middleware/index.ts | 2 +- yarn.lock | 34 +++++++++-- 10 files changed, 110 insertions(+), 21 deletions(-) create mode 100644 packages/core/utils/src/koa-multer.ts diff --git a/packages/core/cli/package.json b/packages/core/cli/package.json index 366f06acfd..5612bf8dd0 100644 --- a/packages/core/cli/package.json +++ b/packages/core/cli/package.json @@ -18,7 +18,8 @@ "fs-extra": "^11.1.1", "pm2": "^5.2.0", "portfinder": "^1.0.28", - "serve": "^13.0.2" + "serve": "^13.0.2", + "tsx": "^3.12.7" }, "devDependencies": { "@nocobase/devtools": "0.11.1-alpha.3" diff --git a/packages/core/cli/src/commands/dev.js b/packages/core/cli/src/commands/dev.js index 58f39b5de4..575029b83d 100644 --- a/packages/core/cli/src/commands/dev.js +++ b/packages/core/cli/src/commands/dev.js @@ -60,8 +60,9 @@ module.exports = (cli) => { // } if (server || !client) { console.log('starting server', serverPort); + const argv = [ - '-P', + '--tsconfig', './tsconfig.server.json', '-r', 'tsconfig-paths/register', @@ -74,8 +75,9 @@ module.exports = (cli) => { if (opts.dbSync) { argv.push('--db-sync'); } + const runDevServer = () => { - run('ts-node-dev', argv, { + run('tsx', argv, { env: { APP_PORT: serverPort, }, @@ -91,6 +93,7 @@ module.exports = (cli) => { runDevServer(); } + if (client || !server) { console.log('starting client', 1 * clientPort); run('umi', ['dev'], { diff --git a/packages/core/cli/src/util.js b/packages/core/cli/src/util.js index b34799a4e0..27faa861c2 100644 --- a/packages/core/cli/src/util.js +++ b/packages/core/cli/src/util.js @@ -106,7 +106,7 @@ exports.runInstall = async () => { if (exports.isDev()) { const argv = [ - '-P', + '--tsconfig', './tsconfig.server.json', '-r', 'tsconfig-paths/register', @@ -114,7 +114,7 @@ exports.runInstall = async () => { 'install', '-s', ]; - await exports.run('ts-node', argv); + await exports.run('tsx', argv); } else if (isProd()) { const file = `./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`; const argv = [file, 'install', '-s']; @@ -127,7 +127,7 @@ exports.runAppCommand = async (command, args = []) => { if (exports.isDev()) { const argv = [ - '-P', + '--tsconfig', './tsconfig.server.json', '-r', 'tsconfig-paths/register', @@ -135,7 +135,7 @@ exports.runAppCommand = async (command, args = []) => { command, ...args, ]; - await exports.run('ts-node', argv); + await exports.run('tsx', argv); } else if (isProd()) { const argv = [`./packages/${APP_PACKAGE_ROOT}/server/lib/index.js`, command, ...args]; await exports.run('node', argv); diff --git a/packages/core/utils/package.json b/packages/core/utils/package.json index 8457a7417f..f9a6afac6a 100644 --- a/packages/core/utils/package.json +++ b/packages/core/utils/package.json @@ -11,6 +11,7 @@ "deepmerge": "^4.2.2", "flat-to-nested": "^1.1.1", "graphlib": "^2.1.8", + "multer": "^1.4.5-lts.1", "object-path": "^0.11.8" }, "peerDependencies": { diff --git a/packages/core/utils/src/index.ts b/packages/core/utils/src/index.ts index a9d7ac4b78..bc35655d88 100644 --- a/packages/core/utils/src/index.ts +++ b/packages/core/utils/src/index.ts @@ -8,6 +8,7 @@ export * from './date'; export * from './dayjs'; export * from './forEach'; export * from './json-templates'; +export * from './koa-multer'; export * from './merge'; export * from './mixin'; export * from './mixin/AsyncEmitter'; @@ -19,4 +20,3 @@ export * from './requireModule'; export * from './toposort'; export * from './uid'; export { dayjs, lodash }; - diff --git a/packages/core/utils/src/koa-multer.ts b/packages/core/utils/src/koa-multer.ts new file mode 100644 index 0000000000..7cfa29f77c --- /dev/null +++ b/packages/core/utils/src/koa-multer.ts @@ -0,0 +1,58 @@ +import originalMulter from 'multer'; + +function multer(options?) { + const m = originalMulter(options) as any; + + makePromise(m, 'any'); + makePromise(m, 'array'); + makePromise(m, 'fields'); + makePromise(m, 'none'); + makePromise(m, 'single'); + + return m; +} + +function makePromise(multer, name) { + if (!multer[name]) return; + + const fn = multer[name]; + + multer[name] = function (...args) { + const middleware: any = Reflect.apply(fn, this, args); + + return async (ctx, next) => { + await new Promise((resolve, reject) => { + middleware(ctx.req, ctx.res, (err) => { + if (err) return reject(err); + if ('request' in ctx) { + if (ctx.req.body) { + ctx.request.body = ctx.req.body; + delete ctx.req.body; + } + + if (ctx.req.file) { + ctx.request.file = ctx.req.file; + ctx.file = ctx.req.file; + delete ctx.req.file; + } + + if (ctx.req.files) { + ctx.request.files = ctx.req.files; + ctx.files = ctx.req.files; + delete ctx.req.files; + } + } + + resolve(ctx); + }); + }); + + return next(); + }; + }; +} + +multer.diskStorage = originalMulter.diskStorage; +multer.memoryStorage = originalMulter.memoryStorage; + +export { multer as koaMulter }; diff --git a/packages/plugins/duplicator/src/server/server.ts b/packages/plugins/duplicator/src/server/server.ts index 86db064597..384c268d81 100644 --- a/packages/plugins/duplicator/src/server/server.ts +++ b/packages/plugins/duplicator/src/server/server.ts @@ -2,13 +2,13 @@ import { Plugin } from '@nocobase/server'; import addDumpCommand from './commands/dump-command'; import addRestoreCommand from './commands/restore-command'; -import zhCN from './locale/zh-CN'; -import dumpAction from './actions/dump-action'; -import { getPackageContent, restoreAction } from './actions/restore-action'; -import getDictAction from './actions/get-dict-action'; -import dumpableCollections from './actions/dumpable-collections-action'; -import multer from '@koa/multer'; +import { koaMulter as multer } from '@nocobase/utils'; import * as os from 'os'; +import dumpAction from './actions/dump-action'; +import dumpableCollections from './actions/dumpable-collections-action'; +import getDictAction from './actions/get-dict-action'; +import { getPackageContent, restoreAction } from './actions/restore-action'; +import zhCN from './locale/zh-CN'; export default class Duplicator extends Plugin { beforeLoad() { diff --git a/packages/plugins/file-manager/src/server/actions/attachments.ts b/packages/plugins/file-manager/src/server/actions/attachments.ts index 99e26a9936..327c89e198 100644 --- a/packages/plugins/file-manager/src/server/actions/attachments.ts +++ b/packages/plugins/file-manager/src/server/actions/attachments.ts @@ -1,5 +1,5 @@ -import multer from '@koa/multer'; -import actions, { Context, Next } from '@nocobase/actions'; +import { Context, Next } from '@nocobase/actions'; +import { koaMulter as multer } from '@nocobase/utils'; import path from 'path'; import { DEFAULT_MAX_FILE_SIZE, FILE_FIELD_NAME, LIMIT_FILES } from '../constants'; diff --git a/packages/plugins/import/src/server/middleware/index.ts b/packages/plugins/import/src/server/middleware/index.ts index 9cbe99e6f4..0be497f3d4 100644 --- a/packages/plugins/import/src/server/middleware/index.ts +++ b/packages/plugins/import/src/server/middleware/index.ts @@ -1,5 +1,5 @@ -import multer from '@koa/multer'; import { Context, Next } from '@nocobase/actions'; +import { koaMulter as multer } from '@nocobase/utils'; export async function importMiddleware(ctx: Context, next: Next) { if (ctx.action.actionName !== 'importXlsx') { diff --git a/yarn.lock b/yarn.lock index 05d2137c7c..7e43e3a7bf 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4935,7 +4935,7 @@ "@remix-run/router@1.7.2": version "1.7.2" - resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.7.2.tgz#cba1cf0a04bc04cb66027c51fa600e9cbc388bc8" + resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.2.tgz#cba1cf0a04bc04cb66027c51fa600e9cbc388bc8" integrity sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A== "@restart/hooks@^0.4.7": @@ -8571,6 +8571,13 @@ busboy@^0.2.11: dicer "0.2.5" readable-stream "1.1.x" +busboy@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== + dependencies: + streamsearch "^1.1.0" + byline@^5.0.0: version "5.0.0" resolved "https://registry.npmmirror.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" @@ -17659,6 +17666,19 @@ multer@^1.4.2: type-is "^1.6.4" xtend "^4.0.0" +multer@^1.4.5-lts.1: + version "1.4.5-lts.1" + resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" + integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== + dependencies: + append-field "^1.0.0" + busboy "^1.0.0" + concat-stream "^1.5.2" + mkdirp "^0.5.4" + object-assign "^4.1.1" + type-is "^1.6.4" + xtend "^4.0.0" + multimatch@^4.0.0: version "4.0.0" resolved "https://registry.npmmirror.com/multimatch/-/multimatch-4.0.0.tgz#8c3c0f6e3e8449ada0af3dd29efb491a375191b3" @@ -21133,7 +21153,7 @@ react-router-dom@6.3.0, react-router-dom@^6.11.2: react-router@6.14.1, react-router@6.3.0, react-router@^6.11.2: version "6.14.2" - resolved "https://registry.npmjs.org/react-router/-/react-router-6.14.2.tgz#1f60994d8c369de7b8ba7a78d8f7ec23df76b300" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.2.tgz#1f60994d8c369de7b8ba7a78d8f7ec23df76b300" integrity sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ== dependencies: "@remix-run/router" "1.7.2" @@ -22923,6 +22943,11 @@ streamsearch@0.1.2: version "0.1.2" resolved "https://registry.npmmirror.com/streamsearch/-/streamsearch-0.1.2.tgz#808b9d0e56fc273d809ba57338e929919a1a9f1a" +streamsearch@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== + strict-uri-encode@^2.0.0: version "2.0.0" resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" @@ -23916,9 +23941,10 @@ tsutils@^3.21.0: dependencies: tslib "^1.8.1" -tsx@^3.12.2: +tsx@^3.12.2, tsx@^3.12.7: version "3.12.7" - resolved "https://registry.npmmirror.com/tsx/-/tsx-3.12.7.tgz#b3b8b0fc79afc8260d1e14f9e995616c859a91e9" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.7.tgz#b3b8b0fc79afc8260d1e14f9e995616c859a91e9" + integrity sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw== dependencies: "@esbuild-kit/cjs-loader" "^2.4.2" "@esbuild-kit/core-utils" "^3.0.0" From a64b64384cc4adc796850db645e5d3bba32bccc0 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 11:00:39 +0800 Subject: [PATCH 29/34] chore: yarn dev with tsx watch --- packages/core/cli/src/commands/dev.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/core/cli/src/commands/dev.js b/packages/core/cli/src/commands/dev.js index 575029b83d..8dd319aabe 100644 --- a/packages/core/cli/src/commands/dev.js +++ b/packages/core/cli/src/commands/dev.js @@ -55,13 +55,12 @@ module.exports = (cli) => { } await runAppCommand('install', ['--silent']); - // if (opts.dbSync) { - // await runAppCommand('db:sync'); - // } + if (server || !client) { console.log('starting server', serverPort); const argv = [ + 'watch', '--tsconfig', './tsconfig.server.json', '-r', From 32ee260adfb1e0979bfc59fdf6c8f44d84292591 Mon Sep 17 00:00:00 2001 From: YANG QIA <2013xile@gmail.com> Date: Thu, 27 Jul 2023 16:56:11 +0800 Subject: [PATCH 30/34] fix(bi): issue of formatting relation field & reference link of line chart (#2332) * fix: line chart link * fix: style * fix: issue of formatting relation field * chore: close chart animation --- .../src/client/block/schemas/configure.ts | 92 ++++++++++++------- .../client/renderer/library/G2PlotLibrary.tsx | 3 +- .../src/server/actions/query.ts | 28 +++--- yarn.lock | 62 ------------- 4 files changed, 74 insertions(+), 111 deletions(-) diff --git a/packages/plugins/data-visualization/src/client/block/schemas/configure.ts b/packages/plugins/data-visualization/src/client/block/schemas/configure.ts index 8df16f65c7..68be231376 100644 --- a/packages/plugins/data-visualization/src/client/block/schemas/configure.ts +++ b/packages/plugins/data-visualization/src/client/block/schemas/configure.ts @@ -219,10 +219,20 @@ export const querySchema: ISchema = { 'x-component': 'Input', 'x-component-props': { placeholder: '{{t("Alias")}}', + style: { + minWidth: '100px', + }, + }, + }, + }, + { + required: true, + 'x-component-props': { + style: { + overflow: 'auto', }, }, }, - { required: true }, ), }, }, @@ -234,44 +244,56 @@ export const querySchema: ISchema = { key: 'dimensions', }, properties: { - dimensions: getArraySchema({ - field: { - type: 'string', - 'x-decorator': 'FormItem', - 'x-component': 'Cascader', - 'x-component-props': { - placeholder: '{{t("Field")}}', - fieldNames: { - label: 'title', - value: 'name', - children: 'children', + dimensions: getArraySchema( + { + field: { + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Cascader', + 'x-component-props': { + placeholder: '{{t("Field")}}', + fieldNames: { + label: 'title', + value: 'name', + children: 'children', + }, + }, + enum: '{{ fieldOptions }}', + required: true, + }, + format: { + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Select', + 'x-component-props': { + placeholder: '{{t("Format")}}', + style: { + maxWidth: '120px', + }, + }, + 'x-reactions': '{{ useFormatterOptions }}', + 'x-visible': '{{ $self.dataSource && $self.dataSource.length }}', + }, + alias: { + type: 'string', + 'x-decorator': 'FormItem', + 'x-component': 'Input', + 'x-component-props': { + placeholder: '{{t("Alias")}}', + style: { + minWidth: '100px', + }, }, }, - enum: '{{ fieldOptions }}', - required: true, }, - format: { - type: 'string', - 'x-decorator': 'FormItem', - 'x-component': 'Select', + { 'x-component-props': { - placeholder: '{{t("Format")}}', style: { - maxWidth: '120px', + overflow: 'auto', }, }, - 'x-reactions': '{{ useFormatterOptions }}', - 'x-visible': '{{ $self.dataSource && $self.dataSource.length }}', }, - alias: { - type: 'string', - 'x-decorator': 'FormItem', - 'x-component': 'Input', - 'x-component-props': { - placeholder: '{{t("Alias")}}', - }, - }, - }), + ), }, }, pane3: { @@ -325,12 +347,20 @@ export const querySchema: ISchema = { 'x-component-props': { defaultValue: 'ASC', optionType: 'button', + style: { + width: '128px', + }, }, enum: ['ASC', 'DESC'], }, }, { 'x-reactions': '{{ useOrderReaction }}', + 'x-component-props': { + style: { + overflow: 'auto', + }, + }, }, ), }, diff --git a/packages/plugins/data-visualization/src/client/renderer/library/G2PlotLibrary.tsx b/packages/plugins/data-visualization/src/client/renderer/library/G2PlotLibrary.tsx index 6436c462aa..f2b600cc48 100644 --- a/packages/plugins/data-visualization/src/client/renderer/library/G2PlotLibrary.tsx +++ b/packages/plugins/data-visualization/src/client/renderer/library/G2PlotLibrary.tsx @@ -42,6 +42,7 @@ const useProps: usePropsFunc = ({ data, fieldProps, general, advanced }) => { return { data, meta, + animation: false, ...general, ...advanced, }; @@ -56,7 +57,7 @@ export const G2PlotLibrary: Charts = { useProps, reference: { title: 'Line Chart', - link: 'https://g2plot.antv.antgroup.com/api/plots/bar', + link: 'https://g2plot.antv.antgroup.com/api/plots/line', }, }, area: { diff --git a/packages/plugins/data-visualization/src/server/actions/query.ts b/packages/plugins/data-visualization/src/server/actions/query.ts index 7fd7733db8..afd2450665 100644 --- a/packages/plugins/data-visualization/src/server/actions/query.ts +++ b/packages/plugins/data-visualization/src/server/actions/query.ts @@ -1,6 +1,6 @@ import { Context, Next } from '@nocobase/actions'; import { Cache } from '@nocobase/cache'; -import { FilterParser, snakeCase } from '@nocobase/database'; +import { Field, FilterParser, snakeCase } from '@nocobase/database'; import ChartsV2Plugin from '../plugin'; import { formatter } from './formatter'; @@ -65,13 +65,17 @@ export const parseFieldAndAssociations = (ctx: Context, params: QueryParams) => [target, name] = selected.field; } let field = underscored ? snakeCase(name) : name; - let type = fields.get(name)?.type; + let fieldType = fields.get(name)?.type; if (target) { + const targetField = fields.get(target) as Field; + const targetCollection = ctx.db.getCollection(targetField.target); + const targetFields = targetCollection.fields; + fieldType = targetFields.get(name)?.type; field = `${target}.${field}`; name = `${target}.${name}`; - type = fields.get(target)?.type; + const targetType = fields.get(target)?.type; if (!models[target]) { - models[target] = { type }; + models[target] = { type: targetType }; } } else { field = `${collectionName}.${field}`; @@ -80,7 +84,7 @@ export const parseFieldAndAssociations = (ctx: Context, params: QueryParams) => ...selected, field, name, - type, + type: fieldType, alias: selected.alias || name, }; }; @@ -247,18 +251,8 @@ export const cacheWrap = async ( }; export const query = async (ctx: Context, next: Next) => { - const { - uid, - collection, - measures, - dimensions, - orders, - filter, - limit, - sql, - cache: cacheConfig, - refresh, - } = ctx.action.params.values as QueryParams; + const { uid, collection, measures, dimensions, orders, filter, limit, sql, cache: cacheConfig, refresh } = ctx.action + .params.values as QueryParams; const roleName = ctx.state.currentRole || 'anonymous'; const can = ctx.app.acl.can({ role: roleName, resource: collection, action: 'list' }); if (!can && roleName !== 'root') { diff --git a/yarn.lock b/yarn.lock index 7e43e3a7bf..529267a788 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1124,7 +1124,6 @@ "@babel/generator@^7.7.2": version "7.22.9" resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz#572ecfa7a31002fa1de2a9d91621fd895da8493d" - integrity sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw== dependencies: "@babel/types" "^7.22.5" "@jridgewell/gen-mapping" "^0.3.2" @@ -3389,7 +3388,6 @@ "@jest/console@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/console/-/console-29.6.1.tgz#b48ba7b9c34b51483e6d590f46e5837f1ab5f639" - integrity sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q== dependencies: "@jest/types" "^29.6.1" "@types/node" "*" @@ -3434,7 +3432,6 @@ "@jest/core@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/core/-/core-29.6.1.tgz#fac0d9ddf320490c93356ba201451825231e95f6" - integrity sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ== dependencies: "@jest/console" "^29.6.1" "@jest/reporters" "^29.6.1" @@ -3477,7 +3474,6 @@ "@jest/environment@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.6.1.tgz#ee358fff2f68168394b4a50f18c68278a21fe82f" - integrity sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A== dependencies: "@jest/fake-timers" "^29.6.1" "@jest/types" "^29.6.1" @@ -3493,14 +3489,12 @@ "@jest/expect-utils@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.6.1.tgz#ab83b27a15cdd203fe5f68230ea22767d5c3acc5" - integrity sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw== dependencies: jest-get-type "^29.4.3" "@jest/expect@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz#fef18265188f6a97601f1ea0a2912d81a85b4657" - integrity sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg== dependencies: expect "^29.6.1" jest-snapshot "^29.6.1" @@ -3516,7 +3510,6 @@ "@jest/fake-timers@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.6.1.tgz#c773efddbc61e1d2efcccac008139f621de57c69" - integrity sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg== dependencies: "@jest/types" "^29.6.1" "@sinonjs/fake-timers" "^10.0.2" @@ -3528,7 +3521,6 @@ "@jest/globals@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz#c8a8923e05efd757308082cc22893d82b8aa138f" - integrity sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A== dependencies: "@jest/environment" "^29.6.1" "@jest/expect" "^29.6.1" @@ -3564,7 +3556,6 @@ "@jest/reporters@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.6.1.tgz#3325a89c9ead3cf97ad93df3a427549d16179863" - integrity sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^29.6.1" @@ -3600,7 +3591,6 @@ "@jest/schemas@^29.6.0": version "29.6.0" resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.0.tgz#0f4cb2c8e3dca80c135507ba5635a4fd755b0040" - integrity sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ== dependencies: "@sinclair/typebox" "^0.27.8" @@ -3615,7 +3605,6 @@ "@jest/source-map@^29.6.0": version "29.6.0" resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.0.tgz#bd34a05b5737cb1a99d43e1957020ac8e5b9ddb1" - integrity sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA== dependencies: "@jridgewell/trace-mapping" "^0.3.18" callsites "^3.0.0" @@ -3632,7 +3621,6 @@ "@jest/test-result@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.6.1.tgz#850e565a3f58ee8ca6ec424db00cb0f2d83c36ba" - integrity sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw== dependencies: "@jest/console" "^29.6.1" "@jest/types" "^29.6.1" @@ -3651,7 +3639,6 @@ "@jest/test-sequencer@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.6.1.tgz#e3e582ee074dd24ea9687d7d1aaf05ee3a9b068e" - integrity sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg== dependencies: "@jest/test-result" "^29.6.1" graceful-fs "^4.2.9" @@ -3702,7 +3689,6 @@ "@jest/transform@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.6.1.tgz#acb5606019a197cb99beda3c05404b851f441c92" - integrity sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.6.1" @@ -3752,7 +3738,6 @@ "@jest/types@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.1.tgz#ae79080278acff0a6af5eb49d063385aaa897bf2" - integrity sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw== dependencies: "@jest/schemas" "^29.6.0" "@types/istanbul-lib-coverage" "^2.0.0" @@ -4936,7 +4921,6 @@ "@remix-run/router@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@remix-run/router/-/router-1.7.2.tgz#cba1cf0a04bc04cb66027c51fa600e9cbc388bc8" - integrity sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A== "@restart/hooks@^0.4.7": version "0.4.9" @@ -5040,7 +5024,6 @@ "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e" - integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA== "@sindresorhus/is@^0.14.0": version "0.14.0" @@ -5049,14 +5032,12 @@ "@sinonjs/commons@^3.0.0": version "3.0.0" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz#beb434fe875d965265e04722ccfc21df7f755d72" - integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA== dependencies: type-detect "4.0.8" "@sinonjs/fake-timers@^10.0.2": version "10.3.0" resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz#55fdff1ecab9f354019129daf4df0dd4d923ea66" - integrity sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA== dependencies: "@sinonjs/commons" "^3.0.0" @@ -6132,7 +6113,6 @@ "@types/jest@^29.0.0": version "29.5.3" resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.3.tgz#7a35dc0044ffb8b56325c6802a4781a626b05777" - integrity sha512-1Nq7YrO/vJE/FYnqYyw0FS8LdrjExSgIiHyKg7xPpn+yi8Q4huZryKnkJatN1ZRH89Kw2v33/8ZMB7DuZeSLlA== dependencies: expect "^29.0.0" pretty-format "^29.0.0" @@ -6313,7 +6293,6 @@ "@types/prettier@^2.1.5": version "2.7.3" resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" - integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prop-types@*": version "15.7.5" @@ -6363,7 +6342,6 @@ "@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^17", "@types/react@^17.0.0", "@types/react@^18.0.0": version "17.0.62" resolved "https://registry.npmmirror.com/@types/react/-/react-17.0.62.tgz#2efe8ddf8533500ec44b1334dd1a97caa2f860e3" - integrity sha512-eANCyz9DG8p/Vdhr0ZKST8JV12PhH2ACCDYlFw6DIO+D+ca+uP4jtEDEpVqXZrh/uZdXQGwk7whJa3ah5DtyLw== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" @@ -8004,7 +7982,6 @@ babel-jest@^29.4.3: babel-jest@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.6.1.tgz#a7141ad1ed5ec50238f3cd36127636823111233a" - integrity sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A== dependencies: "@jest/transform" "^29.6.1" "@types/babel__core" "^7.1.14" @@ -8574,7 +8551,6 @@ busboy@^0.2.11: busboy@^1.0.0: version "1.6.0" resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" @@ -9014,7 +8990,6 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: cjs-module-lexer@^1.0.0: version "1.2.3" resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz#6c370ab19f8a3394e318fe682686ec0ac684d107" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== class-utils@^0.3.5: version "0.3.6" @@ -11321,7 +11296,6 @@ emittery@^0.12.1: emittery@^0.13.1: version "0.13.1" resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^7.0.1: version "7.0.3" @@ -12145,7 +12119,6 @@ expect@^29.0.0: expect@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/expect/-/expect-29.6.1.tgz#64dd1c8f75e2c0b209418f2b8d36a07921adfdf1" - integrity sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g== dependencies: "@jest/expect-utils" "^29.6.1" "@types/node" "*" @@ -14829,7 +14802,6 @@ istanbul-reports@^2.2.6: istanbul-reports@^3.1.3: version "3.1.5" resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -14857,7 +14829,6 @@ jest-changed-files@^24.9.0: jest-changed-files@^29.5.0: version "29.5.0" resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz#e88786dca8bf2aa899ec4af7644e16d9dcf9b23e" - integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag== dependencies: execa "^5.0.0" p-limit "^3.1.0" @@ -14865,7 +14836,6 @@ jest-changed-files@^29.5.0: jest-circus@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.6.1.tgz#861dab37e71a89907d1c0fabc54a0019738ed824" - integrity sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ== dependencies: "@jest/environment" "^29.6.1" "@jest/expect" "^29.6.1" @@ -14909,7 +14879,6 @@ jest-cli@^24.8.0, jest-cli@^24.9.0: jest-cli@^29.0.0, jest-cli@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.6.1.tgz#99d9afa7449538221c71f358f0fdd3e9c6e89f72" - integrity sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing== dependencies: "@jest/core" "^29.6.1" "@jest/test-result" "^29.6.1" @@ -14949,7 +14918,6 @@ jest-config@^24.9.0: jest-config@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.6.1.tgz#d785344509065d53a238224c6cdc0ed8e2f2f0dd" - integrity sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ== dependencies: "@babel/core" "^7.11.6" "@jest/test-sequencer" "^29.6.1" @@ -14995,7 +14963,6 @@ jest-diff@^29.5.0: jest-diff@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.6.1.tgz#13df6db0a89ee6ad93c747c75c85c70ba941e545" - integrity sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg== dependencies: chalk "^4.0.0" diff-sequences "^29.4.3" @@ -15011,7 +14978,6 @@ jest-docblock@^24.3.0: jest-docblock@^29.4.3: version "29.4.3" resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz#90505aa89514a1c7dceeac1123df79e414636ea8" - integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg== dependencies: detect-newline "^3.0.0" @@ -15041,7 +15007,6 @@ jest-each@^24.9.0: jest-each@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.6.1.tgz#975058e5b8f55c6780beab8b6ab214921815c89c" - integrity sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ== dependencies: "@jest/types" "^29.6.1" chalk "^4.0.0" @@ -15073,7 +15038,6 @@ jest-environment-node@^24.9.0: jest-environment-node@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.6.1.tgz#08a122dece39e58bc388da815a2166c58b4abec6" - integrity sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ== dependencies: "@jest/environment" "^29.6.1" "@jest/fake-timers" "^29.6.1" @@ -15129,7 +15093,6 @@ jest-haste-map@^29.5.0: jest-haste-map@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.6.1.tgz#62655c7a1c1b349a3206441330fb2dbdb4b63803" - integrity sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig== dependencies: "@jest/types" "^29.6.1" "@types/graceful-fs" "^4.1.3" @@ -15176,7 +15139,6 @@ jest-leak-detector@^24.9.0: jest-leak-detector@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.6.1.tgz#66a902c81318e66e694df7d096a95466cb962f8e" - integrity sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ== dependencies: jest-get-type "^29.4.3" pretty-format "^29.6.1" @@ -15202,7 +15164,6 @@ jest-matcher-utils@^29.5.0: jest-matcher-utils@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.6.1.tgz#6c60075d84655d6300c5d5128f46531848160b53" - integrity sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA== dependencies: chalk "^4.0.0" jest-diff "^29.6.1" @@ -15239,7 +15200,6 @@ jest-message-util@^29.5.0: jest-message-util@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.6.1.tgz#d0b21d87f117e1b9e165e24f245befd2ff34ff8d" - integrity sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ== dependencies: "@babel/code-frame" "^7.12.13" "@jest/types" "^29.6.1" @@ -15260,7 +15220,6 @@ jest-mock@^24.9.0: jest-mock@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.6.1.tgz#049ee26aea8cbf54c764af649070910607316517" - integrity sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw== dependencies: "@jest/types" "^29.6.1" "@types/node" "*" @@ -15289,7 +15248,6 @@ jest-resolve-dependencies@^24.9.0: jest-resolve-dependencies@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.1.tgz#b85b06670f987a62515bbf625d54a499e3d708f5" - integrity sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw== dependencies: jest-regex-util "^29.4.3" jest-snapshot "^29.6.1" @@ -15307,7 +15265,6 @@ jest-resolve@^24.8.0, jest-resolve@^24.9.0: jest-resolve@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.6.1.tgz#4c3324b993a85e300add2f8609f51b80ddea39ee" - integrity sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" @@ -15346,7 +15303,6 @@ jest-runner@^24.9.0: jest-runner@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.6.1.tgz#54557087e7972d345540d622ab5bfc3d8f34688c" - integrity sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ== dependencies: "@jest/console" "^29.6.1" "@jest/environment" "^29.6.1" @@ -15401,7 +15357,6 @@ jest-runtime@^24.9.0: jest-runtime@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.6.1.tgz#8a0fc9274ef277f3d70ba19d238e64334958a0dc" - integrity sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ== dependencies: "@jest/environment" "^29.6.1" "@jest/fake-timers" "^29.6.1" @@ -15451,7 +15406,6 @@ jest-snapshot@^24.9.0: jest-snapshot@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.6.1.tgz#0d083cb7de716d5d5cdbe80d598ed2fbafac0239" - integrity sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -15495,7 +15449,6 @@ jest-util@^24.9.0: jest-util@^29.0.0, jest-util@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.6.1.tgz#c9e29a87a6edbf1e39e6dee2b4689b8a146679cb" - integrity sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg== dependencies: "@jest/types" "^29.6.1" "@types/node" "*" @@ -15529,7 +15482,6 @@ jest-validate@^24.9.0: jest-validate@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.6.1.tgz#765e684af6e2c86dce950aebefbbcd4546d69f7b" - integrity sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA== dependencies: "@jest/types" "^29.6.1" camelcase "^6.2.0" @@ -15553,7 +15505,6 @@ jest-watcher@^24.9.0: jest-watcher@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.6.1.tgz#7c0c43ddd52418af134c551c92c9ea31e5ec942e" - integrity sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA== dependencies: "@jest/test-result" "^29.6.1" "@jest/types" "^29.6.1" @@ -15600,7 +15551,6 @@ jest-worker@^29.5.0: jest-worker@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.6.1.tgz#64b015f0e985ef3a8ad049b61fe92b3db74a5319" - integrity sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA== dependencies: "@types/node" "*" jest-util "^29.6.1" @@ -15617,7 +15567,6 @@ jest@^24.8.0: jest@^29.0.0: version "29.6.1" resolved "https://registry.npmjs.org/jest/-/jest-29.6.1.tgz#74be1cb719c3abe439f2d94aeb18e6540a5b02ad" - integrity sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw== dependencies: "@jest/core" "^29.6.1" "@jest/types" "^29.6.1" @@ -15817,7 +15766,6 @@ json5@^1.0.1, json5@^1.0.2: json5@^2.1.0, json5@^2.1.2, json5@^2.2.2, json5@^2.2.3: version "2.2.3" resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonc-parser@^3.2.0: version "3.2.0" @@ -17669,7 +17617,6 @@ multer@^1.4.2: multer@^1.4.5-lts.1: version "1.4.5-lts.1" resolved "https://registry.yarnpkg.com/multer/-/multer-1.4.5-lts.1.tgz#803e24ad1984f58edffbc79f56e305aec5cfd1ac" - integrity sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ== dependencies: append-field "^1.0.0" busboy "^1.0.0" @@ -20186,7 +20133,6 @@ pretty-format@^29.0.0, pretty-format@^29.5.0: pretty-format@^29.6.1: version "29.6.1" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.6.1.tgz#ec838c288850b7c4f9090b867c2d4f4edbfb0f3e" - integrity sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog== dependencies: "@jest/schemas" "^29.6.0" ansi-styles "^5.0.0" @@ -20396,7 +20342,6 @@ punycode@^2.1.0, punycode@^2.1.1: pure-rand@^6.0.0: version "6.0.2" resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz#a9c2ddcae9b68d736a8163036f088a2781c8b306" - integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ== q@^1.1.2, q@^1.5.1: version "1.5.1" @@ -21154,7 +21099,6 @@ react-router-dom@6.3.0, react-router-dom@^6.11.2: react-router@6.14.1, react-router@6.3.0, react-router@^6.11.2: version "6.14.2" resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.14.2.tgz#1f60994d8c369de7b8ba7a78d8f7ec23df76b300" - integrity sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ== dependencies: "@remix-run/router" "1.7.2" @@ -21781,7 +21725,6 @@ resolve-url@^0.2.1: resolve.exports@^2.0.0: version "2.0.2" resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz#f8c934b8e6a13f539e38b7098e2e36134f01e800" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== resolve@1.1.7, resolve@~1.1.6: version "1.1.7" @@ -22644,7 +22587,6 @@ source-map-resolve@^0.6.0: source-map-support@0.5.13: version "0.5.13" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -22946,7 +22888,6 @@ streamsearch@0.1.2: streamsearch@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== strict-uri-encode@^2.0.0: version "2.0.0" @@ -23823,7 +23764,6 @@ ts-dedent@^2.2.0: ts-jest@^29.0.0: version "29.1.1" resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" - integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" @@ -23944,7 +23884,6 @@ tsutils@^3.21.0: tsx@^3.12.2, tsx@^3.12.7: version "3.12.7" resolved "https://registry.yarnpkg.com/tsx/-/tsx-3.12.7.tgz#b3b8b0fc79afc8260d1e14f9e995616c859a91e9" - integrity sha512-C2Ip+jPmqKd1GWVQDvz/Eyc6QJbGfE7NrR3fx5BpEHMZsEHoIxHL1j+lKdGobr8ovEyqeNkPLSKp6SCSOt7gmw== dependencies: "@esbuild-kit/cjs-loader" "^2.4.2" "@esbuild-kit/core-utils" "^3.0.0" @@ -24655,7 +24594,6 @@ v8-compile-cache@2.3.0: v8-to-istanbul@^9.0.1: version "9.1.0" resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz#1b83ed4e397f58c85c266a570fc2558b5feb9265" - integrity sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA== dependencies: "@jridgewell/trace-mapping" "^0.3.12" "@types/istanbul-lib-coverage" "^2.0.1" From d956c90e91e303ae02e54f71498b92481eab0399 Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 19:51:18 +0800 Subject: [PATCH 31/34] fix: yarn run test --- package.json | 6 +- yarn.lock | 545 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 550 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 14651de5c6..d4b849221e 100644 --- a/package.json +++ b/package.json @@ -71,12 +71,15 @@ "eslint-plugin-jest-dom": "^5.0.1", "eslint-plugin-testing-library": "^5.11.0", "ghooks": "^2.0.4", + "jest": "^29.6.2", + "jest-cli": "^29.6.2", "jsdom-worker": "^0.3.0", "lint-staged": "^13.2.3", "pretty-format": "^24.0.0", "pretty-quick": "^3.1.0", "react": "^18.0.0", "react-dom": "^18.0.0", + "ts-jest": "^29.1.1", "typescript": "5.1.3", "vite": "^4.4.1", "vitest": "^0.33.0" @@ -84,5 +87,6 @@ "volta": { "node": "18.14.2", "yarn": "1.22.19" - } + }, + "dependencies": {} } diff --git a/yarn.lock b/yarn.lock index 529267a788..49bc6f9cba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3396,6 +3396,18 @@ jest-util "^29.6.1" slash "^3.0.0" +"@jest/console@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.6.2.tgz#bf1d4101347c23e07c029a1b1ae07d550f5cc541" + integrity sha512-0N0yZof5hi44HAR2pPS+ikJ3nzKNoZdVu8FffRf3wy47I7Dm7etk/3KetMdRUqzVd16V4O2m2ISpNTbnIuqy1w== + dependencies: + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + slash "^3.0.0" + "@jest/core@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/core/-/core-24.9.0.tgz#2ceccd0b93181f9c4850e74f2a9ad43d351369c4" @@ -3462,6 +3474,40 @@ slash "^3.0.0" strip-ansi "^6.0.0" +"@jest/core@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.6.2.tgz#6f2d1dbe8aa0265fcd4fb8082ae1952f148209c8" + integrity sha512-Oj+5B+sDMiMWLhPFF+4/DvHOf+U10rgvCLGPHP8Xlsy/7QxS51aU/eBngudHlJXnaWD5EohAgJ4js+T6pa+zOg== + dependencies: + "@jest/console" "^29.6.2" + "@jest/reporters" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^29.5.0" + jest-config "^29.6.2" + jest-haste-map "^29.6.2" + jest-message-util "^29.6.2" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-resolve-dependencies "^29.6.2" + jest-runner "^29.6.2" + jest-runtime "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" + jest-watcher "^29.6.2" + micromatch "^4.0.4" + pretty-format "^29.6.2" + slash "^3.0.0" + strip-ansi "^6.0.0" + "@jest/environment@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/environment/-/environment-24.9.0.tgz#21e3afa2d65c0586cbd6cbefe208bafade44ab18" @@ -3480,6 +3526,16 @@ "@types/node" "*" jest-mock "^29.6.1" +"@jest/environment@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.6.2.tgz#794c0f769d85e7553439d107d3f43186dc6874a9" + integrity sha512-AEcW43C7huGd/vogTddNNTDRpO6vQ2zaQNrttvWV18ArBx9Z56h7BIsXkNFJVOO4/kblWEQz30ckw0+L3izc+Q== + dependencies: + "@jest/fake-timers" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + jest-mock "^29.6.2" + "@jest/expect-utils@^29.5.0": version "29.5.0" resolved "https://registry.npmmirror.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036" @@ -3492,6 +3548,13 @@ dependencies: jest-get-type "^29.4.3" +"@jest/expect-utils@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.6.2.tgz#1b97f290d0185d264dd9fdec7567a14a38a90534" + integrity sha512-6zIhM8go3RV2IG4aIZaZbxwpOzz3ZiM23oxAlkquOIole+G6TrbeXnykxWYlqF7kz2HlBjdKtca20x9atkEQYg== + dependencies: + jest-get-type "^29.4.3" + "@jest/expect@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.6.1.tgz#fef18265188f6a97601f1ea0a2912d81a85b4657" @@ -3499,6 +3562,14 @@ expect "^29.6.1" jest-snapshot "^29.6.1" +"@jest/expect@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.6.2.tgz#5a2ad58bb345165d9ce0a1845bbf873c480a4b28" + integrity sha512-m6DrEJxVKjkELTVAztTLyS/7C92Y2b0VYqmDROYKLLALHn8T/04yPs70NADUYPrV3ruI+H3J0iUIuhkjp7vkfg== + dependencies: + expect "^29.6.2" + jest-snapshot "^29.6.2" + "@jest/fake-timers@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/fake-timers/-/fake-timers-24.9.0.tgz#ba3e6bf0eecd09a636049896434d306636540c93" @@ -3518,6 +3589,18 @@ jest-mock "^29.6.1" jest-util "^29.6.1" +"@jest/fake-timers@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.6.2.tgz#fe9d43c5e4b1b901168fe6f46f861b3e652a2df4" + integrity sha512-euZDmIlWjm1Z0lJ1D0f7a0/y5Kh/koLFMUBE5SUYWrmy8oNhJpbTBDAP6CxKnadcMLDoDf4waRYCe35cH6G6PA== + dependencies: + "@jest/types" "^29.6.1" + "@sinonjs/fake-timers" "^10.0.2" + "@types/node" "*" + jest-message-util "^29.6.2" + jest-mock "^29.6.2" + jest-util "^29.6.2" + "@jest/globals@^29.6.1": version "29.6.1" resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.6.1.tgz#c8a8923e05efd757308082cc22893d82b8aa138f" @@ -3527,6 +3610,16 @@ "@jest/types" "^29.6.1" jest-mock "^29.6.1" +"@jest/globals@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.6.2.tgz#74af81b9249122cc46f1eb25793617eec69bf21a" + integrity sha512-cjuJmNDjs6aMijCmSa1g2TNG4Lby/AeU7/02VtpW+SLcZXzOLK2GpN2nLqcFjmhy3B3AoPeQVx7BnyOf681bAw== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/expect" "^29.6.2" + "@jest/types" "^29.6.1" + jest-mock "^29.6.2" + "@jest/reporters@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/reporters/-/reporters-24.9.0.tgz#86660eff8e2b9661d042a8e98a028b8d631a5b43" @@ -3582,6 +3675,36 @@ strip-ansi "^6.0.0" v8-to-istanbul "^9.0.1" +"@jest/reporters@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.6.2.tgz#524afe1d76da33d31309c2c4a2c8062d0c48780a" + integrity sha512-sWtijrvIav8LgfJZlrGCdN0nP2EWbakglJY49J1Y5QihcQLfy7ovyxxjJBRXMNltgt4uPtEcFmIMbVshEDfFWw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + jest-worker "^29.6.2" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + v8-to-istanbul "^9.0.1" + "@jest/schemas@^29.4.3": version "29.4.3" resolved "https://registry.npmmirror.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788" @@ -3627,6 +3750,16 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" +"@jest/test-result@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.6.2.tgz#fdd11583cd1608e4db3114e8f0cce277bf7a32ed" + integrity sha512-3VKFXzcV42EYhMCsJQURptSqnyjqCGbtLuX5Xxb6Pm6gUf1wIRIl+mandIRGJyWKgNKYF9cnstti6Ls5ekduqw== + dependencies: + "@jest/console" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + "@jest/test-sequencer@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz#f8f334f35b625a4f2f355f2fe7e6036dad2e6b31" @@ -3645,6 +3778,16 @@ jest-haste-map "^29.6.1" slash "^3.0.0" +"@jest/test-sequencer@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.6.2.tgz#585eff07a68dd75225a7eacf319780cb9f6b9bf4" + integrity sha512-GVYi6PfPwVejO7slw6IDO0qKVum5jtrJ3KoLGbgBWyr2qr4GaxFV6su+ZAjdTX75Sr1DkMFRk09r2ZVa+wtCGw== + dependencies: + "@jest/test-result" "^29.6.2" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.2" + slash "^3.0.0" + "@jest/transform@^24.9.0": version "24.9.0" resolved "https://registry.npmmirror.com/@jest/transform/-/transform-24.9.0.tgz#4ae2768b296553fadab09e9ec119543c90b16c56" @@ -3706,6 +3849,27 @@ slash "^3.0.0" write-file-atomic "^4.0.2" +"@jest/transform@^29.6.2": + version "29.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.6.2.tgz#522901ebbb211af08835bc3bcdf765ab778094e3" + integrity sha512-ZqCqEISr58Ce3U+buNFJYUktLJZOggfyvR+bZMaiV1e8B1SIvJbwZMrYz3gx/KAPn9EXmOmN+uB08yLCjWkQQg== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^29.6.1" + "@jridgewell/trace-mapping" "^0.3.18" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^2.0.0" + fast-json-stable-stringify "^2.1.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.2" + jest-regex-util "^29.4.3" + jest-util "^29.6.2" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.2" + "@jest/types@27.5.1": version "27.5.1" resolved "https://registry.npmmirror.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" @@ -7991,6 +8155,19 @@ babel-jest@^29.6.1: graceful-fs "^4.2.9" slash "^3.0.0" +babel-jest@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.6.2.tgz#cada0a59e07f5acaeb11cbae7e3ba92aec9c1126" + integrity sha512-BYCzImLos6J3BH/+HvUCHG1dTf2MzmAB4jaVxHV+29RZLjR29XuYTmsf2sdDwkrb+FczkGo3kOhE7ga6sI0P4A== + dependencies: + "@jest/transform" "^29.6.2" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^29.5.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + babel-plugin-dynamic-import-node@2.3.3: version "2.3.3" resolved "https://registry.npmmirror.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" @@ -10664,6 +10841,11 @@ dedent@^0.7.0: version "0.7.0" resolved "https://registry.npmmirror.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" +dedent@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.2.0.tgz#32039cd75c035f684e01c4a07cb88c0ecbeb57be" + integrity sha512-i4tcg0ClgvMUSxwHpt+NHQ01ZJmAkl6eBvDNrSZG9e+oLRTCSHv0wpr/Bzjpf6CwKeIHGevE1M34Y1Axdms5VQ== + dedupe@^3.0.2: version "3.0.3" resolved "https://registry.npmmirror.com/dedupe/-/dedupe-3.0.3.tgz#7ae7b55ca01028bc7d5714cd57a5bdf5e4aeea6e" @@ -12127,6 +12309,18 @@ expect@^29.6.1: jest-message-util "^29.6.1" jest-util "^29.6.1" +expect@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.6.2.tgz#7b08e83eba18ddc4a2cf62b5f2d1918f5cd84521" + integrity sha512-iAErsLxJ8C+S02QbLAwgSGSezLQK+XXRDt8IuFXFpwCNw2ECmzZSmjKcCaFVp5VRMk+WAvz6h6jokzEzBFZEuA== + dependencies: + "@jest/expect-utils" "^29.6.2" + "@types/node" "*" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + extend-shallow@^1.1.2: version "1.1.4" resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" @@ -14858,6 +15052,32 @@ jest-circus@^29.6.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-circus@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.6.2.tgz#1e6ffca60151ac66cad63fce34f443f6b5bb4258" + integrity sha512-G9mN+KOYIUe2sB9kpJkO9Bk18J4dTDArNFPwoZ7WKHKel55eKIS/u2bLthxgojwlf9NLCVQfgzM/WsOVvoC6Fw== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/expect" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^1.0.0" + is-generator-fn "^2.0.0" + jest-each "^29.6.2" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-runtime "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" + p-limit "^3.1.0" + pretty-format "^29.6.2" + pure-rand "^6.0.0" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-cli@^24.8.0, jest-cli@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-cli/-/jest-cli-24.9.0.tgz#ad2de62d07472d419c6abc301fc432b98b10d2af" @@ -14893,6 +15113,24 @@ jest-cli@^29.0.0, jest-cli@^29.6.1: prompts "^2.0.1" yargs "^17.3.1" +jest-cli@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.6.2.tgz#edb381763398d1a292cd1b636a98bfa5644b8fda" + integrity sha512-TT6O247v6dCEX2UGHGyflMpxhnrL0DNqP2fRTKYm3nJJpCTfXX3GCMQPGFjXDoj0i5/Blp3jriKXFgdfmbYB6Q== + dependencies: + "@jest/core" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" + prompts "^2.0.1" + yargs "^17.3.1" + jest-config@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-config/-/jest-config-24.9.0.tgz#fb1bbc60c73a46af03590719efa4825e6e4dd1b5" @@ -14942,6 +15180,34 @@ jest-config@^29.6.1: slash "^3.0.0" strip-json-comments "^3.1.1" +jest-config@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.6.2.tgz#c68723f06b31ca5e63030686e604727d406cd7c3" + integrity sha512-VxwFOC8gkiJbuodG9CPtMRjBUNZEHxwfQXmIudSTzFWxaci3Qub1ddTRbFNQlD/zUeaifLndh/eDccFX4wCMQw== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^29.6.2" + "@jest/types" "^29.6.1" + babel-jest "^29.6.2" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^29.6.2" + jest-environment-node "^29.6.2" + jest-get-type "^29.4.3" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-runner "^29.6.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^29.6.2" + slash "^3.0.0" + strip-json-comments "^3.1.1" + jest-diff@^24.0.0, jest-diff@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da" @@ -14969,6 +15235,16 @@ jest-diff@^29.6.1: jest-get-type "^29.4.3" pretty-format "^29.6.1" +jest-diff@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.6.2.tgz#c36001e5543e82a0805051d3ceac32e6825c1c46" + integrity sha512-t+ST7CB9GX5F2xKwhwCf0TAR17uNDiaPTZnVymP9lw0lssa9vG+AFyDZoeIHStU3WowFFwT+ky+er0WVl2yGhA== + dependencies: + chalk "^4.0.0" + diff-sequences "^29.4.3" + jest-get-type "^29.4.3" + pretty-format "^29.6.2" + jest-docblock@^24.3.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-docblock/-/jest-docblock-24.9.0.tgz#7970201802ba560e1c4092cc25cbedf5af5a8ce2" @@ -15014,6 +15290,17 @@ jest-each@^29.6.1: jest-util "^29.6.1" pretty-format "^29.6.1" +jest-each@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.6.2.tgz#c9e4b340bcbe838c73adf46b76817b15712d02ce" + integrity sha512-MsrsqA0Ia99cIpABBc3izS1ZYoYfhIy0NNWqPSE0YXbQjwchyt6B1HD2khzyPe1WiJA7hbxXy77ZoUQxn8UlSw== + dependencies: + "@jest/types" "^29.6.1" + chalk "^4.0.0" + jest-get-type "^29.4.3" + jest-util "^29.6.2" + pretty-format "^29.6.2" + jest-environment-jsdom@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz#4b0806c7fc94f95edb369a69cc2778eec2b7375b" @@ -15046,6 +15333,18 @@ jest-environment-node@^29.6.1: jest-mock "^29.6.1" jest-util "^29.6.1" +jest-environment-node@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.6.2.tgz#a9ea2cabff39b08eca14ccb32c8ceb924c8bb1ad" + integrity sha512-YGdFeZ3T9a+/612c5mTQIllvWkddPbYcN2v95ZH24oWMbGA4GGS2XdIF92QMhUhvrjjuQWYgUGW2zawOyH63MQ== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/fake-timers" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + jest-mock "^29.6.2" + jest-util "^29.6.2" + jest-get-type@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e" @@ -15108,6 +15407,25 @@ jest-haste-map@^29.6.1: optionalDependencies: fsevents "^2.3.2" +jest-haste-map@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.6.2.tgz#298c25ea5255cfad8b723179d4295cf3a50a70d1" + integrity sha512-+51XleTDAAysvU8rT6AnS1ZJ+WHVNqhj1k6nTvN2PYP+HjU3kqlaKQ1Lnw3NYW3bm2r8vq82X0Z1nDDHZMzHVA== + dependencies: + "@jest/types" "^29.6.1" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^29.4.3" + jest-util "^29.6.2" + jest-worker "^29.6.2" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + jest-jasmine2@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz#1f7b1bd3242c1774e62acabb3646d96afc3be6a0" @@ -15143,6 +15461,14 @@ jest-leak-detector@^29.6.1: jest-get-type "^29.4.3" pretty-format "^29.6.1" +jest-leak-detector@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.6.2.tgz#e2b307fee78cab091c37858a98c7e1d73cdf5b38" + integrity sha512-aNqYhfp5uYEO3tdWMb2bfWv6f0b4I0LOxVRpnRLAeque2uqOVVMLh6khnTcE2qJ5wAKop0HcreM1btoysD6bPQ== + dependencies: + jest-get-type "^29.4.3" + pretty-format "^29.6.2" + jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073" @@ -15170,6 +15496,16 @@ jest-matcher-utils@^29.6.1: jest-get-type "^29.4.3" pretty-format "^29.6.1" +jest-matcher-utils@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.6.2.tgz#39de0be2baca7a64eacb27291f0bd834fea3a535" + integrity sha512-4LiAk3hSSobtomeIAzFTe+N8kL6z0JtF3n6I4fg29iIW7tt99R7ZcIFW34QkX+DuVrf+CUe6wuVOpm7ZKFJzZQ== + dependencies: + chalk "^4.0.0" + jest-diff "^29.6.2" + jest-get-type "^29.4.3" + pretty-format "^29.6.2" + jest-message-util@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-message-util/-/jest-message-util-24.9.0.tgz#527f54a1e380f5e202a8d1149b0ec872f43119e3" @@ -15211,6 +15547,21 @@ jest-message-util@^29.6.1: slash "^3.0.0" stack-utils "^2.0.3" +jest-message-util@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.6.2.tgz#af7adc2209c552f3f5ae31e77cf0a261f23dc2bb" + integrity sha512-vnIGYEjoPSuRqV8W9t+Wow95SDp6KPX2Uf7EoeG9G99J2OVh7OSwpS4B6J0NfpEIpfkBNHlBZpA2rblEuEFhZQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^29.6.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^29.6.2" + slash "^3.0.0" + stack-utils "^2.0.3" + jest-mock@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-mock/-/jest-mock-24.9.0.tgz#c22835541ee379b908673ad51087a2185c13f1c6" @@ -15225,6 +15576,15 @@ jest-mock@^29.6.1: "@types/node" "*" jest-util "^29.6.1" +jest-mock@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.6.2.tgz#ef9c9b4d38c34a2ad61010a021866dad41ce5e00" + integrity sha512-hoSv3lb3byzdKfwqCuT6uTscan471GUECqgNYykg6ob0yiAw3zYc7OrPnI9Qv8Wwoa4lC7AZ9hyS4AiIx5U2zg== + dependencies: + "@jest/types" "^29.6.1" + "@types/node" "*" + jest-util "^29.6.2" + jest-pnp-resolver@^1.2.0, jest-pnp-resolver@^1.2.1, jest-pnp-resolver@^1.2.2: version "1.2.3" resolved "https://registry.npmmirror.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" @@ -15252,6 +15612,14 @@ jest-resolve-dependencies@^29.6.1: jest-regex-util "^29.4.3" jest-snapshot "^29.6.1" +jest-resolve-dependencies@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.6.2.tgz#36435269b6672c256bcc85fb384872c134cc4cf2" + integrity sha512-LGqjDWxg2fuQQm7ypDxduLu/m4+4Lb4gczc13v51VMZbVP5tSBILqVx8qfWcsdP8f0G7aIqByIALDB0R93yL+w== + dependencies: + jest-regex-util "^29.4.3" + jest-snapshot "^29.6.2" + jest-resolve@^24.8.0, jest-resolve@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-resolve/-/jest-resolve-24.9.0.tgz#dff04c7687af34c4dd7e524892d9cf77e5d17321" @@ -15276,6 +15644,21 @@ jest-resolve@^29.6.1: resolve.exports "^2.0.0" slash "^3.0.0" +jest-resolve@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.6.2.tgz#f18405fe4b50159b7b6d85e81f6a524d22afb838" + integrity sha512-G/iQUvZWI5e3SMFssc4ug4dH0aZiZpsDq9o1PtXTV1210Ztyb2+w+ZgQkB3iOiC5SmAEzJBOHWz6Hvrd+QnNPw== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.2" + jest-pnp-resolver "^1.2.2" + jest-util "^29.6.2" + jest-validate "^29.6.2" + resolve "^1.20.0" + resolve.exports "^2.0.0" + slash "^3.0.0" + jest-runner@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-runner/-/jest-runner-24.9.0.tgz#574fafdbd54455c2b34b4bdf4365a23857fcdf42" @@ -15326,6 +15709,33 @@ jest-runner@^29.6.1: p-limit "^3.1.0" source-map-support "0.5.13" +jest-runner@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.6.2.tgz#89e8e32a8fef24781a7c4c49cd1cb6358ac7fc01" + integrity sha512-wXOT/a0EspYgfMiYHxwGLPCZfC0c38MivAlb2lMEAlwHINKemrttu1uSbcGbfDV31sFaPWnWJPmb2qXM8pqZ4w== + dependencies: + "@jest/console" "^29.6.2" + "@jest/environment" "^29.6.2" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.13.1" + graceful-fs "^4.2.9" + jest-docblock "^29.4.3" + jest-environment-node "^29.6.2" + jest-haste-map "^29.6.2" + jest-leak-detector "^29.6.2" + jest-message-util "^29.6.2" + jest-resolve "^29.6.2" + jest-runtime "^29.6.2" + jest-util "^29.6.2" + jest-watcher "^29.6.2" + jest-worker "^29.6.2" + p-limit "^3.1.0" + source-map-support "0.5.13" + jest-runtime@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-runtime/-/jest-runtime-24.9.0.tgz#9f14583af6a4f7314a6a9d9f0226e1a781c8e4ac" @@ -15381,6 +15791,34 @@ jest-runtime@^29.6.1: slash "^3.0.0" strip-bom "^4.0.0" +jest-runtime@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.6.2.tgz#692f25e387f982e89ab83270e684a9786248e545" + integrity sha512-2X9dqK768KufGJyIeLmIzToDmsN0m7Iek8QNxRSI/2+iPFYHF0jTwlO3ftn7gdKd98G/VQw9XJCk77rbTGZnJg== + dependencies: + "@jest/environment" "^29.6.2" + "@jest/fake-timers" "^29.6.2" + "@jest/globals" "^29.6.2" + "@jest/source-map" "^29.6.0" + "@jest/test-result" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^29.6.2" + jest-message-util "^29.6.2" + jest-mock "^29.6.2" + jest-regex-util "^29.4.3" + jest-resolve "^29.6.2" + jest-snapshot "^29.6.2" + jest-util "^29.6.2" + slash "^3.0.0" + strip-bom "^4.0.0" + jest-serializer@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-serializer/-/jest-serializer-24.9.0.tgz#e6d7d7ef96d31e8b9079a714754c5d5c58288e73" @@ -15429,6 +15867,32 @@ jest-snapshot@^29.6.1: pretty-format "^29.6.1" semver "^7.5.3" +jest-snapshot@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.6.2.tgz#9b431b561a83f2bdfe041e1cab8a6becdb01af9c" + integrity sha512-1OdjqvqmRdGNvWXr/YZHuyhh5DeaLp1p/F8Tht/MrMw4Kr1Uu/j4lRG+iKl1DAqUJDWxtQBMk41Lnf/JETYBRA== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-jsx" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^29.6.2" + "@jest/transform" "^29.6.2" + "@jest/types" "^29.6.1" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^29.6.2" + graceful-fs "^4.2.9" + jest-diff "^29.6.2" + jest-get-type "^29.4.3" + jest-matcher-utils "^29.6.2" + jest-message-util "^29.6.2" + jest-util "^29.6.2" + natural-compare "^1.4.0" + pretty-format "^29.6.2" + semver "^7.5.3" + jest-util@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-util/-/jest-util-24.9.0.tgz#7396814e48536d2e85a37de3e4c431d7cb140162" @@ -15468,6 +15932,18 @@ jest-util@^29.4.3, jest-util@^29.5.0: graceful-fs "^4.2.9" picomatch "^2.2.3" +jest-util@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.6.2.tgz#8a052df8fff2eebe446769fd88814521a517664d" + integrity sha512-3eX1qb6L88lJNCFlEADKOkjpXJQyZRiavX1INZ4tRnrBVr2COd3RgcTLyUiEXMNBlDU/cgYq6taUS0fExrWW4w== + dependencies: + "@jest/types" "^29.6.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + jest-validate@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-validate/-/jest-validate-24.9.0.tgz#0775c55360d173cd854e40180756d4ff52def8ab" @@ -15490,6 +15966,18 @@ jest-validate@^29.6.1: leven "^3.1.0" pretty-format "^29.6.1" +jest-validate@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.6.2.tgz#25d972af35b2415b83b1373baf1a47bb266c1082" + integrity sha512-vGz0yMN5fUFRRbpJDPwxMpgSXW1LDKROHfBopAvDcmD6s+B/s8WJrwi+4bfH4SdInBA5C3P3BI19dBtKzx1Arg== + dependencies: + "@jest/types" "^29.6.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^29.4.3" + leven "^3.1.0" + pretty-format "^29.6.2" + jest-watcher@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-watcher/-/jest-watcher-24.9.0.tgz#4b56e5d1ceff005f5b88e528dc9afc8dd4ed2b3b" @@ -15515,6 +16003,20 @@ jest-watcher@^29.6.1: jest-util "^29.6.1" string-length "^4.0.1" +jest-watcher@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.6.2.tgz#77c224674f0620d9f6643c4cfca186d8893ca088" + integrity sha512-GZitlqkMkhkefjfN/p3SJjrDaxPflqxEAv3/ik10OirZqJGYH5rPiIsgVcfof0Tdqg3shQGdEIxDBx+B4tuLzA== + dependencies: + "@jest/test-result" "^29.6.2" + "@jest/types" "^29.6.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.13.1" + jest-util "^29.6.2" + string-length "^4.0.1" + jest-worker@24.9.0, jest-worker@^24.6.0, jest-worker@^24.9.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" @@ -15557,6 +16059,16 @@ jest-worker@^29.6.1: merge-stream "^2.0.0" supports-color "^8.0.0" +jest-worker@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.6.2.tgz#682fbc4b6856ad0aa122a5403c6d048b83f3fb44" + integrity sha512-l3ccBOabTdkng8I/ORCkADz4eSMKejTYv1vB/Z83UiubqhC1oQ5Li6dWCyqOIvSifGjUBxuvxvlm6KGK2DtuAQ== + dependencies: + "@types/node" "*" + jest-util "^29.6.2" + merge-stream "^2.0.0" + supports-color "^8.0.0" + jest@^24.8.0: version "24.9.0" resolved "https://registry.npmmirror.com/jest/-/jest-24.9.0.tgz#987d290c05a08b52c56188c1002e368edb007171" @@ -15573,6 +16085,16 @@ jest@^29.0.0: import-local "^3.0.2" jest-cli "^29.6.1" +jest@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.6.2.tgz#3bd55b9fd46a161b2edbdf5f1d1bd0d1eab76c42" + integrity sha512-8eQg2mqFbaP7CwfsTpCxQ+sHzw1WuNWL5UUvjnWP4hx2riGz9fPSzYOaU5q8/GqWn1TfgZIVTqYJygbGbWAANg== + dependencies: + "@jest/core" "^29.6.2" + "@jest/types" "^29.6.1" + import-local "^3.0.2" + jest-cli "^29.6.2" + jose@^4.14.1: version "4.14.4" resolved "https://registry.npmmirror.com/jose/-/jose-4.14.4.tgz#59e09204e2670c3164ee24cbfe7115c6f8bff9ca" @@ -20138,6 +20660,15 @@ pretty-format@^29.6.1: ansi-styles "^5.0.0" react-is "^18.0.0" +pretty-format@^29.6.2: + version "29.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.6.2.tgz#3d5829261a8a4d89d8b9769064b29c50ed486a47" + integrity sha512-1q0oC8eRveTg5nnBEWMXAU2qpv65Gnuf2eCQzSjxpWFkPaPARwqZZDGuNE0zPAZfTCHzIk3A8dIjwlQKKLphyg== + dependencies: + "@jest/schemas" "^29.6.0" + ansi-styles "^5.0.0" + react-is "^18.0.0" + pretty-quick@^3.1.0: version "3.1.3" resolved "https://registry.npmmirror.com/pretty-quick/-/pretty-quick-3.1.3.tgz#15281108c0ddf446675157ca40240099157b638e" @@ -23774,6 +24305,20 @@ ts-jest@^29.0.0: semver "^7.5.3" yargs-parser "^21.0.1" +ts-jest@^29.1.1: + version "29.1.1" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.1.1.tgz#f58fe62c63caf7bfcc5cc6472082f79180f0815b" + integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^29.0.0" + json5 "^2.2.3" + lodash.memoize "4.x" + make-error "1.x" + semver "^7.5.3" + yargs-parser "^21.0.1" + ts-loader@^7.0.4: version "7.0.5" resolved "https://registry.npmmirror.com/ts-loader/-/ts-loader-7.0.5.tgz#789338fb01cb5dc0a33c54e50558b34a73c9c4c5" From 3f84893f7886f6da3bd9534f54eab49b396bf17c Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 21:50:41 +0800 Subject: [PATCH 32/34] chore: sync runner error message --- packages/core/database/src/sync-runner.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/database/src/sync-runner.ts b/packages/core/database/src/sync-runner.ts index 8a385c80c4..f5d352895d 100644 --- a/packages/core/database/src/sync-runner.ts +++ b/packages/core/database/src/sync-runner.ts @@ -20,7 +20,9 @@ export class SyncRunner { if (!parents) { throw new Error( - `Inherit model ${inheritedCollection.name} can't be created without parents, parents option is ${lodash + `Inherit model ${ + inheritedCollection.name + } can't be created without parents, parents option is ${lodash .castArray(inheritedCollection.options.inherits) .join(', ')}`, ); @@ -58,7 +60,7 @@ export class SyncRunner { const columnDefault = sequenceNameResult[0][0]['column_default']; if (!columnDefault) { - throw new Error(`Can't find sequence name of ${parent}`); + throw new Error(`Can't find sequence name of parent collection ${parent.options.name}`); } const regex = new RegExp(/nextval\('(.*)'::regclass\)/); From 6aefff7409db8565b90c3260b04819514f6215ef Mon Sep 17 00:00:00 2001 From: ChengLei Shao Date: Thu, 27 Jul 2023 21:57:13 +0800 Subject: [PATCH 33/34] chore: test logging level --- .github/workflows/nocobase-test-backend.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/nocobase-test-backend.yml b/.github/workflows/nocobase-test-backend.yml index 89e018a313..bcdc793772 100644 --- a/.github/workflows/nocobase-test-backend.yml +++ b/.github/workflows/nocobase-test-backend.yml @@ -40,6 +40,7 @@ jobs: - name: Test with Sqlite run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: + LOGGER_LEVEL: error DB_DIALECT: sqlite DB_STORAGE: /tmp/db.sqlite DB_UNDERSCORED: ${{ matrix.underscored }} @@ -81,6 +82,7 @@ jobs: - name: Test with postgres run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: + LOGGER_LEVEL: error DB_DIALECT: postgres DB_HOST: postgres DB_PORT: 5432 @@ -118,6 +120,7 @@ jobs: - name: Test with MySQL run: yarn nocobase install -f && node --max_old_space_size=4096 ./node_modules/.bin/jest --maxWorkers=1 --workerIdleMemoryLimit=3000MB env: + LOGGER_LEVEL: error DB_DIALECT: mysql DB_HOST: mysql DB_PORT: 3306 From e8c9164b5d7956ce843095989a6dbf73e9eea529 Mon Sep 17 00:00:00 2001 From: katherinehhh Date: Thu, 27 Jul 2023 22:38:10 +0800 Subject: [PATCH 34/34] fix: sub-form record provider data failed to matching (#2337) --- .../src/schema-component/antd/association-field/Nester.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/client/src/schema-component/antd/association-field/Nester.tsx b/packages/core/client/src/schema-component/antd/association-field/Nester.tsx index 839a2edc8b..6b195cef97 100644 --- a/packages/core/client/src/schema-component/antd/association-field/Nester.tsx +++ b/packages/core/client/src/schema-component/antd/association-field/Nester.tsx @@ -10,6 +10,7 @@ import React, { useContext } from 'react'; import { useTranslation } from 'react-i18next'; import { AssociationFieldContext } from './context'; import { useAssociationFieldContext } from './hooks'; +import { RecordProvider, useRecord } from '../../../record-provider'; export const Nester = (props) => { const { options } = useContext(AssociationFieldContext); @@ -92,7 +93,9 @@ const ToManyNester = observer( )} - + + + );