@bairock/lenz 0.0.14 → 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.
Files changed (120) hide show
  1. package/README.md +119 -8
  2. package/dist/cli/commands/generate.d.ts.map +1 -1
  3. package/dist/cli/commands/generate.js +66 -79
  4. package/dist/cli/commands/generate.js.map +1 -1
  5. package/dist/cli/commands/init.d.ts.map +1 -1
  6. package/dist/cli/commands/init.js +22 -30
  7. package/dist/cli/commands/init.js.map +1 -1
  8. package/dist/cli/commands/studio.js +15 -21
  9. package/dist/cli/commands/studio.js.map +1 -1
  10. package/dist/cli/index.js +11 -18
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/config/index.d.ts +4 -6
  13. package/dist/config/index.d.ts.map +1 -1
  14. package/dist/config/index.js +31 -15
  15. package/dist/config/index.js.map +1 -1
  16. package/dist/engine/CodeGenerator.d.ts +8 -28
  17. package/dist/engine/CodeGenerator.d.ts.map +1 -1
  18. package/dist/engine/CodeGenerator.js +26 -1935
  19. package/dist/engine/CodeGenerator.js.map +1 -1
  20. package/dist/engine/GraphQLParseHelpers.d.ts +25 -0
  21. package/dist/engine/GraphQLParseHelpers.d.ts.map +1 -0
  22. package/dist/engine/GraphQLParseHelpers.js +128 -0
  23. package/dist/engine/GraphQLParseHelpers.js.map +1 -0
  24. package/dist/engine/GraphQLParser.d.ts +23 -8
  25. package/dist/engine/GraphQLParser.d.ts.map +1 -1
  26. package/dist/engine/GraphQLParser.js +165 -248
  27. package/dist/engine/GraphQLParser.js.map +1 -1
  28. package/dist/engine/GraphQLRelationAnalyzer.d.ts +10 -0
  29. package/dist/engine/GraphQLRelationAnalyzer.d.ts.map +1 -0
  30. package/dist/engine/GraphQLRelationAnalyzer.js +117 -0
  31. package/dist/engine/GraphQLRelationAnalyzer.js.map +1 -0
  32. package/dist/engine/LenzEngine.d.ts +4 -4
  33. package/dist/engine/LenzEngine.d.ts.map +1 -1
  34. package/dist/engine/LenzEngine.js +59 -46
  35. package/dist/engine/LenzEngine.js.map +1 -1
  36. package/dist/engine/SchemaRelationValidator.d.ts +15 -0
  37. package/dist/engine/SchemaRelationValidator.d.ts.map +1 -0
  38. package/dist/engine/SchemaRelationValidator.js +133 -0
  39. package/dist/engine/SchemaRelationValidator.js.map +1 -0
  40. package/dist/engine/SchemaValidator.d.ts +12 -11
  41. package/dist/engine/SchemaValidator.d.ts.map +1 -1
  42. package/dist/engine/SchemaValidator.js +163 -169
  43. package/dist/engine/SchemaValidator.js.map +1 -1
  44. package/dist/engine/directives.d.ts +10 -0
  45. package/dist/engine/directives.d.ts.map +1 -1
  46. package/dist/engine/directives.js +192 -47
  47. package/dist/engine/directives.js.map +1 -1
  48. package/dist/engine/generators/ClientGenerator.d.ts +7 -0
  49. package/dist/engine/generators/ClientGenerator.d.ts.map +1 -0
  50. package/dist/engine/generators/ClientGenerator.js +386 -0
  51. package/dist/engine/generators/ClientGenerator.js.map +1 -0
  52. package/dist/engine/generators/DelegateGenerator.d.ts +9 -0
  53. package/dist/engine/generators/DelegateGenerator.d.ts.map +1 -0
  54. package/dist/engine/generators/DelegateGenerator.js +453 -0
  55. package/dist/engine/generators/DelegateGenerator.js.map +1 -0
  56. package/dist/engine/generators/DelegateHelpers.d.ts +7 -0
  57. package/dist/engine/generators/DelegateHelpers.d.ts.map +1 -0
  58. package/dist/engine/generators/DelegateHelpers.js +144 -0
  59. package/dist/engine/generators/DelegateHelpers.js.map +1 -0
  60. package/dist/engine/generators/DelegateRelations.d.ts +11 -0
  61. package/dist/engine/generators/DelegateRelations.d.ts.map +1 -0
  62. package/dist/engine/generators/DelegateRelations.js +794 -0
  63. package/dist/engine/generators/DelegateRelations.js.map +1 -0
  64. package/dist/engine/generators/DelegateTemplateBody.d.ts +8 -0
  65. package/dist/engine/generators/DelegateTemplateBody.d.ts.map +1 -0
  66. package/dist/engine/generators/DelegateTemplateBody.js +776 -0
  67. package/dist/engine/generators/DelegateTemplateBody.js.map +1 -0
  68. package/dist/engine/generators/GenerateRuntimeErrors.d.ts +2 -0
  69. package/dist/engine/generators/GenerateRuntimeErrors.d.ts.map +1 -0
  70. package/dist/engine/generators/GenerateRuntimeErrors.js +140 -0
  71. package/dist/engine/generators/GenerateRuntimeErrors.js.map +1 -0
  72. package/dist/engine/generators/GenerateRuntimeIndex.d.ts +2 -0
  73. package/dist/engine/generators/GenerateRuntimeIndex.d.ts.map +1 -0
  74. package/dist/engine/generators/GenerateRuntimeIndex.js +21 -0
  75. package/dist/engine/generators/GenerateRuntimeIndex.js.map +1 -0
  76. package/dist/engine/generators/GenerateRuntimeLogger.d.ts +2 -0
  77. package/dist/engine/generators/GenerateRuntimeLogger.d.ts.map +1 -0
  78. package/dist/engine/generators/GenerateRuntimeLogger.js +125 -0
  79. package/dist/engine/generators/GenerateRuntimeLogger.js.map +1 -0
  80. package/dist/engine/generators/GenerateRuntimePagination.d.ts +2 -0
  81. package/dist/engine/generators/GenerateRuntimePagination.d.ts.map +1 -0
  82. package/dist/engine/generators/GenerateRuntimePagination.js +159 -0
  83. package/dist/engine/generators/GenerateRuntimePagination.js.map +1 -0
  84. package/dist/engine/generators/GenerateRuntimeQuery.d.ts +2 -0
  85. package/dist/engine/generators/GenerateRuntimeQuery.d.ts.map +1 -0
  86. package/dist/engine/generators/GenerateRuntimeQuery.js +427 -0
  87. package/dist/engine/generators/GenerateRuntimeQuery.js.map +1 -0
  88. package/dist/engine/generators/GenerateRuntimeRelations.d.ts +2 -0
  89. package/dist/engine/generators/GenerateRuntimeRelations.d.ts.map +1 -0
  90. package/dist/engine/generators/GenerateRuntimeRelations.js +130 -0
  91. package/dist/engine/generators/GenerateRuntimeRelations.js.map +1 -0
  92. package/dist/engine/generators/RuntimeGenerator.d.ts +16 -0
  93. package/dist/engine/generators/RuntimeGenerator.d.ts.map +1 -0
  94. package/dist/engine/generators/RuntimeGenerator.js +16 -0
  95. package/dist/engine/generators/RuntimeGenerator.js.map +1 -0
  96. package/dist/engine/generators/TypeFilterTypes.d.ts +2 -0
  97. package/dist/engine/generators/TypeFilterTypes.d.ts.map +1 -0
  98. package/dist/engine/generators/TypeFilterTypes.js +220 -0
  99. package/dist/engine/generators/TypeFilterTypes.js.map +1 -0
  100. package/dist/engine/generators/TypeGenerator.d.ts +16 -0
  101. package/dist/engine/generators/TypeGenerator.d.ts.map +1 -0
  102. package/dist/engine/generators/TypeGenerator.js +493 -0
  103. package/dist/engine/generators/TypeGenerator.js.map +1 -0
  104. package/dist/engine/generators/helpers.d.ts +13 -0
  105. package/dist/engine/generators/helpers.d.ts.map +1 -0
  106. package/dist/engine/generators/helpers.js +316 -0
  107. package/dist/engine/generators/helpers.js.map +1 -0
  108. package/dist/engine/index.d.ts +3 -3
  109. package/dist/engine/index.d.ts.map +1 -1
  110. package/dist/engine/index.js +3 -9
  111. package/dist/engine/index.js.map +1 -1
  112. package/dist/errors/index.d.ts +3 -0
  113. package/dist/errors/index.d.ts.map +1 -1
  114. package/dist/errors/index.js +25 -32
  115. package/dist/errors/index.js.map +1 -1
  116. package/dist/index.d.ts +4 -5
  117. package/dist/index.d.ts.map +1 -1
  118. package/dist/index.js +10 -30
  119. package/dist/index.js.map +1 -1
  120. package/package.json +6 -7
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.
@@ -489,9 +577,6 @@ import { defineConfig } from 'lenz/config'
489
577
 
490
578
  export default defineConfig({
491
579
  schema: 'schema.graphql',
492
- migrations: {
493
- path: 'migrations',
494
- },
495
580
  datasource: {
496
581
  url: process.env.MONGODB_URI,
497
582
  database: process.env.MONGODB_DATABASE || 'myapp',
@@ -499,11 +584,9 @@ export default defineConfig({
499
584
  generate: {
500
585
  client: {
501
586
  output: '../generated/lenz/client',
502
- generator: 'lenz-client-js',
503
587
  },
504
588
  },
505
589
  log: ['query', 'info', 'warn', 'error'] as const,
506
- autoCreateCollections: true,
507
590
  })
508
591
  ```
509
592
 
@@ -524,11 +607,9 @@ export default {
524
607
  generate: {
525
608
  client: {
526
609
  output: '../generated/lenz/client',
527
- generator: 'lenz-client-js',
528
610
  },
529
611
  },
530
612
  log: ['query', 'info', 'warn', 'error'],
531
- autoCreateCollections: true,
532
613
  };
533
614
  ```
534
615
 
@@ -543,7 +624,7 @@ Lenz extends GraphQL with custom directives:
543
624
  - `@unique` - Creates a unique index
544
625
  - `@index` - Creates a regular index
545
626
  - `@default(value: "...")` - Sets default value
546
- - `@relation(field: "...", strategy: "populate|lookup", index: true|false)` - Defines relation with loading strategy and index control
627
+ - `@relation(field: "...", strategy: "populate|lookup", index: true|false, onDelete: "NoAction|Cascade|SetNull")` - Defines relation with loading strategy, index control, and cascade delete behavior (default: `NoAction`)
547
628
  - `@createdAt` - Auto-sets creation timestamp
548
629
  - `@updatedAt` - Auto-updates timestamp
549
630
  - `@embedded` - Marks a type as embedded document
@@ -762,6 +843,36 @@ type Category @model {
762
843
  }
763
844
  ```
764
845
 
846
+ ### Cascade Delete Behavior (`onDelete`)
847
+
848
+ Lenz supports cascade delete operations on relations. By default, **no cascade is performed** (`onDelete: "NoAction"`) for performance and safety. You must explicitly opt in.
849
+
850
+ | Value | Behavior |
851
+ |-------|----------|
852
+ | `NoAction` (default) | No cascade. Deleted document's related references become orphaned. |
853
+ | `Cascade` | When a document is deleted, all related documents are also deleted. |
854
+ | `SetNull` | When a document is deleted, foreign key fields in related documents are set to `null` (only for nullable FK fields). |
855
+
856
+ **Important:** Cascade operations negatively impact write performance because each delete triggers additional queries. Use only when necessary.
857
+
858
+ Examples:
859
+
860
+ ```graphql
861
+ type Author @model {
862
+ id: ID! @id
863
+ posts: [Post!]! @relation(field: "postIds", onDelete: "Cascade") # Deletes all posts when author is deleted
864
+ postIds: [ID!]!
865
+ }
866
+
867
+ type Profile @model {
868
+ id: ID! @id
869
+ user: User @relation(field: "userId", onDelete: "SetNull") # Sets userId to null when user is deleted
870
+ userId: ID
871
+ }
872
+ ```
873
+
874
+ **Note:** `onDelete: "SetNull"` is only supported on nullable foreign key fields (optional `ID` fields, not `ID!`). Using it on required fields will cause a validation error.
875
+
765
876
  ### Automatic Indexing
766
877
 
767
878
  Lenz automatically creates indexes for foreign key fields when `index: true` (default). You can disable this:
@@ -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;AAapC,eAAO,MAAM,eAAe,SAyFxB,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,94 +1,78 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.generateCommand = void 0;
40
- const commander_1 = require("commander");
41
- const LenzEngine_1 = require("../../engine/LenzEngine");
42
- const fs_1 = require("fs");
43
- const path_1 = require("path");
44
- const chalk_1 = __importDefault(require("chalk"));
45
- exports.generateCommand = new commander_1.Command('generate')
1
+ import { Command } from 'commander';
2
+ import { LenzEngine } from '../../engine/LenzEngine.js';
3
+ import { existsSync, promises as fs } from 'fs';
4
+ import { resolve, dirname } from 'path';
5
+ import chalk from 'chalk';
6
+ import * as ts from 'typescript';
7
+ import { ConfigurationError } from '../../errors/index.js';
8
+ export const generateCommand = new Command('generate')
46
9
  .description('Generate Lenz client from GraphQL schema')
47
10
  .option('-c, --config <path>', 'Path to lenz config file', 'lenz/lenz.config.ts')
48
11
  .option('-s, --schema <path>', 'Path to GraphQL schema file')
49
12
  .option('-o, --output <path>', 'Output directory for generated client')
50
13
  .option('-n, --name <name>', 'Name of the generated client', 'LenzClient')
51
14
  .action(async (options) => {
52
- console.log(chalk_1.default.blue('🚀 Generating Lenz client...'));
15
+ console.log(chalk.blue('🚀 Generating Lenz client...'));
53
16
  try {
54
17
  let config = {};
55
18
  // Автоматически определяем конфиг по типу проекта, если используется значение по умолчанию
56
19
  let configFile = options.config;
57
20
  if (configFile === 'lenz/lenz.config.ts') {
58
- const tsConfigPath = (0, path_1.resolve)(process.cwd(), 'lenz/lenz.config.ts');
59
- const jsConfigPath = (0, path_1.resolve)(process.cwd(), 'lenz/lenz.config.js');
60
- if (!(0, fs_1.existsSync)(tsConfigPath) && (0, fs_1.existsSync)(jsConfigPath)) {
21
+ const tsConfigPath = resolve(process.cwd(), 'lenz/lenz.config.ts');
22
+ const jsConfigPath = resolve(process.cwd(), 'lenz/lenz.config.js');
23
+ if (!existsSync(tsConfigPath) && existsSync(jsConfigPath)) {
61
24
  configFile = 'lenz/lenz.config.js';
62
- console.log(chalk_1.default.gray(`📦 Using JavaScript config: ${configFile}`));
25
+ console.log(chalk.gray(`📦 Using JavaScript config: ${configFile}`));
63
26
  }
64
27
  }
65
- const configPath = (0, path_1.resolve)(process.cwd(), configFile);
28
+ const configPath = resolve(process.cwd(), configFile);
66
29
  // Загружаем конфигурацию
67
- if ((0, fs_1.existsSync)(configPath)) {
30
+ if (existsSync(configPath)) {
68
31
  if (configPath.endsWith('.ts')) {
69
- // Для TypeScript конфига
70
- const configModule = await Promise.resolve(`${configPath}`).then(s => __importStar(require(s)));
71
- config = configModule.default || configModule;
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
+ }
72
58
  }
73
59
  else if (configPath.endsWith('.js') || configPath.endsWith('.mjs')) {
74
60
  // Для JavaScript конфига (только ESM)
75
- const configModule = await Promise.resolve(`${configPath}`).then(s => __importStar(require(s)));
61
+ const configModule = await import(configPath);
76
62
  config = configModule.default || configModule;
77
63
  }
78
64
  }
79
65
  else {
80
- console.log(chalk_1.default.yellow('⚠️ Config file not found, using defaults'));
66
+ console.log(chalk.yellow('⚠️ Config file not found, using defaults'));
81
67
  }
82
68
  // Определяем пути
83
- const schemaPath = (0, path_1.resolve)((0, path_1.dirname)(configPath), options.schema || config.schema || 'schema.graphql');
84
- if (!(0, fs_1.existsSync)(schemaPath)) {
85
- console.log(chalk_1.default.red(`❌ Schema file not found: ${schemaPath}`));
86
- console.log(chalk_1.default.yellow('💡 Try running: lenz init'));
87
- process.exit(1);
69
+ const schemaPath = resolve(dirname(configPath), options.schema || config.schema || 'schema.graphql');
70
+ if (!existsSync(schemaPath)) {
71
+ throw new ConfigurationError(`Schema file not found: ${schemaPath}. Try running: lenz init`, { schemaPath });
88
72
  }
89
- const outputPath = (0, path_1.resolve)((0, path_1.dirname)(configPath), options.output || config.generate?.client?.output || '../generated/lenz/client');
73
+ const outputPath = resolve(dirname(configPath), options.output || config.generate?.client?.output || '../generated/lenz/client');
90
74
  // Создаем движок и генерируем
91
- const engine = new LenzEngine_1.LenzEngine({
75
+ const engine = new LenzEngine({
92
76
  schemaPath,
93
77
  outputPath,
94
78
  clientName: options.name
@@ -97,24 +81,27 @@ exports.generateCommand = new commander_1.Command('generate')
97
81
  // Отображаем информацию
98
82
  const schemaInfo = engine.getSchemaInfo();
99
83
  if (schemaInfo) {
100
- console.log(chalk_1.default.green('✅ Generation complete!'));
101
- console.log(chalk_1.default.gray('================================'));
102
- console.log(chalk_1.default.cyan('📊 Generated:'));
103
- console.log(chalk_1.default.white(` • ${schemaInfo.modelCount} models`));
104
- console.log(chalk_1.default.white(` • ${schemaInfo.enumCount} enums`));
105
- console.log(chalk_1.default.white(` • ${schemaInfo.relationCount} relations`));
106
- console.log(chalk_1.default.gray('================================\n'));
107
- console.log(chalk_1.default.yellow('🚀 Next steps:'));
108
- console.log(chalk_1.default.white(` 1. Import client: ${chalk_1.default.cyan(`import { LenzClient } from '../generated/lenz/client'`)}`));
109
- console.log(chalk_1.default.white(` 2. Create instance: ${chalk_1.default.cyan(`const lenz = new LenzClient({ url: 'mongodb://...' })`)}`));
110
- console.log(chalk_1.default.white(` 3. Connect: ${chalk_1.default.cyan(`await lenz.$connect()`)}`));
111
- console.log(chalk_1.default.white(` 4. Use models: ${chalk_1.default.cyan(`await lenz.user.findMany()`)}\n`));
84
+ console.log(chalk.green('✅ Generation complete!'));
85
+ console.log(chalk.gray('================================'));
86
+ console.log(chalk.cyan('📊 Generated:'));
87
+ console.log(chalk.white(` • ${schemaInfo.modelCount} models`));
88
+ console.log(chalk.white(` • ${schemaInfo.enumCount} enums`));
89
+ console.log(chalk.white(` • ${schemaInfo.relationCount} relations`));
90
+ console.log(chalk.gray('================================\n'));
91
+ console.log(chalk.yellow('🚀 Next steps:'));
92
+ console.log(chalk.white(` 1. Import client: ${chalk.cyan(`import { LenzClient } from '../generated/lenz/client'`)}`));
93
+ console.log(chalk.white(` 2. Create instance: ${chalk.cyan(`const lenz = new LenzClient({ url: 'mongodb://...' })`)}`));
94
+ console.log(chalk.white(` 3. Connect: ${chalk.cyan(`await lenz.$connect()`)}`));
95
+ console.log(chalk.white(` 4. Use models: ${chalk.cyan(`await lenz.user.findMany()`)}\n`));
112
96
  }
113
97
  }
114
98
  catch (error) {
115
- console.log(chalk_1.default.red('❌ Generation failed:'));
116
- console.log(chalk_1.default.red(error instanceof Error ? error.message : String(error)));
117
- process.exit(1);
99
+ console.log(chalk.red('❌ Generation failed:'));
100
+ console.log(chalk.red(error instanceof Error ? error.message : String(error)));
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;
118
105
  }
119
106
  });
120
107
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
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;AAmFpC,eAAO,MAAM,WAAW,SA4EpB,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"}
@@ -1,13 +1,7 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.initCommand = void 0;
7
- const commander_1 = require("commander");
8
- const fs_1 = require("fs");
9
- const chalk_1 = __importDefault(require("chalk"));
10
- const inquirer_1 = __importDefault(require("inquirer"));
1
+ import { Command } from 'commander';
2
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
3
+ import chalk from 'chalk';
4
+ import inquirer from 'inquirer';
11
5
  const DEFAULT_SCHEMA = `# Welcome to Lenz!
12
6
  # This is your GraphQL schema file.
13
7
  # Define your models here using GraphQL SDL syntax.
@@ -55,7 +49,6 @@ export default defineConfig({
55
49
  },
56
50
  },
57
51
  log: ['query', 'info', 'warn', 'error'] as const,
58
- autoCreateCollections: true,
59
52
  })`;
60
53
  const DEFAULT_CONFIG_JS = `import 'dotenv/config'
61
54
  import { defineConfig } from '@bairock/lenz'
@@ -71,7 +64,6 @@ export default defineConfig({
71
64
  },
72
65
  },
73
66
  log: ['query', 'info', 'warn', 'error'],
74
- autoCreateCollections: true,
75
67
  });`;
76
68
  const EXAMPLE_ENV = `# MongoDB connection string (include database name in URL)
77
69
  MONGODB_URI=mongodb://localhost:27017/myapp
@@ -81,12 +73,12 @@ LOG_LEVEL=info
81
73
 
82
74
  # Enable query logging
83
75
  LOG_QUERIES=true`;
84
- exports.initCommand = new commander_1.Command('init')
76
+ export const initCommand = new Command('init')
85
77
  .description('Initialize a new Lenz project')
86
78
  .option('--skip-prompts', 'Skip interactive prompts')
87
79
  .action(async (options) => {
88
- console.log(chalk_1.default.blue('🚀 Initializing Lenz project...\n'));
89
- const answers = options.skipPrompts ? {} : await inquirer_1.default.prompt([
80
+ console.log(chalk.blue('🚀 Initializing Lenz project...\n'));
81
+ const answers = options.skipPrompts ? {} : await inquirer.prompt([
90
82
  {
91
83
  type: 'input',
92
84
  name: 'url',
@@ -103,16 +95,16 @@ exports.initCommand = new commander_1.Command('init')
103
95
  // Создаем директории
104
96
  const dirs = ['lenz', 'generated'];
105
97
  for (const dir of dirs) {
106
- if (!(0, fs_1.existsSync)(dir)) {
107
- (0, fs_1.mkdirSync)(dir, { recursive: true });
108
- console.log(chalk_1.default.green(`📁 Created directory: ./${dir}`));
98
+ if (!existsSync(dir)) {
99
+ mkdirSync(dir, { recursive: true });
100
+ console.log(chalk.green(`📁 Created directory: ./${dir}`));
109
101
  }
110
102
  }
111
103
  // Определяем тип проекта (TypeScript или JavaScript)
112
- const isTypeScriptProject = (0, fs_1.existsSync)('tsconfig.json');
104
+ const isTypeScriptProject = existsSync('tsconfig.json');
113
105
  const configExtension = isTypeScriptProject ? 'ts' : 'js';
114
106
  const configTemplate = isTypeScriptProject ? DEFAULT_CONFIG_TS : DEFAULT_CONFIG_JS;
115
- console.log(chalk_1.default.gray(`📦 Detected ${isTypeScriptProject ? 'TypeScript' : 'JavaScript (ESM)'} project`));
107
+ console.log(chalk.gray(`📦 Detected ${isTypeScriptProject ? 'TypeScript' : 'JavaScript (ESM)'} project`));
116
108
  // Создаем файлы
117
109
  const files = [
118
110
  {
@@ -137,19 +129,19 @@ generated/
137
129
  }
138
130
  ];
139
131
  for (const file of files) {
140
- if (!(0, fs_1.existsSync)(file.path)) {
141
- (0, fs_1.writeFileSync)(file.path, file.content, 'utf-8');
142
- console.log(chalk_1.default.green(`📄 Created file: ${file.path}`));
132
+ if (!existsSync(file.path)) {
133
+ writeFileSync(file.path, file.content, 'utf-8');
134
+ console.log(chalk.green(`📄 Created file: ${file.path}`));
143
135
  }
144
136
  else {
145
- console.log(chalk_1.default.yellow(`⚠️ File already exists: ${file.path}`));
137
+ console.log(chalk.yellow(`⚠️ File already exists: ${file.path}`));
146
138
  }
147
139
  }
148
- console.log(chalk_1.default.green('\n✅ Lenz project initialized!'));
149
- console.log(chalk_1.default.gray('\nNext steps:'));
150
- console.log(chalk_1.default.white(' 1. Edit your schema: ') + chalk_1.default.cyan('lenz/schema.graphql'));
151
- console.log(chalk_1.default.white(' 2. Configure database: ') + chalk_1.default.cyan(`lenz/lenz.config.${configExtension}`));
152
- console.log(chalk_1.default.white(' 3. Generate client: ') + chalk_1.default.cyan('npx lenz generate'));
153
- console.log(chalk_1.default.white(' 4. Start coding! 🚀\n'));
140
+ console.log(chalk.green('\n✅ Lenz project initialized!'));
141
+ console.log(chalk.gray('\nNext steps:'));
142
+ console.log(chalk.white(' 1. Edit your schema: ') + chalk.cyan('lenz/schema.graphql'));
143
+ console.log(chalk.white(' 2. Configure database: ') + chalk.cyan(`lenz/lenz.config.${configExtension}`));
144
+ console.log(chalk.white(' 3. Generate client: ') + chalk.cyan('npx lenz generate'));
145
+ console.log(chalk.white(' 4. Start coding! 🚀\n'));
154
146
  });
155
147
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
@@ -1,32 +1,26 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.studioCommand = void 0;
7
- const commander_1 = require("commander");
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const boxen_1 = __importDefault(require("boxen"));
10
- const fs_1 = require("fs");
11
- exports.studioCommand = new commander_1.Command('studio')
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import boxen from 'boxen';
4
+ import { existsSync } from 'fs';
5
+ export const studioCommand = new Command('studio')
12
6
  .description('Open Lenz Studio - visual database management')
13
7
  .option('-p, --port <port>', 'Port for Lenz Studio', '5555')
14
8
  .option('--host <host>', 'Host for Lenz Studio', 'localhost')
15
9
  .action(async (options) => {
16
- console.log(chalk_1.default.blue((0, boxen_1.default)('🚀 Lenz Studio', { padding: 1, borderStyle: 'round' })));
10
+ console.log(chalk.blue(boxen('🚀 Lenz Studio', { padding: 1, borderStyle: 'round' })));
17
11
  // Проверяем наличие схемы
18
12
  const schemaPath = 'lenz/schema.graphql';
19
- if (!(0, fs_1.existsSync)(schemaPath)) {
20
- console.log(chalk_1.default.red('❌ Schema file not found'));
21
- console.log(chalk_1.default.yellow('💡 Run: lenz init'));
13
+ if (!existsSync(schemaPath)) {
14
+ console.log(chalk.red('❌ Schema file not found'));
15
+ console.log(chalk.yellow('💡 Run: lenz init'));
22
16
  process.exit(1);
23
17
  }
24
- console.log(chalk_1.default.green('📡 Starting Lenz Studio...'));
25
- console.log(chalk_1.default.gray(`🌐 Available at: http://${options.host}:${options.port}`));
18
+ console.log(chalk.green('📡 Starting Lenz Studio...'));
19
+ console.log(chalk.gray(`🌐 Available at: http://${options.host}:${options.port}`));
26
20
  // В реальности здесь будет запуск веб-сервера с интерфейсом
27
- console.log(chalk_1.default.yellow('⚠️ Studio is under development'));
28
- console.log(chalk_1.default.gray('\nIn the meantime, you can use:'));
29
- console.log(chalk_1.default.white(' • MongoDB Compass'));
30
- console.log(chalk_1.default.white(' • Generated TypeScript client\n'));
21
+ console.log(chalk.yellow('⚠️ Studio is under development'));
22
+ console.log(chalk.gray('\nIn the meantime, you can use:'));
23
+ console.log(chalk.white(' • MongoDB Compass'));
24
+ console.log(chalk.white(' • Generated TypeScript client\n'));
31
25
  });
32
26
  //# sourceMappingURL=studio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../../src/cli/commands/studio.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,kDAA0B;AAC1B,kDAA0B;AAC1B,2BAAgC;AAEnB,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC3D,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,WAAW,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,IAAA,eAAK,EAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvF,0BAA0B;IAC1B,MAAM,UAAU,GAAG,qBAAqB,CAAC;IACzC,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnF,4DAA4D;IAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../../../src/cli/commands/studio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEhC,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,CAAC;KAC3D,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,WAAW,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvF,0BAA0B;IAC1B,MAAM,UAAU,GAAG,qBAAqB,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,2BAA2B,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnF,4DAA4D;IAC5D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC"}
package/dist/cli/index.js CHANGED
@@ -1,29 +1,22 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- var __importDefault = (this && this.__importDefault) || function (mod) {
4
- return (mod && mod.__esModule) ? mod : { "default": mod };
5
- };
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- const commander_1 = require("commander");
8
- const generate_1 = require("./commands/generate");
9
- const init_1 = require("./commands/init");
10
- const studio_1 = require("./commands/studio");
11
- const chalk_1 = __importDefault(require("chalk"));
12
- const figlet_1 = __importDefault(require("figlet"));
13
- const program = new commander_1.Command();
2
+ import { Command } from 'commander';
3
+ import { generateCommand } from './commands/generate.js';
4
+ import { initCommand } from './commands/init.js';
5
+ import chalk from 'chalk';
6
+ import figlet from 'figlet';
7
+ const program = new Command();
14
8
  program
15
9
  .name('lenz')
16
10
  .description('Lenz CLI - GraphQL-based ORM for MongoDB')
17
11
  .version('1.0.0')
18
12
  .configureOutput({
19
- outputError: (str, write) => write(chalk_1.default.red(str))
13
+ outputError: (str, write) => write(chalk.red(str))
20
14
  });
21
- program.addCommand(init_1.initCommand);
22
- program.addCommand(generate_1.generateCommand);
23
- program.addCommand(studio_1.studioCommand);
15
+ program.addCommand(initCommand);
16
+ program.addCommand(generateCommand);
24
17
  if (process.argv.length === 2) {
25
- console.log(chalk_1.default.cyan(figlet_1.default.textSync('Lenz', { horizontalLayout: 'full' })));
26
- console.log(chalk_1.default.gray('GraphQL-based ORM for MongoDB\n'));
18
+ console.log(chalk.cyan(figlet.textSync('Lenz', { horizontalLayout: 'full' })));
19
+ console.log(chalk.gray('GraphQL-based ORM for MongoDB\n'));
27
20
  program.outputHelp();
28
21
  }
29
22
  else {