mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-07-01 18:52:20 +08:00
Merge branch 'develop' into 2.0
# Conflicts: # packages/plugins/@nocobase/plugin-ai/package.json # packages/presets/nocobase/package.json
This commit is contained in:
commit
2a306d1813
@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"npmClient": "yarn",
|
||||
"useWorkspaces": true,
|
||||
"npmClientArgs": ["--ignore-engines"],
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "@nocobase/acl",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/resourcer": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"minimatch": "^5.1.1"
|
||||
},
|
||||
"repository": {
|
||||
|
@ -1,14 +1,14 @@
|
||||
{
|
||||
"name": "@nocobase/actions",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/cache": "1.8.0-alpha.10",
|
||||
"@nocobase/database": "1.8.0-alpha.10",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.10"
|
||||
"@nocobase/cache": "1.8.0-alpha.11",
|
||||
"@nocobase/database": "1.8.0-alpha.11",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.11"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -1,17 +1,17 @@
|
||||
{
|
||||
"name": "@nocobase/app",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/database": "1.8.0-alpha.10",
|
||||
"@nocobase/preset-nocobase": "1.8.0-alpha.10",
|
||||
"@nocobase/server": "1.8.0-alpha.10"
|
||||
"@nocobase/database": "1.8.0-alpha.11",
|
||||
"@nocobase/preset-nocobase": "1.8.0-alpha.11",
|
||||
"@nocobase/server": "1.8.0-alpha.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nocobase/client": "1.8.0-alpha.10"
|
||||
"@nocobase/client": "1.8.0-alpha.11"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -1,16 +1,16 @@
|
||||
{
|
||||
"name": "@nocobase/auth",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/actions": "1.8.0-alpha.10",
|
||||
"@nocobase/cache": "1.8.0-alpha.10",
|
||||
"@nocobase/database": "1.8.0-alpha.10",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/actions": "1.8.0-alpha.11",
|
||||
"@nocobase/cache": "1.8.0-alpha.11",
|
||||
"@nocobase/database": "1.8.0-alpha.11",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"@types/jsonwebtoken": "^9.0.9",
|
||||
"jsonwebtoken": "^9.0.2"
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/build",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "Library build tool based on rollup.",
|
||||
"main": "lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
|
4
packages/core/cache/package.json
vendored
4
packages/core/cache/package.json
vendored
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@nocobase/cache",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/lock-manager": "1.8.0-alpha.10",
|
||||
"@nocobase/lock-manager": "1.8.0-alpha.11",
|
||||
"bloom-filters": "^3.0.1",
|
||||
"cache-manager": "^5.2.4",
|
||||
"cache-manager-redis-yet": "^4.1.2"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/cli",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./src/index.js",
|
||||
@ -8,7 +8,7 @@
|
||||
"nocobase": "./bin/index.js"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nocobase/app": "1.8.0-alpha.10",
|
||||
"@nocobase/app": "1.8.0-alpha.11",
|
||||
"@nocobase/license-kit": "^0.2.3",
|
||||
"@types/fs-extra": "^11.0.1",
|
||||
"@umijs/utils": "3.5.20",
|
||||
@ -27,7 +27,7 @@
|
||||
"tsx": "^4.19.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nocobase/devtools": "1.8.0-alpha.10"
|
||||
"@nocobase/devtools": "1.8.0-alpha.11"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -15,7 +15,7 @@ const tar = require('tar');
|
||||
const path = require('path');
|
||||
const { createStoragePluginsSymlink } = require('@nocobase/utils/plugin-symlink');
|
||||
const chalk = require('chalk');
|
||||
const { getAccessKeyPair } = require('../util');
|
||||
const { getAccessKeyPair, showLicenseInfo, LicenseKeyError } = require('../util');
|
||||
|
||||
class Package {
|
||||
data;
|
||||
@ -175,6 +175,9 @@ class PackageManager {
|
||||
});
|
||||
this.token = res1.data.token;
|
||||
} catch (error) {
|
||||
if (error?.response?.data?.error === 'license not valid') {
|
||||
showLicenseInfo(LicenseKeyError.notValid);
|
||||
}
|
||||
console.error(chalk.redBright(`Login failed: ${this.baseURL}`));
|
||||
}
|
||||
}
|
||||
@ -249,7 +252,7 @@ module.exports = (cli) => {
|
||||
NOCOBASE_PKG_USERNAME,
|
||||
NOCOBASE_PKG_PASSWORD,
|
||||
} = process.env;
|
||||
const { accessKeyId, accessKeySecret } = getAccessKeyPair();
|
||||
const { accessKeyId, accessKeySecret } = await getAccessKeyPair();
|
||||
if (!(NOCOBASE_PKG_USERNAME && NOCOBASE_PKG_PASSWORD) && !(accessKeyId && accessKeySecret)) {
|
||||
return;
|
||||
}
|
||||
|
@ -18,7 +18,8 @@ const dotenv = require('dotenv');
|
||||
const fs = require('fs-extra');
|
||||
const os = require('os');
|
||||
const moment = require('moment-timezone');
|
||||
const { keyDecrypt } = require('@nocobase/license-kit');
|
||||
const { keyDecrypt, getEnvAsync } = require('@nocobase/license-kit');
|
||||
const _ = require('lodash');
|
||||
|
||||
exports.isPackageValid = (pkg) => {
|
||||
try {
|
||||
@ -490,20 +491,75 @@ exports.generatePlugins = function () {
|
||||
}
|
||||
};
|
||||
|
||||
exports.getAccessKeyPair = function () {
|
||||
exports.getAccessKeyPair = async function () {
|
||||
const keyFile = resolve(process.cwd(), 'storage/.license/license-key');
|
||||
if (!fs.existsSync(keyFile)) {
|
||||
console.log(chalk.yellow('license-key file not found', keyFile));
|
||||
// showLicenseInfo(LicenseKeyError.notExist);
|
||||
return {};
|
||||
}
|
||||
|
||||
let keyData = {};
|
||||
try {
|
||||
const str = fs.readFileSync(keyFile, 'utf-8');
|
||||
const keyDataStr = keyDecrypt(str);
|
||||
const keyData = JSON.parse(keyDataStr);
|
||||
const { accessKeyId, accessKeySecret } = keyData;
|
||||
return { accessKeyId, accessKeySecret };
|
||||
keyData = JSON.parse(keyDataStr);
|
||||
} catch (error) {
|
||||
console.log(chalk.yellow('Key parse failed, please check your key'));
|
||||
showLicenseInfo(LicenseKeyError.parseFailed);
|
||||
return {};
|
||||
}
|
||||
|
||||
const currentEnv = await getEnvAsync();
|
||||
if (!_.isEqual(_.omit(keyData?.instanceData, ['timestamp']), _.omit(currentEnv, ['timestamp']))) {
|
||||
showLicenseInfo(LicenseKeyError.notMatch);
|
||||
return {};
|
||||
}
|
||||
|
||||
const { accessKeyId, accessKeySecret } = keyData;
|
||||
return { accessKeyId, accessKeySecret };
|
||||
};
|
||||
|
||||
const LicenseKeyError = {
|
||||
notExist: {
|
||||
title: 'License key not exist',
|
||||
content:
|
||||
'Please go to the license settings page to obtain the Instance ID for the current environment, and then generate the license key on the service platform.',
|
||||
},
|
||||
parseFailed: {
|
||||
title: 'License key parse failed',
|
||||
content: 'Please check your license key, or regenerate the license key on the service platform.',
|
||||
},
|
||||
notMatch: {
|
||||
title: 'License key not matched',
|
||||
content:
|
||||
'Please go to the license settings page to obtain the Instance ID for the current environment, and then regenerate the license key on the service platform.',
|
||||
},
|
||||
notValid: {
|
||||
title: 'License key not valid',
|
||||
content:
|
||||
'Please go to the license settings page to obtain the Instance ID for the current environment, and then regenerate the license key on the service platform.',
|
||||
},
|
||||
};
|
||||
|
||||
exports.LicenseKeyError = LicenseKeyError;
|
||||
|
||||
function showLicenseInfo({ title, content }) {
|
||||
const rows = [];
|
||||
const length = 80;
|
||||
let row = '';
|
||||
content.split(' ').forEach((word) => {
|
||||
if (row.length + word.length > length) {
|
||||
rows.push(row);
|
||||
row = '';
|
||||
}
|
||||
row += word + ' ';
|
||||
});
|
||||
if (row) {
|
||||
rows.push(row);
|
||||
}
|
||||
console.log(Array(length).fill('-').join(''));
|
||||
console.log(chalk.yellow(title));
|
||||
console.log(chalk.yellow(rows.join('\n')));
|
||||
console.log(Array(length).fill('-').join(''));
|
||||
}
|
||||
|
||||
exports.showLicenseInfo = showLicenseInfo;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/client",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "lib/index.js",
|
||||
"module": "es/index.mjs",
|
||||
@ -27,9 +27,9 @@
|
||||
"@formily/reactive-react": "^2.2.27",
|
||||
"@formily/shared": "^2.2.27",
|
||||
"@formily/validator": "^2.2.27",
|
||||
"@nocobase/evaluators": "1.8.0-alpha.10",
|
||||
"@nocobase/sdk": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/evaluators": "1.8.0-alpha.11",
|
||||
"@nocobase/sdk": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"ahooks": "^3.7.2",
|
||||
"antd": "5.24.2",
|
||||
"antd-style": "3.7.1",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "create-nocobase-app",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "src/index.js",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
|
@ -1,16 +1,16 @@
|
||||
{
|
||||
"name": "@nocobase/data-source-manager",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"dependencies": {
|
||||
"@nocobase/actions": "1.8.0-alpha.10",
|
||||
"@nocobase/cache": "1.8.0-alpha.10",
|
||||
"@nocobase/database": "1.8.0-alpha.10",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/actions": "1.8.0-alpha.11",
|
||||
"@nocobase/cache": "1.8.0-alpha.11",
|
||||
"@nocobase/database": "1.8.0-alpha.11",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"@types/jsonwebtoken": "^8.5.8",
|
||||
"jsonwebtoken": "^9.0.2"
|
||||
},
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "@nocobase/database",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
"@nocobase/logger": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/logger": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"async-mutex": "^0.3.2",
|
||||
"chalk": "^4.1.1",
|
||||
"cron-parser": "4.4.0",
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "@nocobase/devtools",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./src/index.js",
|
||||
"dependencies": {
|
||||
"@nocobase/build": "1.8.0-alpha.10",
|
||||
"@nocobase/client": "1.8.0-alpha.10",
|
||||
"@nocobase/test": "1.8.0-alpha.10",
|
||||
"@nocobase/build": "1.8.0-alpha.11",
|
||||
"@nocobase/client": "1.8.0-alpha.11",
|
||||
"@nocobase/test": "1.8.0-alpha.11",
|
||||
"@types/koa": "^2.15.0",
|
||||
"@types/koa-bodyparser": "^4.3.4",
|
||||
"@types/lodash": "^4.14.177",
|
||||
|
@ -1,13 +1,13 @@
|
||||
{
|
||||
"name": "@nocobase/evaluators",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
"@formulajs/formulajs": "4.4.9",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"mathjs": "^10.6.0"
|
||||
},
|
||||
"repository": {
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "@nocobase/lock-manager",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "lib/index.js",
|
||||
"license": "AGPL-3.0",
|
||||
"devDependencies": {
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"async-mutex": "^0.5.0"
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/logger",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "nocobase logging library",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@nocobase/resourcer",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"main": "./lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"license": "AGPL-3.0",
|
||||
"dependencies": {
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"deepmerge": "^4.2.2",
|
||||
"koa-compose": "^4.1.0",
|
||||
"lodash": "^4.17.21",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/sdk",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "lib/index.js",
|
||||
"types": "lib/index.d.ts",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/server",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"license": "AGPL-3.0",
|
||||
@ -10,19 +10,19 @@
|
||||
"@koa/cors": "^5.0.0",
|
||||
"@koa/multer": "^3.1.0",
|
||||
"@koa/router": "^13.1.0",
|
||||
"@nocobase/acl": "1.8.0-alpha.10",
|
||||
"@nocobase/actions": "1.8.0-alpha.10",
|
||||
"@nocobase/auth": "1.8.0-alpha.10",
|
||||
"@nocobase/cache": "1.8.0-alpha.10",
|
||||
"@nocobase/data-source-manager": "1.8.0-alpha.10",
|
||||
"@nocobase/database": "1.8.0-alpha.10",
|
||||
"@nocobase/evaluators": "1.8.0-alpha.10",
|
||||
"@nocobase/lock-manager": "1.8.0-alpha.10",
|
||||
"@nocobase/logger": "1.8.0-alpha.10",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.10",
|
||||
"@nocobase/sdk": "1.8.0-alpha.10",
|
||||
"@nocobase/telemetry": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/acl": "1.8.0-alpha.11",
|
||||
"@nocobase/actions": "1.8.0-alpha.11",
|
||||
"@nocobase/auth": "1.8.0-alpha.11",
|
||||
"@nocobase/cache": "1.8.0-alpha.11",
|
||||
"@nocobase/data-source-manager": "1.8.0-alpha.11",
|
||||
"@nocobase/database": "1.8.0-alpha.11",
|
||||
"@nocobase/evaluators": "1.8.0-alpha.11",
|
||||
"@nocobase/lock-manager": "1.8.0-alpha.11",
|
||||
"@nocobase/logger": "1.8.0-alpha.11",
|
||||
"@nocobase/resourcer": "1.8.0-alpha.11",
|
||||
"@nocobase/sdk": "1.8.0-alpha.11",
|
||||
"@nocobase/telemetry": "1.8.0-alpha.11",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"@types/decompress": "4.2.7",
|
||||
"@types/ini": "^1.3.31",
|
||||
"@types/koa-send": "^4.1.3",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/telemetry",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "nocobase telemetry library",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./lib/index.js",
|
||||
@ -11,7 +11,7 @@
|
||||
"directory": "packages/telemetry"
|
||||
},
|
||||
"dependencies": {
|
||||
"@nocobase/utils": "1.8.0-alpha.10",
|
||||
"@nocobase/utils": "1.8.0-alpha.11",
|
||||
"@opentelemetry/api": "^1.7.0",
|
||||
"@opentelemetry/instrumentation": "^0.46.0",
|
||||
"@opentelemetry/resources": "^1.19.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/test",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "lib/index.js",
|
||||
"module": "./src/index.ts",
|
||||
"types": "./lib/index.d.ts",
|
||||
@ -51,7 +51,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@faker-js/faker": "8.1.0",
|
||||
"@nocobase/server": "1.8.0-alpha.10",
|
||||
"@nocobase/server": "1.8.0-alpha.11",
|
||||
"@playwright/test": "^1.45.3",
|
||||
"@testing-library/jest-dom": "^6.4.2",
|
||||
"@testing-library/react": "^14.0.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/utils",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "lib/index.js",
|
||||
"types": "./lib/index.d.ts",
|
||||
"license": "AGPL-3.0",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "权限控制",
|
||||
"description": "Based on roles, resources, and actions, access control can precisely manage interface configuration permissions, data operation permissions, menu access permissions, and plugin permissions.",
|
||||
"description.zh-CN": "基于角色、资源和操作的权限控制,可以精确控制界面配置权限、数据操作权限、菜单访问权限、插件权限。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/acl",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-action-bulk-edit",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-bulk-edit",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-bulk-edit",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-action-bulk-update",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-bulk-update",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-bulk-update",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-action-custom-request",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-custom-request",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-custom-request",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-action-duplicate",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-duplicate",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-duplicate",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "操作:导出记录",
|
||||
"description": "Export filtered records to excel, you can configure which fields to export.",
|
||||
"description.zh-CN": "导出筛选后的记录到 Excel 中,可以配置导出哪些字段。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-export",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "操作:导入记录",
|
||||
"description": "Import records using excel templates. You can configure which fields to import and templates will be generated automatically.",
|
||||
"description.zh-CN": "使用 Excel 模板导入数据,可以配置导入哪些字段,自动生成模板。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-import",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-action-print",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/action-print",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/action-print",
|
||||
|
@ -1,10 +1,10 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-ai",
|
||||
"displayName": "AI employees",
|
||||
"displayName.zh-CN": "AI 员工",
|
||||
"description": "Support configuring AI employees for different roles. Empowered by LLMs and workflows to assist with daily business tasks.",
|
||||
"description.zh-CN": "支持配置不同岗位的 AI 员工,结合大语言模型 (LLM) 和工作流,辅助用户完成日常业务工作。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"displayName": "AI integration",
|
||||
"displayName.zh-CN": "AI 集成",
|
||||
"description": "Support integration with AI services, providing AI-related workflow nodes to enhance business processing capabilities.",
|
||||
"description.zh-CN": "支持接入 AI 服务,提供 AI 相关的工作流节点,增强业务处理能力。",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-api-doc",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "API documentation",
|
||||
"displayName.zh-CN": "API 文档",
|
||||
"description": "An OpenAPI documentation generator for NocoBase HTTP API.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "认证:API 密钥",
|
||||
"description": "Allows users to use API key to access application's HTTP API",
|
||||
"description.zh-CN": "允许用户使用 API 密钥访问应用的 HTTP API",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/api-keys",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "异步任务管理器",
|
||||
"description": "Manage and monitor asynchronous tasks such as data import/export. Support task progress tracking and notification.",
|
||||
"description.zh-CN": "管理和监控数据导入导出等异步任务。支持任务进度跟踪和通知。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-audit-logs",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Audit logs (deprecated)",
|
||||
"displayName.zh-CN": "审计日志(废弃)",
|
||||
"description": "This plugin is deprecated. There will be a new audit log plugin in the future.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "认证:短信",
|
||||
"description": "SMS authentication.",
|
||||
"description.zh-CN": "通过短信验证码认证身份。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/auth-sms",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth-sms",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-auth",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/auth",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/auth",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "应用的备份与还原(废弃)",
|
||||
"description": "Backup and restore applications for scenarios such as application replication, migration, and upgrades.",
|
||||
"description.zh-CN": "备份和还原应用,可用于应用的复制、迁移、升级等场景。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/backup-restore",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "区块:iframe",
|
||||
"description": "Create an iframe block on the page to embed and display external web pages or content.",
|
||||
"description.zh-CN": "在页面上创建和管理iframe,用于嵌入和展示外部网页或内容。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/block-iframe",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "区块:模板",
|
||||
"description": "Create and manage block templates for reuse on pages.",
|
||||
"description.zh-CN": "创建和管理区块模板,用于在页面中重复使用。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/block-template",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-block-workbench",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Block: Action panel",
|
||||
"displayName.zh-CN": "区块:操作面板",
|
||||
"description": "Centrally manages and displays various actions, allowing users to efficiently perform tasks. It supports extensibility, with current action types including pop-ups, links, scanning, and custom requests.",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-calendar",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Calendar",
|
||||
"displayName.zh-CN": "日历",
|
||||
"description": "Provides callendar collection template and block for managing date data, typically for date/time related information such as events, appointments, tasks, and so on.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "图表(废弃)",
|
||||
"description": "The plugin has been deprecated, please use the data visualization plugin instead.",
|
||||
"description.zh-CN": "已废弃插件,请使用数据可视化插件代替。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"license": "AGPL-3.0",
|
||||
"devDependencies": {
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "WEB 客户端",
|
||||
"description": "Provides a client interface for the NocoBase server",
|
||||
"description.zh-CN": "为 NocoBase 服务端提供客户端界面",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"license": "AGPL-3.0",
|
||||
"devDependencies": {
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据表: SQL",
|
||||
"description": "Provides SQL collection template",
|
||||
"description.zh-CN": "提供 SQL 数据表模板",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"homepage": "https://docs-cn.nocobase.com/handbook/collection-sql",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/collection-sql",
|
||||
"main": "dist/server/index.js",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-collection-tree",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Collection: Tree",
|
||||
"displayName.zh-CN": "数据表:树",
|
||||
"description": "Provides tree collection template",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据源:主数据库",
|
||||
"description": "NocoBase main database, supports relational databases such as PostgreSQL, MySQL, MariaDB and so on.",
|
||||
"description.zh-CN": "NocoBase 主数据库,支持 PostgreSQL、MySQL、MariaDB 等关系型数据库。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/data-source-main",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/data-source-main",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-data-source-manager",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"displayName": "Data source manager",
|
||||
"displayName.zh-CN": "数据源管理",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-data-visualization",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Data visualization",
|
||||
"displayName.zh-CN": "数据可视化",
|
||||
"description": "Provides data visualization feature, including chart block and chart filter block, support line charts, area charts, bar charts and more than a dozen kinds of charts, you can also extend more chart types.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "部门",
|
||||
"description": "Organize users by departments, set hierarchical relationships, link roles to control permissions, and use departments as variables in workflows and expressions.",
|
||||
"description.zh-CN": "以部门来组织用户,设定上下级关系,绑定角色控制权限,并支持作为变量用于工作流和表达式。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/actions": "1.x",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-disable-pm-add",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-environment-variables",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "错误处理器",
|
||||
"description": "Handling application errors and exceptions.",
|
||||
"description.zh-CN": "处理应用程序中的错误和异常。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"devDependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-field-attachment-url",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"displayName": "Collection field: Attachment(URL)",
|
||||
"displayName.zh-CN": "数据表字段:附件(URL)",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-field-china-region",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Collection field: administrative divisions of China",
|
||||
"displayName.zh-CN": "数据表字段:中国行政区划",
|
||||
"description": "Provides data and field type for administrative divisions of China.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据表字段:公式",
|
||||
"description": "Configure and store the results of calculations between multiple field values in the same record, supporting both Math.js and Excel formula functions.",
|
||||
"description.zh-CN": "可以配置并存储同一条记录的多字段值之间的计算结果,支持 Math.js 和 Excel formula functions 两种引擎",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/field-formula",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据表字段:多对多 (数组)",
|
||||
"description": "Allows to create many to many relationships between two models by storing an array of unique keys of the target model.",
|
||||
"description.zh-CN": "支持通过在数组中存储目标表唯一键的方式建立多对多关系。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据表字段:Markdown(Vditor)",
|
||||
"description": "Used to store Markdown and render it using Vditor editor, supports common Markdown syntax such as list, code, quote, etc., and supports uploading images, recordings, etc.It also allows for instant rendering, where what you see is what you get.",
|
||||
"description.zh-CN": "用于存储 Markdown,并使用 Vditor 编辑器渲染,支持常见 Markdown 语法,如列表,代码,引用等,并支持上传图片,录音等。同时可以做到即时渲染,所见即所得。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/field-markdown-vditor",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "数据表字段:自动编码",
|
||||
"description": "Automatically generate codes based on configured rules, supporting combinations of dates, numbers, and text.",
|
||||
"description.zh-CN": "根据配置的规则自动生成编码,支持日期、数字、文本的组合。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/field-sequence",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-field-sort",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"displayName": "Collection field: Sort",
|
||||
"displayName.zh-CN": "数据表字段:排序",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-file-manager",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "File manager",
|
||||
"displayName.zh-CN": "文件管理器",
|
||||
"description": "Provides files storage services with files collection template and attachment field.",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-gantt",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Block: Gantt",
|
||||
"displayName.zh-CN": "区块:甘特图",
|
||||
"description": "Provides Gantt block.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "可视化数据表管理",
|
||||
"description": "An ER diagram-like tool. Currently only the Master database is supported.",
|
||||
"description.zh-CN": "类似 ER 图的工具,目前只支持主数据库。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/graph-collection-manager",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-kanban",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/block-kanban",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/block-kanban",
|
||||
|
2
packages/plugins/@nocobase/plugin-license/.npmignore
Normal file
2
packages/plugins/@nocobase/plugin-license/.npmignore
Normal file
@ -0,0 +1,2 @@
|
||||
/node_modules
|
||||
/src
|
1
packages/plugins/@nocobase/plugin-license/README.md
Normal file
1
packages/plugins/@nocobase/plugin-license/README.md
Normal file
@ -0,0 +1 @@
|
||||
# @nocobase/plugin-license
|
2
packages/plugins/@nocobase/plugin-license/client.d.ts
vendored
Normal file
2
packages/plugins/@nocobase/plugin-license/client.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './dist/client';
|
||||
export { default } from './dist/client';
|
1
packages/plugins/@nocobase/plugin-license/client.js
Normal file
1
packages/plugins/@nocobase/plugin-license/client.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/client/index.js');
|
17
packages/plugins/@nocobase/plugin-license/package.json
Normal file
17
packages/plugins/@nocobase/plugin-license/package.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-license",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"displayName": "License settings",
|
||||
"displayName.zh-CN": "授权设置",
|
||||
"description": "Instance ID and license key settings",
|
||||
"description.zh-CN": "实例 ID 和授权密钥设置",
|
||||
"devDependencies": {
|
||||
"@nocobase/license-kit": "^0.2.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nocobase/client": "1.x",
|
||||
"@nocobase/server": "1.x",
|
||||
"@nocobase/test": "1.x"
|
||||
}
|
||||
}
|
2
packages/plugins/@nocobase/plugin-license/server.d.ts
vendored
Normal file
2
packages/plugins/@nocobase/plugin-license/server.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
export * from './dist/server';
|
||||
export { default } from './dist/server';
|
1
packages/plugins/@nocobase/plugin-license/server.js
Normal file
1
packages/plugins/@nocobase/plugin-license/server.js
Normal file
@ -0,0 +1 @@
|
||||
module.exports = require('./dist/server/index.js');
|
@ -0,0 +1,185 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
import React, { useState } from 'react';
|
||||
import { SchemaComponent, useAPIClient, useFormBlockContext } from '@nocobase/client';
|
||||
import { Card, Typography, Spin, message, Input, Button } from 'antd';
|
||||
import { useAsyncEffect } from 'ahooks';
|
||||
import { useT } from './locale';
|
||||
|
||||
const { Paragraph } = Typography;
|
||||
|
||||
function InstanceId() {
|
||||
const api = useAPIClient();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const [instanceId, setInstanceId] = useState('');
|
||||
|
||||
const getInstanceId = async () => {
|
||||
setLoading(true);
|
||||
return api
|
||||
.request({
|
||||
url: '/license:instance-id',
|
||||
method: 'GET',
|
||||
})
|
||||
.then((res) => res?.data?.data)
|
||||
.finally(() => {
|
||||
setLoading(false);
|
||||
});
|
||||
};
|
||||
useAsyncEffect(async () => {
|
||||
const id = await getInstanceId();
|
||||
setInstanceId(id);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Spin spinning={loading}>
|
||||
<Paragraph copyable ellipsis>
|
||||
{instanceId}
|
||||
</Paragraph>
|
||||
</Spin>
|
||||
);
|
||||
}
|
||||
|
||||
const useSubmitProps = () => {
|
||||
const api = useAPIClient();
|
||||
const [loading, setLoading] = useState(false);
|
||||
const ctx = useFormBlockContext();
|
||||
const t = useT();
|
||||
|
||||
const saveLicenseKey = async (licenseKey: string) => {
|
||||
setLoading(true);
|
||||
try {
|
||||
await api.request({
|
||||
url: '/license:license-key',
|
||||
method: 'POST',
|
||||
data: {
|
||||
licenseKey,
|
||||
},
|
||||
});
|
||||
setLoading(false);
|
||||
message.success(t('License key saved successfully, please restart the server'));
|
||||
} catch (e) {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
loading,
|
||||
onClick: async () => {
|
||||
await ctx.form?.validate();
|
||||
const licenseKey = ctx.form?.values?.licenseKey;
|
||||
await saveLicenseKey(licenseKey);
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const TextArea = (props) => {
|
||||
const [isExists, setIsExists] = useState(false);
|
||||
const api = useAPIClient();
|
||||
const ctx = useFormBlockContext();
|
||||
const t = useT();
|
||||
useAsyncEffect(async () => {
|
||||
const res = await api.request({
|
||||
url: '/license:is-exists',
|
||||
method: 'GET',
|
||||
});
|
||||
if (res?.data?.data) {
|
||||
ctx.form?.setFieldState('footer', (state) => {
|
||||
state.visible = false;
|
||||
});
|
||||
}
|
||||
setIsExists(res?.data?.data);
|
||||
}, []);
|
||||
|
||||
if (isExists) {
|
||||
return (
|
||||
<>
|
||||
{t('License key has been set')}
|
||||
<Button
|
||||
onClick={() => {
|
||||
setIsExists(false);
|
||||
ctx.form?.setFieldState('footer', (state) => {
|
||||
state.visible = true;
|
||||
});
|
||||
}}
|
||||
>
|
||||
{t('Change key')}
|
||||
</Button>
|
||||
</>
|
||||
);
|
||||
}
|
||||
return <Input.TextArea rows={4} {...props} />;
|
||||
};
|
||||
|
||||
export default function LicenseSetting() {
|
||||
const t = useT();
|
||||
|
||||
const createLabelSchema = {
|
||||
type: 'void',
|
||||
'x-decorator': 'FormBlockProvider',
|
||||
'x-decorator-props': {
|
||||
dataSource: 'main',
|
||||
collection: 'users',
|
||||
},
|
||||
properties: {
|
||||
form: {
|
||||
type: 'void',
|
||||
'x-component': 'FormV2',
|
||||
'x-use-component-props': 'useFormBlockProps',
|
||||
properties: {
|
||||
label: {
|
||||
type: 'string',
|
||||
title: t('Instance ID'),
|
||||
// required: true,
|
||||
'x-component': 'InstanceId',
|
||||
'x-decorator': 'FormItem',
|
||||
},
|
||||
licenseKey: {
|
||||
type: 'string',
|
||||
title: t('License key'),
|
||||
required: true,
|
||||
'x-component': 'TextArea',
|
||||
'x-decorator': 'FormItem',
|
||||
'x-component-props': {
|
||||
placeholder: t('Enter license key'),
|
||||
},
|
||||
},
|
||||
footer: {
|
||||
type: 'void',
|
||||
'x-component': 'Action.Drawer.Footer',
|
||||
properties: {
|
||||
submit: {
|
||||
title: '{{t("Submit")}}',
|
||||
'x-component': 'Action',
|
||||
'x-use-component-props': 'useSubmitProps',
|
||||
'x-component-props': {
|
||||
type: 'primary',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
return (
|
||||
<Card bordered={false}>
|
||||
<SchemaComponent
|
||||
scope={{ useSubmitProps }}
|
||||
components={{ InstanceId, TextArea }}
|
||||
schema={{
|
||||
type: 'void',
|
||||
properties: {
|
||||
form: createLabelSchema,
|
||||
},
|
||||
}}
|
||||
/>
|
||||
</Card>
|
||||
);
|
||||
}
|
249
packages/plugins/@nocobase/plugin-license/src/client/client.d.ts
vendored
Normal file
249
packages/plugins/@nocobase/plugin-license/src/client/client.d.ts
vendored
Normal file
@ -0,0 +1,249 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
// CSS modules
|
||||
type CSSModuleClasses = { readonly [key: string]: string };
|
||||
|
||||
declare module '*.module.css' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.scss' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.sass' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.less' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.styl' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.stylus' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.pcss' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
declare module '*.module.sss' {
|
||||
const classes: CSSModuleClasses;
|
||||
export default classes;
|
||||
}
|
||||
|
||||
// CSS
|
||||
declare module '*.css' { }
|
||||
declare module '*.scss' { }
|
||||
declare module '*.sass' { }
|
||||
declare module '*.less' { }
|
||||
declare module '*.styl' { }
|
||||
declare module '*.stylus' { }
|
||||
declare module '*.pcss' { }
|
||||
declare module '*.sss' { }
|
||||
|
||||
// Built-in asset types
|
||||
// see `src/node/constants.ts`
|
||||
|
||||
// images
|
||||
declare module '*.apng' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.png' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.jpg' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.jpeg' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.jfif' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.pjpeg' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.pjp' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.gif' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.svg' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.ico' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.webp' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.avif' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
// media
|
||||
declare module '*.mp4' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.webm' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.ogg' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.mp3' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.wav' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.flac' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.aac' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.opus' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.mov' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.m4a' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.vtt' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
// fonts
|
||||
declare module '*.woff' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.woff2' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.eot' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.ttf' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.otf' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
// other
|
||||
declare module '*.webmanifest' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.pdf' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
declare module '*.txt' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
// wasm?init
|
||||
declare module '*.wasm?init' {
|
||||
const initWasm: (options?: WebAssembly.Imports) => Promise<WebAssembly.Instance>;
|
||||
export default initWasm;
|
||||
}
|
||||
|
||||
// web worker
|
||||
declare module '*?worker' {
|
||||
const workerConstructor: {
|
||||
new(options?: { name?: string }): Worker;
|
||||
};
|
||||
export default workerConstructor;
|
||||
}
|
||||
|
||||
declare module '*?worker&inline' {
|
||||
const workerConstructor: {
|
||||
new(options?: { name?: string }): Worker;
|
||||
};
|
||||
export default workerConstructor;
|
||||
}
|
||||
|
||||
declare module '*?worker&url' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
declare module '*?sharedworker' {
|
||||
const sharedWorkerConstructor: {
|
||||
new(options?: { name?: string }): SharedWorker;
|
||||
};
|
||||
export default sharedWorkerConstructor;
|
||||
}
|
||||
|
||||
declare module '*?sharedworker&inline' {
|
||||
const sharedWorkerConstructor: {
|
||||
new(options?: { name?: string }): SharedWorker;
|
||||
};
|
||||
export default sharedWorkerConstructor;
|
||||
}
|
||||
|
||||
declare module '*?sharedworker&url' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
declare module '*?raw' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
declare module '*?url' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
||||
|
||||
declare module '*?inline' {
|
||||
const src: string;
|
||||
export default src;
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
import { Plugin } from '@nocobase/client';
|
||||
import LicenseSetting from './LicenseSetting';
|
||||
import { tStr } from './locale';
|
||||
|
||||
export class PluginLicenseClient extends Plugin {
|
||||
async afterAdd() {
|
||||
// await this.app.pm.add()
|
||||
}
|
||||
|
||||
async beforeLoad() {}
|
||||
|
||||
// You can get and modify the app instance here
|
||||
async load() {
|
||||
this.app.pluginSettingsManager.add('license-settings', {
|
||||
title: tStr('License settings'),
|
||||
icon: 'SolutionOutlined',
|
||||
Component: LicenseSetting,
|
||||
aclSnippet: 'pm.license-settings',
|
||||
});
|
||||
// this.app.addComponents({})
|
||||
// this.app.addScopes({})
|
||||
// this.app.addProvider()
|
||||
// this.app.addProviders()
|
||||
// this.app.router.add()
|
||||
}
|
||||
}
|
||||
|
||||
export default PluginLicenseClient;
|
@ -0,0 +1,21 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
// @ts-ignore
|
||||
import pkg from './../../package.json';
|
||||
import { useApp } from '@nocobase/client';
|
||||
|
||||
export function useT() {
|
||||
const app = useApp();
|
||||
return (str: string) => app.i18n.t(str, { ns: [pkg.name, 'client'] });
|
||||
}
|
||||
|
||||
export function tStr(key: string) {
|
||||
return `{{t(${JSON.stringify(key)}, { ns: ['${pkg.name}', 'client'], nsMode: 'fallback' })}}`;
|
||||
}
|
11
packages/plugins/@nocobase/plugin-license/src/index.ts
Normal file
11
packages/plugins/@nocobase/plugin-license/src/index.ts
Normal file
@ -0,0 +1,11 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
export * from './server';
|
||||
export { default } from './server';
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"License key saved successfully, please restart the server": "License key saved successfully, please restart the server",
|
||||
"License settings": "License settings",
|
||||
"Instance ID": "Instance ID",
|
||||
"License key": "License key",
|
||||
"Enter license key": "Enter license key",
|
||||
"Invalid license key": "Invalid license key",
|
||||
"Change key": "Change key",
|
||||
"License key has been set": "License key has been set"
|
||||
}
|
@ -0,0 +1 @@
|
||||
{}
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"License key saved successfully, please restart the server": "授权密钥保存成功,请重启服务器",
|
||||
"License settings": "授权设置",
|
||||
"Instance ID": "实例 ID",
|
||||
"License key": "授权密钥",
|
||||
"Enter license key": "输入授权密钥",
|
||||
"Invalid license key": "无效的授权密钥",
|
||||
"Change key": "更改密钥",
|
||||
"License key has been set": "授权密钥已设置"
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
export { default } from './plugin';
|
@ -0,0 +1,55 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
import { Plugin } from '@nocobase/server';
|
||||
import { getInstanceId, saveLicenseKey, isLicenseKeyExists } from './utils';
|
||||
import { keyDecrypt } from '@nocobase/license-kit';
|
||||
|
||||
export class PluginLicenseServer extends Plugin {
|
||||
async afterAdd() {}
|
||||
|
||||
async beforeLoad() {}
|
||||
|
||||
async load() {
|
||||
this.app.resourceManager.define({
|
||||
name: 'license',
|
||||
actions: {
|
||||
'instance-id': async (ctx, next) => {
|
||||
ctx.body = await getInstanceId();
|
||||
await next();
|
||||
},
|
||||
'license-key': async (ctx, next) => {
|
||||
const { licenseKey } = ctx.request.body;
|
||||
try {
|
||||
keyDecrypt(licenseKey);
|
||||
} catch (e) {
|
||||
return ctx.throw(500, ctx.t('Invalid license key', { ns: '@nocobase/plugin-license' }));
|
||||
}
|
||||
await saveLicenseKey(licenseKey);
|
||||
await next();
|
||||
},
|
||||
'is-exists': async (ctx, next) => {
|
||||
ctx.body = await isLicenseKeyExists();
|
||||
await next();
|
||||
},
|
||||
},
|
||||
});
|
||||
this.app.acl.allow('license', '*', 'loggedIn');
|
||||
}
|
||||
|
||||
async install() {}
|
||||
|
||||
async afterEnable() {}
|
||||
|
||||
async afterDisable() {}
|
||||
|
||||
async remove() {}
|
||||
}
|
||||
|
||||
export default PluginLicenseServer;
|
@ -0,0 +1,48 @@
|
||||
/**
|
||||
* This file is part of the NocoBase (R) project.
|
||||
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
||||
* Authors: NocoBase Team.
|
||||
*
|
||||
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||
*/
|
||||
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { exec } from 'child_process';
|
||||
|
||||
let instanceIdIsCreate = false;
|
||||
export async function getInstanceId() {
|
||||
const dir = path.resolve(process.cwd(), 'storage/.license');
|
||||
const filePath = path.resolve(dir, 'instance-id');
|
||||
if (!instanceIdIsCreate) {
|
||||
await createInstanceId(true);
|
||||
instanceIdIsCreate = true;
|
||||
}
|
||||
const id = fs.readFileSync(filePath, 'utf-8');
|
||||
return id;
|
||||
}
|
||||
|
||||
export async function createInstanceId(force = false) {
|
||||
return new Promise((resolve, reject) => {
|
||||
exec(`yarn nocobase generate-instance-id ${force ? '--force' : ''}`, (err, stdout, stderr) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
resolve(stdout);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export async function saveLicenseKey(licenseKey: string) {
|
||||
const dir = path.resolve(process.cwd(), 'storage/.license');
|
||||
const filePath = path.resolve(dir, 'license-key');
|
||||
fs.writeFileSync(filePath, licenseKey);
|
||||
}
|
||||
|
||||
export async function isLicenseKeyExists() {
|
||||
const dir = path.resolve(process.cwd(), 'storage/.license');
|
||||
const filePath = path.resolve(dir, 'license-key');
|
||||
return fs.existsSync(filePath);
|
||||
}
|
@ -2,7 +2,7 @@
|
||||
"name": "@nocobase/plugin-locale-tester",
|
||||
"displayName": "Locale tester",
|
||||
"displayName.zh-CN": "翻译测试工具",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"homepage": "https://github.com/nocobase/locales",
|
||||
"main": "dist/server/index.js",
|
||||
"peerDependencies": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-localization",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/localization-management",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/localization-management",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "日志",
|
||||
"description": "Server-side logs, mainly including API request logs and system runtime logs, and allows to package and download log files.",
|
||||
"description.zh-CN": "服务端日志,主要包括接口请求日志和系统运行日志,并支持打包和下载日志文件。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/logger",
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "@nocobase/plugin-map",
|
||||
"displayName": "Block: Map",
|
||||
"displayName.zh-CN": "区块:地图",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "Map block, support Gaode map and Google map, you can also extend more map types.",
|
||||
"description.zh-CN": "地图区块,支持高德地图和 Google 地图,你也可以扩展更多地图类型。",
|
||||
"license": "AGPL-3.0",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-mobile-client",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/mobile-client",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/mobile-client",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-mobile",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/mobile",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/mobile",
|
||||
|
@ -2,7 +2,7 @@
|
||||
"name": "@nocobase/plugin-mock-collections",
|
||||
"displayName": "mock-collections",
|
||||
"description": "mock-collections",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"license": "AGPL-3.0",
|
||||
"peerDependencies": {
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "多应用管理器",
|
||||
"description": "Dynamically create multiple apps without separate deployments.",
|
||||
"description.zh-CN": "无需单独部署即可动态创建多个应用。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
"homepage": "https://docs.nocobase.com/handbook/multi-app-manager",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"displayName.zh-CN": "多应用数据表共享",
|
||||
"description": "",
|
||||
"description.zh-CN": "",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"devDependencies": {
|
||||
"@formily/react": "2.x",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-notification-email",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Notification: Email",
|
||||
"displayName.zh-CN": "通知:电子邮件",
|
||||
"description": "Used for sending email notifications with built-in SMTP transport.",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-notification-in-app-message",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"displayName": "Notification: In-app message",
|
||||
"displayName.zh-CN": "通知:站内信",
|
||||
"description": "It supports users in receiving real-time message notifications within the NocoBase application.",
|
||||
|
@ -4,7 +4,7 @@
|
||||
"description": "Provides a unified management service that includes channel configuration, logging, and other features, supporting the configuration of various notification channels, including in-app message and email.",
|
||||
"displayName.zh-CN": "通知管理",
|
||||
"description.zh-CN": "提供统一的管理服务,涵盖渠道配置、日志记录等功能,支持多种通知渠道的配置,包括站内信和电子邮件等。",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"homepage": "https://docs.nocobase.com/handbook/notification-manager",
|
||||
"homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/notification-manager",
|
||||
"main": "dist/server/index.js",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-notifications",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"description": "",
|
||||
"license": "AGPL-3.0",
|
||||
"main": "./dist/server/index.js",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-public-forms",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "dist/server/index.js",
|
||||
"displayName": "Public forms",
|
||||
"displayName.zh-CN": "公开表单",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nocobase/plugin-sample-hello",
|
||||
"version": "1.8.0-alpha.10",
|
||||
"version": "1.8.0-alpha.11",
|
||||
"main": "./dist/server/index.js",
|
||||
"displayName": "Hello",
|
||||
"displayName.zh-CN": "Hello",
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user