@nextera.one/quorium-core 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capabilities.d.ts +3 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +22 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/navigation.d.ts +11 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +24 -0
- package/dist/navigation.js.map +1 -0
- package/dist/permissions.d.ts +4 -0
- package/dist/permissions.d.ts.map +1 -0
- package/dist/permissions.js +25 -0
- package/dist/permissions.js.map +1 -0
- package/dist/runtime.d.ts +11 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +53 -0
- package/dist/runtime.js.map +1 -0
- package/dist/types.d.ts +38 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +24 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE1D,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EAAE,EACrB,GAAG,EAAE,cAAc,GAClB,MAAM,EAAE,CAkBV"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateCapabilities = validateCapabilities;
|
|
4
|
+
function validateCapabilities(modules, ctx) {
|
|
5
|
+
const available = new Set(ctx.capabilities);
|
|
6
|
+
// Add provides from active modules so modules can satisfy each other
|
|
7
|
+
for (const m of modules) {
|
|
8
|
+
if (m.provides) {
|
|
9
|
+
for (const p of m.provides)
|
|
10
|
+
available.add(p);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const missing = new Set();
|
|
14
|
+
for (const m of modules) {
|
|
15
|
+
for (const req of m.requires ?? []) {
|
|
16
|
+
if (!available.has(req))
|
|
17
|
+
missing.add(req);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return Array.from(missing);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":";;AAEA,oDAqBC;AArBD,SAAgB,oBAAoB,CAClC,OAAqB,EACrB,GAAmB;IAEnB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAS,GAAG,CAAC,YAAY,CAAC,CAAC;IAEpD,qEAAqE;IACrE,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./runtime"), exports);
|
|
19
|
+
__exportStar(require("./permissions"), exports);
|
|
20
|
+
__exportStar(require("./capabilities"), exports);
|
|
21
|
+
__exportStar(require("./navigation"), exports);
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,4CAA0B;AAC1B,gDAA8B;AAC9B,iDAA+B;AAC/B,+CAA6B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CoreRouteSpec } from "./types";
|
|
2
|
+
export interface NavigationItem {
|
|
3
|
+
name: string;
|
|
4
|
+
path: string;
|
|
5
|
+
label: string;
|
|
6
|
+
icon?: string;
|
|
7
|
+
order?: number;
|
|
8
|
+
group?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function buildNavigation(routes: CoreRouteSpec[]): NavigationItem[];
|
|
11
|
+
//# sourceMappingURL=navigation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,cAAc,EAAE,CAoBzE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNavigation = buildNavigation;
|
|
4
|
+
function buildNavigation(routes) {
|
|
5
|
+
const out = [];
|
|
6
|
+
const walk = (r) => {
|
|
7
|
+
if (r.nav) {
|
|
8
|
+
out.push({
|
|
9
|
+
name: r.name,
|
|
10
|
+
path: r.path,
|
|
11
|
+
label: r.nav.label,
|
|
12
|
+
icon: r.nav.icon,
|
|
13
|
+
order: r.nav.order,
|
|
14
|
+
group: r.nav.group,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
for (const c of r.children ?? [])
|
|
18
|
+
walk(c);
|
|
19
|
+
};
|
|
20
|
+
for (const r of routes)
|
|
21
|
+
walk(r);
|
|
22
|
+
return out.sort((a, b) => (a.order ?? 0) - (b.order ?? 0));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=navigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../src/navigation.ts"],"names":[],"mappings":";;AAWA,0CAoBC;AApBD,SAAgB,eAAe,CAAC,MAAuB;IACrD,MAAM,GAAG,GAAqB,EAAE,CAAC;IAEjC,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAE,EAAE;QAChC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACV,GAAG,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK;gBAClB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI;gBAChB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK;gBAClB,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK;aACnB,CAAC,CAAC;QACL,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE;YAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,MAAM;QAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAEhC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Permission, CoreRouteSpec } from "./types";
|
|
2
|
+
export declare function hasAll(perms: Set<Permission>, required?: Permission | Permission[]): boolean;
|
|
3
|
+
export declare function filterRoutesByPermissions(routes: CoreRouteSpec[], permissions: Set<Permission>): CoreRouteSpec[];
|
|
4
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEzD,wBAAgB,MAAM,CACpB,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,EACtB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,GACnC,OAAO,CAIT;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,aAAa,EAAE,EACvB,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,GAC3B,aAAa,EAAE,CAejB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasAll = hasAll;
|
|
4
|
+
exports.filterRoutesByPermissions = filterRoutesByPermissions;
|
|
5
|
+
function hasAll(perms, required) {
|
|
6
|
+
if (!required)
|
|
7
|
+
return true;
|
|
8
|
+
const list = Array.isArray(required) ? required : [required];
|
|
9
|
+
return list.every((p) => perms.has(p));
|
|
10
|
+
}
|
|
11
|
+
function filterRoutesByPermissions(routes, permissions) {
|
|
12
|
+
const walk = (r) => {
|
|
13
|
+
if (!hasAll(permissions, r.permission))
|
|
14
|
+
return null;
|
|
15
|
+
const children = (r.children ?? [])
|
|
16
|
+
.map(walk)
|
|
17
|
+
.filter(Boolean);
|
|
18
|
+
return {
|
|
19
|
+
...r,
|
|
20
|
+
children: children.length ? children : undefined,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
return routes.map(walk).filter(Boolean);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":";;AAEA,wBAOC;AAED,8DAkBC;AA3BD,SAAgB,MAAM,CACpB,KAAsB,EACtB,QAAoC;IAEpC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,yBAAyB,CACvC,MAAuB,EACvB,WAA4B;IAE5B,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAwB,EAAE;QACtD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpD,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;aAChC,GAAG,CAAC,IAAI,CAAC;aACT,MAAM,CAAC,OAAO,CAAoB,CAAC;QAEtC,OAAO;YACL,GAAG,CAAC;YACJ,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAoB,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { CoreModule, RuntimeContext, CompositionResult } from "./types";
|
|
2
|
+
export interface RuntimeOptions {
|
|
3
|
+
modules: CoreModule[];
|
|
4
|
+
}
|
|
5
|
+
export interface Runtime {
|
|
6
|
+
validate(): void;
|
|
7
|
+
compose(ctx: RuntimeContext): CompositionResult;
|
|
8
|
+
}
|
|
9
|
+
export declare function defineModule(module: CoreModule): CoreModule;
|
|
10
|
+
export declare function createRuntime(options: RuntimeOptions): Runtime;
|
|
11
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EAElB,MAAM,SAAS,CAAC;AAIjB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,IAAI,IAAI,CAAC;IACjB,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,iBAAiB,CAAC;CACjD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CA+C9D"}
|
package/dist/runtime.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineModule = defineModule;
|
|
4
|
+
exports.createRuntime = createRuntime;
|
|
5
|
+
const permissions_1 = require("./permissions");
|
|
6
|
+
const capabilities_1 = require("./capabilities");
|
|
7
|
+
function defineModule(module) {
|
|
8
|
+
return module;
|
|
9
|
+
}
|
|
10
|
+
function createRuntime(options) {
|
|
11
|
+
const modules = [...options.modules]; // stable snapshot
|
|
12
|
+
const validate = () => {
|
|
13
|
+
const ids = new Set();
|
|
14
|
+
for (const m of modules) {
|
|
15
|
+
if (!m.id)
|
|
16
|
+
throw new Error("Quorium: module id is required");
|
|
17
|
+
if (ids.has(m.id))
|
|
18
|
+
throw new Error(`Quorium: duplicate module id "${m.id}"`);
|
|
19
|
+
ids.add(m.id);
|
|
20
|
+
const routeNames = new Set();
|
|
21
|
+
const walk = (r) => {
|
|
22
|
+
if (routeNames.has(r.name)) {
|
|
23
|
+
throw new Error(`Quorium: duplicate route name "${r.name}" in module "${m.id}"`);
|
|
24
|
+
}
|
|
25
|
+
routeNames.add(r.name);
|
|
26
|
+
for (const c of r.children ?? [])
|
|
27
|
+
walk(c);
|
|
28
|
+
};
|
|
29
|
+
for (const r of m.routes ?? [])
|
|
30
|
+
walk(r);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const compose = (ctx) => {
|
|
34
|
+
// 1) Determine enabled modules (feature flags + custom enable checks)
|
|
35
|
+
const enabled = modules.filter((m) => {
|
|
36
|
+
if (!ctx.enabledModules.has(m.id))
|
|
37
|
+
return false;
|
|
38
|
+
return m.isEnabled ? !!m.isEnabled(ctx) : true;
|
|
39
|
+
});
|
|
40
|
+
// 2) Capability validation across enabled modules only
|
|
41
|
+
const missingCapabilities = (0, capabilities_1.validateCapabilities)(enabled, ctx);
|
|
42
|
+
// 3) Compose routes deterministically (stable order from module list)
|
|
43
|
+
const allRoutes = enabled.flatMap((m) => m.routes ?? []);
|
|
44
|
+
const routes = (0, permissions_1.filterRoutesByPermissions)(allRoutes, ctx.permissions);
|
|
45
|
+
return {
|
|
46
|
+
routes,
|
|
47
|
+
activeModules: enabled.map((m) => m.id),
|
|
48
|
+
missingCapabilities,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
return { validate, compose };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":";;AAkBA,oCAEC;AAED,sCA+CC;AA/DD,+CAA0D;AAC1D,iDAAsD;AAWtD,SAAgB,YAAY,CAAC,MAAkB;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa,CAAC,OAAuB;IACnD,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB;IAExD,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC7D,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5D,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAEd,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;YACrC,MAAM,IAAI,GAAG,CAAC,CAAgB,EAAE,EAAE;gBAChC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CACb,kCAAkC,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,EAAE,GAAG,CAChE,CAAC;gBACJ,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE;oBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC;YACF,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE;gBAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,GAAmB,EAAqB,EAAE;QACzD,sEAAsE;QACtE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChD,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,uDAAuD;QACvD,MAAM,mBAAmB,GAAG,IAAA,mCAAoB,EAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE/D,sEAAsE;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAA,uCAAyB,EAAC,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;QAErE,OAAO;YACL,MAAM;YACN,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,mBAAmB;SACpB,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type Permission = string;
|
|
2
|
+
export type ModuleId = string;
|
|
3
|
+
export interface RuntimeContext {
|
|
4
|
+
permissions: Set<Permission>;
|
|
5
|
+
enabledModules: Set<ModuleId>;
|
|
6
|
+
capabilities: Set<symbol>;
|
|
7
|
+
env?: {
|
|
8
|
+
dev?: boolean;
|
|
9
|
+
ssr?: boolean;
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export interface CoreRouteSpec {
|
|
13
|
+
name: string;
|
|
14
|
+
path: string;
|
|
15
|
+
permission?: Permission | Permission[];
|
|
16
|
+
meta?: Record<string, unknown>;
|
|
17
|
+
nav?: {
|
|
18
|
+
label: string;
|
|
19
|
+
icon?: string;
|
|
20
|
+
order?: number;
|
|
21
|
+
group?: string;
|
|
22
|
+
};
|
|
23
|
+
children?: CoreRouteSpec[];
|
|
24
|
+
}
|
|
25
|
+
export interface CoreModule {
|
|
26
|
+
id: ModuleId;
|
|
27
|
+
version?: string;
|
|
28
|
+
routes?: CoreRouteSpec[];
|
|
29
|
+
requires?: symbol[];
|
|
30
|
+
provides?: symbol[];
|
|
31
|
+
isEnabled?: (ctx: RuntimeContext) => boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface CompositionResult {
|
|
34
|
+
routes: CoreRouteSpec[];
|
|
35
|
+
activeModules: ModuleId[];
|
|
36
|
+
missingCapabilities: symbol[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC;AAChC,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7B,cAAc,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,GAAG,CAAC,EAAE;QACJ,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,GAAG,CAAC,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,QAAQ,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,MAAM,CAAC,EAAE,aAAa,EAAE,CAAC;IAEzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;CAC9C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nextera.one/quorium-core",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Framework-agnostic runtime governance engine for modular frontends",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": "",
|
|
10
|
+
"main": "dist/index.js",
|
|
11
|
+
"types": "dist/index.d.ts",
|
|
12
|
+
"files": ["dist"],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"test": "vitest run",
|
|
17
|
+
"test:watch": "vitest"
|
|
18
|
+
},
|
|
19
|
+
"devDependencies": {
|
|
20
|
+
"@types/node": "^20.0.0",
|
|
21
|
+
"typescript": "^5.3.0",
|
|
22
|
+
"vitest": "^1.6.0"
|
|
23
|
+
}
|
|
24
|
+
}
|