gherkin-ai 1.3.0 → 1.3.2
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/dist/core/stack-detector.d.ts.map +1 -1
- package/dist/core/stack-detector.js +174 -57
- package/dist/core/stack-detector.js.map +1 -1
- package/dist/utils/file-system.d.ts +2 -0
- package/dist/utils/file-system.d.ts.map +1 -1
- package/dist/utils/file-system.js +12 -0
- package/dist/utils/file-system.js.map +1 -1
- package/package.json +12 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-detector.d.ts","sourceRoot":"","sources":["../../src/core/stack-detector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stack-detector.d.ts","sourceRoot":"","sources":["../../src/core/stack-detector.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAiB,MAAM,UAAU,CAAC;AAE1D,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,MAAsB,GAAG,eAAe,CAmNpF"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/* ==========================================================================
|
|
3
|
-
gherkin-ai-cli - Stack & Architecture Auto-Detector
|
|
3
|
+
gherkin-ai-cli - Multi-Language Stack & Architecture Auto-Detector
|
|
4
|
+
Supports: PHP/Laravel, Ruby/Rails, C#/.NET, Java/Spring, Python/Django/FastAPI,
|
|
5
|
+
Go, Node/Nest/Express, Angular, Ionic, React, Vue, Svelte, Flutter.
|
|
4
6
|
========================================================================== */
|
|
5
7
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
8
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -19,84 +21,196 @@ function detectExistingStack(rootDir = process.cwd()) {
|
|
|
19
21
|
rules: { ...config_1.defaultConfig.rules },
|
|
20
22
|
outputDir: './src'
|
|
21
23
|
};
|
|
22
|
-
const
|
|
24
|
+
const gemfilePath = path_1.default.join(rootDir, 'Gemfile');
|
|
25
|
+
const composerJsonPath = path_1.default.join(rootDir, 'composer.json');
|
|
26
|
+
const artisanPath = path_1.default.join(rootDir, 'artisan');
|
|
27
|
+
const goModPath = path_1.default.join(rootDir, 'go.mod');
|
|
23
28
|
const pyProjectPath = path_1.default.join(rootDir, 'pyproject.toml');
|
|
24
29
|
const reqTxtPath = path_1.default.join(rootDir, 'requirements.txt');
|
|
30
|
+
const managePyPath = path_1.default.join(rootDir, 'manage.py');
|
|
25
31
|
const pomXmlPath = path_1.default.join(rootDir, 'pom.xml');
|
|
26
|
-
|
|
27
|
-
|
|
32
|
+
const buildGradlePath = path_1.default.join(rootDir, 'build.gradle');
|
|
33
|
+
const angularJsonPath = path_1.default.join(rootDir, 'angular.json');
|
|
34
|
+
const pubspecPath = path_1.default.join(rootDir, 'pubspec.yaml');
|
|
35
|
+
const packageJsonPath = path_1.default.join(rootDir, 'package.json');
|
|
36
|
+
// 1. Ruby on Rails Stack Detection
|
|
37
|
+
if ((0, file_system_1.fileExistsSync)(gemfilePath)) {
|
|
38
|
+
detected.stack.language = 'ruby';
|
|
39
|
+
detected.stack.framework = 'rails';
|
|
40
|
+
detected.stack.orm = 'active-record';
|
|
41
|
+
detected.stack.database = 'postgresql';
|
|
42
|
+
detected.stack.validation = 'active-model-validations';
|
|
43
|
+
detected.stack.testing = 'rspec';
|
|
44
|
+
detected.architecture = 'monolith';
|
|
45
|
+
detected.outputDir = './app';
|
|
46
|
+
try {
|
|
47
|
+
const gemContent = (0, file_system_1.readFileSync)(gemfilePath);
|
|
48
|
+
if (gemContent.includes('rspec-rails'))
|
|
49
|
+
detected.stack.testing = 'rspec';
|
|
50
|
+
else
|
|
51
|
+
detected.stack.testing = 'minitest';
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Ignore
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// 2. C# / .NET / ASP.NET Core Stack Detection
|
|
58
|
+
else if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'Program.cs')) || (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'appsettings.json'))) {
|
|
59
|
+
detected.stack.language = 'csharp';
|
|
60
|
+
detected.stack.framework = 'dotnet-aspnetcore';
|
|
61
|
+
detected.stack.orm = 'entity-framework-core';
|
|
62
|
+
detected.stack.database = 'sql-server';
|
|
63
|
+
detected.stack.validation = 'fluent-validation';
|
|
64
|
+
detected.stack.testing = 'xunit';
|
|
65
|
+
}
|
|
66
|
+
// 3. PHP / Laravel Stack Detection
|
|
67
|
+
else if ((0, file_system_1.fileExistsSync)(artisanPath) || (0, file_system_1.fileExistsSync)(composerJsonPath)) {
|
|
68
|
+
detected.stack.language = 'php';
|
|
69
|
+
detected.stack.framework = 'laravel';
|
|
70
|
+
detected.stack.orm = 'eloquent';
|
|
71
|
+
detected.stack.database = 'postgresql';
|
|
72
|
+
detected.stack.validation = 'laravel-validation';
|
|
73
|
+
detected.stack.auth = 'laravel-sanctum';
|
|
74
|
+
detected.stack.testing = 'phpunit';
|
|
75
|
+
detected.architecture = 'monolith';
|
|
76
|
+
detected.outputDir = './app';
|
|
77
|
+
if ((0, file_system_1.fileExistsSync)(composerJsonPath)) {
|
|
78
|
+
try {
|
|
79
|
+
const raw = (0, file_system_1.readFileSync)(composerJsonPath);
|
|
80
|
+
const composer = JSON.parse(raw);
|
|
81
|
+
if (composer.name)
|
|
82
|
+
detected.projectName = composer.name.split('/')[1] || composer.name;
|
|
83
|
+
const reqs = { ...(composer.require || {}), ...(composer['require-dev'] || {}) };
|
|
84
|
+
if (reqs['pestphp/pest'])
|
|
85
|
+
detected.stack.testing = 'pest';
|
|
86
|
+
if (reqs['symfony/symfony']) {
|
|
87
|
+
detected.stack.framework = 'symfony';
|
|
88
|
+
detected.stack.orm = 'doctrine';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// Ignore
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// 4. Flutter / Dart Mobile Detection
|
|
97
|
+
else if ((0, file_system_1.fileExistsSync)(pubspecPath)) {
|
|
98
|
+
detected.stack.language = 'dart';
|
|
99
|
+
detected.stack.framework = 'flutter';
|
|
100
|
+
detected.stack.orm = 'sqflite';
|
|
101
|
+
detected.stack.database = 'sqlite';
|
|
102
|
+
detected.stack.validation = 'form-validation';
|
|
103
|
+
detected.stack.testing = 'flutter_test';
|
|
104
|
+
detected.outputDir = './lib';
|
|
105
|
+
}
|
|
106
|
+
// 5. Python Stack Detection (Django / FastAPI / Flask)
|
|
107
|
+
else if ((0, file_system_1.fileExistsSync)(managePyPath) || (0, file_system_1.fileExistsSync)(pyProjectPath) || (0, file_system_1.fileExistsSync)(reqTxtPath)) {
|
|
108
|
+
detected.stack.language = 'python';
|
|
109
|
+
detected.stack.testing = 'pytest';
|
|
110
|
+
detected.stack.database = 'postgresql';
|
|
111
|
+
if ((0, file_system_1.fileExistsSync)(managePyPath)) {
|
|
112
|
+
detected.stack.framework = 'django';
|
|
113
|
+
detected.stack.orm = 'django-orm';
|
|
114
|
+
detected.stack.validation = 'django-forms';
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
detected.stack.framework = 'fastapi';
|
|
118
|
+
detected.stack.orm = 'sqlalchemy';
|
|
119
|
+
detected.stack.validation = 'pydantic';
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// 6. Go Stack Detection
|
|
123
|
+
else if ((0, file_system_1.fileExistsSync)(goModPath)) {
|
|
124
|
+
detected.stack.language = 'go';
|
|
125
|
+
detected.stack.framework = 'gin';
|
|
126
|
+
detected.stack.orm = 'gorm';
|
|
127
|
+
detected.stack.database = 'postgresql';
|
|
128
|
+
detected.stack.validation = 'validator-v10';
|
|
129
|
+
detected.stack.testing = 'testing';
|
|
130
|
+
}
|
|
131
|
+
// 7. Java / Kotlin Stack Detection
|
|
132
|
+
else if ((0, file_system_1.fileExistsSync)(pomXmlPath) || (0, file_system_1.fileExistsSync)(buildGradlePath)) {
|
|
133
|
+
detected.stack.language = 'java';
|
|
134
|
+
detected.stack.framework = 'spring-boot';
|
|
135
|
+
detected.stack.orm = 'hibernate';
|
|
136
|
+
detected.stack.database = 'postgresql';
|
|
137
|
+
detected.stack.validation = 'jakarta-validation';
|
|
138
|
+
detected.stack.testing = 'junit';
|
|
139
|
+
}
|
|
140
|
+
// 8. Node.js / Frontend / Ionic / Angular / React / Vue Stack Detection
|
|
141
|
+
else if ((0, file_system_1.fileExistsSync)(packageJsonPath)) {
|
|
28
142
|
try {
|
|
29
143
|
const raw = (0, file_system_1.readFileSync)(packageJsonPath);
|
|
30
144
|
const pkg = JSON.parse(raw);
|
|
31
145
|
const allDeps = { ...(pkg.dependencies || {}), ...(pkg.devDependencies || {}) };
|
|
32
146
|
if (pkg.name)
|
|
33
147
|
detected.projectName = pkg.name;
|
|
34
|
-
// Language
|
|
35
|
-
if (allDeps['typescript'] || (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'tsconfig.json'))) {
|
|
148
|
+
// Language Detection (TypeScript if angular, tsconfig or typescript dep exists)
|
|
149
|
+
if (allDeps['typescript'] || (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'tsconfig.json')) || (0, file_system_1.fileExistsSync)(angularJsonPath) || allDeps['@angular/core']) {
|
|
36
150
|
detected.stack.language = 'typescript';
|
|
37
151
|
}
|
|
38
152
|
else {
|
|
39
153
|
detected.stack.language = 'javascript';
|
|
40
154
|
}
|
|
41
|
-
//
|
|
42
|
-
if (allDeps['@
|
|
155
|
+
// Angular / Ionic Frontend Detection
|
|
156
|
+
if ((0, file_system_1.fileExistsSync)(angularJsonPath) || allDeps['@angular/core']) {
|
|
157
|
+
if (allDeps['@ionic/angular']) {
|
|
158
|
+
detected.stack.framework = 'ionic-angular';
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
detected.stack.framework = 'angular';
|
|
162
|
+
}
|
|
163
|
+
detected.stack.orm = 'http-client-rxjs';
|
|
164
|
+
detected.stack.database = 'localstorage-indexeddb';
|
|
165
|
+
detected.stack.validation = 'angular-reactive-forms';
|
|
166
|
+
detected.stack.testing = 'jasmine-karma';
|
|
167
|
+
detected.architecture = 'modular';
|
|
168
|
+
detected.outputDir = './src/app';
|
|
169
|
+
}
|
|
170
|
+
// React Native Detection
|
|
171
|
+
else if (allDeps['react-native']) {
|
|
172
|
+
detected.stack.framework = 'react-native';
|
|
173
|
+
detected.stack.orm = 'async-storage';
|
|
174
|
+
detected.stack.database = 'sqlite-capacitor';
|
|
175
|
+
detected.stack.validation = 'zod';
|
|
176
|
+
detected.stack.testing = 'jest';
|
|
177
|
+
detected.architecture = 'modular';
|
|
178
|
+
}
|
|
179
|
+
// React / Next.js Frontend
|
|
180
|
+
else if (allDeps['react'] || allDeps['next']) {
|
|
181
|
+
detected.stack.framework = allDeps['next'] ? 'nextjs' : 'react';
|
|
182
|
+
detected.stack.orm = allDeps['prisma'] ? 'prisma' : 'tanstack-query';
|
|
183
|
+
detected.stack.database = 'postgresql';
|
|
184
|
+
detected.stack.validation = 'zod';
|
|
185
|
+
detected.stack.testing = 'vitest';
|
|
186
|
+
}
|
|
187
|
+
// Vue / Nuxt Frontend
|
|
188
|
+
else if (allDeps['vue'] || allDeps['nuxt']) {
|
|
189
|
+
detected.stack.framework = allDeps['nuxt'] ? 'nuxtjs' : 'vue';
|
|
190
|
+
detected.stack.orm = 'pinia-axios';
|
|
191
|
+
detected.stack.database = 'localstorage';
|
|
192
|
+
detected.stack.validation = 'vee-validate';
|
|
193
|
+
detected.stack.testing = 'vitest';
|
|
194
|
+
}
|
|
195
|
+
// Node.js Backend Frameworks (NestJS, Express, Fastify)
|
|
196
|
+
else if (allDeps['@nestjs/core']) {
|
|
43
197
|
detected.stack.framework = 'nestjs';
|
|
44
|
-
|
|
198
|
+
detected.stack.orm = allDeps['prisma'] ? 'prisma' : 'typeorm';
|
|
199
|
+
detected.stack.validation = 'zod';
|
|
200
|
+
detected.stack.testing = 'jest';
|
|
201
|
+
}
|
|
202
|
+
else if (allDeps['express']) {
|
|
45
203
|
detected.stack.framework = 'express';
|
|
46
|
-
|
|
47
|
-
detected.stack.framework = 'fastify';
|
|
48
|
-
else if (allDeps['next'])
|
|
49
|
-
detected.stack.framework = 'nextjs';
|
|
50
|
-
// ORM / Persistence
|
|
51
|
-
if (allDeps['prisma'] || (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'prisma', 'schema.prisma')))
|
|
52
|
-
detected.stack.orm = 'prisma';
|
|
53
|
-
else if (allDeps['typeorm'])
|
|
54
|
-
detected.stack.orm = 'typeorm';
|
|
55
|
-
else if (allDeps['sequelize'])
|
|
56
|
-
detected.stack.orm = 'sequelize';
|
|
57
|
-
else if (allDeps['mongoose'])
|
|
58
|
-
detected.stack.orm = 'mongoose';
|
|
59
|
-
// Database
|
|
60
|
-
if (allDeps['pg'] || allDeps['postgres'] || allDeps['@prisma/client'])
|
|
61
|
-
detected.stack.database = 'postgresql';
|
|
62
|
-
else if (allDeps['mongodb'] || allDeps['mongoose'])
|
|
63
|
-
detected.stack.database = 'mongodb';
|
|
64
|
-
else if (allDeps['redis'] || allDeps['ioredis'])
|
|
65
|
-
detected.stack.database = 'redis';
|
|
66
|
-
// Validation
|
|
67
|
-
if (allDeps['zod'])
|
|
204
|
+
detected.stack.orm = allDeps['prisma'] ? 'prisma' : 'sequelize';
|
|
68
205
|
detected.stack.validation = 'zod';
|
|
69
|
-
else if (allDeps['class-validator'])
|
|
70
|
-
detected.stack.validation = 'class-validator';
|
|
71
|
-
else if (allDeps['joi'])
|
|
72
|
-
detected.stack.validation = 'joi';
|
|
73
|
-
// Testing
|
|
74
|
-
if (allDeps['jest'])
|
|
75
206
|
detected.stack.testing = 'jest';
|
|
76
|
-
|
|
77
|
-
detected.stack.testing = 'vitest';
|
|
207
|
+
}
|
|
78
208
|
}
|
|
79
209
|
catch {
|
|
80
210
|
// Ignore JSON parse errors
|
|
81
211
|
}
|
|
82
212
|
}
|
|
83
|
-
//
|
|
84
|
-
else if ((0, file_system_1.fileExistsSync)(pyProjectPath) || (0, file_system_1.fileExistsSync)(reqTxtPath)) {
|
|
85
|
-
detected.stack.language = 'python';
|
|
86
|
-
detected.stack.framework = 'fastapi';
|
|
87
|
-
detected.stack.orm = 'sqlalchemy';
|
|
88
|
-
detected.stack.validation = 'pydantic';
|
|
89
|
-
detected.stack.testing = 'pytest';
|
|
90
|
-
}
|
|
91
|
-
// 3. Java Stack Detection
|
|
92
|
-
else if ((0, file_system_1.fileExistsSync)(pomXmlPath)) {
|
|
93
|
-
detected.stack.language = 'java';
|
|
94
|
-
detected.stack.framework = 'spring-boot';
|
|
95
|
-
detected.stack.orm = 'hibernate';
|
|
96
|
-
detected.stack.validation = 'jakarta-validation';
|
|
97
|
-
detected.stack.testing = 'junit';
|
|
98
|
-
}
|
|
99
|
-
// 4. Architecture Style Heuristic Detection
|
|
213
|
+
// 9. Architecture Style Heuristic Detection
|
|
100
214
|
if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'src', 'domain')) && (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'src', 'ports'))) {
|
|
101
215
|
detected.architecture = 'hexagonal';
|
|
102
216
|
}
|
|
@@ -106,7 +220,10 @@ function detectExistingStack(rootDir = process.cwd()) {
|
|
|
106
220
|
else if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'serverless.yml'))) {
|
|
107
221
|
detected.architecture = 'serverless';
|
|
108
222
|
}
|
|
109
|
-
else if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, '
|
|
223
|
+
else if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'app', 'Http', 'Controllers')) || (0, file_system_1.fileExistsSync)(artisanPath)) {
|
|
224
|
+
detected.architecture = 'monolith';
|
|
225
|
+
}
|
|
226
|
+
else if ((0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'src', 'modules')) || (0, file_system_1.fileExistsSync)(path_1.default.join(rootDir, 'src', 'app'))) {
|
|
110
227
|
detected.architecture = 'modular';
|
|
111
228
|
}
|
|
112
229
|
return detected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-detector.js","sourceRoot":"","sources":["../../src/core/stack-detector.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"stack-detector.js","sourceRoot":"","sources":["../../src/core/stack-detector.ts"],"names":[],"mappings":";AAAA;;;;gFAIgF;;;;;AAMhF,kDAmNC;AAvND,gDAAwB;AACxB,sDAAoE;AACpE,qCAA0D;AAE1D,SAAgB,mBAAmB,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE;IACjE,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,kBAAkB;QACzD,WAAW,EAAE,YAAY;QACzB,YAAY,EAAE,WAAW;QACzB,KAAK,EAAE,EAAE,GAAG,sBAAa,CAAC,KAAK,EAAE;QACjC,KAAK,EAAE,EAAE,GAAG,sBAAa,CAAC,KAAK,EAAE;QACjC,SAAS,EAAE,OAAO;KACnB,CAAC;IAEF,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3D,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACvD,MAAM,eAAe,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAE3D,mCAAmC;IACnC,IAAI,IAAA,4BAAc,EAAC,WAAW,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC;QACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,0BAA0B,CAAC;QACvD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACjC,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC;QACnC,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC;QAE7B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAA,0BAAY,EAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC;gBAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;;gBACpE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,UAAU,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;IACH,CAAC;IACD,8CAA8C;SACzC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC;QACpH,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,mBAAmB,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,uBAAuB,CAAC;QAC7C,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,mBAAmB,CAAC;QAChD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,CAAC;IACD,mCAAmC;SAC9B,IAAI,IAAA,4BAAc,EAAC,WAAW,CAAC,IAAI,IAAA,4BAAc,EAAC,gBAAgB,CAAC,EAAE,CAAC;QACzE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC;QAChC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,oBAAoB,CAAC;QACjD,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,iBAAiB,CAAC;QACxC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QACnC,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC;QACnC,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC;QAE7B,IAAI,IAAA,4BAAc,EAAC,gBAAgB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAA,0BAAY,EAAC,gBAAgB,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,QAAQ,CAAC,IAAI;oBAAE,QAAQ,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;gBAEvF,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjF,IAAI,IAAI,CAAC,cAAc,CAAC;oBAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAC1D,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBAC5B,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;oBACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IACD,qCAAqC;SAChC,IAAI,IAAA,4BAAc,EAAC,WAAW,CAAC,EAAE,CAAC;QACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;QACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,iBAAiB,CAAC;QAC9C,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QACxC,QAAQ,CAAC,SAAS,GAAG,OAAO,CAAC;IAC/B,CAAC;IACD,uDAAuD;SAClD,IAAI,IAAA,4BAAc,EAAC,YAAY,CAAC,IAAI,IAAA,4BAAc,EAAC,aAAa,CAAC,IAAI,IAAA,4BAAc,EAAC,UAAU,CAAC,EAAE,CAAC;QACrG,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;QAClC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QAEvC,IAAI,IAAA,4BAAc,EAAC,YAAY,CAAC,EAAE,CAAC;YACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YACpC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;YAClC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;YACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;YAClC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;QACzC,CAAC;IACH,CAAC;IACD,wBAAwB;SACnB,IAAI,IAAA,4BAAc,EAAC,SAAS,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC/B,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,eAAe,CAAC;QAC5C,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;IACrC,CAAC;IACD,mCAAmC;SAC9B,IAAI,IAAA,4BAAc,EAAC,UAAU,CAAC,IAAI,IAAA,4BAAc,EAAC,eAAe,CAAC,EAAE,CAAC;QACvE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC;QACzC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC;QACjC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;QACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,oBAAoB,CAAC;QACjD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACnC,CAAC;IACD,wEAAwE;SACnE,IAAI,IAAA,4BAAc,EAAC,eAAe,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAA,0BAAY,EAAC,eAAe,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;YAEhF,IAAI,GAAG,CAAC,IAAI;gBAAE,QAAQ,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;YAE9C,gFAAgF;YAChF,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChJ,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;YACzC,CAAC;YAED,qCAAqC;YACrC,IAAI,IAAA,4BAAc,EAAC,eAAe,CAAC,IAAI,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBAChE,IAAI,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC9B,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,eAAe,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;gBACvC,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC;gBACxC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,wBAAwB,CAAC;gBACnD,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB,CAAC;gBACrD,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,eAAe,CAAC;gBACzC,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;gBAClC,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC;YACnC,CAAC;YACD,yBAAyB;iBACpB,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC;gBAC1C,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,eAAe,CAAC;gBACrC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,kBAAkB,CAAC;gBAC7C,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;gBAChC,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;YACpC,CAAC;YACD,2BAA2B;iBACtB,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7C,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;gBAChE,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC;gBACrE,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,CAAC;gBACvC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;YACpC,CAAC;YACD,sBAAsB;iBACjB,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC9D,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,aAAa,CAAC;gBACnC,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC;gBACzC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,cAAc,CAAC;gBAC3C,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC;YACpC,CAAC;YACD,wDAAwD;iBACnD,IAAI,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;gBACpC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,CAAC;iBAAM,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,QAAQ,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;gBACrC,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;gBAChE,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBAClC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;YAClC,CAAC;QAEH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;QAC9G,QAAQ,CAAC,YAAY,GAAG,WAAW,CAAC;IACtC,CAAC;SAAM,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACxH,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC;IACjC,CAAC;SAAM,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;QAChE,QAAQ,CAAC,YAAY,GAAG,YAAY,CAAC;IACvC,CAAC;SAAM,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,WAAW,CAAC,EAAE,CAAC;QAC3G,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC;IACrC,CAAC;SAAM,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,IAAA,4BAAc,EAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;QACpH,QAAQ,CAAC,YAAY,GAAG,SAAS,CAAC;IACpC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -2,4 +2,6 @@ export declare function ensureDirSync(dirPath: string): void;
|
|
|
2
2
|
export declare function writeFileSync(filePath: string, content: string): void;
|
|
3
3
|
export declare function readFileSync(filePath: string): string;
|
|
4
4
|
export declare function fileExistsSync(filePath: string): boolean;
|
|
5
|
+
export declare function removeFileSync(filePath: string): void;
|
|
6
|
+
export declare function removeDirSync(dirPath: string): void;
|
|
5
7
|
//# sourceMappingURL=file-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
1
|
+
{"version":3,"file":"file-system.d.ts","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":"AAOA,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAInD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIrE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAIrD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAInD"}
|
|
@@ -10,6 +10,8 @@ exports.ensureDirSync = ensureDirSync;
|
|
|
10
10
|
exports.writeFileSync = writeFileSync;
|
|
11
11
|
exports.readFileSync = readFileSync;
|
|
12
12
|
exports.fileExistsSync = fileExistsSync;
|
|
13
|
+
exports.removeFileSync = removeFileSync;
|
|
14
|
+
exports.removeDirSync = removeDirSync;
|
|
13
15
|
const fs_1 = __importDefault(require("fs"));
|
|
14
16
|
const path_1 = __importDefault(require("path"));
|
|
15
17
|
function ensureDirSync(dirPath) {
|
|
@@ -28,4 +30,14 @@ function readFileSync(filePath) {
|
|
|
28
30
|
function fileExistsSync(filePath) {
|
|
29
31
|
return fs_1.default.existsSync(filePath);
|
|
30
32
|
}
|
|
33
|
+
function removeFileSync(filePath) {
|
|
34
|
+
if (fs_1.default.existsSync(filePath)) {
|
|
35
|
+
fs_1.default.unlinkSync(filePath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function removeDirSync(dirPath) {
|
|
39
|
+
if (fs_1.default.existsSync(dirPath)) {
|
|
40
|
+
fs_1.default.rmSync(dirPath, { recursive: true, force: true });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
31
43
|
//# sourceMappingURL=file-system.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAKhF,sCAIC;AAED,sCAIC;AAED,oCAEC;AAED,wCAEC;
|
|
1
|
+
{"version":3,"file":"file-system.js","sourceRoot":"","sources":["../../src/utils/file-system.ts"],"names":[],"mappings":";AAAA;;gFAEgF;;;;;AAKhF,sCAIC;AAED,sCAIC;AAED,oCAEC;AAED,wCAEC;AAED,wCAIC;AAED,sCAIC;AAjCD,4CAAoB;AACpB,gDAAwB;AAExB,SAAgB,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,YAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB,EAAE,OAAe;IAC7D,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,aAAa,CAAC,GAAG,CAAC,CAAC;IACnB,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,SAAgB,YAAY,CAAC,QAAgB;IAC3C,OAAO,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,cAAc,CAAC,QAAgB;IAC7C,OAAO,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,cAAc,CAAC,QAAgB;IAC7C,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe;IAC3C,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,YAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gherkin-ai",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.2",
|
|
4
4
|
"description": "CLI tool & contract engine translating Gherkin specs into production-grade executable prompts, TypeScript contracts, and seed fixtures for AI Coding Agents.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -33,7 +33,17 @@
|
|
|
33
33
|
"antigravity",
|
|
34
34
|
"ghk",
|
|
35
35
|
"brownfield",
|
|
36
|
-
"detect"
|
|
36
|
+
"detect",
|
|
37
|
+
"laravel",
|
|
38
|
+
"php",
|
|
39
|
+
"ruby",
|
|
40
|
+
"rails",
|
|
41
|
+
"dotnet",
|
|
42
|
+
"csharp",
|
|
43
|
+
"angular",
|
|
44
|
+
"ionic",
|
|
45
|
+
"react-native",
|
|
46
|
+
"flutter"
|
|
37
47
|
],
|
|
38
48
|
"author": "Fenner Eduardo <contact@fennereduardo.com> (https://fennereduardo.com)",
|
|
39
49
|
"license": "MIT",
|