@aroman22/codegraph-vba-darwin-arm64 1.3.5 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +26 -7
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.d.ts +11 -3
- package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/sql-query-extractor.js +19 -5
- package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-extractor.d.ts +575 -55
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +1233 -135
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.d.ts +127 -0
- package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.js +290 -3
- package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts +22 -3
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +137 -15
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/vba-source.d.ts +58 -0
- package/lib/dist/extraction/vba-source.d.ts.map +1 -0
- package/lib/dist/extraction/vba-source.js +137 -0
- package/lib/dist/extraction/vba-source.js.map +1 -0
- package/lib/dist/types.d.ts +2 -2
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +6 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/dist/utils/backtrace-helpers.d.ts +35 -0
- package/lib/dist/utils/backtrace-helpers.d.ts.map +1 -0
- package/lib/dist/utils/backtrace-helpers.js +129 -0
- package/lib/dist/utils/backtrace-helpers.js.map +1 -0
- package/lib/dist/utils/sql-impact-helpers.d.ts +38 -0
- package/lib/dist/utils/sql-impact-helpers.d.ts.map +1 -0
- package/lib/dist/utils/sql-impact-helpers.js +329 -0
- package/lib/dist/utils/sql-impact-helpers.js.map +1 -0
- package/lib/node_modules/.modules.yaml +2 -2
- package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
- package/lib/package.json +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,329 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.traceVbaCallers = traceVbaCallers;
|
|
37
|
+
exports.extractFormBindings = extractFormBindings;
|
|
38
|
+
exports.resolveSqlLineage = resolveSqlLineage;
|
|
39
|
+
exports.runImpactAnalysis = runImpactAnalysis;
|
|
40
|
+
const fs = __importStar(require("fs"));
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
/**
|
|
43
|
+
* Traces references to the target query name inside a VBA module's content.
|
|
44
|
+
* Returns 1-based line numbers where references are found.
|
|
45
|
+
*/
|
|
46
|
+
function traceVbaCallers(content, queryName) {
|
|
47
|
+
const lines = content.split(/\r?\n/);
|
|
48
|
+
const matchedLines = [];
|
|
49
|
+
// Escape query name for regex literal construction
|
|
50
|
+
const escapedQuery = queryName.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
|
|
51
|
+
// Match OpenRecordset("queryName") or OpenRecordset "queryName"
|
|
52
|
+
const openRecordsetRegex = new RegExp(`OpenRecordset\\s*(?:\\(\\s*["']${escapedQuery}["']|\\s+["']${escapedQuery}["'])`, 'i');
|
|
53
|
+
// Match QueryDefs("queryName")
|
|
54
|
+
const queryDefsRegex = new RegExp(`QueryDefs\\s*\\(\\s*["']${escapedQuery}["']`, 'i');
|
|
55
|
+
for (let i = 0; i < lines.length; i++) {
|
|
56
|
+
const line = lines[i];
|
|
57
|
+
if (line !== undefined && (openRecordsetRegex.test(line) || queryDefsRegex.test(line))) {
|
|
58
|
+
matchedLines.push(i + 1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return matchedLines;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parses a VBA form definition (.form.txt/.report.txt) and extracts RecordSource and RowSource bindings.
|
|
65
|
+
*/
|
|
66
|
+
function extractFormBindings(content) {
|
|
67
|
+
const lines = content.split(/\r?\n/);
|
|
68
|
+
let recordSource;
|
|
69
|
+
const rowSources = [];
|
|
70
|
+
const stack = [];
|
|
71
|
+
for (const line of lines) {
|
|
72
|
+
const trimmed = line.trim();
|
|
73
|
+
// Check for start of form controls (e.g., Begin ComboBox, Begin Form)
|
|
74
|
+
const beginMatch = trimmed.match(/^Begin\s+(\w+)/i);
|
|
75
|
+
if (beginMatch && beginMatch[1] !== undefined) {
|
|
76
|
+
stack.push({ type: beginMatch[1] });
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// Check for end of block
|
|
80
|
+
if (trimmed === 'End') {
|
|
81
|
+
stack.pop();
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
// Keep track of current control Name property
|
|
85
|
+
const nameMatch = trimmed.match(/Name\s*=\s*"([^"]+)"/i);
|
|
86
|
+
if (nameMatch && nameMatch[1] !== undefined && stack.length > 0) {
|
|
87
|
+
const current = stack[stack.length - 1];
|
|
88
|
+
if (current !== undefined) {
|
|
89
|
+
current.name = nameMatch[1];
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Extract RecordSource at Form level
|
|
93
|
+
const recordSourceMatch = trimmed.match(/RecordSource\s*=\s*"([^"]+)"/i);
|
|
94
|
+
if (recordSourceMatch && recordSourceMatch[1] !== undefined) {
|
|
95
|
+
recordSource = recordSourceMatch[1];
|
|
96
|
+
}
|
|
97
|
+
// Extract RowSource inside ComboBox/ListBox
|
|
98
|
+
const rowSourceMatch = trimmed.match(/RowSource\s*=\s*"([^"]+)"/i);
|
|
99
|
+
if (rowSourceMatch && rowSourceMatch[1] !== undefined && stack.length > 0) {
|
|
100
|
+
const rawVal = rowSourceMatch[1];
|
|
101
|
+
let target = rawVal;
|
|
102
|
+
// If it is a query (starts with SELECT), extract table/query name from the FROM clause
|
|
103
|
+
if (/select\s+/i.test(rawVal)) {
|
|
104
|
+
const fromMatch = rawVal.match(/from\s+([a-zA-Z0-9_]+)/i);
|
|
105
|
+
if (fromMatch && fromMatch[1] !== undefined) {
|
|
106
|
+
target = fromMatch[1];
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const currentControl = stack[stack.length - 1];
|
|
110
|
+
if (currentControl !== undefined) {
|
|
111
|
+
const controlName = currentControl.name || currentControl.type;
|
|
112
|
+
rowSources.push({ control: controlName, target });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { recordSource, rowSources };
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Resolves table and column aliases from a SQL string to build a column-level lineage.
|
|
120
|
+
*/
|
|
121
|
+
function resolveSqlLineage(sql) {
|
|
122
|
+
const normalized = sql.replace(/\s+/g, ' ');
|
|
123
|
+
const SQL_KEYWORDS = new Set([
|
|
124
|
+
'as', 'on', 'inner', 'left', 'right', 'join', 'where', 'order', 'group', 'by',
|
|
125
|
+
'and', 'or', 'select', 'from', 'using', 'cross', 'outer'
|
|
126
|
+
]);
|
|
127
|
+
const aliasMap = new Map(); // alias lowercased -> table
|
|
128
|
+
const tables = new Set();
|
|
129
|
+
// Extract tables and aliases from FROM and JOIN clauses
|
|
130
|
+
const fromJoinPattern = /(?:from|join)\s+([a-zA-Z0-9_]+)(?:\s+as\s+([a-zA-Z0-9_]+)|\s+([a-zA-Z0-9_]+))?/gi;
|
|
131
|
+
let match;
|
|
132
|
+
while ((match = fromJoinPattern.exec(normalized)) !== null) {
|
|
133
|
+
const table = match[1];
|
|
134
|
+
if (table !== undefined) {
|
|
135
|
+
tables.add(table);
|
|
136
|
+
const alias = match[2] || match[3];
|
|
137
|
+
if (alias && !SQL_KEYWORDS.has(alias.toLowerCase())) {
|
|
138
|
+
aliasMap.set(alias.toLowerCase(), table);
|
|
139
|
+
}
|
|
140
|
+
// A table name can also qualify itself, e.g., tblTable.col
|
|
141
|
+
aliasMap.set(table.toLowerCase(), table);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
// Extract column references (e.g., alias.col) and map to resolved tables
|
|
145
|
+
const colPattern = /\b([a-zA-Z0-9_]+)\.([a-zA-Z0-9_*]+)\b/g;
|
|
146
|
+
const lineageMap = new Map();
|
|
147
|
+
while ((match = colPattern.exec(normalized)) !== null) {
|
|
148
|
+
const prefix = match[1];
|
|
149
|
+
const col = match[2];
|
|
150
|
+
if (prefix !== undefined && col !== undefined) {
|
|
151
|
+
const source = `${prefix}.${col}`;
|
|
152
|
+
const resolvedTable = aliasMap.get(prefix.toLowerCase());
|
|
153
|
+
if (resolvedTable) {
|
|
154
|
+
lineageMap.set(source, `${resolvedTable}.${col}`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
const lineage = Array.from(lineageMap.entries()).map(([source, resolved]) => ({
|
|
159
|
+
source,
|
|
160
|
+
resolved
|
|
161
|
+
}));
|
|
162
|
+
return {
|
|
163
|
+
tables: Array.from(tables),
|
|
164
|
+
lineage
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Internal recursive file finder.
|
|
169
|
+
*/
|
|
170
|
+
function getAllFiles(dir) {
|
|
171
|
+
let results = [];
|
|
172
|
+
if (!fs.existsSync(dir))
|
|
173
|
+
return [];
|
|
174
|
+
const list = fs.readdirSync(dir);
|
|
175
|
+
for (const file of list) {
|
|
176
|
+
const filePath = path.join(dir, file);
|
|
177
|
+
const stat = fs.statSync(filePath);
|
|
178
|
+
if (stat && stat.isDirectory()) {
|
|
179
|
+
results = results.concat(getAllFiles(filePath));
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
results.push(filePath);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return results;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Recursively queries the SQLite graph database backwards to find caller chain ancestors.
|
|
189
|
+
*/
|
|
190
|
+
function findGraphAncestors(db, startNodeId) {
|
|
191
|
+
const visited = new Set();
|
|
192
|
+
const ancestors = [];
|
|
193
|
+
function traverse(nodeId) {
|
|
194
|
+
if (visited.has(nodeId))
|
|
195
|
+
return;
|
|
196
|
+
visited.add(nodeId);
|
|
197
|
+
const rows = db.prepare('SELECT source FROM edges WHERE target = ?').all(nodeId);
|
|
198
|
+
for (const row of rows) {
|
|
199
|
+
if (row.source !== undefined) {
|
|
200
|
+
ancestors.push(row.source);
|
|
201
|
+
traverse(row.source);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
traverse(startNodeId);
|
|
206
|
+
return ancestors;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Runs a combined database and file-level downstream impact analysis.
|
|
210
|
+
*/
|
|
211
|
+
function runImpactAnalysis(db, workspaceDir, queryName) {
|
|
212
|
+
const output = {
|
|
213
|
+
query_name: queryName,
|
|
214
|
+
callers: [],
|
|
215
|
+
form_bindings: [],
|
|
216
|
+
tables_touched: [],
|
|
217
|
+
lineage: [],
|
|
218
|
+
downstream_impact: {
|
|
219
|
+
queries: [queryName],
|
|
220
|
+
forms: [],
|
|
221
|
+
vba_callers: []
|
|
222
|
+
},
|
|
223
|
+
warnings: []
|
|
224
|
+
};
|
|
225
|
+
// 1. Resolve SQL lineage
|
|
226
|
+
const sqlPath = path.join(workspaceDir, 'queries', `${queryName}.sql`);
|
|
227
|
+
if (fs.existsSync(sqlPath)) {
|
|
228
|
+
const sql = fs.readFileSync(sqlPath, 'utf-8');
|
|
229
|
+
const sqlLin = resolveSqlLineage(sql);
|
|
230
|
+
output.tables_touched = sqlLin.tables;
|
|
231
|
+
output.lineage = sqlLin.lineage;
|
|
232
|
+
}
|
|
233
|
+
// 2. Scan and parse files
|
|
234
|
+
const allFiles = getAllFiles(workspaceDir);
|
|
235
|
+
const matchedForms = new Set();
|
|
236
|
+
for (const file of allFiles) {
|
|
237
|
+
const relativePath = path.relative(workspaceDir, file).replace(/\\/g, '/');
|
|
238
|
+
const ext = path.extname(file).toLowerCase();
|
|
239
|
+
// VBA files
|
|
240
|
+
if (['.bas', '.cls', '.frm'].includes(ext)) {
|
|
241
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
242
|
+
const lines = traceVbaCallers(content, queryName);
|
|
243
|
+
if (lines.length > 0) {
|
|
244
|
+
const baseName = path.basename(file);
|
|
245
|
+
if (!output.downstream_impact.vba_callers.includes(baseName)) {
|
|
246
|
+
output.downstream_impact.vba_callers.push(baseName);
|
|
247
|
+
}
|
|
248
|
+
const linesSplit = content.split(/\r?\n/);
|
|
249
|
+
for (const lineNum of lines) {
|
|
250
|
+
const contextLine = linesSplit[lineNum - 1];
|
|
251
|
+
output.callers.push({
|
|
252
|
+
file: relativePath,
|
|
253
|
+
line: lineNum,
|
|
254
|
+
context: contextLine !== undefined ? contextLine : ''
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Form/Report layout files
|
|
260
|
+
const lowerFile = file.toLowerCase();
|
|
261
|
+
const isFormOrReport = lowerFile.endsWith('.form.txt') || lowerFile.endsWith('.report.txt');
|
|
262
|
+
if (isFormOrReport) {
|
|
263
|
+
const content = fs.readFileSync(file, 'utf-8');
|
|
264
|
+
const bindings = extractFormBindings(content);
|
|
265
|
+
const formName = path.basename(file).replace(/\.(form|report)\.txt$/i, '');
|
|
266
|
+
let isFormBound = false;
|
|
267
|
+
if (bindings.recordSource && (bindings.recordSource === queryName || output.tables_touched.includes(bindings.recordSource))) {
|
|
268
|
+
output.form_bindings.push({
|
|
269
|
+
file: relativePath,
|
|
270
|
+
control: 'Form',
|
|
271
|
+
property: 'RecordSource',
|
|
272
|
+
target: bindings.recordSource
|
|
273
|
+
});
|
|
274
|
+
isFormBound = true;
|
|
275
|
+
}
|
|
276
|
+
for (const rowSrc of bindings.rowSources) {
|
|
277
|
+
if (rowSrc.target === queryName || output.tables_touched.includes(rowSrc.target)) {
|
|
278
|
+
output.form_bindings.push({
|
|
279
|
+
file: relativePath,
|
|
280
|
+
control: rowSrc.control,
|
|
281
|
+
property: 'RowSource',
|
|
282
|
+
target: rowSrc.target
|
|
283
|
+
});
|
|
284
|
+
isFormBound = true;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (isFormBound) {
|
|
288
|
+
matchedForms.add(formName);
|
|
289
|
+
if (!output.downstream_impact.forms.includes(formName)) {
|
|
290
|
+
output.downstream_impact.forms.push(formName);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// 3. Database traversal for event handlers & controls
|
|
296
|
+
for (const caller of output.callers) {
|
|
297
|
+
// Find matching function node containing caller.line in caller.file
|
|
298
|
+
const matchingNodes = db.prepare(`
|
|
299
|
+
SELECT id, name, kind, file_path
|
|
300
|
+
FROM nodes
|
|
301
|
+
WHERE (file_path = ? OR file_path LIKE ?)
|
|
302
|
+
AND start_line <= ?
|
|
303
|
+
AND end_line >= ?
|
|
304
|
+
AND kind IN ('function', 'event', 'sub')
|
|
305
|
+
`).all(caller.file, `%/${path.basename(caller.file)}`, caller.line, caller.line);
|
|
306
|
+
for (const node of matchingNodes) {
|
|
307
|
+
const ancestors = findGraphAncestors(db, node.id);
|
|
308
|
+
for (const ancestorId of ancestors) {
|
|
309
|
+
const ancestorNode = db.prepare('SELECT name, kind, file_path FROM nodes WHERE id = ?').get(ancestorId);
|
|
310
|
+
if (ancestorNode) {
|
|
311
|
+
const fileBase = path.basename(ancestorNode.file_path);
|
|
312
|
+
if (['.bas', '.cls', '.frm'].includes(path.extname(fileBase).toLowerCase())) {
|
|
313
|
+
if (!output.downstream_impact.vba_callers.includes(fileBase)) {
|
|
314
|
+
output.downstream_impact.vba_callers.push(fileBase);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (ancestorNode.kind === 'control' || ancestorNode.kind === 'form') {
|
|
318
|
+
const formBase = path.basename(ancestorNode.file_path).split('.')[0] || '';
|
|
319
|
+
if (formBase && !output.downstream_impact.forms.includes(formBase)) {
|
|
320
|
+
output.downstream_impact.forms.push(formBase);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return output;
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=sql-impact-helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-impact-helpers.js","sourceRoot":"","sources":["../../src/utils/sql-impact-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,12 +34,12 @@ layoutVersion: 5
|
|
|
34
34
|
nodeLinker: hoisted
|
|
35
35
|
packageManager: pnpm@10.16.1
|
|
36
36
|
pendingBuilds: []
|
|
37
|
-
prunedAt:
|
|
37
|
+
prunedAt: Sat, 04 Jul 2026 12:02:55 GMT
|
|
38
38
|
publicHoistPattern: []
|
|
39
39
|
registries:
|
|
40
40
|
'@jsr': https://npm.jsr.io/
|
|
41
41
|
default: https://registry.npmjs.org/
|
|
42
42
|
skipped: []
|
|
43
|
-
storeDir: /home/runner/
|
|
43
|
+
storeDir: /home/runner/.local/share/pnpm/store/v10
|
|
44
44
|
virtualStoreDir: .pnpm
|
|
45
45
|
virtualStoreDirMaxLength: 120
|
package/lib/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aroman22/codegraph-vba",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Supercharge AI coding agents with semantic code intelligence — surgical context, fewer tool calls, faster answers. 100% local.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"@types/node": "^20.19.30",
|
|
49
49
|
"@types/picomatch": "^4.0.2",
|
|
50
50
|
"typescript": "^5.0.0",
|
|
51
|
-
"vitest": "^2.
|
|
51
|
+
"vitest": "^3.2.6"
|
|
52
52
|
},
|
|
53
53
|
"engines": {
|
|
54
54
|
"node": ">=22.5.0 <25.0.0"
|