@arch-cadre/modules 0.0.57 → 0.0.59

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 @@
1
+ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));exports.__toESM=s;
@@ -0,0 +1 @@
1
+ "use client";const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../server/ui.cjs`);let n=require(`react/jsx-runtime`),r=require(`react`);r=e.__toESM(r);function i({module:e,point:i,className:a,props:o,fallback:s}){let[c,l]=(0,r.useState)([]);return(0,r.useEffect)(()=>{t.getExtensions(e,i).then(l)},[e,i]),c.length===0?s||null:(0,n.jsx)(`div`,{className:a,children:c.map(e=>{let t=e.component;return t?(0,n.jsx)(t,{...o},e.id):null})})}exports.ExtensionPointClient=i;
@@ -0,0 +1,20 @@
1
+ import * as React from "react";
2
+
3
+ //#region src/client/extension-point-client.d.ts
4
+ interface ExtensionPointProps {
5
+ module: string;
6
+ point: string;
7
+ className?: string;
8
+ props?: any;
9
+ fallback?: React.ReactNode;
10
+ }
11
+ declare function ExtensionPointClient({
12
+ module,
13
+ point,
14
+ className,
15
+ props,
16
+ fallback
17
+ }: ExtensionPointProps): any;
18
+ //#endregion
19
+ export { ExtensionPointClient };
20
+ //# sourceMappingURL=extension-point-client.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-point-client.d.cts","names":[],"sources":["../../src/client/extension-point-client.tsx"],"mappings":";;;UAOU,mBAAA;EACR,MAAA;EACA,KAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA,GAAW,KAAA,CAAM,SAAA;AAAA;AAAA,iBAGH,oBAAA,CAAA;EACd,MAAA;EACA,KAAA;EACA,SAAA;EACA,KAAA;EACA;AAAA,GACC,mBAAA"}
@@ -0,0 +1 @@
1
+ require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../server/ui.cjs`);let t=require(`react/jsx-runtime`);async function n({module:n,point:r,className:i,props:a,fallback:o}){let s=await e.getExtensions(n,r);return s.length===0?o||null:(0,t.jsx)(`div`,{className:i,children:s.map(e=>{let n=e.component;return(0,t.jsx)(n,{...a},e.id)})})}exports.ExtensionPoint=n;
@@ -0,0 +1,21 @@
1
+ import * as react from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/client/extension-point.d.ts
5
+ interface ExtensionPointProps {
6
+ module: string;
7
+ point: string;
8
+ className?: string;
9
+ props?: any;
10
+ fallback?: React.ReactNode;
11
+ }
12
+ declare function ExtensionPoint({
13
+ module,
14
+ point,
15
+ className,
16
+ props,
17
+ fallback
18
+ }: ExtensionPointProps): Promise<string | number | bigint | boolean | Iterable<react.ReactNode> | react_jsx_runtime0.JSX.Element | null | undefined>;
19
+ //#endregion
20
+ export { ExtensionPoint };
21
+ //# sourceMappingURL=extension-point.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension-point.d.cts","names":[],"sources":["../../src/client/extension-point.tsx"],"mappings":";;;;UAGU,mBAAA;EACR,MAAA;EACA,KAAA;EACA,SAAA;EACA,KAAA;EACA,QAAA,GAAW,KAAA,CAAM,SAAA;AAAA;AAAA,iBAGG,cAAA,CAAA;EACpB,MAAA;EACA,KAAA;EACA,SAAA;EACA,KAAA;EACA;AAAA,GACC,mBAAA,GAAmB,OAAA,sCAAA,QAAA,CAAA,KAAA,CAAA,SAAA,IAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -0,0 +1 @@
1
+ const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../server/ui.cjs`);let n=require(`react/jsx-runtime`),r=require(`react`);r=e.__toESM(r);async function i({area:e,className:r,fallback:i,props:a}){let o=await t.getModuleWidgets(e);return o.length===0?i||null:(0,n.jsx)(`div`,{className:r,children:o.map(e=>{let t=e.component;return(0,n.jsx)(t,{...a},e.id)})})}exports.WidgetArea=i;
@@ -0,0 +1,19 @@
1
+ import * as React from "react";
2
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
3
+
4
+ //#region src/client/widget-area.d.ts
5
+ interface WidgetAreaProps {
6
+ area: string;
7
+ className?: string;
8
+ fallback?: React.ReactNode;
9
+ props?: any;
10
+ }
11
+ declare function WidgetArea({
12
+ area,
13
+ className,
14
+ fallback,
15
+ props
16
+ }: WidgetAreaProps): Promise<string | number | bigint | boolean | Iterable<React.ReactNode> | react_jsx_runtime0.JSX.Element | null | undefined>;
17
+ //#endregion
18
+ export { WidgetArea };
19
+ //# sourceMappingURL=widget-area.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-area.d.cts","names":[],"sources":["../../src/client/widget-area.tsx"],"mappings":";;;;UAIU,eAAA;EACR,IAAA;EACA,SAAA;EACA,QAAA,GAAW,KAAA,CAAM,SAAA;EAEjB,KAAA;AAAA;AAAA,iBAGoB,UAAA,CAAA;EACpB,IAAA;EACA,SAAA;EACA,QAAA;EACA;AAAA,GACC,eAAA,GAAe,OAAA,sCAAA,QAAA,CAAA,KAAA,CAAA,SAAA,IAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
package/dist/index.cjs ADDED
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./types.cjs`),t=require(`./client/extension-point.cjs`),n=require(`./client/extension-point-client.cjs`),r=require(`./client/widget-area.cjs`);exports.ExtensionPoint=t.ExtensionPoint,exports.ExtensionPointClient=n.ExtensionPointClient,exports.ModuleManifestSchema=e.ModuleManifestSchema,exports.WidgetArea=r.WidgetArea;
@@ -0,0 +1,5 @@
1
+ import { ExtensionPoint } from "./client/extension-point.cjs";
2
+ import { ExtensionPointClient } from "./client/extension-point-client.cjs";
3
+ import { WidgetArea } from "./client/widget-area.cjs";
4
+ import { ApiRouteDefinition, IModule, ModuleExtension, ModuleManifest, ModuleManifestSchema, ModuleNavElement, ModuleNavigation, ModuleNavigationGroupMap, ModulePageProps, ModuleRouteDefinition, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition, SidebarGroupType, SidebarMenuItemType, SidebarMenuType, SystemEvent } from "./types.cjs";
5
+ export { ApiRouteDefinition, ExtensionPoint, ExtensionPointClient, IModule, ModuleExtension, ModuleManifest, ModuleManifestSchema, ModuleNavElement, ModuleNavigation, ModuleNavigationGroupMap, ModulePageProps, ModuleRouteDefinition, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition, SidebarGroupType, SidebarMenuItemType, SidebarMenuType, SystemEvent, WidgetArea };
@@ -0,0 +1 @@
1
+ "use server";const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`./manage.cjs`);let n=require(`@arch-cadre/core/server`),r=require(`node:fs/promises`);r=e.__toESM(r);let i=require(`node:path`);i=e.__toESM(i);let a=require(`@arch-cadre/core`),o=require(`drizzle-orm`),s=require(`node:child_process`),c=require(`node:util`);const l=e=>new Promise(t=>setTimeout(t,e));async function u(e,t){console.log(`[Kernel] "${e}" step: ${t}`),await n.db.update(a.systemModulesTable).set({lastStep:t}).where((0,o.eq)(a.systemModulesTable.id,e))}async function d(e){let t=process.cwd();if(e===`@arch-cadre/core`||e===`core`){let e=i.default.join(t,`node_modules`,`@kryo`,`core`,`dist`,`server`,`database`,`schema.cjs`);try{return await r.default.access(e),e}catch{let e=i.default.resolve(t,`../../packages/kryo-core/src/server/database/schema.ts`);try{return await r.default.access(e),e}catch{}}return null}let n=e.replace(`@arch-cadre/`,``),a=[i.default.join(t,`modules`,n,`schema.ts`),i.default.join(t,`modules`,e,`schema.ts`),i.default.join(t,`node_modules`,e,`dist`,`schema.cjs`),i.default.join(t,`node_modules`,`@arch-cadre/${n}`,`dist`,`schema.cjs`),i.default.join(t,`node_modules`,e,`src`,`schema.ts`),i.default.join(t,`node_modules`,`@arch-cadre/${n}`,`src`,`schema.ts`),i.default.resolve(t,`../../packages`,n,`src`,`schema.ts`),i.default.resolve(t,`../../packages`,`kryo-${n}`,`src`,`schema.ts`),i.default.resolve(t,`../../packages`,n,`schema.ts`)];for(let t of a)try{return await r.default.access(t),console.log(`[Kernel:Lifecycle] Resolved schema for ${e} at: ${t}`),t}catch{console.warn(`[Kernel:Lifecycle] Unresolved schema for ${e} at: ${t}`)}return console.warn(`[Kernel:Lifecycle] Could not resolve schema path for: ${e}`),null}async function f(e){let t=(0,c.promisify)(s.exec);console.log(`[Kernel:Lifecycle] Targeted sync for module: ${e}`);let r=process.cwd(),l=await n.db.select({id:a.systemModulesTable.id}).from(a.systemModulesTable).where((0,o.eq)(a.systemModulesTable.enabled,!0)),u=new Set(l.map(e=>e.id));u.add(`@arch-cadre/core`),u.add(e);let f=[];for(let e of Array.from(u)){let t=await d(e);t&&f.push(t)}if(f.length===0){console.warn(`[Kernel:Lifecycle] No schema paths resolved for ${e}, skipping push.`);return}let p=i.default.join(r,`drizzle.config.ts`),m=`"${i.default.join(r,`node_modules`,`.bin`,`drizzle-kit`)}" push --force --config=${p}`;console.log(`[Kernel:Lifecycle] Executing isolated migration. Modules: ${Array.from(u).join(`, `)}`);try{await t(m,{env:{...process.env,CI:`true`,DRIZZLE_SCHEMA_OVERRIDE:f.join(`,`)},cwd:r}),console.log(`[Kernel:Lifecycle] Isolated migration successful for ${e}`)}catch(t){throw console.error(`[Kernel:Lifecycle] Isolated migration failed for ${e}:`),console.error(t.stdout||t.message),Error(`Migration failed: ${e}`)}}async function p(e,r){try{let i=await t.getModules(),s=i.find(t=>t.id===e);if(await u(e,`Validate module...`),await l(500),!s)return;if(r){if(await u(e,`Queued...`),await l(500),s.dependencies?.length){let t=s.dependencies.filter(e=>{let t=i.find(t=>t.id===e);return t&&!t.enabled&&!t.system});if(t.length>0)for(let n of t)await u(e,`Waiting for dependency "${n}"...`),await p(n,!0),await l(500)}await u(e,`Initializing...`),await l(500),await n.db.update(a.systemModulesTable).set({enabled:!0}).where((0,o.eq)(a.systemModulesTable.id,e));let r=await t.getModuleInstance(e);await u(e,`Migrate database...`),await l(500);try{r?.onMigrate?await r.onMigrate():await f(e),await u(e,`Migration successful`)}catch(t){console.error(`[Kernel] Migration failed for ${e}:`,t),await u(e,`Migration failed: ${t.message}`),await l(500)}r?.onEnable&&(await u(e,`Running setup...`),await l(500),await r.onEnable()),await u(e,`Finishing...`),await l(500),await n.db.update(a.systemModulesTable).set({installed:!0,lastStep:null}).where((0,o.eq)(a.systemModulesTable.id,e))}else{let r=i.filter(t=>!t.enabled||t.id===e?!1:t.dependencies?.includes(e)?!0:t.extends?.includes(e)?t.extends.filter(t=>t===e?!1:i.find(e=>e.id===t)?.enabled).length===0:!1);if(r.length>0){await u(e,`Deactivating dependents...`);for(let e of r)await p(e.id,!1),await l(500)}await u(e,`Deactivating...`);let s=await t.getModuleInstance(e);s?.onDisable&&await s.onDisable(),await n.db.update(a.systemModulesTable).set({enabled:!1,installed:!1}).where((0,o.eq)(a.systemModulesTable.id,e)),await u(e,null)}}catch(t){console.error(`[Kernel] Fatal error for ${e}:`,t),await u(e,`Error: ${t.message}`)}}async function m(e,n){let r=(await t.getModules()).find(t=>t.id===e);if(!r)throw Error(`Module "${e}" not found`);return r.enabled===n||p(e,n),{success:!0}}async function h(){let e=await t.getModules();for(let n of e)if(n.enabled)try{let e=await t.getModuleInstance(n.id);e?.init&&await e.init()}catch(e){console.error(`[Kernel] Failed to init module ${n.id}:`,e)}}exports.initOperationalModules=h,exports.pushModuleSchema=f,exports.toggleModuleState=m;
@@ -0,0 +1,9 @@
1
+ //#region src/server/lifecycle.d.ts
2
+ declare function pushModuleSchema(moduleId: string): Promise<void>;
3
+ declare function toggleModuleState(moduleId: string, isEnabled: boolean): Promise<{
4
+ success: boolean;
5
+ }>;
6
+ declare function initOperationalModules(): Promise<void>;
7
+ //#endregion
8
+ export { initOperationalModules, pushModuleSchema, toggleModuleState };
9
+ //# sourceMappingURL=lifecycle.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.cts","names":[],"sources":["../../src/server/lifecycle.ts"],"mappings":";iBA4GsB,gBAAA,CAAiB,QAAA,WAAgB,OAAA;AAAA,iBAwLjC,iBAAA,CAAkB,QAAA,UAAkB,SAAA,YAAkB,OAAA;;;iBAWtD,sBAAA,CAAA,GAAsB,OAAA"}
@@ -0,0 +1 @@
1
+ "use server";const e=require(`../_virtual/_rolldown/runtime.cjs`),t=require(`../types.cjs`);let n=require(`@arch-cadre/core/server`),r=require(`node:fs/promises`);r=e.__toESM(r);let i=require(`node:path`);i=e.__toESM(i);let a=require(`@arch-cadre/core`),o=require(`drizzle-orm`);const s=globalThis;s.__KRYO_REGISTERED_MODULES__||=new Map;async function c(e){let t=s.__KRYO_REGISTERED_MODULES__;for(let n of e)n.manifest?.id&&t.set(n.manifest.id,n)}async function l(){try{let e=await(0,n.getModulesDir)(),o=[],c=await r.default.readdir(e).catch(()=>[]);for(let n of c)if(!n.startsWith(`.`))try{let a=await r.default.readFile(i.default.join(e,n,`manifeston`),`utf-8`),s=t.ModuleManifestSchema.parse(JSON.parse(a));o.push({...s,hasDocs:!1})}catch{}let l=s.__KRYO_REGISTERED_MODULES__;for(let e of l.values())o.some(t=>t.id===e.manifest.id)||o.push({...e.manifest,hasDocs:!1});let u=await n.db.select().from(a.systemModulesTable).catch(()=>[]),d=new Map(u.map(e=>[e.id,e]));return o.map(e=>{let t=d.get(e.id);return{...e,enabled:e.system?!0:t?.enabled??!1,installed:e.system?!0:t?.installed??!1,lastStep:t?.lastStep,hasDocs:e.hasDocs}})}catch{return[]}}async function u(e){try{let[t]=await n.db.select().from(a.systemModulesTable).where((0,o.eq)(a.systemModulesTable.id,e));return{enabled:t?.enabled,installed:t?.installed,lastStep:t?.lastStep}}catch{return{enabled:!1,installed:!1,lastStep:null}}}async function d(e){try{let[t]=await n.db.select().from(a.systemModulesTable).where((0,o.eq)(a.systemModulesTable.id,e));return!!t?.enabled||!!t?.system}catch{return!1}}async function f(e){try{let t=s.__KRYO_REGISTERED_MODULES__;if(t.has(e))return console.log(`[Kernel:Manage] Module "${e}" found in registry.`),t.get(e)||null;if(console.log(`[Kernel:Manage] Module "${e}" not in registry. Registry size: ${t.size}. Keys: ${Array.from(t.keys()).join(`, `)}`),!e.startsWith(`.`)&&!e.startsWith(`/`))try{let t=await import(`@arch-cadre/${e}`);return console.log(`[Kernel:Manage] Module "${e}" loaded via import().`),t.default||t||null}catch(t){console.warn(`[Kernel:Manage] Failed to import module "${e} via import().": ${t.message}`)}return null}catch(t){return console.error(`[Kernel:Manage] Error in getModuleInstance for "${e}":`,t),null}}async function p(e){try{let[t]=await n.db.select({config:a.systemModulesTable.config}).from(a.systemModulesTable).where((0,o.eq)(a.systemModulesTable.id,e));return t?.config?JSON.parse(t.config):null}catch{return null}}async function m(e,t){try{await n.db.update(a.systemModulesTable).set({config:JSON.stringify(t)}).where((0,o.eq)(a.systemModulesTable.id,e))}catch(t){console.warn(`[Kernel:Manage] Failed to update config for ${e}:`,t)}}exports.getModuleConfig=p,exports.getModuleInstance=f,exports.getModuleStatus=u,exports.getModules=l,exports.isModuleEnabled=d,exports.registerModules=c,exports.updateModuleConfig=m;
@@ -0,0 +1,31 @@
1
+ import { IModule } from "../types.cjs";
2
+
3
+ //#region src/server/manage.d.ts
4
+ declare function registerModules(modules: IModule[]): Promise<void>;
5
+ declare function getModules(): Promise<{
6
+ enabled: boolean;
7
+ installed: boolean;
8
+ lastStep: string | null | undefined;
9
+ hasDocs: boolean;
10
+ id: string;
11
+ name: string;
12
+ version: string;
13
+ dependencies: string[];
14
+ extends: string[];
15
+ system: boolean;
16
+ description?: string | undefined;
17
+ npmDependencies?: string[] | undefined;
18
+ npmDevDependencies?: string[] | undefined;
19
+ }[]>;
20
+ declare function getModuleStatus(moduleId: string): Promise<{
21
+ enabled: boolean;
22
+ installed: boolean;
23
+ lastStep: string | null;
24
+ }>;
25
+ declare function isModuleEnabled(moduleId: string): Promise<boolean>;
26
+ declare function getModuleInstance(moduleId: string): Promise<IModule | null>;
27
+ declare function getModuleConfig<T>(moduleId: string): Promise<T | null>;
28
+ declare function updateModuleConfig(moduleId: string, config: any): Promise<void>;
29
+ //#endregion
30
+ export { getModuleConfig, getModuleInstance, getModuleStatus, getModules, isModuleEnabled, registerModules, updateModuleConfig };
31
+ //# sourceMappingURL=manage.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manage.d.cts","names":[],"sources":["../../src/server/manage.ts"],"mappings":";;;iBAesB,eAAA,CAAgB,OAAA,EAAS,OAAA,KAAS,OAAA;AAAA,iBASlC,UAAA,CAAA,GAAU,OAAA;;;;;;;;;;;;;;;iBAmDV,eAAA,CAAgB,QAAA,WAAgB,OAAA;;;;;iBAiBhC,eAAA,CAAgB,QAAA,WAAmB,OAAA;AAAA,iBAYnC,iBAAA,CACpB,QAAA,WACC,OAAA,CAAQ,OAAA;AAAA,iBA6CW,eAAA,GAAA,CAAmB,QAAA,WAAmB,OAAA,CAAQ,CAAA;AAAA,iBAa9C,kBAAA,CAAmB,QAAA,UAAkB,MAAA,QAAW,OAAA"}
@@ -0,0 +1 @@
1
+ "use server";require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./manage.cjs`);let t=require(`@arch-cadre/core/server`),n=require(`@arch-cadre/core`),r=require(`drizzle-orm`);const i=globalThis;async function a(a=!1){if(i.__KRYO_MODULES_INITIALIZED__&&!a)return;a&&(console.log(`[Kernel:Registry] Forcing re-initialization...`),n.eventBus.clearAll()),console.log(`[Kernel:Registry] Synchronizing module listeners...`),i.__KRYO_MODULES_INITIALIZED__=!0,await n.eventBus.publish(`system:modules:init:start`,{timestamp:Date.now()});let o=new Set,s=!0,c=0;for(;s&&c<10;){s=!1,c++;let i=(await e.getModules()).filter(e=>!o.has(e.id));if(i.length===0)break;for(let e of i)try{await t.db.insert(n.systemModulesTable).values({id:e.id,enabled:e.system??!1,installed:e.system??!1,system:e.system??!1}).onConflictDoNothing()}catch{}let a=[...i].sort((e,t)=>e.system===t.system?0:e.system?-1:1);for(let i of a){o.add(i.id),s=!0;try{let a=await e.isModuleEnabled(i.id);if(!a)continue;let o=await e.getModuleInstance(i.id);if(!o){console.warn(`[Kernel:Registry] No instance found for module ${i.id}. Ensure it is registered correctly.`);continue}let s=null;try{[s]=await t.db.select().from(n.systemModulesTable).where((0,r.eq)(n.systemModulesTable.id,i.id))}catch{}if(a&&(!s||!s.installed)){console.log(`[Kernel:Registry] Installing module ${i.id}...`),o.onMigrate&&(console.log(`[Kernel:Registry] Running onMigrate for ${i.id}...`),await o.onMigrate()),console.log(`[Kernel:Registry] Running onEnable for ${i.id}...`),o.onEnable&&await o.onEnable();try{await t.db.update(n.systemModulesTable).set({installed:!0,lastStep:null}).where((0,r.eq)(n.systemModulesTable.id,i.id))}catch{}}o.init&&(console.log(`[Kernel:Registry] Initializing ${i.id}...`),await o.init(),console.log(`[Kernel:Registry] Module ${i.id} is active.`))}catch(e){console.error(`[Kernel:Registry] Critical failure for ${i.id}:`,e)}}}c>=10&&console.warn(`[Kernel:Registry] Max init iterations reached. Check for circular module registrations.`),await n.eventBus.publish(`system:modules:init:end`,{timestamp:Date.now(),moduleCount:o.size})}exports.initModules=a;
@@ -0,0 +1,5 @@
1
+ //#region src/server/registry.d.ts
2
+ declare function initModules(force?: boolean): Promise<void>;
3
+ //#endregion
4
+ export { initModules };
5
+ //# sourceMappingURL=registry.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.cts","names":[],"sources":["../../src/server/registry.ts"],"mappings":";iBAWsB,WAAA,CAAY,KAAA,aAAa,OAAA"}
@@ -0,0 +1 @@
1
+ "use server";require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`./manage.cjs`);let t=require(`@arch-cadre/core/server`);function n(e,t,r){if(e.roles&&e.roles.length>0&&!e.roles.some(e=>t.includes(e))||e.permissions&&e.permissions.length>0&&!e.permissions.every(e=>r.includes(e)))return null;if(e.items&&e.items.length>0){let i=e.items.map(e=>n(e,t,r)).filter(e=>e!==null);return{...e,items:i}}return e}async function r(r){let{user:i}=await(0,t.getCurrentSession)(),a=i?.roles||[],o=i?.permissions||[],s=(await e.getModules()).filter(e=>e.enabled),c={};for(let t of s)try{let i=(await e.getModuleInstance(t.id))?.navigation?.[r];if(i)for(let[e,t]of Object.entries(i)){c[e]||(c[e]=[]);for(let r of t){let t=n(r,a,o);t&&!c[e].some(e=>e.url===t.url)&&c[e].push(t)}}}catch(e){console.warn(`[Kernel:UI] Failed to load navigation for module ${t.id}:`,e)}return c}async function i(){try{return(await e.getModuleConfig(`kryo-panel`))?.pathPrefix??`/kryo`}catch{return`/kryo`}}async function a(e){let t=await r(e),n=await i(),a=e=>e.startsWith(n)?e:e===`/`?n:`${n}${e}`,o=e=>e.map(e=>({...e,url:a(e.url),items:e.items?o(e.items):void 0})),s={};for(let[e,n]of Object.entries(t))s[e]=o(n);return s}async function o(r){let{user:i}=await(0,t.getCurrentSession)(),a=i?.roles||[],o=i?.permissions||[],s=(await e.getModules()).filter(e=>e.enabled),c=[];for(let t of s)try{let i=await e.getModuleInstance(t.id);if(i?.navigation?.[r]){let e=i.navigation[r];for(let t of e){let e=n(t,a,o);e&&c.push(e)}}}catch{}return c}async function s(){let t=(await e.getModules()).filter(e=>e.enabled),n=[];for(let r of t)try{let t=await e.getModuleInstance(r.id);t?.routes?.public&&n.push(...t.routes.public)}catch{}return n}async function c(){let t=(await e.getModules()).filter(e=>e.enabled),n=[];for(let r of t)try{let t=await e.getModuleInstance(r.id);t?.routes?.private&&n.push(...t.routes.private)}catch{}return n}async function l(){let e=await c(),t=await i();return e.map(e=>({...e,path:e.path===`/`?t:`${t}${e.path}`}))}async function u(){let t=(await e.getModules()).filter(e=>e.enabled),n=[];for(let r of t)try{let t=await e.getModuleInstance(r.id);t?.routes?.api&&n.push(...t.routes.api)}catch{}return n}async function d(t){let n=(await e.getModules()).filter(e=>e.enabled),r=[];for(let i of n)try{let n=await e.getModuleInstance(i.id);if(n?.widgets){let e=n.widgets.filter(e=>e.area===t);r.push(...e)}}catch{}return r.sort((e,t)=>(e.priority||0)-(t.priority||0))}async function f(t,n){let r=(await e.getModules()).filter(e=>e.enabled),i=[];for(let a of r)try{let r=await e.getModuleInstance(a.id);if(r?.extensions){let e=r.extensions.filter(e=>{let r=e.targetModule===t,i=n?e.point===n:!0;return r&&i});i.push(...e)}}catch{}return i.sort((e,t)=>(e.priority||0)-(t.priority||0))}async function p(t,n){let r=(await e.getModules()).filter(e=>e.enabled);for(let i of r)try{let r=await e.getModuleInstance(i.id);if(r?.extensions&&r.extensions.filter(e=>{let r=e.targetModule===t,i=n?e.point===n:!0;return r&&i}).length>0)return!0}catch{}return!1}exports.getApiModuleRoutes=u,exports.getExtensions=f,exports.getKryoModuleNavigationGrouped=a,exports.getKryoModuleRoutes=l,exports.getKryoPathPrefix=i,exports.getModuleNavigation=o,exports.getModuleNavigationGrouped=r,exports.getModuleWidgets=d,exports.getPrivateModuleRoutes=c,exports.getPublicModuleRoutes=s,exports.hasExtension=p;
@@ -0,0 +1,17 @@
1
+ import { ApiRouteDefinition, ModuleExtension, ModuleNavElement, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition } from "../types.cjs";
2
+
3
+ //#region src/server/ui.d.ts
4
+ declare function getModuleNavigationGrouped(type: "admin" | "settings"): Promise<Record<string, ModuleNavElement[]>>;
5
+ declare function getKryoPathPrefix(): Promise<string>;
6
+ declare function getKryoModuleNavigationGrouped(type: "admin" | "settings"): Promise<Record<string, ModuleNavElement[]>>;
7
+ declare function getModuleNavigation(type: "public"): Promise<ModuleNavElement[]>;
8
+ declare function getPublicModuleRoutes(): Promise<PublicRouteDefinition[]>;
9
+ declare function getPrivateModuleRoutes(): Promise<PrivateRouteDefinition[]>;
10
+ declare function getKryoModuleRoutes(): Promise<PrivateRouteDefinition[]>;
11
+ declare function getApiModuleRoutes(): Promise<ApiRouteDefinition[]>;
12
+ declare function getModuleWidgets(area: string): Promise<ModuleWidget[]>;
13
+ declare function getExtensions(targetModule: string, point?: string): Promise<ModuleExtension[]>;
14
+ declare function hasExtension(targetModule: string, point?: string): Promise<boolean>;
15
+ //#endregion
16
+ export { getApiModuleRoutes, getExtensions, getKryoModuleNavigationGrouped, getKryoModuleRoutes, getKryoPathPrefix, getModuleNavigation, getModuleNavigationGrouped, getModuleWidgets, getPrivateModuleRoutes, getPublicModuleRoutes, hasExtension };
17
+ //# sourceMappingURL=ui.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.cts","names":[],"sources":["../../src/server/ui.ts"],"mappings":";;;iBAqDsB,0BAAA,CAA2B,IAAA,yBAA0B,OAAA,CAAA,MAAA,SAAA,gBAAA;AAAA,iBAyCrD,iBAAA,CAAA,GAAqB,OAAA;AAAA,iBASrB,8BAAA,CACpB,IAAA,yBAA0B,OAAA,CAAA,MAAA,SAAA,gBAAA;AAAA,iBA4BN,mBAAA,CACpB,IAAA,aACC,OAAA,CAAQ,gBAAA;AAAA,iBAwBW,qBAAA,CAAA,GAAyB,OAAA,CAC7C,qBAAA;AAAA,iBAmBoB,sBAAA,CAAA,GAA0B,OAAA,CAC9C,sBAAA;AAAA,iBAmBoB,mBAAA,CAAA,GAAuB,OAAA,CAAQ,sBAAA;AAAA,iBAU/B,kBAAA,CAAA,GAAsB,OAAA,CAAQ,kBAAA;AAAA,iBAgB9B,gBAAA,CAAiB,IAAA,WAAY,OAAA,CAAA,YAAA;AAAA,iBAqB7B,aAAA,CAAc,YAAA,UAAsB,KAAA,YAAc,OAAA,CAAA,eAAA;AAAA,iBAuBlD,YAAA,CAAa,YAAA,UAAsB,KAAA,YAAc,OAAA"}
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./types.cjs`),t=require(`./server/manage.cjs`),n=require(`./server/ui.cjs`),r=require(`./server/lifecycle.cjs`),i=require(`./server/registry.cjs`);exports.ModuleManifestSchema=e.ModuleManifestSchema,exports.getApiModuleRoutes=n.getApiModuleRoutes,exports.getExtensions=n.getExtensions,exports.getKryoModuleNavigationGrouped=n.getKryoModuleNavigationGrouped,exports.getKryoModuleRoutes=n.getKryoModuleRoutes,exports.getKryoPathPrefix=n.getKryoPathPrefix,exports.getModuleConfig=t.getModuleConfig,exports.getModuleInstance=t.getModuleInstance,exports.getModuleNavigation=n.getModuleNavigation,exports.getModuleNavigationGrouped=n.getModuleNavigationGrouped,exports.getModuleStatus=t.getModuleStatus,exports.getModuleWidgets=n.getModuleWidgets,exports.getModules=t.getModules,exports.getPrivateModuleRoutes=n.getPrivateModuleRoutes,exports.getPublicModuleRoutes=n.getPublicModuleRoutes,exports.hasExtension=n.hasExtension,exports.initModules=i.initModules,exports.initOperationalModules=r.initOperationalModules,exports.isModuleEnabled=t.isModuleEnabled,exports.pushModuleSchema=r.pushModuleSchema,exports.registerModules=t.registerModules,exports.toggleModuleState=r.toggleModuleState,exports.updateModuleConfig=t.updateModuleConfig;
@@ -0,0 +1,6 @@
1
+ import { ApiRouteDefinition, IModule, ModuleExtension, ModuleManifest, ModuleManifestSchema, ModuleNavElement, ModuleNavigation, ModuleNavigationGroupMap, ModulePageProps, ModuleRouteDefinition, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition, SidebarGroupType, SidebarMenuItemType, SidebarMenuType, SystemEvent } from "./types.cjs";
2
+ import { initOperationalModules, pushModuleSchema, toggleModuleState } from "./server/lifecycle.cjs";
3
+ import { getModuleConfig, getModuleInstance, getModuleStatus, getModules, isModuleEnabled, registerModules, updateModuleConfig } from "./server/manage.cjs";
4
+ import { initModules } from "./server/registry.cjs";
5
+ import { getApiModuleRoutes, getExtensions, getKryoModuleNavigationGrouped, getKryoModuleRoutes, getKryoPathPrefix, getModuleNavigation, getModuleNavigationGrouped, getModuleWidgets, getPrivateModuleRoutes, getPublicModuleRoutes, hasExtension } from "./server/ui.cjs";
6
+ export { ApiRouteDefinition, IModule, ModuleExtension, ModuleManifest, ModuleManifestSchema, ModuleNavElement, ModuleNavigation, ModuleNavigationGroupMap, ModulePageProps, ModuleRouteDefinition, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition, SidebarGroupType, SidebarMenuItemType, SidebarMenuType, SystemEvent, getApiModuleRoutes, getExtensions, getKryoModuleNavigationGrouped, getKryoModuleRoutes, getKryoPathPrefix, getModuleConfig, getModuleInstance, getModuleNavigation, getModuleNavigationGrouped, getModuleStatus, getModuleWidgets, getModules, getPrivateModuleRoutes, getPublicModuleRoutes, hasExtension, initModules, initOperationalModules, isModuleEnabled, pushModuleSchema, registerModules, toggleModuleState, updateModuleConfig };
package/dist/types.cjs ADDED
@@ -0,0 +1 @@
1
+ require(`./_virtual/_rolldown/runtime.cjs`);let e=require(`zod`);const t=e.z.object({id:e.z.string(),name:e.z.string(),version:e.z.string(),description:e.z.string().optional(),dependencies:e.z.array(e.z.string()).default([]),extends:e.z.array(e.z.string()).default([]),enabled:e.z.boolean().default(!0),system:e.z.boolean().default(!1),npmDependencies:e.z.array(e.z.string()).optional(),npmDevDependencies:e.z.array(e.z.string()).optional()});exports.ModuleManifestSchema=t;
@@ -0,0 +1,117 @@
1
+ import { SystemEvent, UserPermission, UserRole } from "@arch-cadre/core";
2
+ import { Metadata } from "next";
3
+ import { z } from "zod";
4
+
5
+ //#region src/types.d.ts
6
+ type SidebarGroupType = {
7
+ title: string;
8
+ items: SidebarMenuType;
9
+ };
10
+ type SidebarMenuItemType<T = Record<string, string>> = {
11
+ id?: string;
12
+ title: string;
13
+ icon?: string;
14
+ url: string;
15
+ roles?: string[];
16
+ permissions?: string[];
17
+ badge?: string | number | null | undefined;
18
+ badgeVariant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
19
+ } & T;
20
+ type SidebarMenuType = SidebarMenuItemType<{
21
+ items?: SidebarMenuItemType[];
22
+ }>[];
23
+ declare const ModuleManifestSchema: z.ZodObject<{
24
+ id: z.ZodString;
25
+ name: z.ZodString;
26
+ version: z.ZodString;
27
+ description: z.ZodOptional<z.ZodString>;
28
+ dependencies: z.ZodDefault<z.ZodArray<z.ZodString>>;
29
+ extends: z.ZodDefault<z.ZodArray<z.ZodString>>;
30
+ enabled: z.ZodDefault<z.ZodBoolean>;
31
+ system: z.ZodDefault<z.ZodBoolean>;
32
+ npmDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
33
+ npmDevDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ }, z.core.$strip>;
35
+ type ModuleManifest = z.infer<typeof ModuleManifestSchema>;
36
+ interface ModuleExtension {
37
+ id: string;
38
+ targetModule: string;
39
+ point: string;
40
+ component: React.ComponentType<any>;
41
+ priority?: number;
42
+ metadata?: any;
43
+ }
44
+ interface ModulePageProps {
45
+ params: any;
46
+ searchParams: any;
47
+ }
48
+ interface ModuleRouteDefinition {
49
+ id?: string;
50
+ roles?: UserRole[];
51
+ permissions?: UserPermission[];
52
+ component: React.ComponentType<any>;
53
+ layout?: React.ComponentType<{
54
+ children: React.ReactNode;
55
+ }>;
56
+ generateMetadata?: (props: ModulePageProps) => Promise<Metadata> | Metadata;
57
+ }
58
+ interface ModuleWidget {
59
+ id: string;
60
+ name: string;
61
+ area: "dashboard-stats" | "dashboard-main" | "sidebar-bottom" | string;
62
+ component: React.ComponentType<any>;
63
+ priority?: number;
64
+ }
65
+ interface IModule {
66
+ manifest: ModuleManifest;
67
+ schema?: any;
68
+ onMigrate?: () => Promise<void>;
69
+ onEnable?: () => Promise<void>;
70
+ onDisable?: () => Promise<void>;
71
+ init?: () => Promise<void>;
72
+ widgets?: ModuleWidget[];
73
+ extensions?: ModuleExtension[];
74
+ navigation?: ModuleNavigation;
75
+ routes?: {
76
+ public?: PublicRouteDefinition[];
77
+ private?: PrivateRouteDefinition[];
78
+ api?: ApiRouteDefinition[];
79
+ };
80
+ }
81
+ /**
82
+ * Element menu zarejestrowany przez moduł.
83
+ */
84
+ type ModuleNavElement = SidebarMenuItemType<{
85
+ items?: SidebarMenuItemType[];
86
+ }>;
87
+ /**
88
+ * Mapa nawigacji modułu.
89
+ * Klucz: Nazwa grupy (np. "CMS", "Platform", "Journal")
90
+ * Vartość: Tablica elementów menu trafiających do tej grupy.
91
+ */
92
+ type ModuleNavigationGroupMap = Record<string, ModuleNavElement[]>;
93
+ interface PublicRouteDefinition extends ModuleRouteDefinition {
94
+ path: string;
95
+ auth?: boolean;
96
+ }
97
+ interface PrivateRouteDefinition extends ModuleRouteDefinition {
98
+ path: string;
99
+ auth?: boolean;
100
+ }
101
+ interface ApiRouteDefinition {
102
+ id?: string;
103
+ path: string;
104
+ handler: (request: Request, context: any) => Promise<Response> | Response;
105
+ auth?: boolean;
106
+ roles?: UserRole[];
107
+ permissions?: UserPermission[];
108
+ }
109
+ interface ModuleNavigation {
110
+ public?: ModuleNavElement[];
111
+ admin?: ModuleNavigationGroupMap;
112
+ settings?: ModuleNavigationGroupMap;
113
+ globalRoutes?: (PublicRouteDefinition | PrivateRouteDefinition | ApiRouteDefinition)[];
114
+ }
115
+ //#endregion
116
+ export { ApiRouteDefinition, IModule, ModuleExtension, ModuleManifest, ModuleManifestSchema, ModuleNavElement, ModuleNavigation, ModuleNavigationGroupMap, ModulePageProps, ModuleRouteDefinition, ModuleWidget, PrivateRouteDefinition, PublicRouteDefinition, SidebarGroupType, SidebarMenuItemType, SidebarMenuType, type SystemEvent };
117
+ //# sourceMappingURL=types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"mappings":";;;;;KAMY,gBAAA;EACV,KAAA;EACA,KAAA,EAAO,eAAA;AAAA;AAAA,KAGG,mBAAA,KAAwB,MAAA;EAClC,EAAA;EACA,KAAA;EACA,IAAA;EACA,GAAA;EACA,KAAA;EACA,WAAA;EACA,KAAA;EACA,YAAA;AAAA,IAOE,CAAA;AAAA,KAEQ,eAAA,GAAkB,mBAAA;EAC5B,KAAA,GAAQ,mBAAA;AAAA;AAAA,cAGG,oBAAA,EAAoB,CAAA,CAAA,SAAA;;;;;;;;;;;;KAarB,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,UAI3B,eAAA;EACf,EAAA;EACA,YAAA;EACA,KAAA;EACA,SAAA,EAAW,KAAA,CAAM,aAAA;EACjB,QAAA;EACA,QAAA;AAAA;AAAA,UAGe,eAAA;EACf,MAAA;EACA,YAAA;AAAA;AAAA,UAGe,qBAAA;EACf,EAAA;EACA,KAAA,GAAQ,QAAA;EACR,WAAA,GAAc,cAAA;EACd,SAAA,EAAW,KAAA,CAAM,aAAA;EACjB,MAAA,GAAS,KAAA,CAAM,aAAA;IAAgB,QAAA,EAAU,KAAA,CAAM,SAAA;EAAA;EAC/C,gBAAA,IAAoB,KAAA,EAAO,eAAA,KAAoB,OAAA,CAAQ,QAAA,IAAY,QAAA;AAAA;AAAA,UAKpD,YAAA;EACf,EAAA;EACA,IAAA;EACA,IAAA;EACA,SAAA,EAAW,KAAA,CAAM,aAAA;EACjB,QAAA;AAAA;AAAA,UAGe,OAAA;EACf,QAAA,EAAU,cAAA;EACV,MAAA;EACA,SAAA,SAAkB,OAAA;EAClB,QAAA,SAAiB,OAAA;EACjB,SAAA,SAAkB,OAAA;EAClB,IAAA,SAAa,OAAA;EACb,OAAA,GAAU,YAAA;EACV,UAAA,GAAa,eAAA;EACb,UAAA,GAAa,gBAAA;EACb,MAAA;IACE,MAAA,GAAS,qBAAA;IACT,OAAA,GAAU,sBAAA;IACV,GAAA,GAAM,kBAAA;EAAA;AAAA;;;;KASE,gBAAA,GAAmB,mBAAA;EAC7B,KAAA,GAAQ,mBAAA;AAAA;;;;;;KAQE,wBAAA,GAA2B,MAAA,SAAe,gBAAA;AAAA,UAErC,qBAAA,SAA8B,qBAAA;EAC7C,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,sBAAA,SAA+B,qBAAA;EAC9C,IAAA;EACA,IAAA;AAAA;AAAA,UAGe,kBAAA;EACf,EAAA;EACA,IAAA;EACA,OAAA,GAAU,OAAA,EAAS,OAAA,EAAS,OAAA,UAAiB,OAAA,CAAQ,QAAA,IAAY,QAAA;EACjE,IAAA;EACA,KAAA,GAAQ,QAAA;EACR,WAAA,GAAc,cAAA;AAAA;AAAA,UAGC,gBAAA;EACf,MAAA,GAAS,gBAAA;EACT,KAAA,GAAQ,wBAAA;EACR,QAAA,GAAW,wBAAA;EACX,YAAA,IACI,qBAAA,GACA,sBAAA,GACA,kBAAA;AAAA"}
package/package.json CHANGED
@@ -1,12 +1,20 @@
1
1
  {
2
2
  "name": "@arch-cadre/modules",
3
- "version": "0.0.57",
3
+ "version": "0.0.59",
4
4
  "description": "Core Modules for Kryo framework",
5
5
  "type": "module",
6
- "types": "./dist/index.d.mts",
6
+ "types": "./dist/index.d.cts",
7
+ "main": "./dist/index.cjs",
8
+ "module": "./dist/index.mjs",
7
9
  "exports": {
8
- ".": "./dist/index.mjs",
9
- "./server": "./dist/server.mjs",
10
+ ".": {
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.cjs"
13
+ },
14
+ "./server": {
15
+ "import": "./dist/server.mjs",
16
+ "require": "./dist/server.cjs"
17
+ },
10
18
  "./package.json": "./package.json"
11
19
  },
12
20
  "files": [
@@ -21,12 +29,12 @@
21
29
  "build": "tsdown"
22
30
  },
23
31
  "dependencies": {
24
- "@arch-cadre/core": "^0.0.31",
32
+ "@arch-cadre/core": "^0.0.33",
25
33
  "server-only": "^0.0.1",
26
34
  "zod": "^4.1.12"
27
35
  },
28
36
  "peerDependencies": {
29
- "@arch-cadre/core": "^0.0.31",
37
+ "@arch-cadre/core": "^0.0.33",
30
38
  "drizzle-orm": "1.0.0-beta.6-4414a19",
31
39
  "next": ">=15.0.0",
32
40
  "react": "^19.0.0",
@@ -34,23 +42,13 @@
34
42
  },
35
43
  "devDependencies": {
36
44
  "unbuild": "^3.6.1",
37
- "@arch-cadre/core": "^0.0.31",
45
+ "@arch-cadre/core": "^0.0.33",
38
46
  "@types/react": "^19",
39
47
  "@types/react-dom": "^19",
40
48
  "tsdown": "^0.20.3",
41
49
  "typescript": "^5"
42
50
  },
43
51
  "publishConfig": {
44
- "exports": {
45
- ".": {
46
- "import": "./dist/index.mjs",
47
- "require": "./dist/index.cjs"
48
- },
49
- "./server": {
50
- "import": "./dist/server.mjs",
51
- "require": "./dist/server.cjs"
52
- },
53
- "./package.json": "./package.json"
54
- }
52
+ "access": "public"
55
53
  }
56
54
  }