{"id":27548951,"url":"https://github.com/code-jio/enginekernel","last_synced_at":"2026-05-11T07:36:23.237Z","repository":{"id":287351468,"uuid":"964392912","full_name":"Code-jio/EngineKernel","owner":"Code-jio","description":"EngineCore - 基于 TypeScript 的微内核插件引擎，提供安全可靠的插件生命周期管理、依赖注入和沙箱隔离。支持 Webpack 多环境构建，适用于企业级插件化架构解决方案。","archived":false,"fork":false,"pushed_at":"2025-07-07T07:03:10.000Z","size":13886,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-07T07:28:21.390Z","etag":null,"topics":["dependency-injection","event-bus","lifecycle-management","microkernel","plugin-architecture","sandbox","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Code-jio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-11T06:28:29.000Z","updated_at":"2025-07-07T07:03:14.000Z","dependencies_parsed_at":"2025-04-26T15:31:57.444Z","dependency_job_id":"2e1a1f26-3510-4f3c-b7ca-8bf781e6c506","html_url":"https://github.com/Code-jio/EngineKernel","commit_stats":null,"previous_names":["code-jio/engine-test","code-jio/enginecore","code-jio/enginekernel"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/Code-jio/EngineKernel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-jio%2FEngineKernel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-jio%2FEngineKernel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-jio%2FEngineKernel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-jio%2FEngineKernel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Code-jio","download_url":"https://codeload.github.com/Code-jio/EngineKernel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Code-jio%2FEngineKernel/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265793684,"owners_count":23829180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dependency-injection","event-bus","lifecycle-management","microkernel","plugin-architecture","sandbox","typescript","webpack"],"created_at":"2025-04-19T04:30:27.226Z","updated_at":"2026-05-11T07:36:23.169Z","avatar_url":"https://github.com/Code-jio.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EngineCore - 微内核架构引擎核心\n\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![Build Status](https://img.shields.io/badge/build-passing-brightgreen)](https://github.com/yourname/engine-test/actions)\n[![Core Size](https://img.shields.io/badge/core_size-80KB_(gzip)-success)](https://bundlephobia.com/package/@engine-core/core)\n\n现代Web应用插件化解决方案，提供安全稳定的插件生命周期管理和模块通信能力。\n\n## 🚀 核心优势\n\n### 🧩 微内核架构\n\n- **核心系统** \u003c80KB (gzip)\n- **冷启动时间** \u003c50ms\n- **模块化设计**：Core/EventBus/PluginManager 三大基础模块\n\n### 🔌 动态插件管理\n\n- **DAG依赖解析**：基于PluginMeta规范自动拓扑排序\n- **7态生命周期**：INSTALLED → RESOLVED → STARTING → ACTIVE → STOPPING → UNINSTALLED\n- **混合加载策略**：同步/异步双模式（默认3000ms超时保护）\n\n### 🛡️ 安全沙箱系统\n\n```mermaid\ngraph TD\n   沙箱引擎 --\u003e 环境隔离层\n   环境隔离层 --\u003e|双重防护| iframe沙箱\n   环境隔离层 --\u003e|策略注入| CSP引擎\n   iframe沙箱 --\u003e 资源代理层\n   CSP引擎 --\u003e 动态策略生成器\n```\n\n- **四层防护机制**：环境隔离 → 资源代理 → 策略注入 → 行为监控\n- **白名单管控**：通过validatePluginSource验证插件来源\n\n### ⚡ 事件中枢系统\n\n```typescript\n// eventBus.ts 类型化事件定义\ninterface CoreEvent {\n  PLUGIN_REGISTERED: { name: string; version: string }\n  PLUGIN_UNREGISTERED: string\n  SANDBOX_READY: DOMException | null\n}\n```\n\n- **百万级吞吐**：支持1M+ events/min\n- **强类型事件**：基于TypeScript类型推导\n- **响应延迟**：99%事件 \u003c5ms\n\n## 🛠️ 快速集成\n\n### 安装\n\n```bash\nnpm install enginekernel\n```\n\n### 初始化引擎\n\n```javascript\nimport EngineCore from 'enginekernel';\nimport LoggerPlugin from './plugins/logger';\n\nconst core = new EngineCore({\n  sandbox: {\n    enabled: true,\n    csp: {\n      'default-src': ['self']\n    }\n  }\n});\n\n// 注册插件\ncore.registerPlugin({\n  name: 'logger',\n  path: './plugins/logger.js',\n  strategy: 'async',\n  dependencies: ['metrics']\n});\n\n// 初始化系统\ncore.init().then(() =\u003e {\n  console.log('EngineCore 初始化完成');\n});\n```\n\n## 🏗️ 系统架构\n\n```mermaid\ngraph LR\n    Core[核心系统] --\u003e|生命周期管理| PluginManager\n    Core --\u003e|事件路由| EventBus\n    PluginManager --\u003e|加载| PluginLoader\n    PluginLoader --\u003e|沙箱环境| Sandbox\n    Sandbox --\u003e|安全策略| SecurityPolicy\n    EventBus -.-\u003e |类型检查| TypeSystem\n```\n\n## 🔧 插件开发\n\n### 插件规范\n\n```typescript\n// basePlugin.ts 基础接口\nexport default abstract class BasePlugin {\n  abstract name: string;\n  abstract initialize(core: EngineCore): Promise\u003cvoid\u003e;\n  abstract uninstall(): void;\n  \n  // 依赖声明\n  get dependencies(): string[] {\n    return [];\n  }\n}\n```\n\n### 示例插件\n\n```javascript\nexport default class NetworkMonitor extends BasePlugin {\n  constructor(core) {\n    super();\n    this.core = core;\n    this.name = 'network-monitor';\n  }\n\n  async initialize() {\n    this.core.eventBus.on('NETWORK_REQUEST', this.handleRequest);\n  }\n\n  handleRequest = (data) =\u003e {\n    console.log(`[${this.name}]`, data);\n    this.core.eventBus.emit('METRICS_UPDATE', {\n      type: 'network',\n      count: 1\n    });\n  }\n\n  uninstall() {\n    this.core.eventBus.off('NETWORK_REQUEST', this.handleRequest);\n  }\n}\n```\n\n## 🔒 安全规范\n\n### CSP策略生成\n\n```javascript\n// security.ts 动态策略生成\nfunction generateCSP(policies) {\n  return Object.entries(policies)\n    .map(([directive, sources]) =\u003e {\n      return `${directive} ${sources.join(' ')}`;\n    }).join('; ');\n}\n```\n\n### 插件验证\n\n```typescript\n// PluginManager.ts 插件加载前校验\nprivate validatePlugin(meta: PluginMeta): boolean {\n  return (\n    /^[a-zA-Z0-9_-]+$/.test(meta.name) \u0026\u0026\n    this.security.validatePluginSource(meta.path) \u0026\u0026\n    !this.activePlugins.has(meta.name)\n  );\n}\n```\n\n## 📜 构建命令\n\n```bash\nnpm run build  # 生产构建（输出engine-core.min.js）\nnpm run dev    # 开发模式（带HMR热更新）\nnpm run analyze # 包体积分析\n```\n\n## 📚 API 文档\n\n### EngineCore 实例\n\n| 方法             | 参数         | 返回值     | 说明         |\n| ---------------- | ------------ | ---------- | ------------ |\n| registerPlugin   | PluginMeta   | void       | 注册新插件   |\n| unregisterPlugin | name: string | boolean    | 卸载插件     |\n| getPlugin        | name: string | BasePlugin | 获取插件实例 |\n\n### PluginMeta 结构\n\n```typescript\ninterface PluginMeta {\n  name: string;\n  path: string;\n  strategy?: 'sync' | 'async';\n  dependencies?: string[];\n  metadata?: Record\u003cstring, any\u003e;\n}\n```\n\n## 🤝 参与贡献\n\n1. 遵循 ESLint 规范\n2. 重要变更需更新类型定义（/types）\n3. 提交信息使用 Conventional Commits 格式\n4. 新功能需提供单元测试\n\n### 后续计划\n\n1. [ ] 核心系统与各个插件分离\n2. [ ] 核心架构的各模块权责有没有划分清楚？\n3. [ ] 各个插件在初始化之前需要访问已安装的插件实例，此功能需要实现\n4. [ ] 资源读取插件中有关于资源缓存部分的功能不生效，该部分需要纠正\n5. [ ] 简化各个插件初始化流程与参数\n6. [ ] 室内路径规划探究（二维、三维情况下的最优路径、探究相关算法、埋点）\n\n---\n\n📮 技术支持：\n\n- 问题跟踪：[GitHub Issues](https://github.com/yourname/engine-test/issues)\n- 技术讨论：[Discussions](https://github.com/yourname/engine-test/discussions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-jio%2Fenginekernel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcode-jio%2Fenginekernel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcode-jio%2Fenginekernel/lists"}