@ackplus/nest-crud-request 1.1.38 → 1.1.41

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.
@@ -0,0 +1,4 @@
1
+ export * from './lib/query-builder';
2
+ export * from './lib/where-builder';
3
+ export * from './lib/types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./lib/query-builder"), exports);
18
+ __exportStar(require("./lib/where-builder"), exports);
19
+ __exportStar(require("./lib/types"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sDAAoC;AACpC,8CAA4B"}
@@ -0,0 +1,37 @@
1
+ import { QueryBuilderOptions, OrderDirectionEnum } from './types';
2
+ import { WhereBuilderCondition } from './where-builder';
3
+ export declare class QueryBuilder {
4
+ private options;
5
+ private whereBuilder;
6
+ private relationBuilder;
7
+ constructor(options?: QueryBuilderOptions);
8
+ setOptions(options: QueryBuilderOptions): this;
9
+ mergeOptions(options: QueryBuilderOptions, deep?: boolean): this;
10
+ addSelect(fields: string | string[]): this;
11
+ removeSelect(fields: string | string[]): this;
12
+ addRelation(relation: string, select?: string[], where?: Record<string, any>): this;
13
+ removeRelation(relation: string): this;
14
+ where(...args: WhereBuilderCondition): this;
15
+ andWhere(...args: WhereBuilderCondition): this;
16
+ orWhere(...args: WhereBuilderCondition): this;
17
+ addOrder(orderBy: string, order: OrderDirectionEnum): this;
18
+ removeOrder(orderBy: string): this;
19
+ setSkip(skip: number): this;
20
+ setTake(take: number): this;
21
+ setWithDeleted(withDeleted: boolean): this;
22
+ setOnlyDeleted(onlyDeleted: boolean): this;
23
+ set(key: string, value: any): this;
24
+ toObject(constrainToNestedObject?: boolean): {
25
+ [key: string]: any;
26
+ select?: string[] | string;
27
+ relations?: import("./types").RelationOptions | string;
28
+ where?: import("./types").WhereOptions | string;
29
+ order?: Record<string, OrderDirectionEnum> | string;
30
+ skip?: number;
31
+ take?: number;
32
+ withDeleted?: boolean;
33
+ onlyDeleted?: boolean;
34
+ };
35
+ toJson(): string;
36
+ }
37
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElE,OAAO,EAAgB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAGtE,qBAAa,YAAY;IAErB,OAAO,CAAC,OAAO,CAA2B;IAE1C,OAAO,CAAC,YAAY,CAAoC;IAExD,OAAO,CAAC,eAAe,CAA0C;gBAErD,OAAO,CAAC,EAAE,mBAAmB;IAMzC,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAO9C,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,UAAQ,GAAG,IAAI;IAc9D,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAa1C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAY7C,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAKnF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKtC,KAAK,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK3C,QAAQ,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK9C,OAAO,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK7C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAQ1D,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAOlC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK3B,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAK1C,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,IAAI;IAK1C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAKlC,QAAQ,CAAC,uBAAuB,UAAQ;;;;;;;;;;;IAoDxC,MAAM;CAKT"}
@@ -0,0 +1,168 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.QueryBuilder = void 0;
4
+ const relation_builder_1 = require("./relation-builder");
5
+ const utils_1 = require("./utils");
6
+ const where_builder_1 = require("./where-builder");
7
+ class QueryBuilder {
8
+ constructor(options) {
9
+ this.options = {};
10
+ this.whereBuilder = new where_builder_1.WhereBuilder();
11
+ this.relationBuilder = new relation_builder_1.RelationBuilder();
12
+ if (options) {
13
+ this.setOptions(options);
14
+ }
15
+ }
16
+ setOptions(options) {
17
+ this.options = options;
18
+ this.whereBuilder = new where_builder_1.WhereBuilder(options.where);
19
+ this.relationBuilder = new relation_builder_1.RelationBuilder(options.relations);
20
+ return this;
21
+ }
22
+ mergeOptions(options, deep = false) {
23
+ let updatedOptions = {};
24
+ if (deep) {
25
+ updatedOptions = (0, utils_1.deepMerge)(this.options, options);
26
+ }
27
+ else {
28
+ updatedOptions = {
29
+ ...this.options,
30
+ ...options,
31
+ };
32
+ }
33
+ this.setOptions(updatedOptions);
34
+ return this;
35
+ }
36
+ addSelect(fields) {
37
+ if (!this.options.select || typeof this.options.select === 'string') {
38
+ this.options.select = [];
39
+ }
40
+ if (Array.isArray(fields)) {
41
+ this.options.select.push(...fields);
42
+ }
43
+ else {
44
+ this.options.select.push(fields);
45
+ }
46
+ return this;
47
+ }
48
+ removeSelect(fields) {
49
+ if (this.options.select && Array.isArray(this.options.select)) {
50
+ if (Array.isArray(fields)) {
51
+ this.options.select = this.options.select.filter(field => !fields.includes(field));
52
+ }
53
+ else {
54
+ this.options.select = this.options.select.filter(field => field !== fields);
55
+ }
56
+ }
57
+ return this;
58
+ }
59
+ addRelation(relation, select, where) {
60
+ this.relationBuilder.add(relation, select, where);
61
+ return this;
62
+ }
63
+ removeRelation(relation) {
64
+ this.relationBuilder.remove(relation);
65
+ return this;
66
+ }
67
+ where(...args) {
68
+ this.whereBuilder.where(...args);
69
+ return this;
70
+ }
71
+ andWhere(...args) {
72
+ this.whereBuilder.andWhere(...args);
73
+ return this;
74
+ }
75
+ orWhere(...args) {
76
+ this.whereBuilder.orWhere(...args);
77
+ return this;
78
+ }
79
+ addOrder(orderBy, order) {
80
+ if (!this.options.order) {
81
+ this.options.order = {};
82
+ }
83
+ this.options.order[orderBy] = order;
84
+ return this;
85
+ }
86
+ removeOrder(orderBy) {
87
+ if (this.options.order) {
88
+ delete this.options.order[orderBy];
89
+ }
90
+ return this;
91
+ }
92
+ setSkip(skip) {
93
+ this.options.skip = skip;
94
+ return this;
95
+ }
96
+ setTake(take) {
97
+ this.options.take = take;
98
+ return this;
99
+ }
100
+ setWithDeleted(withDeleted) {
101
+ this.options.withDeleted = withDeleted;
102
+ return this;
103
+ }
104
+ setOnlyDeleted(onlyDeleted) {
105
+ this.options.onlyDeleted = onlyDeleted;
106
+ return this;
107
+ }
108
+ set(key, value) {
109
+ this.options[key] = value;
110
+ return this;
111
+ }
112
+ toObject(constrainToNestedObject = false) {
113
+ const options = {
114
+ ...this.options,
115
+ };
116
+ if (this.whereBuilder.hasConditions()) {
117
+ if (constrainToNestedObject) {
118
+ options.where = this.whereBuilder.toObject();
119
+ }
120
+ else {
121
+ options.where = JSON.stringify(this.whereBuilder.toObject());
122
+ }
123
+ }
124
+ else {
125
+ delete options.where;
126
+ }
127
+ if (this.relationBuilder.hasRelations()) {
128
+ if (constrainToNestedObject) {
129
+ options.relations = this.relationBuilder.toObject();
130
+ }
131
+ else {
132
+ options.relations = JSON.stringify(this.relationBuilder.toObject());
133
+ }
134
+ }
135
+ else {
136
+ delete options.relations;
137
+ }
138
+ if (options.order && Object.keys(options.order).length > 0) {
139
+ if (constrainToNestedObject) {
140
+ options.order = options.order;
141
+ }
142
+ else {
143
+ options.order = JSON.stringify(options.order);
144
+ }
145
+ }
146
+ else {
147
+ delete options.order;
148
+ }
149
+ if (options.select && options.select.length > 0) {
150
+ if (constrainToNestedObject) {
151
+ options.select = options.select;
152
+ }
153
+ else {
154
+ options.select = JSON.stringify(options.select);
155
+ }
156
+ }
157
+ else {
158
+ delete options.select;
159
+ }
160
+ return options;
161
+ }
162
+ toJson() {
163
+ const obj = this.toObject(true);
164
+ return JSON.stringify(obj);
165
+ }
166
+ }
167
+ exports.QueryBuilder = QueryBuilder;
168
+ //# sourceMappingURL=query-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.js","sourceRoot":"","sources":["../../src/lib/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { RelationObject, RelationOptions } from './types';
2
+ export declare class RelationBuilder {
3
+ private relations;
4
+ constructor(relations?: RelationOptions | string);
5
+ setRelations(relations: RelationOptions): this;
6
+ clear(): this;
7
+ add(relation: string, select?: string[], where?: Record<string, any>): this;
8
+ remove(relation: string): this;
9
+ hasRelations(): boolean;
10
+ toObject(): RelationObject;
11
+ toJson(): string;
12
+ }
13
+ //# sourceMappingURL=relation-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-builder.d.ts","sourceRoot":"","sources":["../../src/lib/relation-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/E,qBAAa,eAAe;IAExB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM;IAOhD,YAAY,CAAC,SAAS,EAAE,eAAe,GAAG,IAAI;IAe9C,KAAK,IAAI,IAAI;IAKb,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAgB3E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK9B,YAAY,IAAI,OAAO;IAIvB,QAAQ,IAAI,cAAc;IAI1B,MAAM,IAAI,MAAM;CAInB"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RelationBuilder = void 0;
4
+ class RelationBuilder {
5
+ constructor(relations) {
6
+ this.relations = {};
7
+ if (relations) {
8
+ const relationOptions = typeof relations === 'string' ? JSON.parse(relations) : relations;
9
+ this.setRelations(relationOptions);
10
+ }
11
+ }
12
+ setRelations(relations) {
13
+ if (relations) {
14
+ if (Array.isArray(relations)) {
15
+ relations.forEach(relation => {
16
+ this.add(relation);
17
+ });
18
+ }
19
+ else if (typeof relations === 'string') {
20
+ this.add(relations);
21
+ }
22
+ else {
23
+ this.relations = relations;
24
+ }
25
+ }
26
+ return this;
27
+ }
28
+ clear() {
29
+ this.relations = {};
30
+ return this;
31
+ }
32
+ add(relation, select, where) {
33
+ if (!select && !where) {
34
+ this.relations[relation] = true;
35
+ }
36
+ else {
37
+ const obj = {};
38
+ if (select) {
39
+ obj.select = select;
40
+ }
41
+ if (where) {
42
+ obj.where = where;
43
+ }
44
+ this.relations[relation] = obj;
45
+ }
46
+ return this;
47
+ }
48
+ remove(relation) {
49
+ delete this.relations[relation];
50
+ return this;
51
+ }
52
+ hasRelations() {
53
+ return Object.keys(this.relations).length > 0;
54
+ }
55
+ toObject() {
56
+ return this.relations;
57
+ }
58
+ toJson() {
59
+ return JSON.stringify(this.relations);
60
+ }
61
+ }
62
+ exports.RelationBuilder = RelationBuilder;
63
+ //# sourceMappingURL=relation-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relation-builder.js","sourceRoot":"","sources":["../../src/lib/relation-builder.ts"],"names":[],"mappings":";;;AAGA,MAAa,eAAe;IAIxB,YAAY,SAAoC;QAFxC,cAAS,GAAmB,EAAE,CAAC;QAGnC,IAAI,SAAS,EAAE,CAAC;YACZ,MAAM,eAAe,GAAG,OAAO,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1F,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,SAA0B;QACnC,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACP,CAAC;iBAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;gBACvC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC/B,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,MAAiB,EAAE,KAA2B;QAChE,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;QACpC,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,GAAQ,EAAE,CAAC;YACpB,IAAI,MAAM,EAAE,CAAC;gBACT,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YACxB,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACR,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,QAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;CAEJ;AAhED,0CAgEC"}
@@ -0,0 +1,66 @@
1
+ export declare enum WhereLogicalOperatorEnum {
2
+ AND = "$and",
3
+ OR = "$or"
4
+ }
5
+ export declare enum WhereOperatorEnum {
6
+ EQ = "$eq",
7
+ NOT_EQ = "$ne",
8
+ GT = "$gt",
9
+ GT_OR_EQ = "$gte",
10
+ LT = "$lt",
11
+ LT_OR_EQ = "$lte",
12
+ IN = "$in",
13
+ NOT_IN = "$notIn",
14
+ LIKE = "$like",
15
+ NOT_LIKE = "$notLike",
16
+ ILIKE = "$iLike",
17
+ NOT_ILIKE = "$notIlike",
18
+ STARTS_WITH = "$startsWith",
19
+ ENDS_WITH = "$endsWith",
20
+ ISTARTS_WITH = "$iStartsWith",
21
+ IENDS_WITH = "$iEndsWith",
22
+ IN_L = "$inL",
23
+ NOT_IN_L = "$notinL",
24
+ CONT_ARR = "$contArr",
25
+ INTERSECTS_ARR = "$intersectsArr",
26
+ IS_NULL = "$isNull",
27
+ IS_NOT_NULL = "$isNotNull",
28
+ BETWEEN = "$between",
29
+ NOT_BETWEEN = "$notBetween",
30
+ IS_TRUE = "$isTrue",
31
+ IS_FALSE = "$isFalse"
32
+ }
33
+ export declare enum OrderDirectionEnum {
34
+ ASC = "ASC",
35
+ DESC = "DESC"
36
+ }
37
+ export type WhereObject = {
38
+ [key: string]: any;
39
+ $and?: WhereObject | WhereObject[];
40
+ $or?: WhereObject | WhereObject[];
41
+ };
42
+ export type WhereOptions = WhereObject | WhereObject[];
43
+ export type RelationObjectValue = {
44
+ select?: string[];
45
+ where?: WhereObject | WhereObject[];
46
+ joinType?: 'left' | 'inner';
47
+ };
48
+ export type RelationObject = Record<string, RelationObjectValue | boolean>;
49
+ export type RelationOptions = string | string[] | RelationObject;
50
+ export interface QueryBuilderOptions {
51
+ [key: string]: any;
52
+ select?: string[] | string;
53
+ relations?: RelationOptions | string;
54
+ where?: WhereOptions | string;
55
+ order?: Record<string, OrderDirectionEnum> | string;
56
+ skip?: number;
57
+ take?: number;
58
+ withDeleted?: boolean;
59
+ onlyDeleted?: boolean;
60
+ }
61
+ export type FindManyResponse<T> = {
62
+ items: T[];
63
+ total: number;
64
+ };
65
+ export type FindAllResponse<T> = T[];
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,oBAAY,wBAAwB;IAChC,GAAG,SAAS;IACZ,EAAE,QAAQ;CACb;AAED,oBAAY,iBAAiB;IACzB,EAAE,QAAQ;IACV,MAAM,QAAQ;IACd,EAAE,QAAQ;IACV,QAAQ,SAAS;IACjB,EAAE,QAAQ;IACV,QAAQ,SAAS;IACjB,EAAE,QAAQ;IACV,MAAM,WAAW;IACjB,IAAI,UAAU;IACd,QAAQ,aAAa;IACrB,KAAK,WAAW;IAChB,SAAS,cAAc;IACvB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,IAAI,SAAS;IACb,QAAQ,YAAY;IACpB,QAAQ,aAAa;IACrB,cAAc,mBAAmB;IACjC,OAAO,YAAY;IACnB,WAAW,eAAe;IAC1B,OAAO,aAAa;IACpB,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,QAAQ,aAAa;CACxB;AAED,oBAAY,kBAAkB;IAC1B,GAAG,QAAQ;IACX,IAAI,SAAS;CAChB;AAED,MAAM,MAAM,WAAW,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACnC,GAAG,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,WAAW,EAAE,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAC9B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,CAAC;AAE3E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,cAAc,CAAC;AAGjE,MAAM,WAAW,mBAAmB;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,eAAe,GAAG,MAAM,CAAC;IACrC,KAAK,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,MAAM,CAAC;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrderDirectionEnum = exports.WhereOperatorEnum = exports.WhereLogicalOperatorEnum = void 0;
4
+ var WhereLogicalOperatorEnum;
5
+ (function (WhereLogicalOperatorEnum) {
6
+ WhereLogicalOperatorEnum["AND"] = "$and";
7
+ WhereLogicalOperatorEnum["OR"] = "$or";
8
+ })(WhereLogicalOperatorEnum || (exports.WhereLogicalOperatorEnum = WhereLogicalOperatorEnum = {}));
9
+ var WhereOperatorEnum;
10
+ (function (WhereOperatorEnum) {
11
+ WhereOperatorEnum["EQ"] = "$eq";
12
+ WhereOperatorEnum["NOT_EQ"] = "$ne";
13
+ WhereOperatorEnum["GT"] = "$gt";
14
+ WhereOperatorEnum["GT_OR_EQ"] = "$gte";
15
+ WhereOperatorEnum["LT"] = "$lt";
16
+ WhereOperatorEnum["LT_OR_EQ"] = "$lte";
17
+ WhereOperatorEnum["IN"] = "$in";
18
+ WhereOperatorEnum["NOT_IN"] = "$notIn";
19
+ WhereOperatorEnum["LIKE"] = "$like";
20
+ WhereOperatorEnum["NOT_LIKE"] = "$notLike";
21
+ WhereOperatorEnum["ILIKE"] = "$iLike";
22
+ WhereOperatorEnum["NOT_ILIKE"] = "$notIlike";
23
+ WhereOperatorEnum["STARTS_WITH"] = "$startsWith";
24
+ WhereOperatorEnum["ENDS_WITH"] = "$endsWith";
25
+ WhereOperatorEnum["ISTARTS_WITH"] = "$iStartsWith";
26
+ WhereOperatorEnum["IENDS_WITH"] = "$iEndsWith";
27
+ WhereOperatorEnum["IN_L"] = "$inL";
28
+ WhereOperatorEnum["NOT_IN_L"] = "$notinL";
29
+ WhereOperatorEnum["CONT_ARR"] = "$contArr";
30
+ WhereOperatorEnum["INTERSECTS_ARR"] = "$intersectsArr";
31
+ WhereOperatorEnum["IS_NULL"] = "$isNull";
32
+ WhereOperatorEnum["IS_NOT_NULL"] = "$isNotNull";
33
+ WhereOperatorEnum["BETWEEN"] = "$between";
34
+ WhereOperatorEnum["NOT_BETWEEN"] = "$notBetween";
35
+ WhereOperatorEnum["IS_TRUE"] = "$isTrue";
36
+ WhereOperatorEnum["IS_FALSE"] = "$isFalse";
37
+ })(WhereOperatorEnum || (exports.WhereOperatorEnum = WhereOperatorEnum = {}));
38
+ var OrderDirectionEnum;
39
+ (function (OrderDirectionEnum) {
40
+ OrderDirectionEnum["ASC"] = "ASC";
41
+ OrderDirectionEnum["DESC"] = "DESC";
42
+ })(OrderDirectionEnum || (exports.OrderDirectionEnum = OrderDirectionEnum = {}));
43
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":";;;AAAA,IAAY,wBAGX;AAHD,WAAY,wBAAwB;IAChC,wCAAY,CAAA;IACZ,sCAAU,CAAA;AACd,CAAC,EAHW,wBAAwB,wCAAxB,wBAAwB,QAGnC;AAED,IAAY,iBA2BX;AA3BD,WAAY,iBAAiB;IACzB,+BAAU,CAAA;IACV,mCAAc,CAAA;IACd,+BAAU,CAAA;IACV,sCAAiB,CAAA;IACjB,+BAAU,CAAA;IACV,sCAAiB,CAAA;IACjB,+BAAU,CAAA;IACV,sCAAiB,CAAA;IACjB,mCAAc,CAAA;IACd,0CAAqB,CAAA;IACrB,qCAAgB,CAAA;IAChB,4CAAuB,CAAA;IACvB,gDAA2B,CAAA;IAC3B,4CAAuB,CAAA;IACvB,kDAA6B,CAAA;IAC7B,8CAAyB,CAAA;IACzB,kCAAa,CAAA;IACb,yCAAoB,CAAA;IACpB,0CAAqB,CAAA;IACrB,sDAAiC,CAAA;IACjC,wCAAmB,CAAA;IACnB,+CAA0B,CAAA;IAC1B,yCAAoB,CAAA;IACpB,gDAA2B,CAAA;IAC3B,wCAAmB,CAAA;IACnB,0CAAqB,CAAA;AACzB,CAAC,EA3BW,iBAAiB,iCAAjB,iBAAiB,QA2B5B;AAED,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC1B,iCAAW,CAAA;IACX,mCAAa,CAAA;AACjB,CAAC,EAHW,kBAAkB,kCAAlB,kBAAkB,QAG7B"}
@@ -0,0 +1,2 @@
1
+ export declare function deepMerge(target: any, source: any): any;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,GAAG,CAUvD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deepMerge = deepMerge;
4
+ function deepMerge(target, source) {
5
+ for (const key in source) {
6
+ if (source[key] instanceof Object && key in target) {
7
+ Object.assign(source[key], deepMerge(target[key], source[key]));
8
+ }
9
+ }
10
+ return {
11
+ ...target,
12
+ ...source,
13
+ };
14
+ }
15
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;AAAA,8BAUC;AAVD,SAAgB,SAAS,CAAC,MAAW,EAAE,MAAW;IAC9C,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IACD,OAAO;QACH,GAAG,MAAM;QACT,GAAG,MAAM;KACZ,CAAC;AACN,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { WhereOperatorEnum } from './types';
2
+ export type WhereBuilderCondition = [string, any] | [string, WhereOperatorEnum, any] | [Record<string, any>] | [(builder: WhereBuilder) => void];
3
+ export declare class WhereBuilder {
4
+ private whereObject;
5
+ constructor(where?: Record<string, any> | string);
6
+ private isOperator;
7
+ clear(): this;
8
+ where(...args: WhereBuilderCondition): this;
9
+ andWhere(...args: WhereBuilderCondition): this;
10
+ orWhere(...args: WhereBuilderCondition): this;
11
+ removeWhere(field: string): this;
12
+ hasConditions(): boolean;
13
+ toObject(): Record<string, any>;
14
+ toJson(): string;
15
+ private parseCondition;
16
+ private updateCondition;
17
+ private mergeConditions;
18
+ }
19
+ //# sourceMappingURL=where-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-builder.d.ts","sourceRoot":"","sources":["../../src/lib/where-builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAGtE,MAAM,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC;AAEjJ,qBAAa,YAAY;IAErB,OAAO,CAAC,WAAW,CAA2B;gBAElC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAIhD,OAAO,CAAC,UAAU;IAIlB,KAAK,IAAI,IAAI;IAKb,KAAK,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK3C,QAAQ,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK9C,OAAO,CAAC,GAAG,IAAI,EAAE,qBAAqB,GAAG,IAAI;IAK7C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAehC,aAAa,IAAI,OAAO;IAIxB,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAI/B,MAAM,IAAI,MAAM;IAIhB,OAAO,CAAC,cAAc;IAuDtB,OAAO,CAAC,eAAe;IAavB,OAAO,CAAC,eAAe;CA0B1B"}
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WhereBuilder = void 0;
4
+ const types_1 = require("./types");
5
+ class WhereBuilder {
6
+ constructor(where) {
7
+ this.whereObject = {};
8
+ this.whereObject = typeof where === 'string' ? JSON.parse(where) : where || {};
9
+ }
10
+ isOperator(value) {
11
+ return `${value}`.startsWith('$');
12
+ }
13
+ clear() {
14
+ this.whereObject = {};
15
+ return this;
16
+ }
17
+ where(...args) {
18
+ this.parseCondition(null, ...args);
19
+ return this;
20
+ }
21
+ andWhere(...args) {
22
+ this.parseCondition(types_1.WhereLogicalOperatorEnum.AND, ...args);
23
+ return this;
24
+ }
25
+ orWhere(...args) {
26
+ this.parseCondition(types_1.WhereLogicalOperatorEnum.OR, ...args);
27
+ return this;
28
+ }
29
+ removeWhere(field) {
30
+ const keys = field.split('.');
31
+ let current = this.whereObject;
32
+ for (let i = 0; i < keys.length - 1; i++) {
33
+ if (!current[keys[i]]) {
34
+ return this;
35
+ }
36
+ current = current[keys[i]];
37
+ }
38
+ delete current[keys[keys.length - 1]];
39
+ return this;
40
+ }
41
+ hasConditions() {
42
+ return Object.keys(this.whereObject).length > 0;
43
+ }
44
+ toObject() {
45
+ return this.whereObject;
46
+ }
47
+ toJson() {
48
+ return JSON.stringify(this.whereObject);
49
+ }
50
+ parseCondition(type, ...args) {
51
+ let field;
52
+ let operator;
53
+ let value;
54
+ if (args.length === 0) {
55
+ }
56
+ else if (args.length === 1) {
57
+ const condition = args[0];
58
+ if (typeof condition === 'function') {
59
+ const builder = new WhereBuilder();
60
+ condition(builder);
61
+ this.updateCondition(builder.toObject(), type);
62
+ }
63
+ else if (condition instanceof WhereBuilder) {
64
+ this.updateCondition(condition.toObject(), type);
65
+ }
66
+ else {
67
+ this.updateCondition(condition, type);
68
+ }
69
+ }
70
+ else if (args.length === 2 || args.length === 3) {
71
+ if (args.length === 2) {
72
+ field = args[0];
73
+ value = args[1];
74
+ if (typeof value === 'object') {
75
+ const firstKey = Object.keys(value)[0];
76
+ if (firstKey.startsWith('$')) {
77
+ this.updateCondition({ [field]: value }, type);
78
+ }
79
+ else {
80
+ this.updateCondition({ [field]: { [types_1.WhereOperatorEnum.EQ]: value } }, type);
81
+ }
82
+ }
83
+ else if (this.isOperator(value)) {
84
+ this.updateCondition({ [field]: { [value]: true } }, type);
85
+ }
86
+ else {
87
+ this.updateCondition({ [field]: { [types_1.WhereOperatorEnum.EQ]: value } }, type);
88
+ }
89
+ }
90
+ else {
91
+ field = args[0];
92
+ operator = args[1];
93
+ value = args[2];
94
+ this.updateCondition({ [field]: { [operator]: value } }, type);
95
+ }
96
+ }
97
+ return this;
98
+ }
99
+ updateCondition(condition, type) {
100
+ if (type === null) {
101
+ this.mergeConditions(this.whereObject, condition);
102
+ }
103
+ else {
104
+ this.whereObject[type] = [...(this.whereObject[type] || []), condition].filter(Boolean);
105
+ }
106
+ }
107
+ mergeConditions(target, source) {
108
+ for (const key in source) {
109
+ const sourceValue = source[key];
110
+ if (key === '$and' || key === '$or') {
111
+ if (target[key]) {
112
+ target[key] = [...(target[key] || []), ...(Array.isArray(sourceValue) ? sourceValue : [sourceValue])];
113
+ }
114
+ else {
115
+ target[key] = Array.isArray(sourceValue) ? sourceValue : [sourceValue];
116
+ }
117
+ }
118
+ else {
119
+ if (target[key] && typeof target[key] === 'object' && typeof sourceValue === 'object') {
120
+ target[key] = { ...target[key], ...sourceValue };
121
+ }
122
+ else {
123
+ target[key] = sourceValue;
124
+ }
125
+ }
126
+ }
127
+ }
128
+ }
129
+ exports.WhereBuilder = WhereBuilder;
130
+ //# sourceMappingURL=where-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"where-builder.js","sourceRoot":"","sources":["../../src/lib/where-builder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,17 @@
1
1
  {
2
2
  "name": "@ackplus/nest-crud-request",
3
- "version": "1.1.38",
3
+ "version": "1.1.41",
4
4
  "description": "Framework-agnostic query builder for REST APIs - build complex queries with filtering, relations, and pagination for both frontend and backend",
5
5
  "type": "commonjs",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
+ "scripts": {
9
+ "clean": "rm -rf dist",
10
+ "build": "tsc -p tsconfig.build.json",
11
+ "format": "prettier --write \"src/**/*.ts\"",
12
+ "lint": "eslint \"src/**/*.ts\" --fix",
13
+ "prepublishOnly": "npm run build"
14
+ },
8
15
  "files": [
9
16
  "dist",
10
17
  "README.md",
@@ -38,11 +45,5 @@
38
45
  "typescript": "^5.7.3",
39
46
  "@types/jest": "^30.0.0",
40
47
  "@types/node": "^22.0.0"
41
- },
42
- "scripts": {
43
- "clean": "rm -rf dist",
44
- "build": "tsc -p tsconfig.build.json",
45
- "format": "prettier --write \"src/**/*.ts\"",
46
- "lint": "eslint \"src/**/*.ts\" --fix"
47
48
  }
48
- }
49
+ }