@rhino-dev/rhino-nestjs 0.2.5

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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +427 -0
  3. package/dist/blueprint/blueprint-parser.d.ts +130 -0
  4. package/dist/blueprint/blueprint-parser.js +276 -0
  5. package/dist/blueprint/blueprint-parser.js.map +1 -0
  6. package/dist/blueprint/blueprint-runner.d.ts +51 -0
  7. package/dist/blueprint/blueprint-runner.js +238 -0
  8. package/dist/blueprint/blueprint-runner.js.map +1 -0
  9. package/dist/blueprint/blueprint-validator.d.ts +19 -0
  10. package/dist/blueprint/blueprint-validator.js +163 -0
  11. package/dist/blueprint/blueprint-validator.js.map +1 -0
  12. package/dist/blueprint/generators/policy-generator.d.ts +40 -0
  13. package/dist/blueprint/generators/policy-generator.js +157 -0
  14. package/dist/blueprint/generators/policy-generator.js.map +1 -0
  15. package/dist/blueprint/generators/prisma-schema-generator.d.ts +43 -0
  16. package/dist/blueprint/generators/prisma-schema-generator.js +197 -0
  17. package/dist/blueprint/generators/prisma-schema-generator.js.map +1 -0
  18. package/dist/blueprint/generators/resource-definition-generator.d.ts +52 -0
  19. package/dist/blueprint/generators/resource-definition-generator.js +229 -0
  20. package/dist/blueprint/generators/resource-definition-generator.js.map +1 -0
  21. package/dist/blueprint/generators/seeder-generator.d.ts +21 -0
  22. package/dist/blueprint/generators/seeder-generator.js +135 -0
  23. package/dist/blueprint/generators/seeder-generator.js.map +1 -0
  24. package/dist/blueprint/generators/test-generator.d.ts +28 -0
  25. package/dist/blueprint/generators/test-generator.js +275 -0
  26. package/dist/blueprint/generators/test-generator.js.map +1 -0
  27. package/dist/blueprint/manifest-manager.d.ts +58 -0
  28. package/dist/blueprint/manifest-manager.js +137 -0
  29. package/dist/blueprint/manifest-manager.js.map +1 -0
  30. package/dist/cli/commands/blueprint.command.d.ts +16 -0
  31. package/dist/cli/commands/blueprint.command.js +35 -0
  32. package/dist/cli/commands/blueprint.command.js.map +1 -0
  33. package/dist/cli/commands/export-postman.command.d.ts +5 -0
  34. package/dist/cli/commands/export-postman.command.js +39 -0
  35. package/dist/cli/commands/export-postman.command.js.map +1 -0
  36. package/dist/cli/commands/export-types.command.d.ts +4 -0
  37. package/dist/cli/commands/export-types.command.js +36 -0
  38. package/dist/cli/commands/export-types.command.js.map +1 -0
  39. package/dist/cli/commands/generate.command.d.ts +6 -0
  40. package/dist/cli/commands/generate.command.js +212 -0
  41. package/dist/cli/commands/generate.command.js.map +1 -0
  42. package/dist/cli/commands/install.command.d.ts +8 -0
  43. package/dist/cli/commands/install.command.js +205 -0
  44. package/dist/cli/commands/install.command.js.map +1 -0
  45. package/dist/cli/index.d.ts +17 -0
  46. package/dist/cli/index.js +123 -0
  47. package/dist/cli/index.js.map +1 -0
  48. package/dist/cli/utils/io.d.ts +12 -0
  49. package/dist/cli/utils/io.js +74 -0
  50. package/dist/cli/utils/io.js.map +1 -0
  51. package/dist/cli/utils/prompt.d.ts +12 -0
  52. package/dist/cli/utils/prompt.js +78 -0
  53. package/dist/cli/utils/prompt.js.map +1 -0
  54. package/dist/constants/tokens.d.ts +3 -0
  55. package/dist/constants/tokens.js +7 -0
  56. package/dist/constants/tokens.js.map +1 -0
  57. package/dist/controllers/auth.controller.d.ts +59 -0
  58. package/dist/controllers/auth.controller.js +121 -0
  59. package/dist/controllers/auth.controller.js.map +1 -0
  60. package/dist/controllers/global.controller.d.ts +44 -0
  61. package/dist/controllers/global.controller.js +357 -0
  62. package/dist/controllers/global.controller.js.map +1 -0
  63. package/dist/controllers/invitation.controller.d.ts +30 -0
  64. package/dist/controllers/invitation.controller.js +111 -0
  65. package/dist/controllers/invitation.controller.js.map +1 -0
  66. package/dist/controllers/nested.controller.d.ts +12 -0
  67. package/dist/controllers/nested.controller.js +69 -0
  68. package/dist/controllers/nested.controller.js.map +1 -0
  69. package/dist/decorators/index.d.ts +33 -0
  70. package/dist/decorators/index.js +79 -0
  71. package/dist/decorators/index.js.map +1 -0
  72. package/dist/errors/rhino-exception.d.ts +24 -0
  73. package/dist/errors/rhino-exception.js +47 -0
  74. package/dist/errors/rhino-exception.js.map +1 -0
  75. package/dist/exporters/postman-exporter.d.ts +21 -0
  76. package/dist/exporters/postman-exporter.js +396 -0
  77. package/dist/exporters/postman-exporter.js.map +1 -0
  78. package/dist/exporters/typescript-exporter.d.ts +23 -0
  79. package/dist/exporters/typescript-exporter.js +129 -0
  80. package/dist/exporters/typescript-exporter.js.map +1 -0
  81. package/dist/guards/jwt-auth.guard.d.ts +16 -0
  82. package/dist/guards/jwt-auth.guard.js +61 -0
  83. package/dist/guards/jwt-auth.guard.js.map +1 -0
  84. package/dist/guards/resource-policy.guard.d.ts +12 -0
  85. package/dist/guards/resource-policy.guard.js +111 -0
  86. package/dist/guards/resource-policy.guard.js.map +1 -0
  87. package/dist/index.d.ts +60 -0
  88. package/dist/index.js +171 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/interceptors/hidden-columns.interceptor.d.ts +18 -0
  91. package/dist/interceptors/hidden-columns.interceptor.js +66 -0
  92. package/dist/interceptors/hidden-columns.interceptor.js.map +1 -0
  93. package/dist/interceptors/response.interceptor.d.ts +19 -0
  94. package/dist/interceptors/response.interceptor.js +47 -0
  95. package/dist/interceptors/response.interceptor.js.map +1 -0
  96. package/dist/interfaces/rhino-config.interface.d.ts +103 -0
  97. package/dist/interfaces/rhino-config.interface.js +3 -0
  98. package/dist/interfaces/rhino-config.interface.js.map +1 -0
  99. package/dist/interfaces/rhino-request.interface.d.ts +12 -0
  100. package/dist/interfaces/rhino-request.interface.js +3 -0
  101. package/dist/interfaces/rhino-request.interface.js.map +1 -0
  102. package/dist/middleware/resolve-organization.middleware.d.ts +15 -0
  103. package/dist/middleware/resolve-organization.middleware.js +38 -0
  104. package/dist/middleware/resolve-organization.middleware.js.map +1 -0
  105. package/dist/middleware/route-group.middleware.d.ts +17 -0
  106. package/dist/middleware/route-group.middleware.js +60 -0
  107. package/dist/middleware/route-group.middleware.js.map +1 -0
  108. package/dist/middleware/tenant-route-rewrite.d.ts +76 -0
  109. package/dist/middleware/tenant-route-rewrite.js +124 -0
  110. package/dist/middleware/tenant-route-rewrite.js.map +1 -0
  111. package/dist/policies/resource-policy.d.ts +25 -0
  112. package/dist/policies/resource-policy.js +77 -0
  113. package/dist/policies/resource-policy.js.map +1 -0
  114. package/dist/prisma/prisma-soft-delete.extension.d.ts +16 -0
  115. package/dist/prisma/prisma-soft-delete.extension.js +57 -0
  116. package/dist/prisma/prisma-soft-delete.extension.js.map +1 -0
  117. package/dist/prisma/prisma-uuid.extension.d.ts +9 -0
  118. package/dist/prisma/prisma-uuid.extension.js +28 -0
  119. package/dist/prisma/prisma-uuid.extension.js.map +1 -0
  120. package/dist/prisma/prisma.service.d.ts +38 -0
  121. package/dist/prisma/prisma.service.js +100 -0
  122. package/dist/prisma/prisma.service.js.map +1 -0
  123. package/dist/rhino.config.d.ts +43 -0
  124. package/dist/rhino.config.js +130 -0
  125. package/dist/rhino.config.js.map +1 -0
  126. package/dist/rhino.module.d.ts +61 -0
  127. package/dist/rhino.module.js +268 -0
  128. package/dist/rhino.module.js.map +1 -0
  129. package/dist/services/audit.service.d.ts +35 -0
  130. package/dist/services/audit.service.js +92 -0
  131. package/dist/services/audit.service.js.map +1 -0
  132. package/dist/services/auth.service.d.ts +33 -0
  133. package/dist/services/auth.service.js +157 -0
  134. package/dist/services/auth.service.js.map +1 -0
  135. package/dist/services/invitation.service.d.ts +37 -0
  136. package/dist/services/invitation.service.js +143 -0
  137. package/dist/services/invitation.service.js.map +1 -0
  138. package/dist/services/nested.service.d.ts +34 -0
  139. package/dist/services/nested.service.js +163 -0
  140. package/dist/services/nested.service.js.map +1 -0
  141. package/dist/services/organization.service.d.ts +13 -0
  142. package/dist/services/organization.service.js +60 -0
  143. package/dist/services/organization.service.js.map +1 -0
  144. package/dist/services/query-builder.service.d.ts +31 -0
  145. package/dist/services/query-builder.service.js +151 -0
  146. package/dist/services/query-builder.service.js.map +1 -0
  147. package/dist/services/resource.service.d.ts +38 -0
  148. package/dist/services/resource.service.js +230 -0
  149. package/dist/services/resource.service.js.map +1 -0
  150. package/dist/services/route-registration.service.d.ts +40 -0
  151. package/dist/services/route-registration.service.js +68 -0
  152. package/dist/services/route-registration.service.js.map +1 -0
  153. package/dist/services/scope.service.d.ts +16 -0
  154. package/dist/services/scope.service.js +32 -0
  155. package/dist/services/scope.service.js.map +1 -0
  156. package/dist/services/serializer.service.d.ts +36 -0
  157. package/dist/services/serializer.service.js +90 -0
  158. package/dist/services/serializer.service.js.map +1 -0
  159. package/dist/services/validation.service.d.ts +50 -0
  160. package/dist/services/validation.service.js +203 -0
  161. package/dist/services/validation.service.js.map +1 -0
  162. package/dist/tsconfig.build.tsbuildinfo +1 -0
  163. package/dist/utils/fk-chain-walker.d.ts +30 -0
  164. package/dist/utils/fk-chain-walker.js +23 -0
  165. package/dist/utils/fk-chain-walker.js.map +1 -0
  166. package/dist/utils/format.d.ts +7 -0
  167. package/dist/utils/format.js +28 -0
  168. package/dist/utils/format.js.map +1 -0
  169. package/dist/utils/model-builder.d.ts +64 -0
  170. package/dist/utils/model-builder.js +67 -0
  171. package/dist/utils/model-builder.js.map +1 -0
  172. package/dist/utils/permission-matcher.d.ts +46 -0
  173. package/dist/utils/permission-matcher.js +120 -0
  174. package/dist/utils/permission-matcher.js.map +1 -0
  175. package/dist/utils/scope-discovery.d.ts +34 -0
  176. package/dist/utils/scope-discovery.js +102 -0
  177. package/dist/utils/scope-discovery.js.map +1 -0
  178. package/package.json +64 -0
  179. package/stubs/skills/rhino-audit.md +184 -0
  180. package/stubs/skills/rhino-bugfix.md +117 -0
  181. package/stubs/skills/rhino-deploy.md +5 -0
  182. package/stubs/skills/rhino-docs.md +147 -0
  183. package/stubs/skills/rhino-feature.md +146 -0
  184. package/stubs/skills/rhino-migrate.md +181 -0
  185. package/stubs/skills/rhino-model.md +180 -0
  186. package/stubs/skills/rhino-plan.md +5 -0
  187. package/stubs/skills/rhino-policy.md +183 -0
  188. package/stubs/skills/rhino-refactor.md +147 -0
  189. package/stubs/skills/rhino-review.md +113 -0
  190. package/stubs/skills/rhino-scope.md +140 -0
  191. package/stubs/skills/rhino-test.md +233 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTypeScriptTypes = generateTypeScriptTypes;
4
+ exports.generate = generate;
5
+ // ---------------------------------------------------------------------------
6
+ // Public API
7
+ // ---------------------------------------------------------------------------
8
+ /**
9
+ * Generate a portable `.d.ts` string from an RhinoConfig.
10
+ *
11
+ * - One interface per registered model slug, using `allowedFields` for
12
+ * properties when available.
13
+ * - A `${PascalSlug}Query` interface when `allowedFilters`, `allowedSorts`
14
+ * or `allowedSearch` are set.
15
+ * - Generic helpers: `Paginated<T>`, `ApiResponse<T>`.
16
+ * - A top-level `RhinoModels` union of all registered slugs.
17
+ * - No Prisma-dependent imports.
18
+ */
19
+ function generateTypeScriptTypes(config, options = {}) {
20
+ const lines = [];
21
+ // ---------- header ----------
22
+ const header = options.header ??
23
+ `// This file is auto-generated by Rhino. Do not edit manually.
24
+ // Generated: ${new Date().toISOString()}`;
25
+ lines.push(header, '');
26
+ // ---------- shared generics ----------
27
+ lines.push('/** Paginated list response returned by Rhino list endpoints. */', 'export interface Paginated<T> {', ' data: T[];', ' meta: {', ' currentPage: number;', ' lastPage: number;', ' perPage: number;', ' total: number;', ' };', '}', '', '/** Generic API response wrapper used by single-resource endpoints. */', 'export interface ApiResponse<T> {', ' data: T;', '}', '');
28
+ // ---------- permission helpers ----------
29
+ lines.push('/** A dot-separated permission string in the form `slug.action`. */', 'export type Permission = string;', '', '/** Check whether `permission` appears in a list of `granted` permissions.', ' * Supports wildcards: `*`, `{slug}.*`.', ' */', 'export declare function matchesPermission(', ' permission: Permission,', ' granted: Permission[] | null | undefined,', '): boolean;', '');
30
+ const models = config.models ?? {};
31
+ const slugs = Object.keys(models);
32
+ // ---------- per-model interfaces ----------
33
+ for (const slug of slugs) {
34
+ const reg = models[slug];
35
+ const ifaceName = slugToPascal(slug);
36
+ // Model interface
37
+ lines.push(`/** Rhino model interface for the '${slug}' resource. */`);
38
+ lines.push(`export interface ${ifaceName} {`);
39
+ const fields = reg.allowedFields ?? [];
40
+ if (fields.length > 0) {
41
+ for (const field of fields) {
42
+ lines.push(` ${sanitizeKey(field)}: string | number | boolean | null;`);
43
+ }
44
+ }
45
+ else {
46
+ // Minimal fallback when no field hints are available
47
+ lines.push(' id: string | number;');
48
+ lines.push(' [key: string]: unknown;');
49
+ }
50
+ lines.push('}', '');
51
+ // Query interface — emit when there's at least one query hint
52
+ const filters = reg.allowedFilters ?? [];
53
+ const sorts = reg.allowedSorts ?? [];
54
+ const search = reg.allowedSearch ?? [];
55
+ const includes = reg.allowedIncludes ?? [];
56
+ if (filters.length > 0 || sorts.length > 0 || search.length > 0 || includes.length > 0) {
57
+ lines.push(`/** Query parameters accepted by the '${slug}' list endpoint. */`);
58
+ lines.push(`export interface ${ifaceName}Query {`);
59
+ if (filters.length > 0) {
60
+ for (const f of filters) {
61
+ lines.push(` 'filter[${f}]'?: string | number;`);
62
+ }
63
+ }
64
+ if (sorts.length > 0) {
65
+ const sortLiterals = [
66
+ ...sorts.map(s => `'${s}'`),
67
+ ...sorts.map(s => `'-${s}'`),
68
+ ].join(' | ');
69
+ lines.push(` sort?: ${sortLiterals};`);
70
+ }
71
+ if (search.length > 0) {
72
+ lines.push(' search?: string;');
73
+ }
74
+ if (includes.length > 0) {
75
+ const includeLiterals = includes.map(i => `'${i}'`).join(' | ');
76
+ lines.push(` include?: ${includeLiterals};`);
77
+ }
78
+ if (reg.allowedFields && reg.allowedFields.length > 0) {
79
+ lines.push(` 'fields[${slug}]'?: string;`);
80
+ }
81
+ if (reg.paginationEnabled !== false) {
82
+ lines.push(' page?: number;');
83
+ lines.push(' per_page?: number;');
84
+ }
85
+ lines.push('}', '');
86
+ }
87
+ }
88
+ // ---------- RhinoModels union ----------
89
+ if (slugs.length > 0) {
90
+ const union = slugs.map(s => `'${s}'`).join(' | ');
91
+ lines.push('/** Union of all registered Rhino model slugs. */', `export type RhinoModels = ${union};`, '');
92
+ }
93
+ else {
94
+ lines.push('/** Union of all registered Rhino model slugs (none registered). */', 'export type RhinoModels = never;', '');
95
+ }
96
+ return lines.join('\n');
97
+ }
98
+ // ---------------------------------------------------------------------------
99
+ // CLI-compatible alias
100
+ // ---------------------------------------------------------------------------
101
+ /**
102
+ * Alias for `generateTypeScriptTypes` used by the CLI command.
103
+ *
104
+ * @internal Prefer `generateTypeScriptTypes` in library code.
105
+ */
106
+ function generate(config, options = {}) {
107
+ return generateTypeScriptTypes(config, options);
108
+ }
109
+ // ---------------------------------------------------------------------------
110
+ // Helpers
111
+ // ---------------------------------------------------------------------------
112
+ /**
113
+ * Convert a slug like `blog-posts` or `blog_posts` to `BlogPosts`.
114
+ */
115
+ function slugToPascal(slug) {
116
+ return slug
117
+ .replace(/[-_](.)/g, (_, c) => c.toUpperCase())
118
+ .replace(/^(.)/, (_, c) => c.toUpperCase());
119
+ }
120
+ /**
121
+ * Wrap a property key in quotes if it contains characters that are not
122
+ * valid unquoted TypeScript identifiers.
123
+ */
124
+ function sanitizeKey(key) {
125
+ if (/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key))
126
+ return key;
127
+ return `'${key}'`;
128
+ }
129
+ //# sourceMappingURL=typescript-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-exporter.js","sourceRoot":"","sources":["../../src/exporters/typescript-exporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { AuthService } from '../services/auth.service';
3
+ import { PrismaService } from '../prisma/prisma.service';
4
+ import { RhinoConfigService } from '../rhino.config';
5
+ /**
6
+ * Simple JWT guard that verifies the Bearer token, loads the user
7
+ * (with userRoles for permission checks), and attaches to `request.user`.
8
+ * If the route is in a public group, it is typically skipped at the registration layer.
9
+ */
10
+ export declare class JwtAuthGuard implements CanActivate {
11
+ private readonly auth;
12
+ private readonly prisma;
13
+ private readonly config;
14
+ constructor(auth: AuthService, prisma: PrismaService, config: RhinoConfigService);
15
+ canActivate(context: ExecutionContext): Promise<boolean>;
16
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.JwtAuthGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const auth_service_1 = require("../services/auth.service");
15
+ const prisma_service_1 = require("../prisma/prisma.service");
16
+ const rhino_config_1 = require("../rhino.config");
17
+ const rhino_exception_1 = require("../errors/rhino-exception");
18
+ /**
19
+ * Simple JWT guard that verifies the Bearer token, loads the user
20
+ * (with userRoles for permission checks), and attaches to `request.user`.
21
+ * If the route is in a public group, it is typically skipped at the registration layer.
22
+ */
23
+ let JwtAuthGuard = class JwtAuthGuard {
24
+ auth;
25
+ prisma;
26
+ config;
27
+ constructor(auth, prisma, config) {
28
+ this.auth = auth;
29
+ this.prisma = prisma;
30
+ this.config = config;
31
+ }
32
+ async canActivate(context) {
33
+ const req = context.switchToHttp().getRequest();
34
+ if (req.__skipAuth)
35
+ return true;
36
+ const header = String(req.headers?.authorization ?? '');
37
+ const [scheme, token] = header.split(' ');
38
+ if (scheme !== 'Bearer' || !token) {
39
+ throw rhino_exception_1.RhinoException.unauthorized('Missing bearer token');
40
+ }
41
+ const payload = this.auth.verifyToken(token);
42
+ const userModel = this.config.authConfig().userModel;
43
+ const delegate = this.prisma.model(userModel);
44
+ const user = await delegate.findUnique({
45
+ where: { id: payload.sub },
46
+ include: { userRoles: { include: { role: true } } },
47
+ });
48
+ if (!user)
49
+ throw rhino_exception_1.RhinoException.unauthorized('User not found');
50
+ req.user = user;
51
+ return true;
52
+ }
53
+ };
54
+ exports.JwtAuthGuard = JwtAuthGuard;
55
+ exports.JwtAuthGuard = JwtAuthGuard = __decorate([
56
+ (0, common_1.Injectable)(),
57
+ __metadata("design:paramtypes", [auth_service_1.AuthService,
58
+ prisma_service_1.PrismaService,
59
+ rhino_config_1.RhinoConfigService])
60
+ ], JwtAuthGuard);
61
+ //# sourceMappingURL=jwt-auth.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/guards/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAIwB;AACxB,2DAAuD;AACvD,6DAAyD;AACzD,kDAAqD;AACrD,+DAA2D;AAG3D;;;;GAIG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAY;IAEJ;IACA;IACA;IAHnB,YACmB,IAAiB,EACjB,MAAqB,EACrB,MAA0B;QAF1B,SAAI,GAAJ,IAAI,CAAa;QACjB,WAAM,GAAN,MAAM,CAAe;QACrB,WAAM,GAAN,MAAM,CAAoB;IAC1C,CAAC;IAEJ,KAAK,CAAC,WAAW,CAAC,OAAyB;QACzC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;QAC9D,IAAI,GAAG,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,gCAAc,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC;YACrC,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE;YAC1B,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;SACpD,CAAC,CAAC;QACH,IAAI,CAAC,IAAI;YAAE,MAAM,gCAAc,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;QAC/D,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AA1BY,oCAAY;uBAAZ,YAAY;IADxB,IAAA,mBAAU,GAAE;qCAGc,0BAAW;QACT,8BAAa;QACb,iCAAkB;GAJlC,YAAY,CA0BxB"}
@@ -0,0 +1,12 @@
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
+ import { RhinoConfigService } from '../rhino.config';
3
+ /**
4
+ * Runs the model's ResourcePolicy (or convention-based default)
5
+ * to authorize the current request. Action derived from HTTP verb & route.
6
+ */
7
+ export declare class ResourcePolicyGuard implements CanActivate {
8
+ private readonly config;
9
+ constructor(config: RhinoConfigService);
10
+ canActivate(context: ExecutionContext): boolean;
11
+ private resolveAction;
12
+ }
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ResourcePolicyGuard = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const rhino_config_1 = require("../rhino.config");
15
+ const resource_policy_1 = require("../policies/resource-policy");
16
+ const permission_matcher_1 = require("../utils/permission-matcher");
17
+ const rhino_exception_1 = require("../errors/rhino-exception");
18
+ const METHOD_ACTIONS = {
19
+ GET_list: 'index',
20
+ GET_one: 'show',
21
+ POST: 'store',
22
+ PUT: 'update',
23
+ PATCH: 'update',
24
+ DELETE: 'destroy',
25
+ };
26
+ /**
27
+ * Runs the model's ResourcePolicy (or convention-based default)
28
+ * to authorize the current request. Action derived from HTTP verb & route.
29
+ */
30
+ let ResourcePolicyGuard = class ResourcePolicyGuard {
31
+ config;
32
+ constructor(config) {
33
+ this.config = config;
34
+ }
35
+ canActivate(context) {
36
+ const req = context.switchToHttp().getRequest();
37
+ const modelSlug = req.params?.modelSlug ?? req.params?.model;
38
+ if (!modelSlug)
39
+ return true; // non-model route — other guards handle it
40
+ const reg = this.config.model(modelSlug);
41
+ if (!reg)
42
+ throw rhino_exception_1.RhinoException.unknownResource(modelSlug);
43
+ const action = this.resolveAction(req);
44
+ const user = req.user;
45
+ const org = req.organization;
46
+ const PolicyClass = reg.policy;
47
+ const policy = PolicyClass ? new PolicyClass() : new resource_policy_1.ResourcePolicy();
48
+ policy.resourceSlug = modelSlug;
49
+ let allowed = false;
50
+ switch (action) {
51
+ case 'index':
52
+ allowed = policy.viewAny(user, org);
53
+ break;
54
+ case 'show':
55
+ allowed = policy.view(user, null, org);
56
+ break;
57
+ case 'store':
58
+ allowed = policy.create(user, org);
59
+ break;
60
+ case 'update':
61
+ allowed = policy.update(user, null, org);
62
+ break;
63
+ case 'destroy':
64
+ allowed = policy.delete(user, null, org);
65
+ break;
66
+ case 'trashed':
67
+ allowed = policy.viewTrashed(user, org);
68
+ break;
69
+ case 'restore':
70
+ allowed = policy.restore(user, null, org);
71
+ break;
72
+ case 'forceDelete':
73
+ allowed = policy.forceDelete(user, null, org);
74
+ break;
75
+ default:
76
+ allowed = (0, permission_matcher_1.userHasPermission)(user, `${modelSlug}.${action}`, org);
77
+ }
78
+ if (!allowed)
79
+ throw rhino_exception_1.RhinoException.forbidden();
80
+ req.__action = action;
81
+ return true;
82
+ }
83
+ resolveAction(req) {
84
+ const method = req.method;
85
+ const path = (req.url ?? req.originalUrl ?? '');
86
+ const hasId = req.params?.id != null;
87
+ const parts = path.split('?')[0].split('/').filter(Boolean);
88
+ const last = parts[parts.length - 1];
89
+ if (method === 'GET' && last === 'trashed')
90
+ return 'trashed';
91
+ if (method === 'POST' && last === 'restore')
92
+ return 'restore';
93
+ if (method === 'DELETE' && (last === 'force-delete' || last === 'force'))
94
+ return 'forceDelete';
95
+ if (method === 'GET')
96
+ return hasId ? 'show' : 'index';
97
+ if (method === 'POST')
98
+ return 'store';
99
+ if (method === 'PUT' || method === 'PATCH')
100
+ return 'update';
101
+ if (method === 'DELETE')
102
+ return 'destroy';
103
+ return 'unknown';
104
+ }
105
+ };
106
+ exports.ResourcePolicyGuard = ResourcePolicyGuard;
107
+ exports.ResourcePolicyGuard = ResourcePolicyGuard = __decorate([
108
+ (0, common_1.Injectable)(),
109
+ __metadata("design:paramtypes", [rhino_config_1.RhinoConfigService])
110
+ ], ResourcePolicyGuard);
111
+ //# sourceMappingURL=resource-policy.guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-policy.guard.js","sourceRoot":"","sources":["../../src/guards/resource-policy.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAIwB;AACxB,kDAAqD;AACrD,iEAA6D;AAC7D,oEAAgE;AAChE,+DAA2D;AAG3D,MAAM,cAAc,GAA2B;IAC7C,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,QAAQ;IACb,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,SAAS;CAClB,CAAC;AAEF;;;GAGG;AAEI,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IACD;IAA7B,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,WAAW,CAAC,OAAyB;QACnC,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAgB,CAAC;QAC9D,MAAM,SAAS,GAAW,GAAG,CAAC,MAAM,EAAE,SAAS,IAAK,GAAG,CAAC,MAAc,EAAE,KAAK,CAAC;QAC9E,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,CAAC,2CAA2C;QAExE,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG;YAAE,MAAM,gCAAc,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,MAAM,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC;QAE7B,MAAM,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC;QAC/B,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,gCAAc,EAAE,CAAC;QACtE,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC;QAEhC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,OAAO;gBACV,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,MAAM;gBACT,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,OAAO;gBACV,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,QAAQ;gBACX,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACxC,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,aAAa;gBAChB,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC9C,MAAM;YACR;gBACE,OAAO,GAAG,IAAA,sCAAiB,EAAC,IAAI,EAAE,GAAG,SAAS,IAAI,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,MAAM,gCAAc,CAAC,SAAS,EAAE,CAAC;QAC/C,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,aAAa,CAAC,GAAQ;QAC5B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAgB,CAAC;QACpC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,IAAI,EAAE,CAAW,CAAC;QAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,KAAK,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7D,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9D,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,OAAO,CAAC;YAAE,OAAO,aAAa,CAAC;QAC/F,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACtD,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,OAAO,CAAC;QACtC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO;YAAE,OAAO,QAAQ,CAAC;QAC5D,IAAI,MAAM,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAA;AArEY,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAU,GAAE;qCAE0B,iCAAkB;GAD5C,mBAAmB,CAqE/B"}
@@ -0,0 +1,60 @@
1
+ export { RhinoModule, type RhinoModuleOptions } from './rhino.module';
2
+ export { RhinoException, type RhinoErrorCode, type RhinoErrorBody, } from './errors/rhino-exception';
3
+ export type { RhinoRequest } from './interfaces/rhino-request.interface';
4
+ export { RhinoConfigService, normalizeConfig, } from './rhino.config';
5
+ export { RHINO_CONFIG, RHINO_PRISMA_CLIENT, RHINO_MODULE_OPTIONS, } from './constants/tokens';
6
+ export * from './interfaces/rhino-config.interface';
7
+ export { ResourcePolicy } from './policies/resource-policy';
8
+ export { JwtAuthGuard } from './guards/jwt-auth.guard';
9
+ export { ResourcePolicyGuard } from './guards/resource-policy.guard';
10
+ export { ResponseInterceptor, paginated } from './interceptors/response.interceptor';
11
+ export { HiddenColumnsInterceptor } from './interceptors/hidden-columns.interceptor';
12
+ export { ResolveOrganizationMiddleware } from './middleware/resolve-organization.middleware';
13
+ export { RouteGroupMiddleware } from './middleware/route-group.middleware';
14
+ export { createTenantRouteRewrite, type TenantRouteRewriteOptions, } from './middleware/tenant-route-rewrite';
15
+ export { GlobalController } from './controllers/global.controller';
16
+ export { AuthController } from './controllers/auth.controller';
17
+ export { InvitationController } from './controllers/invitation.controller';
18
+ export { NestedController } from './controllers/nested.controller';
19
+ export { PrismaService, type PrismaClientLike } from './prisma/prisma.service';
20
+ export { ResourceService } from './services/resource.service';
21
+ export { QueryBuilderService } from './services/query-builder.service';
22
+ export { SerializerService, BASE_HIDDEN_COLUMNS } from './services/serializer.service';
23
+ export { ValidationService } from './services/validation.service';
24
+ export { AuditService } from './services/audit.service';
25
+ export { AuthService } from './services/auth.service';
26
+ export { InvitationService } from './services/invitation.service';
27
+ export { NestedService } from './services/nested.service';
28
+ export { OrganizationService } from './services/organization.service';
29
+ export { ScopeService, type RhinoScope } from './services/scope.service';
30
+ export { applyRhinoRouting, describeRoutes } from './services/route-registration.service';
31
+ export { withSoftDelete } from './prisma/prisma-soft-delete.extension';
32
+ export { withUuid } from './prisma/prisma-uuid.extension';
33
+ export { RhinoModel, getRhinoModelMetadata, BelongsToOrganization, HasAuditTrail, HasUuid, HasSoftDeletes, ExceptActions, HidableColumns, PermittedAttrs, } from './decorators';
34
+ export { coercePermissions, matchesPermission, resolveUserRoleSlug, resolveUserPermissions, userHasPermission, } from './utils/permission-matcher';
35
+ export { formatPrice, type CurrencyCode } from './utils/format';
36
+ export { autoDiscoverScopes, type ScopeDiscoveryOptions } from './utils/scope-discovery';
37
+ export { defineModel, type ModelDefinition } from './utils/model-builder';
38
+ export { findOrganizationFkChain, type FkRelation, type FkChainStep, type WalkOptions, } from './utils/fk-chain-walker';
39
+ export { generatePostmanCollection, type PostmanExporterOptions, } from './exporters/postman-exporter';
40
+ export { generateTypeScriptTypes, type TypeScriptExporterOptions, } from './exporters/typescript-exporter';
41
+ export { parseFlags, extractCommand, printHelp } from './cli/index';
42
+ export { runInstall } from './cli/commands/install.command';
43
+ export { runGenerate } from './cli/commands/generate.command';
44
+ export { runBlueprint } from './cli/commands/blueprint.command';
45
+ export { runExportPostman } from './cli/commands/export-postman.command';
46
+ export { runExportTypes } from './cli/commands/export-types.command';
47
+ export { ask, confirm, selectFromList, createInterface as createReadlineInterface, } from './cli/utils/prompt';
48
+ export { fileExists, writeFileSafely, appendIfMissing, } from './cli/utils/io';
49
+ export { BlueprintParser } from './blueprint/blueprint-parser';
50
+ export type { Blueprint, BlueprintColumn, BlueprintOptions, BlueprintPermission, BlueprintRelationship } from './blueprint/blueprint-parser';
51
+ export { BlueprintValidator } from './blueprint/blueprint-validator';
52
+ export type { ValidationResult } from './blueprint/blueprint-validator';
53
+ export { ManifestManager } from './blueprint/manifest-manager';
54
+ export { BlueprintRunner } from './blueprint/blueprint-runner';
55
+ export type { RunnerOptions, RunnerResult } from './blueprint/blueprint-runner';
56
+ export { PrismaSchemaGenerator } from './blueprint/generators/prisma-schema-generator';
57
+ export { ResourceDefinitionGenerator } from './blueprint/generators/resource-definition-generator';
58
+ export { PolicyGenerator } from './blueprint/generators/policy-generator';
59
+ export { TestGenerator } from './blueprint/generators/test-generator';
60
+ export { SeederGenerator } from './blueprint/generators/seeder-generator';
package/dist/index.js ADDED
@@ -0,0 +1,171 @@
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
+ exports.userHasPermission = exports.resolveUserPermissions = exports.resolveUserRoleSlug = exports.matchesPermission = exports.coercePermissions = exports.PermittedAttrs = exports.HidableColumns = exports.ExceptActions = exports.HasSoftDeletes = exports.HasUuid = exports.HasAuditTrail = exports.BelongsToOrganization = exports.getRhinoModelMetadata = exports.RhinoModel = exports.withUuid = exports.withSoftDelete = exports.describeRoutes = exports.applyRhinoRouting = exports.ScopeService = exports.OrganizationService = exports.NestedService = exports.InvitationService = exports.AuthService = exports.AuditService = exports.ValidationService = exports.BASE_HIDDEN_COLUMNS = exports.SerializerService = exports.QueryBuilderService = exports.ResourceService = exports.PrismaService = exports.NestedController = exports.InvitationController = exports.AuthController = exports.GlobalController = exports.createTenantRouteRewrite = exports.RouteGroupMiddleware = exports.ResolveOrganizationMiddleware = exports.HiddenColumnsInterceptor = exports.paginated = exports.ResponseInterceptor = exports.ResourcePolicyGuard = exports.JwtAuthGuard = exports.ResourcePolicy = exports.RHINO_MODULE_OPTIONS = exports.RHINO_PRISMA_CLIENT = exports.RHINO_CONFIG = exports.normalizeConfig = exports.RhinoConfigService = exports.RhinoException = exports.RhinoModule = void 0;
18
+ exports.SeederGenerator = exports.TestGenerator = exports.PolicyGenerator = exports.ResourceDefinitionGenerator = exports.PrismaSchemaGenerator = exports.BlueprintRunner = exports.ManifestManager = exports.BlueprintValidator = exports.BlueprintParser = exports.appendIfMissing = exports.writeFileSafely = exports.fileExists = exports.createReadlineInterface = exports.selectFromList = exports.confirm = exports.ask = exports.runExportTypes = exports.runExportPostman = exports.runBlueprint = exports.runGenerate = exports.runInstall = exports.printHelp = exports.extractCommand = exports.parseFlags = exports.generateTypeScriptTypes = exports.generatePostmanCollection = exports.findOrganizationFkChain = exports.defineModel = exports.autoDiscoverScopes = exports.formatPrice = void 0;
19
+ // Module
20
+ var rhino_module_1 = require("./rhino.module");
21
+ Object.defineProperty(exports, "RhinoModule", { enumerable: true, get: function () { return rhino_module_1.RhinoModule; } });
22
+ // Errors
23
+ var rhino_exception_1 = require("./errors/rhino-exception");
24
+ Object.defineProperty(exports, "RhinoException", { enumerable: true, get: function () { return rhino_exception_1.RhinoException; } });
25
+ var rhino_config_1 = require("./rhino.config");
26
+ Object.defineProperty(exports, "RhinoConfigService", { enumerable: true, get: function () { return rhino_config_1.RhinoConfigService; } });
27
+ Object.defineProperty(exports, "normalizeConfig", { enumerable: true, get: function () { return rhino_config_1.normalizeConfig; } });
28
+ // Constants
29
+ var tokens_1 = require("./constants/tokens");
30
+ Object.defineProperty(exports, "RHINO_CONFIG", { enumerable: true, get: function () { return tokens_1.RHINO_CONFIG; } });
31
+ Object.defineProperty(exports, "RHINO_PRISMA_CLIENT", { enumerable: true, get: function () { return tokens_1.RHINO_PRISMA_CLIENT; } });
32
+ Object.defineProperty(exports, "RHINO_MODULE_OPTIONS", { enumerable: true, get: function () { return tokens_1.RHINO_MODULE_OPTIONS; } });
33
+ // Interfaces
34
+ __exportStar(require("./interfaces/rhino-config.interface"), exports);
35
+ // Policies
36
+ var resource_policy_1 = require("./policies/resource-policy");
37
+ Object.defineProperty(exports, "ResourcePolicy", { enumerable: true, get: function () { return resource_policy_1.ResourcePolicy; } });
38
+ // Guards
39
+ var jwt_auth_guard_1 = require("./guards/jwt-auth.guard");
40
+ Object.defineProperty(exports, "JwtAuthGuard", { enumerable: true, get: function () { return jwt_auth_guard_1.JwtAuthGuard; } });
41
+ var resource_policy_guard_1 = require("./guards/resource-policy.guard");
42
+ Object.defineProperty(exports, "ResourcePolicyGuard", { enumerable: true, get: function () { return resource_policy_guard_1.ResourcePolicyGuard; } });
43
+ // Interceptors
44
+ var response_interceptor_1 = require("./interceptors/response.interceptor");
45
+ Object.defineProperty(exports, "ResponseInterceptor", { enumerable: true, get: function () { return response_interceptor_1.ResponseInterceptor; } });
46
+ Object.defineProperty(exports, "paginated", { enumerable: true, get: function () { return response_interceptor_1.paginated; } });
47
+ var hidden_columns_interceptor_1 = require("./interceptors/hidden-columns.interceptor");
48
+ Object.defineProperty(exports, "HiddenColumnsInterceptor", { enumerable: true, get: function () { return hidden_columns_interceptor_1.HiddenColumnsInterceptor; } });
49
+ // Middleware
50
+ var resolve_organization_middleware_1 = require("./middleware/resolve-organization.middleware");
51
+ Object.defineProperty(exports, "ResolveOrganizationMiddleware", { enumerable: true, get: function () { return resolve_organization_middleware_1.ResolveOrganizationMiddleware; } });
52
+ var route_group_middleware_1 = require("./middleware/route-group.middleware");
53
+ Object.defineProperty(exports, "RouteGroupMiddleware", { enumerable: true, get: function () { return route_group_middleware_1.RouteGroupMiddleware; } });
54
+ var tenant_route_rewrite_1 = require("./middleware/tenant-route-rewrite");
55
+ Object.defineProperty(exports, "createTenantRouteRewrite", { enumerable: true, get: function () { return tenant_route_rewrite_1.createTenantRouteRewrite; } });
56
+ // Controllers (consuming apps can re-export under their own routes)
57
+ var global_controller_1 = require("./controllers/global.controller");
58
+ Object.defineProperty(exports, "GlobalController", { enumerable: true, get: function () { return global_controller_1.GlobalController; } });
59
+ var auth_controller_1 = require("./controllers/auth.controller");
60
+ Object.defineProperty(exports, "AuthController", { enumerable: true, get: function () { return auth_controller_1.AuthController; } });
61
+ var invitation_controller_1 = require("./controllers/invitation.controller");
62
+ Object.defineProperty(exports, "InvitationController", { enumerable: true, get: function () { return invitation_controller_1.InvitationController; } });
63
+ var nested_controller_1 = require("./controllers/nested.controller");
64
+ Object.defineProperty(exports, "NestedController", { enumerable: true, get: function () { return nested_controller_1.NestedController; } });
65
+ // Services
66
+ var prisma_service_1 = require("./prisma/prisma.service");
67
+ Object.defineProperty(exports, "PrismaService", { enumerable: true, get: function () { return prisma_service_1.PrismaService; } });
68
+ var resource_service_1 = require("./services/resource.service");
69
+ Object.defineProperty(exports, "ResourceService", { enumerable: true, get: function () { return resource_service_1.ResourceService; } });
70
+ var query_builder_service_1 = require("./services/query-builder.service");
71
+ Object.defineProperty(exports, "QueryBuilderService", { enumerable: true, get: function () { return query_builder_service_1.QueryBuilderService; } });
72
+ var serializer_service_1 = require("./services/serializer.service");
73
+ Object.defineProperty(exports, "SerializerService", { enumerable: true, get: function () { return serializer_service_1.SerializerService; } });
74
+ Object.defineProperty(exports, "BASE_HIDDEN_COLUMNS", { enumerable: true, get: function () { return serializer_service_1.BASE_HIDDEN_COLUMNS; } });
75
+ var validation_service_1 = require("./services/validation.service");
76
+ Object.defineProperty(exports, "ValidationService", { enumerable: true, get: function () { return validation_service_1.ValidationService; } });
77
+ var audit_service_1 = require("./services/audit.service");
78
+ Object.defineProperty(exports, "AuditService", { enumerable: true, get: function () { return audit_service_1.AuditService; } });
79
+ var auth_service_1 = require("./services/auth.service");
80
+ Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
81
+ var invitation_service_1 = require("./services/invitation.service");
82
+ Object.defineProperty(exports, "InvitationService", { enumerable: true, get: function () { return invitation_service_1.InvitationService; } });
83
+ var nested_service_1 = require("./services/nested.service");
84
+ Object.defineProperty(exports, "NestedService", { enumerable: true, get: function () { return nested_service_1.NestedService; } });
85
+ var organization_service_1 = require("./services/organization.service");
86
+ Object.defineProperty(exports, "OrganizationService", { enumerable: true, get: function () { return organization_service_1.OrganizationService; } });
87
+ var scope_service_1 = require("./services/scope.service");
88
+ Object.defineProperty(exports, "ScopeService", { enumerable: true, get: function () { return scope_service_1.ScopeService; } });
89
+ var route_registration_service_1 = require("./services/route-registration.service");
90
+ Object.defineProperty(exports, "applyRhinoRouting", { enumerable: true, get: function () { return route_registration_service_1.applyRhinoRouting; } });
91
+ Object.defineProperty(exports, "describeRoutes", { enumerable: true, get: function () { return route_registration_service_1.describeRoutes; } });
92
+ // Prisma extensions
93
+ var prisma_soft_delete_extension_1 = require("./prisma/prisma-soft-delete.extension");
94
+ Object.defineProperty(exports, "withSoftDelete", { enumerable: true, get: function () { return prisma_soft_delete_extension_1.withSoftDelete; } });
95
+ var prisma_uuid_extension_1 = require("./prisma/prisma-uuid.extension");
96
+ Object.defineProperty(exports, "withUuid", { enumerable: true, get: function () { return prisma_uuid_extension_1.withUuid; } });
97
+ // Decorators
98
+ var decorators_1 = require("./decorators");
99
+ Object.defineProperty(exports, "RhinoModel", { enumerable: true, get: function () { return decorators_1.RhinoModel; } });
100
+ Object.defineProperty(exports, "getRhinoModelMetadata", { enumerable: true, get: function () { return decorators_1.getRhinoModelMetadata; } });
101
+ Object.defineProperty(exports, "BelongsToOrganization", { enumerable: true, get: function () { return decorators_1.BelongsToOrganization; } });
102
+ Object.defineProperty(exports, "HasAuditTrail", { enumerable: true, get: function () { return decorators_1.HasAuditTrail; } });
103
+ Object.defineProperty(exports, "HasUuid", { enumerable: true, get: function () { return decorators_1.HasUuid; } });
104
+ Object.defineProperty(exports, "HasSoftDeletes", { enumerable: true, get: function () { return decorators_1.HasSoftDeletes; } });
105
+ Object.defineProperty(exports, "ExceptActions", { enumerable: true, get: function () { return decorators_1.ExceptActions; } });
106
+ Object.defineProperty(exports, "HidableColumns", { enumerable: true, get: function () { return decorators_1.HidableColumns; } });
107
+ Object.defineProperty(exports, "PermittedAttrs", { enumerable: true, get: function () { return decorators_1.PermittedAttrs; } });
108
+ // Utils
109
+ var permission_matcher_1 = require("./utils/permission-matcher");
110
+ Object.defineProperty(exports, "coercePermissions", { enumerable: true, get: function () { return permission_matcher_1.coercePermissions; } });
111
+ Object.defineProperty(exports, "matchesPermission", { enumerable: true, get: function () { return permission_matcher_1.matchesPermission; } });
112
+ Object.defineProperty(exports, "resolveUserRoleSlug", { enumerable: true, get: function () { return permission_matcher_1.resolveUserRoleSlug; } });
113
+ Object.defineProperty(exports, "resolveUserPermissions", { enumerable: true, get: function () { return permission_matcher_1.resolveUserPermissions; } });
114
+ Object.defineProperty(exports, "userHasPermission", { enumerable: true, get: function () { return permission_matcher_1.userHasPermission; } });
115
+ var format_1 = require("./utils/format");
116
+ Object.defineProperty(exports, "formatPrice", { enumerable: true, get: function () { return format_1.formatPrice; } });
117
+ var scope_discovery_1 = require("./utils/scope-discovery");
118
+ Object.defineProperty(exports, "autoDiscoverScopes", { enumerable: true, get: function () { return scope_discovery_1.autoDiscoverScopes; } });
119
+ var model_builder_1 = require("./utils/model-builder");
120
+ Object.defineProperty(exports, "defineModel", { enumerable: true, get: function () { return model_builder_1.defineModel; } });
121
+ var fk_chain_walker_1 = require("./utils/fk-chain-walker");
122
+ Object.defineProperty(exports, "findOrganizationFkChain", { enumerable: true, get: function () { return fk_chain_walker_1.findOrganizationFkChain; } });
123
+ // Exporters
124
+ var postman_exporter_1 = require("./exporters/postman-exporter");
125
+ Object.defineProperty(exports, "generatePostmanCollection", { enumerable: true, get: function () { return postman_exporter_1.generatePostmanCollection; } });
126
+ var typescript_exporter_1 = require("./exporters/typescript-exporter");
127
+ Object.defineProperty(exports, "generateTypeScriptTypes", { enumerable: true, get: function () { return typescript_exporter_1.generateTypeScriptTypes; } });
128
+ // CLI utilities (re-exported for programmatic use)
129
+ var index_1 = require("./cli/index");
130
+ Object.defineProperty(exports, "parseFlags", { enumerable: true, get: function () { return index_1.parseFlags; } });
131
+ Object.defineProperty(exports, "extractCommand", { enumerable: true, get: function () { return index_1.extractCommand; } });
132
+ Object.defineProperty(exports, "printHelp", { enumerable: true, get: function () { return index_1.printHelp; } });
133
+ var install_command_1 = require("./cli/commands/install.command");
134
+ Object.defineProperty(exports, "runInstall", { enumerable: true, get: function () { return install_command_1.runInstall; } });
135
+ var generate_command_1 = require("./cli/commands/generate.command");
136
+ Object.defineProperty(exports, "runGenerate", { enumerable: true, get: function () { return generate_command_1.runGenerate; } });
137
+ var blueprint_command_1 = require("./cli/commands/blueprint.command");
138
+ Object.defineProperty(exports, "runBlueprint", { enumerable: true, get: function () { return blueprint_command_1.runBlueprint; } });
139
+ var export_postman_command_1 = require("./cli/commands/export-postman.command");
140
+ Object.defineProperty(exports, "runExportPostman", { enumerable: true, get: function () { return export_postman_command_1.runExportPostman; } });
141
+ var export_types_command_1 = require("./cli/commands/export-types.command");
142
+ Object.defineProperty(exports, "runExportTypes", { enumerable: true, get: function () { return export_types_command_1.runExportTypes; } });
143
+ var prompt_1 = require("./cli/utils/prompt");
144
+ Object.defineProperty(exports, "ask", { enumerable: true, get: function () { return prompt_1.ask; } });
145
+ Object.defineProperty(exports, "confirm", { enumerable: true, get: function () { return prompt_1.confirm; } });
146
+ Object.defineProperty(exports, "selectFromList", { enumerable: true, get: function () { return prompt_1.selectFromList; } });
147
+ Object.defineProperty(exports, "createReadlineInterface", { enumerable: true, get: function () { return prompt_1.createInterface; } });
148
+ var io_1 = require("./cli/utils/io");
149
+ Object.defineProperty(exports, "fileExists", { enumerable: true, get: function () { return io_1.fileExists; } });
150
+ Object.defineProperty(exports, "writeFileSafely", { enumerable: true, get: function () { return io_1.writeFileSafely; } });
151
+ Object.defineProperty(exports, "appendIfMissing", { enumerable: true, get: function () { return io_1.appendIfMissing; } });
152
+ // Blueprint system
153
+ var blueprint_parser_1 = require("./blueprint/blueprint-parser");
154
+ Object.defineProperty(exports, "BlueprintParser", { enumerable: true, get: function () { return blueprint_parser_1.BlueprintParser; } });
155
+ var blueprint_validator_1 = require("./blueprint/blueprint-validator");
156
+ Object.defineProperty(exports, "BlueprintValidator", { enumerable: true, get: function () { return blueprint_validator_1.BlueprintValidator; } });
157
+ var manifest_manager_1 = require("./blueprint/manifest-manager");
158
+ Object.defineProperty(exports, "ManifestManager", { enumerable: true, get: function () { return manifest_manager_1.ManifestManager; } });
159
+ var blueprint_runner_1 = require("./blueprint/blueprint-runner");
160
+ Object.defineProperty(exports, "BlueprintRunner", { enumerable: true, get: function () { return blueprint_runner_1.BlueprintRunner; } });
161
+ var prisma_schema_generator_1 = require("./blueprint/generators/prisma-schema-generator");
162
+ Object.defineProperty(exports, "PrismaSchemaGenerator", { enumerable: true, get: function () { return prisma_schema_generator_1.PrismaSchemaGenerator; } });
163
+ var resource_definition_generator_1 = require("./blueprint/generators/resource-definition-generator");
164
+ Object.defineProperty(exports, "ResourceDefinitionGenerator", { enumerable: true, get: function () { return resource_definition_generator_1.ResourceDefinitionGenerator; } });
165
+ var policy_generator_1 = require("./blueprint/generators/policy-generator");
166
+ Object.defineProperty(exports, "PolicyGenerator", { enumerable: true, get: function () { return policy_generator_1.PolicyGenerator; } });
167
+ var test_generator_1 = require("./blueprint/generators/test-generator");
168
+ Object.defineProperty(exports, "TestGenerator", { enumerable: true, get: function () { return test_generator_1.TestGenerator; } });
169
+ var seeder_generator_1 = require("./blueprint/generators/seeder-generator");
170
+ Object.defineProperty(exports, "SeederGenerator", { enumerable: true, get: function () { return seeder_generator_1.SeederGenerator; } });
171
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { CallHandler, ExecutionContext, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ import { RhinoConfigService } from '../rhino.config';
4
+ import { SerializerService } from '../services/serializer.service';
5
+ /**
6
+ * Applies serializer filtering (base hidden, additional hidden, policy-driven
7
+ * whitelist/blacklist, computed attributes) when a non-serialized record is
8
+ * returned from a handler.
9
+ *
10
+ * Order with ResponseInterceptor: register this interceptor BEFORE
11
+ * ResponseInterceptor in the provider chain.
12
+ */
13
+ export declare class HiddenColumnsInterceptor implements NestInterceptor {
14
+ private readonly config;
15
+ private readonly serializer;
16
+ constructor(config: RhinoConfigService, serializer: SerializerService);
17
+ intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
18
+ }