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 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 json
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> Creates kafka topic
66
- delete <topic> Deletes kafka 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> consumer group name
77
- -f, --format <format> message type decoding json, js, raw (default: "json")
78
- -o, --output <filename> write output to specified filename
79
- -a, --from-beginning read messages from the beginning (default: false)
80
- -c, --count <count> a number of messages to read (default: null)
81
- -s, --skip <skip> a number of messages to skip (default: 0)
82
- -h, --help display help for command
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
- -f, --format <format> message format encoding json, js, raw (default: "json")
107
- -i, --input <filename> input filename
108
- -d, --delay <delay> delay in ms after event emitting (default: 0)
109
- -h, --header <header> set a static header (default: [])
110
- --help display help for command
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
@@ -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;
@@ -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, delay, brokers, logLevel, ssl } = _e, rest = __rest(_e, ["dataFormat", "header", "input", "delay", "brokers", "logLevel", "ssl"]);
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, delay));
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.toInt = exports.collect = void 0;
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('-d, --delay <delay>', 'delay in ms after event emitting', toInt, 0)
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.getFormatter = exports.raw = exports.js = exports.json = void 0;
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;
@@ -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.createProducer = exports.createConsumer = exports.createAdmin = exports.createCluster = exports.createClient = exports.getSASL = exports.resourceParser = exports.logLevelParser = void 0;
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;
@@ -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 = exports.createItem = void 0;
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.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.5.4"
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
- "scripts": {
44
- "build": "rm -rf build && tsc",
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
+ }