@rapidd/build 2.0.3 → 2.1.1

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 (60) hide show
  1. package/README.md +26 -165
  2. package/dist/bin/cli.js +0 -2
  3. package/dist/bin/cli.js.map +1 -1
  4. package/dist/index.d.ts +2 -11
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -12
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/commands/build.d.ts +1 -3
  9. package/dist/src/commands/build.d.ts.map +1 -1
  10. package/dist/src/commands/build.js +2 -107
  11. package/dist/src/commands/build.js.map +1 -1
  12. package/dist/src/generators/aclGenerator.d.ts +2 -2
  13. package/dist/src/generators/aclGenerator.d.ts.map +1 -1
  14. package/dist/src/generators/aclGenerator.js +11 -304
  15. package/dist/src/generators/aclGenerator.js.map +1 -1
  16. package/dist/src/generators/index.d.ts +1 -1
  17. package/dist/src/generators/index.d.ts.map +1 -1
  18. package/dist/src/generators/index.js +3 -1
  19. package/dist/src/generators/index.js.map +1 -1
  20. package/dist/src/generators/modelGenerator.d.ts +1 -1
  21. package/dist/src/generators/modelGenerator.d.ts.map +1 -1
  22. package/dist/src/generators/modelGenerator.js +46 -16
  23. package/dist/src/generators/modelGenerator.js.map +1 -1
  24. package/dist/src/generators/routeGenerator.d.ts +25 -5
  25. package/dist/src/generators/routeGenerator.d.ts.map +1 -1
  26. package/dist/src/generators/routeGenerator.js +397 -15
  27. package/dist/src/generators/routeGenerator.js.map +1 -1
  28. package/dist/src/parsers/index.d.ts +1 -10
  29. package/dist/src/parsers/index.d.ts.map +1 -1
  30. package/dist/src/parsers/index.js +1 -14
  31. package/dist/src/parsers/index.js.map +1 -1
  32. package/dist/src/parsers/prismaParser.d.ts +1 -1
  33. package/dist/src/parsers/prismaParser.d.ts.map +1 -1
  34. package/dist/src/parsers/prismaParser.js +20 -5
  35. package/dist/src/parsers/prismaParser.js.map +1 -1
  36. package/dist/src/parsers/types.d.ts +34 -0
  37. package/dist/src/parsers/types.d.ts.map +1 -0
  38. package/dist/src/parsers/types.js +3 -0
  39. package/dist/src/parsers/types.js.map +1 -0
  40. package/package.json +14 -19
  41. package/dist/src/parsers/datasourceParser.d.ts +0 -11
  42. package/dist/src/parsers/datasourceParser.d.ts.map +0 -1
  43. package/dist/src/parsers/datasourceParser.js +0 -131
  44. package/dist/src/parsers/datasourceParser.js.map +0 -1
  45. package/dist/src/parsers/deepSQLAnalyzer.d.ts +0 -85
  46. package/dist/src/parsers/deepSQLAnalyzer.d.ts.map +0 -1
  47. package/dist/src/parsers/deepSQLAnalyzer.js +0 -482
  48. package/dist/src/parsers/deepSQLAnalyzer.js.map +0 -1
  49. package/dist/src/parsers/enhancedRLSConverter.d.ts +0 -14
  50. package/dist/src/parsers/enhancedRLSConverter.d.ts.map +0 -1
  51. package/dist/src/parsers/enhancedRLSConverter.js +0 -168
  52. package/dist/src/parsers/enhancedRLSConverter.js.map +0 -1
  53. package/dist/src/parsers/functionAnalyzer.d.ts +0 -55
  54. package/dist/src/parsers/functionAnalyzer.d.ts.map +0 -1
  55. package/dist/src/parsers/functionAnalyzer.js +0 -274
  56. package/dist/src/parsers/functionAnalyzer.js.map +0 -1
  57. package/dist/src/parsers/prismaFilterBuilder.d.ts +0 -79
  58. package/dist/src/parsers/prismaFilterBuilder.d.ts.map +0 -1
  59. package/dist/src/parsers/prismaFilterBuilder.js +0 -322
  60. package/dist/src/parsers/prismaFilterBuilder.js.map +0 -1
package/README.md CHANGED
@@ -1,20 +1,17 @@
1
1
  # @rapidd/build
2
2
 
3
- Dynamic code generator that transforms Prisma schemas into complete **Fastify** CRUD APIs with intelligent PostgreSQL RLS-to-**TypeScript** translation.
3
+ Code generator that transforms Prisma schemas into Fastify CRUD APIs with TypeScript.
4
4
 
5
5
  ## Features
6
6
 
7
7
  - **Automatic CRUD API Generation** - Creates Fastify routes from Prisma models (TypeScript)
8
- - **RLS Translation** - Converts PostgreSQL Row-Level Security policies to TypeScript/Prisma filters (ACL: Access Control Layer)
9
- - **Dynamic & Schema-Aware** - Zero hardcoding, adapts to any database structure
10
- - **Relationship Handling** - Supports 1:1, 1:n, n:m including junction tables
11
- - **Role-Based Access Control** - Properly handles role checks in filters
12
- - **Model Generation** - Creates TypeScript CRUD model classes with capitalized filenames
8
+ - **Model Generation** - Creates TypeScript CRUD model classes
9
+ - **ACL Generation** - Generates default Access Control Layer config
13
10
  - **Selective Generation** - Update only specific models or components
14
11
 
15
12
  ## Requirements
16
13
 
17
- - **Prisma 7+** (recommended) - Full support for Prisma 7's new architecture
14
+ - **Prisma 7+**
18
15
  - Node.js 18.0.0 or higher
19
16
  - TypeScript 5.0+
20
17
 
@@ -27,7 +24,7 @@ npm install @rapidd/build
27
24
  ## Quick Start
28
25
 
29
26
  ```bash
30
- # Generate everything in current directory (default)
27
+ # Generate everything in current directory
31
28
  npx rapidd build
32
29
 
33
30
  # Generate in specific directory
@@ -43,12 +40,6 @@ npx rapidd build --only acl
43
40
 
44
41
  # Combine model and component filters
45
42
  npx rapidd build --model account --only route
46
-
47
- # Specify custom user table
48
- npx rapidd build --user-table accounts
49
-
50
- # Enable debug mode (generates acl-mappings.json)
51
- npx rapidd build --debug
52
43
  ```
53
44
 
54
45
  ## CLI Options
@@ -59,8 +50,6 @@ npx rapidd build --debug
59
50
  | `-s, --schema <path>` | Prisma schema file | `./prisma/schema.prisma` |
60
51
  | `-m, --model <name>` | Generate/update only specific model | All models |
61
52
  | `--only <component>` | Generate only: `model`, `route`, or `acl` | All components |
62
- | `--user-table <name>` | User table name for ACL | Auto-detected |
63
- | `--debug` | Enable debug mode | `false` |
64
53
 
65
54
  ## Generated Structure
66
55
 
@@ -70,7 +59,6 @@ npx rapidd build --debug
70
59
  │ ├── models/
71
60
  │ │ ├── User.ts
72
61
  │ │ ├── Post.ts
73
- │ │ ├── index.ts
74
62
  │ │ └── ...
75
63
  │ └── config/
76
64
  │ └── acl.ts
@@ -79,13 +67,12 @@ npx rapidd build --debug
79
67
  └── v1/
80
68
  ├── users.ts
81
69
  ├── posts.ts
82
- ├── index.ts
83
70
  └── ...
84
71
  ```
85
72
 
86
73
  ## Generated Code Examples
87
74
 
88
- ### Model (TypeScript)
75
+ ### Model
89
76
 
90
77
  ```typescript
91
78
  // src/models/Users.ts
@@ -98,42 +85,17 @@ export class Users extends Model {
98
85
  super('users', options);
99
86
  }
100
87
 
101
- async getMany(
102
- q: Record<string, unknown> = {},
103
- include: string | Record<string, unknown> = '',
104
- limit: number = 25,
105
- offset: number = 0,
106
- sortBy: string = 'id',
107
- sortOrder: 'asc' | 'desc' = 'asc'
108
- ): Promise<GetManyResult> {
109
- return await this._getMany(q, include, Number(limit), Number(offset), sortBy, sortOrder);
110
- }
111
-
112
- async get(id: string | number, include?: string | Record<string, unknown>): Promise<Record<string, unknown>> {
113
- return await this._get(id, include);
114
- }
115
-
116
- async create(data: Record<string, unknown>): Promise<Record<string, unknown>> {
117
- return await this._create(data);
118
- }
119
-
120
- async update(id: string | number, data: Record<string, unknown>): Promise<Record<string, unknown>> {
121
- return await this._update(id, data);
122
- }
123
-
124
- async delete(id: string | number): Promise<Record<string, unknown>> {
125
- return await this._delete(id);
126
- }
127
-
128
- filter(include: string | Record<string, unknown>): Record<string, unknown> {
129
- return { ...this._filter(include), ...this.getAccessFilter() };
130
- }
88
+ async getMany(...) { ... }
89
+ async get(id, include?) { ... }
90
+ async create(data) { ... }
91
+ async update(id, data) { ... }
92
+ async delete(id) { ... }
131
93
 
132
94
  static override QueryBuilder = new QueryBuilder('users');
133
95
  }
134
96
  ```
135
97
 
136
- ### Route (Fastify TypeScript)
98
+ ### Route (Fastify)
137
99
 
138
100
  ```typescript
139
101
  // routes/api/v1/users.ts
@@ -148,20 +110,17 @@ const usersRoutes: FastifyPluginAsync = async (fastify) => {
148
110
  (request as any).Users = new Users({ user: request.user });
149
111
  });
150
112
 
151
- fastify.get('/', async (request: FastifyRequest, reply: FastifyReply) => {
152
- const { q = {}, include = '', limit = '25', offset = '0', sortBy = 'id', sortOrder = 'asc' } = request.query as Record<string, string>;
153
- const model = (request as any).Users as Users;
154
- const results = await model.getMany(q, include, Number(limit), Number(offset), sortBy, sortOrder as 'asc' | 'desc');
155
- return reply.sendList(results.data, results.meta);
156
- });
157
-
158
- // ... POST, PATCH, DELETE handlers
113
+ fastify.get('/', async (request, reply) => { ... });
114
+ fastify.get('/:id', async (request, reply) => { ... });
115
+ fastify.post('/', async (request, reply) => { ... });
116
+ fastify.patch('/:id', async (request, reply) => { ... });
117
+ fastify.delete('/:id', async (request, reply) => { ... });
159
118
  };
160
119
 
161
120
  export default usersRoutes;
162
121
  ```
163
122
 
164
- ### ACL (TypeScript)
123
+ ### ACL
165
124
 
166
125
  ```typescript
167
126
  // src/config/acl.ts
@@ -170,22 +129,19 @@ import type { AclConfig, RapiddUser } from '../types';
170
129
  const acl: AclConfig = {
171
130
  model: {
172
131
  users: {
173
- canCreate(): boolean {
132
+ canCreate(_user: RapiddUser): boolean {
174
133
  return true;
175
134
  },
176
- getAccessFilter(user: RapiddUser) {
177
- if (user.role === 'ADMIN') return {};
178
- return { id: user.id };
135
+ getAccessFilter(_user: RapiddUser): Record<string, unknown> | boolean {
136
+ return {};
179
137
  },
180
- getUpdateFilter(user: RapiddUser) {
181
- if (user.role === 'ADMIN') return {};
182
- return { id: user.id };
138
+ getUpdateFilter(_user: RapiddUser): Record<string, unknown> | boolean | false {
139
+ return {};
183
140
  },
184
- getDeleteFilter(user: RapiddUser) {
185
- if (user.role === 'ADMIN') return {};
186
- return false;
141
+ getDeleteFilter(_user: RapiddUser): Record<string, unknown> | boolean | false {
142
+ return {};
187
143
  },
188
- getOmitFields(): string[] {
144
+ getOmitFields(_user: RapiddUser): string[] {
189
145
  return [];
190
146
  },
191
147
  },
@@ -196,126 +152,31 @@ const acl: AclConfig = {
196
152
  export default acl;
197
153
  ```
198
154
 
199
- ## ACL Translation Example
200
-
201
- **PostgreSQL Policy:**
202
- ```sql
203
- CREATE POLICY user_policy ON posts
204
- FOR SELECT
205
- USING (author_id = current_user_id() OR current_user_role() IN ('admin', 'moderator'));
206
- ```
207
-
208
- **Generated TypeScript:**
209
- ```typescript
210
- getAccessFilter(user: RapiddUser) {
211
- if (['admin', 'moderator'].includes(user?.role)) return {};
212
- return { author_id: user?.id };
213
- }
214
- ```
215
-
216
155
  ## Selective Generation
217
156
 
218
157
  ### Update Single Model
219
158
 
220
159
  ```bash
221
- # Update only the account model across all components
222
160
  npx rapidd build --model account
223
161
  ```
224
162
 
225
- This will:
226
- - Generate/update `src/models/Account.ts`
227
- - Generate/update `routes/api/v1/account.ts`
228
- - Update the `account` entry in `src/config/acl.ts`
229
-
230
163
  ### Update Single Component
231
164
 
232
165
  ```bash
233
- # Regenerate all routes
234
166
  npx rapidd build --only route
235
-
236
- # Regenerate all ACL configs
237
167
  npx rapidd build --only acl
238
-
239
- # Regenerate all models
240
168
  npx rapidd build --only model
241
169
  ```
242
170
 
243
171
  ### Combine Filters
244
172
 
245
173
  ```bash
246
- # Update only the route for a specific model
247
174
  npx rapidd build --model user --only route
248
-
249
- # Update ACL for account model
250
175
  npx rapidd build --model account --only acl
251
176
  ```
252
177
 
253
- ## Use Cases
254
-
255
- ### During Development
256
- ```bash
257
- # After adding a new model to schema
258
- npx rapidd build --model newModel
259
-
260
- # After updating RLS policies
261
- npx rapidd build --only acl
262
- ```
263
-
264
- ### Continuous Integration
265
- ```bash
266
- # Full rebuild for CI/CD
267
- npx rapidd build --output ./generated
268
- ```
269
-
270
- ### Incremental Updates
271
- ```bash
272
- # Update specific model after schema changes
273
- npx rapidd build --model user --only model
274
- npx rapidd build --model user --only acl
275
- ```
276
-
277
- ## Migration from v1 (JavaScript/Express) to v2 (TypeScript/Fastify)
278
-
279
- Version 2.0 brings major changes:
280
-
281
- 1. **TypeScript Output** - All generated files are now TypeScript (`.ts`)
282
- 2. **Fastify Framework** - Routes now use Fastify instead of Express
283
- 3. **New Directory Structure**:
284
- - Models: `src/models/` (was `src/Model/`)
285
- - ACL: `src/config/acl.ts` (was `rapidd/acl.js`)
286
- - Routes: `routes/api/v1/*.ts` (now TypeScript)
287
- 4. **Removed**: `rapidd/` folder and `relationships.json` are no longer generated
288
-
289
- ### Upgrade Steps
290
-
291
- ```bash
292
- # 1. Update dependencies
293
- npm install @rapidd/build@latest
294
- npm install prisma@^7.0.0 @prisma/client@^7.0.0
295
-
296
- # 2. Full rebuild
297
- npx rapidd build
298
-
299
- # 3. Update your imports in existing code
300
- # Old: const { User } = require('./src/Model/User');
301
- # New: import { User } from './src/models/User';
302
- ```
303
-
304
- ## Migration from Prisma 6 to 7
305
-
306
- If you're upgrading from Prisma 6, this package now automatically:
307
-
308
- 1. **Uses `@prisma/internals`** for DMMF access (no longer relies on generated client)
309
- 2. **Reads database URL** from multiple sources in order:
310
- - `prisma.config.ts` (Prisma 7 default)
311
- - Schema file `datasource.url` (Prisma 5/6 style)
312
- - `DATABASE_URL` environment variable
313
- 3. **Maintains full compatibility** - no changes needed to your workflow
314
-
315
178
  ## API Usage
316
179
 
317
- You can also use the package programmatically:
318
-
319
180
  ```typescript
320
181
  import { buildModels, parsePrismaSchema, generateAllModels } from '@rapidd/build';
321
182
 
package/dist/bin/cli.js CHANGED
@@ -15,8 +15,6 @@ program
15
15
  .option('-o, --output <path>', 'Output base directory', './')
16
16
  .option('-m, --model <name>', 'Generate/update only specific model (e.g., "account", "user")')
17
17
  .option('--only <component>', 'Generate only specific component: "model", "route", or "acl"')
18
- .option('--user-table <name>', 'Name of the user table for ACL (default: auto-detect from user/users)')
19
- .option('--debug', 'Enable debug mode (generates acl-mappings.json)')
20
18
  .action(async (options) => {
21
19
  try {
22
20
  await (0, build_1.buildModels)(options);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,iDAAkE;AAElE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;KACvH,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,IAAI,CAAC;KAC5D,MAAM,CAAC,oBAAoB,EAAE,+DAA+D,CAAC;KAC7F,MAAM,CAAC,oBAAoB,EAAE,8DAA8D,CAAC;KAC5F,MAAM,CAAC,qBAAqB,EAAE,uEAAuE,CAAC;KACtG,MAAM,CAAC,SAAS,EAAE,iDAAiD,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,iDAAkE;AAElE,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,kEAAkE,CAAC;KAC/E,MAAM,CAAC,qBAAqB,EAAE,4BAA4B,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,wBAAwB,CAAC;KACvH,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,EAAE,IAAI,CAAC;KAC5D,MAAM,CAAC,oBAAoB,EAAE,+DAA+D,CAAC;KAC7F,MAAM,CAAC,oBAAoB,EAAE,8DAA8D,CAAC;KAC5F,MAAM,CAAC,KAAK,EAAE,OAAqB,EAAE,EAAE;IACtC,IAAI,CAAC;QACH,MAAM,IAAA,mBAAW,EAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,9 @@
1
1
  export { buildModels } from './src/commands/build';
2
2
  export type { BuildOptions } from './src/commands/build';
3
3
  export { parsePrismaSchema, parsePrismaDMMF } from './src/parsers/prismaParser';
4
- export { parseDatasource } from './src/parsers/datasourceParser';
5
- export { DeepSQLAnalyzer } from './src/parsers/deepSQLAnalyzer';
6
- export { PrismaFilterBuilder } from './src/parsers/prismaFilterBuilder';
7
- export { createEnhancedConverter } from './src/parsers/enhancedRLSConverter';
8
- export { analyzeFunctions, generateMappingConfig } from './src/parsers/functionAnalyzer';
4
+ export type { ParsedSchema } from './src/parsers/prismaParser';
9
5
  export { generateModelFile, generateAllModels } from './src/generators/modelGenerator';
10
6
  export { generateRouteFile, generateAllRoutes } from './src/generators/routeGenerator';
11
7
  export { generateACL } from './src/generators/aclGenerator';
12
- export type { ModelInfo, ModelField, ModelRelation, RelationshipInfo } from './src/parsers/prismaFilterBuilder';
13
- export type { SQLFilter, SQLCondition, SQLAnalysis } from './src/parsers/deepSQLAnalyzer';
14
- export type { DatasourceConfig } from './src/parsers/datasourceParser';
15
- export type { ParsedSchema } from './src/parsers/prismaParser';
16
- export type { EnhancedConverter } from './src/parsers/enhancedRLSConverter';
17
- export type { FunctionMapping, FunctionAnalysisResult, MappingConfig } from './src/parsers/functionAnalyzer';
8
+ export type { ModelInfo, ModelField, ModelRelation } from './src/parsers/types';
18
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGzF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAChH,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAG5D,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  // Main exports for @rapidd/build
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.generateACL = exports.generateAllRoutes = exports.generateRouteFile = exports.generateAllModels = exports.generateModelFile = exports.generateMappingConfig = exports.analyzeFunctions = exports.createEnhancedConverter = exports.PrismaFilterBuilder = exports.DeepSQLAnalyzer = exports.parseDatasource = exports.parsePrismaDMMF = exports.parsePrismaSchema = exports.buildModels = void 0;
4
+ exports.generateACL = exports.generateAllRoutes = exports.generateRouteFile = exports.generateAllModels = exports.generateModelFile = exports.parsePrismaDMMF = exports.parsePrismaSchema = exports.buildModels = void 0;
5
5
  // Commands
6
6
  var build_1 = require("./src/commands/build");
7
7
  Object.defineProperty(exports, "buildModels", { enumerable: true, get: function () { return build_1.buildModels; } });
@@ -9,17 +9,6 @@ Object.defineProperty(exports, "buildModels", { enumerable: true, get: function
9
9
  var prismaParser_1 = require("./src/parsers/prismaParser");
10
10
  Object.defineProperty(exports, "parsePrismaSchema", { enumerable: true, get: function () { return prismaParser_1.parsePrismaSchema; } });
11
11
  Object.defineProperty(exports, "parsePrismaDMMF", { enumerable: true, get: function () { return prismaParser_1.parsePrismaDMMF; } });
12
- var datasourceParser_1 = require("./src/parsers/datasourceParser");
13
- Object.defineProperty(exports, "parseDatasource", { enumerable: true, get: function () { return datasourceParser_1.parseDatasource; } });
14
- var deepSQLAnalyzer_1 = require("./src/parsers/deepSQLAnalyzer");
15
- Object.defineProperty(exports, "DeepSQLAnalyzer", { enumerable: true, get: function () { return deepSQLAnalyzer_1.DeepSQLAnalyzer; } });
16
- var prismaFilterBuilder_1 = require("./src/parsers/prismaFilterBuilder");
17
- Object.defineProperty(exports, "PrismaFilterBuilder", { enumerable: true, get: function () { return prismaFilterBuilder_1.PrismaFilterBuilder; } });
18
- var enhancedRLSConverter_1 = require("./src/parsers/enhancedRLSConverter");
19
- Object.defineProperty(exports, "createEnhancedConverter", { enumerable: true, get: function () { return enhancedRLSConverter_1.createEnhancedConverter; } });
20
- var functionAnalyzer_1 = require("./src/parsers/functionAnalyzer");
21
- Object.defineProperty(exports, "analyzeFunctions", { enumerable: true, get: function () { return functionAnalyzer_1.analyzeFunctions; } });
22
- Object.defineProperty(exports, "generateMappingConfig", { enumerable: true, get: function () { return functionAnalyzer_1.generateMappingConfig; } });
23
12
  // Generators
24
13
  var modelGenerator_1 = require("./src/generators/modelGenerator");
25
14
  Object.defineProperty(exports, "generateModelFile", { enumerable: true, get: function () { return modelGenerator_1.generateModelFile; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;AAEjC,WAAW;AACX,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AAGpB,UAAU;AACV,2DAAgF;AAAvE,iHAAA,iBAAiB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAC3C,mEAAiE;AAAxD,mHAAA,eAAe,OAAA;AACxB,iEAAgE;AAAvD,kHAAA,eAAe,OAAA;AACxB,yEAAwE;AAA/D,0HAAA,mBAAmB,OAAA;AAC5B,2EAA6E;AAApE,+HAAA,uBAAuB,OAAA;AAChC,mEAAyF;AAAhF,oHAAA,gBAAgB,OAAA;AAAE,yHAAA,qBAAqB,OAAA;AAEhD,aAAa;AACb,kEAAuF;AAA9E,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,kEAAuF;AAA9E,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,8DAA4D;AAAnD,2GAAA,WAAW,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;AAEjC,WAAW;AACX,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AAGpB,UAAU;AACV,2DAAgF;AAAvE,iHAAA,iBAAiB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAG3C,aAAa;AACb,kEAAuF;AAA9E,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,kEAAuF;AAA9E,mHAAA,iBAAiB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC7C,8DAA4D;AAAnD,2GAAA,WAAW,OAAA"}
@@ -1,11 +1,9 @@
1
- import type { ModelInfo } from '../parsers/prismaFilterBuilder';
1
+ import type { ModelInfo } from '../parsers/types';
2
2
  export interface BuildOptions {
3
3
  schema: string;
4
4
  output: string;
5
5
  model?: string;
6
6
  only?: 'model' | 'route' | 'acl';
7
- userTable?: string;
8
- debug?: boolean;
9
7
  }
10
8
  /**
11
9
  * Build models from Prisma schema
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAoB,MAAM,gCAAgC,CAAC;AAElF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAgHD;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,CA0InH"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;CAClC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,CAoGnH"}
@@ -38,82 +38,9 @@ const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  const child_process_1 = require("child_process");
40
40
  const prismaParser_1 = require("../parsers/prismaParser");
41
- const datasourceParser_1 = require("../parsers/datasourceParser");
42
41
  const modelGenerator_1 = require("../generators/modelGenerator");
43
42
  const routeGenerator_1 = require("../generators/routeGenerator");
44
43
  const aclGenerator_1 = require("../generators/aclGenerator");
45
- /**
46
- * Update acl.ts for a specific model
47
- */
48
- async function updateACLForModel(filteredModels, allModels, aclPath, datasource, userTable, debug = false) {
49
- // Generate ACL for the filtered model (but pass all models for user table detection)
50
- const tempPath = aclPath + '.tmp';
51
- await (0, aclGenerator_1.generateACL)(filteredModels, tempPath, datasource.url, datasource.isPostgreSQL, userTable, {}, debug, allModels);
52
- // Read the generated ACL for the specific model
53
- const tempContent = fs.readFileSync(tempPath, 'utf8');
54
- fs.unlinkSync(tempPath);
55
- // Extract the model's ACL configuration
56
- const modelName = Object.keys(filteredModels)[0];
57
- // Find the start of the model definition
58
- const modelStart = tempContent.indexOf(`${modelName}:`);
59
- if (modelStart === -1) {
60
- throw new Error(`Could not find model ${modelName} in generated RLS`);
61
- }
62
- // Find the matching closing brace by counting braces
63
- let braceCount = 0;
64
- let inString = false;
65
- let stringChar = null;
66
- let i = tempContent.indexOf('{', modelStart);
67
- for (; i < tempContent.length; i++) {
68
- const char = tempContent[i];
69
- const prevChar = i > 0 ? tempContent[i - 1] : '';
70
- // Handle string literals
71
- if ((char === '"' || char === "'" || char === '`') && prevChar !== '\\') {
72
- if (!inString) {
73
- inString = true;
74
- stringChar = char;
75
- }
76
- else if (char === stringChar) {
77
- inString = false;
78
- stringChar = null;
79
- }
80
- }
81
- if (!inString) {
82
- if (char === '{')
83
- braceCount++;
84
- if (char === '}')
85
- braceCount--;
86
- if (braceCount === 0) {
87
- // Found the closing brace
88
- break;
89
- }
90
- }
91
- }
92
- if (braceCount !== 0) {
93
- throw new Error(`Could not extract ACL for model ${modelName} - unmatched braces`);
94
- }
95
- const modelAcl = tempContent.substring(modelStart, i + 1);
96
- // Read existing acl.ts
97
- if (fs.existsSync(aclPath)) {
98
- let existingContent = fs.readFileSync(aclPath, 'utf8');
99
- // Check if model already exists in ACL
100
- const existingModelPattern = new RegExp(`${modelName}:\\s*\\{[\\s\\S]*?\\n \\}(?=,|\\n)`);
101
- if (existingModelPattern.test(existingContent)) {
102
- // Replace existing model ACL
103
- existingContent = existingContent.replace(existingModelPattern, modelAcl);
104
- }
105
- else {
106
- // Add new model ACL before the closing of acl.model
107
- existingContent = existingContent.replace(/(\n \})\n(\s*\},)/, `$1,\n ${modelAcl}\n$2`);
108
- }
109
- fs.writeFileSync(aclPath, existingContent);
110
- console.log(`Updated ACL for model: ${modelName}`);
111
- }
112
- else {
113
- // If acl.ts doesn't exist, create it with just this model
114
- await (0, aclGenerator_1.generateACL)(filteredModels, aclPath, datasource.url, datasource.isPostgreSQL, userTable, {}, debug, allModels);
115
- }
116
- }
117
44
  /**
118
45
  * Build models from Prisma schema
119
46
  */
@@ -191,45 +118,13 @@ async function buildModels(options) {
191
118
  if (shouldGenerate.model) {
192
119
  (0, modelGenerator_1.generateAllModels)(filteredModels, modelDir);
193
120
  }
194
- // Parse datasource to determine database type
195
- let datasource = { isPostgreSQL: true, url: null, provider: null, isMySQL: false };
196
- try {
197
- datasource = (0, datasourceParser_1.parseDatasource)(schemaPath);
198
- }
199
- catch (error) {
200
- // Only warn if it's not the expected "No url found" error in Prisma 7
201
- if (!error.message.includes('No url found')) {
202
- console.warn('Could not parse datasource, assuming PostgreSQL:', error.message);
203
- }
204
- }
205
121
  // Generate ACL configuration
206
122
  if (shouldGenerate.acl) {
207
- console.log(`\nGenerating ACL configuration...`);
208
- try {
209
- // For non-PostgreSQL databases (MySQL, SQLite, etc.), generate permissive ACL
210
- if (!datasource.isPostgreSQL) {
211
- console.log(`${datasource.provider || 'Non-PostgreSQL'} database detected - generating permissive ACL...`);
212
- await (0, aclGenerator_1.generateACL)(models, aclPath, null, false, options.userTable, {}, options.debug);
213
- }
214
- else if (options.model) {
215
- // Update only specific model in acl.ts
216
- await updateACLForModel(filteredModels, models, aclPath, datasource, options.userTable, options.debug);
217
- }
218
- else {
219
- // Generate ACL for all models
220
- await (0, aclGenerator_1.generateACL)(models, aclPath, datasource.url, datasource.isPostgreSQL, options.userTable, {}, options.debug);
221
- }
222
- }
223
- catch (error) {
224
- console.error('Failed to generate ACL:', error.message);
225
- console.log('Generating permissive ACL fallback...');
226
- // Pass null for URL and false for isPostgreSQL to skip database connection
227
- await (0, aclGenerator_1.generateACL)(models, aclPath, null, false, options.userTable, {}, options.debug);
228
- }
123
+ (0, aclGenerator_1.generateACL)(filteredModels, aclPath);
229
124
  }
230
125
  // Generate routes
231
126
  if (shouldGenerate.route) {
232
- (0, routeGenerator_1.generateAllRoutes)(filteredModels, routesDir);
127
+ (0, routeGenerator_1.generateAllRoutes)(filteredModels, routesDir, models);
233
128
  }
234
129
  return { models, enums };
235
130
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import type { ModelInfo, RelationshipInfo } from '../parsers/prismaFilterBuilder';
1
+ import type { ModelInfo } from '../parsers/types';
2
2
  /**
3
3
  * Generate complete acl.ts file (TypeScript)
4
4
  */
5
- export declare function generateACL(models: Record<string, ModelInfo>, outputPath: string, databaseUrl: string | null, isPostgreSQL: boolean, userTableOption?: string, relationships?: Record<string, Record<string, RelationshipInfo>>, debug?: boolean, allModels?: Record<string, ModelInfo>): Promise<void>;
5
+ export declare function generateACL(models: Record<string, ModelInfo>, outputPath: string): void;
6
6
  //# sourceMappingURL=aclGenerator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/aclGenerator.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AA+UlF;;GAEG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,YAAY,EAAE,OAAO,EACrB,eAAe,CAAC,EAAE,MAAM,EACxB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAM,EACpE,KAAK,GAAE,OAAe,EACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACpC,OAAO,CAAC,IAAI,CAAC,CAuFf"}
1
+ {"version":3,"file":"aclGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/aclGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAyBlD;;GAEG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,UAAU,EAAE,MAAM,GACjB,IAAI,CAgCN"}