@lenne.tech/nest-server 11.16.1 → 11.17.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.
Files changed (36) hide show
  1. package/dist/config.env.js +6 -0
  2. package/dist/config.env.js.map +1 -1
  3. package/dist/core/common/interfaces/server-options.interface.d.ts +2 -0
  4. package/dist/core/modules/permissions/core-permissions.controller.d.ts +13 -0
  5. package/dist/core/modules/permissions/core-permissions.controller.js +71 -0
  6. package/dist/core/modules/permissions/core-permissions.controller.js.map +1 -0
  7. package/dist/core/modules/permissions/core-permissions.module.d.ts +5 -0
  8. package/dist/core/modules/permissions/core-permissions.module.js +36 -0
  9. package/dist/core/modules/permissions/core-permissions.module.js.map +1 -0
  10. package/dist/core/modules/permissions/core-permissions.service.d.ts +34 -0
  11. package/dist/core/modules/permissions/core-permissions.service.js +610 -0
  12. package/dist/core/modules/permissions/core-permissions.service.js.map +1 -0
  13. package/dist/core/modules/permissions/interfaces/permissions.interface.d.ts +93 -0
  14. package/dist/core/modules/permissions/interfaces/permissions.interface.js +3 -0
  15. package/dist/core/modules/permissions/interfaces/permissions.interface.js.map +1 -0
  16. package/dist/core/modules/permissions/permissions-scanner.d.ts +25 -0
  17. package/dist/core/modules/permissions/permissions-scanner.js +817 -0
  18. package/dist/core/modules/permissions/permissions-scanner.js.map +1 -0
  19. package/dist/core.module.js +5 -0
  20. package/dist/core.module.js.map +1 -1
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.js +5 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/tsconfig.build.tsbuildinfo +1 -1
  25. package/package.json +1 -1
  26. package/src/config.env.ts +6 -0
  27. package/src/core/common/interfaces/server-options.interface.ts +26 -0
  28. package/src/core/modules/permissions/INTEGRATION-CHECKLIST.md +56 -0
  29. package/src/core/modules/permissions/README.md +102 -0
  30. package/src/core/modules/permissions/core-permissions.controller.ts +34 -0
  31. package/src/core/modules/permissions/core-permissions.module.ts +36 -0
  32. package/src/core/modules/permissions/core-permissions.service.ts +627 -0
  33. package/src/core/modules/permissions/interfaces/permissions.interface.ts +125 -0
  34. package/src/core/modules/permissions/permissions-scanner.ts +1011 -0
  35. package/src/core.module.ts +7 -0
  36. package/src/index.ts +10 -0
@@ -0,0 +1,93 @@
1
+ export interface IPermissions {
2
+ enabled?: boolean;
3
+ path?: string;
4
+ role?: false | string;
5
+ }
6
+ export interface EffectiveEndpoint {
7
+ effectiveRoles: string[];
8
+ method: string;
9
+ name: string;
10
+ source: string;
11
+ }
12
+ export interface EffectiveMatrixEntry {
13
+ endpoints: EffectiveEndpoint[];
14
+ role: string;
15
+ }
16
+ export interface EndpointPermissions {
17
+ className: string;
18
+ classRoles: string[];
19
+ filePath: string;
20
+ methods: MethodPermission[];
21
+ }
22
+ export interface FieldPermission {
23
+ description?: string;
24
+ inherited?: boolean;
25
+ name: string;
26
+ roles: string;
27
+ }
28
+ export interface FilePermissions {
29
+ className: string;
30
+ classRestriction: string[];
31
+ extendsClass?: string;
32
+ fields: FieldPermission[];
33
+ filePath: string;
34
+ securityCheck?: SecurityCheckInfo;
35
+ }
36
+ export interface MethodPermission {
37
+ httpMethod: string;
38
+ name: string;
39
+ roles: string[];
40
+ route?: string;
41
+ }
42
+ export interface ModulePermissions {
43
+ controllers: EndpointPermissions[];
44
+ inputs: FilePermissions[];
45
+ models: FilePermissions[];
46
+ name: string;
47
+ outputs: FilePermissions[];
48
+ resolvers: EndpointPermissions[];
49
+ }
50
+ export interface PermissionsReport {
51
+ generated: string;
52
+ modules: ModulePermissions[];
53
+ objects: FilePermissions[];
54
+ roleEnums: RoleEnumInfo[];
55
+ stats: ReportStats;
56
+ warnings: SecurityWarning[];
57
+ }
58
+ export interface ReportStats {
59
+ endpointCoverage: number;
60
+ securityCoverage: number;
61
+ totalEndpoints: number;
62
+ totalModels: number;
63
+ totalModules: number;
64
+ totalSubObjects: number;
65
+ totalWarnings: number;
66
+ warningsByType: WarningsByType;
67
+ }
68
+ export interface RoleEnumInfo {
69
+ file: string;
70
+ name: string;
71
+ values: {
72
+ key: string;
73
+ value: string;
74
+ }[];
75
+ }
76
+ export interface SecurityCheckInfo {
77
+ fieldsStripped: string[];
78
+ returnsUndefined: boolean;
79
+ summary: string;
80
+ }
81
+ export interface SecurityWarning {
82
+ details: string;
83
+ file: string;
84
+ module: string;
85
+ type: string;
86
+ }
87
+ export interface WarningsByType {
88
+ NO_RESTRICTION: number;
89
+ NO_ROLES: number;
90
+ NO_SECURITY_CHECK: number;
91
+ UNRESTRICTED_FIELD: number;
92
+ UNRESTRICTED_METHOD: number;
93
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=permissions.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions.interface.js","sourceRoot":"","sources":["../../../../../src/core/modules/permissions/interfaces/permissions.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { Project } from 'ts-morph';
2
+ import type { EffectiveMatrixEntry, EndpointPermissions, FieldPermission, FilePermissions, ModulePermissions, PermissionsReport, ReportStats, RoleEnumInfo, SecurityCheckInfo, SecurityWarning } from './interfaces/permissions.interface';
3
+ export declare function calculateStats(modules: ModulePermissions[], objects: FilePermissions[], warnings: SecurityWarning[]): ReportStats;
4
+ export declare function buildEffectiveMatrix(mod: ModulePermissions): EffectiveMatrixEntry[];
5
+ export declare function collectRoleEnums(project: Project, projectPath: string): RoleEnumInfo[];
6
+ export declare function detectSecurityGaps(modules: ModulePermissions[], objects: FilePermissions[]): SecurityWarning[];
7
+ export declare function discoverModules(modulesDir: string): string[];
8
+ export declare function findProjectRoot(startPath?: string): string | null;
9
+ export declare function scanPermissions(projectPath: string, logger?: {
10
+ log?: (msg: string) => void;
11
+ warn?: (msg: string) => void;
12
+ }): PermissionsReport;
13
+ export declare function scanModule(project: Project, modulesDir: string, moduleName: string, projectPath: string): ModulePermissions;
14
+ export declare function scanObjects(project: Project, objectsDir: string, projectPath: string): FilePermissions[];
15
+ export declare function extractDecoratorRoles(decoratorArgs: string[]): string[];
16
+ export declare function extractSecurityCheckInfo(classDecl: any): SecurityCheckInfo | undefined;
17
+ export declare function formatRole(role: string): string;
18
+ export declare function formatRolesDisplay(roles: string[]): string;
19
+ export declare function generateMarkdownReport(report: PermissionsReport, projectPath?: string): string;
20
+ export declare function parseEndpointPermissions(sourceFile: any, filePath: string): EndpointPermissions | undefined;
21
+ export declare function parseFieldPermission(prop: any): FieldPermission;
22
+ export declare function parseFilePermissions(sourceFile: any, filePath: string, isModel: boolean): FilePermissions | undefined;
23
+ export declare function parseRestrictedDecorator(node: any): string[];
24
+ export declare function parseRolesDecorator(node: any): string[];
25
+ export declare function resolveInheritedFields(project: Project, classDecl: any): FieldPermission[];