kafka-console 2.0.0 → 2.0.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/README.md +20 -19
- package/build/cli.js +0 -0
- package/build/commands/config.js +1 -1
- package/build/commands/consume.js +1 -1
- package/build/commands/createTopic.js +1 -1
- package/build/commands/deleteTopic.js +1 -1
- package/build/commands/fetchTopicOffsets.js +1 -1
- package/build/commands/list.js +1 -1
- package/build/commands/metadata.js +1 -1
- package/build/commands/produce.js +3 -3
- package/build/index.js +3 -4
- package/build/utils/formatters.js +2 -2
- package/build/utils/kafka.js +8 -9
- package/build/utils/pool.js +2 -2
- package/package.json +10 -9
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ npm install -g kafka-console
|
|
|
41
41
|
-b, --brokers <brokers> bootstrap server host (default: "localhost:9092")
|
|
42
42
|
-l, --log-level <logLevel> log level
|
|
43
43
|
-t, --timeout <timeout> set a timeout of operation (default: "0")
|
|
44
|
-
-p, --pretty pretty print
|
|
44
|
+
-p, --pretty pretty print (default: false)
|
|
45
45
|
--ssl enable ssl (default: false)
|
|
46
46
|
--mechanism <mechanism> sasl mechanism
|
|
47
47
|
--username <username> sasl username
|
|
@@ -62,8 +62,9 @@ npm install -g kafka-console
|
|
|
62
62
|
metadata Displays kafka server metadata
|
|
63
63
|
list|ls [options] Lists kafka topics
|
|
64
64
|
config [options] Describes config for specific resource
|
|
65
|
-
create <topic>
|
|
66
|
-
delete <topic>
|
|
65
|
+
topic:create <topic> Creates kafka topic
|
|
66
|
+
topic:delete <topic> Deletes kafka topic
|
|
67
|
+
topic:offsets <topic> [timestamp] Shows kafka topic offsets
|
|
67
68
|
help [command] display help for command
|
|
68
69
|
```
|
|
69
70
|
|
|
@@ -73,13 +74,13 @@ npm install -g kafka-console
|
|
|
73
74
|
|
|
74
75
|
#### Options
|
|
75
76
|
```
|
|
76
|
-
-g, --group <group>
|
|
77
|
-
-
|
|
78
|
-
-o, --output <filename>
|
|
79
|
-
-
|
|
80
|
-
-c, --count <count>
|
|
81
|
-
-s, --skip <skip>
|
|
82
|
-
-h, --help
|
|
77
|
+
-g, --group <group> consumer group name (default: "kafka-console-consumer-TIMESTAMP")
|
|
78
|
+
-d, --data-format <data-format> messages data-format: json, js, raw (default: "json")
|
|
79
|
+
-o, --output <filename> write output to specified filename
|
|
80
|
+
-f, --from <from> read messages from the specific timestamp in milliseconds or ISO 8601 format. Set 0 to read from the beginning
|
|
81
|
+
-c, --count <count> a number of messages to read (default: null)
|
|
82
|
+
-s, --skip <skip> a number of messages to skip (default: 0)
|
|
83
|
+
-h, --help display help for command
|
|
83
84
|
```
|
|
84
85
|
|
|
85
86
|
General usage with authentication
|
|
@@ -87,14 +88,14 @@ General usage with authentication
|
|
|
87
88
|
kcli consume $KAFKA_TOPIC -g $KAFKA_TOPIC_GROUP -b $KAFKA_BROKERS --ssl --mechanism plain --username $KAFKA_USERNAME --password $KAFKA_PASSWORD
|
|
88
89
|
```
|
|
89
90
|
|
|
90
|
-
Stdout `jq` example
|
|
91
|
+
Stdout from timestamp `jq` example
|
|
91
92
|
```sh
|
|
92
|
-
kcli consume $KAFKA_TOPIC | jq .value
|
|
93
|
+
kcli consume $KAFKA_TOPIC --from '1970-01-01T00:00:00.000Z' | jq .value
|
|
93
94
|
```
|
|
94
95
|
|
|
95
96
|
Custom data formatter example
|
|
96
97
|
```sh
|
|
97
|
-
kcli consume $KAFKA_TOPIC --format ./formatter/avro.js | jq
|
|
98
|
+
kcli consume $KAFKA_TOPIC --data-format ./formatter/avro.js | jq
|
|
98
99
|
```
|
|
99
100
|
|
|
100
101
|
### Producer
|
|
@@ -103,11 +104,11 @@ kcli consume $KAFKA_TOPIC --format ./formatter/avro.js | jq
|
|
|
103
104
|
|
|
104
105
|
#### Options
|
|
105
106
|
```
|
|
106
|
-
-
|
|
107
|
-
-i, --input <filename>
|
|
108
|
-
-
|
|
109
|
-
-h, --header <header>
|
|
110
|
-
--help
|
|
107
|
+
-d, --data-format <data-format> messages data-format: json, js, raw (default: "json")
|
|
108
|
+
-i, --input <filename> input filename
|
|
109
|
+
-w, --wait <wait> wait the time in ms after sending a message (default: 0)
|
|
110
|
+
-h, --header <header> set a static header (default: [])
|
|
111
|
+
--help display help for command
|
|
111
112
|
```
|
|
112
113
|
|
|
113
114
|
General usage
|
|
@@ -117,7 +118,7 @@ kcli produce $KAFKA_TOPIC -b $KAFKA_BROKERS --ssl --mechanism plain --username $
|
|
|
117
118
|
|
|
118
119
|
Produce a json data from stdin with custom formatter
|
|
119
120
|
```sh
|
|
120
|
-
cat payload.txt|kcli produce $KAFKA_TOPIC --format ./formatter/avro.js
|
|
121
|
+
cat payload.txt|kcli produce $KAFKA_TOPIC --data-format ./formatter/avro.js
|
|
121
122
|
```
|
|
122
123
|
|
|
123
124
|
Produce a json data from stdin
|
package/build/cli.js
CHANGED
|
File without changes
|
package/build/commands/config.js
CHANGED
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = config;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function config(opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (opts, { parent }) {
|
|
@@ -43,4 +44,3 @@ function config(opts_1, _a) {
|
|
|
43
44
|
yield admin.disconnect();
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
|
-
exports.default = config;
|
|
@@ -50,6 +50,7 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
50
50
|
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
51
51
|
};
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.default = consume;
|
|
53
54
|
const Fs = __importStar(require("fs"));
|
|
54
55
|
const kafka_1 = require("../utils/kafka");
|
|
55
56
|
const formatters_1 = require("../utils/formatters");
|
|
@@ -90,4 +91,3 @@ function consume(topic_1, opts_1, _a) {
|
|
|
90
91
|
}
|
|
91
92
|
});
|
|
92
93
|
}
|
|
93
|
-
exports.default = consume;
|
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = createTopic;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function createTopic(topic_1, opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (topic, opts, { parent }) {
|
|
@@ -35,4 +36,3 @@ function createTopic(topic_1, opts_1, _a) {
|
|
|
35
36
|
yield admin.disconnect();
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
|
-
exports.default = createTopic;
|
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = deleteTopic;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function deleteTopic(topic_1, opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (topic, opts, { parent }) {
|
|
@@ -33,4 +34,3 @@ function deleteTopic(topic_1, opts_1, _a) {
|
|
|
33
34
|
yield admin.disconnect();
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
|
-
exports.default = deleteTopic;
|
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = fetchTopicOffset;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function fetchTopicOffset(topic_1, timestamp_1, opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (topic, timestamp, opts, { parent }) {
|
|
@@ -43,4 +44,3 @@ function fetchTopicOffset(topic_1, timestamp_1, opts_1, _a) {
|
|
|
43
44
|
yield admin.disconnect();
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
|
-
exports.default = fetchTopicOffset;
|
package/build/commands/list.js
CHANGED
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = list;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function list(opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (opts, { parent }) {
|
|
@@ -35,4 +36,3 @@ function list(opts_1, _a) {
|
|
|
35
36
|
yield cluster.disconnect();
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
|
-
exports.default = list;
|
|
@@ -20,6 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
return t;
|
|
21
21
|
};
|
|
22
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.default = metadata;
|
|
23
24
|
const kafka_1 = require("../utils/kafka");
|
|
24
25
|
function metadata(opts_1, _a) {
|
|
25
26
|
return __awaiter(this, arguments, void 0, function* (opts, { parent }) {
|
|
@@ -33,4 +34,3 @@ function metadata(opts_1, _a) {
|
|
|
33
34
|
yield cluster.disconnect();
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
|
-
exports.default = metadata;
|
|
@@ -53,6 +53,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
53
53
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
54
54
|
};
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
|
+
exports.default = produce;
|
|
56
57
|
const Fs = __importStar(require("fs"));
|
|
57
58
|
const stream_1 = require("stream");
|
|
58
59
|
const readline_1 = require("readline");
|
|
@@ -84,7 +85,7 @@ function getInput(filename) {
|
|
|
84
85
|
function produce(topic_1, opts_1, _a) {
|
|
85
86
|
return __awaiter(this, arguments, void 0, function* (topic, opts, { parent }) {
|
|
86
87
|
var _b, e_1, _c, _d;
|
|
87
|
-
const _e = Object.assign(Object.assign({}, parent.opts()), opts), { dataFormat, header, input: filename,
|
|
88
|
+
const _e = Object.assign(Object.assign({}, parent.opts()), opts), { dataFormat, header, input: filename, wait, brokers, logLevel, ssl } = _e, rest = __rest(_e, ["dataFormat", "header", "input", "wait", "brokers", "logLevel", "ssl"]);
|
|
88
89
|
const sasl = (0, kafka_1.getSASL)(rest);
|
|
89
90
|
const client = (0, kafka_1.createClient)(brokers, ssl, sasl, logLevel);
|
|
90
91
|
const producer = yield (0, kafka_1.createProducer)(client, topic);
|
|
@@ -108,7 +109,7 @@ function produce(topic_1, opts_1, _a) {
|
|
|
108
109
|
const encodedValue = yield formatter.encode(value);
|
|
109
110
|
const message = { key, value: encodedValue, headers: Object.assign(Object.assign({}, staticHeaders), headers) };
|
|
110
111
|
producer.push(message);
|
|
111
|
-
yield new Promise(resolve => setTimeout(resolve,
|
|
112
|
+
yield new Promise(resolve => setTimeout(resolve, wait));
|
|
112
113
|
}
|
|
113
114
|
}
|
|
114
115
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
@@ -121,4 +122,3 @@ function produce(topic_1, opts_1, _a) {
|
|
|
121
122
|
producer.done();
|
|
122
123
|
});
|
|
123
124
|
}
|
|
124
|
-
exports.default = produce;
|
package/build/index.js
CHANGED
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.collect = collect;
|
|
7
|
+
exports.toInt = toInt;
|
|
7
8
|
const commander_1 = require("commander");
|
|
8
9
|
const kafka_1 = require("./utils/kafka");
|
|
9
10
|
const consume_1 = __importDefault(require("./commands/consume"));
|
|
@@ -18,11 +19,9 @@ const { version } = require('../package.json');
|
|
|
18
19
|
function collect(value, result) {
|
|
19
20
|
return result.concat([value]);
|
|
20
21
|
}
|
|
21
|
-
exports.collect = collect;
|
|
22
22
|
function toInt(value, result) {
|
|
23
23
|
return parseInt(value, 10);
|
|
24
24
|
}
|
|
25
|
-
exports.toInt = toInt;
|
|
26
25
|
const commander = new commander_1.Command();
|
|
27
26
|
commander
|
|
28
27
|
.option('-b, --brokers <brokers>', 'bootstrap server host', process.env.KAFKA_BROKERS || 'localhost:9092')
|
|
@@ -53,7 +52,7 @@ commander
|
|
|
53
52
|
.command('produce <topic>')
|
|
54
53
|
.option('-d, --data-format <data-format>', 'messages data-format: json, js, raw', 'json')
|
|
55
54
|
.option('-i, --input <filename>', 'input filename')
|
|
56
|
-
.option('-
|
|
55
|
+
.option('-w, --wait <wait>', 'wait the time in ms after sending a message', toInt, 0)
|
|
57
56
|
.option('-h, --header <header>', 'set a static header', collect, [])
|
|
58
57
|
.description('Produce kafka topic events')
|
|
59
58
|
.action(produce_1.default);
|
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.raw = exports.js = exports.json = void 0;
|
|
7
|
+
exports.getFormatter = getFormatter;
|
|
7
8
|
const path_1 = __importDefault(require("path"));
|
|
8
9
|
const vm_1 = require("vm");
|
|
9
10
|
exports.json = {
|
|
@@ -35,4 +36,3 @@ function getFormatter(format) {
|
|
|
35
36
|
return require(modulePath);
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
|
-
exports.getFormatter = getFormatter;
|
package/build/utils/kafka.js
CHANGED
|
@@ -19,7 +19,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
19
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.
|
|
22
|
+
exports.logLevelParser = logLevelParser;
|
|
23
|
+
exports.resourceParser = resourceParser;
|
|
24
|
+
exports.getSASL = getSASL;
|
|
25
|
+
exports.createClient = createClient;
|
|
26
|
+
exports.createCluster = createCluster;
|
|
27
|
+
exports.createAdmin = createAdmin;
|
|
28
|
+
exports.createConsumer = createConsumer;
|
|
29
|
+
exports.createProducer = createProducer;
|
|
23
30
|
const kafkajs_1 = require("kafkajs");
|
|
24
31
|
const pool_1 = __importDefault(require("./pool"));
|
|
25
32
|
function logLevelParser(level) {
|
|
@@ -37,7 +44,6 @@ function logLevelParser(level) {
|
|
|
37
44
|
}
|
|
38
45
|
return kafkajs_1.logLevel.NOTHING;
|
|
39
46
|
}
|
|
40
|
-
exports.logLevelParser = logLevelParser;
|
|
41
47
|
function resourceParser(resource) {
|
|
42
48
|
if (/^any$/i.test(resource)) {
|
|
43
49
|
return kafkajs_1.ConfigResourceTypes.UNKNOWN;
|
|
@@ -56,7 +62,6 @@ function resourceParser(resource) {
|
|
|
56
62
|
}
|
|
57
63
|
return kafkajs_1.ConfigResourceTypes.UNKNOWN;
|
|
58
64
|
}
|
|
59
|
-
exports.resourceParser = resourceParser;
|
|
60
65
|
const SASLMap = {
|
|
61
66
|
'plain': (username, password) => ({ username, password }),
|
|
62
67
|
'scram-sha-256': (username, password) => ({ username, password }),
|
|
@@ -75,7 +80,6 @@ function getSASL({ mechanism, username, password, authorizationIdentity, accessK
|
|
|
75
80
|
return { mechanism, oauthBearerProvider };
|
|
76
81
|
}
|
|
77
82
|
}
|
|
78
|
-
exports.getSASL = getSASL;
|
|
79
83
|
function createClient(bootstrapServer, ssl, sasl, level) {
|
|
80
84
|
const options = {
|
|
81
85
|
clientId: 'Kafka CLI',
|
|
@@ -86,7 +90,6 @@ function createClient(bootstrapServer, ssl, sasl, level) {
|
|
|
86
90
|
};
|
|
87
91
|
return new kafkajs_1.Kafka(options);
|
|
88
92
|
}
|
|
89
|
-
exports.createClient = createClient;
|
|
90
93
|
function createCluster(client) {
|
|
91
94
|
return __awaiter(this, void 0, void 0, function* () {
|
|
92
95
|
const createClusterKey = Reflect.ownKeys(client).find(key => /createCluster/.test(key.toString()));
|
|
@@ -96,7 +99,6 @@ function createCluster(client) {
|
|
|
96
99
|
return cluster;
|
|
97
100
|
});
|
|
98
101
|
}
|
|
99
|
-
exports.createCluster = createCluster;
|
|
100
102
|
function createAdmin(client) {
|
|
101
103
|
return __awaiter(this, void 0, void 0, function* () {
|
|
102
104
|
const admin = client.admin();
|
|
@@ -104,7 +106,6 @@ function createAdmin(client) {
|
|
|
104
106
|
return admin;
|
|
105
107
|
});
|
|
106
108
|
}
|
|
107
|
-
exports.createAdmin = createAdmin;
|
|
108
109
|
function createConsumer(client_1, group_1, topic_1, from_1) {
|
|
109
110
|
return __awaiter(this, arguments, void 0, function* (client, group, topic, from, poolOptions = {}) {
|
|
110
111
|
const consumerConfig = {
|
|
@@ -146,7 +147,6 @@ function createConsumer(client_1, group_1, topic_1, from_1) {
|
|
|
146
147
|
return pool;
|
|
147
148
|
});
|
|
148
149
|
}
|
|
149
|
-
exports.createConsumer = createConsumer;
|
|
150
150
|
function createProducer(client, topic) {
|
|
151
151
|
return __awaiter(this, void 0, void 0, function* () {
|
|
152
152
|
const producer = client.producer();
|
|
@@ -179,4 +179,3 @@ function createProducer(client, topic) {
|
|
|
179
179
|
return pool;
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
|
-
exports.createProducer = createProducer;
|
package/build/utils/pool.js
CHANGED
|
@@ -19,7 +19,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
19
19
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.CancelToken =
|
|
22
|
+
exports.CancelToken = void 0;
|
|
23
|
+
exports.createItem = createItem;
|
|
23
24
|
const evnty_1 = __importDefault(require("evnty"));
|
|
24
25
|
function createItem() {
|
|
25
26
|
const result = {};
|
|
@@ -29,7 +30,6 @@ function createItem() {
|
|
|
29
30
|
});
|
|
30
31
|
return result;
|
|
31
32
|
}
|
|
32
|
-
exports.createItem = createItem;
|
|
33
33
|
class CancelToken {
|
|
34
34
|
constructor(timeout) {
|
|
35
35
|
this.timeout = timeout;
|
package/package.json
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kafka-console",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"description": "Kafka CLI tool",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"kcli": "build/cli.js",
|
|
8
8
|
"kafka-console": "build/cli.js"
|
|
9
9
|
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "rm -rf build && tsc",
|
|
12
|
+
"test": "NODE_ENV=test jest",
|
|
13
|
+
"test:cov": "COVERAGE=1 NODE_ENV=test jest",
|
|
14
|
+
"kcli": "ts-node src/index.ts"
|
|
15
|
+
},
|
|
10
16
|
"repository": {
|
|
11
17
|
"type": "git",
|
|
12
18
|
"url": "git+https://github.com/3axap4eHko/kafka-console.git"
|
|
@@ -33,17 +39,12 @@
|
|
|
33
39
|
"jest": "^29.7.0",
|
|
34
40
|
"ts-jest": "^29.2.5",
|
|
35
41
|
"ts-node": "^10.9.2",
|
|
36
|
-
"typescript": "^5.
|
|
42
|
+
"typescript": "^5.6.2"
|
|
37
43
|
},
|
|
38
44
|
"dependencies": {
|
|
39
45
|
"commander": "^12.1.0",
|
|
40
46
|
"evnty": "^2.1.106",
|
|
41
47
|
"kafkajs": "^2.2.4"
|
|
42
48
|
},
|
|
43
|
-
"
|
|
44
|
-
|
|
45
|
-
"test": "NODE_ENV=test jest",
|
|
46
|
-
"test:cov": "COVERAGE=1 NODE_ENV=test jest",
|
|
47
|
-
"kcli": "ts-node src/index.ts"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
49
|
+
"packageManager": "pnpm@9.10.0"
|
|
50
|
+
}
|