@bairock/lenz 0.0.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 (55) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +224 -0
  3. package/dist/cli/commands/generate.d.ts +3 -0
  4. package/dist/cli/commands/generate.d.ts.map +1 -0
  5. package/dist/cli/commands/generate.js +110 -0
  6. package/dist/cli/commands/generate.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +3 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +145 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/studio.d.ts +3 -0
  12. package/dist/cli/commands/studio.d.ts.map +1 -0
  13. package/dist/cli/commands/studio.js +32 -0
  14. package/dist/cli/commands/studio.js.map +1 -0
  15. package/dist/cli/index.d.ts +3 -0
  16. package/dist/cli/index.d.ts.map +1 -0
  17. package/dist/cli/index.js +32 -0
  18. package/dist/cli/index.js.map +1 -0
  19. package/dist/config/index.d.ts +47 -0
  20. package/dist/config/index.d.ts.map +1 -0
  21. package/dist/config/index.js +42 -0
  22. package/dist/config/index.js.map +1 -0
  23. package/dist/engine/CodeGenerator.d.ts +37 -0
  24. package/dist/engine/CodeGenerator.d.ts.map +1 -0
  25. package/dist/engine/CodeGenerator.js +1604 -0
  26. package/dist/engine/CodeGenerator.js.map +1 -0
  27. package/dist/engine/GraphQLParser.d.ts +74 -0
  28. package/dist/engine/GraphQLParser.d.ts.map +1 -0
  29. package/dist/engine/GraphQLParser.js +269 -0
  30. package/dist/engine/GraphQLParser.js.map +1 -0
  31. package/dist/engine/LenzEngine.d.ts +23 -0
  32. package/dist/engine/LenzEngine.d.ts.map +1 -0
  33. package/dist/engine/LenzEngine.js +112 -0
  34. package/dist/engine/LenzEngine.js.map +1 -0
  35. package/dist/engine/SchemaValidator.d.ts +63 -0
  36. package/dist/engine/SchemaValidator.d.ts.map +1 -0
  37. package/dist/engine/SchemaValidator.js +268 -0
  38. package/dist/engine/SchemaValidator.js.map +1 -0
  39. package/dist/engine/directives.d.ts +15 -0
  40. package/dist/engine/directives.d.ts.map +1 -0
  41. package/dist/engine/directives.js +91 -0
  42. package/dist/engine/directives.js.map +1 -0
  43. package/dist/engine/index.d.ts +4 -0
  44. package/dist/engine/index.d.ts.map +1 -0
  45. package/dist/engine/index.js +10 -0
  46. package/dist/engine/index.js.map +1 -0
  47. package/dist/errors/index.d.ts +46 -0
  48. package/dist/errors/index.d.ts.map +1 -0
  49. package/dist/errors/index.js +133 -0
  50. package/dist/errors/index.js.map +1 -0
  51. package/dist/index.d.ts +12 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +36 -0
  54. package/dist/index.js.map +1 -0
  55. package/package.json +70 -0
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SchemaValidator = void 0;
4
+ const errors_1 = require("../errors");
5
+ const directives_1 = require("./directives");
6
+ class SchemaValidator {
7
+ constructor(models, enums, relations) {
8
+ this.supportedScalarTypes = new Set([
9
+ 'String', 'Int', 'Float', 'Boolean', 'ID',
10
+ 'DateTime', 'Date', 'Json', 'ObjectId'
11
+ ]);
12
+ this.models = models;
13
+ this.enums = enums;
14
+ this.relations = relations;
15
+ }
16
+ /**
17
+ * Validate the entire schema
18
+ */
19
+ validate(options = {}) {
20
+ const { checkCircularDependencies = true, validateFieldTypes = true, validateRelations = true, validateDirectives = true } = options;
21
+ // Basic validation
22
+ this.validateModelNames();
23
+ this.validateFieldNames();
24
+ if (validateDirectives) {
25
+ this.validateDirectives();
26
+ }
27
+ if (validateFieldTypes) {
28
+ this.validateFieldTypes();
29
+ }
30
+ if (validateRelations) {
31
+ this.validateRelations();
32
+ }
33
+ if (checkCircularDependencies) {
34
+ this.checkCircularDependencies();
35
+ }
36
+ // Additional validations
37
+ this.validateRequiredFields();
38
+ this.validateEnumValues();
39
+ }
40
+ /**
41
+ * Check for duplicate model names
42
+ */
43
+ validateModelNames() {
44
+ const seen = new Set();
45
+ for (const model of this.models) {
46
+ if (seen.has(model.name)) {
47
+ throw new errors_1.DuplicateModelError(model.name);
48
+ }
49
+ seen.add(model.name);
50
+ }
51
+ }
52
+ /**
53
+ * Check for duplicate field names within each model
54
+ */
55
+ validateFieldNames() {
56
+ for (const model of this.models) {
57
+ const seen = new Set();
58
+ for (const field of model.fields) {
59
+ if (seen.has(field.name)) {
60
+ throw new errors_1.DuplicateFieldError(model.name, field.name);
61
+ }
62
+ seen.add(field.name);
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Validate field types
68
+ */
69
+ validateFieldTypes() {
70
+ const validTypes = new Set([
71
+ ...this.supportedScalarTypes,
72
+ ...this.models.map(m => m.name),
73
+ ...this.enums.map(e => e.name)
74
+ ]);
75
+ for (const model of this.models) {
76
+ for (const field of model.fields) {
77
+ // Check if type exists (scalar, model, or enum)
78
+ if (!validTypes.has(field.type)) {
79
+ throw new errors_1.InvalidFieldTypeError(model.name, field.name, field.type, { validTypes: Array.from(validTypes) });
80
+ }
81
+ // Additional type-specific validations
82
+ if (field.type === 'ID' && !field.isId) {
83
+ // ID fields should typically have @id directive
84
+ // This is a warning, not an error
85
+ console.warn(`⚠️ Field '${field.name}' in model '${model.name}' has type ID but no @id directive`);
86
+ }
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Validate directives
92
+ */
93
+ validateDirectives() {
94
+ for (const model of this.models) {
95
+ // Check model-level directives
96
+ for (const directive of model.fields.flatMap(f => f.directives)) {
97
+ const directiveName = directive.replace(/^@/, '');
98
+ if ((0, directives_1.isLenzDirective)(directiveName)) {
99
+ // Директива Lenz - проверяем соответствие ожидаемым местам применения
100
+ const directiveDef = (0, directives_1.getDirectiveDefinition)(directiveName);
101
+ if (directiveDef) {
102
+ // TODO: В будущем можно добавить проверку мест применения (DirectiveLocation)
103
+ // Например, проверить что @model применяется только на уровне OBJECT
104
+ // а @id только на FIELD_DEFINITION
105
+ }
106
+ }
107
+ else {
108
+ // Пользовательская директива - выводим предупреждение
109
+ console.warn(`⚠️ Custom directive '@${directiveName}' detected in model '${model.name}'. ` +
110
+ 'Lenz does not validate custom directives.');
111
+ }
112
+ }
113
+ // Field-level directive validation
114
+ for (const field of model.fields) {
115
+ this.validateFieldDirectives(model.name, field);
116
+ }
117
+ }
118
+ }
119
+ /**
120
+ * Validate directives on a specific field
121
+ */
122
+ validateFieldDirectives(modelName, field) {
123
+ const directives = field.directives;
124
+ // Check for conflicting directives
125
+ if (directives.includes('id') && directives.includes('unique')) {
126
+ throw new errors_1.InvalidDirectiveError('unique', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot have both @id and @unique directives on the same field' });
127
+ }
128
+ // Validate @hide directive
129
+ if (directives.includes('hide')) {
130
+ if (directives.includes('id')) {
131
+ throw new errors_1.InvalidDirectiveError('hide', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot use @hide directive on @id field' });
132
+ }
133
+ if (field.isRelation) {
134
+ throw new errors_1.InvalidDirectiveError('hide', `field '${field.name}' in model '${modelName}'`, { reason: 'Cannot use @hide directive on relation fields' });
135
+ }
136
+ }
137
+ // Note: @relation directive validation is skipped because relation detection
138
+ // depends on model parsing order. Relations are validated separately.
139
+ // Note: @default directive arguments are now preserved and parsed via AST
140
+ // in GraphQLParser.getDefaultValue() method.
141
+ }
142
+ /**
143
+ * Validate relations between models
144
+ */
145
+ validateRelations() {
146
+ for (const relation of this.relations) {
147
+ const sourceModel = this.models.find(m => m.name === relation.field);
148
+ const targetModel = this.models.find(m => m.name === relation.target);
149
+ if (!sourceModel) {
150
+ throw new errors_1.RelationValidationError(`Source model '${relation.field}' not found for relation`, { relation });
151
+ }
152
+ if (!targetModel) {
153
+ throw new errors_1.RelationValidationError(`Target model '${relation.target}' not found for relation`, { relation });
154
+ }
155
+ // Check if foreign key field exists for certain relation types
156
+ if (relation.foreignKey) {
157
+ const hasForeignKey = targetModel.fields.some(f => f.name === relation.foreignKey || f.name === `${relation.foreignKey}Id`);
158
+ if (!hasForeignKey) {
159
+ throw new errors_1.RelationValidationError(`Foreign key field '${relation.foreignKey}' not found in target model '${relation.target}'`, { relation });
160
+ }
161
+ }
162
+ }
163
+ }
164
+ /**
165
+ * Check for circular dependencies between models
166
+ */
167
+ checkCircularDependencies() {
168
+ const graph = new Map();
169
+ // Build dependency graph
170
+ for (const model of this.models) {
171
+ const dependencies = model.fields
172
+ .filter(field => field.isRelation)
173
+ .map(field => field.type);
174
+ graph.set(model.name, dependencies);
175
+ }
176
+ // Detect cycles using DFS
177
+ const visited = new Set();
178
+ const recursionStack = new Set();
179
+ const cycles = [];
180
+ const dfs = (node, path) => {
181
+ visited.add(node);
182
+ recursionStack.add(node);
183
+ path.push(node);
184
+ const neighbors = graph.get(node) || [];
185
+ for (const neighbor of neighbors) {
186
+ if (!visited.has(neighbor)) {
187
+ dfs(neighbor, [...path]);
188
+ }
189
+ else if (recursionStack.has(neighbor)) {
190
+ // Found a cycle
191
+ const cycleStart = path.indexOf(neighbor);
192
+ const cycle = path.slice(cycleStart);
193
+ cycles.push(cycle);
194
+ }
195
+ }
196
+ recursionStack.delete(node);
197
+ };
198
+ for (const node of graph.keys()) {
199
+ if (!visited.has(node)) {
200
+ dfs(node, []);
201
+ }
202
+ }
203
+ // Report cycles
204
+ if (cycles.length > 0) {
205
+ // Deduplicate cycles (same cycle may be found multiple times)
206
+ const uniqueCycles = cycles.map(cycle => cycle.join(' -> '))
207
+ .filter((value, index, self) => self.indexOf(value) === index);
208
+ for (const cycle of uniqueCycles) {
209
+ throw new errors_1.CircularDependencyError(cycle.split(' -> '), { cycle });
210
+ }
211
+ }
212
+ }
213
+ /**
214
+ * Validate that required fields have values
215
+ */
216
+ validateRequiredFields() {
217
+ for (const model of this.models) {
218
+ for (const field of model.fields) {
219
+ if (field.isRequired && !field.isId && !field.defaultValue) {
220
+ // Check if it's a relation field (relations can be required but handled differently)
221
+ if (!field.isRelation) {
222
+ console.warn(`⚠️ Required field '${field.name}' in model '${model.name}' has no default value`);
223
+ }
224
+ }
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Validate enum values
230
+ */
231
+ validateEnumValues() {
232
+ for (const enumDef of this.enums) {
233
+ if (enumDef.values.length === 0) {
234
+ throw new errors_1.SchemaValidationError(`Enum '${enumDef.name}' must have at least one value`);
235
+ }
236
+ // Check for duplicate enum values
237
+ const seen = new Set();
238
+ for (const value of enumDef.values) {
239
+ if (seen.has(value)) {
240
+ throw new errors_1.SchemaValidationError(`Duplicate value '${value}' in enum '${enumDef.name}'`);
241
+ }
242
+ seen.add(value);
243
+ }
244
+ }
245
+ }
246
+ /**
247
+ * Get validation warnings (non-critical issues)
248
+ */
249
+ getWarnings() {
250
+ const warnings = [];
251
+ for (const model of this.models) {
252
+ // Warn about models without @id field
253
+ const hasIdField = model.fields.some(f => f.isId);
254
+ if (!hasIdField) {
255
+ warnings.push(`Model '${model.name}' has no @id field`);
256
+ }
257
+ // Warn about required fields without defaults
258
+ for (const field of model.fields) {
259
+ if (field.isRequired && !field.isId && !field.defaultValue && !field.isRelation) {
260
+ warnings.push(`Required field '${field.name}' in model '${model.name}' has no default value`);
261
+ }
262
+ }
263
+ }
264
+ return warnings;
265
+ }
266
+ }
267
+ exports.SchemaValidator = SchemaValidator;
268
+ //# sourceMappingURL=SchemaValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchemaValidator.js","sourceRoot":"","sources":["../../src/engine/SchemaValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { GraphQLDirective } from 'graphql';
2
+ export declare const modelDirective: GraphQLDirective;
3
+ export declare const idDirective: GraphQLDirective;
4
+ export declare const uniqueDirective: GraphQLDirective;
5
+ export declare const indexDirective: GraphQLDirective;
6
+ export declare const defaultDirective: GraphQLDirective;
7
+ export declare const relationDirective: GraphQLDirective;
8
+ export declare const createdAtDirective: GraphQLDirective;
9
+ export declare const updatedAtDirective: GraphQLDirective;
10
+ export declare const embeddedDirective: GraphQLDirective;
11
+ export declare const hideDirective: GraphQLDirective;
12
+ export declare const lenzDirectives: GraphQLDirective[];
13
+ export declare function isLenzDirective(directiveName: string): boolean;
14
+ export declare function getDirectiveDefinition(directiveName: string): GraphQLDirective | undefined;
15
+ //# sourceMappingURL=directives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directives.d.ts","sourceRoot":"","sources":["../../src/engine/directives.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAoD,MAAM,SAAS,CAAC;AAG7F,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,WAAW,kBAItB,CAAC;AAEH,eAAO,MAAM,eAAe,kBAI1B,CAAC;AAEH,eAAO,MAAM,cAAc,kBAIzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,kBAU3B,CAAC;AAEH,eAAO,MAAM,iBAAiB,kBAU5B,CAAC;AAEH,eAAO,MAAM,kBAAkB,kBAI7B,CAAC;AAEH,eAAO,MAAM,kBAAkB,kBAI7B,CAAC;AAEH,eAAO,MAAM,iBAAiB,kBAI5B,CAAC;AAEH,eAAO,MAAM,aAAa,kBAIxB,CAAC;AAGH,eAAO,MAAM,cAAc,oBAW1B,CAAC;AAGF,wBAAgB,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE9D;AAGD,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAE1F"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lenzDirectives = exports.hideDirective = exports.embeddedDirective = exports.updatedAtDirective = exports.createdAtDirective = exports.relationDirective = exports.defaultDirective = exports.indexDirective = exports.uniqueDirective = exports.idDirective = exports.modelDirective = void 0;
4
+ exports.isLenzDirective = isLenzDirective;
5
+ exports.getDirectiveDefinition = getDirectiveDefinition;
6
+ const graphql_1 = require("graphql");
7
+ // Определение всех директив Lenz ORM
8
+ exports.modelDirective = new graphql_1.GraphQLDirective({
9
+ name: 'model',
10
+ locations: [graphql_1.DirectiveLocation.OBJECT],
11
+ description: 'Marks a GraphQL type as a database model'
12
+ });
13
+ exports.idDirective = new graphql_1.GraphQLDirective({
14
+ name: 'id',
15
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
16
+ description: 'Marks a field as primary key (auto-generated ObjectId)'
17
+ });
18
+ exports.uniqueDirective = new graphql_1.GraphQLDirective({
19
+ name: 'unique',
20
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
21
+ description: 'Creates a unique index on the field'
22
+ });
23
+ exports.indexDirective = new graphql_1.GraphQLDirective({
24
+ name: 'index',
25
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
26
+ description: 'Creates a regular index on the field'
27
+ });
28
+ exports.defaultDirective = new graphql_1.GraphQLDirective({
29
+ name: 'default',
30
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
31
+ args: {
32
+ value: {
33
+ type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
34
+ description: 'Default value for the field'
35
+ }
36
+ },
37
+ description: 'Sets a default value for a field'
38
+ });
39
+ exports.relationDirective = new graphql_1.GraphQLDirective({
40
+ name: 'relation',
41
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
42
+ args: {
43
+ field: {
44
+ type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString),
45
+ description: 'The field that stores the foreign key'
46
+ }
47
+ },
48
+ description: 'Defines a relationship between models'
49
+ });
50
+ exports.createdAtDirective = new graphql_1.GraphQLDirective({
51
+ name: 'createdAt',
52
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
53
+ description: 'Automatically sets timestamp on creation'
54
+ });
55
+ exports.updatedAtDirective = new graphql_1.GraphQLDirective({
56
+ name: 'updatedAt',
57
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
58
+ description: 'Automatically updates timestamp on modification'
59
+ });
60
+ exports.embeddedDirective = new graphql_1.GraphQLDirective({
61
+ name: 'embedded',
62
+ locations: [graphql_1.DirectiveLocation.OBJECT],
63
+ description: 'Marks a type as embedded document (not stored in separate collection)'
64
+ });
65
+ exports.hideDirective = new graphql_1.GraphQLDirective({
66
+ name: 'hide',
67
+ locations: [graphql_1.DirectiveLocation.FIELD_DEFINITION],
68
+ description: 'Excludes field from query results by default. Can be explicitly selected via select option.'
69
+ });
70
+ // Экспорт всех директив
71
+ exports.lenzDirectives = [
72
+ exports.modelDirective,
73
+ exports.idDirective,
74
+ exports.uniqueDirective,
75
+ exports.indexDirective,
76
+ exports.defaultDirective,
77
+ exports.relationDirective,
78
+ exports.createdAtDirective,
79
+ exports.updatedAtDirective,
80
+ exports.embeddedDirective,
81
+ exports.hideDirective
82
+ ];
83
+ // Утилита для проверки, является ли директива директивой Lenz
84
+ function isLenzDirective(directiveName) {
85
+ return exports.lenzDirectives.some(d => d.name === directiveName);
86
+ }
87
+ // Утилита для получения определения директивы по имени
88
+ function getDirectiveDefinition(directiveName) {
89
+ return exports.lenzDirectives.find(d => d.name === directiveName);
90
+ }
91
+ //# sourceMappingURL=directives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/engine/directives.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { GraphQLParser } from './GraphQLParser';
2
+ export { CodeGenerator } from './CodeGenerator';
3
+ export { LenzEngine } from './LenzEngine';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LenzEngine = exports.CodeGenerator = exports.GraphQLParser = void 0;
4
+ var GraphQLParser_1 = require("./GraphQLParser");
5
+ Object.defineProperty(exports, "GraphQLParser", { enumerable: true, get: function () { return GraphQLParser_1.GraphQLParser; } });
6
+ var CodeGenerator_1 = require("./CodeGenerator");
7
+ Object.defineProperty(exports, "CodeGenerator", { enumerable: true, get: function () { return CodeGenerator_1.CodeGenerator; } });
8
+ var LenzEngine_1 = require("./LenzEngine");
9
+ Object.defineProperty(exports, "LenzEngine", { enumerable: true, get: function () { return LenzEngine_1.LenzEngine; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,2CAA0C;AAAjC,wGAAA,UAAU,OAAA"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Structured error classes for Lenz ORM
3
+ */
4
+ export declare class LenzError extends Error {
5
+ readonly code: string;
6
+ readonly details: Record<string, any> | undefined;
7
+ constructor(code: string, message: string, details?: Record<string, any>);
8
+ }
9
+ export declare class SchemaValidationError extends LenzError {
10
+ constructor(message: string, details?: Record<string, any>);
11
+ }
12
+ export declare class SchemaParseError extends LenzError {
13
+ constructor(message: string, details?: Record<string, any>);
14
+ }
15
+ export declare class CodeGenerationError extends LenzError {
16
+ constructor(message: string, details?: Record<string, any>);
17
+ }
18
+ export declare class ConfigurationError extends LenzError {
19
+ constructor(message: string, details?: Record<string, any>);
20
+ }
21
+ export declare class DatabaseError extends LenzError {
22
+ constructor(message: string, details?: Record<string, any>);
23
+ }
24
+ export declare class CircularDependencyError extends SchemaValidationError {
25
+ constructor(modelNames: string[], details?: Record<string, any>);
26
+ }
27
+ export declare class DuplicateModelError extends SchemaValidationError {
28
+ constructor(modelName: string, details?: Record<string, any>);
29
+ }
30
+ export declare class DuplicateFieldError extends SchemaValidationError {
31
+ constructor(modelName: string, fieldName: string, details?: Record<string, any>);
32
+ }
33
+ export declare class InvalidFieldTypeError extends SchemaValidationError {
34
+ constructor(modelName: string, fieldName: string, fieldType: string, details?: Record<string, any>);
35
+ }
36
+ export declare class InvalidDirectiveError extends SchemaValidationError {
37
+ constructor(directiveName: string, location: string, details?: Record<string, any>);
38
+ }
39
+ export declare class MissingRequiredFieldError extends SchemaValidationError {
40
+ constructor(modelName: string, fieldName: string, details?: Record<string, any>);
41
+ }
42
+ export declare class RelationValidationError extends SchemaValidationError {
43
+ constructor(message: string, details?: Record<string, any>);
44
+ }
45
+ export declare function isLenzError(error: any): error is LenzError;
46
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,qBAAa,SAAU,SAAQ,KAAK;IAClC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,CAAC;gBAE7C,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAWzE;AAED,qBAAa,qBAAsB,SAAQ,SAAS;gBACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED,qBAAa,gBAAiB,SAAQ,SAAS;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAED,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAGD,qBAAa,uBAAwB,SAAQ,qBAAqB;gBACpD,UAAU,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAOhE;AAED,qBAAa,mBAAoB,SAAQ,qBAAqB;gBAChD,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAO7D;AAED,qBAAa,mBAAoB,SAAQ,qBAAqB;gBAChD,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAQhF;AAED,qBAAa,qBAAsB,SAAQ,qBAAqB;gBAClD,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CASnG;AAED,qBAAa,qBAAsB,SAAQ,qBAAqB;gBAClD,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAQnF;AAED,qBAAa,yBAA0B,SAAQ,qBAAqB;gBACtD,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAQhF;AAED,qBAAa,uBAAwB,SAAQ,qBAAqB;gBACpD,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;CAI3D;AAGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,SAAS,CAE1D"}
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ /**
3
+ * Structured error classes for Lenz ORM
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.RelationValidationError = exports.MissingRequiredFieldError = exports.InvalidDirectiveError = exports.InvalidFieldTypeError = exports.DuplicateFieldError = exports.DuplicateModelError = exports.CircularDependencyError = exports.DatabaseError = exports.ConfigurationError = exports.CodeGenerationError = exports.SchemaParseError = exports.SchemaValidationError = exports.LenzError = void 0;
7
+ exports.isLenzError = isLenzError;
8
+ class LenzError extends Error {
9
+ constructor(code, message, details) {
10
+ super(message);
11
+ this.name = 'LenzError';
12
+ this.code = code;
13
+ this.details = details;
14
+ // Maintain proper stack trace
15
+ if (Error.captureStackTrace) {
16
+ Error.captureStackTrace(this, LenzError);
17
+ }
18
+ }
19
+ }
20
+ exports.LenzError = LenzError;
21
+ class SchemaValidationError extends LenzError {
22
+ constructor(message, details) {
23
+ super('SCHEMA_VALIDATION_ERROR', message, details);
24
+ this.name = 'SchemaValidationError';
25
+ }
26
+ }
27
+ exports.SchemaValidationError = SchemaValidationError;
28
+ class SchemaParseError extends LenzError {
29
+ constructor(message, details) {
30
+ super('SCHEMA_PARSE_ERROR', message, details);
31
+ this.name = 'SchemaParseError';
32
+ }
33
+ }
34
+ exports.SchemaParseError = SchemaParseError;
35
+ class CodeGenerationError extends LenzError {
36
+ constructor(message, details) {
37
+ super('CODE_GENERATION_ERROR', message, details);
38
+ this.name = 'CodeGenerationError';
39
+ }
40
+ }
41
+ exports.CodeGenerationError = CodeGenerationError;
42
+ class ConfigurationError extends LenzError {
43
+ constructor(message, details) {
44
+ super('CONFIGURATION_ERROR', message, details);
45
+ this.name = 'ConfigurationError';
46
+ }
47
+ }
48
+ exports.ConfigurationError = ConfigurationError;
49
+ class DatabaseError extends LenzError {
50
+ constructor(message, details) {
51
+ super('DATABASE_ERROR', message, details);
52
+ this.name = 'DatabaseError';
53
+ }
54
+ }
55
+ exports.DatabaseError = DatabaseError;
56
+ // Specific validation errors
57
+ class CircularDependencyError extends SchemaValidationError {
58
+ constructor(modelNames, details) {
59
+ super(`Circular dependency detected between models: ${modelNames.join(' -> ')}`, {
60
+ modelNames,
61
+ ...details
62
+ });
63
+ this.name = 'CircularDependencyError';
64
+ }
65
+ }
66
+ exports.CircularDependencyError = CircularDependencyError;
67
+ class DuplicateModelError extends SchemaValidationError {
68
+ constructor(modelName, details) {
69
+ super(`Duplicate model name: ${modelName}`, {
70
+ modelName,
71
+ ...details
72
+ });
73
+ this.name = 'DuplicateModelError';
74
+ }
75
+ }
76
+ exports.DuplicateModelError = DuplicateModelError;
77
+ class DuplicateFieldError extends SchemaValidationError {
78
+ constructor(modelName, fieldName, details) {
79
+ super(`Duplicate field '${fieldName}' in model '${modelName}'`, {
80
+ modelName,
81
+ fieldName,
82
+ ...details
83
+ });
84
+ this.name = 'DuplicateFieldError';
85
+ }
86
+ }
87
+ exports.DuplicateFieldError = DuplicateFieldError;
88
+ class InvalidFieldTypeError extends SchemaValidationError {
89
+ constructor(modelName, fieldName, fieldType, details) {
90
+ super(`Invalid field type '${fieldType}' for field '${fieldName}' in model '${modelName}'`, {
91
+ modelName,
92
+ fieldName,
93
+ fieldType,
94
+ ...details
95
+ });
96
+ this.name = 'InvalidFieldTypeError';
97
+ }
98
+ }
99
+ exports.InvalidFieldTypeError = InvalidFieldTypeError;
100
+ class InvalidDirectiveError extends SchemaValidationError {
101
+ constructor(directiveName, location, details) {
102
+ super(`Invalid directive '@${directiveName}' at ${location}`, {
103
+ directiveName,
104
+ location,
105
+ ...details
106
+ });
107
+ this.name = 'InvalidDirectiveError';
108
+ }
109
+ }
110
+ exports.InvalidDirectiveError = InvalidDirectiveError;
111
+ class MissingRequiredFieldError extends SchemaValidationError {
112
+ constructor(modelName, fieldName, details) {
113
+ super(`Missing required field '${fieldName}' in model '${modelName}'`, {
114
+ modelName,
115
+ fieldName,
116
+ ...details
117
+ });
118
+ this.name = 'MissingRequiredFieldError';
119
+ }
120
+ }
121
+ exports.MissingRequiredFieldError = MissingRequiredFieldError;
122
+ class RelationValidationError extends SchemaValidationError {
123
+ constructor(message, details) {
124
+ super(message, details);
125
+ this.name = 'RelationValidationError';
126
+ }
127
+ }
128
+ exports.RelationValidationError = RelationValidationError;
129
+ // Utility function to check if error is a LenzError
130
+ function isLenzError(error) {
131
+ return error && typeof error === 'object' && error.name === 'LenzError';
132
+ }
133
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { LenzEngine } from './engine/LenzEngine';
2
+ export * from './config';
3
+ export * from './engine/GraphQLParser';
4
+ import { LenzEngine as LenzEngineClass } from './engine/LenzEngine';
5
+ declare const _default: {
6
+ LenzEngine: typeof LenzEngineClass;
7
+ generate: import("commander").Command;
8
+ init: import("commander").Command;
9
+ studio: import("commander").Command;
10
+ };
11
+ export default _default;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,cAAc,UAAU,CAAC;AAQzB,cAAc,wBAAwB,CAAC;AAGvC,OAAO,EAAE,UAAU,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;;;;;;;AACpE,wBAKE"}