gameforge-cli 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -5
- package/dist/agents/core/Architect.d.ts +4 -0
- package/dist/agents/core/Architect.d.ts.map +1 -1
- package/dist/agents/core/Architect.js +150 -0
- package/dist/agents/core/Architect.js.map +1 -1
- package/dist/agents/core/DocumentUpdater.d.ts +13 -0
- package/dist/agents/core/DocumentUpdater.d.ts.map +1 -0
- package/dist/agents/core/DocumentUpdater.js +165 -0
- package/dist/agents/core/DocumentUpdater.js.map +1 -0
- package/dist/agents/specialists/CreativeSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/CreativeSpecialist.js +68 -0
- package/dist/agents/specialists/CreativeSpecialist.js.map +1 -1
- package/dist/agents/specialists/EntitySpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/EntitySpecialist.js +16 -0
- package/dist/agents/specialists/EntitySpecialist.js.map +1 -1
- package/dist/agents/specialists/FeatureSpecialist.d.ts +4 -0
- package/dist/agents/specialists/FeatureSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/FeatureSpecialist.js +61 -0
- package/dist/agents/specialists/FeatureSpecialist.js.map +1 -1
- package/dist/agents/specialists/TechSpecialist.d.ts.map +1 -1
- package/dist/agents/specialists/TechSpecialist.js +100 -0
- package/dist/agents/specialists/TechSpecialist.js.map +1 -1
- package/dist/index.js +316 -138
- package/dist/index.js.map +1 -1
- package/dist/utils/disambiguationHelper.d.ts.map +1 -1
- package/dist/utils/disambiguationHelper.js +18 -8
- package/dist/utils/disambiguationHelper.js.map +1 -1
- package/dist/utils/fileManager.d.ts +7 -0
- package/dist/utils/fileManager.d.ts.map +1 -1
- package/dist/utils/fileManager.js +47 -0
- package/dist/utils/fileManager.js.map +1 -1
- package/dist/utils/issueReviewer.d.ts +4 -0
- package/dist/utils/issueReviewer.d.ts.map +1 -1
- package/dist/utils/issueReviewer.js +47 -0
- package/dist/utils/issueReviewer.js.map +1 -1
- package/dist/utils/pdfGenerator.d.ts +12 -0
- package/dist/utils/pdfGenerator.d.ts.map +1 -0
- package/dist/utils/pdfGenerator.js +341 -0
- package/dist/utils/pdfGenerator.js.map +1 -0
- package/package.json +20 -15
|
@@ -0,0 +1,341 @@
|
|
|
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.generatePDF = generatePDF;
|
|
7
|
+
const pdfkit_1 = __importDefault(require("pdfkit"));
|
|
8
|
+
const marked_1 = require("marked");
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const COLORS = {
|
|
11
|
+
h1: '#2c3e50',
|
|
12
|
+
h2: '#34495e',
|
|
13
|
+
h3: '#7f8c8d',
|
|
14
|
+
text: '#333333',
|
|
15
|
+
code: '#c0392b',
|
|
16
|
+
codeBg: '#f4f4f4',
|
|
17
|
+
link: '#3498db',
|
|
18
|
+
tableBorder: '#dddddd',
|
|
19
|
+
tableHeader: '#3498db',
|
|
20
|
+
tableHeaderText: '#ffffff',
|
|
21
|
+
hr: '#eeeeee',
|
|
22
|
+
};
|
|
23
|
+
const FONTS = {
|
|
24
|
+
regular: 'Helvetica',
|
|
25
|
+
bold: 'Helvetica-Bold',
|
|
26
|
+
italic: 'Helvetica-Oblique',
|
|
27
|
+
boldItalic: 'Helvetica-BoldOblique',
|
|
28
|
+
mono: 'Courier',
|
|
29
|
+
};
|
|
30
|
+
async function generatePDF(markdownPath, outputPath, options = {}) {
|
|
31
|
+
const markdown = await fs_extra_1.default.readFile(markdownPath, 'utf-8');
|
|
32
|
+
const tokens = marked_1.marked.lexer(markdown);
|
|
33
|
+
const margins = options.margins || { top: 50, bottom: 50, left: 50, right: 50 };
|
|
34
|
+
const doc = new pdfkit_1.default({
|
|
35
|
+
size: 'A4',
|
|
36
|
+
margins,
|
|
37
|
+
bufferPages: true,
|
|
38
|
+
});
|
|
39
|
+
const writeStream = fs_extra_1.default.createWriteStream(outputPath);
|
|
40
|
+
doc.pipe(writeStream);
|
|
41
|
+
const pageWidth = doc.page.width - margins.left - margins.right;
|
|
42
|
+
// Process tokens
|
|
43
|
+
for (const token of tokens) {
|
|
44
|
+
renderToken(doc, token, pageWidth, margins);
|
|
45
|
+
}
|
|
46
|
+
// Add page numbers
|
|
47
|
+
const pageCount = doc.bufferedPageRange().count;
|
|
48
|
+
for (let i = 0; i < pageCount; i++) {
|
|
49
|
+
doc.switchToPage(i);
|
|
50
|
+
doc
|
|
51
|
+
.fontSize(9)
|
|
52
|
+
.fillColor('#999999')
|
|
53
|
+
.text(`Page ${i + 1} of ${pageCount}`, margins.left, doc.page.height - 30, {
|
|
54
|
+
width: pageWidth,
|
|
55
|
+
align: 'center',
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
doc.end();
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
writeStream.on('finish', resolve);
|
|
61
|
+
writeStream.on('error', reject);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function renderToken(doc, token, pageWidth, margins) {
|
|
65
|
+
switch (token.type) {
|
|
66
|
+
case 'heading':
|
|
67
|
+
renderHeading(doc, token, pageWidth);
|
|
68
|
+
break;
|
|
69
|
+
case 'paragraph':
|
|
70
|
+
renderParagraph(doc, token, pageWidth);
|
|
71
|
+
break;
|
|
72
|
+
case 'list':
|
|
73
|
+
renderList(doc, token, pageWidth);
|
|
74
|
+
break;
|
|
75
|
+
case 'code':
|
|
76
|
+
renderCodeBlock(doc, token, pageWidth);
|
|
77
|
+
break;
|
|
78
|
+
case 'blockquote':
|
|
79
|
+
renderBlockquote(doc, token, pageWidth);
|
|
80
|
+
break;
|
|
81
|
+
case 'hr':
|
|
82
|
+
renderHorizontalRule(doc, pageWidth, margins);
|
|
83
|
+
break;
|
|
84
|
+
case 'table':
|
|
85
|
+
renderTable(doc, token, pageWidth);
|
|
86
|
+
break;
|
|
87
|
+
case 'space':
|
|
88
|
+
doc.moveDown(0.5);
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
function renderHeading(doc, token, pageWidth) {
|
|
93
|
+
const sizes = { 1: 24, 2: 20, 3: 16, 4: 14, 5: 12, 6: 11 };
|
|
94
|
+
const colors = {
|
|
95
|
+
1: COLORS.h1,
|
|
96
|
+
2: COLORS.h2,
|
|
97
|
+
3: COLORS.h3,
|
|
98
|
+
4: COLORS.h3,
|
|
99
|
+
5: COLORS.h3,
|
|
100
|
+
6: COLORS.h3,
|
|
101
|
+
};
|
|
102
|
+
doc.moveDown(0.5);
|
|
103
|
+
const fontSize = sizes[token.depth] || 12;
|
|
104
|
+
const color = colors[token.depth] || COLORS.text;
|
|
105
|
+
doc.fontSize(fontSize).font(FONTS.bold).fillColor(color);
|
|
106
|
+
const text = stripMarkdown(token.text);
|
|
107
|
+
doc.text(text, { width: pageWidth });
|
|
108
|
+
// Add underline for h1
|
|
109
|
+
if (token.depth === 1) {
|
|
110
|
+
doc.moveDown(0.2);
|
|
111
|
+
const y = doc.y;
|
|
112
|
+
doc
|
|
113
|
+
.strokeColor(COLORS.link)
|
|
114
|
+
.lineWidth(2)
|
|
115
|
+
.moveTo(doc.x, y)
|
|
116
|
+
.lineTo(doc.x + pageWidth, y)
|
|
117
|
+
.stroke();
|
|
118
|
+
doc.moveDown(0.3);
|
|
119
|
+
}
|
|
120
|
+
doc.moveDown(0.5);
|
|
121
|
+
doc.font(FONTS.regular).fillColor(COLORS.text);
|
|
122
|
+
}
|
|
123
|
+
function renderParagraph(doc, token, pageWidth) {
|
|
124
|
+
doc.fontSize(11).font(FONTS.regular).fillColor(COLORS.text);
|
|
125
|
+
renderInlineTokens(doc, token.tokens || [], pageWidth);
|
|
126
|
+
doc.moveDown(0.8);
|
|
127
|
+
}
|
|
128
|
+
function renderInlineTokens(doc, tokens, pageWidth) {
|
|
129
|
+
for (const token of tokens) {
|
|
130
|
+
switch (token.type) {
|
|
131
|
+
case 'text':
|
|
132
|
+
doc.font(FONTS.regular).text(token.text, { continued: true, width: pageWidth });
|
|
133
|
+
break;
|
|
134
|
+
case 'strong':
|
|
135
|
+
doc.font(FONTS.bold);
|
|
136
|
+
if ('tokens' in token && token.tokens) {
|
|
137
|
+
for (const t of token.tokens) {
|
|
138
|
+
if ('text' in t)
|
|
139
|
+
doc.text(t.text, { continued: true });
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else if ('text' in token) {
|
|
143
|
+
doc.text(token.text, { continued: true });
|
|
144
|
+
}
|
|
145
|
+
doc.font(FONTS.regular);
|
|
146
|
+
break;
|
|
147
|
+
case 'em':
|
|
148
|
+
doc.font(FONTS.italic);
|
|
149
|
+
if ('tokens' in token && token.tokens) {
|
|
150
|
+
for (const t of token.tokens) {
|
|
151
|
+
if ('text' in t)
|
|
152
|
+
doc.text(t.text, { continued: true });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else if ('text' in token) {
|
|
156
|
+
doc.text(token.text, { continued: true });
|
|
157
|
+
}
|
|
158
|
+
doc.font(FONTS.regular);
|
|
159
|
+
break;
|
|
160
|
+
case 'codespan':
|
|
161
|
+
doc.font(FONTS.mono).fillColor(COLORS.code);
|
|
162
|
+
if ('text' in token)
|
|
163
|
+
doc.text(token.text, { continued: true });
|
|
164
|
+
doc.font(FONTS.regular).fillColor(COLORS.text);
|
|
165
|
+
break;
|
|
166
|
+
case 'link':
|
|
167
|
+
doc.fillColor(COLORS.link);
|
|
168
|
+
if ('text' in token)
|
|
169
|
+
doc.text(token.text, { continued: true, link: token.href });
|
|
170
|
+
doc.fillColor(COLORS.text);
|
|
171
|
+
break;
|
|
172
|
+
case 'br':
|
|
173
|
+
doc.text('', { continued: false });
|
|
174
|
+
break;
|
|
175
|
+
default:
|
|
176
|
+
if ('text' in token) {
|
|
177
|
+
doc.text(token.text, { continued: true, width: pageWidth });
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// End the continued text
|
|
182
|
+
doc.text('', { continued: false });
|
|
183
|
+
}
|
|
184
|
+
function renderList(doc, token, pageWidth, indent = 0) {
|
|
185
|
+
const bulletIndent = 20;
|
|
186
|
+
const textIndent = indent + bulletIndent;
|
|
187
|
+
token.items.forEach((item, index) => {
|
|
188
|
+
const bullet = token.ordered ? `${index + 1}.` : '•';
|
|
189
|
+
doc.fontSize(11).font(FONTS.regular).fillColor(COLORS.text);
|
|
190
|
+
// Draw bullet
|
|
191
|
+
doc.text(bullet, doc.x + indent, doc.y, { continued: false });
|
|
192
|
+
// Get text content from item tokens
|
|
193
|
+
const itemText = item.tokens
|
|
194
|
+
.map((t) => {
|
|
195
|
+
if (t.type === 'text')
|
|
196
|
+
return t.text;
|
|
197
|
+
if (t.type === 'paragraph' && 'text' in t)
|
|
198
|
+
return t.text;
|
|
199
|
+
return '';
|
|
200
|
+
})
|
|
201
|
+
.join('');
|
|
202
|
+
// Move up to align text with bullet and draw item text
|
|
203
|
+
doc.moveUp();
|
|
204
|
+
doc.text(stripMarkdown(itemText), doc.x + textIndent, doc.y, {
|
|
205
|
+
width: pageWidth - textIndent,
|
|
206
|
+
});
|
|
207
|
+
// Handle nested lists
|
|
208
|
+
for (const subToken of item.tokens) {
|
|
209
|
+
if (subToken.type === 'list') {
|
|
210
|
+
renderList(doc, subToken, pageWidth, indent + bulletIndent);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
doc.moveDown(0.5);
|
|
215
|
+
}
|
|
216
|
+
function renderCodeBlock(doc, token, pageWidth) {
|
|
217
|
+
const padding = 10;
|
|
218
|
+
const code = token.text;
|
|
219
|
+
const lines = code.split('\n');
|
|
220
|
+
doc.fontSize(9).font(FONTS.mono);
|
|
221
|
+
// Calculate height needed
|
|
222
|
+
const lineHeight = 12;
|
|
223
|
+
const blockHeight = lines.length * lineHeight + padding * 2;
|
|
224
|
+
// Check if we need a new page
|
|
225
|
+
if (doc.y + blockHeight > doc.page.height - 50) {
|
|
226
|
+
doc.addPage();
|
|
227
|
+
}
|
|
228
|
+
// Draw background
|
|
229
|
+
const startY = doc.y;
|
|
230
|
+
doc
|
|
231
|
+
.rect(doc.x, startY, pageWidth, blockHeight)
|
|
232
|
+
.fill(COLORS.codeBg);
|
|
233
|
+
// Draw code
|
|
234
|
+
doc.fillColor(COLORS.text);
|
|
235
|
+
let currentY = startY + padding;
|
|
236
|
+
for (const line of lines) {
|
|
237
|
+
doc.text(line, doc.x + padding, currentY, { width: pageWidth - padding * 2 });
|
|
238
|
+
currentY += lineHeight;
|
|
239
|
+
}
|
|
240
|
+
doc.y = startY + blockHeight;
|
|
241
|
+
doc.moveDown(0.8);
|
|
242
|
+
doc.font(FONTS.regular);
|
|
243
|
+
}
|
|
244
|
+
function renderBlockquote(doc, token, pageWidth) {
|
|
245
|
+
const quoteIndent = 20;
|
|
246
|
+
const lineX = doc.x + 5;
|
|
247
|
+
// Draw quote line
|
|
248
|
+
const startY = doc.y;
|
|
249
|
+
doc.fontSize(11).font(FONTS.italic).fillColor('#666666');
|
|
250
|
+
for (const subToken of token.tokens) {
|
|
251
|
+
if (subToken.type === 'paragraph' && 'text' in subToken) {
|
|
252
|
+
doc.text(stripMarkdown(subToken.text), doc.x + quoteIndent, doc.y, {
|
|
253
|
+
width: pageWidth - quoteIndent,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
const endY = doc.y;
|
|
258
|
+
// Draw the quote line
|
|
259
|
+
doc
|
|
260
|
+
.strokeColor(COLORS.link)
|
|
261
|
+
.lineWidth(3)
|
|
262
|
+
.moveTo(lineX, startY)
|
|
263
|
+
.lineTo(lineX, endY)
|
|
264
|
+
.stroke();
|
|
265
|
+
doc.moveDown(0.8);
|
|
266
|
+
doc.font(FONTS.regular).fillColor(COLORS.text);
|
|
267
|
+
}
|
|
268
|
+
function renderHorizontalRule(doc, pageWidth, margins) {
|
|
269
|
+
doc.moveDown(0.5);
|
|
270
|
+
const y = doc.y;
|
|
271
|
+
doc
|
|
272
|
+
.strokeColor(COLORS.hr)
|
|
273
|
+
.lineWidth(1)
|
|
274
|
+
.moveTo(margins.left, y)
|
|
275
|
+
.lineTo(margins.left + pageWidth, y)
|
|
276
|
+
.stroke();
|
|
277
|
+
doc.moveDown(1);
|
|
278
|
+
}
|
|
279
|
+
function renderTable(doc, token, pageWidth) {
|
|
280
|
+
const cellPadding = 5;
|
|
281
|
+
const colCount = token.header.length;
|
|
282
|
+
const colWidth = pageWidth / colCount;
|
|
283
|
+
const rowHeight = 25;
|
|
284
|
+
let currentY = doc.y;
|
|
285
|
+
// Check if we need a new page
|
|
286
|
+
const estimatedHeight = (token.rows.length + 1) * rowHeight;
|
|
287
|
+
if (currentY + estimatedHeight > doc.page.height - 50) {
|
|
288
|
+
doc.addPage();
|
|
289
|
+
currentY = doc.y;
|
|
290
|
+
}
|
|
291
|
+
// Draw header
|
|
292
|
+
doc.fontSize(10).font(FONTS.bold);
|
|
293
|
+
for (let i = 0; i < colCount; i++) {
|
|
294
|
+
const x = doc.x + i * colWidth;
|
|
295
|
+
// Header background
|
|
296
|
+
doc.rect(x, currentY, colWidth, rowHeight).fill(COLORS.tableHeader);
|
|
297
|
+
// Header text
|
|
298
|
+
const headerText = token.header[i].tokens
|
|
299
|
+
.map((t) => ('text' in t ? t.text : ''))
|
|
300
|
+
.join('');
|
|
301
|
+
doc.fillColor(COLORS.tableHeaderText);
|
|
302
|
+
doc.text(stripMarkdown(headerText), x + cellPadding, currentY + cellPadding, {
|
|
303
|
+
width: colWidth - cellPadding * 2,
|
|
304
|
+
height: rowHeight - cellPadding * 2,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
currentY += rowHeight;
|
|
308
|
+
// Draw rows
|
|
309
|
+
doc.font(FONTS.regular).fillColor(COLORS.text);
|
|
310
|
+
for (const row of token.rows) {
|
|
311
|
+
// Check for page break
|
|
312
|
+
if (currentY + rowHeight > doc.page.height - 50) {
|
|
313
|
+
doc.addPage();
|
|
314
|
+
currentY = doc.y;
|
|
315
|
+
}
|
|
316
|
+
for (let i = 0; i < colCount; i++) {
|
|
317
|
+
const x = doc.x + i * colWidth;
|
|
318
|
+
const cell = row[i];
|
|
319
|
+
// Cell border
|
|
320
|
+
doc.rect(x, currentY, colWidth, rowHeight).stroke(COLORS.tableBorder);
|
|
321
|
+
// Cell text
|
|
322
|
+
const cellText = cell.tokens.map((t) => ('text' in t ? t.text : '')).join('');
|
|
323
|
+
doc.text(stripMarkdown(cellText), x + cellPadding, currentY + cellPadding, {
|
|
324
|
+
width: colWidth - cellPadding * 2,
|
|
325
|
+
height: rowHeight - cellPadding * 2,
|
|
326
|
+
});
|
|
327
|
+
}
|
|
328
|
+
currentY += rowHeight;
|
|
329
|
+
}
|
|
330
|
+
doc.y = currentY;
|
|
331
|
+
doc.moveDown(1);
|
|
332
|
+
}
|
|
333
|
+
function stripMarkdown(text) {
|
|
334
|
+
return text
|
|
335
|
+
.replace(/\*\*(.*?)\*\*/g, '$1') // bold
|
|
336
|
+
.replace(/\*(.*?)\*/g, '$1') // italic
|
|
337
|
+
.replace(/`(.*?)`/g, '$1') // code
|
|
338
|
+
.replace(/\[(.*?)\]\(.*?\)/g, '$1') // links
|
|
339
|
+
.replace(/~~(.*?)~~/g, '$1'); // strikethrough
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=pdfGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfGenerator.js","sourceRoot":"","sources":["../../src/utils/pdfGenerator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gameforge-cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "AI-powered Game Design Document generator",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -12,31 +12,36 @@
|
|
|
12
12
|
"test": "vitest",
|
|
13
13
|
"lint": "eslint src/**/*.ts"
|
|
14
14
|
},
|
|
15
|
-
"keywords": [
|
|
15
|
+
"keywords": [
|
|
16
|
+
"game-design",
|
|
17
|
+
"gdd",
|
|
18
|
+
"ai",
|
|
19
|
+
"cli"
|
|
20
|
+
],
|
|
16
21
|
"author": "",
|
|
17
22
|
"license": "MIT",
|
|
18
23
|
"dependencies": {
|
|
19
24
|
"@anthropic-ai/sdk": "^0.30.0",
|
|
20
|
-
"
|
|
25
|
+
"cli-table3": "^0.6.3",
|
|
26
|
+
"commander": "^12.0.0",
|
|
27
|
+
"dotenv": "^16.4.0",
|
|
21
28
|
"enquirer": "^2.4.0",
|
|
22
|
-
"picocolors": "^1.0.0",
|
|
23
|
-
"ora": "^8.0.0",
|
|
24
29
|
"fs-extra": "^11.2.0",
|
|
25
|
-
"p-queue": "^8.0.0",
|
|
26
30
|
"handlebars": "^4.7.8",
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
31
|
+
"ora": "^5.4.1",
|
|
32
|
+
"p-queue": "^8.0.0",
|
|
33
|
+
"picocolors": "^1.0.0",
|
|
34
|
+
"zod": "^3.22.0"
|
|
30
35
|
},
|
|
31
36
|
"devDependencies": {
|
|
32
|
-
"@types/node": "^20.0.0",
|
|
33
37
|
"@types/fs-extra": "^11.0.0",
|
|
34
|
-
"
|
|
35
|
-
"tsx": "^4.7.0",
|
|
36
|
-
"vitest": "^1.2.0",
|
|
37
|
-
"eslint": "^8.56.0",
|
|
38
|
+
"@types/node": "^20.0.0",
|
|
38
39
|
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
39
|
-
"@typescript-eslint/parser": "^6.0.0"
|
|
40
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
41
|
+
"eslint": "^8.56.0",
|
|
42
|
+
"tsx": "^4.7.0",
|
|
43
|
+
"typescript": "^5.3.0",
|
|
44
|
+
"vitest": "^1.2.0"
|
|
40
45
|
},
|
|
41
46
|
"files": [
|
|
42
47
|
"dist/**/*",
|