chore(version): release v0.21.34 (#1045)

Co-authored-by: sealday <sealday@gmail.com>
Reviewed-on: daoyoucloud/tachybase#1045
This commit is contained in:
sealday 2024-05-24 01:06:06 +08:00
parent 3e42e2ab80
commit ede7ead8b1
2166 changed files with 4314 additions and 3190 deletions

View File

@ -1,7 +1,7 @@
---
"@hera/plugin-rental": patch
"@nocobase/client": patch
"@nocobase/utils": patch
"@tachybase/client": patch
"@tachybase/utils": patch
---
support fuzzy search in cascader

View File

@ -1,6 +1,6 @@
---
"@hera/plugin-core": patch
"@nocobase/client": patch
"@tachybase/client": patch
---
修复自定义组件没有格式化名称

View File

@ -53,7 +53,7 @@ DB_PASSWORD=nocobase
################# STORAGE (Initialization only) #################
INIT_ROOT_EMAIL=admin@nocobase.com
INIT_ROOT_EMAIL=admin@tachybase.com
INIT_ROOT_PASSWORD=admin123
INIT_ROOT_NICKNAME=Super Admin
INIT_ROOT_USERNAME=nocobase

View File

@ -26,7 +26,7 @@ DB_STORAGE=storage/db/nocobase-test.sqlite
################# STORAGE (Initialization only) #################
INIT_ROOT_EMAIL=admin@nocobase.com
INIT_ROOT_EMAIL=admin@tachybase.com
INIT_ROOT_PASSWORD=admin123
INIT_ROOT_NICKNAME=Super Admin
INIT_ROOT_USERNAME=nocobase

View File

@ -7,13 +7,13 @@ module.exports = {
'^react$',
'<BUILTIN_MODULES>', // Node.js built-in modules
'^@tachybase/(.*)$',
'^@nocobase/(.*)$',
'',
'<THIRD_PARTY_MODULES>', // Imports not matched by other special words or groups.
'',
'^[.]', // relative imports
],
importOrderTypeScriptVersion: '5.4.5',
importOrderParserPlugins: ['typescript', 'jsx', 'decorators-legacy'],
overrides: [
{
files: '.prettierrc',

View File

@ -1,6 +1,6 @@
{
"name": "tachybase",
"version": "0.21.33",
"version": "0.21.34",
"private": true,
"license": "Apache-2.0",
"scripts": {

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/acl",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"license": "Apache-2.0",
"main": "./lib/index.js",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/actions",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/app",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"license": "Apache-2.0",
"main": "./lib/index.js",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/auth",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/build",
"version": "0.21.33",
"version": "0.21.34",
"description": "Library build tool based on rollup.",
"license": "Apache-2.0",
"main": "lib/index.js",

View File

@ -124,7 +124,7 @@ const external = [
'china-division',
];
const pluginPrefix = (
process.env.PLUGIN_PACKAGE_PREFIX || '@nocobase/plugin-,@tachybase/preset-,@tachybase/plugin-,@hera/plugin-'
process.env.PLUGIN_PACKAGE_PREFIX || '@tachybase/plugin-,@tachybase/preset-,@hera/plugin-'
).split(',');
const target_dir = 'dist';
@ -306,7 +306,7 @@ export async function buildPluginClient(cwd: string, userConfig: UserConfig, sou
const outDir = path.join(cwd, target_dir, 'client');
const globals = excludePackages.reduce<Record<string, string>>((prev, curr) => {
if (curr.startsWith('@nocobase') || curr.startsWith('@hera') || curr.startsWith('@tachybase')) {
if (curr.startsWith('@tachybase') || curr.startsWith('@hera') || curr.startsWith('@tachybase')) {
prev[`${curr}/client`] = curr;
}
prev[curr] = curr;

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/cache",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"license": "Apache-2.0",
"main": "./lib/index.js",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/cli",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"license": "Apache-2.0",
"type": "module",

View File

@ -322,7 +322,7 @@ export function initEnv() {
SOCKET_PATH: 'storage/gateway.sock',
NODE_MODULES_PATH: resolve(process.cwd(), 'node_modules'),
PM2_HOME: resolve(process.cwd(), './storage/.pm2'),
PLUGIN_PACKAGE_PREFIX: '@nocobase/plugin-,@tachybase/plugin-,@tachybase/preset-,@hera/plugin-',
PLUGIN_PACKAGE_PREFIX: '@tachybase/plugin-,@tachybase/preset-,@hera/plugin-',
SERVER_TSCONFIG_PATH: './tsconfig.server.json',
PLAYWRIGHT_AUTH_FILE: resolve(process.cwd(), 'storage/playwright/.auth/admin.json'),
CACHE_DEFAULT_STORE: 'memory',

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/client",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"module": "es/index.mjs",

View File

@ -1,5 +1,6 @@
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
import { Application } from '../Application';
import { Plugin } from '../Plugin';
@ -64,13 +65,13 @@ describe('PluginManager', () => {
mock.onGet('pm:listEnabled').reply(200, {
data: [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo1.com',
},
{
name: '@nocobase/demo2',
packageName: '@nocobase/demo2',
name: '@tachybase/demo2',
packageName: '@tachybase/demo2',
url: 'https://demo2.com',
},
],

View File

@ -18,7 +18,7 @@ describe('remotePlugins', () => {
class DemoPlugin extends Plugin {}
const plugins = {
'@nocobase/demo': DemoPlugin,
'@tachybase/demo': DemoPlugin,
};
const mockDefine: any = vi.fn();
@ -27,16 +27,16 @@ describe('remotePlugins', () => {
defineDevPlugins(plugins);
expect(mockDefine).toBeCalledTimes(1);
expect(mockDefine).toBeCalledWith('@nocobase/demo/client', expect.any(Function));
expect(mockDefine).toBeCalledWith('@tachybase/demo/client', expect.any(Function));
});
it('should return Plugin', () => {
class DemoPlugin extends Plugin {}
const plugins = {
'@nocobase/demo': DemoPlugin,
'@tachybase/demo': DemoPlugin,
};
const define: any = function (packageName: string, load: any) {
expect(packageName).toEqual('@nocobase/demo/client');
expect(packageName).toEqual('@tachybase/demo/client');
expect(load()).toEqual(DemoPlugin);
};
window.define = define;
@ -50,17 +50,17 @@ describe('remotePlugins', () => {
const mockDefine: any = vi.fn();
window.define = mockDefine;
definePluginClient('@nocobase/demo');
definePluginClient('@tachybase/demo');
expect(mockDefine).toBeCalledTimes(1);
expect(mockDefine).toBeCalledWith('@nocobase/demo/client', ['exports', '@nocobase/demo'], expect.any(Function));
expect(mockDefine).toBeCalledWith('@tachybase/demo/client', ['exports', '@tachybase/demo'], expect.any(Function));
});
it('should proxy', () => {
const mockDefine: any = vi.fn();
window.define = mockDefine;
definePluginClient('@nocobase/demo');
definePluginClient('@tachybase/demo');
const exports: any = {
a: 'a',
@ -86,7 +86,7 @@ describe('remotePlugins', () => {
};
const pluginData: any = [
{
packageName: '@nocobase/demo',
packageName: '@tachybase/demo',
url: 'https://demo.com',
},
];
@ -96,7 +96,7 @@ describe('remotePlugins', () => {
expect(requirejs.requirejs.config).toBeCalledWith({
waitSeconds: 120,
paths: {
'@nocobase/demo': 'https://demo.com',
'@tachybase/demo': 'https://demo.com',
},
});
});
@ -105,8 +105,8 @@ describe('remotePlugins', () => {
it('should resolve', () => {
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo.com',
},
];
@ -121,14 +121,14 @@ describe('remotePlugins', () => {
process(...pluginModules);
expect(resolve).toBeCalledTimes(1);
expect(resolve).toBeCalledWith([['@nocobase/demo', 'default']]);
expect(resolve).toBeCalledWith([['@tachybase/demo', 'default']]);
});
it('should filter', () => {
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo.com',
},
];
@ -157,15 +157,15 @@ describe('remotePlugins', () => {
requirejs.requirejs.requirejs = vi.fn();
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo.com',
},
];
const mockDefine: any = vi.fn();
window.define = mockDefine;
const plugins = await getRemotePlugins(requirejs, pluginData);
expect(plugins).toEqual([['@nocobase/demo', 'default']]);
expect(plugins).toEqual([['@tachybase/demo', 'default']]);
});
});
@ -185,13 +185,13 @@ describe('remotePlugins', () => {
requirejs.requirejs.requirejs = vi.fn();
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo1.com',
},
{
name: '@nocobase/demo2',
packageName: '@nocobase/demo2',
name: '@tachybase/demo2',
packageName: '@tachybase/demo2',
url: 'https://demo2.com',
},
];
@ -200,16 +200,16 @@ describe('remotePlugins', () => {
const plugins = await getPlugins({ requirejs, pluginData });
expect(plugins).toEqual([
['@nocobase/demo', 'default'],
['@nocobase/demo2', 'default'],
['@tachybase/demo', 'default'],
['@tachybase/demo2', 'default'],
]);
expect(remoteFn).toBeCalledTimes(1);
expect(mockDefine).toBeCalledTimes(2);
expect(requirejs.requirejs.config).toBeCalledWith({
waitSeconds: 120,
paths: {
'@nocobase/demo': 'https://demo1.com',
'@nocobase/demo2': 'https://demo2.com',
'@tachybase/demo': 'https://demo1.com',
'@tachybase/demo2': 'https://demo2.com',
},
});
});
@ -229,13 +229,13 @@ describe('remotePlugins', () => {
requirejs.requirejs.requirejs = vi.fn();
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo1.com',
},
{
name: '@nocobase/demo2',
packageName: '@nocobase/demo2',
name: '@tachybase/demo2',
packageName: '@tachybase/demo2',
url: 'https://demo2.com',
},
];
@ -250,8 +250,8 @@ describe('remotePlugins', () => {
}) as any,
});
expect(plugins).toEqual([
['@nocobase/demo', 'default'],
['@nocobase/demo2', 'default'],
['@tachybase/demo', 'default'],
['@tachybase/demo2', 'default'],
]);
expect(remoteFn).toBeCalledTimes(0);
expect(mockDefine).toBeCalledTimes(2);
@ -273,13 +273,13 @@ describe('remotePlugins', () => {
requirejs.requirejs.requirejs = vi.fn();
const pluginData: any = [
{
name: '@nocobase/demo',
packageName: '@nocobase/demo',
name: '@tachybase/demo',
packageName: '@tachybase/demo',
url: 'https://demo1.com',
},
{
name: '@nocobase/demo2',
packageName: '@nocobase/demo2',
name: '@tachybase/demo2',
packageName: '@tachybase/demo2',
url: 'https://demo2.com',
},
];
@ -290,22 +290,22 @@ describe('remotePlugins', () => {
requirejs,
pluginData,
devDynamicImport: ((packageName) => {
if (packageName === '@nocobase/demo') {
if (packageName === '@tachybase/demo') {
return Promise.resolve({ default: 'default' });
}
return Promise.resolve(null);
}) as any,
});
expect(plugins).toEqual([
['@nocobase/demo', 'default'],
['@nocobase/demo2', 'default'],
['@tachybase/demo', 'default'],
['@tachybase/demo2', 'default'],
]);
expect(remoteFn).toBeCalled();
expect(mockDefine).toBeCalledTimes(2);
expect(requirejs.requirejs.config).toBeCalledWith({
waitSeconds: 120,
paths: {
'@nocobase/demo2': 'https://demo2.com',
'@tachybase/demo2': 'https://demo2.com',
},
});
});

View File

@ -1,4 +1,5 @@
import { SchemaKey } from '@tachybase/schema';
import { filter } from 'lodash';
import type { CollectionManager } from './CollectionManager';
@ -21,7 +22,7 @@ export interface CollectionOptions {
title?: string;
dataSource?: string;
/**
* Used for @nocobase/plugin-duplicator
* Used for @tachybase/plugin-duplicator
* @see packages/core/database/src/collection-group-manager.tss
*
* @prop {'required' | 'optional' | 'skip'} dumpable - Determine whether the collection is dumped

View File

@ -21,7 +21,7 @@ test.describe.skip('add plugin in front', () => {
await page
.getByLabel('block-item-Input-Npm package name')
.getByRole('textbox')
.fill('@nocobase/plugin-sample-custom-collection-template');
.fill('@tachybase/plugin-sample-custom-collection-template');
await page.getByLabel('Submit').click();
// wait for the page to finish refreshing
await page.waitForFunction(() => {
@ -72,7 +72,7 @@ test.describe.skip('remove plugin', () => {
await page
.getByLabel('block-item-Input-Npm package name')
.getByRole('textbox')
.fill('@nocobase/plugin-sample-hello');
.fill('@tachybase/plugin-sample-hello');
await page.getByLabel('Submit').click();
// wait for the modal to disappear and the page to finish refreshing
await page.waitForFunction(() => {

View File

@ -275,7 +275,7 @@ interface SchemaSettingsManager {
- 示例
```ts | pure
import { Plugin } from '@nocobase/plugin'
import { Plugin } from '@tachybase/plugin'
class MyPlugin extends Plugin {
load() {
const allSchemaSettings = this.app.schemaSettingsManager.getAll();
@ -302,7 +302,7 @@ name 为 `new SchemaSettings(options)` 中的 name。
- 示例
```ts | pure
import { Plugin } from '@nocobase/plugin'
import { Plugin } from '@tachybase/plugin'
class MyPlugin extends Plugin {
load() {
const mySchemaSettings = this.app.schemaSettingsManager.get('MySchemaSettings');
@ -329,7 +329,7 @@ name 为 `new SchemaSettings(options)` 中的 name。
- 示例
```ts | pure
import { Plugin } from '@nocobase/plugin'
import { Plugin } from '@tachybase/plugin'
class MyPlugin extends Plugin {
load() {
this.app.schemaSettingsManager.remove('MySchemaSettings');
@ -352,7 +352,7 @@ interface SchemaSettingsManager {
- 示例
```ts | pure
import { Plugin } from '@nocobase/plugin'
import { Plugin } from '@tachybase/plugin'
const mySchemaSettings = new SchemaSettings({
name: 'MySchemaSettings',
@ -381,7 +381,7 @@ interface SchemaSettingsManager {
- 示例
```ts | pure
import { Plugin } from '@nocobase/plugin'
import { Plugin } from '@tachybase/plugin'
class MyPlugin extends Plugin {
load() {

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/components",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"types": "lib/index.d.ts",

View File

@ -1,6 +1,6 @@
{
"name": "create-tachybase-app",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "src/index.js",
"bin": {

View File

@ -34,7 +34,7 @@ DB_TABLE_PREFIX=
################# STORAGE (Initialization only) #################
INIT_ROOT_EMAIL=admin@nocobase.com
INIT_ROOT_EMAIL=admin@tachybase.com
INIT_ROOT_PASSWORD=admin123
INIT_ROOT_NICKNAME=Super Admin
INIT_ROOT_USERNAME=nocobase

View File

@ -16,7 +16,7 @@ DB_STORAGE=storage/db/nocobase-test.sqlite
# DB_PASSWORD=nocobase
# DB_LOGGING=on
INIT_ROOT_EMAIL=admin@nocobase.com
INIT_ROOT_EMAIL=admin@tachybase.com
INIT_ROOT_PASSWORD=admin123
INIT_ROOT_NICKNAME=Super Admin
INIT_ROOT_USERNAME=nocobase

View File

@ -11,7 +11,7 @@ DB_LOGGING=off
DB_DIALECT={{{env.DB_DIALECT}}}
{{{envs}}}
INIT_ROOT_EMAIL=admin@nocobase.com
INIT_ROOT_EMAIL=admin@tachybase.com
INIT_ROOT_PASSWORD=admin123
INIT_ROOT_NICKNAME=Super Admin
INIT_ROOT_USERNAME=nocobase

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/data-source-manager",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/database",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"license": "Apache-2.0",
"main": "./lib/index.js",

View File

@ -1,6 +1,7 @@
import { Database, mockDatabase } from '../../index';
import { waitSecond } from '@tachybase/test';
import { Database, mockDatabase } from '../../index';
describe('unique index', () => {
let db: Database;
@ -35,7 +36,7 @@ describe('unique index', () => {
await User.repository.create({
values: {
userName: 'test',
userEmail: 'test@nocobase.com',
userEmail: 'test@tachybase.com',
},
});
}).not.toThrow();
@ -45,7 +46,7 @@ describe('unique index', () => {
await User.repository.create({
values: {
userName: 'test',
userEmail: 'test123@nocobase.com',
userEmail: 'test123@tachybase.com',
},
});
}).not.toThrow();
@ -56,7 +57,7 @@ describe('unique index', () => {
User.repository.create({
values: {
userName: 'test',
userEmail: 'test@nocobase.com',
userEmail: 'test@tachybase.com',
},
}),
).rejects.toThrow();

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/devtools",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -114,7 +114,7 @@ function getNodeModulesPath(packageDir) {
return path.join(node_modules_dir, packageDir);
}
class IndexGenerator {
nocobaseDir = getNodeModulesPath('@nocobase');
nocobaseDir = getNodeModulesPath('@tachybase');
constructor(outputPath, pluginsPath) {
this.outputPath = outputPath;

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/evaluators",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/logger",
"version": "0.21.33",
"version": "0.21.34",
"description": "nocobase logging library",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/resourcer",
"version": "0.21.33",
"version": "0.21.34",
"description": "",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/schema",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"types": "lib/index.d.ts",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/sdk",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"types": "lib/index.d.ts",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/server",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"types": "./lib/index.d.ts",

View File

@ -1,4 +1,5 @@
import Application from '../application';
import consoleCommand from './console';
import createMigration from './create-migration';
import dbAuth from './db-auth';
import dbClean from './db-clean';
@ -11,7 +12,7 @@ import restart from './restart';
import start from './start';
import stop from './stop';
import upgrade from './upgrade';
import consoleCommand from './console';
export function registerCli(app: Application) {
consoleCommand(app);
dbAuth(app);
@ -28,7 +29,7 @@ export function registerCli(app: Application) {
start(app);
refresh(app);
// development only with @nocobase/cli
// development only with @tachybase/cli
app.command('build').argument('[packages...]');
app.command('clean');
app.command('dev').usage('[options]').option('-p, --port [port]').option('--client').option('--server');

View File

@ -1,18 +1,20 @@
import { SystemLogger, createSystemLogger, getLoggerFilePath } from '@tachybase/logger';
import { Registry, Toposort, ToposortOptions, uid } from '@tachybase/utils';
import { createStoragePluginsSymlink } from '@tachybase/utils/plugin-symlink';
import { Command } from 'commander';
import compression from 'compression';
import { randomUUID } from 'crypto';
import { EventEmitter } from 'events';
import fs from 'fs';
import http, { IncomingMessage, ServerResponse } from 'http';
import compose from 'koa-compose';
import { promisify } from 'node:util';
import { resolve } from 'path';
import { parse } from 'url';
import { createSystemLogger, getLoggerFilePath, SystemLogger } from '@tachybase/logger';
import { Registry, Toposort, ToposortOptions, uid } from '@tachybase/utils';
import { createStoragePluginsSymlink } from '@tachybase/utils/plugin-symlink';
import { Command } from 'commander';
import compression from 'compression';
import compose from 'koa-compose';
import qs from 'qs';
import handler from 'serve-handler';
import { parse } from 'url';
import { AppSupervisor } from '../app-supervisor';
import { ApplicationOptions } from '../application';
import { getPackageDirByExposeUrl, getPackageNameByExposeUrl } from '../plugin-manager';
@ -185,14 +187,14 @@ export class Gateway extends EventEmitter {
});
}
// pathname example: /static/plugins/@nocobase/plugins-acl/README.md
// pathname example: /static/plugins/@tachybase/plugins-acl/README.md
// protect server files
if (pathname.startsWith(PLUGIN_STATICS_PATH) && !pathname.includes('/server/')) {
await compress(req, res);
const packageName = getPackageNameByExposeUrl(pathname);
// /static/plugins/@nocobase/plugins-acl/README.md => /User/projects/nocobase/plugins/acl
// /static/plugins/@tachybase/plugins-acl/README.md => /User/projects/nocobase/plugins/acl
const publicDir = getPackageDirByExposeUrl(pathname);
// /static/plugins/@nocobase/plugins-acl/README.md => README.md
// /static/plugins/@tachybase/plugins-acl/README.md => README.md
const destination = pathname.replace(PLUGIN_STATICS_PATH, '').replace(packageName, '');
return handler(req, res, {
public: publicDir,

View File

@ -91,8 +91,8 @@ export class Locale {
const res = getResource(packageName, lang);
if (res) {
resources[packageName] = { ...res };
if (packageName.includes('@nocobase/plugin-')) {
resources[packageName.substring('@nocobase/plugin-'.length)] = { ...res };
if (packageName.includes('@tachybase/plugin-')) {
resources[packageName.substring('@tachybase/plugin-'.length)] = { ...res };
}
}
} catch (err) {

View File

@ -14,7 +14,7 @@ export const getResource = (packageName: string, lang: string, isPlugin = true)
if (process.env.APP_ENV !== 'production') {
try {
require.resolve('@tachybase/client/src');
if (packageName === '@nocobase/plugin-client') {
if (packageName === '@tachybase/plugin-client') {
packageName = '@tachybase/client';
}
} catch (error) {

View File

@ -79,7 +79,7 @@ export function getExposeChangelogUrl(packageName: string) {
*
* @example
* getPluginNameByClientStaticUrl('/static/plugins/dayjs/index.js') => 'dayjs'
* getPluginNameByClientStaticUrl('/static/plugins/@nocobase/foo/README.md') => '@nocobase/foo'
* getPluginNameByClientStaticUrl('/static/plugins/@tachybase/foo/README.md') => '@tachybase/foo'
*/
export function getPackageNameByExposeUrl(pathname: string) {
pathname = pathname.replace(process.env.PLUGIN_STATICS_PATH, '');

View File

@ -2,7 +2,7 @@ export const APP_NAME = 'tachybase';
export const DEFAULT_PLUGIN_STORAGE_PATH = 'storage/plugins';
export const DEFAULT_PLUGIN_PATH = 'packages/plugins/';
export const pluginPrefix = (
process.env.PLUGIN_PACKAGE_PREFIX || '@nocobase/plugin-,@tachybase/preset-,@tachybase/plugin-,@hera/plugin-'
process.env.PLUGIN_PACKAGE_PREFIX || '@tachybase/plugin-,@tachybase/preset-,@hera/plugin-'
).split(',');
export const requireRegex = /require\s*\(['"`](.*?)['"`]\)/g;
export const importRegex = /^import(?:['"\s]*([\w*${}\s,]+)from\s*)?['"\s]['"\s](.*[@\w_-]+)['"\s].*/gm;

View File

@ -2,7 +2,7 @@
import { version } from '../../package.json';
const deps: Record<string, string> = {
'@nocobase': `${version.split('.').slice(0, 2).join('.')}.x`, // 0.12.x
'@tachybase': `${version.split('.').slice(0, 2).join('.')}.x`, // 0.12.x
'@formily': '2.x',
jsonwebtoken: '8.x',

View File

@ -1,12 +1,14 @@
import fs from 'fs';
import net from 'net';
import { basename, dirname, join, resolve, sep } from 'path';
import { CleanOptions, Collection, SyncOptions } from '@tachybase/database';
import { Container, importModule, isURL } from '@tachybase/utils';
import { fsExists } from '@tachybase/utils/plugin-symlink';
import execa from 'execa';
import fg from 'fast-glob';
import fs from 'fs';
import _ from 'lodash';
import net from 'net';
import { basename, dirname, join, resolve, sep } from 'path';
import Application from '../application';
import { createAppProxy, tsxRerunning } from '../helper';
import { Plugin } from '../plugin';
@ -135,9 +137,7 @@ export class PluginManager {
* @internal
*/
static getPluginPkgPrefix() {
return (
process.env.PLUGIN_PACKAGE_PREFIX || '@nocobase/plugin-,@tachybase/preset-,@tachybase/plugin-,@hera/plugin-'
).split(',');
return (process.env.PLUGIN_PACKAGE_PREFIX || '@tachybase/plugin-,@tachybase/preset-,@hera/plugin-').split(',');
}
/**
@ -712,7 +712,7 @@ export class PluginManager {
options['name'] = model?.name;
}
if (!options.name) {
options['name'] = urlOrName.replace('@nocobase/plugin-', '');
options['name'] = urlOrName.replace('@tachybase/plugin-', '');
}
}
await this.addByNpm({

View File

@ -1,14 +1,16 @@
import { builtinModules } from 'module';
import os from 'os';
import path from 'path';
import { importModule, isURL } from '@tachybase/utils';
import { createStoragePluginSymLink } from '@tachybase/utils/plugin-symlink';
import axios, { AxiosRequestConfig } from 'axios';
import decompress from 'decompress';
import fg from 'fast-glob';
import fs from 'fs-extra';
import ini from 'ini';
import { builtinModules } from 'module';
import os from 'os';
import path from 'path';
import semver from 'semver';
import { getDepPkgPath, getPackageDir, getPackageFilePathWithExistCheck } from './clientStaticUtils';
import {
APP_NAME,
@ -265,7 +267,7 @@ export async function getPluginInfoByNpm(options: GetPluginInfoOptions) {
* scan `src/server` directory to get server packages
*
* @example
* getServerPackages('src/server') => ['dayjs', '@nocobase/plugin-bbb']
* getServerPackages('src/server') => ['dayjs', '@tachybase/plugin-bbb']
*/
export function getServerPackages(packageDir: string) {
function isBuiltinModule(packageName: string) {
@ -520,7 +522,7 @@ export async function getCompatible(packageName: string) {
const packageVersion = externalVersion[packageName];
const globalPackageName = deps[packageName]
? packageName
: deps[packageName.split('/')[0]] // @nocobase and @formily
: deps[packageName.split('/')[0]] // @tachybase and @formily
? packageName.split('/')[0]
: undefined;

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/telemetry",
"version": "0.21.33",
"version": "0.21.34",
"description": "nocobase telemetry library",
"repository": {
"type": "git",

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/test",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"exports": {
".": {

View File

@ -4,7 +4,7 @@ import { expect, test as setup } from '@playwright/test';
setup('admin', async ({ page }) => {
await page.goto('/');
await page.getByPlaceholder('Username/Email').click();
await page.getByPlaceholder('Username/Email').fill('admin@nocobase.com');
await page.getByPlaceholder('Username/Email').fill('admin@tachybase.com');
await page.getByPlaceholder('Password').click();
await page.getByPlaceholder('Password').fill('admin123');
await page.getByRole('button', { name: 'Sign in' }).click();

View File

@ -1,6 +1,6 @@
{
"name": "@tachybase/utils",
"version": "0.21.33",
"version": "0.21.34",
"license": "Apache-2.0",
"main": "lib/index.js",
"types": "./lib/index.d.ts",

View File

@ -1,6 +1,6 @@
{
"name": "@hera/plugin-approval-mobile",
"version": "0.0.18",
"version": "0.0.19",
"main": "dist/server/index.js",
"devDependencies": {
"@ant-design/icons": "5.x",

View File

@ -1,7 +1,7 @@
{
"name": "@hera/plugin-approval",
"displayName": "Workflow: Approval Center",
"version": "0.1.27",
"version": "0.1.28",
"description": "Can configure a universal approval process to complete the complete approval process in the approval center.",
"keywords": [
"Workflow"
@ -9,11 +9,11 @@
"main": "dist/server/index.js",
"devDependencies": {
"@ant-design/icons": "5.x",
"@nocobase/plugin-ui-schema-storage": "workspace:*",
"@tachybase/actions": "workspace:*",
"@tachybase/components": "workspace:*",
"@tachybase/data-source-manager": "workspace:*",
"@tachybase/database": "workspace:*",
"@tachybase/plugin-ui-schema-storage": "workspace:*",
"@tachybase/schema": "workspace:*",
"@tachybase/utils": "workspace:*",
"@types/lodash": "4.17.0",

View File

@ -1,6 +1,6 @@
import { UiSchemaRepository } from '@tachybase/plugin-ui-schema-storage';
import { Instruction, JOB_STATUS } from '@tachybase/plugin-workflow';
import { uid } from '@tachybase/utils';
import { UiSchemaRepository } from '@nocobase/plugin-ui-schema-storage';
import { APPROVAL_ACTION_STATUS, APPROVAL_STATUS } from './constants';

View File

@ -1,7 +1,7 @@
import { parseCollectionName } from '@tachybase/data-source-manager';
import { modelAssociationByKey } from '@tachybase/database';
import { UiSchemaRepository } from '@tachybase/plugin-ui-schema-storage';
import { EXECUTION_STATUS, JOB_STATUS, toJSON, Trigger } from '@tachybase/plugin-workflow';
import { UiSchemaRepository } from '@nocobase/plugin-ui-schema-storage';
import { get } from 'lodash';
import { BelongsTo, HasOne, Op } from 'sequelize';

View File

@ -1,7 +1,7 @@
{
"name": "@hera/plugin-audit-logs",
"displayName": "Audit logs",
"version": "1.0.36",
"version": "1.0.37",
"description": "Audit logs.",
"keywords": [
"System management"

View File

@ -1,7 +1,7 @@
{
"name": "@hera/plugin-core",
"displayName": "Hera platform",
"version": "1.7.37",
"version": "1.7.38",
"description": "Hera platform",
"keywords": [
"System management"
@ -44,12 +44,12 @@
"ws": "^8.13.0"
},
"peerDependencies": {
"@nocobase/plugin-acl": "workspace:*",
"@tachybase/actions": "workspace:*",
"@tachybase/client": "workspace:*",
"@tachybase/data-source-manager": "workspace:*",
"@tachybase/database": "workspace:*",
"@tachybase/evaluators": "workspace:*",
"@tachybase/plugin-acl": "workspace:*",
"@tachybase/plugin-workflow": "workspace:*",
"@tachybase/schema": "workspace:*",
"@tachybase/server": "workspace:*",

View File

@ -34,7 +34,7 @@ import {
useRequest,
useResourceActionContext,
} from '@tachybase/client';
import PluginACLClient, { RolesManagerContext } from '@nocobase/plugin-acl/client';
import PluginACLClient, { RolesManagerContext } from '@tachybase/plugin-acl/client';
import { connect, mapReadPretty, uid, useField, useFieldSchema, useForm } from '@tachybase/schema';
import {
App,

View File

@ -1,8 +1,7 @@
import PluginErrorHandler from '@nocobase/plugin-error-handler';
import { Trigger, EXECUTION_STATUS } from '@tachybase/plugin-workflow';
import { joinCollectionName } from '@tachybase/data-source-manager';
import type { Context, Next } from '@tachybase/actions';
import PluginWorkflow from '@tachybase/plugin-workflow';
import { joinCollectionName } from '@tachybase/data-source-manager';
import PluginErrorHandler from '@tachybase/plugin-error-handler';
import PluginWorkflow, { EXECUTION_STATUS, Trigger } from '@tachybase/plugin-workflow';
class RequestInterceptionError extends Error {
status = 400;

View File

@ -1,6 +1,7 @@
import type { CollectionRepository } from '@nocobase/plugin-collection-manager';
import { Plugin } from '@tachybase/server';
import { resolve } from 'path';
import type { CollectionRepository } from '@tachybase/plugin-collection-manager';
import { Plugin } from '@tachybase/server';
import {
aggregateSearch,
listExcludeDept,

View File

@ -1,6 +1,6 @@
{
"name": "@hera/plugin-homepage",
"version": "0.0.6",
"version": "0.0.7",
"main": "dist/server/index.js",
"dependencies": {},
"devDependencies": {

View File

@ -1,7 +1,7 @@
{
"name": "@hera/plugin-rental",
"displayName": "professional construction materials rental system - customized based on hera",
"version": "1.7.49",
"version": "1.7.50",
"description": "Offering a standardized leasing management system, encompassing comprehensive administration from materials to contracts to labor personnel, while providing a robust financial management mechanism, and real-time monitoring of the operational capacity of the leasing system.",
"keywords": [
"System management"
@ -26,12 +26,12 @@
},
"peerDependencies": {
"@hera/plugin-core": "workspace:*",
"@nocobase/plugin-collection-manager": "workspace:*",
"@nocobase/plugin-data-visualization": "workspace:*",
"@tachybase/actions": "workspace:*",
"@tachybase/cache": "workspace:*",
"@tachybase/client": "workspace:*",
"@tachybase/database": "workspace:*",
"@tachybase/plugin-collection-manager": "workspace:*",
"@tachybase/plugin-data-visualization": "workspace:*",
"@tachybase/server": "workspace:*",
"@tachybase/test": "workspace:*",
"@tachybase/utils": "workspace:*"

View File

@ -1,6 +1,7 @@
import { useForm } from '@tachybase/schema';
import { useAPIClient, useBlockRequestContext, useRequest } from '@tachybase/client';
import { useChartFilter } from '@nocobase/plugin-data-visualization/client';
import { useChartFilter } from '@tachybase/plugin-data-visualization/client';
import { useForm } from '@tachybase/schema';
import { message } from 'antd';
import { useNavigate } from 'react-router-dom';

View File

@ -1,15 +1,17 @@
import { Context } from '@tachybase/actions';
import { QueryTypes } from 'sequelize';
import { RecordPdfService } from '../services/record-pdf-service';
import { SystemSettingService, SqlLoader } from '@hera/plugin-core';
import { Action, Controller, Inject } from '@tachybase/utils';
import { Movement } from '../../utils/constants';
import _ from 'lodash';
import { FilterParser, Repository } from '@tachybase/database';
import { CollectionRepository } from '@nocobase/plugin-collection-manager';
import { Cache } from '@tachybase/cache';
import getStream from 'get-stream';
import { FilterParser, Repository } from '@tachybase/database';
import { CollectionRepository } from '@tachybase/plugin-collection-manager';
import { Action, Controller, Inject } from '@tachybase/utils';
import { SqlLoader, SystemSettingService } from '@hera/plugin-core';
import { stringify } from 'flatted';
import getStream from 'get-stream';
import _ from 'lodash';
import { QueryTypes } from 'sequelize';
import { Movement } from '../../utils/constants';
import { RecordPdfService } from '../services/record-pdf-service';
@Controller('records')
export class RecordPreviewController {
@ -239,6 +241,7 @@ export class RecordPreviewController {
if (Buffer.isBuffer(result)) {
ctx.body = result;
} else {
// @ts-ignore
ctx.body = Buffer.from(result.data);
}
} else {

View File

@ -1,17 +1,22 @@
import path from 'path';
import { Plugin } from '@tachybase/server';
import { RecordService } from './services/record-service';
import { Container } from '@tachybase/utils';
import { ContractRuleService } from './services/contract-rule-service';
import { ContractService } from './services/contract-service';
import { ProjectService } from './services/project-service';
import { Container } from '@tachybase/utils';
import { RecordService } from './services/record-service';
import './actions';
import { SqlLoader } from '@hera/plugin-core';
import { DetailCheckService } from './services/detail-check-service';
import { CollectionRepository } from '@nocobase/plugin-collection-manager';
import { Repository } from '@tachybase/database';
import { VehiclesService } from './services/vehicles-service';
import { Cache } from '@tachybase/cache';
import { Repository } from '@tachybase/database';
import { CollectionRepository } from '@tachybase/plugin-collection-manager';
import { SqlLoader } from '@hera/plugin-core';
import { DetailCheckService } from './services/detail-check-service';
import { VehiclesService } from './services/vehicles-service';
export class PluginRentalServer extends Plugin {
cache: Cache;

View File

@ -1,7 +1,7 @@
{
"name": "@hera/plugin-sancongtou",
"displayName": "Mobile client: Sancongtou Customization",
"version": "0.0.11",
"version": "0.0.12",
"description": "Provide mobile client customization for the sancongtou project.",
"main": "dist/server/index.js",
"dependencies": {

View File

@ -1 +0,0 @@
# @nocobase/plugin-action-bulk-edit

View File

@ -1 +0,0 @@
# @nocobase/plugin-action-bulk-update

View File

@ -1 +0,0 @@
# @nocobase/plugin-action-duplicate

View File

@ -1 +0,0 @@
# @nocobase/plugin-action-print

View File

@ -1 +0,0 @@
export const NAMESPACE = '@nocobase/plugin-api-keys';

View File

@ -1 +0,0 @@
# @nocobase/plugin-data-source-manager

View File

@ -1 +0,0 @@
# @nocobase/plugin-gantt

View File

@ -1 +0,0 @@
# @nocobase/plugin-kanban

View File

@ -1 +0,0 @@
# @nocobase/plugin-logger

View File

@ -1,175 +0,0 @@
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- 创建 users 表
CREATE TABLE users (
user_uuid UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
username VARCHAR(100) NOT NULL
);
-- 创建 profiles 表
CREATE TABLE profiles (
profile_uuid UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
address VARCHAR(255),
user_uuid UUID REFERENCES users(user_uuid)
);
-- 创建 roles 表
CREATE TABLE roles (
role_uuid UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
role_name VARCHAR(100) NOT NULL
);
-- 创建 user_roles 关联表
CREATE TABLE user_roles (
user_uuid UUID REFERENCES users(user_uuid),
role_uuid UUID REFERENCES roles(role_uuid),
PRIMARY KEY (user_uuid, role_uuid)
);
-- 创建 orders 表
CREATE TABLE orders (
order_uuid UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
user_uuid UUID REFERENCES users(user_uuid),
order_name VARCHAR(255) NOT NULL
-- ... 其他字段
);
-- 向 users 表插入测试数据
INSERT INTO users (username) VALUES
('Alice'),
('Bob');
INSERT INTO orders (user_uuid, order_name) VALUES
((SELECT user_uuid FROM users WHERE username = 'Alice'), 'Order1'),
((SELECT user_uuid FROM users WHERE username = 'Bob'), 'Order2');
-- 向 profiles 表插入测试数据
INSERT INTO profiles (address, user_uuid) VALUES
('123 Main St', (SELECT user_uuid FROM users WHERE username = 'Alice')),
('456 High St', (SELECT user_uuid FROM users WHERE username = 'Bob'));
-- 向 roles 表插入测试数据
INSERT INTO roles (role_name) VALUES
('Admin'),
('User');
-- 建立 users 和 roles 之间的关系
INSERT INTO user_roles (user_uuid, role_uuid) VALUES
((SELECT user_uuid FROM users WHERE username = 'Alice'), (SELECT role_uuid FROM roles WHERE role_name = 'Admin')),
((SELECT user_uuid FROM users WHERE username = 'Bob'), (SELECT role_uuid FROM roles WHERE role_name = 'User'));
CREATE TABLE "test_table" (
"id2" SERIAL PRIMARY KEY,
"smallint" int2,
"integer" int4,
"bigint" int8,
"boolean" bool,
"numeric" numeric,
"real" float4,
"double" float8,
"money" money,
"date" date,
"time" time,
"timestamp" timestamp,
"timestamptz" timestamptz,
"interval" interval,
"char" bpchar,
"varchar" varchar,
"text" text,
"tsquery" tsquery,
"tsvector" tsvector,
"uuid" uuid,
"xml" xml,
"json" json,
"jsonb" jsonb,
"bit" bit,
"bitvarying" varbit,
"bytea" bytea,
"cidr" cidr,
"inet" inet,
"macaddr" macaddr,
"txidsnapshot" txid_snapshot,
"box" box,
"circle" circle,
"line" line,
"lseg" lseg,
"path" path,
"point" point,
"polygon" polygon
);
-- 创建 authors 表
CREATE TABLE authors (
author_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
author_name VARCHAR(100) NOT NULL
);
-- 创建 posts 表
CREATE TABLE posts (
post_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
post_title VARCHAR(100) NOT NULL,
post_content TEXT NOT NULL,
author_id UUID REFERENCES authors(author_id)
);
-- 创建 comments 表
CREATE TABLE comments (
comment_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
comment_content TEXT NOT NULL,
post_id UUID REFERENCES posts(post_id),
author_id UUID REFERENCES authors(author_id)
);
-- 创建 tags 表
CREATE TABLE tags (
tag_id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
tag_name VARCHAR(100) NOT NULL
);
-- 创建 post_tags 关联表
CREATE TABLE post_tags (
post_id UUID REFERENCES posts(post_id),
tag_id UUID REFERENCES tags(tag_id),
PRIMARY KEY (post_id, tag_id)
);
-- 向 authors 表插入测试数据
INSERT INTO authors (author_name) VALUES
('Author1'),
('Author2');
-- 向 posts 表插入测试数据
INSERT INTO posts (post_title, post_content, author_id) VALUES
('Post1', 'This is the content of Post1', (SELECT author_id FROM authors WHERE author_name = 'Author1')),
('Post2', 'This is the content of Post2', (SELECT author_id FROM authors WHERE author_name = 'Author2'));
-- 向 comments 表插入测试数据
INSERT INTO comments (comment_content, post_id, author_id) VALUES
('This is a comment on Post1', (SELECT post_id FROM posts WHERE post_title = 'Post1'), (SELECT author_id FROM authors WHERE author_name = 'Author1')),
('This is a comment on Post2', (SELECT post_id FROM posts WHERE post_title = 'Post2'), (SELECT author_id FROM authors WHERE author_name = 'Author2'));
-- 向 tags 表插入测试数据
INSERT INTO tags (tag_name) VALUES
('Tag1'),
('Tag2');
-- 建立 posts 和 tags 之间的关系
INSERT INTO post_tags (post_id, tag_id) VALUES
((SELECT post_id FROM posts WHERE post_title = 'Post1'), (SELECT tag_id FROM tags WHERE tag_name = 'Tag1')),
((SELECT post_id FROM posts WHERE post_title = 'Post2'), (SELECT tag_id FROM tags WHERE tag_name = 'Tag2'));
-- 创建无主键的表 test_table_no_pk
CREATE TABLE test_table_no_pk (
column1 VARCHAR(100),
column2 INT
);
-- 向 test_table_no_pk 表插入测试数据
INSERT INTO test_table_no_pk (column1, column2) VALUES
('TestData1', 1),
('TestData2', 2);

View File

@ -1,60 +0,0 @@
import * as React from 'react';
function Brush(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 14 18',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Brush-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
fillOpacity: 0.649999976,
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Brush-\u4E3B\u9898\u7F16\u8F91\u5668---\u591A\u4E3B\u9898',
transform: 'translate(-17.000000, -121.000000)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Brush-brush',
transform: 'translate(14.000000, 120.000000)',
},
/*#__PURE__*/ React.createElement('path', {
d:
'M8.20652175,3.2826087 L8.20652175,4.10326086 C8.20652175,4.55649455 7.83910325,4.92391304 7.38586957,4.92391304 C6.93263588,4.92391304 6.56521738,4.55649455 6.56521738,4.10326086 L6.56521738,3.2826087 L4.92391304,3.2826087 L4.92391304,8.20652175 L14.7717391,8.20652175 L14.7717391,3.2826087 L13.1304348,3.2826087 L13.1304348,5.74456522 C13.1304348,6.19779891 12.7630163,6.5652174 12.3097826,6.5652174 C11.8565489,6.5652174 11.4891304,6.19779891 11.4891304,5.74456522 L11.4891304,3.2826087 L8.20652175,3.2826087 Z M4.92391304,9.84782609 L4.92391304,11.4891304 L7.72233695,11.4891304 C8.08431263,11.4890155 8.42799204,11.6482243 8.66197039,11.9244136 C8.89594874,12.2006029 8.99650752,12.5657753 8.93690217,12.9228098 L8.60043479,14.9399728 C8.51784643,15.435105 8.73592476,15.9322123 9.15616576,16.2067558 C9.57640676,16.4812994 10.1192454,16.4812994 10.5394864,16.2067558 C10.9597274,15.9322123 11.1778057,15.435105 11.0952174,14.9399728 L10.75875,12.9228098 C10.6991446,12.5657753 10.7997034,12.2006029 11.0336818,11.9244136 C11.2676601,11.6482243 11.6113395,11.4890155 11.9733152,11.4891304 L14.7717391,11.4891304 L14.7717391,9.84782609 L4.92391304,9.84782609 Z M12.7143641,14.6699783 C12.9035912,15.807501 12.4022968,16.9492894 11.4368082,17.5798421 C10.4713197,18.2103948 9.2243325,18.2103948 8.25884395,17.5798421 C7.2933554,16.9492894 6.79206095,15.807501 6.98128804,14.6699783 L7.23815217,13.1304348 L4.92391304,13.1304348 C4.48861206,13.1304348 4.07113988,12.9575121 3.76333561,12.6497079 C3.45553133,12.3419036 3.2826087,11.9244314 3.2826087,11.4891304 L3.2826087,3.2826087 C3.2826087,2.84730772 3.45553133,2.42983554 3.76333561,2.12203126 C4.07113988,1.81422698 4.48861206,1.64130434 4.92391304,1.64130434 L14.7717391,1.64130434 C15.2070401,1.64130434 15.6245123,1.81422698 15.9323166,2.12203126 C16.2401208,2.42983554 16.4130435,2.84730772 16.4130435,3.2826087 L16.4130435,11.4891304 C16.4130435,11.9244314 16.2401208,12.3419036 15.9323166,12.6497079 C15.6245123,12.9575121 15.2070401,13.1304348 14.7717391,13.1304348 L12.4575,13.1304348 L12.7143641,14.6699783 L12.7143641,14.6699783 Z',
id: 'Brush-\u5F62\u72B6',
}),
),
),
),
);
}
export default Brush;

View File

@ -1,74 +0,0 @@
import * as React from 'react';
function Dark(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 17 17',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Dark-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Dark-\u9ED8\u8BA4',
transform: 'translate(-9.000000, -49.500000)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Dark-\u7F16\u7EC4-17',
transform: 'translate(0.000000, 42.500000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Dark-moon',
transform: 'translate(9.268811, 7.500000)',
},
/*#__PURE__*/ React.createElement('rect', {
id: 'Dark-\u77E9\u5F62',
opacity: 0,
x: 0,
y: 0,
width: 16,
height: 16,
}),
/*#__PURE__*/ React.createElement('path', {
d:
'M8,1.33333333 C8.14933333,1.33333333 8.29688889,1.33844444 8.44266667,1.34866666 C8.14755556,1.98422221 8,2.64577777 8,3.33333333 C8,3.96533333 8.12333333,4.56955555 8.37,5.146 C8.61666667,5.72244445 8.94822222,6.21888889 9.36466667,6.63533333 C9.78111112,7.05177777 10.2775556,7.38333332 10.854,7.63 C11.4304444,7.87666668 12.0346667,8.00000001 12.6666667,8 C13.3542222,8 14.0157778,7.85244444 14.6513333,7.55733333 C14.6615556,7.70311111 14.6666667,7.85066667 14.6666667,8 C14.6666667,8.604 14.5868889,9.19422222 14.4273333,9.77066667 C14.2677778,10.3471111 14.0446667,10.8793333 13.758,11.3673333 C13.4713333,11.8553333 13.1233333,12.3042222 12.714,12.714 C12.3046667,13.1237778 11.8557778,13.4717778 11.3673333,13.758 C10.8788889,14.0442222 10.3466667,14.2673333 9.77066667,14.4273333 C9.19466667,14.5873333 8.60444445,14.6671111 8,14.6666685 C7.39555555,14.6662222 6.80533333,14.5864444 6.22933333,14.4273333 C5.65333333,14.2682222 5.1211111,14.0451111 4.63266666,13.758 C4.14422221,13.4708889 3.69533332,13.1228889 3.28599998,12.714 C2.87666665,12.3051111 2.52866665,11.8562222 2.24199998,11.3673333 C1.95533332,10.8784444 1.73222221,10.3462222 1.57266666,9.77066667 C1.4131111,9.19511112 1.33333333,8.6048889 1.33333333,8 C1.33333333,7.3951111 1.4131111,6.80488888 1.57266666,6.22933333 C1.73222221,5.65377778 1.95533332,5.12155555 2.24199998,4.63266666 C2.52866665,4.14377776 2.87666665,3.69488887 3.28599998,3.28599998 C3.69533332,2.8771111 4.14422221,2.5291111 4.63266666,2.24199998 C5.1211111,1.95488887 5.65333333,1.73177776 6.22933333,1.57266666 C6.80533333,1.41355555 7.39555555,1.33377778 8,1.33333333 Z M6.68733333,2.828 C6.11444444,2.97377778 5.58066667,3.20977778 5.086,3.536 C4.59133333,3.86222222 4.166,4.24933333 3.81,4.69733333 C3.454,5.14533333 3.17444444,5.65488889 2.97133333,6.226 C2.76822221,6.79711111 2.66666666,7.38822222 2.66666666,7.99933333 C2.66666666,8.72155555 2.80733332,9.41155555 3.08866666,10.0693333 C3.36999999,10.7271111 3.74933332,11.2948889 4.22666666,11.7726667 C4.70399999,12.2504444 5.27177777,12.6297778 5.92999998,12.9106667 C6.5882222,13.1915556 7.2782222,13.3322222 7.99999998,13.3326667 C8.6111111,13.3326667 9.20222221,13.2311111 9.77333331,13.028 C10.3444444,12.8248889 10.854,12.5453333 11.302,12.1893333 C11.75,11.8333333 12.1371111,11.408 12.4633333,10.9133333 C12.7895555,10.4186666 13.0255555,9.88488887 13.1713333,9.31199998 C13.022,9.32577777 12.8535555,9.33266666 12.666,9.33266666 C11.8535555,9.33266666 11.0775555,9.17377777 10.338,8.85599998 C9.59844443,8.5382222 8.96044443,8.11111109 8.42399998,7.57466666 C7.88755554,7.03822222 7.46044443,6.40022222 7.14266666,5.66066666 C6.82488889,4.92111109 6.66599999,4.14511109 6.66599998,3.33266666 C6.66599998,3.1451111 6.67288888,2.97666666 6.68666666,2.82733333 L6.68733333,2.828 Z',
id: 'Dark-\u5F62\u72B6',
}),
),
),
),
),
);
}
export default Dark;

View File

@ -1,88 +0,0 @@
import * as React from 'react';
function Light(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 13 13',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-\u4E3B\u9898\u5305',
transform: 'translate(-2943.000000, -292.000000)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-\u7F16\u7EC4-12',
transform: 'translate(2415.000000, 222.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-\u89C6\u56FE\u5207\u6362-\u7F16\u8F91\u6001',
transform: 'translate(518.000000, 60.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-eye',
transform: 'translate(8.000000, 8.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Light-sun',
transform: 'translate(2.000000, 2.000000)',
},
/*#__PURE__*/ React.createElement('rect', {
id: 'Light-\u77E9\u5F62',
opacity: 0,
x: 0,
y: 0,
width: 13,
height: 13,
}),
/*#__PURE__*/ React.createElement('path', {
d:
'M6.5,9.75 C4.7051875,9.75 3.25,8.2948125 3.25,6.5 C3.25,4.7051875 4.7051875,3.25 6.5,3.25 C8.2948125,3.25 9.75,4.7051875 9.75,6.5 C9.75,8.2948125 8.2948125,9.75 6.5,9.75 Z M6.5,8.66666667 C7.69661696,8.66666667 8.66666667,7.69661696 8.66666667,6.5 C8.66666667,5.30338304 7.69661696,4.33333333 6.5,4.33333333 C5.30338305,4.33333333 4.33333336,5.30338305 4.33333336,6.5 C4.33333336,7.69661695 5.30338305,8.66666667 6.5,8.66666667 Z M5.95833333,1.08333333 C5.95833333,0.784179087 6.20084576,0.541666658 6.5,0.541666658 C6.79915424,0.541666658 7.04166667,0.784179087 7.04166667,1.08333333 L7.04166667,2.16666667 C7.04166667,2.46582091 6.79915424,2.70833334 6.5,2.70833334 C6.20084576,2.70833334 5.95833333,2.46582091 5.95833333,2.16666667 L5.95833333,1.08333333 L5.95833333,1.08333333 Z M5.95833333,10.8333333 C5.95833333,10.5341791 6.20084576,10.2916667 6.5,10.2916667 C6.79915424,10.2916667 7.04166667,10.5341791 7.04166667,10.8333333 L7.04166667,11.9166667 C7.04166667,12.2158209 6.79915424,12.4583333 6.5,12.4583333 C6.20084576,12.4583333 5.95833333,12.2158209 5.95833333,11.9166667 L5.95833333,10.8333333 L5.95833333,10.8333333 Z M1.08333333,7.04166667 C0.784179087,7.04166667 0.541666658,6.79915424 0.541666658,6.5 C0.541666658,6.20084576 0.784179087,5.95833333 1.08333333,5.95833333 L2.16666667,5.95833333 C2.46582091,5.95833333 2.70833334,6.20084576 2.70833334,6.5 C2.70833334,6.79915424 2.46582091,7.04166667 2.16666667,7.04166667 L1.08333333,7.04166667 L1.08333333,7.04166667 Z M10.8333333,7.04166667 C10.5341791,7.04166667 10.2916667,6.79915424 10.2916667,6.5 C10.2916667,6.20084576 10.5341791,5.95833333 10.8333333,5.95833333 L11.9166667,5.95833333 C12.2158209,5.95833333 12.4583333,6.20084576 12.4583333,6.5 C12.4583333,6.79915424 12.2158209,7.04166667 11.9166667,7.04166667 L10.8333333,7.04166667 L10.8333333,7.04166667 Z M2.05454167,2.82045833 C1.84926545,2.60791971 1.85220137,2.27007933 2.06114035,2.06114035 C2.27007933,1.85220137 2.60791971,1.84926545 2.82045833,2.05454167 L3.63295833,2.86704167 C3.83823455,3.07958029 3.83529863,3.41742067 3.62635965,3.62635965 C3.41742067,3.83529863 3.07958029,3.83823455 2.86704167,3.63295833 L2.05454167,2.82045833 L2.05454167,2.82045833 Z M9.36704167,10.1329583 C9.16176545,9.92041971 9.16470137,9.58257933 9.37364035,9.37364035 C9.58257933,9.16470137 9.92041971,9.16176545 10.1329583,9.36704167 L10.9454583,10.1795417 C11.1507346,10.3920803 11.1477986,10.7299207 10.9388596,10.9388596 C10.7299207,11.1477986 10.3920803,11.1507346 10.1795417,10.9454583 L9.36704167,10.1329583 L9.36704167,10.1329583 Z M2.82045833,10.9454583 C2.60791971,11.1507346 2.27007933,11.1477986 2.06114035,10.9388596 C1.85220137,10.7299207 1.84926545,10.3920803 2.05454167,10.1795417 L2.86704167,9.36704167 C3.07958029,9.16176545 3.41742067,9.16470137 3.62635965,9.37364035 C3.83529863,9.58257933 3.83823455,9.92041971 3.63295833,10.1329583 L2.82045833,10.9454583 L2.82045833,10.9454583 Z M10.1329583,3.63295833 C9.92041971,3.83823455 9.58257933,3.83529863 9.37364035,3.62635965 C9.16470137,3.41742067 9.16176545,3.07958029 9.36704167,2.86704167 L10.1795417,2.05454167 C10.3920803,1.84926545 10.7299207,1.85220137 10.9388596,2.06114035 C11.1477986,2.27007933 11.1507346,2.60791971 10.9454583,2.82045833 L10.1329583,3.63295833 L10.1329583,3.63295833 Z',
id: 'Light-\u5F62\u72B6',
}),
),
),
),
),
),
),
);
}
export default Light;

View File

@ -1,60 +0,0 @@
import * as React from 'react';
function Margin(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 16 17',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Margin-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Margin-margin',
transform: 'translate(0.000000, 0.942377)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement('rect', {
id: 'Margin-\u77E9\u5F62',
opacity: 0,
x: 0,
y: 0,
width: 16,
height: 15.9807923,
}),
/*#__PURE__*/ React.createElement('path', {
d:
'M11.6666667,2.75858915 L4.33333333,2.75858915 C4.01904762,2.75858915 3.80952382,2.54931688 3.80952382,2.23540845 C3.80952382,1.92150003 4.01904763,1.71222775 4.33333334,1.71222775 L11.6666667,1.71222775 C11.9809524,1.71222775 12.1904762,1.92150003 12.1904762,2.23540845 C12.1904762,2.54931688 11.9809524,2.75858915 11.6666667,2.75858915 Z M11.6666667,14.2685646 L4.33333333,14.2685646 C4.01904762,14.2685646 3.8095238,14.0592923 3.8095238,13.7453839 C3.8095238,13.4314755 4.01904762,13.2222032 4.33333333,13.2222032 L11.6666667,13.2222032 C11.9809524,13.2222032 12.1904762,13.4314755 12.1904762,13.7453839 C12.1904762,14.0592923 11.9809524,14.2685646 11.6666667,14.2685646 Z M13.7619048,12.1758418 C13.447619,12.1758418 13.2380952,11.9665695 13.2380952,11.6526611 L13.2380952,4.32813125 C13.2380952,4.01422283 13.4476191,3.80495055 13.7619048,3.80495055 C14.0761905,3.80495055 14.2857143,4.01422283 14.2857143,4.32813125 L14.2857143,11.6526611 C14.2857143,11.9665695 14.0761905,12.1758418 13.7619048,12.1758418 Z M2.23809524,12.1758418 C1.92380953,12.1758418 1.71428572,11.9665695 1.71428572,11.6526611 L1.71428572,4.32813125 C1.71428572,4.01422283 1.92380953,3.80495055 2.23809524,3.80495055 C2.55238096,3.80495055 2.76190477,4.01422283 2.76190477,4.32813125 L2.76190477,11.6526611 C2.76190477,11.9665695 2.55238096,12.1758418 2.23809524,12.1758418 Z M11.6666667,12.1758418 L4.33333333,12.1758418 C4.01904762,12.1758418 3.8095238,11.9665695 3.8095238,11.6526611 L3.8095238,4.32813125 C3.8095238,4.01422283 4.01904763,3.80495055 4.33333334,3.80495055 L11.6666667,3.80495055 C11.9809524,3.80495055 12.1904762,4.01422283 12.1904762,4.32813125 L12.1904762,11.6526611 C12.1904762,11.9665695 11.9809524,12.1758418 11.6666667,12.1758418 Z M4.85714286,11.1294804 L11.1428571,11.1294804 L11.1428571,4.85131196 L4.85714286,4.85131196 L4.85714286,11.1294804 Z',
id: 'Margin-\u5F62\u72B6',
}),
),
),
);
}
export default Margin;

View File

@ -1,60 +0,0 @@
import * as React from 'react';
function Motion(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 16 17',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Motion-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Motion-\u5BCC\u6587\u672C\u7F16\u8F91\u5668_\u52A8\u6548',
transform: 'translate(0.000000, 0.903962)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement('rect', {
id: 'Motion-\u77E9\u5F62',
opacity: 0,
x: 0,
y: 0,
width: 16,
height: 15.9807923,
}),
/*#__PURE__*/ React.createElement('path', {
d:
'M6.55644444,12.5262777 L7.99555556,13.9627734 C8.13290682,14.0984321 8.18701716,14.2971622 8.13737053,14.4836147 C8.0877239,14.6700672 7.94192169,14.8156943 7.75524511,14.8652814 C7.56856853,14.9148684 7.36959959,14.860823 7.23377778,14.7236366 L5.79555556,13.2862532 C5.60250935,13.0737079 5.61045949,12.7472435 5.8136232,12.5443237 C6.01678692,12.3414038 6.3436437,12.3334632 6.55644444,12.5262777 L6.55644444,12.5262777 Z M12.2435556,12.6630023 L13.3857778,13.8038533 C13.5231286,13.9395121 13.5772386,14.138242 13.527592,14.3246942 C13.4779453,14.5111464 13.3321433,14.6567734 13.145467,14.7063605 C12.9587906,14.7559476 12.7598219,14.7019025 12.624,14.5647165 L11.4817778,13.4238655 C11.3444269,13.2882067 11.2903169,13.0894768 11.3399636,12.9030246 C11.3896103,12.7165724 11.5354123,12.5709454 11.7220886,12.5213583 C11.9087649,12.4717712 12.1077337,12.5258163 12.2435556,12.6630023 L12.2435556,12.6630023 Z M7.29511111,0.990809123 C7.37066667,1.03342457 7.43377778,1.09645992 7.47644444,1.17192476 L9.23911111,4.29439403 L12.7564444,5.00376364 C12.9258902,5.03768098 13.0638332,5.16026877 13.1172645,5.32441904 C13.1706959,5.4885693 13.1313024,5.66874209 13.0142222,5.79570068 L10.5866667,8.43430705 L10.9982222,11.9953603 C11.018176,12.1667991 10.94398,12.3356549 10.8041422,12.4370491 C10.6643043,12.5384432 10.4805781,12.5566027 10.3235556,12.4845501 L7.06133333,10.9930095 L3.79733333,12.4845501 C3.64031082,12.5566027 3.45658456,12.5384432 3.3167467,12.4370491 C3.17690884,12.3356549 3.10271286,12.1667991 3.12266667,11.9953603 L3.53511111,8.43519487 L1.10577778,5.79570068 C0.988697555,5.66874209 0.949304077,5.4885693 1.00273546,5.32441904 C1.05616684,5.16026877 1.19410976,5.03768098 1.36355556,5.00376364 L4.88177778,4.29439403 L6.64266667,1.17192476 C6.70502264,1.06136833 6.80886024,0.980137913 6.93126543,0.94615878 C7.05367063,0.912179648 7.18458201,0.928244805 7.29511111,0.990809123 Z M7.05955556,2.62440123 L5.57688889,5.25235374 L2.61688889,5.84808216 L4.65955556,8.07030012 L4.31288889,11.0666987 L7.05955556,9.81131866 L9.80533333,11.0666987 L9.45866667,8.07030012 L11.5031111,5.84896999 L8.54222222,5.25235374 L7.05866667,2.62440123 L7.05955556,2.62440123 Z M13.1528889,7.76045031 L14.5911111,9.19694597 C14.7892424,9.40878705 14.7837079,9.73933037 14.5785954,9.9444359 C14.373483,10.1495414 14.0425491,10.1554552 13.8302222,9.95780926 L12.3911111,8.5213136 C12.2537603,8.38565475 12.1996502,8.18692487 12.2492969,8.00047265 C12.2989436,7.81402043 12.4447456,7.66839345 12.6314219,7.61880637 C12.8180983,7.56921929 13.017067,7.62326436 13.1528889,7.76045031 L13.1528889,7.76045031 Z',
id: 'Motion-\u5F62\u72B6',
}),
),
),
);
}
export default Motion;

View File

@ -1,88 +0,0 @@
import * as React from 'react';
function Pick(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 14 14',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
fillOpacity: 0.65,
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-\u4E3B\u9898\u7F16\u8F91\u5668---\u591A\u4E3B\u9898',
transform: 'translate(-541.000000, -387.000000)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-\u7F16\u7EC4-11',
transform: 'translate(76.000000, 340.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-Map-Token-\u9762\u677F',
transform: 'translate(0.000000, 27.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-token-\u663E\u793A',
transform: 'translate(-1.002041, -1.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-\u7F16\u7EC4-2',
transform: 'translate(12.024490, 20.000000)',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'Pick-shangyeguanxi',
transform: 'translate(453.924490, 1.000000)',
},
/*#__PURE__*/ React.createElement('path', {
d:
'M12.6274816,8.17204883 C12.6358384,8.04673242 12.6401539,7.92030859 12.6401539,7.79288672 C12.6401539,5.50309375 11.2701899,3.53286719 9.30406641,2.65472266 C9.31862927,2.54983203 9.32632854,2.44274023 9.32632854,2.33384375 C9.32632854,1.05430664 8.28750187,0.0169394531 7.00623025,0.0169394531 C5.72484902,0.0169394531 4.68607715,1.05430664 4.68607715,2.33384375 C4.68607715,2.44267188 4.69376272,2.54968164 4.70829819,2.65451758 C2.74188703,3.53256641 1.37158055,5.50290234 1.37158055,7.79288672 C1.37158055,7.92044531 1.37592338,8.04699219 1.38428025,8.17243164 C0.593775725,8.54169531 0.0460860491,9.34289453 0.0460860491,10.2719531 C0.0460860491,11.5515449 1.08474833,12.5888574 2.36612955,12.5888574 C2.80723496,12.5888574 3.21958454,12.4658926 3.57069612,12.2524336 C4.52158393,12.9838105 5.71288912,13.4188223 7.00595625,13.4188223 C8.30016046,13.4188223 9.49238354,12.9830449 10.4436412,12.2505195 C10.7943281,12.4630762 11.2059516,12.5854668 11.6462213,12.5854668 C12.9274382,12.5854668 13.9661004,11.5489746 13.9661004,10.2703672 C13.9661004,9.34171875 13.4181916,8.54095703 12.6274816,8.17204883 Z M7.00623025,1.00913477 C7.73549676,1.00913477 8.32698463,1.59684766 8.33166995,2.32357617 C8.33168365,2.32647461 8.33177955,2.32935938 8.33177955,2.33225781 C8.33177955,2.69178711 8.18805519,3.01775195 7.95488499,3.25620313 C7.71417991,3.50236523 7.37813809,3.65527148 7.00623025,3.65527148 C6.6343361,3.65527148 6.29829428,3.50236523 6.0575618,3.25620313 C5.8243779,3.01775195 5.68062614,2.69178711 5.68062614,2.33225781 C5.68062614,2.32931836 5.68072204,2.32639258 5.68073574,2.32345313 C5.68547586,1.59679297 6.27704593,1.00913477 7.00623025,1.00913477 Z M2.36612955,11.5993965 C1.63399978,11.5993965 1.04047065,11.0058047 1.04047065,10.2734297 C1.04047065,9.84645703 1.24229576,9.46667969 1.55566445,9.22416797 C1.7797654,9.05074023 2.06088482,8.94746289 2.36614325,8.94746289 C2.41639403,8.94746289 2.46597352,8.95036133 2.51477213,8.95580273 C3.17696454,9.02969922 3.69181585,9.59136719 3.69181585,10.273416 C3.69181585,10.4903613 3.6397293,10.6951113 3.5473928,10.8758809 C3.39166744,11.1807637 3.12143934,11.4173555 2.79339819,11.5289863 C2.65931847,11.574623 2.51562151,11.5993965 2.36612955,11.5993965 Z M7.00127093,12.4178633 C5.99141928,12.4178633 5.0570808,12.0957402 4.29537321,11.549084 C4.53905114,11.1824316 4.68111783,10.7425937 4.68111783,10.2695605 C4.68111783,8.99117188 3.64429132,7.95466602 2.36460887,7.95280664 C2.3626772,7.89787305 2.36134833,7.84278906 2.36134833,7.78737695 C2.36134833,5.92565039 3.46242679,4.32079102 5.05001172,3.58529883 C5.46299149,4.22481445 6.18258597,4.64830078 7.00128463,4.64830078 C7.81990109,4.64830078 8.53950926,4.22481445 8.95248903,3.58529883 C10.5400329,4.32079102 11.6411113,5.92565039 11.6411113,7.78737695 C11.6411113,7.84277539 11.6397824,7.89787305 11.6378508,7.95280664 C10.3582094,7.95465234 9.32139662,8.99040625 9.32139662,10.2679746 C9.32139662,10.7413906 9.4639017,11.1815293 9.70827832,11.5482363 C8.94635153,12.0953848 8.01158836,12.4178633 7.00127093,12.4178633 Z M11.6459473,8.94746289 C11.9510962,8.94746289 12.2321197,9.0506582 12.4561658,9.22397656 C12.7696578,9.46647461 12.9715652,9.84632031 12.9715652,10.273375 C12.9715652,11.0056953 12.3780634,11.5993418 11.6459473,11.5993418 C11.4964143,11.5993418 11.3526762,11.574541 11.2185828,11.528877 C10.8907472,11.4172324 10.6206287,11.1807227 10.464917,10.8759902 C10.3725257,10.6951797 10.320398,10.490375 10.320398,10.273375 C10.320398,9.59128516 10.8354138,9.0295625 11.4976062,8.95577539 C11.5463226,8.95034766 11.5957925,8.94746289 11.6459473,8.94746289 Z M7.00557266,6.21029883 C7.91351399,6.21029883 8.64954587,6.94483166 8.64954587,7.85092383 C8.64954587,8.757016 7.91351399,9.49154883 7.00557266,9.49154883 C6.09763132,9.49154883 5.36159944,8.757016 5.36159944,7.85092383 C5.36159944,6.94483166 6.09763132,6.21029883 7.00557266,6.21029883 Z',
id: 'Pick-\u5F62\u72B6',
}),
),
),
),
),
),
),
),
);
}
export default Pick;

View File

@ -1,60 +0,0 @@
import * as React from 'react';
function ShapeLine(props) {
return /*#__PURE__*/ React.createElement(
'svg',
Object.assign(
{
width: '1em',
height: '1em',
viewBox: '0 0 16 17',
xmlns: 'http://www.w3.org/2000/svg',
xmlnsXlink: 'http://www.w3.org/1999/xlink',
},
props,
{
style: Object.assign(
{
verticalAlign: '-0.125em',
},
props.style,
),
className: ['nanqu-token-panel-icon', props.className].filter(Boolean).join(' '),
},
),
/*#__PURE__*/ React.createElement(
'g',
{
id: 'ShapeLine-\u9875\u9762-1',
stroke: 'none',
strokeWidth: 1,
fill: 'none',
fillRule: 'evenodd',
},
/*#__PURE__*/ React.createElement(
'g',
{
id: 'ShapeLine-shape-line',
transform: 'translate(0.000000, 0.923169)',
fill: 'currentColor',
fillRule: 'nonzero',
},
/*#__PURE__*/ React.createElement('rect', {
id: 'ShapeLine-\u77E9\u5F62',
opacity: 0,
x: 0,
y: 0,
width: 16,
height: 15.9807923,
}),
/*#__PURE__*/ React.createElement('path', {
d:
'M5.22,13.3173269 C4.90928357,14.1946577 4.03334945,14.7416208 3.10760502,14.6363783 C2.18186059,14.5311359 1.45139881,13.801551 1.34602985,12.8769179 C1.24066088,11.9522848 1.78828141,11.0774022 2.66666667,10.7670588 L2.66666667,5.21373349 C1.78828141,4.90339007 1.24066088,4.02850749 1.34602985,3.1038744 C1.45139881,2.1792413 2.18186059,1.44965643 3.10760502,1.34441396 C4.03334945,1.23917149 4.90928357,1.78613461 5.22,2.66346539 L10.78,2.66346539 C11.0907164,1.78613461 11.9666505,1.23917149 12.892395,1.34441396 C13.8181394,1.44965643 14.5486012,2.1792413 14.6539702,3.1038744 C14.7593391,4.02850749 14.2117186,4.90339007 13.3333333,5.21373349 L13.3333333,10.7670588 C14.2117186,11.0774022 14.7593391,11.9522848 14.6539702,12.8769179 C14.5486012,13.801551 13.8181394,14.5311359 12.892395,14.6363783 C11.9666505,14.7416208 11.0907164,14.1946577 10.78,13.3173269 L5.22,13.3173269 Z M5.22,11.9855942 L10.78,11.9855942 C10.9819939,11.4165133 11.430235,10.9688103 12,10.7670588 L12,5.21373349 C11.430235,5.01198206 10.9819939,4.56427905 10.78,3.99519808 L5.22,3.99519808 C5.01800608,4.56427905 4.56976496,5.01198206 4,5.21373349 L4,10.7670588 C4.56976496,10.9688103 5.01800608,11.4165133 5.22,11.9855942 Z M3.33333333,3.99519809 C3.5715347,3.9952345 3.79165744,3.86832906 3.91076865,3.66229434 C4.02987987,3.45625961 4.02987987,3.20240385 3.91076865,2.99636913 C3.79165744,2.79033441 3.5715347,2.66342897 3.33333333,2.66346538 C2.96518335,2.66352168 2.66676872,2.96162371 2.66676872,3.32933173 C2.66676872,3.69703976 2.96518335,3.99514178 3.33333333,3.99519809 L3.33333333,3.99519809 Z M12.6666667,3.99519809 C12.904868,3.9952345 13.1249908,3.86832906 13.244102,3.66229434 C13.3632132,3.45625961 13.3632132,3.20240385 13.244102,2.99636913 C13.1249908,2.79033441 12.904868,2.66342897 12.6666667,2.66346538 C12.2985167,2.66352168 12.0001021,2.96162371 12.0001021,3.32933173 C12.0001021,3.69703976 12.2985167,3.99514178 12.6666667,3.99519809 L12.6666667,3.99519809 Z M12.6666667,13.3173269 C12.904868,13.3173633 13.1249908,13.1904579 13.244102,12.9844232 C13.3632132,12.7783885 13.3632132,12.5245327 13.244102,12.318498 C13.1249908,12.1124633 12.904868,11.9855578 12.6666667,11.9855942 C12.2985167,11.9856505 12.0001021,12.2837526 12.0001021,12.6514606 C12.0001021,13.0191686 12.2985167,13.3172706 12.6666667,13.3173269 L12.6666667,13.3173269 Z M3.33333333,13.3173269 C3.5715347,13.3173633 3.79165744,13.1904579 3.91076865,12.9844232 C4.02987987,12.7783885 4.02987987,12.5245327 3.91076865,12.318498 C3.79165744,12.1124633 3.5715347,11.9855578 3.33333333,11.9855942 C2.96518335,11.9856505 2.66676872,12.2837526 2.66676872,12.6514606 C2.66676872,13.0191686 2.96518335,13.3172706 3.33333333,13.3173269 L3.33333333,13.3173269 Z',
id: 'ShapeLine-\u5F62\u72B6',
}),
),
),
);
}
export default ShapeLine;

View File

@ -1,7 +1,7 @@
{
"name": "@nocobase/plugin-acl",
"name": "@tachybase/plugin-acl",
"displayName": "Access control",
"version": "0.21.33",
"version": "0.21.34",
"description": "Based on roles, resources, and actions, access control can precisely manage interface configuration permissions, data operation permissions, menu access permissions, and plugin permissions.",
"keywords": [
"Users & permissions"

View File

@ -1,8 +1,9 @@
import { SchemaComponent, useActionContext, useRequest } from '@tachybase/client';
import React from 'react';
import { useACLTranslation } from './locale';
import { SchemaComponent, useActionContext, useRequest } from '@tachybase/client';
import { uid } from '@tachybase/schema';
import { useACLTranslation } from './locale';
export const NewRole: React.FC = () => {
const { t } = useACLTranslation();
return (

View File

@ -1,5 +1,4 @@
import React, { useState } from 'react';
import { Card, Row, Col, Tabs, Divider } from 'antd';
import {
CollectionProvider,
CollectionProvider_deprecated,
@ -9,12 +8,15 @@ import {
useSchemaComponentContext,
} from '@tachybase/client';
import { ISchema, Schema } from '@tachybase/schema';
import { RolesMenu } from './RolesMenu';
import { useACLTranslation } from './locale';
import { Card, Col, Divider, Row, Tabs } from 'antd';
import ACLPlugin from '.';
import { RolesManagerContext } from './RolesManagerProvider';
import { Permissions } from './permissions/Permissions';
import { useACLTranslation } from './locale';
import { NewRole } from './NewRole';
import { Permissions } from './permissions/Permissions';
import { RolesManagerContext } from './RolesManagerProvider';
import { RolesMenu } from './RolesMenu';
const collection = {
name: 'roles',

View File

@ -1,3 +1,4 @@
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
import {
ActionContextProvider,
RecordProvider,
@ -5,14 +6,15 @@ import {
useAPIClient,
useResourceActionContext,
} from '@tachybase/client';
import { Menu, Empty, Dropdown, App, Tag, Row, Col, Spin } from 'antd';
import { TagOutlined, MoreOutlined } from '@ant-design/icons';
import React, { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
import { useACLTranslation } from './locale';
import { Schema } from '@tachybase/schema';
import { MoreOutlined, TagOutlined } from '@ant-design/icons';
import { App, Col, Dropdown, Empty, Menu, Row, Spin, Tag } from 'antd';
import { useLoadMoreObserver } from './hooks/load-more-observer';
import { useACLTranslation } from './locale';
import { RolesManagerContext } from './RolesManagerProvider';
import { roleEditSchema } from './schemas/roles';
import { useLoadMoreObserver } from './hooks/load-more-observer';
export const RolesMenu: React.FC & {
Item: React.FC<{ item: any; onEdit: () => void }>;

View File

@ -1,4 +1,5 @@
import { expect, test } from '@tachybase/test/e2e';
import { oneTableBlock } from './utils';
test.describe('view', () => {

View File

@ -1,5 +1,6 @@
import { expect, test } from '@tachybase/test/e2e';
import { oneTableBlock, newTableBlock } from './utils';
import { newTableBlock, oneTableBlock } from './utils';
test.describe('view', () => {
test('general permission', async ({ page, mockPage, mockRole, updateRole }) => {

View File

@ -1,4 +1,5 @@
import { expect, test } from '@tachybase/test/e2e';
import { oneTableBlock } from './utils';
test('allows to configure interface', async ({ page, mockPage, mockRole, updateRole }) => {

View File

@ -1,4 +1,5 @@
import { general, PageConfig } from '@tachybase/test/e2e';
/**
* Table 并且配有字段:普通字段和关系字段
*/

Some files were not shown because too many files have changed in this diff Show More