@peanut-admin/vue 5.0.1 → 5.0.4

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.
Files changed (33) hide show
  1. package/dist/access/access.d.ts +2 -0
  2. package/dist/access/access.d.ts.map +1 -1
  3. package/dist/access/access.js +2 -0
  4. package/dist/access/access.js.map +1 -1
  5. package/dist/access/permission-policy.d.ts +3 -0
  6. package/dist/access/permission-policy.d.ts.map +1 -1
  7. package/dist/access/permission-policy.js +3 -0
  8. package/dist/access/permission-policy.js.map +1 -1
  9. package/dist/auth/tenant-session.d.ts +3 -0
  10. package/dist/auth/tenant-session.d.ts.map +1 -1
  11. package/dist/auth/tenant-session.js +3 -0
  12. package/dist/auth/tenant-session.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.js +2 -2
  15. package/dist/lifecycle/tenant.d.ts +5 -0
  16. package/dist/lifecycle/tenant.d.ts.map +1 -1
  17. package/dist/lifecycle/tenant.js +5 -0
  18. package/dist/lifecycle/tenant.js.map +1 -1
  19. package/dist/module/module-contribution-policy.d.ts +28 -0
  20. package/dist/module/{plugin-contribution-policy.d.ts.map → module-contribution-policy.d.ts.map} +1 -1
  21. package/dist/module/{plugin-contribution-policy.js → module-contribution-policy.js} +6 -3
  22. package/dist/module/module-contribution-policy.js.map +1 -0
  23. package/dist/runtime/guard.d.ts +4 -0
  24. package/dist/runtime/guard.d.ts.map +1 -1
  25. package/dist/runtime/guard.js +4 -0
  26. package/dist/runtime/guard.js.map +1 -1
  27. package/dist/runtime/overrides.d.ts +2 -1
  28. package/dist/runtime/overrides.d.ts.map +1 -1
  29. package/dist/runtime/overrides.js +37 -30
  30. package/dist/runtime/overrides.js.map +1 -1
  31. package/package.json +3 -3
  32. package/dist/module/plugin-contribution-policy.d.ts +0 -25
  33. package/dist/module/plugin-contribution-policy.js.map +0 -1
@@ -1,3 +1,5 @@
1
+ /** Checks one exact key; `*` is a grant marker, not a permission to query. */
1
2
  export declare const hasPermission: (permissions: ReadonlySet<string>, permission: string) => boolean;
3
+ /** Requires every key; use the policy evaluator for any-of checks. */
2
4
  export declare const hasAllPermissions: (permissions: ReadonlySet<string>, required: readonly string[]) => boolean;
3
5
  //# sourceMappingURL=access.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/access/access.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,YAAY,MAAM,KACjB,OAA4D,CAAC;AAEhE,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,UAAU,SAAS,MAAM,EAAE,KAC1B,OACqE,CAAC"}
1
+ {"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/access/access.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,eAAO,MAAM,aAAa,GACxB,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,YAAY,MAAM,KACjB,OAA4D,CAAC;AAEhE,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,GAC5B,aAAa,WAAW,CAAC,MAAM,CAAC,EAChC,UAAU,SAAS,MAAM,EAAE,KAC1B,OACqE,CAAC"}
@@ -1,3 +1,5 @@
1
+ /** Checks one exact key; `*` is a grant marker, not a permission to query. */
1
2
  export const hasPermission = (permissions, permission) => permission !== '*' && permissions.has(permission);
3
+ /** Requires every key; use the policy evaluator for any-of checks. */
2
4
  export const hasAllPermissions = (permissions, required) => required.every((permission) => hasPermission(permissions, permission));
3
5
  //# sourceMappingURL=access.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/access/access.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,WAAgC,EAChC,UAAkB,EACT,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAAgC,EAChC,QAA2B,EAClB,EAAE,CACX,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/access/access.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,WAAgC,EAChC,UAAkB,EACT,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAEhE,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,WAAgC,EAChC,QAA2B,EAClB,EAAE,CACX,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC"}
@@ -7,5 +7,8 @@ export declare const permissionEvaluatorSlot: {
7
7
  defaultValue: PermissionEvaluator;
8
8
  validate: (candidate: unknown) => candidate is PermissionEvaluator;
9
9
  };
10
+ /**
11
+ * Applies any-of semantics; empty lists are public, and a granted `*` opens it.
12
+ */
10
13
  export declare const evaluateRequiredPermissions: (requiredPermissions: string | string[], grantedPermissions: readonly string[], evaluator: PermissionEvaluator) => boolean;
11
14
  //# sourceMappingURL=permission-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"permission-policy.d.ts","sourceRoot":"","sources":["../../src/access/permission-policy.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG,CAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC;AAEb,eAAO,MAAM,iCAAiC,EAC5C,4CAAqD,CAAC;AAMxD,eAAO,MAAM,uBAAuB;;;;kBAIH,mBAAmB;0BAPvC,OAAO,KACjB,SAAS,IAAI,mBAAmB;CAQjC,CAAC;AAEH,eAAO,MAAM,2BAA2B,GACtC,qBAAqB,MAAM,GAAG,MAAM,EAAE,EACtC,oBAAoB,SAAS,MAAM,EAAE,EACrC,WAAW,mBAAmB,KAC7B,OAeF,CAAC"}
1
+ {"version":3,"file":"permission-policy.d.ts","sourceRoot":"","sources":["../../src/access/permission-policy.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,GAAG,CAChC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,EAChC,UAAU,EAAE,MAAM,KACf,OAAO,CAAC;AAEb,eAAO,MAAM,iCAAiC,EAC5C,4CAAqD,CAAC;AAMxD,eAAO,MAAM,uBAAuB;;;;kBAIH,mBAAmB;0BAPvC,OAAO,KACjB,SAAS,IAAI,mBAAmB;CAQjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B,GACtC,qBAAqB,MAAM,GAAG,MAAM,EAAE,EACtC,oBAAoB,SAAS,MAAM,EAAE,EACrC,WAAW,mBAAmB,KAC7B,OAeF,CAAC"}
@@ -9,6 +9,9 @@ export const permissionEvaluatorSlot = defineAdminOverrideSlot({
9
9
  defaultValue: hasPermission,
10
10
  validate: isPermissionEvaluator,
11
11
  });
12
+ /**
13
+ * Applies any-of semantics; empty lists are public, and a granted `*` opens it.
14
+ */
12
15
  export const evaluateRequiredPermissions = (requiredPermissions, grantedPermissions, evaluator) => {
13
16
  const required = (Array.isArray(requiredPermissions)
14
17
  ? requiredPermissions
@@ -1 +1 @@
1
- {"version":3,"file":"permission-policy.js","sourceRoot":"","sources":["../../src/access/permission-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAOlE,MAAM,CAAC,MAAM,iCAAiC,GAC5C,4CAAqD,CAAC;AAExD,MAAM,qBAAqB,GAAG,CAC5B,SAAkB,EACgB,EAAE,CAAC,OAAO,SAAS,KAAK,UAAU,CAAC;AAEvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;IAC7D,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,SAAkB;IACxB,eAAe,EAAE,OAAO;IACxB,YAAY,EAAE,aAAoC;IAClD,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,mBAAsC,EACtC,kBAAqC,EACrC,SAA8B,EACrB,EAAE;IACX,MAAM,QAAQ,GAAG,CACf,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChC,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,OAAO,CACL,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QACtB,QAAQ,CAAC,IAAI,CACX,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAC3E,CACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"permission-policy.js","sourceRoot":"","sources":["../../src/access/permission-policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAOlE,MAAM,CAAC,MAAM,iCAAiC,GAC5C,4CAAqD,CAAC;AAExD,MAAM,qBAAqB,GAAG,CAC5B,SAAkB,EACgB,EAAE,CAAC,OAAO,SAAS,KAAK,UAAU,CAAC;AAEvE,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;IAC7D,GAAG,EAAE,iCAAiC;IACtC,IAAI,EAAE,SAAkB;IACxB,eAAe,EAAE,OAAO;IACxB,YAAY,EAAE,aAAoC;IAClD,QAAQ,EAAE,qBAAqB;CAChC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,mBAAsC,EACtC,kBAAqC,EACrC,SAA8B,EACrB,EAAE;IACX,MAAM,QAAQ,GAAG,CACf,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;QAChC,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAC1B,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAClD,OAAO,CACL,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;QACtB,QAAQ,CAAC,IAAI,CACX,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,KAAK,GAAG,IAAI,SAAS,CAAC,aAAa,EAAE,UAAU,CAAC,CAC3E,CACF,CAAC;AACJ,CAAC,CAAC"}
@@ -24,5 +24,8 @@ export interface TenantAuthentication {
24
24
  }
25
25
  export type TenantSessionOutcome = TenantSelection | TenantAuthentication;
26
26
  export declare const isMultiTenantDeployment: (value: unknown) => boolean;
27
+ /**
28
+ * Checks the protocol prefix only; token claims are not decoded or validated.
29
+ */
27
30
  export declare const isTenantAccessToken: (token: string | null) => boolean;
28
31
  //# sourceMappingURL=tenant-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-session.d.ts","sourceRoot":"","sources":["../../src/auth/tenant-session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,2BAA2B,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAE1E,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,OAC/B,CAAC;AAE3B,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,OACpB,CAAC"}
1
+ {"version":3,"file":"tenant-session.d.ts","sourceRoot":"","sources":["../../src/auth/tenant-session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,2BAA2B,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,QAAQ,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,oBAAoB,GAAG,eAAe,GAAG,oBAAoB,CAAC;AAE1E,eAAO,MAAM,uBAAuB,GAAI,OAAO,OAAO,KAAG,OAC/B,CAAC;AAE3B;;GAEG;AACH,eAAO,MAAM,mBAAmB,GAAI,OAAO,MAAM,GAAG,IAAI,KAAG,OACpB,CAAC"}
@@ -1,3 +1,6 @@
1
1
  export const isMultiTenantDeployment = (value) => value === 'multi-tenant';
2
+ /**
3
+ * Checks the protocol prefix only; token claims are not decoded or validated.
4
+ */
2
5
  export const isTenantAccessToken = (token) => token?.startsWith('pa_tat_') === true;
3
6
  //# sourceMappingURL=tenant-session.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant-session.js","sourceRoot":"","sources":["../../src/auth/tenant-session.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAW,EAAE,CACjE,KAAK,KAAK,cAAc,CAAC;AAE3B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAW,EAAE,CACnE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC"}
1
+ {"version":3,"file":"tenant-session.js","sourceRoot":"","sources":["../../src/auth/tenant-session.ts"],"names":[],"mappings":"AA6BA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAc,EAAW,EAAE,CACjE,KAAK,KAAK,cAAc,CAAC;AAE3B;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAW,EAAE,CACnE,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const PEANUT_ADMIN_VUE_PACKAGE: "@peanut-admin/vue";
2
- export declare const PEANUT_ADMIN_VUE_VERSION: "5.0.1";
2
+ export declare const PEANUT_ADMIN_VUE_VERSION: "5.0.4";
3
3
  export type { ApiAudience } from './api/audience.js';
4
4
  export { createBrowserRefreshCoordinator, createMemoryRefreshCoordinator, } from './api/refresh.js';
5
5
  export type { RefreshAttempt, RefreshCoordinator } from './api/refresh.js';
@@ -22,10 +22,10 @@ export type { AsyncActionResult, AsyncActionState, } from './data/useAsyncAction
22
22
  export { useAsyncList } from './data/useAsyncList.js';
23
23
  export type { AsyncListOptions, AsyncListPage, AsyncListPagination, AsyncListQuery, AsyncListState, } from './data/useAsyncList.js';
24
24
  export { createMenuRouteRegistry, defineAdminModule, } from './module/contribution.js';
25
- export { collectPluginContributions, routesForTenantModules, } from './module/plugin-contribution-policy.js';
25
+ export { collectModuleContributions, routesForTenantModules, } from './module/module-contribution-policy.js';
26
26
  export { enabledTenantModulesFromRoutes } from './module/tenant-modules.js';
27
27
  export type { AdminModuleContribution, AdminModuleLocaleContribution, AdminModuleRoute, AdminModuleShellSlotContribution, AdminModuleShellSlotName, AdminModuleStoreContribution, AdminRouteAccess, MenuRouteRegistry, } from './module/contribution.js';
28
- export type { PluginFrontendContribution, PluginFrontendRoute, } from './module/plugin-contribution-policy.js';
28
+ export type { ModuleFrontendContribution, ModuleFrontendRoute, } from './module/module-contribution-policy.js';
29
29
  export type { TenantModuleRoute } from './module/tenant-modules.js';
30
30
  export { defineAdminHostConfig } from './runtime/config.js';
31
31
  export type { AdminAudienceHostConfig, AdminHostConfig, } from './runtime/config.js';
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export const PEANUT_ADMIN_VUE_PACKAGE = '@peanut-admin/vue';
2
- export const PEANUT_ADMIN_VUE_VERSION = '5.0.1';
2
+ export const PEANUT_ADMIN_VUE_VERSION = '5.0.4';
3
3
  export { createBrowserRefreshCoordinator, createMemoryRefreshCoordinator, } from './api/refresh.js';
4
4
  export { isProblemCode, parseProblemDetails } from './api/problem.js';
5
5
  export { hasAllPermissions, hasPermission } from './access/access.js';
@@ -12,7 +12,7 @@ export { createTenantLifecycle } from './lifecycle/tenant.js';
12
12
  export { useAsyncAction } from './data/useAsyncAction.js';
13
13
  export { useAsyncList } from './data/useAsyncList.js';
14
14
  export { createMenuRouteRegistry, defineAdminModule, } from './module/contribution.js';
15
- export { collectPluginContributions, routesForTenantModules, } from './module/plugin-contribution-policy.js';
15
+ export { collectModuleContributions, routesForTenantModules, } from './module/module-contribution-policy.js';
16
16
  export { enabledTenantModulesFromRoutes } from './module/tenant-modules.js';
17
17
  export { defineAdminHostConfig } from './runtime/config.js';
18
18
  export { mapAdminRuntimeError } from './runtime/errors.js';
@@ -9,7 +9,12 @@ export interface TenantLifecycle {
9
9
  capture: () => TenantLifecycleTicket;
10
10
  invalidate: () => number;
11
11
  }
12
+ /** Registers a unique callback for discarding tenant-owned state. */
12
13
  export declare const registerTenantDisposer: (key: string, disposer: TenantDisposer) => (() => void);
14
+ /** Runs all registered cleanups, then propagates the first failure, if any. */
13
15
  export declare const disposeTenantState: () => Promise<void>;
16
+ /**
17
+ * Creates generation tickets that reject late results after tenant changes.
18
+ */
14
19
  export declare const createTenantLifecycle: () => TenantLifecycle;
15
20
  //# sourceMappingURL=tenant.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/lifecycle/tenant.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,qBAAqB,CAAC;IACrC,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAID,eAAO,MAAM,sBAAsB,GACjC,KAAK,MAAM,EACX,UAAU,cAAc,KACvB,CAAC,MAAM,IAAI,CAWb,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CASvD,CAAC;AAEF,eAAO,MAAM,qBAAqB,QAAO,eAsBxC,CAAC"}
1
+ {"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../../src/lifecycle/tenant.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,qBAAqB,CAAC;IACrC,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAID,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GACjC,KAAK,MAAM,EACX,UAAU,cAAc,KACvB,CAAC,MAAM,IAAI,CAWb,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,QAAa,OAAO,CAAC,IAAI,CASvD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAO,eAsBxC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  const tenantDisposers = new Map();
2
+ /** Registers a unique callback for discarding tenant-owned state. */
2
3
  export const registerTenantDisposer = (key, disposer) => {
3
4
  if (key === '' || tenantDisposers.has(key)) {
4
5
  throw new Error(`TENANT_DISPOSER_DUPLICATE: ${key}`);
@@ -10,6 +11,7 @@ export const registerTenantDisposer = (key, disposer) => {
10
11
  }
11
12
  };
12
13
  };
14
+ /** Runs all registered cleanups, then propagates the first failure, if any. */
13
15
  export const disposeTenantState = async () => {
14
16
  const disposers = [...tenantDisposers.values()];
15
17
  const results = await Promise.allSettled(disposers.map(async (disposer) => disposer()));
@@ -17,6 +19,9 @@ export const disposeTenantState = async () => {
17
19
  if (failure !== undefined)
18
20
  throw failure.reason;
19
21
  };
22
+ /**
23
+ * Creates generation tickets that reject late results after tenant changes.
24
+ */
20
25
  export const createTenantLifecycle = () => {
21
26
  let generation = 0;
22
27
  let controller = new AbortController();
@@ -1 +1 @@
1
- {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/lifecycle/tenant.ts"],"names":[],"mappings":"AAcA,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAW,EACX,QAAwB,EACV,EAAE;IAChB,IAAI,GAAG,KAAK,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEnC,OAAO,GAAG,EAAE;QACV,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1C,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAC9C,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAC1E,CAAC;IACF,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IACzD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,kBAAkB,GAAG,UAAU,CAAC;YACtC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACjC,OAAO;gBACL,UAAU,EAAE,kBAAkB;gBAC9B,MAAM;gBACN,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO;aACtE,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,UAAU,IAAI,CAAC,CAAC;YAChB,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"tenant.js","sourceRoot":"","sources":["../../src/lifecycle/tenant.ts"],"names":[],"mappings":"AAcA,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;AAE1D,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAW,EACX,QAAwB,EACV,EAAE;IAChB,IAAI,GAAG,KAAK,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAEnC,OAAO,GAAG,EAAE;QACV,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1C,eAAe,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,IAAmB,EAAE;IAC1D,MAAM,SAAS,GAAG,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAC9C,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAC1B,CAAC,MAAM,EAAmC,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU,CAC1E,CAAC;IACF,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,OAAO,CAAC,MAAM,CAAC;AAClD,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAoB,EAAE;IACzD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IAEvC,OAAO;QACL,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU;QACzB,OAAO,EAAE,GAAG,EAAE;YACZ,MAAM,kBAAkB,GAAG,UAAU,CAAC;YACtC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YACjC,OAAO;gBACL,UAAU,EAAE,kBAAkB;gBAC9B,MAAM;gBACN,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,KAAK,UAAU,IAAI,CAAC,MAAM,CAAC,OAAO;aACtE,CAAC;QACJ,CAAC;QACD,UAAU,EAAE,GAAG,EAAE;YACf,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;YACnC,UAAU,IAAI,CAAC,CAAC;YAChB,OAAO,UAAU,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { PermissionEvaluator } from '../access/permission-policy.js';
2
+ /**
3
+ * Minimal router contract shared by host applications without coupling to a
4
+ * particular Vue Router major version.
5
+ */
6
+ export interface ModuleFrontendRoute {
7
+ path: string;
8
+ name?: unknown;
9
+ component?: unknown;
10
+ meta?: {
11
+ requiredPermissions?: string | string[];
12
+ [key: string]: unknown;
13
+ };
14
+ children?: ModuleFrontendRoute[];
15
+ }
16
+ export interface ModuleFrontendContribution<T extends ModuleFrontendRoute = ModuleFrontendRoute> {
17
+ moduleKey: string;
18
+ routes: T[];
19
+ }
20
+ export declare const collectModuleContributions: (modules: Record<string, {
21
+ default?: ModuleFrontendContribution;
22
+ }>) => ModuleFrontendContribution[];
23
+ /**
24
+ * Requires an enabled module plus at least one granted route permission.
25
+ * Routes with no permission declaration remain hidden.
26
+ */
27
+ export declare const routesForTenantModules: <T extends ModuleFrontendRoute>(contributions: ModuleFrontendContribution<T>[], enabledModules: readonly string[], grantedPermissions: readonly string[], evaluator: PermissionEvaluator) => T[];
28
+ //# sourceMappingURL=module-contribution-policy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-contribution-policy.d.ts","sourceRoot":"","sources":["../../src/module/plugin-contribution-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAEnD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,CAAC,EAAE,CAAC;CACb;AAED,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,0BAA0B,CAAA;CAAE,CAAC,KAChE,0BAA0B,EASxB,CAAC;AAEN,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,mBAAmB,EAClE,eAAe,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAC9C,gBAAgB,SAAS,MAAM,EAAE,EACjC,oBAAoB,SAAS,MAAM,EAAE,EACrC,WAAW,mBAAmB,KAC7B,CAAC,EAYH,CAAC"}
1
+ {"version":3,"file":"module-contribution-policy.d.ts","sourceRoot":"","sources":["../../src/module/module-contribution-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAG1E;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,mBAAmB,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,mBAAmB,GAAG,mBAAmB;IAEnD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,CAAC,EAAE,CAAC;CACb;AAED,eAAO,MAAM,0BAA0B,GACrC,SAAS,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,CAAC,EAAE,0BAA0B,CAAA;CAAE,CAAC,KAChE,0BAA0B,EASxB,CAAC;AAEN;;;GAGG;AACH,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,mBAAmB,EAClE,eAAe,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAC9C,gBAAgB,SAAS,MAAM,EAAE,EACjC,oBAAoB,SAAS,MAAM,EAAE,EACrC,WAAW,mBAAmB,KAC7B,CAAC,EAYH,CAAC"}
@@ -1,11 +1,14 @@
1
1
  import { evaluateRequiredPermissions } from '../access/permission-policy.js';
2
- export const collectPluginContributions = (modules) => Object.keys(modules)
2
+ export const collectModuleContributions = (modules) => Object.keys(modules)
3
3
  .sort()
4
4
  .map((path) => modules[path]?.default)
5
5
  .filter((contribution) => typeof contribution?.moduleKey === 'string' &&
6
6
  contribution.moduleKey.length > 0 &&
7
7
  Array.isArray(contribution.routes));
8
- /** Deployment presence alone never exposes a Tenant Module route. */
8
+ /**
9
+ * Requires an enabled module plus at least one granted route permission.
10
+ * Routes with no permission declaration remain hidden.
11
+ */
9
12
  export const routesForTenantModules = (contributions, enabledModules, grantedPermissions, evaluator) => {
10
13
  const enabled = new Set(enabledModules);
11
14
  return contributions.flatMap((contribution) => {
@@ -18,4 +21,4 @@ export const routesForTenantModules = (contributions, enabledModules, grantedPer
18
21
  });
19
22
  });
20
23
  };
21
- //# sourceMappingURL=plugin-contribution-policy.js.map
24
+ //# sourceMappingURL=module-contribution-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-contribution-policy.js","sourceRoot":"","sources":["../../src/module/module-contribution-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAwB7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAiE,EACnC,EAAE,CAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;KACjB,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;KACrC,MAAM,CACL,CAAC,YAAY,EAA8C,EAAE,CAC3D,OAAO,YAAY,EAAE,SAAS,KAAK,QAAQ;IAC3C,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CACrC,CAAC;AAEN;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,aAA8C,EAC9C,cAAiC,EACjC,kBAAqC,EACrC,SAA8B,EACzB,EAAE;IACP,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACxC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QACpD,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC;YACjD,OAAO,CACL,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzD,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -20,5 +20,9 @@ export type AdminRouteGuardResult = {
20
20
  status: 'forbidden';
21
21
  code: 'AUTHZ_FUNCTIONAL_DENIED';
22
22
  };
23
+ /**
24
+ * Loads audience context and navigation before module and permission gates.
25
+ * This is a client navigation check, not a substitute for API authorization.
26
+ */
23
27
  export declare const runAdminRouteGuard: (route: AdminRouteGuardInput, dependencies: AdminRouteGuardDependencies) => Promise<AdminRouteGuardResult>;
24
28
  //# sourceMappingURL=guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,cAAc,EAAE,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;CAChE;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,wBAAwB,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAE7D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,oBAAoB,EAC3B,cAAc,2BAA2B,KACxC,OAAO,CAAC,qBAAqB,CAoB/B,CAAC"}
1
+ {"version":3,"file":"guard.d.ts","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,cAAc,EAAE,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,KAAK,OAAO,CAAC;CAChE;AAED,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,oBAAoB,CAAC;IAAC,IAAI,EAAE,wBAAwB,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,oBAAoB,EAC3B,cAAc,2BAA2B,KACxC,OAAO,CAAC,qBAAqB,CAoB/B,CAAC"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Loads audience context and navigation before module and permission gates.
3
+ * This is a client navigation check, not a substitute for API authorization.
4
+ */
1
5
  export const runAdminRouteGuard = async (route, dependencies) => {
2
6
  await dependencies.enterAudience(route.audience);
3
7
  await dependencies.ensureContext(route.audience);
@@ -1 +1 @@
1
- {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAA2B,EAC3B,YAAyC,EACT,EAAE;IAClC,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElD,IACE,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EACxC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;IAC1E,CAAC;IACD,IACE,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,EAClD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC"}
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../src/runtime/guard.ts"],"names":[],"mappings":"AAqBA;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,KAA2B,EAC3B,YAAyC,EACT,EAAE;IAClC,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAElD,IACE,KAAK,CAAC,SAAS,KAAK,SAAS;QAC7B,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EACxC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;IAC1E,CAAC;IACD,IACE,KAAK,CAAC,cAAc,KAAK,SAAS;QAClC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC;QAC/B,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,EAClD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;IAClE,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export type AdminOverrideKind = 'service' | 'component' | 'page' | 'route';
2
- export type AdminOverrideSource = 'default' | 'application';
2
+ export type AdminOverrideSource = 'default' | 'preset' | 'application';
3
3
  export interface AdminOverrideSlot<Value = unknown> {
4
4
  readonly key: string;
5
5
  readonly kind: AdminOverrideKind;
@@ -23,6 +23,7 @@ export interface AdminOverrideResolution<Value = unknown> {
23
23
  export type AdminOverrideResolutionMetadata = Omit<AdminOverrideResolution, 'value'>;
24
24
  export interface AdminOverrideRegistryInput<Slots extends readonly AdminOverrideSlot[] = readonly AdminOverrideSlot[]> {
25
25
  readonly slots: Slots;
26
+ readonly presets?: readonly AdminOverride[];
26
27
  readonly overrides?: readonly AdminOverride[];
27
28
  }
28
29
  type SlotValue<Slots extends readonly AdminOverrideSlot[], Key extends string> = Extract<Slots[number], {
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/runtime/overrides.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3E,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,aAAa,CAAC;AAE5D,MAAM,WAAW,iBAAiB,CAAC,KAAK,GAAG,OAAO;IAChD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC;CACxD;AAED,MAAM,WAAW,aAAa,CAAC,KAAK,GAAG,OAAO;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK,GAAG,OAAO;IACtD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,uBAAuB,EACvB,OAAO,CACR,CAAC;AAEF,MAAM,WAAW,0BAA0B,CACzC,KAAK,SAAS,SAAS,iBAAiB,EAAE,GAAG,SAAS,iBAAiB,EAAE;IAEzE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAC/C;AAED,KAAK,SAAS,CACZ,KAAK,SAAS,SAAS,iBAAiB,EAAE,EAC1C,GAAG,SAAS,MAAM,IAChB,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC,SAAS,MAAM,IAAI,GAChE,IAAI,SAAS,iBAAiB,CAAC,MAAM,KAAK,CAAC,GACzC,KAAK,GACL,OAAO,GACT,OAAO,CAAC;AAEZ,KAAK,OAAO,CAAC,KAAK,SAAS,SAAS,iBAAiB,EAAE,IACrD,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;AAEhC,MAAM,WAAW,qBAAqB,CACpC,KAAK,SAAS,SAAS,iBAAiB,EAAE,GAAG,SAAS,iBAAiB,EAAE;IAEzE,OAAO,CAAC,GAAG,SAAS,OAAO,CAAC,KAAK,CAAC,EAChC,GAAG,EAAE,GAAG,GACP,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAClD,GAAG,CAAC,GAAG,SAAS,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjE,WAAW,IAAI,SAAS,+BAA+B,EAAE,CAAC;CAC3D;AA6ED,eAAO,MAAM,uBAAuB,GAClC,KAAK,EACL,IAAI,SAAS,iBAAiB,CAAC,KAAK,CAAC,EAErC,MAAM,IAAI,KACT,IAAY,CAAC;AAEhB,eAAO,MAAM,2BAA2B,GACtC,KAAK,SAAS,SAAS,iBAAiB,EAAE,EAE1C,OAAO,0BAA0B,CAAC,KAAK,CAAC,KACvC,qBAAqB,CAAC,KAAK,CAqH7B,CAAC"}
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../src/runtime/overrides.ts"],"names":[],"mappings":"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"}
@@ -50,6 +50,9 @@ export const createAdminOverrideRegistry = (input) => {
50
50
  if (input.overrides !== undefined && !Array.isArray(input.overrides)) {
51
51
  fail('ADMIN_OVERRIDE_OVERRIDES_INVALID');
52
52
  }
53
+ if (input.presets !== undefined && !Array.isArray(input.presets)) {
54
+ fail('ADMIN_OVERRIDE_PRESETS_INVALID');
55
+ }
53
56
  const slots = new Map();
54
57
  for (const rawSlot of input.slots) {
55
58
  if (!isRecord(rawSlot))
@@ -91,37 +94,41 @@ export const createAdminOverrideRegistry = (input) => {
91
94
  source: 'default',
92
95
  }));
93
96
  }
94
- const seenOverrides = new Set();
95
- for (const rawOverride of input.overrides ?? []) {
96
- if (!isRecord(rawOverride) || typeof rawOverride.key !== 'string') {
97
- fail('ADMIN_OVERRIDE_OVERRIDE_KEY_INVALID');
98
- }
99
- const key = rawOverride.key;
100
- if (seenOverrides.has(key))
101
- fail('ADMIN_OVERRIDE_KEY_DUPLICATE', key);
102
- seenOverrides.add(key);
103
- const slot = slots.get(key) ?? fail('ADMIN_OVERRIDE_KEY_UNKNOWN', key);
104
- if (rawOverride.kind !== slot.kind) {
105
- fail('ADMIN_OVERRIDE_KIND_MISMATCH', key);
106
- }
107
- if (rawOverride.contractVersion !== slot.contractVersion) {
108
- fail('ADMIN_OVERRIDE_CONTRACT_VERSION_MISMATCH', key);
97
+ const applyOverrides = (overrides, source) => {
98
+ const seenOverrides = new Set();
99
+ for (const rawOverride of overrides) {
100
+ if (!isRecord(rawOverride) || typeof rawOverride.key !== 'string') {
101
+ fail('ADMIN_OVERRIDE_OVERRIDE_KEY_INVALID');
102
+ }
103
+ const key = rawOverride.key;
104
+ if (seenOverrides.has(key))
105
+ fail('ADMIN_OVERRIDE_KEY_DUPLICATE', key);
106
+ seenOverrides.add(key);
107
+ const slot = slots.get(key) ?? fail('ADMIN_OVERRIDE_KEY_UNKNOWN', key);
108
+ if (rawOverride.kind !== slot.kind) {
109
+ fail('ADMIN_OVERRIDE_KIND_MISMATCH', key);
110
+ }
111
+ if (rawOverride.contractVersion !== slot.contractVersion) {
112
+ fail('ADMIN_OVERRIDE_CONTRACT_VERSION_MISMATCH', key);
113
+ }
114
+ if (!hasOwn(rawOverride, 'value'))
115
+ fail('ADMIN_OVERRIDE_VALUE_INVALID', key);
116
+ const value = rawOverride.value;
117
+ if (slot.validate !== undefined &&
118
+ !validatorAccepts(slot.validate, value)) {
119
+ fail('ADMIN_OVERRIDE_VALUE_INVALID', key);
120
+ }
121
+ values.set(key, freezeResolution({
122
+ key,
123
+ kind: slot.kind,
124
+ contractVersion: slot.contractVersion,
125
+ value,
126
+ source,
127
+ }));
109
128
  }
110
- if (!hasOwn(rawOverride, 'value'))
111
- fail('ADMIN_OVERRIDE_VALUE_INVALID', key);
112
- const value = rawOverride.value;
113
- if (slot.validate !== undefined &&
114
- !validatorAccepts(slot.validate, value)) {
115
- fail('ADMIN_OVERRIDE_VALUE_INVALID', key);
116
- }
117
- values.set(key, freezeResolution({
118
- key,
119
- kind: slot.kind,
120
- contractVersion: slot.contractVersion,
121
- value,
122
- source: 'application',
123
- }));
124
- }
129
+ };
130
+ applyOverrides(input.presets ?? [], 'preset');
131
+ applyOverrides(input.overrides ?? [], 'application');
125
132
  const metadata = [...values.values()].map(({ key, kind, contractVersion, source }) => freezeMetadata({ key, kind, contractVersion, source }));
126
133
  const resolve = (key) => {
127
134
  const resolution = values.get(key);
@@ -1 +1 @@
1
- {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/runtime/overrides.ts"],"names":[],"mappings":"AA6DA,MAAM,aAAa,GAAiC;IAClD,SAAS;IACT,WAAW;IACX,MAAM;IACN,OAAO;CACR,CAAC;AACF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAoB,aAAa,CAAC,CAAC;AAClE,MAAM,kBAAkB,GACtB,wEAAwE,CAAC;AAC3E,MAAM,sBAAsB,GAC1B,qDAAqD,CAAC;AAExD,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,GAAgB,EAAW,EAAE,CAC1D,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEnD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,MAAe,EAAS,EAAE;IACpD,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;AACtE,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,IAAa,EAAU,EAAE;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,IAAI,CACT,iCAAiC,EACjC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;IACJ,CAAC;IACD,IACE,OAAO,IAAI,KAAK,QAAQ;QACxB,CAAC,eAAe,CAAC,GAAG,CAAC,IAAyB,CAAC,EAC/C,CAAC;QACD,OAAO,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,sCAAsC,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,KAAc,EAAU,EAAE;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,IAAI,CACT,yCAAyC,EACzC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,SAAsC,EACtC,KAAc,EACL,EAAE;IACX,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CACrB,QAAyC,EACR,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AAErE,MAAM,gBAAgB,GAAG,CACvB,UAA0C,EACV,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;AAEtE,MAAM,YAAY,GAAG,CACnB,QAAoD,EACR,EAAE,CAC9C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhE,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAIrC,IAAU,EACJ,EAAE,CAAC,IAAI,CAAC;AAEhB,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAGzC,KAAwC,EACV,EAAE;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,8BAA8B,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,EAA6B,CAAC;IACnD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAE5D,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QAEnE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QACD,IACE,OAAO,CAAC,QAAQ,KAAK,SAAS;YAC9B,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU,EACtC,CAAC;YACD,IAAI,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,IAAI,GAAG,OAAuC,CAAC;QACrD,IACE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC3B,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,EACnD,CAAC;YACD,IAAI,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,KAAK,CAAC,GAAG,CACP,GAAG,EACH,MAAM,CAAC,MAAM,CAAC;YACZ,GAAG;YACH,IAAI,EAAE,OAAO,CAAC,IAAyB;YACvC,eAAe;YACf,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;SACpE,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmC,CAAC;IAC1D,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,CAAC,GAAG,CACR,GAAG,EACH,gBAAgB,CAAC;YACf,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,KAAK,EAAE,IAAI,CAAC,YAAY;YACxB,MAAM,EAAE,SAAS;SAClB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAClE,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC;QAC5B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QACtE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QACvE,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,WAAW,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACzD,IAAI,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;YAC/B,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;QAChC,IACE,IAAI,CAAC,QAAQ,KAAK,SAAS;YAC3B,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,EACvC,CAAC;YACD,IAAI,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,CAAC,GAAG,CACR,GAAG,EACH,gBAAgB,CAAC;YACf,GAAG;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,KAAK;YACL,MAAM,EAAE,aAAa;SACtB,CAAC,CACH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CACvC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE,CACzC,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CACzD,CAAC;IAEF,MAAM,OAAO,GAAG,CAAQ,GAAW,EAAkC,EAAE;QACrE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QACvE,OAAO,UAA4C,CAAC;IACtD,CAAC,CAAC;IAEF,OAAO;QACL,OAAO;QACP,GAAG,EAAE,CAAQ,GAAW,EAAS,EAAE,CAAC,OAAO,CAAQ,GAAG,CAAC,CAAC,KAAK;QAC7D,WAAW,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;KACV,CAAC;AACpC,CAAC,CAAC"}
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/runtime/overrides.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peanut-admin/vue",
3
- "version": "5.0.1",
3
+ "version": "5.0.4",
4
4
  "description": "Vue integration primitives for Peanut Admin",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -21,9 +21,9 @@
21
21
  },
22
22
  "types": "./dist/index.d.ts",
23
23
  "scripts": {
24
- "build": "tsc -p tsconfig.json",
24
+ "build": "node ../../scripts/local-core-writer.mjs --packages vue --operation build -- tsc -p tsconfig.json",
25
25
  "typecheck": "tsc --noEmit -p tsconfig.json",
26
- "pack:candidate": "pnpm pack --pack-destination ../../artifacts"
26
+ "watch": "node ../../scripts/local-core-writer.mjs --packages vue --operation watch -- tsc -p tsconfig.json --watch --preserveWatchOutput"
27
27
  },
28
28
  "peerDependencies": {
29
29
  "pinia": ">=2.0.23 <5",
@@ -1,25 +0,0 @@
1
- import type { PermissionEvaluator } from '../access/permission-policy.js';
2
- /**
3
- * Minimal router contract shared by host applications without coupling to a
4
- * particular Vue Router major version.
5
- */
6
- export interface PluginFrontendRoute {
7
- path: string;
8
- name?: unknown;
9
- component?: unknown;
10
- meta?: {
11
- requiredPermissions?: string | string[];
12
- [key: string]: unknown;
13
- };
14
- children?: PluginFrontendRoute[];
15
- }
16
- export interface PluginFrontendContribution<T extends PluginFrontendRoute = PluginFrontendRoute> {
17
- moduleKey: string;
18
- routes: T[];
19
- }
20
- export declare const collectPluginContributions: (modules: Record<string, {
21
- default?: PluginFrontendContribution;
22
- }>) => PluginFrontendContribution[];
23
- /** Deployment presence alone never exposes a Tenant Module route. */
24
- export declare const routesForTenantModules: <T extends PluginFrontendRoute>(contributions: PluginFrontendContribution<T>[], enabledModules: readonly string[], grantedPermissions: readonly string[], evaluator: PermissionEvaluator) => T[];
25
- //# sourceMappingURL=plugin-contribution-policy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-contribution-policy.js","sourceRoot":"","sources":["../../src/module/plugin-contribution-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAwB7E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAiE,EACnC,EAAE,CAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;KACjB,IAAI,EAAE;KACN,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;KACrC,MAAM,CACL,CAAC,YAAY,EAA8C,EAAE,CAC3D,OAAO,YAAY,EAAE,SAAS,KAAK,QAAQ;IAC3C,YAAY,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;IACjC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CACrC,CAAC;AAEN,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,aAA8C,EAC9C,cAAiC,EACjC,kBAAqC,EACrC,SAA8B,EACzB,EAAE;IACP,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;IACxC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,CAAC;QACpD,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC;YACjD,OAAO,CACL,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzD,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,EAAE,SAAS,CAAC,CACrE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}