@bairock/lenz 0.0.15 → 0.0.16
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.
- package/README.md +88 -4
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +34 -8
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +0 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/index.js +0 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/config/index.d.ts +4 -6
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +24 -3
- package/dist/config/index.js.map +1 -1
- package/dist/engine/CodeGenerator.d.ts +7 -28
- package/dist/engine/CodeGenerator.d.ts.map +1 -1
- package/dist/engine/CodeGenerator.js +25 -1969
- package/dist/engine/CodeGenerator.js.map +1 -1
- package/dist/engine/GraphQLParseHelpers.d.ts +25 -0
- package/dist/engine/GraphQLParseHelpers.d.ts.map +1 -0
- package/dist/engine/GraphQLParseHelpers.js +128 -0
- package/dist/engine/GraphQLParseHelpers.js.map +1 -0
- package/dist/engine/GraphQLParser.d.ts +23 -10
- package/dist/engine/GraphQLParser.d.ts.map +1 -1
- package/dist/engine/GraphQLParser.js +154 -240
- package/dist/engine/GraphQLParser.js.map +1 -1
- package/dist/engine/GraphQLRelationAnalyzer.d.ts +10 -0
- package/dist/engine/GraphQLRelationAnalyzer.d.ts.map +1 -0
- package/dist/engine/GraphQLRelationAnalyzer.js +117 -0
- package/dist/engine/GraphQLRelationAnalyzer.js.map +1 -0
- package/dist/engine/LenzEngine.d.ts +1 -1
- package/dist/engine/LenzEngine.d.ts.map +1 -1
- package/dist/engine/LenzEngine.js +33 -13
- package/dist/engine/LenzEngine.js.map +1 -1
- package/dist/engine/SchemaRelationValidator.d.ts +15 -0
- package/dist/engine/SchemaRelationValidator.d.ts.map +1 -0
- package/dist/engine/SchemaRelationValidator.js +133 -0
- package/dist/engine/SchemaRelationValidator.js.map +1 -0
- package/dist/engine/SchemaValidator.d.ts +11 -10
- package/dist/engine/SchemaValidator.d.ts.map +1 -1
- package/dist/engine/SchemaValidator.js +151 -169
- package/dist/engine/SchemaValidator.js.map +1 -1
- package/dist/engine/directives.d.ts +10 -0
- package/dist/engine/directives.d.ts.map +1 -1
- package/dist/engine/directives.js +152 -6
- package/dist/engine/directives.js.map +1 -1
- package/dist/engine/generators/ClientGenerator.d.ts +7 -0
- package/dist/engine/generators/ClientGenerator.d.ts.map +1 -0
- package/dist/engine/generators/ClientGenerator.js +386 -0
- package/dist/engine/generators/ClientGenerator.js.map +1 -0
- package/dist/engine/generators/DelegateGenerator.d.ts +9 -0
- package/dist/engine/generators/DelegateGenerator.d.ts.map +1 -0
- package/dist/engine/generators/DelegateGenerator.js +453 -0
- package/dist/engine/generators/DelegateGenerator.js.map +1 -0
- package/dist/engine/generators/DelegateHelpers.d.ts +7 -0
- package/dist/engine/generators/DelegateHelpers.d.ts.map +1 -0
- package/dist/engine/generators/DelegateHelpers.js +144 -0
- package/dist/engine/generators/DelegateHelpers.js.map +1 -0
- package/dist/engine/generators/DelegateRelations.d.ts +11 -0
- package/dist/engine/generators/DelegateRelations.d.ts.map +1 -0
- package/dist/engine/generators/DelegateRelations.js +794 -0
- package/dist/engine/generators/DelegateRelations.js.map +1 -0
- package/dist/engine/generators/DelegateTemplateBody.d.ts +8 -0
- package/dist/engine/generators/DelegateTemplateBody.d.ts.map +1 -0
- package/dist/engine/generators/DelegateTemplateBody.js +776 -0
- package/dist/engine/generators/DelegateTemplateBody.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimeErrors.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimeErrors.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimeErrors.js +140 -0
- package/dist/engine/generators/GenerateRuntimeErrors.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimeIndex.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimeIndex.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimeIndex.js +21 -0
- package/dist/engine/generators/GenerateRuntimeIndex.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimeLogger.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimeLogger.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimeLogger.js +125 -0
- package/dist/engine/generators/GenerateRuntimeLogger.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimePagination.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimePagination.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimePagination.js +159 -0
- package/dist/engine/generators/GenerateRuntimePagination.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimeQuery.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimeQuery.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimeQuery.js +427 -0
- package/dist/engine/generators/GenerateRuntimeQuery.js.map +1 -0
- package/dist/engine/generators/GenerateRuntimeRelations.d.ts +2 -0
- package/dist/engine/generators/GenerateRuntimeRelations.d.ts.map +1 -0
- package/dist/engine/generators/GenerateRuntimeRelations.js +130 -0
- package/dist/engine/generators/GenerateRuntimeRelations.js.map +1 -0
- package/dist/engine/generators/RuntimeGenerator.d.ts +16 -0
- package/dist/engine/generators/RuntimeGenerator.d.ts.map +1 -0
- package/dist/engine/generators/RuntimeGenerator.js +16 -0
- package/dist/engine/generators/RuntimeGenerator.js.map +1 -0
- package/dist/engine/generators/TypeFilterTypes.d.ts +2 -0
- package/dist/engine/generators/TypeFilterTypes.d.ts.map +1 -0
- package/dist/engine/generators/TypeFilterTypes.js +220 -0
- package/dist/engine/generators/TypeFilterTypes.js.map +1 -0
- package/dist/engine/generators/TypeGenerator.d.ts +16 -0
- package/dist/engine/generators/TypeGenerator.d.ts.map +1 -0
- package/dist/engine/generators/TypeGenerator.js +493 -0
- package/dist/engine/generators/TypeGenerator.js.map +1 -0
- package/dist/engine/generators/helpers.d.ts +13 -0
- package/dist/engine/generators/helpers.d.ts.map +1 -0
- package/dist/engine/generators/helpers.js +316 -0
- package/dist/engine/generators/helpers.js.map +1 -0
- package/dist/errors/index.d.ts +3 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +11 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -3
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -14,6 +14,94 @@ GraphQL-based ORM for MongoDB (Prisma style)
|
|
|
14
14
|
- ✅ **Automatic Indexing** - Intelligent index creation for foreign key fields
|
|
15
15
|
- ✅ **Transactions** - ACID transactions with MongoDB
|
|
16
16
|
|
|
17
|
+
## Сравнение с Prisma
|
|
18
|
+
|
|
19
|
+
Lenz вдохновлён Prisma, но имеет важные отличия, связанные с MongoDB. Ниже — подробное сравнение.
|
|
20
|
+
|
|
21
|
+
### Таблица директив
|
|
22
|
+
|
|
23
|
+
| Prisma атрибут | Lenz директива | Статус |
|
|
24
|
+
|---------------|----------------|--------|
|
|
25
|
+
| `@id` | `@id` | ✅ Полная поддержка (ObjectId) |
|
|
26
|
+
| `@unique` | `@unique` | ✅ Полная поддержка |
|
|
27
|
+
| `@index` | `@index` | ✅ Полная поддержка |
|
|
28
|
+
| `@default(value)` | `@default(value: "...")` | ✅ Полная поддержка |
|
|
29
|
+
| `@default(uuid())` | `@default(generator: "uuid")` | ✅ Эквивалент |
|
|
30
|
+
| `@default(now())` | `@default(generator: "now")` | ✅ Эквивалент |
|
|
31
|
+
| `@default(cuid())` | `@default(generator: "cuid")` | ✅ Базовый CUID |
|
|
32
|
+
| `@default(cuid2())` | `@default(generator: "cuid2")` | ✅ CUID2-совместимый |
|
|
33
|
+
| `@default(autoincrement())` | — | ❌ Не применимо к MongoDB |
|
|
34
|
+
| `@default(dbgenerated())` | — | ❌ Не применимо |
|
|
35
|
+
| `@relation(fields, references)` | `@relation(field)` | ⚠️ Упрощённый синтаксис (одно поле) |
|
|
36
|
+
| `@updatedAt` | `@updatedAt` | ✅ Полная поддержка |
|
|
37
|
+
| `@map` | `@map(name)` | ✅ Полная поддержка |
|
|
38
|
+
| `@@map` | `@modelMap(name)` | ✅ Полная поддержка |
|
|
39
|
+
| `@ignore` | `@ignore` | ✅ Полная поддержка |
|
|
40
|
+
| `@hidden` | `@hide` | ✅ Аналог |
|
|
41
|
+
| `@@unique([a, b])` | `@compoundUnique(fields: [...])` | ✅ Полная поддержка |
|
|
42
|
+
| `@@index([a, b])` | `@compoundIndex(fields: [...])` | ✅ Полная поддержка |
|
|
43
|
+
| `@@id([a, b])` | `@compoundId(fields: [...])` | ✅ Полная поддержка |
|
|
44
|
+
| `@@index([...], type: "text")` | `@fulltext(fields: [...])` | ✅ Эквивалент (MongoDB text index) |
|
|
45
|
+
| `@email` | `@email` | ✅ Полная поддержка |
|
|
46
|
+
| `@url` | `@url` | ✅ Полная поддержка |
|
|
47
|
+
| `@@index(map: "...")` | `@compoundIndex(fields: [...], name: "...")` | ✅ name аргумент |
|
|
48
|
+
| `@id(map: "...")` | `@id(map: "...")` | ✅ Полная поддержка |
|
|
49
|
+
| `@unique(map: "...")` | `@unique(map: "...")` | ✅ Полная поддержка |
|
|
50
|
+
| `@@schema` | — | ❌ Не применимо (multi-schema) |
|
|
51
|
+
| `@@view` | — | ❌ Не реализован |
|
|
52
|
+
| `@relation(onDelete: Restrict)` | `@relation(onDelete: "Restrict")` | ✅ Полная поддержка |
|
|
53
|
+
| `@embedded` (Prisma MongoDB) | `@embedded` | ✅ Полная поддержка |
|
|
54
|
+
| — | `@regex(pattern)` | ✅ Только в Lenz |
|
|
55
|
+
| — | `@@fulltext` | ✅ Только в Lenz (MongoDB text index) |
|
|
56
|
+
|
|
57
|
+
### Возможности
|
|
58
|
+
|
|
59
|
+
| Возможность | Prisma | Lenz |
|
|
60
|
+
|------------|--------|------|
|
|
61
|
+
| **Поддерживаемые БД** | PostgreSQL, MySQL, SQLite, MongoDB, SQL Server, CockroachDB | **MongoDB** |
|
|
62
|
+
| **CLI генерация** | `prisma generate` | `lenz generate` |
|
|
63
|
+
| **Schema DSL** | Prisma Schema Language (.prisma) | GraphQL SDL (.graphql) |
|
|
64
|
+
| **Типизация** | Полная (генерация типов) | Полная (генерация типов) |
|
|
65
|
+
| **CRUD** | ✅ | ✅ |
|
|
66
|
+
| **Relations (1:1, 1:m, m:n)** | ✅ | ✅ |
|
|
67
|
+
| **Pagination (offset + cursor)** | ✅ | ✅ |
|
|
68
|
+
| **Transactions** | ✅ | ✅ (требуется replica set) |
|
|
69
|
+
| **Aggregation** | `groupBy`, `aggregate` | Пайплайн MongoDB + `aggregate` |
|
|
70
|
+
| **Raw queries** | `$queryRaw`, `$executeRaw` | `$raw`, `aggregateRaw` |
|
|
71
|
+
| **Client extensions** | `$extends` | `$extends` |
|
|
72
|
+
| **Middleware** | `$use` (удалён в Prisma 6.14) | ❌ (используйте `$extends`) |
|
|
73
|
+
| **Миграции** | Prisma Migrate | ❌ (ленивое создание коллекций) |
|
|
74
|
+
| **Интроспекция** | `prisma db pull` | ❌ |
|
|
75
|
+
| **Seed** | `prisma db seed` | ❌ |
|
|
76
|
+
| **Studio** | Prisma Studio | ❌ |
|
|
77
|
+
| **Драйверы** | Встроенные + driver adapters | MongoDB Native Driver |
|
|
78
|
+
| **Views** | `@@view` (v5+) | ❌ |
|
|
79
|
+
| **Multi-schema** | `@@schema` (PostgreSQL) | ❌ |
|
|
80
|
+
|
|
81
|
+
### Чего нет в Lenz (но есть в Prisma)
|
|
82
|
+
|
|
83
|
+
1. **Другие БД** — Lenz поддерживает только MongoDB. Prisma работает с PostgreSQL, MySQL, SQLite, SQL Server, CockroachDB и MongoDB.
|
|
84
|
+
2. **Миграции** — нет аналога Prisma Migrate. Коллекции и индексы создаются лениво при первом подключении.
|
|
85
|
+
3. **Интроспекция** — нет `prisma db pull` для импорта схемы из существующей БД.
|
|
86
|
+
4. **Типы данных** — `Decimal`, `Unsupported("...")` не реализованы. `Bytes` и `BigInt` ✅ реализованы.
|
|
87
|
+
5. **Views** — нет поддержки представлений (`@@view`).
|
|
88
|
+
6. **Seed** — нет встроенного фреймворка для наполнения тестовыми данными.
|
|
89
|
+
7. **Studio** — нет графического редактора данных (аналога Prisma Studio).
|
|
90
|
+
8. **Составные внешние ключи** — `@relation` поддерживает только одно поле, не `fields: [a, b], references: [c, d]`.
|
|
91
|
+
|
|
92
|
+
### Что есть в Lenz, чего нет в Prisma
|
|
93
|
+
|
|
94
|
+
1. **`@embedded`** — встроенные документы (MongoDB-специфичная возможность).
|
|
95
|
+
2. **`@hide`** — исключение полей из результатов по умолчанию.
|
|
96
|
+
3. **`@regex(pattern)`** — кастомная валидация через регулярные выражения.
|
|
97
|
+
4. **Стратегии загрузки** — автоматический выбор между `populate` (отдельные запросы) и `lookup` (`$lookup` aggregation) в зависимости от типа связи.
|
|
98
|
+
5. **Гео-пространственные фильтры** — `near`, `nearSphere`, `geoWithin`, `geoIntersects`.
|
|
99
|
+
6. **Атомарные операции с массивами** — `push`, `pull`, `addToSet`, `pop`, `pullAll`, `pushAll`.
|
|
100
|
+
7. **`@fulltext`** — декларативное создание MongoDB text index для полнотекстового поиска.
|
|
101
|
+
8. **Автоматическая инициализация массивов** — обязательные поля-массивы автоматически инициализируются пустым массивом.
|
|
102
|
+
9. **Bytes** — тип `Buffer` для бинарных данных (MongoDB BinData).
|
|
103
|
+
10. **BigInt** — тип `bigint` для 64-битных целых чисел (MongoDB Long).
|
|
104
|
+
|
|
17
105
|
## CRUD Operations
|
|
18
106
|
|
|
19
107
|
Lenz provides a comprehensive set of CRUD operations similar to Prisma, with full TypeScript support and MongoDB-native performance.
|
|
@@ -496,11 +584,9 @@ export default defineConfig({
|
|
|
496
584
|
generate: {
|
|
497
585
|
client: {
|
|
498
586
|
output: '../generated/lenz/client',
|
|
499
|
-
generator: 'lenz-client-js',
|
|
500
587
|
},
|
|
501
588
|
},
|
|
502
589
|
log: ['query', 'info', 'warn', 'error'] as const,
|
|
503
|
-
autoCreateCollections: true,
|
|
504
590
|
})
|
|
505
591
|
```
|
|
506
592
|
|
|
@@ -521,11 +607,9 @@ export default {
|
|
|
521
607
|
generate: {
|
|
522
608
|
client: {
|
|
523
609
|
output: '../generated/lenz/client',
|
|
524
|
-
generator: 'lenz-client-js',
|
|
525
610
|
},
|
|
526
611
|
},
|
|
527
612
|
log: ['query', 'info', 'warn', 'error'],
|
|
528
|
-
autoCreateCollections: true,
|
|
529
613
|
};
|
|
530
614
|
```
|
|
531
615
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,eAAO,MAAM,eAAe,SAkHxB,CAAC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { LenzEngine } from '../../engine/LenzEngine.js';
|
|
3
|
-
import { existsSync } from 'fs';
|
|
3
|
+
import { existsSync, promises as fs } from 'fs';
|
|
4
4
|
import { resolve, dirname } from 'path';
|
|
5
5
|
import chalk from 'chalk';
|
|
6
|
+
import * as ts from 'typescript';
|
|
7
|
+
import { ConfigurationError } from '../../errors/index.js';
|
|
6
8
|
export const generateCommand = new Command('generate')
|
|
7
9
|
.description('Generate Lenz client from GraphQL schema')
|
|
8
10
|
.option('-c, --config <path>', 'Path to lenz config file', 'lenz/lenz.config.ts')
|
|
@@ -27,9 +29,32 @@ export const generateCommand = new Command('generate')
|
|
|
27
29
|
// Загружаем конфигурацию
|
|
28
30
|
if (existsSync(configPath)) {
|
|
29
31
|
if (configPath.endsWith('.ts')) {
|
|
30
|
-
//
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
// Try direct import first (works when running via tsx), fallback to transpile
|
|
33
|
+
try {
|
|
34
|
+
const configModule = await import(configPath);
|
|
35
|
+
config = configModule.default || configModule;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Fallback: transpile with TypeScript compiler
|
|
39
|
+
const tsCode = await fs.readFile(configPath, 'utf-8');
|
|
40
|
+
const jsCode = ts.transpileModule(tsCode, {
|
|
41
|
+
compilerOptions: {
|
|
42
|
+
target: ts.ScriptTarget.ES2020,
|
|
43
|
+
module: ts.ModuleKind.ESNext,
|
|
44
|
+
strict: false,
|
|
45
|
+
esModuleInterop: true,
|
|
46
|
+
}
|
|
47
|
+
}).outputText;
|
|
48
|
+
const tempPath = resolve(dirname(configPath), `.lenz-config-${Date.now()}.mjs`);
|
|
49
|
+
await fs.writeFile(tempPath, jsCode, 'utf-8');
|
|
50
|
+
try {
|
|
51
|
+
const configModule = await import(tempPath);
|
|
52
|
+
config = configModule.default || configModule;
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
33
58
|
}
|
|
34
59
|
else if (configPath.endsWith('.js') || configPath.endsWith('.mjs')) {
|
|
35
60
|
// Для JavaScript конфига (только ESM)
|
|
@@ -43,9 +68,7 @@ export const generateCommand = new Command('generate')
|
|
|
43
68
|
// Определяем пути
|
|
44
69
|
const schemaPath = resolve(dirname(configPath), options.schema || config.schema || 'schema.graphql');
|
|
45
70
|
if (!existsSync(schemaPath)) {
|
|
46
|
-
|
|
47
|
-
console.log(chalk.yellow('💡 Try running: lenz init'));
|
|
48
|
-
process.exit(1);
|
|
71
|
+
throw new ConfigurationError(`Schema file not found: ${schemaPath}. Try running: lenz init`, { schemaPath });
|
|
49
72
|
}
|
|
50
73
|
const outputPath = resolve(dirname(configPath), options.output || config.generate?.client?.output || '../generated/lenz/client');
|
|
51
74
|
// Создаем движок и генерируем
|
|
@@ -75,7 +98,10 @@ export const generateCommand = new Command('generate')
|
|
|
75
98
|
catch (error) {
|
|
76
99
|
console.log(chalk.red('❌ Generation failed:'));
|
|
77
100
|
console.log(chalk.red(error instanceof Error ? error.message : String(error)));
|
|
78
|
-
|
|
101
|
+
if (typeof error === 'object' && error !== null && 'details' in error) {
|
|
102
|
+
console.log(chalk.gray(' Details:', JSON.stringify(error.details, null, 2)));
|
|
103
|
+
}
|
|
104
|
+
throw error;
|
|
79
105
|
}
|
|
80
106
|
});
|
|
81
107
|
//# sourceMappingURL=generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiFpC,eAAO,MAAM,WAAW,SA4EpB,CAAC"}
|
|
@@ -49,7 +49,6 @@ export default defineConfig({
|
|
|
49
49
|
},
|
|
50
50
|
},
|
|
51
51
|
log: ['query', 'info', 'warn', 'error'] as const,
|
|
52
|
-
autoCreateCollections: true,
|
|
53
52
|
})`;
|
|
54
53
|
const DEFAULT_CONFIG_JS = `import 'dotenv/config'
|
|
55
54
|
import { defineConfig } from '@bairock/lenz'
|
|
@@ -65,7 +64,6 @@ export default defineConfig({
|
|
|
65
64
|
},
|
|
66
65
|
},
|
|
67
66
|
log: ['query', 'info', 'warn', 'error'],
|
|
68
|
-
autoCreateCollections: true,
|
|
69
67
|
});`;
|
|
70
68
|
const EXAMPLE_ENV = `# MongoDB connection string (include database name in URL)
|
|
71
69
|
MONGODB_URI=mongodb://localhost:27017/myapp
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAC1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAgCe,CAAC;AAEvC,MAAM,iBAAiB,GAAG
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { generateCommand } from './commands/generate.js';
|
|
4
4
|
import { initCommand } from './commands/init.js';
|
|
5
|
-
import { studioCommand } from './commands/studio.js';
|
|
6
5
|
import chalk from 'chalk';
|
|
7
6
|
import figlet from 'figlet';
|
|
8
7
|
const program = new Command();
|
|
@@ -15,7 +14,6 @@ program
|
|
|
15
14
|
});
|
|
16
15
|
program.addCommand(initCommand);
|
|
17
16
|
program.addCommand(generateCommand);
|
|
18
|
-
program.addCommand(studioCommand);
|
|
19
17
|
if (process.argv.length === 2) {
|
|
20
18
|
console.log(chalk.cyan(figlet.textSync('Lenz', { horizontalLayout: 'full' })));
|
|
21
19
|
console.log(chalk.gray('GraphQL-based ORM for MongoDB\n'));
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,MAAM,CAAC;KACZ,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC;KAChB,eAAe,CAAC;IACf,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnD,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAChC,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAEpC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,UAAU,EAAE,CAAC;AACvB,CAAC;KAAM,CAAC;IACN,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export interface LenzConfig {
|
|
|
8
8
|
datasource?: {
|
|
9
9
|
/** MongoDB connection URL (include database name in URL, e.g., mongodb://localhost:27017/mydb) */
|
|
10
10
|
url?: string;
|
|
11
|
+
/** Database name (overrides database name from URL) */
|
|
12
|
+
database?: string;
|
|
11
13
|
};
|
|
12
14
|
/** Generation configuration */
|
|
13
15
|
generate?: {
|
|
@@ -15,14 +17,10 @@ export interface LenzConfig {
|
|
|
15
17
|
client?: {
|
|
16
18
|
/** Output directory for generated client */
|
|
17
19
|
output?: string;
|
|
18
|
-
/** Generator name */
|
|
19
|
-
generator?: string;
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
22
|
/** Logging levels */
|
|
23
23
|
log?: ('query' | 'info' | 'warn' | 'error')[];
|
|
24
|
-
/** Auto-create collections */
|
|
25
|
-
autoCreateCollections?: boolean;
|
|
26
24
|
/** Connection pool size */
|
|
27
25
|
maxPoolSize?: number;
|
|
28
26
|
/** Connection timeout */
|
|
@@ -31,13 +29,13 @@ export interface LenzConfig {
|
|
|
31
29
|
socketTimeoutMS?: number;
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
|
-
* Define a Lenz configuration
|
|
32
|
+
* Define a Lenz configuration with validation
|
|
35
33
|
*/
|
|
36
34
|
export declare function defineConfig(config: LenzConfig): LenzConfig;
|
|
37
35
|
/**
|
|
38
36
|
* Load environment variables
|
|
39
37
|
*/
|
|
40
|
-
export declare function env(key: string, defaultValue?: string): string;
|
|
38
|
+
export declare function env(key: string, defaultValue?: string): string | undefined;
|
|
41
39
|
/**
|
|
42
40
|
* Default configuration
|
|
43
41
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,UAAU,CAAC,EAAE;QACX,kGAAkG;QAClG,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,uDAAuD;QACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,+BAA+B;IAC/B,QAAQ,CAAC,EAAE;QACT,gCAAgC;QAChC,MAAM,CAAC,EAAE;YACP,4CAA4C;YAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,qBAAqB;IACrB,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAC9C,2BAA2B;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CA+C3D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI1E;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,UAc3B,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Lenz configuration utilities
|
|
3
3
|
*/
|
|
4
|
+
import { ConfigurationError } from '../errors/index.js';
|
|
4
5
|
/**
|
|
5
|
-
* Define a Lenz configuration
|
|
6
|
+
* Define a Lenz configuration with validation
|
|
6
7
|
*/
|
|
7
8
|
export function defineConfig(config) {
|
|
9
|
+
// Validate config
|
|
10
|
+
if (config.schema !== undefined && typeof config.schema !== 'string') {
|
|
11
|
+
throw new ConfigurationError('schema must be a string', { schema: config.schema });
|
|
12
|
+
}
|
|
13
|
+
if (config.datasource?.url !== undefined && typeof config.datasource.url !== 'string') {
|
|
14
|
+
throw new ConfigurationError('datasource.url must be a string', { url: config.datasource.url });
|
|
15
|
+
}
|
|
16
|
+
if (config.log !== undefined) {
|
|
17
|
+
const validLevels = ['query', 'info', 'warn', 'error'];
|
|
18
|
+
for (const level of config.log) {
|
|
19
|
+
if (!validLevels.includes(level)) {
|
|
20
|
+
throw new ConfigurationError(`Invalid log level '${level}'. Must be one of: ${validLevels.join(', ')}`, { level });
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (config.maxPoolSize !== undefined && (typeof config.maxPoolSize !== 'number' || config.maxPoolSize < 1)) {
|
|
25
|
+
throw new ConfigurationError('maxPoolSize must be a positive number', { maxPoolSize: config.maxPoolSize });
|
|
26
|
+
}
|
|
8
27
|
const result = {
|
|
9
28
|
...defaultConfig,
|
|
10
29
|
...config,
|
|
@@ -35,7 +54,10 @@ export function defineConfig(config) {
|
|
|
35
54
|
* Load environment variables
|
|
36
55
|
*/
|
|
37
56
|
export function env(key, defaultValue) {
|
|
38
|
-
|
|
57
|
+
const value = process.env[key];
|
|
58
|
+
if (value !== undefined)
|
|
59
|
+
return value;
|
|
60
|
+
return defaultValue;
|
|
39
61
|
}
|
|
40
62
|
/**
|
|
41
63
|
* Default configuration
|
|
@@ -51,7 +73,6 @@ export const defaultConfig = {
|
|
|
51
73
|
}
|
|
52
74
|
},
|
|
53
75
|
log: ['query', 'error', 'warn'],
|
|
54
|
-
autoCreateCollections: true,
|
|
55
76
|
maxPoolSize: 10,
|
|
56
77
|
connectTimeoutMS: 10000,
|
|
57
78
|
socketTimeoutMS: 45000
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,35 +6,14 @@ export interface GenerateOptions {
|
|
|
6
6
|
outputPath: string;
|
|
7
7
|
clientName?: string;
|
|
8
8
|
}
|
|
9
|
-
export declare class CodeGenerator {
|
|
10
|
-
private typeMap;
|
|
11
|
-
private compileTypeScriptToJavaScript;
|
|
12
|
-
private addJsExtensionsToImports;
|
|
13
|
-
private removeTypeScriptSyntax;
|
|
14
|
-
private convertToJavaScript;
|
|
15
|
-
private convertTypesToJavaScript;
|
|
16
|
-
private convertToDeclaration;
|
|
17
|
-
generate(options: GenerateOptions): GeneratedFiles;
|
|
18
|
-
private generateIndex;
|
|
19
|
-
private generateClient;
|
|
20
|
-
private getModelsForRuntime;
|
|
21
|
-
private generateTypes;
|
|
22
|
-
private generateModelType;
|
|
23
|
-
private mapToTSType;
|
|
24
|
-
private generateEnums;
|
|
25
|
-
private generateRuntimePagination;
|
|
26
|
-
private generateRuntimeIndex;
|
|
27
|
-
private generateRuntimeQuery;
|
|
28
|
-
private generateRuntimeRelations;
|
|
29
|
-
private generateModelsIndex;
|
|
30
|
-
private generateModelFiles;
|
|
31
|
-
private generateCascadeMethod;
|
|
32
|
-
private generateModelDelegate;
|
|
33
|
-
private generateRelationInclusionCode;
|
|
34
|
-
private toCamelCase;
|
|
35
|
-
private toCollectionName;
|
|
36
|
-
}
|
|
37
9
|
export interface GeneratedFiles {
|
|
38
10
|
[filePath: string]: string;
|
|
39
11
|
}
|
|
12
|
+
export declare class CodeGenerator {
|
|
13
|
+
private typeGenerator;
|
|
14
|
+
private clientGenerator;
|
|
15
|
+
private delegateGenerator;
|
|
16
|
+
private runtimeGenerator;
|
|
17
|
+
generate(options: GenerateOptions): GeneratedFiles;
|
|
18
|
+
}
|
|
40
19
|
//# sourceMappingURL=CodeGenerator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/engine/CodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"CodeGenerator.d.ts","sourceRoot":"","sources":["../../src/engine/CodeGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO9E,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,gBAAgB,CAA0B;IAElD,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc;CAkCnD"}
|