@teardown/navigation-metro 2.0.76 → 2.0.78
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/index.d.ts.map +1 -1
- package/dist/index.js +57 -16
- package/dist/scanner/file-scanner.d.ts +4 -0
- package/dist/scanner/file-scanner.d.ts.map +1 -1
- package/dist/scanner/file-scanner.js +1 -0
- package/dist/scanner/index.d.ts +1 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/index.js +2 -1
- package/package.json +2 -2
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoHH;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACzC;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE;QACV,cAAc,CAAC,EAAE,CAChB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,KACnB;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAC/C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,WAAW,CAAC,EAAE;QACb,4BAA4B,CAAC,EAAE,OAAO,CAAC;QACvC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACvB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,yBAA8B,GAAG,WAAW,CAqFhH;AAED,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAChG,OAAO,EACN,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,mBAAmB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,WAAW,EACX,iBAAiB,GACjB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,8 @@ exports.withTeardownNavigation = withTeardownNavigation;
|
|
|
9
9
|
const node_fs_1 = require("node:fs");
|
|
10
10
|
const node_path_1 = require("node:path");
|
|
11
11
|
const route_generator_1 = require("./generator/route-generator");
|
|
12
|
+
const file_scanner_1 = require("./scanner/file-scanner");
|
|
13
|
+
const route_templates_1 = require("./templates/route-templates");
|
|
12
14
|
const file_watcher_1 = require("./watcher/file-watcher");
|
|
13
15
|
/**
|
|
14
16
|
* Config file names to search for (in order of priority)
|
|
@@ -43,6 +45,10 @@ function readTeardownConfig(projectRoot) {
|
|
|
43
45
|
if (autoTemplateMatch) {
|
|
44
46
|
config.autoTemplate = autoTemplateMatch[1] === "true";
|
|
45
47
|
}
|
|
48
|
+
const verboseMatch = content.match(/verbose:\s*(true|false)/);
|
|
49
|
+
if (verboseMatch) {
|
|
50
|
+
config.verbose = verboseMatch[1] === "true";
|
|
51
|
+
}
|
|
46
52
|
return config;
|
|
47
53
|
}
|
|
48
54
|
catch {
|
|
@@ -59,6 +65,37 @@ function readSlugFromConfig(projectRoot) {
|
|
|
59
65
|
const config = readTeardownConfig(projectRoot);
|
|
60
66
|
return config?.slug ?? null;
|
|
61
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Scans routes directory for empty files and populates them with templates
|
|
70
|
+
*/
|
|
71
|
+
function populateEmptyRouteFiles(routesDir, verbose) {
|
|
72
|
+
const files = (0, file_scanner_1.findRouteFiles)(routesDir);
|
|
73
|
+
if (verbose) {
|
|
74
|
+
console.log(`[teardown/navigation] Scanning ${files.length} route files for empty templates`);
|
|
75
|
+
}
|
|
76
|
+
let populatedCount = 0;
|
|
77
|
+
for (const file of files) {
|
|
78
|
+
const absolutePath = (0, node_path_1.join)(routesDir, file);
|
|
79
|
+
if ((0, route_templates_1.isFileEmpty)(absolutePath)) {
|
|
80
|
+
try {
|
|
81
|
+
const templateContent = (0, route_templates_1.generateRouteTemplate)(file);
|
|
82
|
+
(0, node_fs_1.writeFileSync)(absolutePath, templateContent);
|
|
83
|
+
populatedCount++;
|
|
84
|
+
if (verbose) {
|
|
85
|
+
console.log(`[teardown/navigation] Generated template for: ${file}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (verbose) {
|
|
90
|
+
console.error(`[teardown/navigation] Failed to generate template for ${file}:`, error);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (verbose && populatedCount === 0 && files.length > 0) {
|
|
96
|
+
console.log(`[teardown/navigation] All ${files.length} route files already have content`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
62
99
|
/**
|
|
63
100
|
* Wraps a Metro configuration with Teardown Navigation support
|
|
64
101
|
*
|
|
@@ -95,7 +132,7 @@ function withTeardownNavigation(config, options = {}) {
|
|
|
95
132
|
const routesDir = options.routesDir ?? teardownConfig?.routesDir ?? "./src/_routes";
|
|
96
133
|
const generatedDir = options.generatedDir ?? teardownConfig?.generatedDir ?? "./.teardown";
|
|
97
134
|
const autoTemplate = options.autoTemplate ?? teardownConfig?.autoTemplate ?? true;
|
|
98
|
-
const verbose = options.verbose ?? false;
|
|
135
|
+
const verbose = options.verbose ?? teardownConfig?.verbose ?? false;
|
|
99
136
|
const usePolling = options.usePolling ?? false;
|
|
100
137
|
const absoluteRoutesDir = (0, node_path_1.resolve)(projectRoot, routesDir);
|
|
101
138
|
const absoluteGeneratedDir = (0, node_path_1.resolve)(projectRoot, generatedDir);
|
|
@@ -110,6 +147,10 @@ function withTeardownNavigation(config, options = {}) {
|
|
|
110
147
|
}
|
|
111
148
|
}
|
|
112
149
|
}
|
|
150
|
+
// Auto-populate empty route files before generation
|
|
151
|
+
if (autoTemplate) {
|
|
152
|
+
populateEmptyRouteFiles(absoluteRoutesDir, verbose);
|
|
153
|
+
}
|
|
113
154
|
// Generate types on startup
|
|
114
155
|
try {
|
|
115
156
|
(0, route_generator_1.generateAllRouteFiles)({
|
|
@@ -163,21 +204,21 @@ function withTeardownNavigation(config, options = {}) {
|
|
|
163
204
|
// Re-export modules
|
|
164
205
|
var route_generator_2 = require("./generator/route-generator");
|
|
165
206
|
Object.defineProperty(exports, "generateAllRouteFiles", { enumerable: true, get: function () { return route_generator_2.generateAllRouteFiles; } });
|
|
166
|
-
var
|
|
167
|
-
Object.defineProperty(exports, "buildUrlPath", { enumerable: true, get: function () { return
|
|
168
|
-
Object.defineProperty(exports, "extractParams", { enumerable: true, get: function () { return
|
|
169
|
-
Object.defineProperty(exports, "filePathToScreenName", { enumerable: true, get: function () { return
|
|
170
|
-
Object.defineProperty(exports, "flattenRoutes", { enumerable: true, get: function () { return
|
|
171
|
-
Object.defineProperty(exports, "scanRoutesDirectory", { enumerable: true, get: function () { return
|
|
172
|
-
var
|
|
173
|
-
Object.defineProperty(exports, "extractParamsFromPath", { enumerable: true, get: function () { return
|
|
174
|
-
Object.defineProperty(exports, "fileNameToScreenName", { enumerable: true, get: function () { return
|
|
175
|
-
Object.defineProperty(exports, "generateLayoutTemplate", { enumerable: true, get: function () { return
|
|
176
|
-
Object.defineProperty(exports, "generateRouteTemplate", { enumerable: true, get: function () { return
|
|
177
|
-
Object.defineProperty(exports, "generateScreenTemplate", { enumerable: true, get: function () { return
|
|
178
|
-
Object.defineProperty(exports, "getTemplateType", { enumerable: true, get: function () { return
|
|
179
|
-
Object.defineProperty(exports, "isFileEmpty", { enumerable: true, get: function () { return
|
|
180
|
-
Object.defineProperty(exports, "screenNameToTitle", { enumerable: true, get: function () { return
|
|
207
|
+
var file_scanner_2 = require("./scanner/file-scanner");
|
|
208
|
+
Object.defineProperty(exports, "buildUrlPath", { enumerable: true, get: function () { return file_scanner_2.buildUrlPath; } });
|
|
209
|
+
Object.defineProperty(exports, "extractParams", { enumerable: true, get: function () { return file_scanner_2.extractParams; } });
|
|
210
|
+
Object.defineProperty(exports, "filePathToScreenName", { enumerable: true, get: function () { return file_scanner_2.filePathToScreenName; } });
|
|
211
|
+
Object.defineProperty(exports, "flattenRoutes", { enumerable: true, get: function () { return file_scanner_2.flattenRoutes; } });
|
|
212
|
+
Object.defineProperty(exports, "scanRoutesDirectory", { enumerable: true, get: function () { return file_scanner_2.scanRoutesDirectory; } });
|
|
213
|
+
var route_templates_2 = require("./templates/route-templates");
|
|
214
|
+
Object.defineProperty(exports, "extractParamsFromPath", { enumerable: true, get: function () { return route_templates_2.extractParamsFromPath; } });
|
|
215
|
+
Object.defineProperty(exports, "fileNameToScreenName", { enumerable: true, get: function () { return route_templates_2.fileNameToScreenName; } });
|
|
216
|
+
Object.defineProperty(exports, "generateLayoutTemplate", { enumerable: true, get: function () { return route_templates_2.generateLayoutTemplate; } });
|
|
217
|
+
Object.defineProperty(exports, "generateRouteTemplate", { enumerable: true, get: function () { return route_templates_2.generateRouteTemplate; } });
|
|
218
|
+
Object.defineProperty(exports, "generateScreenTemplate", { enumerable: true, get: function () { return route_templates_2.generateScreenTemplate; } });
|
|
219
|
+
Object.defineProperty(exports, "getTemplateType", { enumerable: true, get: function () { return route_templates_2.getTemplateType; } });
|
|
220
|
+
Object.defineProperty(exports, "isFileEmpty", { enumerable: true, get: function () { return route_templates_2.isFileEmpty; } });
|
|
221
|
+
Object.defineProperty(exports, "screenNameToTitle", { enumerable: true, get: function () { return route_templates_2.screenNameToTitle; } });
|
|
181
222
|
var route_validator_1 = require("./validator/route-validator");
|
|
182
223
|
Object.defineProperty(exports, "validateRoutes", { enumerable: true, get: function () { return route_validator_1.validateRoutes; } });
|
|
183
224
|
var file_watcher_2 = require("./watcher/file-watcher");
|
|
@@ -43,6 +43,10 @@ export interface ScanError {
|
|
|
43
43
|
* Scans a routes directory and builds a route tree
|
|
44
44
|
*/
|
|
45
45
|
export declare function scanRoutesDirectory(routesDir: string): ScanResult;
|
|
46
|
+
/**
|
|
47
|
+
* Recursively finds all route files in a directory
|
|
48
|
+
*/
|
|
49
|
+
export declare function findRouteFiles(dir: string, prefix?: string): string[];
|
|
46
50
|
/**
|
|
47
51
|
* Extracts dynamic parameters from a filename
|
|
48
52
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/file-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,SAAS;IACzB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,mBAAmB;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,sCAAsC;IACtC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAwCjE;
|
|
1
|
+
{"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/scanner/file-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,SAAS;IACzB,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,mBAAmB;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,sCAAsC;IACtC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,6BAA6B;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,4BAA4B;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,gCAAgC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAwCjE;AAED;;GAEG;AAEH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,EAAE,CAqCjE;AAuCD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,EAAE,CAkBjE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAmB/F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAGjE;AAsFD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAY9D"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.scanRoutesDirectory = scanRoutesDirectory;
|
|
8
|
+
exports.findRouteFiles = findRouteFiles;
|
|
8
9
|
exports.extractParams = extractParams;
|
|
9
10
|
exports.buildUrlPath = buildUrlPath;
|
|
10
11
|
exports.filePathToScreenName = filePathToScreenName;
|
package/dist/scanner/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Scanner module for @teardown/navigation-metro
|
|
3
3
|
*/
|
|
4
|
-
export { buildUrlPath, extractParams, filePathToScreenName, flattenRoutes, type ParamDefinition, type RouteNode, type ScanError, type ScanResult, scanRoutesDirectory, } from "./file-scanner";
|
|
4
|
+
export { buildUrlPath, extractParams, filePathToScreenName, findRouteFiles, flattenRoutes, type ParamDefinition, type RouteNode, type ScanError, type ScanResult, scanRoutesDirectory, } from "./file-scanner";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACN,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EACf,mBAAmB,GACnB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACN,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,aAAa,EACb,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EACf,mBAAmB,GACnB,MAAM,gBAAgB,CAAC"}
|
package/dist/scanner/index.js
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Scanner module for @teardown/navigation-metro
|
|
4
4
|
*/
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.scanRoutesDirectory = exports.flattenRoutes = exports.filePathToScreenName = exports.extractParams = exports.buildUrlPath = void 0;
|
|
6
|
+
exports.scanRoutesDirectory = exports.flattenRoutes = exports.findRouteFiles = exports.filePathToScreenName = exports.extractParams = exports.buildUrlPath = void 0;
|
|
7
7
|
var file_scanner_1 = require("./file-scanner");
|
|
8
8
|
Object.defineProperty(exports, "buildUrlPath", { enumerable: true, get: function () { return file_scanner_1.buildUrlPath; } });
|
|
9
9
|
Object.defineProperty(exports, "extractParams", { enumerable: true, get: function () { return file_scanner_1.extractParams; } });
|
|
10
10
|
Object.defineProperty(exports, "filePathToScreenName", { enumerable: true, get: function () { return file_scanner_1.filePathToScreenName; } });
|
|
11
|
+
Object.defineProperty(exports, "findRouteFiles", { enumerable: true, get: function () { return file_scanner_1.findRouteFiles; } });
|
|
11
12
|
Object.defineProperty(exports, "flattenRoutes", { enumerable: true, get: function () { return file_scanner_1.flattenRoutes; } });
|
|
12
13
|
Object.defineProperty(exports, "scanRoutesDirectory", { enumerable: true, get: function () { return file_scanner_1.scanRoutesDirectory; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teardown/navigation-metro",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.78",
|
|
4
4
|
"description": "Metro plugin for @teardown/navigation type generation",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
44
|
"@biomejs/biome": "2.3.11",
|
|
45
|
-
"@teardown/tsconfig": "2.0.
|
|
45
|
+
"@teardown/tsconfig": "2.0.78",
|
|
46
46
|
"@types/node": "24.10.1",
|
|
47
47
|
"typescript": "5.9.3"
|
|
48
48
|
}
|