@cruxjs/base 0.0.7 → 0.0.8

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/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  </div>
9
9
 
10
10
  <div align="center">
11
- <img src="https://img.shields.io/badge/v-0.0.7-black"/>
11
+ <img src="https://img.shields.io/badge/v-0.0.8-black"/>
12
12
  <img src="https://img.shields.io/badge/🔥-@cruxjs-black"/>
13
13
  <br>
14
14
  <img src="https://img.shields.io/github/issues/cruxjs-org/base?style=flat" alt="Github Repo Issues" />
package/dist/index.cjs CHANGED
@@ -1,3 +1,2 @@
1
- 'use strict';var g=class{constructor(e=false){this.debug=e;}phase(e){this.debug&&console.log(`
2
- [CruxJS] \u26A1 Phase: ${e}`);}info(e){this.debug&&console.log(`[CruxJS] ${e}`);}success(e){this.debug&&console.log(`[CruxJS] \u2713 ${e}`);}error(e,t){console.error(`[CruxJS] \u2717 ${e}`),t&&console.error(t);}plugin(e,t){this.debug&&console.log(`[CruxJS:${e}] ${t}`);}};var a=class{constructor(e){this.logger=e;}mergeRoutes(e=[],t=[]){let o=[...e],i=new Set(e.map(s=>`${s.method}:${s.path}`));for(let s of t){let n=`${s.method}:${s.path}`;i.has(n)?this.logger.info(`Skipping plugin route ${n} (overridden by user)`):o.push(s);}return o}mergeSchemas(e=[],t=[]){let o=[...e],i=new Set(e.map(s=>s.name));for(let s of t)i.has(s.name)?this.logger.info(`Skipping plugin schema ${s.name} (overridden by user)`):o.push(s);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var l=class{constructor(e){this.plugins=[];this.logger=e;}async register(e,t){this.logger.info(`Registering plugin: ${e.name}`),this.plugins.push(e),e.onRegister&&await e.onRegister(t),this.logger.success(`Plugin registered: ${e.name} v${e.version}`);}getAll(){return this.plugins}async callHook(e,t){for(let o of this.plugins)o[e]&&(this.logger.plugin(o.name,`Calling ${e}`),await o[e](t));}collectRoutes(){let e=[];for(let t of this.plugins)t.routes&&(e.push(...t.routes),this.logger.plugin(t.name,`Provided ${t.routes.length} routes`));return e}collectSchemas(){let e=[];for(let t of this.plugins)t.schemas&&(e.push(...t.schemas),this.logger.plugin(t.name,`Provided ${t.schemas.length} schemas`));return e}collectMiddlewares(){let e=new Map;for(let t of this.plugins)if(t.middlewares)for(let o of t.middlewares)e.set(`${t.name}:${o.name}`,o.handler),this.logger.plugin(t.name,`Provided middleware: ${o.name}`);return e}collectStatic(){let e=[];for(let t of this.plugins)t.static&&(e.push(...t.static),this.logger.plugin(t.name,`Provided ${t.static.length} static configs`));return e}};exports.Logger=g;exports.PluginRegistry=l;exports.ResourceMerger=a;//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var logger=require('@minejs/logger');var i=new logger.Logger("debug",true,"[CruxJS]");var a=class{constructor(){}mergeRoutes(e=[],t=[]){let o=[...e],n=new Set(e.map(s=>`${s.method}:${s.path}`));for(let s of t){let r=`${s.method}:${s.path}`;n.has(r)?i.debug(`Skipping plugin route ${r} (overridden by user)`):o.push(s);}return o}mergeSchemas(e=[],t=[]){let o=[...e],n=new Set(e.map(s=>s.name));for(let s of t)n.has(s.name)?i.debug(`Skipping plugin schema ${s.name} (overridden by user)`):o.push(s);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var c=class{constructor(){this.plugins=[];}async register(e,t){i.debug(`Registering plugin: ${e.name}`),this.plugins.push(e),e.onRegister&&await e.onRegister(t),i.debug(`Plugin registered: ${e.name} v${e.version}`);}getAll(){return this.plugins}async callHook(e,t){for(let o of this.plugins)o[e]&&(i.debug(o.name,`Calling ${e}`),await o[e](t));}collectRoutes(){let e=[];for(let t of this.plugins)t.routes&&(e.push(...t.routes),i.debug(t.name,`Provided ${t.routes.length} routes`));return e}collectSchemas(){let e=[];for(let t of this.plugins)t.schemas&&(e.push(...t.schemas),i.debug(t.name,`Provided ${t.schemas.length} schemas`));return e}collectMiddlewares(){let e=new Map;for(let t of this.plugins)if(t.middlewares)for(let o of t.middlewares)e.set(`${t.name}:${o.name}`,o.handler),i.debug(t.name,`Provided middleware: ${o.name}`);return e}collectStatic(){let e=[];for(let t of this.plugins)t.static&&(e.push(...t.static),i.debug(t.name,`Provided ${t.static.length} static configs`));return e}};exports.PluginRegistry=c;exports.ResourceMerger=a;exports.logger=i;//# sourceMappingURL=index.cjs.map
3
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mod/logger.ts","../src/mod/resource_merger.ts","../src/mod/plugin_registry.ts"],"names":["Logger","debug","name","msg","err","ResourceMerger","logger","userRoutes","pluginRoutes","merged","userPaths","r","route","key","userSchemas","pluginSchemas","userTables","schema","userStatic","pluginStatic","PluginRegistry","plugin","app","hook","ctx","routes","schemas","middlewares","mw","statics"],"mappings":"aAeW,IAAMA,EAAN,KAAa,CAChB,WAAA,CAAoBC,CAAAA,CAAiB,MAAO,CAAxB,IAAA,CAAA,KAAA,CAAAA,EAAyB,CAE7C,MAAMC,CAAAA,CAAc,CACX,IAAA,CAAK,KAAA,EACV,QAAQ,GAAA,CAAI;AAAA,uBAAA,EAAuBA,CAAI,EAAE,EAC7C,CAEA,KAAKC,CAAAA,CAAa,CACT,IAAA,CAAK,KAAA,EACV,OAAA,CAAQ,GAAA,CAAI,YAAYA,CAAG,CAAA,CAAE,EACjC,CAEA,OAAA,CAAQA,EAAa,CACZ,IAAA,CAAK,KAAA,EACV,OAAA,CAAQ,GAAA,CAAI,CAAA,gBAAA,EAAcA,CAAG,CAAA,CAAE,EACnC,CAEA,KAAA,CAAMA,CAAAA,CAAaC,EAAa,CAC5B,OAAA,CAAQ,KAAA,CAAM,CAAA,gBAAA,EAAcD,CAAG,CAAA,CAAE,EAC7BC,CAAAA,EAAK,OAAA,CAAQ,MAAMA,CAAG,EAC9B,CAEA,MAAA,CAAOF,CAAAA,CAAcC,CAAAA,CAAa,CACzB,IAAA,CAAK,KAAA,EACV,QAAQ,GAAA,CAAI,CAAA,QAAA,EAAWD,CAAI,CAAA,EAAA,EAAKC,CAAG,EAAE,EACzC,CACJ,ECzBO,IAAME,CAAAA,CAAN,KAAqB,CAGxB,WAAA,CAAYC,CAAAA,CAAgB,CACxB,IAAA,CAAK,MAAA,CAASA,EAClB,CAEA,WAAA,CACIC,CAAAA,CAAgC,EAAC,CACjCC,CAAAA,CAAkC,EAAC,CAClB,CAEjB,IAAMC,CAAAA,CAAS,CAAC,GAAGF,CAAU,CAAA,CACvBG,CAAAA,CAAY,IAAI,GAAA,CAAIH,CAAAA,CAAW,IAAII,CAAAA,EAAK,CAAA,EAAGA,CAAAA,CAAE,MAAM,CAAA,CAAA,EAAIA,CAAAA,CAAE,IAAI,CAAA,CAAE,CAAC,CAAA,CAEtE,IAAA,IAAWC,CAAAA,IAASJ,CAAAA,CAAc,CAC9B,IAAMK,CAAAA,CAAM,GAAGD,CAAAA,CAAM,MAAM,IAAIA,CAAAA,CAAM,IAAI,CAAA,CAAA,CAEpCF,CAAAA,CAAU,GAAA,CAAIG,CAAG,EAGlB,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,sBAAA,EAAyBA,CAAG,uBAAuB,CAAA,CAFpEJ,CAAAA,CAAO,IAAA,CAAKG,CAAK,EAIzB,CAEA,OAAOH,CACX,CAEA,aACIK,CAAAA,CAA6B,GAC7BC,CAAAA,CAA+B,EAAC,CACnB,CAEb,IAAMN,CAAAA,CAAS,CAAC,GAAGK,CAAW,CAAA,CACxBE,CAAAA,CAAa,IAAI,GAAA,CAAIF,EAAY,GAAA,CAAI,CAAA,EAAK,CAAA,CAAE,IAAI,CAAC,CAAA,CAEvD,QAAWG,CAAAA,IAAUF,CAAAA,CACZC,EAAW,GAAA,CAAIC,CAAAA,CAAO,IAAI,CAAA,CAG3B,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,uBAAA,EAA0BA,CAAAA,CAAO,IAAI,CAAA,qBAAA,CAAuB,CAAA,CAF7ER,EAAO,IAAA,CAAKQ,CAAM,EAM1B,OAAOR,CACX,CAEA,WAAA,CACIS,CAAAA,CAA6B,GAC7BC,CAAAA,CAA+B,GACjB,CACd,OAAO,CAAC,GAAGD,CAAAA,CAAY,GAAGC,CAAY,CAC1C,CACJ,ECrDO,IAAMC,CAAAA,CAAN,KAAqB,CAIxB,WAAA,CAAYd,CAAAA,CAAgB,CAH5B,IAAA,CAAQ,OAAA,CAA8B,EAAC,CAInC,IAAA,CAAK,MAAA,CAASA,EAClB,CAEA,MAAM,SAASe,CAAAA,CAA0BC,CAAAA,CAAwB,CAC7D,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,CAAA,oBAAA,EAAuBD,CAAAA,CAAO,IAAI,EAAE,CAAA,CAErD,IAAA,CAAK,QAAQ,IAAA,CAAKA,CAAM,EAGpBA,CAAAA,CAAO,UAAA,EACP,MAAMA,CAAAA,CAAO,UAAA,CAAWC,CAAG,EAG/B,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAA,mBAAA,EAAsBD,CAAAA,CAAO,IAAI,CAAA,EAAA,EAAKA,CAAAA,CAAO,OAAO,CAAA,CAAE,EAC9E,CAEA,QAA6B,CACzB,OAAO,IAAA,CAAK,OAChB,CAEA,MAAM,SACFE,CAAAA,CACAC,CAAAA,CACF,CACE,IAAA,IAAWH,CAAAA,IAAU,IAAA,CAAK,QAClBA,CAAAA,CAAOE,CAAI,IACX,IAAA,CAAK,MAAA,CAAO,OAAOF,CAAAA,CAAO,IAAA,CAAM,CAAA,QAAA,EAAWE,CAAI,CAAA,CAAE,CAAA,CACjD,MAAMF,CAAAA,CAAOE,CAAI,EAAGC,CAAG,CAAA,EAGnC,CAEA,aAAA,EAAyC,CACrC,IAAMC,CAAAA,CAAkC,EAAC,CAEzC,QAAWJ,CAAAA,IAAU,IAAA,CAAK,QAClBA,CAAAA,CAAO,MAAA,GACPI,EAAO,IAAA,CAAK,GAAGJ,CAAAA,CAAO,MAAM,CAAA,CAC5B,IAAA,CAAK,OAAO,MAAA,CAAOA,CAAAA,CAAO,IAAA,CAAM,CAAA,SAAA,EAAYA,CAAAA,CAAO,MAAA,CAAO,MAAM,CAAA,OAAA,CAAS,CAAA,CAAA,CAIjF,OAAOI,CACX,CAEA,cAAA,EAAsC,CAClC,IAAMC,CAAAA,CAA+B,EAAC,CAEtC,IAAA,IAAWL,KAAU,IAAA,CAAK,OAAA,CAClBA,CAAAA,CAAO,OAAA,GACPK,CAAAA,CAAQ,IAAA,CAAK,GAAGL,CAAAA,CAAO,OAAO,EAC9B,IAAA,CAAK,MAAA,CAAO,OAAOA,CAAAA,CAAO,IAAA,CAAM,CAAA,SAAA,EAAYA,CAAAA,CAAO,OAAA,CAAQ,MAAM,UAAU,CAAA,CAAA,CAInF,OAAOK,CACX,CAEA,kBAAA,EAAuD,CACnD,IAAMC,CAAAA,CAAc,IAAI,GAAA,CAExB,IAAA,IAAWN,CAAAA,IAAU,KAAK,OAAA,CAC1B,GAAIA,CAAAA,CAAO,WAAA,CACP,IAAA,IAAWO,CAAAA,IAAMP,EAAO,WAAA,CACpBM,CAAAA,CAAY,GAAA,CAAI,CAAA,EAAGN,CAAAA,CAAO,IAAI,IAAIO,CAAAA,CAAG,IAAI,GAAIA,CAAAA,CAAG,OAAO,EACvD,IAAA,CAAK,MAAA,CAAO,MAAA,CAAOP,CAAAA,CAAO,IAAA,CAAM,CAAA,qBAAA,EAAwBO,EAAG,IAAI,CAAA,CAAE,EAKzE,OAAOD,CACX,CAEA,aAAA,EAAsC,CAClC,IAAME,CAAAA,CAAgC,EAAC,CAEvC,QAAWR,CAAAA,IAAU,IAAA,CAAK,QAClBA,CAAAA,CAAO,MAAA,GACPQ,EAAQ,IAAA,CAAK,GAAGR,CAAAA,CAAO,MAAM,CAAA,CAC7B,IAAA,CAAK,OAAO,MAAA,CAAOA,CAAAA,CAAO,IAAA,CAAM,CAAA,SAAA,EAAYA,CAAAA,CAAO,MAAA,CAAO,MAAM,CAAA,eAAA,CAAiB,CAAA,CAAA,CAIzF,OAAOQ,CACX,CACJ","file":"index.cjs","sourcesContent":["// src/mod/logger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class Logger {\r\n constructor(private debug: boolean = false) {}\r\n\r\n phase(name: string) {\r\n if (!this.debug) return;\r\n console.log(`\\n[CruxJS] ⚡ Phase: ${name}`);\r\n }\r\n\r\n info(msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS] ${msg}`);\r\n }\r\n\r\n success(msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS] ✓ ${msg}`);\r\n }\r\n\r\n error(msg: string, err?: Error) {\r\n console.error(`[CruxJS] ✗ ${msg}`);\r\n if (err) console.error(err);\r\n }\r\n\r\n plugin(name: string, msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS:${name}] ${msg}`);\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/resource_merger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { RouteDefinition, TableSchema, StaticConfig } from '../types';\r\n import { Logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class ResourceMerger {\r\n private logger: Logger;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n }\r\n\r\n mergeRoutes(\r\n userRoutes: RouteDefinition[] = [],\r\n pluginRoutes: RouteDefinition[] = []\r\n ): RouteDefinition[] {\r\n // User routes have priority\r\n const merged = [...userRoutes];\r\n const userPaths = new Set(userRoutes.map(r => `${r.method}:${r.path}`));\r\n\r\n for (const route of pluginRoutes) {\r\n const key = `${route.method}:${route.path}`;\r\n\r\n if (!userPaths.has(key)) {\r\n merged.push(route);\r\n } else {\r\n this.logger.info(`Skipping plugin route ${key} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeSchemas(\r\n userSchemas: TableSchema[] = [],\r\n pluginSchemas: TableSchema[] = []\r\n ): TableSchema[] {\r\n // User schemas have priority\r\n const merged = [...userSchemas];\r\n const userTables = new Set(userSchemas.map(s => s.name));\r\n\r\n for (const schema of pluginSchemas) {\r\n if (!userTables.has(schema.name)) {\r\n merged.push(schema);\r\n } else {\r\n this.logger.info(`Skipping plugin schema ${schema.name} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeStatic(\r\n userStatic: StaticConfig[] = [],\r\n pluginStatic: StaticConfig[] = []\r\n ): StaticConfig[] {\r\n return [...userStatic, ...pluginStatic];\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/plugin_registry.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import * as types from '../types';\r\n import { Logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class PluginRegistry {\r\n private plugins: types.CruxPlugin[] = [];\r\n private logger: Logger;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n }\r\n\r\n async register(plugin: types.CruxPlugin, app: types.AppInstance) {\r\n this.logger.info(`Registering plugin: ${plugin.name}`);\r\n\r\n this.plugins.push(plugin);\r\n\r\n // Call plugin's onRegister hook\r\n if (plugin.onRegister) {\r\n await plugin.onRegister(app);\r\n }\r\n\r\n this.logger.success(`Plugin registered: ${plugin.name} v${plugin.version}`);\r\n }\r\n\r\n getAll(): types.CruxPlugin[] {\r\n return this.plugins;\r\n }\r\n\r\n async callHook(\r\n hook: keyof Pick<types.CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>,\r\n ctx: types.LifecycleContext\r\n ) {\r\n for (const plugin of this.plugins) {\r\n if (plugin[hook]) {\r\n this.logger.plugin(plugin.name, `Calling ${hook}`);\r\n await plugin[hook]!(ctx);\r\n }\r\n }\r\n }\r\n\r\n collectRoutes(): types.RouteDefinition[] {\r\n const routes: types.RouteDefinition[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.routes) {\r\n routes.push(...plugin.routes);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.routes.length} routes`);\r\n }\r\n }\r\n\r\n return routes;\r\n }\r\n\r\n collectSchemas(): types.TableSchema[] {\r\n const schemas: types.TableSchema[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.schemas) {\r\n schemas.push(...plugin.schemas);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.schemas.length} schemas`);\r\n }\r\n }\r\n\r\n return schemas;\r\n }\r\n\r\n collectMiddlewares(): Map<string, types.AppMiddleware> {\r\n const middlewares = new Map<string, types.AppMiddleware>();\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.middlewares) {\r\n for (const mw of plugin.middlewares) {\r\n middlewares.set(`${plugin.name}:${mw.name}`, mw.handler);\r\n this.logger.plugin(plugin.name, `Provided middleware: ${mw.name}`);\r\n }\r\n }\r\n }\r\n\r\n return middlewares;\r\n }\r\n\r\n collectStatic(): types.StaticConfig[] {\r\n const statics: types.StaticConfig[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.static) {\r\n statics.push(...plugin.static);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.static.length} static configs`);\r\n }\r\n }\r\n\r\n return statics;\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
1
+ {"version":3,"sources":["../src/mod/logger.ts","../src/mod/resource_merger.ts","../src/mod/plugin_registry.ts"],"names":["logger","Logger","ResourceMerger","userRoutes","pluginRoutes","merged","userPaths","r","route","key","userSchemas","pluginSchemas","userTables","schema","userStatic","pluginStatic","PluginRegistry","plugin","app","hook","ctx","routes","schemas","middlewares","mw","statics"],"mappings":"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","file":"index.cjs","sourcesContent":["// src/mod/logger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { Logger } from '@minejs/logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export const logger = new Logger('debug', true, '[CruxJS]');\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/resource_merger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { RouteDefinition, TableSchema, StaticConfig } from '../types';\r\n import { logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class ResourceMerger {\r\n\r\n constructor() {\r\n }\r\n\r\n mergeRoutes(\r\n userRoutes: RouteDefinition[] = [],\r\n pluginRoutes: RouteDefinition[] = []\r\n ): RouteDefinition[] {\r\n // User routes have priority\r\n const merged = [...userRoutes];\r\n const userPaths = new Set(userRoutes.map(r => `${r.method}:${r.path}`));\r\n\r\n for (const route of pluginRoutes) {\r\n const key = `${route.method}:${route.path}`;\r\n\r\n if (!userPaths.has(key)) {\r\n merged.push(route);\r\n } else {\r\n logger.debug(`Skipping plugin route ${key} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeSchemas(\r\n userSchemas: TableSchema[] = [],\r\n pluginSchemas: TableSchema[] = []\r\n ): TableSchema[] {\r\n // User schemas have priority\r\n const merged = [...userSchemas];\r\n const userTables = new Set(userSchemas.map(s => s.name));\r\n\r\n for (const schema of pluginSchemas) {\r\n if (!userTables.has(schema.name)) {\r\n merged.push(schema);\r\n } else {\r\n logger.debug(`Skipping plugin schema ${schema.name} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeStatic(\r\n userStatic: StaticConfig[] = [],\r\n pluginStatic: StaticConfig[] = []\r\n ): StaticConfig[] {\r\n return [...userStatic, ...pluginStatic];\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/plugin_registry.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import * as types from '../types';\r\n import { logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class PluginRegistry {\r\n private plugins: types.CruxPlugin[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n async register(plugin: types.CruxPlugin, app: types.AppInstance) {\r\n logger.debug(`Registering plugin: ${plugin.name}`);\r\n\r\n this.plugins.push(plugin);\r\n\r\n // Call plugin's onRegister hook\r\n if (plugin.onRegister) {\r\n await plugin.onRegister(app);\r\n }\r\n\r\n logger.debug(`Plugin registered: ${plugin.name} v${plugin.version}`);\r\n }\r\n\r\n getAll(): types.CruxPlugin[] {\r\n return this.plugins;\r\n }\r\n\r\n async callHook(\r\n hook: keyof Pick<types.CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>,\r\n ctx: types.LifecycleContext\r\n ) {\r\n for (const plugin of this.plugins) {\r\n if (plugin[hook]) {\r\n logger.debug(plugin.name, `Calling ${hook}`);\r\n await plugin[hook]!(ctx);\r\n }\r\n }\r\n }\r\n\r\n collectRoutes(): types.RouteDefinition[] {\r\n const routes: types.RouteDefinition[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.routes) {\r\n routes.push(...plugin.routes);\r\n logger.debug(plugin.name, `Provided ${plugin.routes.length} routes`);\r\n }\r\n }\r\n\r\n return routes;\r\n }\r\n\r\n collectSchemas(): types.TableSchema[] {\r\n const schemas: types.TableSchema[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.schemas) {\r\n schemas.push(...plugin.schemas);\r\n logger.debug(plugin.name, `Provided ${plugin.schemas.length} schemas`);\r\n }\r\n }\r\n\r\n return schemas;\r\n }\r\n\r\n collectMiddlewares(): Map<string, types.AppMiddleware> {\r\n const middlewares = new Map<string, types.AppMiddleware>();\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.middlewares) {\r\n for (const mw of plugin.middlewares) {\r\n middlewares.set(`${plugin.name}:${mw.name}`, mw.handler);\r\n logger.debug(plugin.name, `Provided middleware: ${mw.name}`);\r\n }\r\n }\r\n }\r\n\r\n return middlewares;\r\n }\r\n\r\n collectStatic(): types.StaticConfig[] {\r\n const statics: types.StaticConfig[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.static) {\r\n statics.push(...plugin.static);\r\n logger.debug(plugin.name, `Provided ${plugin.static.length} static configs`);\r\n }\r\n }\r\n\r\n return statics;\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
package/dist/index.d.cts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { TableSchema as TableSchema$1, DB } from '@minejs/db';
2
2
  import { AppContext as AppContext$1 } from '@minejs/server';
3
+ import { Logger } from '@minejs/logger';
3
4
 
4
5
  type AppContext = AppContext$1;
5
6
  type TableSchema = TableSchema$1;
@@ -148,19 +149,10 @@ interface AppInstance {
148
149
  getMiddleware(name: string): AppMiddleware | undefined;
149
150
  }
150
151
 
151
- declare class Logger {
152
- private debug;
153
- constructor(debug?: boolean);
154
- phase(name: string): void;
155
- info(msg: string): void;
156
- success(msg: string): void;
157
- error(msg: string, err?: Error): void;
158
- plugin(name: string, msg: string): void;
159
- }
152
+ declare const logger: Logger;
160
153
 
161
154
  declare class ResourceMerger {
162
- private logger;
163
- constructor(logger: Logger);
155
+ constructor();
164
156
  mergeRoutes(userRoutes?: RouteDefinition[], pluginRoutes?: RouteDefinition[]): RouteDefinition[];
165
157
  mergeSchemas(userSchemas?: TableSchema[], pluginSchemas?: TableSchema[]): TableSchema[];
166
158
  mergeStatic(userStatic?: StaticConfig[], pluginStatic?: StaticConfig[]): StaticConfig[];
@@ -168,8 +160,7 @@ declare class ResourceMerger {
168
160
 
169
161
  declare class PluginRegistry {
170
162
  private plugins;
171
- private logger;
172
- constructor(logger: Logger);
163
+ constructor();
173
164
  register(plugin: CruxPlugin, app: AppInstance): Promise<void>;
174
165
  getAll(): CruxPlugin[];
175
166
  callHook(hook: keyof Pick<CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>, ctx: LifecycleContext): Promise<void>;
@@ -179,4 +170,4 @@ declare class PluginRegistry {
179
170
  collectStatic(): StaticConfig[];
180
171
  }
181
172
 
182
- export { type AppConfig, type AppContext, type AppInstance, type AppMiddleware, type CruxPlugin, type LifecycleContext, type LifecycleHooks, Logger, type MiddlewareExport, PluginRegistry, ResourceMerger, type RouteDefinition, type StaticConfig, type TableSchema };
173
+ export { type AppConfig, type AppContext, type AppInstance, type AppMiddleware, type CruxPlugin, type LifecycleContext, type LifecycleHooks, type MiddlewareExport, PluginRegistry, ResourceMerger, type RouteDefinition, type StaticConfig, type TableSchema, logger };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { TableSchema as TableSchema$1, DB } from '@minejs/db';
2
2
  import { AppContext as AppContext$1 } from '@minejs/server';
3
+ import { Logger } from '@minejs/logger';
3
4
 
4
5
  type AppContext = AppContext$1;
5
6
  type TableSchema = TableSchema$1;
@@ -148,19 +149,10 @@ interface AppInstance {
148
149
  getMiddleware(name: string): AppMiddleware | undefined;
149
150
  }
150
151
 
151
- declare class Logger {
152
- private debug;
153
- constructor(debug?: boolean);
154
- phase(name: string): void;
155
- info(msg: string): void;
156
- success(msg: string): void;
157
- error(msg: string, err?: Error): void;
158
- plugin(name: string, msg: string): void;
159
- }
152
+ declare const logger: Logger;
160
153
 
161
154
  declare class ResourceMerger {
162
- private logger;
163
- constructor(logger: Logger);
155
+ constructor();
164
156
  mergeRoutes(userRoutes?: RouteDefinition[], pluginRoutes?: RouteDefinition[]): RouteDefinition[];
165
157
  mergeSchemas(userSchemas?: TableSchema[], pluginSchemas?: TableSchema[]): TableSchema[];
166
158
  mergeStatic(userStatic?: StaticConfig[], pluginStatic?: StaticConfig[]): StaticConfig[];
@@ -168,8 +160,7 @@ declare class ResourceMerger {
168
160
 
169
161
  declare class PluginRegistry {
170
162
  private plugins;
171
- private logger;
172
- constructor(logger: Logger);
163
+ constructor();
173
164
  register(plugin: CruxPlugin, app: AppInstance): Promise<void>;
174
165
  getAll(): CruxPlugin[];
175
166
  callHook(hook: keyof Pick<CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>, ctx: LifecycleContext): Promise<void>;
@@ -179,4 +170,4 @@ declare class PluginRegistry {
179
170
  collectStatic(): StaticConfig[];
180
171
  }
181
172
 
182
- export { type AppConfig, type AppContext, type AppInstance, type AppMiddleware, type CruxPlugin, type LifecycleContext, type LifecycleHooks, Logger, type MiddlewareExport, PluginRegistry, ResourceMerger, type RouteDefinition, type StaticConfig, type TableSchema };
173
+ export { type AppConfig, type AppContext, type AppInstance, type AppMiddleware, type CruxPlugin, type LifecycleContext, type LifecycleHooks, type MiddlewareExport, PluginRegistry, ResourceMerger, type RouteDefinition, type StaticConfig, type TableSchema, logger };
package/dist/index.js CHANGED
@@ -1,3 +1,2 @@
1
- var g=class{constructor(e=false){this.debug=e;}phase(e){this.debug&&console.log(`
2
- [CruxJS] \u26A1 Phase: ${e}`);}info(e){this.debug&&console.log(`[CruxJS] ${e}`);}success(e){this.debug&&console.log(`[CruxJS] \u2713 ${e}`);}error(e,t){console.error(`[CruxJS] \u2717 ${e}`),t&&console.error(t);}plugin(e,t){this.debug&&console.log(`[CruxJS:${e}] ${t}`);}};var a=class{constructor(e){this.logger=e;}mergeRoutes(e=[],t=[]){let o=[...e],i=new Set(e.map(s=>`${s.method}:${s.path}`));for(let s of t){let n=`${s.method}:${s.path}`;i.has(n)?this.logger.info(`Skipping plugin route ${n} (overridden by user)`):o.push(s);}return o}mergeSchemas(e=[],t=[]){let o=[...e],i=new Set(e.map(s=>s.name));for(let s of t)i.has(s.name)?this.logger.info(`Skipping plugin schema ${s.name} (overridden by user)`):o.push(s);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var l=class{constructor(e){this.plugins=[];this.logger=e;}async register(e,t){this.logger.info(`Registering plugin: ${e.name}`),this.plugins.push(e),e.onRegister&&await e.onRegister(t),this.logger.success(`Plugin registered: ${e.name} v${e.version}`);}getAll(){return this.plugins}async callHook(e,t){for(let o of this.plugins)o[e]&&(this.logger.plugin(o.name,`Calling ${e}`),await o[e](t));}collectRoutes(){let e=[];for(let t of this.plugins)t.routes&&(e.push(...t.routes),this.logger.plugin(t.name,`Provided ${t.routes.length} routes`));return e}collectSchemas(){let e=[];for(let t of this.plugins)t.schemas&&(e.push(...t.schemas),this.logger.plugin(t.name,`Provided ${t.schemas.length} schemas`));return e}collectMiddlewares(){let e=new Map;for(let t of this.plugins)if(t.middlewares)for(let o of t.middlewares)e.set(`${t.name}:${o.name}`,o.handler),this.logger.plugin(t.name,`Provided middleware: ${o.name}`);return e}collectStatic(){let e=[];for(let t of this.plugins)t.static&&(e.push(...t.static),this.logger.plugin(t.name,`Provided ${t.static.length} static configs`));return e}};export{g as Logger,l as PluginRegistry,a as ResourceMerger};//# sourceMappingURL=index.js.map
1
+ import {Logger}from'@minejs/logger';var i=new Logger("debug",true,"[CruxJS]");var a=class{constructor(){}mergeRoutes(e=[],t=[]){let o=[...e],n=new Set(e.map(s=>`${s.method}:${s.path}`));for(let s of t){let r=`${s.method}:${s.path}`;n.has(r)?i.debug(`Skipping plugin route ${r} (overridden by user)`):o.push(s);}return o}mergeSchemas(e=[],t=[]){let o=[...e],n=new Set(e.map(s=>s.name));for(let s of t)n.has(s.name)?i.debug(`Skipping plugin schema ${s.name} (overridden by user)`):o.push(s);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var c=class{constructor(){this.plugins=[];}async register(e,t){i.debug(`Registering plugin: ${e.name}`),this.plugins.push(e),e.onRegister&&await e.onRegister(t),i.debug(`Plugin registered: ${e.name} v${e.version}`);}getAll(){return this.plugins}async callHook(e,t){for(let o of this.plugins)o[e]&&(i.debug(o.name,`Calling ${e}`),await o[e](t));}collectRoutes(){let e=[];for(let t of this.plugins)t.routes&&(e.push(...t.routes),i.debug(t.name,`Provided ${t.routes.length} routes`));return e}collectSchemas(){let e=[];for(let t of this.plugins)t.schemas&&(e.push(...t.schemas),i.debug(t.name,`Provided ${t.schemas.length} schemas`));return e}collectMiddlewares(){let e=new Map;for(let t of this.plugins)if(t.middlewares)for(let o of t.middlewares)e.set(`${t.name}:${o.name}`,o.handler),i.debug(t.name,`Provided middleware: ${o.name}`);return e}collectStatic(){let e=[];for(let t of this.plugins)t.static&&(e.push(...t.static),i.debug(t.name,`Provided ${t.static.length} static configs`));return e}};export{c as PluginRegistry,a as ResourceMerger,i as logger};//# sourceMappingURL=index.js.map
3
2
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/mod/logger.ts","../src/mod/resource_merger.ts","../src/mod/plugin_registry.ts"],"names":["Logger","debug","name","msg","err","ResourceMerger","logger","userRoutes","pluginRoutes","merged","userPaths","r","route","key","userSchemas","pluginSchemas","userTables","schema","userStatic","pluginStatic","PluginRegistry","plugin","app","hook","ctx","routes","schemas","middlewares","mw","statics"],"mappings":"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","file":"index.js","sourcesContent":["// src/mod/logger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class Logger {\r\n constructor(private debug: boolean = false) {}\r\n\r\n phase(name: string) {\r\n if (!this.debug) return;\r\n console.log(`\\n[CruxJS] ⚡ Phase: ${name}`);\r\n }\r\n\r\n info(msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS] ${msg}`);\r\n }\r\n\r\n success(msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS] ✓ ${msg}`);\r\n }\r\n\r\n error(msg: string, err?: Error) {\r\n console.error(`[CruxJS] ✗ ${msg}`);\r\n if (err) console.error(err);\r\n }\r\n\r\n plugin(name: string, msg: string) {\r\n if (!this.debug) return;\r\n console.log(`[CruxJS:${name}] ${msg}`);\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/resource_merger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { RouteDefinition, TableSchema, StaticConfig } from '../types';\r\n import { Logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class ResourceMerger {\r\n private logger: Logger;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n }\r\n\r\n mergeRoutes(\r\n userRoutes: RouteDefinition[] = [],\r\n pluginRoutes: RouteDefinition[] = []\r\n ): RouteDefinition[] {\r\n // User routes have priority\r\n const merged = [...userRoutes];\r\n const userPaths = new Set(userRoutes.map(r => `${r.method}:${r.path}`));\r\n\r\n for (const route of pluginRoutes) {\r\n const key = `${route.method}:${route.path}`;\r\n\r\n if (!userPaths.has(key)) {\r\n merged.push(route);\r\n } else {\r\n this.logger.info(`Skipping plugin route ${key} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeSchemas(\r\n userSchemas: TableSchema[] = [],\r\n pluginSchemas: TableSchema[] = []\r\n ): TableSchema[] {\r\n // User schemas have priority\r\n const merged = [...userSchemas];\r\n const userTables = new Set(userSchemas.map(s => s.name));\r\n\r\n for (const schema of pluginSchemas) {\r\n if (!userTables.has(schema.name)) {\r\n merged.push(schema);\r\n } else {\r\n this.logger.info(`Skipping plugin schema ${schema.name} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeStatic(\r\n userStatic: StaticConfig[] = [],\r\n pluginStatic: StaticConfig[] = []\r\n ): StaticConfig[] {\r\n return [...userStatic, ...pluginStatic];\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/plugin_registry.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import * as types from '../types';\r\n import { Logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class PluginRegistry {\r\n private plugins: types.CruxPlugin[] = [];\r\n private logger: Logger;\r\n\r\n constructor(logger: Logger) {\r\n this.logger = logger;\r\n }\r\n\r\n async register(plugin: types.CruxPlugin, app: types.AppInstance) {\r\n this.logger.info(`Registering plugin: ${plugin.name}`);\r\n\r\n this.plugins.push(plugin);\r\n\r\n // Call plugin's onRegister hook\r\n if (plugin.onRegister) {\r\n await plugin.onRegister(app);\r\n }\r\n\r\n this.logger.success(`Plugin registered: ${plugin.name} v${plugin.version}`);\r\n }\r\n\r\n getAll(): types.CruxPlugin[] {\r\n return this.plugins;\r\n }\r\n\r\n async callHook(\r\n hook: keyof Pick<types.CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>,\r\n ctx: types.LifecycleContext\r\n ) {\r\n for (const plugin of this.plugins) {\r\n if (plugin[hook]) {\r\n this.logger.plugin(plugin.name, `Calling ${hook}`);\r\n await plugin[hook]!(ctx);\r\n }\r\n }\r\n }\r\n\r\n collectRoutes(): types.RouteDefinition[] {\r\n const routes: types.RouteDefinition[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.routes) {\r\n routes.push(...plugin.routes);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.routes.length} routes`);\r\n }\r\n }\r\n\r\n return routes;\r\n }\r\n\r\n collectSchemas(): types.TableSchema[] {\r\n const schemas: types.TableSchema[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.schemas) {\r\n schemas.push(...plugin.schemas);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.schemas.length} schemas`);\r\n }\r\n }\r\n\r\n return schemas;\r\n }\r\n\r\n collectMiddlewares(): Map<string, types.AppMiddleware> {\r\n const middlewares = new Map<string, types.AppMiddleware>();\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.middlewares) {\r\n for (const mw of plugin.middlewares) {\r\n middlewares.set(`${plugin.name}:${mw.name}`, mw.handler);\r\n this.logger.plugin(plugin.name, `Provided middleware: ${mw.name}`);\r\n }\r\n }\r\n }\r\n\r\n return middlewares;\r\n }\r\n\r\n collectStatic(): types.StaticConfig[] {\r\n const statics: types.StaticConfig[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.static) {\r\n statics.push(...plugin.static);\r\n this.logger.plugin(plugin.name, `Provided ${plugin.static.length} static configs`);\r\n }\r\n }\r\n\r\n return statics;\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
1
+ {"version":3,"sources":["../src/mod/logger.ts","../src/mod/resource_merger.ts","../src/mod/plugin_registry.ts"],"names":["logger","Logger","ResourceMerger","userRoutes","pluginRoutes","merged","userPaths","r","route","key","userSchemas","pluginSchemas","userTables","schema","userStatic","pluginStatic","PluginRegistry","plugin","app","hook","ctx","routes","schemas","middlewares","mw","statics"],"mappings":"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","file":"index.js","sourcesContent":["// src/mod/logger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { Logger } from '@minejs/logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export const logger = new Logger('debug', true, '[CruxJS]');\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/resource_merger.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import { RouteDefinition, TableSchema, StaticConfig } from '../types';\r\n import { logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class ResourceMerger {\r\n\r\n constructor() {\r\n }\r\n\r\n mergeRoutes(\r\n userRoutes: RouteDefinition[] = [],\r\n pluginRoutes: RouteDefinition[] = []\r\n ): RouteDefinition[] {\r\n // User routes have priority\r\n const merged = [...userRoutes];\r\n const userPaths = new Set(userRoutes.map(r => `${r.method}:${r.path}`));\r\n\r\n for (const route of pluginRoutes) {\r\n const key = `${route.method}:${route.path}`;\r\n\r\n if (!userPaths.has(key)) {\r\n merged.push(route);\r\n } else {\r\n logger.debug(`Skipping plugin route ${key} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeSchemas(\r\n userSchemas: TableSchema[] = [],\r\n pluginSchemas: TableSchema[] = []\r\n ): TableSchema[] {\r\n // User schemas have priority\r\n const merged = [...userSchemas];\r\n const userTables = new Set(userSchemas.map(s => s.name));\r\n\r\n for (const schema of pluginSchemas) {\r\n if (!userTables.has(schema.name)) {\r\n merged.push(schema);\r\n } else {\r\n logger.debug(`Skipping plugin schema ${schema.name} (overridden by user)`);\r\n }\r\n }\r\n\r\n return merged;\r\n }\r\n\r\n mergeStatic(\r\n userStatic: StaticConfig[] = [],\r\n pluginStatic: StaticConfig[] = []\r\n ): StaticConfig[] {\r\n return [...userStatic, ...pluginStatic];\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝","// src/mod/plugin_registry.ts\r\n//\r\n// Made with ❤️ by Maysara.\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ PACK ════════════════════════════════════════╗\r\n\r\n import * as types from '../types';\r\n import { logger } from './logger';\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝\r\n\r\n\r\n\r\n// ╔════════════════════════════════════════ CORE ════════════════════════════════════════╗\r\n\r\n export class PluginRegistry {\r\n private plugins: types.CruxPlugin[] = [];\r\n\r\n constructor() {\r\n }\r\n\r\n async register(plugin: types.CruxPlugin, app: types.AppInstance) {\r\n logger.debug(`Registering plugin: ${plugin.name}`);\r\n\r\n this.plugins.push(plugin);\r\n\r\n // Call plugin's onRegister hook\r\n if (plugin.onRegister) {\r\n await plugin.onRegister(app);\r\n }\r\n\r\n logger.debug(`Plugin registered: ${plugin.name} v${plugin.version}`);\r\n }\r\n\r\n getAll(): types.CruxPlugin[] {\r\n return this.plugins;\r\n }\r\n\r\n async callHook(\r\n hook: keyof Pick<types.CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>,\r\n ctx: types.LifecycleContext\r\n ) {\r\n for (const plugin of this.plugins) {\r\n if (plugin[hook]) {\r\n logger.debug(plugin.name, `Calling ${hook}`);\r\n await plugin[hook]!(ctx);\r\n }\r\n }\r\n }\r\n\r\n collectRoutes(): types.RouteDefinition[] {\r\n const routes: types.RouteDefinition[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.routes) {\r\n routes.push(...plugin.routes);\r\n logger.debug(plugin.name, `Provided ${plugin.routes.length} routes`);\r\n }\r\n }\r\n\r\n return routes;\r\n }\r\n\r\n collectSchemas(): types.TableSchema[] {\r\n const schemas: types.TableSchema[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.schemas) {\r\n schemas.push(...plugin.schemas);\r\n logger.debug(plugin.name, `Provided ${plugin.schemas.length} schemas`);\r\n }\r\n }\r\n\r\n return schemas;\r\n }\r\n\r\n collectMiddlewares(): Map<string, types.AppMiddleware> {\r\n const middlewares = new Map<string, types.AppMiddleware>();\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.middlewares) {\r\n for (const mw of plugin.middlewares) {\r\n middlewares.set(`${plugin.name}:${mw.name}`, mw.handler);\r\n logger.debug(plugin.name, `Provided middleware: ${mw.name}`);\r\n }\r\n }\r\n }\r\n\r\n return middlewares;\r\n }\r\n\r\n collectStatic(): types.StaticConfig[] {\r\n const statics: types.StaticConfig[] = [];\r\n\r\n for (const plugin of this.plugins) {\r\n if (plugin.static) {\r\n statics.push(...plugin.static);\r\n logger.debug(plugin.name, `Provided ${plugin.static.length} static configs`);\r\n }\r\n }\r\n\r\n return statics;\r\n }\r\n }\r\n\r\n// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cruxjs/base",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "Core types and utilities for building CruxJS applications and plugins. A shared foundation for @cruxjs/app and plugin packages.",
5
5
  "keywords": ["cruxjs", "base", "types"],
6
6
  "license": "MIT",
@@ -41,7 +41,8 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@minejs/db": "^0.0.3",
44
- "@minejs/server": "^0.0.9"
44
+ "@minejs/logger": "^0.0.2",
45
+ "@minejs/server": "^0.1.0"
45
46
  },
46
47
  "devDependencies": {
47
48
  "@eslint/js": "^9.39.2",