filter-kit 2.0.0

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.
Files changed (76) hide show
  1. package/README.md +294 -0
  2. package/dist/cjs/filters/buildDateFilter.d.ts +11 -0
  3. package/dist/cjs/filters/buildDateFilter.d.ts.map +1 -0
  4. package/dist/cjs/filters/buildDateFilter.js +39 -0
  5. package/dist/cjs/filters/buildDateFilter.js.map +1 -0
  6. package/dist/cjs/filters/buildDynamicFilters.d.ts +3 -0
  7. package/dist/cjs/filters/buildDynamicFilters.d.ts.map +1 -0
  8. package/dist/cjs/filters/buildDynamicFilters.js +110 -0
  9. package/dist/cjs/filters/buildDynamicFilters.js.map +1 -0
  10. package/dist/cjs/filters/buildPagination.d.ts +15 -0
  11. package/dist/cjs/filters/buildPagination.d.ts.map +1 -0
  12. package/dist/cjs/filters/buildPagination.js +30 -0
  13. package/dist/cjs/filters/buildPagination.js.map +1 -0
  14. package/dist/cjs/filters/buildPopulate.d.ts +3 -0
  15. package/dist/cjs/filters/buildPopulate.d.ts.map +1 -0
  16. package/dist/cjs/filters/buildPopulate.js +45 -0
  17. package/dist/cjs/filters/buildPopulate.js.map +1 -0
  18. package/dist/cjs/filters/buildSearch.d.ts +4 -0
  19. package/dist/cjs/filters/buildSearch.d.ts.map +1 -0
  20. package/dist/cjs/filters/buildSearch.js +57 -0
  21. package/dist/cjs/filters/buildSearch.js.map +1 -0
  22. package/dist/cjs/filters/buildSort.d.ts +2 -0
  23. package/dist/cjs/filters/buildSort.d.ts.map +1 -0
  24. package/dist/cjs/filters/buildSort.js +19 -0
  25. package/dist/cjs/filters/buildSort.js.map +1 -0
  26. package/dist/cjs/index.d.ts +3 -0
  27. package/dist/cjs/index.d.ts.map +1 -0
  28. package/dist/cjs/index.js +6 -0
  29. package/dist/cjs/index.js.map +1 -0
  30. package/dist/cjs/package.json +3 -0
  31. package/dist/cjs/queryBuilder.d.ts +3 -0
  32. package/dist/cjs/queryBuilder.d.ts.map +1 -0
  33. package/dist/cjs/queryBuilder.js +75 -0
  34. package/dist/cjs/queryBuilder.js.map +1 -0
  35. package/dist/cjs/types.d.ts +48 -0
  36. package/dist/cjs/types.d.ts.map +1 -0
  37. package/dist/cjs/types.js +3 -0
  38. package/dist/cjs/types.js.map +1 -0
  39. package/dist/esm/filters/buildDateFilter.d.ts +11 -0
  40. package/dist/esm/filters/buildDateFilter.d.ts.map +1 -0
  41. package/dist/esm/filters/buildDateFilter.js +36 -0
  42. package/dist/esm/filters/buildDateFilter.js.map +1 -0
  43. package/dist/esm/filters/buildDynamicFilters.d.ts +3 -0
  44. package/dist/esm/filters/buildDynamicFilters.d.ts.map +1 -0
  45. package/dist/esm/filters/buildDynamicFilters.js +107 -0
  46. package/dist/esm/filters/buildDynamicFilters.js.map +1 -0
  47. package/dist/esm/filters/buildPagination.d.ts +15 -0
  48. package/dist/esm/filters/buildPagination.d.ts.map +1 -0
  49. package/dist/esm/filters/buildPagination.js +27 -0
  50. package/dist/esm/filters/buildPagination.js.map +1 -0
  51. package/dist/esm/filters/buildPopulate.d.ts +3 -0
  52. package/dist/esm/filters/buildPopulate.d.ts.map +1 -0
  53. package/dist/esm/filters/buildPopulate.js +42 -0
  54. package/dist/esm/filters/buildPopulate.js.map +1 -0
  55. package/dist/esm/filters/buildSearch.d.ts +4 -0
  56. package/dist/esm/filters/buildSearch.d.ts.map +1 -0
  57. package/dist/esm/filters/buildSearch.js +54 -0
  58. package/dist/esm/filters/buildSearch.js.map +1 -0
  59. package/dist/esm/filters/buildSort.d.ts +2 -0
  60. package/dist/esm/filters/buildSort.d.ts.map +1 -0
  61. package/dist/esm/filters/buildSort.js +16 -0
  62. package/dist/esm/filters/buildSort.js.map +1 -0
  63. package/dist/esm/index.d.ts +3 -0
  64. package/dist/esm/index.d.ts.map +1 -0
  65. package/dist/esm/index.js +2 -0
  66. package/dist/esm/index.js.map +1 -0
  67. package/dist/esm/package.json +3 -0
  68. package/dist/esm/queryBuilder.d.ts +3 -0
  69. package/dist/esm/queryBuilder.d.ts.map +1 -0
  70. package/dist/esm/queryBuilder.js +72 -0
  71. package/dist/esm/queryBuilder.js.map +1 -0
  72. package/dist/esm/types.d.ts +48 -0
  73. package/dist/esm/types.d.ts.map +1 -0
  74. package/dist/esm/types.js +2 -0
  75. package/dist/esm/types.js.map +1 -0
  76. package/package.json +54 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,gBAAgB,GACjB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { queryBuilder } from './queryBuilder';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "module"
3
+ }
@@ -0,0 +1,3 @@
1
+ import { QueryBuilderOptions, QueryBuilderResult } from './types';
2
+ export declare function queryBuilder<T = any>(options: QueryBuilderOptions<T>): Promise<QueryBuilderResult<T>>;
3
+ //# sourceMappingURL=queryBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilder.d.ts","sourceRoot":"","sources":["../../src/queryBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAkB,MAAM,SAAS,CAAC;AAQlF,wBAAsB,YAAY,CAAC,CAAC,GAAG,GAAG,EACxC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAwHhC"}
@@ -0,0 +1,72 @@
1
+ import { buildSearch } from './filters/buildSearch';
2
+ import { buildPagination } from './filters/buildPagination';
3
+ import { buildSort } from './filters/buildSort';
4
+ import { buildDateFilter } from './filters/buildDateFilter';
5
+ import { buildPopulate } from './filters/buildPopulate';
6
+ import { buildDynamicFilters } from './filters/buildDynamicFilters';
7
+ export async function queryBuilder(options) {
8
+ var _a, _b;
9
+ const { model, query, searchFields, searchMode = 'or', allowedFilters, defaultSort = 'createdAt', defaultOrder = 'desc', defaultLimit = 10, maxLimit = 100, populate: optionPopulate, select: optionSelect, dateField, dateFields, lean = false, customFilter, softDelete, withCount = true, } = options;
10
+ const filterParts = [];
11
+ const searchFilter = buildSearch(query['search'], searchFields, searchMode);
12
+ if (Object.keys(searchFilter).length > 0)
13
+ filterParts.push(searchFilter);
14
+ // Single dateField (backward compat)
15
+ if (dateField) {
16
+ const dateFilter = buildDateFilter(query['from'], query['to'], dateField);
17
+ if (Object.keys(dateFilter).length > 0)
18
+ filterParts.push(dateFilter);
19
+ }
20
+ // Multiple dateFields
21
+ for (const cfg of dateFields !== null && dateFields !== void 0 ? dateFields : []) {
22
+ const dateFilter = buildDateFilter(query[(_a = cfg.fromParam) !== null && _a !== void 0 ? _a : 'from'], query[(_b = cfg.toParam) !== null && _b !== void 0 ? _b : 'to'], cfg.field);
23
+ if (Object.keys(dateFilter).length > 0)
24
+ filterParts.push(dateFilter);
25
+ }
26
+ const dynamicFilter = buildDynamicFilters(query, allowedFilters, model);
27
+ if (Object.keys(dynamicFilter).length > 0)
28
+ filterParts.push(dynamicFilter);
29
+ if (customFilter && Object.keys(customFilter).length > 0) {
30
+ filterParts.push(customFilter);
31
+ }
32
+ if (softDelete) {
33
+ const excludeVal = softDelete.value !== undefined ? softDelete.value : true;
34
+ filterParts.push({ [softDelete.field]: { $ne: excludeVal } });
35
+ }
36
+ const filter = filterParts.length > 1
37
+ ? { $and: filterParts }
38
+ : filterParts.length === 1
39
+ ? filterParts[0]
40
+ : {};
41
+ const { page, limit, skip } = buildPagination(query['page'], query['limit'], defaultLimit, maxLimit);
42
+ const sort = buildSort(query['sort'], query['order'], defaultSort, defaultOrder);
43
+ const populateFields = buildPopulate(query['populate'], optionPopulate);
44
+ const selectParam = query['select'];
45
+ const selectValue = selectParam && selectParam.trim() !== ''
46
+ ? selectParam.replace(/,/g, ' ')
47
+ : optionSelect;
48
+ let findQuery = model.find(filter).sort(sort).skip(skip).limit(limit);
49
+ for (const pop of populateFields) {
50
+ findQuery = findQuery.populate(pop);
51
+ }
52
+ if (selectValue !== undefined && selectValue !== null) {
53
+ findQuery = findQuery.select(selectValue);
54
+ }
55
+ if (lean) {
56
+ findQuery = findQuery.lean();
57
+ }
58
+ const [data, total] = withCount
59
+ ? await Promise.all([findQuery.exec(), model.countDocuments(filter)])
60
+ : [await findQuery.exec(), 0];
61
+ const pages = withCount ? Math.ceil(total / limit) : 0;
62
+ const pagination = {
63
+ total,
64
+ page,
65
+ limit,
66
+ pages,
67
+ hasNext: withCount ? page < pages : false,
68
+ hasPrev: page > 1,
69
+ };
70
+ return { data, pagination };
71
+ }
72
+ //# sourceMappingURL=queryBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryBuilder.js","sourceRoot":"","sources":["../../src/queryBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { Model, PopulateOptions, ProjectionType } from 'mongoose';
2
+ export type SearchFieldType = 'string' | 'number' | 'exact';
3
+ export interface SearchFieldConfig {
4
+ field: string;
5
+ type?: SearchFieldType;
6
+ }
7
+ export type SearchField = string | SearchFieldConfig;
8
+ export interface DateFieldConfig {
9
+ field: string;
10
+ fromParam?: string;
11
+ toParam?: string;
12
+ }
13
+ export interface SoftDeleteConfig {
14
+ field: string;
15
+ value?: any;
16
+ }
17
+ export interface QueryBuilderOptions<T = any> {
18
+ model: Model<T>;
19
+ query: Record<string, any>;
20
+ searchFields?: SearchField[];
21
+ searchMode?: 'or' | 'and';
22
+ allowedFilters?: string[];
23
+ defaultSort?: string;
24
+ defaultOrder?: 'asc' | 'desc';
25
+ defaultLimit?: number;
26
+ maxLimit?: number;
27
+ populate?: string | string[] | PopulateOptions | PopulateOptions[];
28
+ select?: ProjectionType<T> | string;
29
+ dateField?: string;
30
+ dateFields?: DateFieldConfig[];
31
+ lean?: boolean;
32
+ customFilter?: Record<string, any>;
33
+ softDelete?: SoftDeleteConfig;
34
+ withCount?: boolean;
35
+ }
36
+ export interface PaginationMeta {
37
+ total: number;
38
+ page: number;
39
+ limit: number;
40
+ pages: number;
41
+ hasNext: boolean;
42
+ hasPrev: boolean;
43
+ }
44
+ export interface QueryBuilderResult<T = any> {
45
+ data: T[];
46
+ pagination: PaginationMeta;
47
+ }
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,GAAG,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,GAAG;IAC1C,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,UAAU,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,eAAe,GAAG,eAAe,EAAE,CAAC;IACnE,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,cAAc,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "filter-kit",
3
+ "version": "2.0.0",
4
+ "description": "Powerful Mongoose query builder — smart search (string + number), deep populate (4 levels), multi-sort, operator filters, date ranges, soft-delete, pagination",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/cjs/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/esm/index.d.ts",
12
+ "default": "./dist/esm/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/cjs/index.d.ts",
16
+ "default": "./dist/cjs/index.js"
17
+ }
18
+ }
19
+ },
20
+ "files": ["dist"],
21
+ "scripts": {
22
+ "clean": "node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"",
23
+ "build": "npm run clean && npm run build:cjs && npm run build:esm && node scripts/postbuild.js",
24
+ "build:cjs": "tsc -p tsconfig.build.json",
25
+ "build:esm": "tsc -p tsconfig.esm.json",
26
+ "dev": "tsc -w -p tsconfig.build.json",
27
+ "test": "jest",
28
+ "test:watch": "jest --watch",
29
+ "test:coverage": "jest --coverage",
30
+ "lint": "eslint src --ext .ts",
31
+ "prepublishOnly": "npm run build"
32
+ },
33
+ "keywords": [
34
+ "mongoose", "mongodb", "query-builder", "filter", "pagination",
35
+ "search", "sorting", "date-filter", "populate", "dynamic-filter",
36
+ "admin-panel", "rest-api", "express", "nestjs", "mongoose-query",
37
+ "mongodb-filter", "mongoose-pagination", "mongoose-search",
38
+ "api-query", "mongoose-utils", "javascript", "typescript"
39
+ ],
40
+ "author": "parthpatel2597",
41
+ "license": "MIT",
42
+ "peerDependencies": { "mongoose": ">=6.0.0" },
43
+ "devDependencies": {
44
+ "@types/jest": "^29.5.0",
45
+ "@types/node": "^20.0.0",
46
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
47
+ "@typescript-eslint/parser": "^6.0.0",
48
+ "eslint": "^8.0.0",
49
+ "jest": "^29.0.0",
50
+ "mongoose": "^8.0.0",
51
+ "ts-jest": "^29.0.0",
52
+ "typescript": "^5.0.0"
53
+ }
54
+ }