@yumerijs/core 1.0.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.
@@ -0,0 +1,24 @@
1
+ interface Plugin {
2
+ apply: (core: Core) => Promise<void>;
3
+ }
4
+ interface PluginLoader {
5
+ load: (pluginName: string) => Promise<Plugin>;
6
+ }
7
+ interface CoreOptions {
8
+ }
9
+ declare class Core {
10
+ plugins: {
11
+ [name: string]: Plugin;
12
+ };
13
+ config: any;
14
+ private eventListeners;
15
+ private components;
16
+ constructor(options?: CoreOptions);
17
+ loadConfig(configPath: string): Promise<void>;
18
+ loadPlugins(pluginLoader: PluginLoader): Promise<void>;
19
+ registerComponent(name: string, component: any): void;
20
+ getComponent(name: string): any;
21
+ on(event: string, listener: (...args: any[]) => Promise<void>): void;
22
+ emit(event: string, ...args: any[]): Promise<void>;
23
+ }
24
+ export default Core;
package/dist/index.js ADDED
@@ -0,0 +1,120 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const yaml = __importStar(require("js-yaml"));
37
+ const fs = __importStar(require("fs"));
38
+ class Core {
39
+ constructor(options) {
40
+ this.plugins = {};
41
+ this.config = null;
42
+ this.eventListeners = {};
43
+ this.components = {};
44
+ // 可以根据 options 初始化
45
+ }
46
+ // 加载配置文件
47
+ async loadConfig(configPath) {
48
+ try {
49
+ const doc = yaml.load(fs.readFileSync(configPath, 'utf8'));
50
+ this.config = doc;
51
+ console.log('Config loaded:', this.config);
52
+ }
53
+ catch (e) {
54
+ console.error('Failed to load config:', e);
55
+ throw e; // 抛出异常,让上层处理
56
+ }
57
+ }
58
+ // 加载插件
59
+ async loadPlugins(pluginLoader) {
60
+ if (!this.config || !this.config.plugins) {
61
+ console.log('No plugins to load.');
62
+ return;
63
+ }
64
+ for (const pluginName of this.config.plugins) {
65
+ try {
66
+ console.log(`Loading plugin: ${pluginName}`);
67
+ const plugin = await pluginLoader.load(pluginName);
68
+ this.plugins[pluginName] = plugin;
69
+ console.log(`Plugin ${pluginName} loaded.`);
70
+ if (plugin.apply) {
71
+ console.log(`Applying plugin: ${pluginName}`);
72
+ await plugin.apply(this);
73
+ console.log(`Plugin ${pluginName} applied.`);
74
+ }
75
+ }
76
+ catch (err) {
77
+ console.error(`Failed to load plugin ${pluginName}:`, err);
78
+ }
79
+ }
80
+ }
81
+ // 注册组件
82
+ registerComponent(name, component) {
83
+ if (this.components[name]) {
84
+ console.warn(`Component "${name}" already registered.`);
85
+ }
86
+ this.components[name] = component;
87
+ console.log(`Component "${name}" registered.`);
88
+ }
89
+ // 获取组件
90
+ getComponent(name) {
91
+ return this.components[name];
92
+ }
93
+ // 事件系统:监听事件
94
+ on(event, listener) {
95
+ if (!this.eventListeners[event]) {
96
+ this.eventListeners[event] = [];
97
+ }
98
+ this.eventListeners[event].push(listener);
99
+ console.log(`Listener added for event "${event}".`);
100
+ }
101
+ // 事件系统:触发事件
102
+ async emit(event, ...args) {
103
+ if (this.eventListeners[event]) {
104
+ console.log(`Emitting event "${event}" with args:`, args);
105
+ for (const listener of this.eventListeners[event]) {
106
+ try {
107
+ await listener(...args);
108
+ }
109
+ catch (err) {
110
+ console.error(`Error in event listener for "${event}":`, err);
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ console.log(`No listeners for event "${event}".`);
116
+ }
117
+ }
118
+ }
119
+ exports.default = Core;
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@yumerijs/core",
3
+ "version": "1.0.0",
4
+ "description": "Core module for yumeri",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "prepublishOnly": "npm run build"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/WindyPear-Team/yumeri.git"
17
+ },
18
+ "keywords": [
19
+ "yumeri",
20
+ "API"
21
+ ],
22
+ "author": "WindyPear-Team,FireGuo",
23
+ "license": "MIT",
24
+ "bugs": {
25
+ "url": "https://github.com/WindyPear-Team/yumeri/issues"
26
+ },
27
+ "homepage": "https://github.com/WindyPear-Team/yumeri#readme",
28
+ "devDependencies": {
29
+ "@types/js-yaml": "^4.0.9",
30
+ "@types/node": "^22.13.10",
31
+ "typescript": "^5.8.2"
32
+ },
33
+ "dependencies": {
34
+ "js-yaml": "^4.1.0"
35
+ }
36
+ }