@rapidd/build 2.0.2 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) 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 +1 -106
  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/modelGenerator.d.ts +1 -1
  17. package/dist/src/generators/modelGenerator.d.ts.map +1 -1
  18. package/dist/src/generators/modelGenerator.js +46 -33
  19. package/dist/src/generators/modelGenerator.js.map +1 -1
  20. package/dist/src/generators/routeGenerator.d.ts +1 -1
  21. package/dist/src/generators/routeGenerator.d.ts.map +1 -1
  22. package/dist/src/generators/routeGenerator.js +6 -2
  23. package/dist/src/generators/routeGenerator.js.map +1 -1
  24. package/dist/src/parsers/index.d.ts +1 -10
  25. package/dist/src/parsers/index.d.ts.map +1 -1
  26. package/dist/src/parsers/index.js +1 -14
  27. package/dist/src/parsers/index.js.map +1 -1
  28. package/dist/src/parsers/prismaParser.d.ts +1 -1
  29. package/dist/src/parsers/prismaParser.d.ts.map +1 -1
  30. package/dist/src/parsers/prismaParser.js +7 -7
  31. package/dist/src/parsers/prismaParser.js.map +1 -1
  32. package/dist/src/parsers/types.d.ts +33 -0
  33. package/dist/src/parsers/types.d.ts.map +1 -0
  34. package/dist/src/parsers/types.js +3 -0
  35. package/dist/src/parsers/types.js.map +1 -0
  36. package/package.json +14 -19
  37. package/dist/src/parsers/datasourceParser.d.ts +0 -11
  38. package/dist/src/parsers/datasourceParser.d.ts.map +0 -1
  39. package/dist/src/parsers/datasourceParser.js +0 -131
  40. package/dist/src/parsers/datasourceParser.js.map +0 -1
  41. package/dist/src/parsers/deepSQLAnalyzer.d.ts +0 -85
  42. package/dist/src/parsers/deepSQLAnalyzer.d.ts.map +0 -1
  43. package/dist/src/parsers/deepSQLAnalyzer.js +0 -482
  44. package/dist/src/parsers/deepSQLAnalyzer.js.map +0 -1
  45. package/dist/src/parsers/enhancedRLSConverter.d.ts +0 -14
  46. package/dist/src/parsers/enhancedRLSConverter.d.ts.map +0 -1
  47. package/dist/src/parsers/enhancedRLSConverter.js +0 -168
  48. package/dist/src/parsers/enhancedRLSConverter.js.map +0 -1
  49. package/dist/src/parsers/functionAnalyzer.d.ts +0 -55
  50. package/dist/src/parsers/functionAnalyzer.d.ts.map +0 -1
  51. package/dist/src/parsers/functionAnalyzer.js +0 -274
  52. package/dist/src/parsers/functionAnalyzer.js.map +0 -1
  53. package/dist/src/parsers/prismaFilterBuilder.d.ts +0 -79
  54. package/dist/src/parsers/prismaFilterBuilder.d.ts.map +0 -1
  55. package/dist/src/parsers/prismaFilterBuilder.js +0 -322
  56. package/dist/src/parsers/prismaFilterBuilder.js.map +0 -1
@@ -36,91 +36,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.generateACL = generateACL;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
- const pg_1 = require("pg");
40
- const enhancedRLSConverter_1 = require("../parsers/enhancedRLSConverter");
41
- const functionAnalyzer_1 = require("../parsers/functionAnalyzer");
42
39
  /**
43
- * Auto-detect user table name (case-insensitive search for user/users)
40
+ * Generate permissive ACL entry for a single model
44
41
  */
45
- function detectUserTable(models, userTableOption) {
46
- if (userTableOption) {
47
- return userTableOption;
48
- }
49
- const modelNames = Object.keys(models);
50
- const userTables = modelNames.filter(name => name.toLowerCase() === 'user' || name.toLowerCase() === 'users');
51
- if (userTables.length === 0) {
52
- throw new Error('No user table found (user/users). Please specify --user-table option.');
53
- }
54
- if (userTables.length > 1) {
55
- throw new Error(`Multiple user tables found: ${userTables.join(', ')}. Please specify --user-table option.`);
56
- }
57
- return userTables[0];
58
- }
59
- /**
60
- * Extract ACL policies from PostgreSQL RLS
61
- */
62
- async function extractPostgreSQLPolicies(databaseUrl, models) {
63
- const client = new pg_1.Client({ connectionString: databaseUrl });
64
- try {
65
- await client.connect();
66
- const policies = {};
67
- // Create mapping from database table name to model name
68
- const tableToModelMap = {};
69
- for (const [modelName, modelData] of Object.entries(models)) {
70
- const dbName = modelData.dbName || modelName.toLowerCase();
71
- tableToModelMap[dbName] = modelName;
72
- policies[modelName] = [];
73
- }
74
- // Query all policies from PostgreSQL RLS (pg_policies)
75
- const result = await client.query(`
76
- SELECT
77
- tablename,
78
- policyname,
79
- permissive,
80
- roles,
81
- cmd,
82
- qual,
83
- with_check
84
- FROM pg_policies
85
- WHERE schemaname = 'public'
86
- ORDER BY tablename, policyname
87
- `);
88
- // Group policies by model (using table to model mapping)
89
- for (const row of result.rows) {
90
- const tableName = row.tablename;
91
- const modelName = tableToModelMap[tableName];
92
- if (modelName && policies[modelName] !== undefined) {
93
- policies[modelName].push({
94
- name: row.policyname,
95
- permissive: row.permissive === 'PERMISSIVE',
96
- roles: row.roles,
97
- command: row.cmd,
98
- using: row.qual,
99
- withCheck: row.with_check
100
- });
101
- }
102
- }
103
- await client.end();
104
- return policies;
105
- }
106
- catch (error) {
107
- try {
108
- await client.end();
109
- }
110
- catch (_e) {
111
- // ignore
112
- }
113
- throw error;
114
- }
115
- }
116
- /**
117
- * Generate ACL functions for a single model from PostgreSQL policies
118
- */
119
- function generateModelACL(modelName, policies, converter) {
120
- const hasPolicies = policies && policies.length > 0;
121
- if (!hasPolicies) {
122
- // No policies - generate permissive access
123
- return ` ${modelName}: {
42
+ function generateModelACL(modelName) {
43
+ return ` ${modelName}: {
124
44
  canCreate(_user: RapiddUser): boolean {
125
45
  return true;
126
46
  },
@@ -137,248 +57,35 @@ function generateModelACL(modelName, policies, converter) {
137
57
  return [];
138
58
  },
139
59
  }`;
140
- }
141
- // Find policies by command type
142
- const selectPolicies = policies.filter(p => p.command === 'SELECT' || p.command === 'ALL');
143
- const insertPolicies = policies.filter(p => p.command === 'INSERT' || p.command === 'ALL');
144
- const updatePolicies = policies.filter(p => p.command === 'UPDATE' || p.command === 'ALL');
145
- const deletePolicies = policies.filter(p => p.command === 'DELETE' || p.command === 'ALL');
146
- // Generate each function
147
- const canCreateCode = generateFunction(insertPolicies, 'withCheck', converter, modelName);
148
- const accessFilterCode = generateFilter(selectPolicies, 'using', converter, modelName);
149
- let updateFilterCode = generateFilter(updatePolicies, 'using', converter, modelName);
150
- let deleteFilterCode = generateFilter(deletePolicies, 'using', converter, modelName);
151
- // If update/delete filters are empty/false but access filter is not, copy access filter
152
- if ((updateFilterCode === 'return false;' || updateFilterCode === 'return {};') &&
153
- accessFilterCode !== 'return false;' && accessFilterCode !== 'return {};') {
154
- updateFilterCode = accessFilterCode;
155
- }
156
- if ((deleteFilterCode === 'return false;' || deleteFilterCode === 'return {};') &&
157
- accessFilterCode !== 'return false;' && accessFilterCode !== 'return {};') {
158
- deleteFilterCode = accessFilterCode;
159
- }
160
- return ` ${modelName}: {
161
- canCreate(user: RapiddUser): boolean {
162
- ${canCreateCode}
163
- },
164
- getAccessFilter(user: RapiddUser): Record<string, unknown> | boolean {
165
- ${accessFilterCode}
166
- },
167
- getUpdateFilter(user: RapiddUser): Record<string, unknown> | boolean | false {
168
- ${updateFilterCode}
169
- },
170
- getDeleteFilter(user: RapiddUser): Record<string, unknown> | boolean | false {
171
- ${deleteFilterCode}
172
- },
173
- getOmitFields(_user: RapiddUser): string[] {
174
- return [];
175
- },
176
- }`;
177
- }
178
- /**
179
- * Generate JavaScript function from policies
180
- */
181
- function generateFunction(policies, expressionField, converter, modelName) {
182
- if (policies.length === 0) {
183
- return 'return true;';
184
- }
185
- const conditions = [];
186
- for (const policy of policies) {
187
- const expr = expressionField === 'withCheck'
188
- ? (policy.withCheck || policy.using)
189
- : policy[expressionField];
190
- if (expr) {
191
- try {
192
- const jsExpr = converter.convertToJavaScript(expr, 'data', 'user', modelName);
193
- console.log(` Policy '${policy.name}': ${expr.substring(0, 50)}... -> ${jsExpr.substring(0, 80)}`);
194
- conditions.push(jsExpr);
195
- }
196
- catch (e) {
197
- console.warn(` Failed to convert policy '${policy.name}' for ${modelName}: ${e.message}`);
198
- console.warn(` SQL: ${expr}`);
199
- conditions.push(`true /* TODO: Manual conversion needed for policy '${policy.name}' */`);
200
- }
201
- }
202
- }
203
- if (conditions.length === 0) {
204
- return 'return true;';
205
- }
206
- // If any condition is 'true', the entire expression is true
207
- if (conditions.some(c => c === 'true' || c.startsWith('true /*'))) {
208
- return 'return true;';
209
- }
210
- // Policies are OR'd together (any policy allows)
211
- return `return ${conditions.join(' || ')};`;
212
- }
213
- /**
214
- * Generate Prisma filter function
215
- */
216
- function generateFilter(policies, expressionField, converter, modelName) {
217
- if (policies.length === 0) {
218
- return 'return false;';
219
- }
220
- const filtersWithRoles = [];
221
- for (const policy of policies) {
222
- const expr = policy[expressionField];
223
- if (expr) {
224
- try {
225
- const prismaFilter = converter.convertToPrismaFilter(expr, 'user', modelName);
226
- const analysis = converter.analyzer ? converter.analyzer.analyzeSQLForFilters(expr) : null;
227
- // Track role conditions and data filters separately
228
- const roleConditions = analysis?.conditions?.filter(c => c.type === 'role_any' || c.type === 'role_equal') || [];
229
- filtersWithRoles.push({
230
- filter: prismaFilter,
231
- roleConditions,
232
- hasDataFilter: prismaFilter !== '{}'
233
- });
234
- }
235
- catch (e) {
236
- console.warn(` Failed to convert filter policy '${policy.name}' for ${modelName}: ${e.message}`);
237
- console.warn(` SQL: ${expr}`);
238
- // On error, skip filter (fail-safe - no access)
239
- }
240
- }
241
- }
242
- if (filtersWithRoles.length === 0) {
243
- return 'return false;';
244
- }
245
- // Build conditional filter logic
246
- return buildConditionalFilter(filtersWithRoles);
247
- }
248
- /**
249
- * Build conditional filter with role checks
250
- */
251
- function buildConditionalFilter(filtersWithRoles) {
252
- const roleOnlyFilters = [];
253
- const dataFilters = [];
254
- for (const item of filtersWithRoles) {
255
- if (item.roleConditions.length > 0 && !item.hasDataFilter) {
256
- // Pure role check - return {} if role matches
257
- roleOnlyFilters.push(...item.roleConditions);
258
- }
259
- else if (item.roleConditions.length > 0 && item.hasDataFilter) {
260
- // Has both role and data filter - already handled with if statement
261
- if (item.filter.includes('if (')) {
262
- return item.filter;
263
- }
264
- dataFilters.push(item.filter);
265
- }
266
- else if (item.hasDataFilter) {
267
- // Data filter only
268
- dataFilters.push(item.filter);
269
- }
270
- }
271
- // Generate conditional code
272
- const conditions = [];
273
- // Collect all roles that grant full access
274
- const rolesWithFullAccess = new Set();
275
- for (const roleCond of roleOnlyFilters) {
276
- if (roleCond.type === 'role_any' && roleCond.roles) {
277
- roleCond.roles.forEach(r => rolesWithFullAccess.add(r));
278
- }
279
- else if (roleCond.type === 'role_equal' && roleCond.role) {
280
- rolesWithFullAccess.add(roleCond.role);
281
- }
282
- }
283
- // Add single consolidated role check if needed
284
- if (rolesWithFullAccess.size > 0) {
285
- const roleArray = Array.from(rolesWithFullAccess);
286
- if (roleArray.length === 1) {
287
- conditions.push(`if (user?.role === '${roleArray[0]}') return {};`);
288
- }
289
- else {
290
- conditions.push(`if ([${roleArray.map(r => `'${r}'`).join(', ')}].includes(user?.role)) return {};`);
291
- }
292
- }
293
- // Deduplicate data filters
294
- const uniqueDataFilters = [...new Set(dataFilters)];
295
- // Add final return with data filters
296
- if (uniqueDataFilters.length === 0) {
297
- conditions.push('return false;');
298
- }
299
- else if (uniqueDataFilters.length === 1) {
300
- conditions.push(`return ${uniqueDataFilters[0]};`);
301
- }
302
- else {
303
- conditions.push(`return { OR: [${uniqueDataFilters.join(', ')}] };`);
304
- }
305
- return conditions.join(' ');
306
60
  }
307
61
  /**
308
62
  * Generate complete acl.ts file (TypeScript)
309
63
  */
310
- async function generateACL(models, outputPath, databaseUrl, isPostgreSQL, userTableOption, relationships = {}, debug = false, allModels) {
311
- // Use allModels for user table detection if provided (when filtering by model)
312
- const modelsForUserDetection = allModels || models;
313
- const _userTable = detectUserTable(modelsForUserDetection, userTableOption);
64
+ function generateACL(models, outputPath) {
314
65
  const modelNames = Object.keys(models);
315
- let policies = {};
316
- // Create enhanced converter with analyzed functions, models, and relationships
317
- let converter = (0, enhancedRLSConverter_1.createEnhancedConverter)({}, {}, models, relationships);
318
- if (isPostgreSQL && databaseUrl) {
319
- console.log('PostgreSQL detected - analyzing database...');
320
- // Step 1: Analyze functions
321
- try {
322
- const functionAnalysis = await (0, functionAnalyzer_1.analyzeFunctions)(databaseUrl);
323
- console.log(`Analyzed ${Object.keys(functionAnalysis.functionMappings).length} PostgreSQL functions`);
324
- // Create enhanced converter with analyzed mappings, models, and relationships
325
- converter = (0, enhancedRLSConverter_1.createEnhancedConverter)(functionAnalysis.functionMappings, functionAnalysis.sessionVariables, models, relationships);
326
- // Save function analysis for debugging (only if --debug flag is set)
327
- if (debug) {
328
- const configPath = path.join(path.dirname(outputPath), 'acl-mappings.json');
329
- const mappingConfig = (0, functionAnalyzer_1.generateMappingConfig)(functionAnalysis);
330
- fs.writeFileSync(configPath, JSON.stringify(mappingConfig, null, 2));
331
- console.log(`Function mappings saved to ${configPath}`);
332
- }
333
- }
334
- catch (error) {
335
- console.warn(`Could not analyze functions: ${error.message}`);
336
- }
337
- // Step 2: Extract policies
338
- try {
339
- policies = await extractPostgreSQLPolicies(databaseUrl, models);
340
- const totalPolicies = Object.values(policies).reduce((sum, p) => sum + p.length, 0);
341
- console.log(`Extracted ${totalPolicies} policies from PostgreSQL RLS`);
342
- }
343
- catch (error) {
344
- console.warn(`Failed to extract PostgreSQL policies: ${error.message}`);
345
- console.log('Generating permissive ACL for all models...');
346
- for (const modelName of modelNames) {
347
- policies[modelName] = [];
348
- }
349
- }
350
- }
351
- else {
352
- if (!isPostgreSQL) {
353
- console.log('Non-PostgreSQL database detected - generating permissive ACL');
354
- }
355
- console.log('Generating permissive ACL for all models...');
356
- for (const modelName of modelNames) {
357
- policies[modelName] = [];
358
- }
359
- }
360
- // Generate ACL TypeScript code
361
66
  let aclCode = `import type { AclConfig, RapiddUser } from '../types';
362
67
 
363
68
  const acl: AclConfig = {
364
69
  model: {
365
70
  `;
366
- const modelACLCode = modelNames.map(modelName => {
367
- return generateModelACL(modelName, policies[modelName], converter);
368
- });
369
- aclCode += modelACLCode.join(',\n');
71
+ aclCode += modelNames.map(modelName => generateModelACL(modelName)).join(',\n');
370
72
  aclCode += `
371
73
  },
372
74
  };
373
75
 
374
76
  export default acl;
375
77
  `;
78
+ // Skip if file already exists
79
+ if (fs.existsSync(outputPath)) {
80
+ console.log('Skipped acl.ts (exists)');
81
+ return;
82
+ }
376
83
  // Ensure output directory exists
377
84
  const outputDir = path.dirname(outputPath);
378
85
  if (!fs.existsSync(outputDir)) {
379
86
  fs.mkdirSync(outputDir, { recursive: true });
380
87
  }
381
88
  fs.writeFileSync(outputPath, aclCode);
382
- console.log('Generated acl.ts with dynamic function mappings');
89
+ console.log('Generated acl.ts');
383
90
  }
384
91
  //# sourceMappingURL=aclGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"aclGenerator.js","sourceRoot":"","sources":["../../../src/generators/aclGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aclGenerator.js","sourceRoot":"","sources":["../../../src/generators/aclGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,kCAmCC;AAjED,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,gBAAgB,CAAC,SAAiB;IACzC,OAAO,WAAW,SAAS;;;;;;;;;;;;;;;;UAgBnB,CAAC;AACX,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CACzB,MAAiC,EACjC,UAAkB;IAElB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,OAAO,GAAG;;;;CAIf,CAAC;IAEA,OAAO,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhF,OAAO,IAAI;;;;;CAKZ,CAAC;IAEA,8BAA8B;IAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,iCAAiC;IACjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAClC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ModelInfo } from '../parsers/prismaFilterBuilder';
1
+ import type { ModelInfo } from '../parsers/types';
2
2
  /**
3
3
  * Generate a single model file (TypeScript)
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"modelGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/modelGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAahE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,MAAM,CAwDlF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAmB3F"}
1
+ {"version":3,"file":"modelGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/modelGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAalD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,MAAM,CAkFlF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAkB3F"}
@@ -54,7 +54,7 @@ function generateModelFile(modelName, _modelInfo) {
54
54
  const className = toClassName(modelName);
55
55
  return `import { Model } from '../orm/Model';
56
56
  import { QueryBuilder, prisma } from '../orm/QueryBuilder';
57
- import type { ModelOptions, GetManyResult } from '../types';
57
+ import type { ModelOptions, GetManyResult, UpsertManyOptions, UpsertManyResult } from '../types';
58
58
 
59
59
  export class ${className} extends Model {
60
60
  constructor(options?: ModelOptions) {
@@ -62,30 +62,56 @@ export class ${className} extends Model {
62
62
  }
63
63
 
64
64
  async getMany(
65
- q: Record<string, unknown> = {},
66
- include: string | Record<string, unknown> = '',
65
+ q: Record<string, any> = {},
66
+ include: string | Record<string, any> = "",
67
67
  limit: number = 25,
68
68
  offset: number = 0,
69
- sortBy: string = 'id',
70
- sortOrder: 'asc' | 'desc' = 'asc'
69
+ sortBy: string = this.defaultSortField,
70
+ sortOrder: string = "asc",
71
+ fields: string | null = null
71
72
  ): Promise<GetManyResult> {
72
- return await this._getMany(q, include, Number(limit), Number(offset), sortBy, sortOrder);
73
+ return await this._getMany(q, include, Number(limit), Number(offset), sortBy, sortOrder, {}, fields);
73
74
  }
74
75
 
75
- async get(id: string | number, include?: string | Record<string, unknown>): Promise<Record<string, unknown>> {
76
- return await this._get(id, include);
76
+ /**
77
+ * Fetch a single record by primary key
78
+ */
79
+ async get(id: string | number | Record<string, any>, include?: string | Record<string, any>, options: Record<string, any> = {}, fields: string | null = null): Promise<any> {
80
+ return await this._get(id, include, options, fields);
77
81
  }
78
82
 
79
- async create(data: Record<string, unknown>): Promise<Record<string, unknown>> {
80
- return await this._create(data);
83
+ /**
84
+ * Create a new record
85
+ */
86
+ async create(data: Record<string, any>, options: Record<string, any> = {}): Promise<any> {
87
+ return await this._create(data, options);
81
88
  }
82
89
 
83
- async update(id: string | number, data: Record<string, unknown>): Promise<Record<string, unknown>> {
84
- return await this._update(id, data);
90
+ /**
91
+ * Update an existing record by primary key
92
+ */
93
+ async update(id: string | number | Record<string, any>, data: Record<string, any>, options: Record<string, any> = {}): Promise<any> {
94
+ return await this._update(id, data, options);
85
95
  }
86
96
 
87
- async upsert(data: Record<string, unknown>, unique_key: string = this.primaryKey): Promise<Record<string, unknown>> {
88
- return await this._upsert(data, unique_key);
97
+ /**
98
+ * Create or update a record based on unique key
99
+ */
100
+ async upsert(data: Record<string, any>, unique_key: string | string[] = this.primaryKey, options: Record<string, any> = {}): Promise<any> {
101
+ return await this._upsert(data, unique_key, options);
102
+ }
103
+
104
+ /**
105
+ * Create or update multiple records based on unique key
106
+ * Performs atomic batch operations with optional transaction support
107
+ */
108
+ async upsertMany(
109
+ data: Record<string, any>[],
110
+ unique_key: string | string[] = this.primaryKey,
111
+ prismaOptions: Record<string, any> = {},
112
+ options: UpsertManyOptions = {}
113
+ ): Promise<UpsertManyResult> {
114
+ return await this._upsertMany(data, unique_key, prismaOptions, options);
89
115
  }
90
116
 
91
117
  async delete(id: string | number): Promise<Record<string, unknown>> {
@@ -114,30 +140,17 @@ function generateAllModels(models, modelDir) {
114
140
  if (!fs.existsSync(modelDir)) {
115
141
  fs.mkdirSync(modelDir, { recursive: true });
116
142
  }
117
- // Generate individual model files
143
+ // Generate individual model files (skip existing)
118
144
  for (const [modelName, modelInfo] of Object.entries(models)) {
119
- const modelCode = generateModelFile(modelName, modelInfo);
120
145
  const className = toClassName(modelName);
121
146
  const modelPath = path.join(modelDir, `${className}.ts`);
147
+ if (fs.existsSync(modelPath)) {
148
+ console.log(`Skipped model (exists): ${className}.ts`);
149
+ continue;
150
+ }
151
+ const modelCode = generateModelFile(modelName, modelInfo);
122
152
  fs.writeFileSync(modelPath, modelCode);
123
153
  console.log(`Generated model: ${className}.ts`);
124
154
  }
125
- // Generate index.ts for models
126
- const indexContent = generateModelsIndex(models);
127
- fs.writeFileSync(path.join(modelDir, 'index.ts'), indexContent);
128
- console.log('Generated models/index.ts');
129
- }
130
- /**
131
- * Generate index.ts that exports all models
132
- */
133
- function generateModelsIndex(models) {
134
- const exports = [];
135
- for (const modelName of Object.keys(models)) {
136
- const className = toClassName(modelName);
137
- exports.push(`export { ${className} } from './${className}';`);
138
- }
139
- exports.push('');
140
- exports.push("export { QueryBuilder, prisma } from '../orm/QueryBuilder';");
141
- return exports.join('\n');
142
155
  }
143
156
  //# sourceMappingURL=modelGenerator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"modelGenerator.js","sourceRoot":"","sources":["../../../src/generators/modelGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8CAwDC;AAKD,8CAmBC;AAlGD,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,SAAS;SACb,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,UAAqB;IACxE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;;;;eAIM,SAAS;;iBAEP,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDA0C6B,SAAS;;;;CAI/D,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,QAAgB;IACnF,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,kCAAkC;IAClC,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QACzD,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,+BAA+B;IAC/B,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACjD,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,MAAiC;IAC5D,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,YAAY,SAAS,cAAc,SAAS,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAE5E,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"modelGenerator.js","sourceRoot":"","sources":["../../../src/generators/modelGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8CAkFC;AAKD,8CAkBC;AA3HD,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,SAAS;SACb,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,UAAqB;IACxE,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;;;;eAIM,SAAS;;iBAEP,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAoE6B,SAAS;;;;CAI/D,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,QAAgB;IACnF,6CAA6C;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QACzD,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,KAAK,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ModelInfo } from '../parsers/prismaFilterBuilder';
1
+ import type { ModelInfo } from '../parsers/types';
2
2
  /**
3
3
  * Generate Fastify route for a single model (TypeScript)
4
4
  */
@@ -1 +1 @@
1
- {"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAahE;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA+E3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAa5F"}
1
+ {"version":3,"file":"routeGenerator.d.ts","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAalD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA+E3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAiB5F"}
@@ -137,10 +137,14 @@ function generateAllRoutes(models, routesDir) {
137
137
  if (!fs.existsSync(routesDir)) {
138
138
  fs.mkdirSync(routesDir, { recursive: true });
139
139
  }
140
- // Generate individual route files
140
+ // Generate individual route files (skip existing)
141
141
  for (const modelName of Object.keys(models)) {
142
- const routeCode = generateRouteFile(modelName);
143
142
  const routePath = path.join(routesDir, `${modelName}.ts`);
143
+ if (fs.existsSync(routePath)) {
144
+ console.log(`Skipped route (exists): ${modelName}.ts`);
145
+ continue;
146
+ }
147
+ const routeCode = generateRouteFile(modelName);
144
148
  fs.writeFileSync(routePath, routeCode);
145
149
  console.log(`Generated route: ${modelName}.ts`);
146
150
  }
@@ -1 +1 @@
1
- {"version":3,"file":"routeGenerator.js","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8CA+EC;AAKD,8CAaC;AAnHD,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,SAAS;SACb,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;WACE,SAAS,8CAA8C,SAAS;;QAEnE,SAAS;;;;;2BAKU,SAAS,UAAU,SAAS;;;;;;6CAMV,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;0FAEoB,SAAS;;;;;;;;iBAQlF,SAAS;CACzB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,SAAiB;IACpF,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kCAAkC;IAClC,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC1D,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"routeGenerator.js","sourceRoot":"","sources":["../../../src/generators/routeGenerator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,8CA+EC;AAKD,8CAiBC;AAvHD,uCAAyB;AACzB,2CAA6B;AAG7B;;GAEG;AACH,SAAS,WAAW,CAAC,SAAiB;IACpC,OAAO,SAAS;SACb,KAAK,CAAC,eAAe,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAEzC,OAAO;WACE,SAAS,8CAA8C,SAAS;;QAEnE,SAAS;;;;;2BAKU,SAAS,UAAU,SAAS;;;;;;6CAMV,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;;;;;;;;;;;;6CAazB,SAAS,OAAO,SAAS;;;;;;;;;;;;6CAYzB,SAAS,OAAO,SAAS;;0FAEoB,SAAS;;;;;;;;iBAQlF,SAAS;CACzB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,MAAiC,EAAE,SAAiB;IACpF,8CAA8C;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC;QAC1D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,2BAA2B,SAAS,KAAK,CAAC,CAAC;YACvD,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,oBAAoB,SAAS,KAAK,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
@@ -1,13 +1,4 @@
1
1
  export { parsePrismaSchema, parsePrismaDMMF } from './prismaParser';
2
2
  export type { ParsedSchema } from './prismaParser';
3
- export { parseDatasource } from './datasourceParser';
4
- export type { DatasourceConfig } from './datasourceParser';
5
- export { DeepSQLAnalyzer } from './deepSQLAnalyzer';
6
- export type { SQLFilter, SQLCondition, SQLAnalysis } from './deepSQLAnalyzer';
7
- export { PrismaFilterBuilder } from './prismaFilterBuilder';
8
- export type { ModelField, ModelRelation, ModelInfo, RelationshipInfo } from './prismaFilterBuilder';
9
- export { createEnhancedConverter } from './enhancedRLSConverter';
10
- export type { EnhancedConverter } from './enhancedRLSConverter';
11
- export { analyzeFunctions, analyzeFunctionBody, generateMappingConfig } from './functionAnalyzer';
12
- export type { FunctionMapping, FunctionAnalysisResult, MappingConfig } from './functionAnalyzer';
3
+ export type { ModelField, ModelRelation, ModelInfo } from './types';
13
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parsers/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClG,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/parsers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACpE,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC"}
@@ -1,20 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateMappingConfig = exports.analyzeFunctionBody = exports.analyzeFunctions = exports.createEnhancedConverter = exports.PrismaFilterBuilder = exports.DeepSQLAnalyzer = exports.parseDatasource = exports.parsePrismaDMMF = exports.parsePrismaSchema = void 0;
4
- // Re-export all parsers
3
+ exports.parsePrismaDMMF = exports.parsePrismaSchema = void 0;
5
4
  var prismaParser_1 = require("./prismaParser");
6
5
  Object.defineProperty(exports, "parsePrismaSchema", { enumerable: true, get: function () { return prismaParser_1.parsePrismaSchema; } });
7
6
  Object.defineProperty(exports, "parsePrismaDMMF", { enumerable: true, get: function () { return prismaParser_1.parsePrismaDMMF; } });
8
- var datasourceParser_1 = require("./datasourceParser");
9
- Object.defineProperty(exports, "parseDatasource", { enumerable: true, get: function () { return datasourceParser_1.parseDatasource; } });
10
- var deepSQLAnalyzer_1 = require("./deepSQLAnalyzer");
11
- Object.defineProperty(exports, "DeepSQLAnalyzer", { enumerable: true, get: function () { return deepSQLAnalyzer_1.DeepSQLAnalyzer; } });
12
- var prismaFilterBuilder_1 = require("./prismaFilterBuilder");
13
- Object.defineProperty(exports, "PrismaFilterBuilder", { enumerable: true, get: function () { return prismaFilterBuilder_1.PrismaFilterBuilder; } });
14
- var enhancedRLSConverter_1 = require("./enhancedRLSConverter");
15
- Object.defineProperty(exports, "createEnhancedConverter", { enumerable: true, get: function () { return enhancedRLSConverter_1.createEnhancedConverter; } });
16
- var functionAnalyzer_1 = require("./functionAnalyzer");
17
- Object.defineProperty(exports, "analyzeFunctions", { enumerable: true, get: function () { return functionAnalyzer_1.analyzeFunctions; } });
18
- Object.defineProperty(exports, "analyzeFunctionBody", { enumerable: true, get: function () { return functionAnalyzer_1.analyzeFunctionBody; } });
19
- Object.defineProperty(exports, "generateMappingConfig", { enumerable: true, get: function () { return functionAnalyzer_1.generateMappingConfig; } });
20
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/index.ts"],"names":[],"mappings":";;;AAAA,wBAAwB;AACxB,+CAAoE;AAA3D,iHAAA,iBAAiB,OAAA;AAAE,+GAAA,eAAe,OAAA;AAG3C,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAGxB,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AAGxB,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAG5B,+DAAiE;AAAxD,+HAAA,uBAAuB,OAAA;AAGhC,uDAAkG;AAAzF,oHAAA,gBAAgB,OAAA;AAAE,uHAAA,mBAAmB,OAAA;AAAE,yHAAA,qBAAqB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/parsers/index.ts"],"names":[],"mappings":";;;AAAA,+CAAoE;AAA3D,iHAAA,iBAAiB,OAAA;AAAE,+GAAA,eAAe,OAAA"}
@@ -1,4 +1,4 @@
1
- import type { ModelInfo } from './prismaFilterBuilder';
1
+ import type { ModelInfo } from './types';
2
2
  export interface ParsedSchema {
3
3
  models: Record<string, ModelInfo>;
4
4
  enums: Record<string, string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"prismaParser.d.ts","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA6B,MAAM,uBAAuB,CAAC;AAElF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqClE;AAuHD;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqEtF"}
1
+ {"version":3,"file":"prismaParser.d.ts","sourceRoot":"","sources":["../../../src/parsers/prismaParser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAA6B,MAAM,SAAS,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACjC;AA8BD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqClE;AAuHD;;GAEG;AACH,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAqEtF"}