@kotori-bot/core 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/types.js ADDED
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.eventDataTargetIdSchema = exports.ModulePackageSchema = exports.kotoriConfigSchema = exports.globalConfigSchemaController = exports.globalOptions = exports.localeTypeSchema = exports.packageInfoSchema = exports.baseDirSchema = void 0;
7
+ const tsukiko_1 = __importDefault(require("tsukiko"));
8
+ const core_1 = require("./base/core");
9
+ const consts_1 = require("./consts");
10
+ exports.baseDirSchema = tsukiko_1.default.Object({
11
+ root: tsukiko_1.default.String(),
12
+ modules: tsukiko_1.default.String(),
13
+ });
14
+ exports.packageInfoSchema = tsukiko_1.default.Object({
15
+ name: tsukiko_1.default.String(),
16
+ version: tsukiko_1.default.String(),
17
+ description: tsukiko_1.default.String(),
18
+ main: tsukiko_1.default.String(),
19
+ license: tsukiko_1.default.Literal('GPL-3.0'),
20
+ author: tsukiko_1.default.String(),
21
+ });
22
+ exports.localeTypeSchema = tsukiko_1.default.Union([
23
+ tsukiko_1.default.Union([tsukiko_1.default.Literal('en_US'), tsukiko_1.default.Literal('ja_JP')]),
24
+ tsukiko_1.default.Union([tsukiko_1.default.Literal('zh_CN'), tsukiko_1.default.Literal('zh_TW')]),
25
+ ]);
26
+ exports.globalOptions = tsukiko_1.default.Object({
27
+ env: tsukiko_1.default.Union([tsukiko_1.default.Literal('dev'), tsukiko_1.default.Literal('build')]).default('dev'),
28
+ });
29
+ const CommonConfigSchemaController = (lang = consts_1.DEFAULT_LANG, commandPrefix = consts_1.DEFAULT_COMMAND_PREFIX) => tsukiko_1.default.Object({
30
+ lang: exports.localeTypeSchema.default(lang),
31
+ 'command-prefix': tsukiko_1.default.String().default(commandPrefix),
32
+ });
33
+ const GlobalConfigSchema = tsukiko_1.default.Intersection([
34
+ tsukiko_1.default.Object({
35
+ dirs: tsukiko_1.default.Array(tsukiko_1.default.String()).default([]),
36
+ }),
37
+ CommonConfigSchemaController(),
38
+ ]);
39
+ const adapterConfigBaseSchemaController = (lang, commandPrefix) => tsukiko_1.default.Intersection([
40
+ tsukiko_1.default.Object({
41
+ extends: tsukiko_1.default.String(),
42
+ master: tsukiko_1.default.Union([tsukiko_1.default.Number(), tsukiko_1.default.String()]),
43
+ }),
44
+ CommonConfigSchemaController(lang, commandPrefix),
45
+ ]);
46
+ const adapterConfigBaseSchema = adapterConfigBaseSchemaController();
47
+ const pluginConfigBaseSchema = tsukiko_1.default.Object({
48
+ priority: tsukiko_1.default.Number().min(0).default(100),
49
+ });
50
+ const globalConfigSchemaController = (lang, commandPrefix) => tsukiko_1.default.Object({
51
+ global: GlobalConfigSchema,
52
+ adapter: tsukiko_1.default.Object({}).index(adapterConfigBaseSchemaController(lang, commandPrefix)).default({}),
53
+ plugin: tsukiko_1.default.Object({}).index(pluginConfigBaseSchema),
54
+ });
55
+ exports.globalConfigSchemaController = globalConfigSchemaController;
56
+ const globalConfigSchema = (0, exports.globalConfigSchemaController)();
57
+ exports.kotoriConfigSchema = tsukiko_1.default.Object({
58
+ baseDir: exports.baseDirSchema.default({ root: consts_1.DEFAULT_ROOT_DIR, modules: consts_1.DEFAULT_MODULES_DIR }),
59
+ config: globalConfigSchema.default({
60
+ global: {
61
+ lang: consts_1.DEFAULT_LANG,
62
+ 'command-prefix': consts_1.DEFAULT_COMMAND_PREFIX,
63
+ },
64
+ adapter: {},
65
+ }),
66
+ options: exports.globalOptions.default({
67
+ env: consts_1.DEFAULT_ENV,
68
+ }), // question
69
+ }).default(core_1.defaultConfig);
70
+ exports.ModulePackageSchema = tsukiko_1.default.Object({
71
+ name: tsukiko_1.default.String().regexp(/kotori-plugin-[a-z]([a-z,0-9]{3,13})\b/),
72
+ version: tsukiko_1.default.String(),
73
+ description: tsukiko_1.default.String(),
74
+ main: tsukiko_1.default.String(),
75
+ license: tsukiko_1.default.Literal('GPL-3.0'),
76
+ author: tsukiko_1.default.Union([tsukiko_1.default.String(), tsukiko_1.default.Array(tsukiko_1.default.String())]),
77
+ peerDependencies: tsukiko_1.default.Object({
78
+ 'kotori-bot': tsukiko_1.default.String(),
79
+ }),
80
+ });
81
+ exports.eventDataTargetIdSchema = tsukiko_1.default.Union([tsukiko_1.default.String(), tsukiko_1.default.Number()]);
@@ -0,0 +1,6 @@
1
+ import type { CommandParseResultExtra } from '../types';
2
+ export declare class CommandExtra {
3
+ value: CommandParseResultExtra[keyof CommandParseResultExtra];
4
+ constructor(value: CommandParseResultExtra[keyof CommandParseResultExtra]);
5
+ }
6
+ export default CommandExtra;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CommandExtra = void 0;
4
+ class CommandExtra {
5
+ value;
6
+ constructor(value) {
7
+ this.value = value;
8
+ }
9
+ }
10
+ exports.CommandExtra = CommandExtra;
11
+ exports.default = CommandExtra;
@@ -0,0 +1,41 @@
1
+ import type { DevErrorExtra } from '../types';
2
+ import CommandExtra from './commandExtra';
3
+ type KotoriErrorType = 'DatabaseError' | 'ModuleError' | 'CoreError' | 'UnknownError' | 'CommandError' | 'DevError';
4
+ type KotoriErrorLevel = 'debug' | 'normal' | 'log';
5
+ interface KotoriErrorImpl {
6
+ readonly name: KotoriErrorType;
7
+ readonly level: KotoriErrorLevel;
8
+ readonly extend: () => typeof KotoriError;
9
+ }
10
+ export declare class KotoriError<T extends object = object> extends Error implements KotoriErrorImpl {
11
+ constructor(message?: string, extra?: T, type?: KotoriErrorType, level?: KotoriErrorLevel);
12
+ readonly extra?: T;
13
+ readonly name: KotoriErrorType;
14
+ readonly level: KotoriErrorLevel;
15
+ extend(): typeof KotoriError<T>;
16
+ }
17
+ export declare const ModuleError: {
18
+ new (message?: string, extra?: object | undefined, type?: KotoriErrorType, level?: KotoriErrorLevel): KotoriError<object>;
19
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
20
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
21
+ stackTraceLimit: number;
22
+ };
23
+ export declare const CoreError: {
24
+ new (message?: string, extra?: object | undefined, type?: KotoriErrorType, level?: KotoriErrorLevel): KotoriError<object>;
25
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
26
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
27
+ stackTraceLimit: number;
28
+ };
29
+ export declare const CommandError: {
30
+ new (message?: string, extra?: CommandExtra | undefined, type?: KotoriErrorType, level?: KotoriErrorLevel): KotoriError<CommandExtra>;
31
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
32
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
33
+ stackTraceLimit: number;
34
+ };
35
+ export declare const DevError: {
36
+ new (message?: string, extra?: DevErrorExtra | undefined, type?: KotoriErrorType, level?: KotoriErrorLevel): KotoriError<DevErrorExtra>;
37
+ captureStackTrace(targetObject: object, constructorOpt?: Function | undefined): void;
38
+ prepareStackTrace?: ((err: Error, stackTraces: NodeJS.CallSite[]) => any) | undefined;
39
+ stackTraceLimit: number;
40
+ };
41
+ export default KotoriError;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DevError = exports.CommandError = exports.CoreError = exports.ModuleError = exports.KotoriError = void 0;
4
+ class KotoriError extends Error {
5
+ constructor(message, extra, type = 'UnknownError', level = 'debug') {
6
+ super(message);
7
+ this.name = type;
8
+ this.level = level;
9
+ this.extra = extra;
10
+ }
11
+ extra;
12
+ name;
13
+ level;
14
+ extend() {
15
+ const { message: fatherMessage, name: fatherType, level: fatherLevel, extra: fatherExtra } = this;
16
+ // const newConstructor: typeof KotoriError = Object.create(KotoriError);
17
+ return new Proxy((KotoriError), {
18
+ construct(Constructor, params) {
19
+ const args = params;
20
+ args[0] = `${fatherMessage} ${args[0]}`;
21
+ args[1] = args[1] ?? fatherExtra;
22
+ args[2] = args[2] ?? fatherType;
23
+ args[3] = args[3] ?? fatherLevel;
24
+ return new Constructor(...args);
25
+ },
26
+ });
27
+ }
28
+ }
29
+ exports.KotoriError = KotoriError;
30
+ exports.ModuleError = new KotoriError(undefined, undefined, 'ModuleError', 'normal').extend();
31
+ exports.CoreError = new KotoriError(undefined, undefined, 'CoreError', 'normal').extend();
32
+ exports.CommandError = new KotoriError(undefined, undefined, 'CommandError', 'normal').extend();
33
+ exports.DevError = new KotoriError(undefined, undefined, 'DevError', 'debug').extend();
34
+ exports.default = KotoriError;
@@ -0,0 +1,13 @@
1
+ import { Locale as LocaleOrigin, LocaleType } from '@kotori-bot/i18n';
2
+ export * from '@kotori-bot/i18n';
3
+ export declare class Locale {
4
+ private readonly instance;
5
+ readonly locale: LocaleOrigin['locale'];
6
+ readonly set: LocaleOrigin['set'];
7
+ readonly get: LocaleOrigin['get'];
8
+ constructor(lang?: LocaleType);
9
+ private localePathList;
10
+ private loader;
11
+ use(data: Parameters<typeof this.instance.use>[0] | string): boolean;
12
+ }
13
+ export default Locale;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Locale = void 0;
21
+ const i18n_1 = require("@kotori-bot/i18n");
22
+ const path_1 = __importDefault(require("path"));
23
+ const tools_1 = require("@kotori-bot/tools");
24
+ const fs_1 = require("fs");
25
+ const tsukiko_1 = __importDefault(require("tsukiko"));
26
+ __exportStar(require("@kotori-bot/i18n"), exports);
27
+ class Locale {
28
+ instance;
29
+ locale;
30
+ set;
31
+ get;
32
+ constructor(lang = 'en_US') {
33
+ this.instance = new i18n_1.Locale(lang);
34
+ this.locale = (val, lang) => this.instance.locale(val, lang);
35
+ this.set = lang => this.instance.set(lang);
36
+ this.get = () => this.instance.get();
37
+ }
38
+ localePathList = [];
39
+ loader(dirPath) {
40
+ let state = true;
41
+ Object.values(i18n_1.LocaleIdentifier).forEach(type => {
42
+ if (typeof type !== 'string')
43
+ return;
44
+ const locales = (0, tools_1.loadConfig)(path_1.default.join(dirPath, `${type}.json`), 'json');
45
+ if (!tsukiko_1.default.Object({}).index(tsukiko_1.default.String()).check(locales)) {
46
+ state = false;
47
+ return;
48
+ }
49
+ this.instance.use({ type: type, locales });
50
+ });
51
+ return state;
52
+ }
53
+ use(data) {
54
+ if (typeof data !== 'string') {
55
+ this.instance.use(data);
56
+ return true;
57
+ }
58
+ if (!(0, fs_1.existsSync)(data) || !(0, fs_1.statSync)(data).isDirectory())
59
+ return false;
60
+ this.localePathList.push(data);
61
+ return this.loader(data);
62
+ }
63
+ }
64
+ exports.Locale = Locale;
65
+ exports.default = Locale;
@@ -0,0 +1,6 @@
1
+ export declare namespace JSX {
2
+ interface IntrinsicElements {
3
+ render: unknown;
4
+ }
5
+ }
6
+ export default JSX;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@kotori-bot/core",
3
+ "version": "v1.1.0",
4
+ "description": "Kotori Core",
5
+ "main": "lib/index.js",
6
+ "license": "GPL-3.0",
7
+ "author": "Hotaru <biyuehuya@gmail.com>",
8
+ "keywords": [
9
+ "chatbot",
10
+ "bot",
11
+ "kotori"
12
+ ],
13
+ "files": [
14
+ "lib"
15
+ ],
16
+ "bugs": {
17
+ "url": "https://github.com/kotorijs/kotori/issues"
18
+ },
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "git+https://github.com/kotorijs/kotori.git"
22
+ },
23
+ "homepage": "https://kotori.js.org",
24
+ "dependencies": {
25
+ "tsukiko": "^1.2.1",
26
+ "@kotori-bot/i18n": "^1.1.2",
27
+ "@kotori-bot/tools": "^1.1.0",
28
+ "@kotori-bot/logger": "^1.0.0"
29
+ }
30
+ }