Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .eslintrc.cjs
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
module.exports = {
extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
parser: "@typescript-eslint/parser",
plugins: ["@typescript-eslint"],
plugins: ["@typescript-eslint", 'eslint-plugin-tsdoc'],
root: true,
env: {
browser: true,
node: true,
jest: true,
},
rules: {
'tsdoc/syntax': 'error'
}
};
2 changes: 1 addition & 1 deletion .github/workflows/lint-ts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,6 @@ jobs:
- uses: actions/checkout@v3
- name: lint ts
run: |
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint typescript
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-tsdoc eslint typescript
npm i
npx eslint .
4 changes: 3 additions & 1 deletion node/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@
"build-protobuf": "npm run compile-protobuf-files && npm run fix-protobuf-file",
"compile-protobuf-files": "cd src && pbjs -t static-module -o ProtobufMessage.js ../../babushka-core/src/protobuf/*.proto && pbts -o ProtobufMessage.d.ts ProtobufMessage.js",
"fix-protobuf-file": "replace 'this\\.encode\\(message, writer\\)\\.ldelim' 'this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim' src/ProtobufMessage.js",
"test": "jest --verbose --runInBand"
"test": "jest --verbose --runInBand",
"lint": "eslint -f unix \"src/**/*.{ts,tsx}\""
},
"devDependencies": {
"@babel/preset-env": "^7.20.2",
Expand All @@ -32,6 +33,7 @@
"@typescript-eslint/parser": "^5.54.1",
"babel-jest": "^28.1.3",
"eslint": "^8.36.0",
"eslint-plugin-tsdoc": "^0.2.17",
"find-free-port": "^2.0.0",
"jest": "^28.1.3",
"protobufjs-cli": "^1.1.1",
Expand Down
43 changes: 32 additions & 11 deletions node/src/RedisClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -258,14 +258,27 @@ export class RedisClient {
this.writeBufferedRequestsToSocket();
}

/// Get the value associated with the given key, or null if no such value exists.
/// See https://redis.io/commands/get/ for details.

/** Get the value associated with the given key, or null if no such value exists.
* See https://redis.io/commands/get/ for details.
*
* @param key - The key to retrieve from the database.
* @returns If the key exists, returns the value of the key as a string. Otherwise, return null.
*/
public get(key: string): Promise<string | null> {
return this.createWritePromise(createGet(key));
}

/// Set the given key with the given value. Return value is dependent on the passed options.
/// See https://redis.io/commands/set/ for details.
/** Set the given key with the given value. Return value is dependent on the passed options.
* See https://redis.io/commands/set/ for details.
*
* @param key - The key to store.
* @param value - The value to store with the given key.
* @param options - The set options.
* @returns - If the value is successfully set, return OK.
* If value isn't set because of only_if_exists or only_if_does_not_exist conditions, return null.
* If return_old_value is set, return the old value as a string.
*/
public set(
key: string,
value: string,
Expand All @@ -274,24 +287,32 @@ export class RedisClient {
return this.createWritePromise(createSet(key, value, options));
}

/// Returns information and statistics about the server according to the given arguments.
/// When no parameter is provided, the default option is assumed.
/// See https://redis.io/commands/info/ for details.
/** Get information and statistics about the Redis server.
* See https://redis.io/commands/info/ for details.
*
* @param options - A list of InfoSection values specifying which sections of information to retrieve.
* When no parameter is provided, the default option is assumed.
* @returns a string containing the information for the sections requested.
*/
public info(options?: InfoOptions[]): Promise<string> {
return this.createWritePromise(createInfo(options));
}

/// Removes the specified keys. A key is ignored if it does not exist.
/// Returns the number of keys that were removed.
/// See https://redis.io/commands/del/ for details.
/** Get information and statistics about the Redis server.
* See https://redis.io/commands/info/ for details.
*
* @param options - A list of InfoSection values specifying which sections of information to retrieve.
* When no parameter is provided, the default option is assumed.
* @returns a string containing the information for the sections requested.
*/
public del(keys: string[]): Promise<number> {
return this.createWritePromise(createDel(keys));
}

/** Change the currently selected Redis database.
* See https://redis.io/commands/select/ for details.
*
* @param index : The index of the database to select.
* @param index - The index of the database to select.
* @returns A simple OK response.
*/
public select(index: number): Promise<"OK"> {
Expand Down
14 changes: 11 additions & 3 deletions node/src/RedisClusterClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,24 @@ export class RedisClusterClient extends RedisClient {
return super.createWritePromise(command, toProtobufRoute(route));
}

/// Returns information and statistics about the server according to the given arguments.
/// See https://redis.io/commands/info/ for details.

/** Get information and statistics about the Redis server.
* See https://redis.io/commands/info/ for details.
*
* @param options - A list of InfoSection values specifying which sections of information to retrieve.
* When no parameter is provided, the default option is assumed.
* @param route - The command will be routed automatically, unless `route` is provided, in which
* case the client will initially try to route the command to the nodes defined by `route`.
* @returns a string containing the information for the sections requested.
*/
public info(options?: InfoOptions[], route?: Routes): Promise<string> {
return this.createWritePromise(createInfo(options), toProtobufRoute(route));
}

/** Resets the statistics reported by Redis using the INFO and LATENCY HISTOGRAM commands.
* See https://redis.io/commands/config-resetstat/ for details.
*
* @param route The command will be routed automatically, unless `route` is provided, in which
* @param route - The command will be routed automatically, unless `route` is provided, in which
* case the client will initially try to route the command to the nodes defined by `route`.
*
* @returns always "OK"
Expand Down
42 changes: 31 additions & 11 deletions node/src/Transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,27 +15,47 @@ import { redis_request } from "./ProtobufMessage";
export class BaseTransaction {
readonly commands: redis_request.Command[] = [];

/// Get the value associated with the given key, or null if no such value exists.
/// See https://redis.io/commands/get/ for details.
/** Get the value associated with the given key, or null if no such value exists.
* See https://redis.io/commands/get/ for details.
*
* @param key - The key to retrieve from the database.
* @returns If the key exists, returns the value of the key as a string. Otherwise, return null.
*/
public get(key: string) {
this.commands.push(createGet(key));
}

/// Set the given key with the given value. Return value is dependent on the passed options.
/// See https://redis.io/commands/set/ for details.
/** Set the given key with the given value. Return value is dependent on the passed options.
* See https://redis.io/commands/set/ for details.
*
* @param key - The key to store.
* @param value - The value to store with the given key.
* @param options - The set options.
* @returns If the value is successfully set, return OK.
* If value isn't set because of only_if_exists or only_if_does_not_exist conditions, return null.
* If return_old_value is set, return the old value as a string.
*/
public set(key: string, value: string, options?: SetOptions) {
this.commands.push(createSet(key, value, options));
}

/// Returns information and statistics about the server according to the given arguments.
/// See https://redis.io/commands/info/ for details.
/** Get information and statistics about the Redis server.
* See https://redis.io/commands/info/ for details.
*
* @param options - A list of InfoSection values specifying which sections of information to retrieve.
* When no parameter is provided, the default option is assumed.
* @returns a string containing the information for the sections requested.
*/
public info(options?: InfoOptions[]) {
this.commands.push(createInfo(options));
}

/// Removes the specified keys. A key is ignored if it does not exist.
/// Returns the number of keys that were removed.
/// See https://redis.io/commands/del/ for details.
/** Remove the specified keys. A key is ignored if it does not exist.
* See https://redis.io/commands/del/ for details.
*
* @param keys - A list of keys to be deleted from the database.
* @returns the number of keys that were removed.
*/
public del(keys: string[]) {
this.commands.push(createDel(keys));
}
Expand Down Expand Up @@ -70,8 +90,8 @@ export class Transaction extends BaseTransaction{
/** Change the currently selected Redis database.
* See https://redis.io/commands/select/ for details.
*
* @param index : The index of the database to select.
* @CommandResponse : A simple OK response.
* @param index - The index of the database to select.
* Returns A simple OK response.
*/
public select(index: number) {
this.commands.push(createSelect(index));
Expand Down