@cruxjs/base 0.0.8 → 0.0.9

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.8-black"/>
11
+ <img src="https://img.shields.io/badge/v-0.0.9-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,2 +1,2 @@
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
1
+ 'use strict';var logger=require('@minejs/logger');var p=new logger.Logger("debug",true,"[CruxJS]");var n=class{constructor(e){this.logger=e;}mergeRoutes(e=[],t=[]){let o=[...e],s=new Set(e.map(i=>`${i.method}:${i.path}`));for(let i of t){let r=`${i.method}:${i.path}`;s.has(r)?this.logger.info(`Skipping plugin route ${r} (overridden by user)`):o.push(i);}return o}mergeSchemas(e=[],t=[]){let o=[...e],s=new Set(e.map(i=>i.name));for(let i of t)s.has(i.name)?this.logger.info(`Skipping plugin schema ${i.name} (overridden by user)`):o.push(i);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var g=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.debug(`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.debug(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.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),this.logger.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),this.logger.debug(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.debug(t.name,`Provided ${t.static.length} static configs`));return e}};exports.PluginRegistry=g;exports.ResourceMerger=n;exports.logger=p;//# sourceMappingURL=index.cjs.map
2
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","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// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
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","s","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 '@minejs/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 '@minejs/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.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 this.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 this.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 this.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 this.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 this.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
@@ -152,7 +152,8 @@ interface AppInstance {
152
152
  declare const logger: Logger;
153
153
 
154
154
  declare class ResourceMerger {
155
- constructor();
155
+ private logger;
156
+ constructor(logger: Logger);
156
157
  mergeRoutes(userRoutes?: RouteDefinition[], pluginRoutes?: RouteDefinition[]): RouteDefinition[];
157
158
  mergeSchemas(userSchemas?: TableSchema[], pluginSchemas?: TableSchema[]): TableSchema[];
158
159
  mergeStatic(userStatic?: StaticConfig[], pluginStatic?: StaticConfig[]): StaticConfig[];
@@ -160,7 +161,8 @@ declare class ResourceMerger {
160
161
 
161
162
  declare class PluginRegistry {
162
163
  private plugins;
163
- constructor();
164
+ private logger;
165
+ constructor(logger: Logger);
164
166
  register(plugin: CruxPlugin, app: AppInstance): Promise<void>;
165
167
  getAll(): CruxPlugin[];
166
168
  callHook(hook: keyof Pick<CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>, ctx: LifecycleContext): Promise<void>;
package/dist/index.d.ts CHANGED
@@ -152,7 +152,8 @@ interface AppInstance {
152
152
  declare const logger: Logger;
153
153
 
154
154
  declare class ResourceMerger {
155
- constructor();
155
+ private logger;
156
+ constructor(logger: Logger);
156
157
  mergeRoutes(userRoutes?: RouteDefinition[], pluginRoutes?: RouteDefinition[]): RouteDefinition[];
157
158
  mergeSchemas(userSchemas?: TableSchema[], pluginSchemas?: TableSchema[]): TableSchema[];
158
159
  mergeStatic(userStatic?: StaticConfig[], pluginStatic?: StaticConfig[]): StaticConfig[];
@@ -160,7 +161,8 @@ declare class ResourceMerger {
160
161
 
161
162
  declare class PluginRegistry {
162
163
  private plugins;
163
- constructor();
164
+ private logger;
165
+ constructor(logger: Logger);
164
166
  register(plugin: CruxPlugin, app: AppInstance): Promise<void>;
165
167
  getAll(): CruxPlugin[];
166
168
  callHook(hook: keyof Pick<CruxPlugin, 'onAwake' | 'onStart' | 'onReady' | 'onShutdown'>, ctx: LifecycleContext): Promise<void>;
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
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
1
+ import {Logger}from'@minejs/logger';var p=new Logger("debug",true,"[CruxJS]");var n=class{constructor(e){this.logger=e;}mergeRoutes(e=[],t=[]){let o=[...e],s=new Set(e.map(i=>`${i.method}:${i.path}`));for(let i of t){let r=`${i.method}:${i.path}`;s.has(r)?this.logger.info(`Skipping plugin route ${r} (overridden by user)`):o.push(i);}return o}mergeSchemas(e=[],t=[]){let o=[...e],s=new Set(e.map(i=>i.name));for(let i of t)s.has(i.name)?this.logger.info(`Skipping plugin schema ${i.name} (overridden by user)`):o.push(i);return o}mergeStatic(e=[],t=[]){return [...e,...t]}};var g=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.debug(`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.debug(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.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),this.logger.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),this.logger.debug(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.debug(t.name,`Provided ${t.static.length} static configs`));return e}};export{g as PluginRegistry,n as ResourceMerger,p as logger};//# sourceMappingURL=index.js.map
2
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","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// ╚══════════════════════════════════════════════════════════════════════════════════════╝"]}
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","s","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 '@minejs/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 '@minejs/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.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 this.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 this.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 this.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 this.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 this.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.8",
3
+ "version": "0.0.9",
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",