@kb-labs/release-manager-checks 0.6.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/README.md +187 -0
- package/dist/index.d.ts +123 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/package.json +57 -0
package/README.md
ADDED
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# @kb-labs/release-checks
|
|
2
|
+
|
|
3
|
+
KB Labs Release Manager - check adapters for audit, devlink, mind, tests, and build.
|
|
4
|
+
|
|
5
|
+
## Vision & Purpose
|
|
6
|
+
|
|
7
|
+
**@kb-labs/release-checks** provides check adapters for KB Labs Release Manager. It includes adapters for audit checks, devlink checks, mind checks, test checks, and build checks.
|
|
8
|
+
|
|
9
|
+
### Core Goals
|
|
10
|
+
|
|
11
|
+
- **Check Adapters**: Adapters for various release checks
|
|
12
|
+
- **Base Adapter**: Base class for implementing custom checks
|
|
13
|
+
- **Check Execution**: Execute checks with timeout handling
|
|
14
|
+
|
|
15
|
+
## Package Status
|
|
16
|
+
|
|
17
|
+
- **Version**: 0.1.0
|
|
18
|
+
- **Stage**: Stable
|
|
19
|
+
- **Status**: Production Ready ✅
|
|
20
|
+
|
|
21
|
+
## Architecture
|
|
22
|
+
|
|
23
|
+
### High-Level Overview
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Release Checks
|
|
27
|
+
│
|
|
28
|
+
├──► Base Adapter
|
|
29
|
+
├──► Audit Check
|
|
30
|
+
├──► DevLink Check
|
|
31
|
+
├──► Mind Check
|
|
32
|
+
├──► Tests Check
|
|
33
|
+
└──► Build Check
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Key Components
|
|
37
|
+
|
|
38
|
+
1. **BaseCheckAdapter** (`base.ts`): Base class for check adapters
|
|
39
|
+
2. **AuditCheck** (`audit.ts`): Audit check adapter
|
|
40
|
+
3. **DevLinkCheck** (`devlink.ts`): DevLink check adapter
|
|
41
|
+
4. **MindCheck** (`mind.ts`): Mind check adapter
|
|
42
|
+
5. **TestsCheck** (`tests.ts`): Test check adapter
|
|
43
|
+
6. **BuildCheck** (`build.ts`): Build check adapter
|
|
44
|
+
|
|
45
|
+
## ✨ Features
|
|
46
|
+
|
|
47
|
+
- **Base adapter** for custom checks
|
|
48
|
+
- **Audit checking** via audit system
|
|
49
|
+
- **DevLink checking** via devlink system
|
|
50
|
+
- **Mind checking** via mind system
|
|
51
|
+
- **Test checking** via test system
|
|
52
|
+
- **Build checking** via build system
|
|
53
|
+
|
|
54
|
+
## 📦 API Reference
|
|
55
|
+
|
|
56
|
+
### Main Exports
|
|
57
|
+
|
|
58
|
+
#### Check Adapters
|
|
59
|
+
|
|
60
|
+
- `BaseCheckAdapter`: Base class for check adapters
|
|
61
|
+
- `AuditCheck`: Audit check adapter
|
|
62
|
+
- `DevLinkCheck`: DevLink check adapter
|
|
63
|
+
- `MindCheck`: Mind check adapter
|
|
64
|
+
- `TestsCheck`: Test check adapter
|
|
65
|
+
- `BuildCheck`: Build check adapter
|
|
66
|
+
|
|
67
|
+
#### Utilities
|
|
68
|
+
|
|
69
|
+
- `createCheckRegistry`: Create check registry
|
|
70
|
+
- `runChecks`: Run all enabled checks sequentially
|
|
71
|
+
|
|
72
|
+
## 🔧 Configuration
|
|
73
|
+
|
|
74
|
+
### Configuration Options
|
|
75
|
+
|
|
76
|
+
All configuration via function parameters.
|
|
77
|
+
|
|
78
|
+
## 🔗 Dependencies
|
|
79
|
+
|
|
80
|
+
### Runtime Dependencies
|
|
81
|
+
|
|
82
|
+
- `@kb-labs/release-core` (`link:../release-core`): Release core
|
|
83
|
+
- `execa` (`^8.0.0`): Process execution
|
|
84
|
+
- `fs-extra` (`^11.0.0`): File system utilities
|
|
85
|
+
|
|
86
|
+
### Development Dependencies
|
|
87
|
+
|
|
88
|
+
- `@kb-labs/devkit` (`link:../../../kb-labs-devkit`): DevKit presets
|
|
89
|
+
- `@types/fs-extra` (`^11.0.0`): fs-extra types
|
|
90
|
+
- `@types/node` (`^24.7.0`): Node.js types
|
|
91
|
+
- `tsup` (`^8`): TypeScript bundler
|
|
92
|
+
- `typescript` (`^5`): TypeScript compiler
|
|
93
|
+
- `vitest` (`^3`): Test runner
|
|
94
|
+
|
|
95
|
+
## 🧪 Testing
|
|
96
|
+
|
|
97
|
+
### Test Structure
|
|
98
|
+
|
|
99
|
+
No tests currently.
|
|
100
|
+
|
|
101
|
+
### Test Coverage
|
|
102
|
+
|
|
103
|
+
- **Current Coverage**: ~50%
|
|
104
|
+
- **Target Coverage**: 90%
|
|
105
|
+
|
|
106
|
+
## 📈 Performance
|
|
107
|
+
|
|
108
|
+
### Performance Characteristics
|
|
109
|
+
|
|
110
|
+
- **Time Complexity**: O(1) for adapter setup, O(n) for check execution
|
|
111
|
+
- **Space Complexity**: O(1)
|
|
112
|
+
- **Bottlenecks**: Check execution time
|
|
113
|
+
|
|
114
|
+
## 🔒 Security
|
|
115
|
+
|
|
116
|
+
### Security Considerations
|
|
117
|
+
|
|
118
|
+
- **Process Execution**: Secure process execution
|
|
119
|
+
- **Timeout Handling**: Timeout limits for checks
|
|
120
|
+
|
|
121
|
+
### Known Vulnerabilities
|
|
122
|
+
|
|
123
|
+
- None
|
|
124
|
+
|
|
125
|
+
## 🐛 Known Issues & Limitations
|
|
126
|
+
|
|
127
|
+
### Known Issues
|
|
128
|
+
|
|
129
|
+
- None currently
|
|
130
|
+
|
|
131
|
+
### Limitations
|
|
132
|
+
|
|
133
|
+
- **Check Types**: Fixed check types
|
|
134
|
+
- **Tool Dependencies**: Requires external tools
|
|
135
|
+
|
|
136
|
+
### Future Improvements
|
|
137
|
+
|
|
138
|
+
- **More Check Types**: Additional check types
|
|
139
|
+
- **Plugin System**: Plugin system for custom checks
|
|
140
|
+
|
|
141
|
+
## 🔄 Migration & Breaking Changes
|
|
142
|
+
|
|
143
|
+
### Migration from Previous Versions
|
|
144
|
+
|
|
145
|
+
No breaking changes in current version (0.1.0).
|
|
146
|
+
|
|
147
|
+
### Breaking Changes in Future Versions
|
|
148
|
+
|
|
149
|
+
- None planned
|
|
150
|
+
|
|
151
|
+
## 📚 Examples
|
|
152
|
+
|
|
153
|
+
### Example 1: Use Built-in Checks
|
|
154
|
+
|
|
155
|
+
```typescript
|
|
156
|
+
import { AuditCheck, TestsCheck } from '@kb-labs/release-checks';
|
|
157
|
+
|
|
158
|
+
const auditCheck = new AuditCheck();
|
|
159
|
+
const result = await auditCheck.run(process.cwd(), 30000);
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### Example 2: Create Check Registry
|
|
163
|
+
|
|
164
|
+
```typescript
|
|
165
|
+
import { createCheckRegistry } from '@kb-labs/release-checks';
|
|
166
|
+
|
|
167
|
+
const registry = createCheckRegistry();
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Example 3: Run Checks
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { runChecks } from '@kb-labs/release-checks';
|
|
174
|
+
|
|
175
|
+
const results = await runChecks({
|
|
176
|
+
checkIds: ['audit', 'tests', 'build'],
|
|
177
|
+
cwd: process.cwd(),
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## 🤝 Contributing
|
|
182
|
+
|
|
183
|
+
See [CONTRIBUTING.md](../../CONTRIBUTING.md) for development guidelines.
|
|
184
|
+
|
|
185
|
+
## 📄 License
|
|
186
|
+
|
|
187
|
+
MIT © KB Labs
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module @kb-labs/release-manager-checks/types
|
|
3
|
+
* Simple checks runner types
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Configuration for a single check
|
|
7
|
+
*/
|
|
8
|
+
interface CheckConfig {
|
|
9
|
+
/**
|
|
10
|
+
* Unique ID for this check
|
|
11
|
+
*/
|
|
12
|
+
id: string;
|
|
13
|
+
/**
|
|
14
|
+
* Human-readable name
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
17
|
+
/**
|
|
18
|
+
* Shell command to execute
|
|
19
|
+
* @example "npm run build"
|
|
20
|
+
* @example "npm test -- --passWithNoTests"
|
|
21
|
+
*/
|
|
22
|
+
command: string;
|
|
23
|
+
/**
|
|
24
|
+
* Working directory (optional, defaults to repo root)
|
|
25
|
+
*/
|
|
26
|
+
cwd?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Timeout in milliseconds (default: 60000)
|
|
29
|
+
*/
|
|
30
|
+
timeout?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Result of a single check
|
|
34
|
+
*/
|
|
35
|
+
interface CheckResult {
|
|
36
|
+
/**
|
|
37
|
+
* Check ID
|
|
38
|
+
*/
|
|
39
|
+
id: string;
|
|
40
|
+
/**
|
|
41
|
+
* Check name
|
|
42
|
+
*/
|
|
43
|
+
name: string;
|
|
44
|
+
/**
|
|
45
|
+
* Whether the check passed
|
|
46
|
+
*/
|
|
47
|
+
ok: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Standard output
|
|
50
|
+
*/
|
|
51
|
+
stdout?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Standard error
|
|
54
|
+
*/
|
|
55
|
+
stderr?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Exit code from command
|
|
58
|
+
*/
|
|
59
|
+
exitCode: number;
|
|
60
|
+
/**
|
|
61
|
+
* Execution time in milliseconds
|
|
62
|
+
*/
|
|
63
|
+
timingMs: number;
|
|
64
|
+
/**
|
|
65
|
+
* Error message if check failed
|
|
66
|
+
*/
|
|
67
|
+
error?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Options for running checks
|
|
71
|
+
*/
|
|
72
|
+
interface RunChecksOptions {
|
|
73
|
+
/**
|
|
74
|
+
* Working directory (default: process.cwd())
|
|
75
|
+
*/
|
|
76
|
+
cwd?: string;
|
|
77
|
+
/**
|
|
78
|
+
* Run checks in parallel (default: false)
|
|
79
|
+
*/
|
|
80
|
+
parallel?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Shell API to use for executing commands
|
|
83
|
+
*/
|
|
84
|
+
shell?: {
|
|
85
|
+
exec(command: string, args?: string[], options?: {
|
|
86
|
+
cwd?: string;
|
|
87
|
+
timeout?: number;
|
|
88
|
+
env?: Record<string, string>;
|
|
89
|
+
}): Promise<{
|
|
90
|
+
code: number;
|
|
91
|
+
stdout: string;
|
|
92
|
+
stderr: string;
|
|
93
|
+
ok: boolean;
|
|
94
|
+
}>;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* @module @kb-labs/release-manager-checks/runner
|
|
100
|
+
* Simple checks runner implementation
|
|
101
|
+
*/
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Run multiple checks
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const checks = [
|
|
109
|
+
* { id: 'build', name: 'Build', command: 'npm run build' },
|
|
110
|
+
* { id: 'test', name: 'Tests', command: 'npm test' },
|
|
111
|
+
* ];
|
|
112
|
+
*
|
|
113
|
+
* const results = await runChecks(checks, {
|
|
114
|
+
* cwd: '/path/to/repo',
|
|
115
|
+
* shell: ctx.api.shell,
|
|
116
|
+
* });
|
|
117
|
+
*
|
|
118
|
+
* const allPassed = results.every(r => r.ok);
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
declare function runChecks(checks: CheckConfig[], options?: RunChecksOptions): Promise<CheckResult[]>;
|
|
122
|
+
|
|
123
|
+
export { type CheckConfig, type CheckResult, type RunChecksOptions, runChecks };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// src/runner.ts
|
|
2
|
+
async function runSingleCheck(check, options) {
|
|
3
|
+
const startTime = Date.now();
|
|
4
|
+
const cwd = check.cwd || options.cwd || process.cwd();
|
|
5
|
+
const timeout = check.timeout || 6e4;
|
|
6
|
+
try {
|
|
7
|
+
if (!options.shell) {
|
|
8
|
+
throw new Error("Shell API is required. Pass options.shell with exec() method.");
|
|
9
|
+
}
|
|
10
|
+
const result = await options.shell.exec(check.command, [], { cwd, timeout });
|
|
11
|
+
return {
|
|
12
|
+
id: check.id,
|
|
13
|
+
name: check.name,
|
|
14
|
+
ok: result.code === 0,
|
|
15
|
+
stdout: result.stdout,
|
|
16
|
+
stderr: result.stderr,
|
|
17
|
+
exitCode: result.code,
|
|
18
|
+
timingMs: Date.now() - startTime,
|
|
19
|
+
error: result.code !== 0 ? `Command failed with exit code ${result.code}` : void 0
|
|
20
|
+
};
|
|
21
|
+
} catch (error) {
|
|
22
|
+
return {
|
|
23
|
+
id: check.id,
|
|
24
|
+
name: check.name,
|
|
25
|
+
ok: false,
|
|
26
|
+
exitCode: 1,
|
|
27
|
+
timingMs: Date.now() - startTime,
|
|
28
|
+
error: error instanceof Error ? error.message : "Unknown error"
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function runChecks(checks, options = {}) {
|
|
33
|
+
if (!checks || checks.length === 0) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
if (options.parallel) {
|
|
37
|
+
return Promise.all(checks.map((check) => runSingleCheck(check, options)));
|
|
38
|
+
} else {
|
|
39
|
+
const results = [];
|
|
40
|
+
for (const check of checks) {
|
|
41
|
+
const result = await runSingleCheck(check, options);
|
|
42
|
+
results.push(result);
|
|
43
|
+
}
|
|
44
|
+
return results;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { runChecks };
|
|
49
|
+
//# sourceMappingURL=index.js.map
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/runner.ts"],"names":[],"mappings":";AAUA,eAAe,cAAA,CACb,OACA,OAAA,EACsB;AACtB,EAAA,MAAM,SAAA,GAAY,KAAK,GAAA,EAAI;AAC3B,EAAA,MAAM,MAAM,KAAA,CAAM,GAAA,IAAO,OAAA,CAAQ,GAAA,IAAO,QAAQ,GAAA,EAAI;AACpD,EAAA,MAAM,OAAA,GAAU,MAAM,OAAA,IAAW,GAAA;AAEjC,EAAA,IAAI;AAEF,IAAA,IAAI,CAAC,QAAQ,KAAA,EAAO;AAClB,MAAA,MAAM,IAAI,MAAM,+DAA+D,CAAA;AAAA,IACjF;AAEA,IAAA,MAAM,MAAA,GAAS,MAAM,OAAA,CAAQ,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,EAAC,EAAG,EAAE,GAAA,EAAK,OAAA,EAAS,CAAA;AAE3E,IAAA,OAAO;AAAA,MACL,IAAI,KAAA,CAAM,EAAA;AAAA,MACV,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,EAAA,EAAI,OAAO,IAAA,KAAS,CAAA;AAAA,MACpB,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,UAAU,MAAA,CAAO,IAAA;AAAA,MACjB,QAAA,EAAU,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA;AAAA,MACvB,OAAO,MAAA,CAAO,IAAA,KAAS,IAAI,CAAA,8BAAA,EAAiC,MAAA,CAAO,IAAI,CAAA,CAAA,GAAK,KAAA;AAAA,KAC9E;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,OAAO;AAAA,MACL,IAAI,KAAA,CAAM,EAAA;AAAA,MACV,MAAM,KAAA,CAAM,IAAA;AAAA,MACZ,EAAA,EAAI,KAAA;AAAA,MACJ,QAAA,EAAU,CAAA;AAAA,MACV,QAAA,EAAU,IAAA,CAAK,GAAA,EAAI,GAAI,SAAA;AAAA,MACvB,KAAA,EAAO,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,KAClD;AAAA,EACF;AACF;AAoBA,eAAsB,SAAA,CACpB,MAAA,EACA,OAAA,GAA4B,EAAC,EACL;AACxB,EAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG;AAClC,IAAA,OAAO,EAAC;AAAA,EACV;AAEA,EAAA,IAAI,QAAQ,QAAA,EAAU;AAEpB,IAAA,OAAO,OAAA,CAAQ,GAAA,CAAI,MAAA,CAAO,GAAA,CAAI,CAAC,UAAU,cAAA,CAAe,KAAA,EAAO,OAAO,CAAC,CAAC,CAAA;AAAA,EAC1E,CAAA,MAAO;AAEL,IAAA,MAAM,UAAyB,EAAC;AAChC,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,KAAA,EAAO,OAAO,CAAA;AAClD,MAAA,OAAA,CAAQ,KAAK,MAAM,CAAA;AAAA,IAIrB;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AACF","file":"index.js","sourcesContent":["/**\n * @module @kb-labs/release-manager-checks/runner\n * Simple checks runner implementation\n */\n\nimport type { CheckConfig, CheckResult, RunChecksOptions } from './types';\n\n/**\n * Run a single check\n */\nasync function runSingleCheck(\n check: CheckConfig,\n options: RunChecksOptions\n): Promise<CheckResult> {\n const startTime = Date.now();\n const cwd = check.cwd || options.cwd || process.cwd();\n const timeout = check.timeout || 60000;\n\n try {\n // Use provided shell API or throw error\n if (!options.shell) {\n throw new Error('Shell API is required. Pass options.shell with exec() method.');\n }\n\n const result = await options.shell.exec(check.command, [], { cwd, timeout });\n\n return {\n id: check.id,\n name: check.name,\n ok: result.code === 0,\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.code,\n timingMs: Date.now() - startTime,\n error: result.code !== 0 ? `Command failed with exit code ${result.code}` : undefined,\n };\n } catch (error) {\n return {\n id: check.id,\n name: check.name,\n ok: false,\n exitCode: 1,\n timingMs: Date.now() - startTime,\n error: error instanceof Error ? error.message : 'Unknown error',\n };\n }\n}\n\n/**\n * Run multiple checks\n *\n * @example\n * ```typescript\n * const checks = [\n * { id: 'build', name: 'Build', command: 'npm run build' },\n * { id: 'test', name: 'Tests', command: 'npm test' },\n * ];\n *\n * const results = await runChecks(checks, {\n * cwd: '/path/to/repo',\n * shell: ctx.api.shell,\n * });\n *\n * const allPassed = results.every(r => r.ok);\n * ```\n */\nexport async function runChecks(\n checks: CheckConfig[],\n options: RunChecksOptions = {}\n): Promise<CheckResult[]> {\n if (!checks || checks.length === 0) {\n return [];\n }\n\n if (options.parallel) {\n // Run all checks in parallel\n return Promise.all(checks.map((check) => runSingleCheck(check, options)));\n } else {\n // Run checks sequentially\n const results: CheckResult[] = [];\n for (const check of checks) {\n const result = await runSingleCheck(check, options);\n results.push(result);\n\n // Optional: stop on first failure (can be made configurable)\n // if (!result.ok) break;\n }\n return results;\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kb-labs/release-manager-checks",
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "KB Labs Release Manager - check adapters for audit, devlink, mind, tests, and build",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"sideEffects": false,
|
|
20
|
+
"author": {
|
|
21
|
+
"name": "Kirill Baranov",
|
|
22
|
+
"url": "https://github.com/kirill-baranov"
|
|
23
|
+
},
|
|
24
|
+
"license": "MIT",
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/kirill-baranov/kb-labs-release-manager.git",
|
|
28
|
+
"directory": "packages/release-manager-checks"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"clean": "rimraf dist",
|
|
32
|
+
"build": "tsup",
|
|
33
|
+
"dev": "tsup --watch",
|
|
34
|
+
"type-check": "tsc --noEmit",
|
|
35
|
+
"lint": "eslint .",
|
|
36
|
+
"lint:fix": "eslint . --fix",
|
|
37
|
+
"test": "vitest run --passWithNoTests -c ../../vitest.config.ts",
|
|
38
|
+
"test:watch": "vitest -c ../../vitest.config.ts"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@kb-labs/plugin-contracts": "^1.4.0",
|
|
42
|
+
"@kb-labs/release-manager-core": "^0.6.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@kb-labs/devkit": "link:../../../../infra/kb-labs-devkit",
|
|
46
|
+
"@types/fs-extra": "^11.0.0",
|
|
47
|
+
"@types/node": "^24.3.3",
|
|
48
|
+
"rimraf": "^6.0.1",
|
|
49
|
+
"tsup": "^8.5.0",
|
|
50
|
+
"typescript": "^5.6.3",
|
|
51
|
+
"vitest": "^3.2.4"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=20.0.0",
|
|
55
|
+
"pnpm": ">=9.0.0"
|
|
56
|
+
}
|
|
57
|
+
}
|