kafka-ts 0.0.3 → 0.0.4
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 +4 -0
- package/dist/client.d.ts +1 -2
- package/package.json +1 -1
- package/.prettierrc +0 -8
- package/src/__snapshots__/cluster.test.ts.snap +0 -1281
- package/src/api/api-versions.ts +0 -21
- package/src/api/create-topics.ts +0 -78
- package/src/api/delete-topics.ts +0 -42
- package/src/api/fetch.ts +0 -198
- package/src/api/find-coordinator.ts +0 -39
- package/src/api/heartbeat.ts +0 -33
- package/src/api/index.ts +0 -166
- package/src/api/init-producer-id.ts +0 -35
- package/src/api/join-group.ts +0 -67
- package/src/api/leave-group.ts +0 -48
- package/src/api/list-offsets.ts +0 -65
- package/src/api/metadata.ts +0 -66
- package/src/api/offset-commit.ts +0 -67
- package/src/api/offset-fetch.ts +0 -70
- package/src/api/produce.ts +0 -170
- package/src/api/sasl-authenticate.ts +0 -21
- package/src/api/sasl-handshake.ts +0 -16
- package/src/api/sync-group.ts +0 -54
- package/src/auth/index.ts +0 -2
- package/src/auth/plain.ts +0 -10
- package/src/auth/scram.ts +0 -52
- package/src/broker.ts +0 -72
- package/src/client.ts +0 -47
- package/src/cluster.test.ts +0 -371
- package/src/cluster.ts +0 -85
- package/src/codecs/gzip.ts +0 -9
- package/src/codecs/index.ts +0 -16
- package/src/codecs/none.ts +0 -6
- package/src/codecs/types.ts +0 -4
- package/src/connection.ts +0 -157
- package/src/consumer/consumer-group.ts +0 -229
- package/src/consumer/consumer-metadata.ts +0 -14
- package/src/consumer/consumer.ts +0 -252
- package/src/consumer/fetch-manager.ts +0 -169
- package/src/consumer/fetcher.ts +0 -64
- package/src/consumer/offset-manager.ts +0 -104
- package/src/consumer/processor.ts +0 -53
- package/src/distributors/assignments-to-replicas.test.ts +0 -43
- package/src/distributors/assignments-to-replicas.ts +0 -83
- package/src/distributors/messages-to-topic-partition-leaders.test.ts +0 -32
- package/src/distributors/messages-to-topic-partition-leaders.ts +0 -19
- package/src/distributors/partitioner.ts +0 -27
- package/src/index.ts +0 -9
- package/src/metadata.ts +0 -126
- package/src/producer/producer.ts +0 -142
- package/src/types.ts +0 -11
- package/src/utils/api.ts +0 -11
- package/src/utils/crypto.ts +0 -15
- package/src/utils/decoder.ts +0 -174
- package/src/utils/delay.ts +0 -1
- package/src/utils/encoder.ts +0 -148
- package/src/utils/error.ts +0 -21
- package/src/utils/logger.ts +0 -37
- package/src/utils/memo.ts +0 -12
- package/src/utils/murmur2.ts +0 -44
- package/src/utils/retrier.ts +0 -39
- package/src/utils/tracer.ts +0 -49
- package/tsconfig.json +0 -17
package/src/utils/memo.ts
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const memo = <T extends (...args: any[]) => any>(fn: T) => {
|
|
2
|
-
const cache: Record<string, ReturnType<T>> = {};
|
|
3
|
-
return (...args: Parameters<T>): ReturnType<T> => {
|
|
4
|
-
const key = JSON.stringify(args);
|
|
5
|
-
if (cache[key]) {
|
|
6
|
-
return cache[key];
|
|
7
|
-
}
|
|
8
|
-
const result = fn(...args);
|
|
9
|
-
cache[key] = result;
|
|
10
|
-
return result;
|
|
11
|
-
};
|
|
12
|
-
};
|
package/src/utils/murmur2.ts
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/* https://github.com/apache/kafka/blob/0.10.2/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L364 */
|
|
2
|
-
|
|
3
|
-
export const murmur2 = (data: Buffer): number => {
|
|
4
|
-
const length = data.length;
|
|
5
|
-
const seed = 0x9747b28c;
|
|
6
|
-
|
|
7
|
-
const m = 0x5bd1e995;
|
|
8
|
-
const r = 24;
|
|
9
|
-
|
|
10
|
-
let h = seed ^ length;
|
|
11
|
-
let length4 = Math.floor(length / 4);
|
|
12
|
-
|
|
13
|
-
for (let i = 0; i < length4; i++) {
|
|
14
|
-
const i4 = i * 4;
|
|
15
|
-
let k =
|
|
16
|
-
(data[i4 + 0] & 0xff) +
|
|
17
|
-
((data[i4 + 1] & 0xff) << 8) +
|
|
18
|
-
((data[i4 + 2] & 0xff) << 16) +
|
|
19
|
-
((data[i4 + 3] & 0xff) << 24);
|
|
20
|
-
k *= m;
|
|
21
|
-
k ^= k >> r;
|
|
22
|
-
k *= m;
|
|
23
|
-
h *= m;
|
|
24
|
-
h ^= k;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
switch (length % 4) {
|
|
28
|
-
case 3:
|
|
29
|
-
h = h ^ ((data[(length & ~3) + 2] & 0xff) << 16);
|
|
30
|
-
case 2:
|
|
31
|
-
h = h ^ ((data[(length & ~3) + 1] & 0xff) << 8);
|
|
32
|
-
case 1:
|
|
33
|
-
h = h ^ (data[length & ~3] & 0xff);
|
|
34
|
-
h *= m;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
h ^= h >> 13;
|
|
38
|
-
h *= m;
|
|
39
|
-
h ^= h >> 15;
|
|
40
|
-
|
|
41
|
-
return h;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
export const toPositive = (input: number) => input & 0x7fffffff;
|
package/src/utils/retrier.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { delay } from './delay';
|
|
2
|
-
|
|
3
|
-
export type Retrier = (func: () => unknown) => Promise<void>;
|
|
4
|
-
|
|
5
|
-
export const createExponentialBackoffRetrier =
|
|
6
|
-
(options: {
|
|
7
|
-
onFailure?: (error: unknown) => Promise<void>;
|
|
8
|
-
maxRetries?: number;
|
|
9
|
-
initialDelayMs?: number;
|
|
10
|
-
maxDelayMs?: number;
|
|
11
|
-
multiplier?: number;
|
|
12
|
-
retry?: number;
|
|
13
|
-
}): Retrier =>
|
|
14
|
-
async (func) => {
|
|
15
|
-
try {
|
|
16
|
-
await func();
|
|
17
|
-
} catch (error) {
|
|
18
|
-
const {
|
|
19
|
-
retry = 0,
|
|
20
|
-
maxRetries = 3,
|
|
21
|
-
onFailure = (error) => {
|
|
22
|
-
throw error;
|
|
23
|
-
},
|
|
24
|
-
initialDelayMs = 100,
|
|
25
|
-
maxDelayMs = 3000,
|
|
26
|
-
multiplier = 2,
|
|
27
|
-
} = options;
|
|
28
|
-
|
|
29
|
-
const isMaxRetriesExceeded = retry > maxRetries;
|
|
30
|
-
if (isMaxRetriesExceeded) return onFailure(error);
|
|
31
|
-
|
|
32
|
-
const delayMs = Math.min(maxDelayMs, initialDelayMs * multiplier ** retry);
|
|
33
|
-
await delay(delayMs);
|
|
34
|
-
|
|
35
|
-
return createExponentialBackoffRetrier({ ...options, retry: retry + 1 })(func);
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const defaultRetrier = createExponentialBackoffRetrier({});
|
package/src/utils/tracer.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { log } from './logger';
|
|
2
|
-
|
|
3
|
-
export interface Tracer {
|
|
4
|
-
startActiveSpan<T>(module: string, method: string, metadata: Record<string, unknown>, callback: () => T): T;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
class DebugTracer implements Tracer {
|
|
8
|
-
private isEnabled = process.env.DEBUG?.includes('kafka-ts');
|
|
9
|
-
|
|
10
|
-
startActiveSpan<T>(module: string, method: string, metadata: Record<string, unknown>, callback: () => T): T {
|
|
11
|
-
if (!this.isEnabled) {
|
|
12
|
-
return callback();
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
const startTime = Date.now();
|
|
16
|
-
|
|
17
|
-
const onEnd = <T>(result: T): T => {
|
|
18
|
-
log.debug(`[${module}.${method}] ${metadata?.message ?? ''} +${Date.now() - startTime}ms`, {
|
|
19
|
-
...metadata,
|
|
20
|
-
...(!!result && { result }),
|
|
21
|
-
});
|
|
22
|
-
return result;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
const result = callback();
|
|
26
|
-
if (result instanceof Promise) {
|
|
27
|
-
return result.then(onEnd) as T;
|
|
28
|
-
}
|
|
29
|
-
onEnd(result);
|
|
30
|
-
return result;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
let tracer: Tracer = new DebugTracer();
|
|
35
|
-
|
|
36
|
-
export const setTracer = <T>(newTracer: Tracer) => {
|
|
37
|
-
tracer = newTracer;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
export const createTracer =
|
|
41
|
-
(module: string) =>
|
|
42
|
-
(fn?: (...args: any[]) => Record<string, unknown> | undefined) =>
|
|
43
|
-
(target: any, propertyKey: string, descriptor: PropertyDescriptor) => {
|
|
44
|
-
const original = descriptor.value;
|
|
45
|
-
descriptor.value = function (...args: any[]) {
|
|
46
|
-
const metadata = fn?.(...args);
|
|
47
|
-
return tracer.startActiveSpan(module, propertyKey, { ...metadata }, () => original.apply(this, args));
|
|
48
|
-
};
|
|
49
|
-
};
|
package/tsconfig.json
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"lib": ["es2023"],
|
|
4
|
-
"target": "es2022",
|
|
5
|
-
"module": "node16",
|
|
6
|
-
"strict": true,
|
|
7
|
-
"forceConsistentCasingInFileNames": true,
|
|
8
|
-
"esModuleInterop": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"moduleResolution": "node16",
|
|
11
|
-
"outDir": "dist",
|
|
12
|
-
"declaration": true,
|
|
13
|
-
"emitDecoratorMetadata": true,
|
|
14
|
-
"experimentalDecorators": true
|
|
15
|
-
},
|
|
16
|
-
"include": ["src/**/*"]
|
|
17
|
-
}
|