Socket
Socket
Sign inDemoInstall

@rewiko/crud-request

Package Overview
Dependencies
16
Maintainers
1
Versions
14
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 5.0.17 to 5.1.0

lib/interfaces/operators-options.interface.d.ts

1

lib/interfaces/index.d.ts

@@ -5,1 +5,2 @@ export * from './request-query-builder-options.interface';

export * from './create-query-params.interface';
export * from './operators-options.interface';

10

lib/request-query.builder.d.ts

@@ -1,2 +0,2 @@

import { RequestQueryBuilderOptions, CreateQueryParams } from './interfaces';
import { CreateQueryParams, CustomOperators, RequestQueryBuilderOptions } from './interfaces';
import { QueryFields, QueryFilter, QueryFilterArr, QueryJoin, QueryJoinArr, QuerySort, QuerySortArr, SCondition } from './types';

@@ -13,3 +13,3 @@ export declare class RequestQueryBuilder {

static getOptions(): RequestQueryBuilderOptions;
static create(params?: CreateQueryParams): RequestQueryBuilder;
static create(params?: CreateQueryParams, customOperators?: CustomOperators): RequestQueryBuilder;
readonly options: RequestQueryBuilderOptions;

@@ -20,4 +20,4 @@ setParamNames(): void;

search(s: SCondition): this;
setFilter(f: QueryFilter | QueryFilterArr | Array<QueryFilter | QueryFilterArr>): this;
setOr(f: QueryFilter | QueryFilterArr | Array<QueryFilter | QueryFilterArr>): this;
setFilter(f: QueryFilter | QueryFilterArr | Array<QueryFilter | QueryFilterArr>, customOperators?: CustomOperators): this;
setOr(f: QueryFilter | QueryFilterArr | Array<QueryFilter | QueryFilterArr>, customOperators?: CustomOperators): this;
setJoin(j: QueryJoin | QueryJoinArr | Array<QueryJoin | QueryJoinArr>): this;

@@ -30,3 +30,3 @@ sortBy(s: QuerySort | QuerySortArr | Array<QuerySort | QuerySortArr>): this;

setIncludeDeleted(n: number): this;
cond(f: QueryFilter | QueryFilterArr, cond?: 'filter' | 'or' | 'search'): string;
cond(f: QueryFilter | QueryFilterArr, cond?: 'filter' | 'or' | 'search', customOperators?: CustomOperators): string;
private addJoin;

@@ -33,0 +33,0 @@ private addSortBy;

@@ -25,5 +25,5 @@ "use strict";

}
static create(params) {
static create(params, customOperators) {
const qb = new RequestQueryBuilder();
return util_1.isObject(params) ? qb.createFromParams(params) : qb;
return util_1.isObject(params) ? qb.createFromParams(params, customOperators) : qb;
}

@@ -60,8 +60,8 @@ get options() {

}
setFilter(f) {
this.setCondition(f, 'filter');
setFilter(f, customOperators) {
this.setCondition(f, 'filter', customOperators);
return this;
}
setOr(f) {
this.setCondition(f, 'or');
setOr(f, customOperators) {
this.setCondition(f, 'or', customOperators);
return this;

@@ -113,5 +113,5 @@ }

}
cond(f, cond = 'search') {
cond(f, cond = 'search', customOperators) {
const filter = Array.isArray(f) ? { field: f[0], operator: f[1], value: f[2] } : f;
request_query_validator_1.validateCondition(filter, cond);
request_query_validator_1.validateCondition(filter, cond, customOperators);
const d = this.options.delim;

@@ -136,7 +136,7 @@ return (filter.field +

}
createFromParams(params) {
createFromParams(params, customOperators) {
this.select(params.fields);
this.search(params.search);
this.setFilter(params.filter);
this.setOr(params.or);
this.setFilter(params.filter, customOperators);
this.setOr(params.or, customOperators);
this.setJoin(params.join);

@@ -160,3 +160,3 @@ this.setLimit(params.limit);

}
setCondition(f, cond) {
setCondition(f, cond, customOperators) {
if (!util_1.isNil(f)) {

@@ -167,4 +167,4 @@ const param = this.checkQueryObjectParam(cond, []);

...(Array.isArray(f) && !util_1.isString(f[0])
? f.map((o) => this.cond(o, cond))
: [this.cond(f, cond)]),
? f.map((o) => this.cond(o, cond, customOperators))
: [this.cond(f, cond, customOperators)]),
];

@@ -171,0 +171,0 @@ }

import { ObjectLiteral } from '@rewiko/util';
import { ParamsOptions, ParsedRequestParams } from './interfaces';
import { CustomOperators, ParamsOptions, ParsedRequestParams } from './interfaces';
import { QueryFields, QueryFilter, QueryJoin, QuerySort, SCondition, SConditionAND, SFields } from './types';

@@ -25,3 +25,3 @@ export declare class RequestQueryParser implements ParsedRequestParams {

getParsed(): ParsedRequestParams;
parseQuery(query: any): this;
parseQuery(query: any, customOperators?: CustomOperators): this;
parseParams(params: any, options: ParamsOptions): this;

@@ -28,0 +28,0 @@ setAuthPersist(persist?: ObjectLiteral): void;

@@ -40,3 +40,3 @@ "use strict";

}
parseQuery(query) {
parseQuery(query, customOperators = {}) {
if (util_1.isObject(query)) {

@@ -47,7 +47,7 @@ const paramNames = util_1.objKeys(query);

this._paramNames = paramNames;
let searchData = this._query[this.getParamNames('search')[0]];
const searchData = this._query[this.getParamNames('search')[0]];
this.search = this.parseSearchQueryParam(searchData);
if (util_1.isNil(this.search)) {
this.filter = this.parseQueryParam('filter', this.conditionParser.bind(this, 'filter'));
this.or = this.parseQueryParam('or', this.conditionParser.bind(this, 'or'));
this.filter = this.parseQueryParam('filter', this.conditionParser.bind(this, 'filter', customOperators));
this.or = this.parseQueryParam('or', this.conditionParser.bind(this, 'or', customOperators));
}

@@ -165,3 +165,3 @@ this.fields =

}
conditionParser(cond, data) {
conditionParser(cond, customOperators, data) {
const isArrayValue = [

@@ -176,3 +176,3 @@ 'in',

'$notinL',
];
].concat(Object.keys(customOperators).filter((op) => customOperators[op].isArray));
const isEmptyValue = ['isnull', 'notnull', '$isnull', '$notnull'];

@@ -191,3 +191,3 @@ const param = data.split(this._options.delim);

const condition = { field, operator, value };
request_query_validator_1.validateCondition(condition, cond);
request_query_validator_1.validateCondition(condition, cond, customOperators);
return condition;

@@ -194,0 +194,0 @@ }

@@ -1,3 +0,3 @@

import { ParamsOptions } from './interfaces';
import { QueryFields, QueryFilter, ComparisonOperator, QueryJoin, QuerySort } from './types';
import { CustomOperators, ParamsOptions } from './interfaces';
import { ComparisonOperator, QueryFields, QueryFilter, QueryJoin, QuerySort } from './types';
export declare const deprecatedComparisonOperatorsList: string[];

@@ -7,4 +7,4 @@ export declare const comparisonOperatorsList: any[];

export declare function validateFields(fields: QueryFields): void;
export declare function validateCondition(val: QueryFilter, cond: 'filter' | 'or' | 'search'): void;
export declare function validateComparisonOperator(operator: ComparisonOperator): void;
export declare function validateCondition(val: QueryFilter, cond: 'filter' | 'or' | 'search', customOperators: CustomOperators): void;
export declare function validateComparisonOperator(operator: ComparisonOperator, customOperators?: CustomOperators): void;
export declare function validateJoin(join: QueryJoin): void;

@@ -11,0 +11,0 @@ export declare function validateSort(sort: QuerySort): void;

@@ -28,3 +28,2 @@ "use strict";

exports.sortOrdersList = ['ASC', 'DESC'];
const comparisonOperatorsListStr = exports.comparisonOperatorsList.join();
const sortOrdersListStr = exports.sortOrdersList.join();

@@ -37,12 +36,16 @@ function validateFields(fields) {

exports.validateFields = validateFields;
function validateCondition(val, cond) {
function validateCondition(val, cond, customOperators) {
if (!util_1.isObject(val) || !util_1.isStringFull(val.field)) {
throw new exceptions_1.RequestQueryException(`Invalid field type in ${cond} condition. String expected`);
}
validateComparisonOperator(val.operator);
validateComparisonOperator(val.operator, customOperators);
}
exports.validateCondition = validateCondition;
function validateComparisonOperator(operator) {
if (!exports.comparisonOperatorsList.includes(operator)) {
throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${comparisonOperatorsListStr} expected`);
function validateComparisonOperator(operator, customOperators = {}) {
const extendedComparisonOperatorsList = [
...exports.comparisonOperatorsList,
...Object.keys(customOperators),
];
if (!extendedComparisonOperatorsList.includes(operator)) {
throw new exceptions_1.RequestQueryException(`Invalid comparison operator. ${extendedComparisonOperatorsList.join()} expected`);
}

@@ -49,0 +52,0 @@ }

export declare type QueryFields = string[];
export declare type QueryFilter = {
export interface QueryFilter {
field: string;
operator: ComparisonOperator;
value?: any;
};
}
export declare type QueryFilterArr = [string, ComparisonOperator, any?];
export declare type QueryJoin = {
export interface QueryJoin {
field: string;
select?: QueryFields;
};
}
export declare type QueryJoinArr = [string, QueryFields?];
export declare type QuerySort = {
export interface QuerySort {
field: string;
order: QuerySortOperator;
};
}
export declare type QuerySortArr = [string, QuerySortOperator];

@@ -45,6 +45,6 @@ export declare type QuerySortOperator = 'ASC' | 'DESC';

}
export declare type ComparisonOperator = DeprecatedCondOperator | keyof SFieldOperator;
export declare type ComparisonOperator = DeprecatedCondOperator | keyof SFieldOperator | string;
export declare type SPrimitivesVal = string | number | boolean;
export declare type SFiledValues = SPrimitivesVal | Array<SPrimitivesVal>;
export declare type SFieldOperator = {
export declare type SFiledValues = SPrimitivesVal | SPrimitivesVal[];
export interface SFieldOperator {
$eq?: SFiledValues;

@@ -75,15 +75,17 @@ $ne?: SFiledValues;

$and?: never;
}
export declare type SField = SPrimitivesVal | SFieldOperator | {
[$custom: string]: SFiledValues;
};
export declare type SField = SPrimitivesVal | SFieldOperator;
export declare type SFields = {
export interface SFields {
[key: string]: SField | Array<SFields | SConditionAND> | undefined;
$or?: Array<SFields | SConditionAND>;
$and?: never;
};
export declare type SConditionAND = {
}
export interface SConditionAND {
$and?: Array<SFields | SConditionAND>;
$or?: never;
};
}
export declare type SConditionKey = '$and' | '$or';
export declare type SCondition = SFields | SConditionAND;
export {};
{
"name": "@rewiko/crud-request",
"description": "NestJs CRUD for RESTful APIs - request query builder",
"version": "5.0.17",
"version": "5.1.0",
"license": "MIT",

@@ -51,6 +51,6 @@ "main": "lib/index.js",

"dependencies": {
"@rewiko/util": "^5.0.17",
"@rewiko/util": "^5.1.0",
"qs": "^6.8.0"
},
"gitHead": "7683035e18f18abe80deb04cf81a0dd9eb664012"
"gitHead": "2d19529011465941c9602ac9ddb70930d8484296"
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc