diff --git a/docs/v4-to-v5.md b/docs/v4-to-v5.md index ffb95cef1f..6c77ca2684 100644 --- a/docs/v4-to-v5.md +++ b/docs/v4-to-v5.md @@ -178,9 +178,8 @@ Some command arguments/replies have changed to align more closely to data types - `TOPK.QUERY`: `Array` -> `Array` - `GRAPH.SLOWLOG`: `timestamp` has been changed from `Date` to `number` - `JSON.ARRINDEX`: `start` and `end` arguments moved to `{ range: { start: number; end: number; }; }` [^future-proofing] -- `JSON.ARRLEN`: `path` argument moved to `{ path: string; }` [^future-proofing] -- `JSON.DEL`: `path` argument moved to `{ path: string; }` [^future-proofing] -- `JSON.FORGET`: `path` argument moved to `{ path: string; }` [^future-proofing] +- `JSON.ARRLEN`, `JSON.CLEAR`, `JSON.DEBUG MEMORY`, `JSON.DEL`, `JSON.FORGET`, `JSON.OBJKEYS`, `JSON.OBJLEN`, `JSON.STRLEN`, `JSON.TYPE`: `path` argument moved to `{ path: string; }` [^future-proofing] +- : `path` argument moved to `{ path: string; }` [^future-proofing] - `TS.[M][REV]RANGE`: `enum TimeSeriesBucketTimestamp` -> `const TIME_SERIES_BUCKET_TIMESTAMP` [^enum-to-constants], `enum TimeSeriesReducers` -> `const TIME_SERIES_REDUCERS` [^enum-to-constants], the `ALIGN` argument has been moved into `AGGREGRATION` - `TS.SYNUPDATE`: `Array>` -> `Record>` diff --git a/packages/client/lib/commands/SET.ts b/packages/client/lib/commands/SET.ts index f0b1efd4f0..cede62e705 100644 --- a/packages/client/lib/commands/SET.ts +++ b/packages/client/lib/commands/SET.ts @@ -30,11 +30,11 @@ export interface SetOptions { condition?: 'NX' | 'XX'; /** - * @deprecated Use `condition` 'NX' instead + * @deprecated Use `{ condition: 'NX' }` instead. */ NX?: boolean; /** - * @deprecated Use `condition` 'XX' instead + * @deprecated Use `{ condition: 'XX' }` instead. */ XX?: boolean; diff --git a/packages/json/lib/commands/DEBUG_MEMORY.spec.ts b/packages/json/lib/commands/DEBUG_MEMORY.spec.ts index b0e969ab17..8cdd2bdef9 100644 --- a/packages/json/lib/commands/DEBUG_MEMORY.spec.ts +++ b/packages/json/lib/commands/DEBUG_MEMORY.spec.ts @@ -4,7 +4,7 @@ import DEBUG_MEMORY from './DEBUG_MEMORY'; describe('JSON.DEBUG MEMORY', () => { describe('transformArguments', () => { - it('without path', () => { + it('simple', () => { assert.deepEqual( DEBUG_MEMORY.transformArguments('key'), ['JSON.DEBUG', 'MEMORY', 'key'] @@ -13,7 +13,9 @@ describe('JSON.DEBUG MEMORY', () => { it('with path', () => { assert.deepEqual( - DEBUG_MEMORY.transformArguments('key', '$'), + DEBUG_MEMORY.transformArguments('key', { + path: '$' + }), ['JSON.DEBUG', 'MEMORY', 'key', '$'] ); }); @@ -21,7 +23,7 @@ describe('JSON.DEBUG MEMORY', () => { testUtils.testWithClient('client.json.debugMemory', async client => { assert.deepEqual( - await client.json.debugMemory('key', '$'), + await client.json.debugMemory('key'), 0 ); }, GLOBAL.SERVERS.OPEN); diff --git a/packages/json/lib/commands/DEBUG_MEMORY.ts b/packages/json/lib/commands/DEBUG_MEMORY.ts index 765d2da357..17c202ff40 100644 --- a/packages/json/lib/commands/DEBUG_MEMORY.ts +++ b/packages/json/lib/commands/DEBUG_MEMORY.ts @@ -1,13 +1,17 @@ import { RedisArgument, NumberReply, ArrayReply, Command } from '@redis/client/dist/lib/RESP/types'; +export interface JsonDebugMemoryOptions { + path?: RedisArgument; +} + export default { FIRST_KEY_INDEX: 2, IS_READ_ONLY: false, - transformArguments(key: RedisArgument, path?: RedisArgument) { + transformArguments(key: RedisArgument, options?: JsonDebugMemoryOptions) { const args = ['JSON.DEBUG', 'MEMORY', key]; - if (path) { - args.push(path); + if (options?.path) { + args.push(options.path); } return args; diff --git a/packages/json/lib/commands/OBJKEYS.spec.ts b/packages/json/lib/commands/OBJKEYS.spec.ts index 17417098ec..ccdb7f97f6 100644 --- a/packages/json/lib/commands/OBJKEYS.spec.ts +++ b/packages/json/lib/commands/OBJKEYS.spec.ts @@ -4,7 +4,7 @@ import OBJKEYS from './OBJKEYS'; describe('JSON.OBJKEYS', () => { describe('transformArguments', () => { - it('without path', () => { + it('simple', () => { assert.deepEqual( OBJKEYS.transformArguments('key'), ['JSON.OBJKEYS', 'key'] @@ -13,7 +13,9 @@ describe('JSON.OBJKEYS', () => { it('with path', () => { assert.deepEqual( - OBJKEYS.transformArguments('key', '$'), + OBJKEYS.transformArguments('key', { + path: '$' + }), ['JSON.OBJKEYS', 'key', '$'] ); }); @@ -21,7 +23,7 @@ describe('JSON.OBJKEYS', () => { testUtils.testWithClient('client.json.objKeys', async client => { assert.deepEqual( - await client.json.objKeys('key', '$'), + await client.json.objKeys('key'), [null] ); }, GLOBAL.SERVERS.OPEN); diff --git a/packages/json/lib/commands/OBJKEYS.ts b/packages/json/lib/commands/OBJKEYS.ts index 7b4d9d963d..6973d6b1f9 100644 --- a/packages/json/lib/commands/OBJKEYS.ts +++ b/packages/json/lib/commands/OBJKEYS.ts @@ -1,13 +1,17 @@ import { RedisArgument, ArrayReply, BlobStringReply, NullReply, Command } from '@redis/client/dist/lib/RESP/types'; +export interface JsonObjKeysOptions { + path?: RedisArgument; +} + export default { FIRST_KEY_INDEX: 1, IS_READ_ONLY: false, - transformArguments(key: RedisArgument, path?: RedisArgument) { + transformArguments(key: RedisArgument, options?: JsonObjKeysOptions) { const args = ['JSON.OBJKEYS', key]; - if (path) { - args.push(path); + if (options?.path) { + args.push(options.path); } return args; diff --git a/packages/json/lib/commands/OBJLEN.spec.ts b/packages/json/lib/commands/OBJLEN.spec.ts index edea703aa1..c646d3a4f0 100644 --- a/packages/json/lib/commands/OBJLEN.spec.ts +++ b/packages/json/lib/commands/OBJLEN.spec.ts @@ -4,7 +4,7 @@ import OBJLEN from './OBJLEN'; describe('JSON.OBJLEN', () => { describe('transformArguments', () => { - it('without path', () => { + it('simple', () => { assert.deepEqual( OBJLEN.transformArguments('key'), ['JSON.OBJLEN', 'key'] @@ -13,7 +13,9 @@ describe('JSON.OBJLEN', () => { it('with path', () => { assert.deepEqual( - OBJLEN.transformArguments('key', '$'), + OBJLEN.transformArguments('key', { + path: '$' + }), ['JSON.OBJLEN', 'key', '$'] ); }); @@ -21,8 +23,8 @@ describe('JSON.OBJLEN', () => { testUtils.testWithClient('client.json.objLen', async client => { assert.equal( - await client.json.objLen('key', '$'), - [null] + await client.json.objLen('key'), + null ); }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/json/lib/commands/OBJLEN.ts b/packages/json/lib/commands/OBJLEN.ts index 45b8855561..756651bde9 100644 --- a/packages/json/lib/commands/OBJLEN.ts +++ b/packages/json/lib/commands/OBJLEN.ts @@ -1,13 +1,17 @@ import { RedisArgument, NumberReply, ArrayReply, NullReply, Command } from '@redis/client/dist/lib/RESP/types'; +export interface JsonObjLenOptions { + path?: RedisArgument; +} + export default { FIRST_KEY_INDEX: 1, IS_READ_ONLY: true, - transformArguments(key: RedisArgument, path?: RedisArgument) { + transformArguments(key: RedisArgument, options?: JsonObjLenOptions) { const args = ['JSON.OBJLEN', key]; - if (path) { - args.push(path); + if (options?.path) { + args.push(options.path); } return args; diff --git a/packages/json/lib/commands/SET.ts b/packages/json/lib/commands/SET.ts index 9edebaa430..78aea4b354 100644 --- a/packages/json/lib/commands/SET.ts +++ b/packages/json/lib/commands/SET.ts @@ -1,23 +1,34 @@ import { RedisArgument, SimpleStringReply, NullReply, Command } from '@redis/client/dist/lib/RESP/types'; import { RedisJSON, transformRedisJsonArgument } from '.'; -export interface NX { - NX: true; -} - -export interface XX { - XX: true; +export interface JsonSetOptions { + condition?: 'NX' | 'XX'; + /** + * @deprecated Use `{ condition: 'NX' }` instead. + */ + NX?: boolean; + /** + * @deprecated Use `{ condition: 'XX' }` instead. + */ + XX?: boolean; } export default { FIRST_KEY_INDEX: 1, IS_READ_ONLY: false, - transformArguments(key: RedisArgument, path: RedisArgument, json: RedisJSON, options?: NX | XX) { + transformArguments( + key: RedisArgument, + path: RedisArgument, + json: RedisJSON, + options?: JsonSetOptions + ) { const args = ['JSON.SET', key, path, transformRedisJsonArgument(json)]; - if ((options)?.NX) { + if (options?.condition) { + args.push(options?.condition); + } else if (options?.NX) { args.push('NX'); - } else if ((options)?.XX) { + } else if (options?.XX) { args.push('XX'); } diff --git a/packages/json/lib/commands/STRLEN.spec.ts b/packages/json/lib/commands/STRLEN.spec.ts index 687a55553e..5bb0548ffa 100644 --- a/packages/json/lib/commands/STRLEN.spec.ts +++ b/packages/json/lib/commands/STRLEN.spec.ts @@ -4,7 +4,7 @@ import STRLEN from './STRLEN'; describe('JSON.STRLEN', () => { describe('transformArguments', () => { - it('without path', () => { + it('simple', () => { assert.deepEqual( STRLEN.transformArguments('key'), ['JSON.STRLEN', 'key'] @@ -13,7 +13,9 @@ describe('JSON.STRLEN', () => { it('with path', () => { assert.deepEqual( - STRLEN.transformArguments('key', '$'), + STRLEN.transformArguments('key', { + path: '$' + }), ['JSON.STRLEN', 'key', '$'] ); }); @@ -22,9 +24,9 @@ describe('JSON.STRLEN', () => { testUtils.testWithClient('client.json.strLen', async client => { const [, reply] = await Promise.all([ client.json.set('key', '$', ''), - client.json.strLen('key', '$') + client.json.strLen('key') ]); - assert.deepEqual(reply, [0]); + assert.deepEqual(reply, 0); }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/json/lib/commands/STRLEN.ts b/packages/json/lib/commands/STRLEN.ts index 256414fb91..3b514d9cab 100644 --- a/packages/json/lib/commands/STRLEN.ts +++ b/packages/json/lib/commands/STRLEN.ts @@ -1,13 +1,17 @@ import { RedisArgument, ArrayReply, NumberReply, NullReply, Command } from '@redis/client/dist/lib/RESP/types'; +export interface JsonStrLenOptions { + path?: RedisArgument; +} + export default { FIRST_KEY_INDEX: 1, - IS_READ_ONLY: false, - transformArguments(key: RedisArgument, path?: RedisArgument) { + IS_READ_ONLY: true, + transformArguments(key: RedisArgument, options?: JsonStrLenOptions) { const args = ['JSON.STRLEN', key]; - if (path) { - args.push(path); + if (options?.path) { + args.push(options.path); } return args; diff --git a/packages/json/lib/commands/TOGGLE.spec.ts b/packages/json/lib/commands/TOGGLE.spec.ts index 3ce922a7b8..1c785d97b1 100644 --- a/packages/json/lib/commands/TOGGLE.spec.ts +++ b/packages/json/lib/commands/TOGGLE.spec.ts @@ -3,20 +3,11 @@ import testUtils, { GLOBAL } from '../test-utils'; import TOGGLE from './TOGGLE'; describe('JSON.TOGGLE', () => { - describe('transformArguments', () => { - it('without path', () => { - assert.deepEqual( - TOGGLE.transformArguments('key'), - ['JSON.TOGGLE', 'key'] - ); - }); - - it('with path', () => { - assert.deepEqual( - TOGGLE.transformArguments('key', '$'), - ['JSON.TOGGLE', 'key', '$'] - ); - }); + it('transformArguments', () => { + assert.deepEqual( + TOGGLE.transformArguments('key', '$'), + ['JSON.TOGGLE', 'key', '$'] + ); }); testUtils.testWithClient('client.json.toggle', async client => { diff --git a/packages/json/lib/commands/TOGGLE.ts b/packages/json/lib/commands/TOGGLE.ts index 85e5e479aa..2a8df3eba3 100644 --- a/packages/json/lib/commands/TOGGLE.ts +++ b/packages/json/lib/commands/TOGGLE.ts @@ -3,14 +3,8 @@ import { RedisArgument, ArrayReply, NumberReply, NullReply, Command, } from '@re export default { FIRST_KEY_INDEX: 1, IS_READ_ONLY: false, - transformArguments(key: RedisArgument, path?: RedisArgument) { - const args = ['JSON.TOGGLE', key] - - if (path) { - args.push(path); - } - - return args; + transformArguments(key: RedisArgument, path: RedisArgument) { + return ['JSON.TOGGLE', key, path]; }, transformReply: undefined as unknown as () => NumberReply | NullReply | ArrayReply } as const satisfies Command; diff --git a/packages/json/lib/commands/TYPE.spec.ts b/packages/json/lib/commands/TYPE.spec.ts index 5cecfb827a..2a90a3bf9e 100644 --- a/packages/json/lib/commands/TYPE.spec.ts +++ b/packages/json/lib/commands/TYPE.spec.ts @@ -1,28 +1,32 @@ import { strict as assert } from 'assert'; import testUtils, { GLOBAL } from '../test-utils'; -import { transformArguments } from './TYPE'; +import TYPE from './TYPE'; describe('TYPE', () => { - describe('transformArguments', () => { - it('without path', () => { - assert.deepEqual( - transformArguments('key'), - ['JSON.TYPE', 'key'] - ); - }); - - it('with path', () => { - assert.deepEqual( - transformArguments('key', '$'), - ['JSON.TYPE', 'key', '$'] - ); - }); + describe('transformArguments', () => { + it('simple', () => { + assert.deepEqual( + transformArguments('key'), + ['JSON.TYPE', 'key'] + ); }); - // testUtils.testWithClient('client.json.type', async client => { - // assert.deepEqual( - // await client.json.type('key', '$'), - // [null] - // ); - // }, GLOBAL.SERVERS.OPEN); + it('with path', () => { + assert.deepEqual( + transformArguments('key', { + path: '$' + }), + ['JSON.TYPE', 'key', '$'] + ); + }); + }); + + testUtils.testWithClient('client.json.type', async client => { + assert.deepEqual( + await client.json.type('key', { + path: '$' + }), + [null] + ); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/json/lib/commands/TYPE.ts b/packages/json/lib/commands/TYPE.ts index 7fd55f625d..68c5d850eb 100644 --- a/packages/json/lib/commands/TYPE.ts +++ b/packages/json/lib/commands/TYPE.ts @@ -1,13 +1,25 @@ -export const FIRST_KEY_INDEX = 1; +import { NullReply, BlobStringReply, ArrayReply, Command, RedisArgument } from '@redis/client/dist/lib/RESP/types'; -export function transformArguments(key: string, path?: string): Array { +export interface JsonTypeOptions { + path?: RedisArgument; +} + +export default { + FIRST_KEY_INDEX: 1, + IS_READ_ONLY: true, + transformArguments(key: RedisArgument, options?: JsonTypeOptions) { const args = ['JSON.TYPE', key]; - if (path) { - args.push(path); + if (options?.path) { + args.push(options.path); } return args; -} + }, + transformReply: { + 2: undefined as unknown as () => NullReply | BlobStringReply | ArrayReply, + // TODO: ?!??! + 3: undefined as unknown as () => any + } +} as const satisfies Command; -export declare function transformReply(): string | null | Array; diff --git a/packages/json/lib/commands/index.ts b/packages/json/lib/commands/index.ts index 4405f1b423..6769594ad5 100644 --- a/packages/json/lib/commands/index.ts +++ b/packages/json/lib/commands/index.ts @@ -19,7 +19,7 @@ import SET from './SET'; import STRAPPEND from './STRAPPEND'; import STRLEN from './STRLEN'; import TOGGLE from './TOGGLE'; -// import TYPE from './TYPE'; +import TYPE from './TYPE'; export default { ARRAPPEND, @@ -64,8 +64,8 @@ export default { strLen: STRLEN, TOGGLE, toggle: TOGGLE, - // TYPE, - // type: TYPE + TYPE, + type: TYPE }; // https://github.com/Microsoft/TypeScript/issues/3496#issuecomment-128553540 diff --git a/packages/search/lib/commands/ALTER.spec.ts b/packages/search/lib/commands/ALTER.spec.ts index e9724757ad..26f5d48de1 100644 --- a/packages/search/lib/commands/ALTER.spec.ts +++ b/packages/search/lib/commands/ALTER.spec.ts @@ -1,37 +1,35 @@ import { strict as assert } from 'assert'; import testUtils, { GLOBAL } from '../test-utils'; -import { transformArguments } from './ALTER'; -import { SchemaFieldTypes } from '.'; +import ALTER from './ALTER'; +import { SCHEMA_FIELD_TYPE } from './CREATE'; -describe('ALTER', () => { - describe('transformArguments', () => { - it('with NOINDEX', () => { - assert.deepEqual( - transformArguments('index', { - field: { - type: SchemaFieldTypes.TEXT, - NOINDEX: true, - SORTABLE: 'UNF', - AS: 'text' - } - }), - ['FT.ALTER', 'index', 'SCHEMA', 'ADD', 'field', 'AS', 'text', 'TEXT', 'SORTABLE', 'UNF', 'NOINDEX'] - ); - }); +describe('FT.ALTER', () => { + describe('transformArguments', () => { + it('with NOINDEX', () => { + assert.deepEqual( + ALTER.transformArguments('index', { + field: { + type: SCHEMA_FIELD_TYPE.TEXT, + NOINDEX: true, + SORTABLE: 'UNF', + AS: 'text' + } + }), + ['FT.ALTER', 'index', 'SCHEMA', 'ADD', 'field', 'AS', 'text', 'TEXT', 'SORTABLE', 'UNF', 'NOINDEX'] + ); }); + }); - testUtils.testWithClient('client.ft.create', async client => { - await Promise.all([ - client.ft.create('index', { - title: SchemaFieldTypes.TEXT - }), - ]); + testUtils.testWithClient('client.ft.create', async client => { + const [, reply] = await Promise.all([ + client.ft.create('index', { + title: SCHEMA_FIELD_TYPE.TEXT + }), + client.ft.alter('index', { + body: SCHEMA_FIELD_TYPE.TEXT + }) + ]); - assert.equal( - await client.ft.alter('index', { - body: SchemaFieldTypes.TEXT - }), - 'OK' - ); - }, GLOBAL.SERVERS.OPEN); + assert.equal(reply, 'OK'); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/search/lib/commands/ALTER.ts b/packages/search/lib/commands/ALTER.ts index bb4c5202c6..d5587b2397 100644 --- a/packages/search/lib/commands/ALTER.ts +++ b/packages/search/lib/commands/ALTER.ts @@ -1,10 +1,13 @@ -import { RediSearchSchema, pushSchema } from '.'; +import { RedisArgument, SimpleStringReply, Command } from '@redis/client/dist/lib/RESP/types'; +import { RediSearchSchema, pushSchema } from './CREATE'; -export function transformArguments(index: string, schema: RediSearchSchema): Array { +export default { + FIRST_KEY_INDEX: undefined, + IS_READ_ONLY: true, + transformArguments(index: RedisArgument, schema: RediSearchSchema) { const args = ['FT.ALTER', index, 'SCHEMA', 'ADD']; pushSchema(args, schema); - return args; -} - -export declare function transformReply(): 'OK'; + }, + transformReply: undefined as unknown as () => SimpleStringReply<'OK'> +} as const satisfies Command; diff --git a/packages/search/lib/commands/CONFIG_SET.spec.ts b/packages/search/lib/commands/CONFIG_SET.spec.ts index 59cb63a3d8..263c99c232 100644 --- a/packages/search/lib/commands/CONFIG_SET.spec.ts +++ b/packages/search/lib/commands/CONFIG_SET.spec.ts @@ -1,12 +1,19 @@ import { strict as assert } from 'assert'; import testUtils, { GLOBAL } from '../test-utils'; -import { transformArguments } from './CONFIG_SET'; +import CONFIG_SET from './CONFIG_SET'; -describe('CONFIG SET', () => { - it('transformArguments', () => { - assert.deepEqual( - transformArguments('TIMEOUT', '500'), - ['FT.CONFIG', 'SET', 'TIMEOUT', '500'] - ); - }); +describe('FT.CONFIG SET', () => { + it('transformArguments', () => { + assert.deepEqual( + CONFIG_SET.transformArguments('TIMEOUT', '500'), + ['FT.CONFIG', 'SET', 'TIMEOUT', '500'] + ); + }); + + testUtils.testWithClient('client.ft.configSet', async client => { + assert.deepEqual( + await client.ft.configSet('TIMEOUT', '500'), + 'OK' + ); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/search/lib/commands/CONFIG_SET.ts b/packages/search/lib/commands/CONFIG_SET.ts index 93b76d79ed..ac001bf68a 100644 --- a/packages/search/lib/commands/CONFIG_SET.ts +++ b/packages/search/lib/commands/CONFIG_SET.ts @@ -1,5 +1,14 @@ -export function transformArguments(option: string, value: string): Array { - return ['FT.CONFIG', 'SET', option, value]; -} +import { RedisArgument, SimpleStringReply, Command } from '@redis/client/dist/lib/RESP/types'; -export declare function transformReply(): 'OK'; +// using `string & {}` to avoid TS widening the type to `string` +// TODO +type FtConfigProperties = 'a' | 'b' | (string & {}) | Buffer; + +export default { + FIRST_KEY_INDEX: undefined, + IS_READ_ONLY: true, + transformArguments(property: FtConfigProperties, value: RedisArgument) { + return ['FT.CONFIG', 'SET', property, value]; + }, + transformReply: undefined as unknown as () => SimpleStringReply<'OK'> +} as const satisfies Command; diff --git a/packages/search/lib/commands/index.ts b/packages/search/lib/commands/index.ts index d4a5c28da7..27bd3dfb22 100644 --- a/packages/search/lib/commands/index.ts +++ b/packages/search/lib/commands/index.ts @@ -1,12 +1,12 @@ import _LIST from './_LIST'; -// import ALTER from './ALTER'; +import ALTER from './ALTER'; // import AGGREGATE_WITHCURSOR from './AGGREGATE_WITHCURSOR'; // import AGGREGATE from './AGGREGATE'; import ALIASADD from './ALIASADD'; import ALIASDEL from './ALIASDEL'; import ALIASUPDATE from './ALIASUPDATE'; // import CONFIG_GET from './CONFIG_GET'; -// import CONFIG_SET from './CONFIG_SET'; +import CONFIG_SET from './CONFIG_SET'; import CREATE from './CREATE'; import CURSOR_DEL from './CURSOR_DEL'; // import CURSOR_READ from './CURSOR_READ'; @@ -39,8 +39,8 @@ import { CommandArguments } from '@redis/client/dist/lib/RESP/types'; export default { _LIST, _list: _LIST, - // ALTER, - // alter: ALTER, + ALTER, + alter: ALTER, // AGGREGATE_WITHCURSOR, // aggregateWithCursor: AGGREGATE_WITHCURSOR, // AGGREGATE, @@ -53,8 +53,8 @@ export default { aliasUpdate: ALIASUPDATE, // CONFIG_GET, // configGet: CONFIG_GET, - // CONFIG_SET, - // configSet: CONFIG_SET, + CONFIG_SET, + configSet: CONFIG_SET, CREATE, create: CREATE, CURSOR_DEL,