@cgarciagarcia/react-query-builder 1.0.0 → 1.3.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 (48) hide show
  1. package/README.md +42 -1
  2. package/dist/actions/filter.js +44 -0
  3. package/dist/actions/include.js +23 -0
  4. package/{src/actions/index.ts → dist/actions/index.js} +0 -2
  5. package/dist/actions/sort.js +26 -0
  6. package/dist/dist/actions/filter.js +47 -0
  7. package/dist/dist/actions/include.js +26 -0
  8. package/dist/dist/actions/index.js +3 -0
  9. package/dist/dist/actions/sort.js +29 -0
  10. package/dist/dist/dist/actions/filter.js +47 -0
  11. package/dist/dist/dist/actions/include.js +26 -0
  12. package/dist/dist/dist/actions/index.js +3 -0
  13. package/dist/dist/dist/actions/sort.js +29 -0
  14. package/dist/dist/dist/useQueryBuilder.js +86 -0
  15. package/dist/dist/dist/utils/alias.js +4 -0
  16. package/dist/dist/dist/utils/build.js +30 -0
  17. package/dist/dist/dist/utils/state.js +1 -0
  18. package/dist/dist/index.js +3 -0
  19. package/dist/dist/useQueryBuilder.js +86 -0
  20. package/dist/dist/utils/alias.js +4 -0
  21. package/dist/dist/utils/build.js +30 -0
  22. package/dist/dist/utils/index.js +3 -0
  23. package/dist/dist/utils/state.js +1 -0
  24. package/dist/index.js +3 -0
  25. package/dist/tsconfig.tsbuildinfo +1 -0
  26. package/dist/useQueryBuilder.js +81 -0
  27. package/dist/utils/alias.js +4 -0
  28. package/dist/utils/build.js +29 -0
  29. package/dist/utils/index.js +3 -0
  30. package/dist/utils/state.js +1 -0
  31. package/package.json +8 -4
  32. package/.eslintignore +0 -0
  33. package/.eslintrc.cjs +0 -56
  34. package/.nvmrc +0 -1
  35. package/.prettierignore +0 -1
  36. package/bun.lockb +0 -0
  37. package/index.ts +0 -6
  38. package/prettier.config.cjs +0 -30
  39. package/src/actions/filter.ts +0 -44
  40. package/src/actions/include.ts +0 -13
  41. package/src/actions/sort.ts +0 -14
  42. package/src/useQueryBuilder.ts +0 -126
  43. package/src/utils/alias.ts +0 -11
  44. package/src/utils/build.ts +0 -31
  45. package/src/utils/state.ts +0 -8
  46. package/tsconfig.json +0 -35
  47. /package/{src/index.ts → dist/dist/dist/index.js} +0 -0
  48. /package/{src/utils/index.ts → dist/dist/dist/utils/index.js} +0 -0
package/README.md CHANGED
@@ -1 +1,42 @@
1
- # react-query-builder
1
+ <p><b>JavaScript/TypeScript Query Builder</b> provides a way to build a query string compatible with <a href="https://github.com/spatie/laravel-query-builder">spatie/laravel-query-builder</a>.</p>
2
+
3
+ ## Install
4
+
5
+ You can install package using yarn (or npm):
6
+
7
+ ```bash
8
+ yarn add @cgarciagarcia/react-qiery-builder
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ This package was thought offer an easy way to interact with backend integration `spatie/laravel-query-builder`
14
+ using your favorite library for frontend `React.js` using a customize hook which you could interact.
15
+
16
+ ### All Example
17
+
18
+ Here is a simple example:
19
+
20
+ ```js
21
+ import {useQueryBuilder} from "@cgarciagarcia/react-query-builder";
22
+
23
+ const baseConfig = {
24
+ aliases: {
25
+ "frontend_name": "backend_name",
26
+ }
27
+ }
28
+
29
+ const builder = useQueryBuilder(baseConfig)
30
+ .filters("age", 18)
31
+ .sorts("created_at")// by default sorting asc
32
+ .sorts("age", 'desc') // sorting desc
33
+ .includes("posts", "comments")
34
+
35
+
36
+ console.log(theQuery.build());
37
+ // /users?filter[age]=18,
38
+
39
+
40
+ ## License
41
+
42
+ The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
@@ -0,0 +1,44 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { usingAlias, } from "@/utils";
22
+ export var filterAction = function (attribute, value, state) {
23
+ var _a;
24
+ var alias = usingAlias(state, attribute);
25
+ var prevFilter;
26
+ var allFilters = state.filters.reduce(function (filters, filter) {
27
+ if (filter.attribute === alias) {
28
+ prevFilter = filter;
29
+ return filters;
30
+ }
31
+ return __spreadArray(__spreadArray([], filters, true), [filter], false);
32
+ }, []);
33
+ var val = Array.isArray(value) ? value : [value];
34
+ var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
35
+ {
36
+ attribute: attribute,
37
+ value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
38
+ },
39
+ ], false) });
40
+ return newState;
41
+ };
42
+ export var clearFilterAction = function (state) {
43
+ return __assign(__assign({}, state), { filters: [] });
44
+ };
@@ -0,0 +1,23 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ export var includeAction = function (includes, state) {
22
+ return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
23
+ };
@@ -1,5 +1,3 @@
1
1
  export * from "@/actions/sort";
2
2
  export * from "@/actions/filter";
3
3
  export * from "@/actions/include";
4
-
5
- export type Actions = "sort" | "filter" | "clear_filter" | "include";
@@ -0,0 +1,26 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { usingAlias } from "@/index";
22
+ export var sortAction = function (sorts, state) {
23
+ var attribute = sorts[0], direction = sorts[1];
24
+ var attributeAliased = usingAlias(state, attribute);
25
+ return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
26
+ };
@@ -0,0 +1,47 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ import { usingAlias, } from "@/utils";
25
+ export var filterAction = function (attribute, value, state) {
26
+ var _a;
27
+ var alias = usingAlias(state, attribute);
28
+ var prevFilter;
29
+ var allFilters = state.filters.reduce(function (filters, filter) {
30
+ if (filter.attribute === alias) {
31
+ prevFilter = filter;
32
+ return filters;
33
+ }
34
+ return __spreadArray(__spreadArray([], filters, true), [filter], false);
35
+ }, []);
36
+ var val = Array.isArray(value) ? value : [value];
37
+ var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
38
+ {
39
+ attribute: attribute,
40
+ value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
41
+ },
42
+ ], false) });
43
+ return newState;
44
+ };
45
+ export var clearFilterAction = function (state) {
46
+ return __assign(__assign({}, state), { filters: [] });
47
+ };
@@ -0,0 +1,26 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ export var includeAction = function (includes, state) {
25
+ return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
26
+ };
@@ -0,0 +1,3 @@
1
+ export * from "@/actions/sort";
2
+ export * from "@/actions/filter";
3
+ export * from "@/actions/include";
@@ -0,0 +1,29 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ import { usingAlias } from "@/index";
25
+ export var sortAction = function (sorts, state) {
26
+ var attribute = sorts[0], direction = sorts[1];
27
+ var attributeAliased = usingAlias(state, attribute);
28
+ return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
29
+ };
@@ -0,0 +1,47 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ import { usingAlias, } from "@/utils";
25
+ export var filterAction = function (attribute, value, state) {
26
+ var _a;
27
+ var alias = usingAlias(state, attribute);
28
+ var prevFilter;
29
+ var allFilters = state.filters.reduce(function (filters, filter) {
30
+ if (filter.attribute === alias) {
31
+ prevFilter = filter;
32
+ return filters;
33
+ }
34
+ return __spreadArray(__spreadArray([], filters, true), [filter], false);
35
+ }, []);
36
+ var val = Array.isArray(value) ? value : [value];
37
+ var newState = __assign(__assign({}, state), { filters: __spreadArray(__spreadArray([], allFilters, true), [
38
+ {
39
+ attribute: attribute,
40
+ value: __spreadArray(__spreadArray([], ((_a = prevFilter === null || prevFilter === void 0 ? void 0 : prevFilter.value) !== null && _a !== void 0 ? _a : []), true), val, true),
41
+ },
42
+ ], false) });
43
+ return newState;
44
+ };
45
+ export var clearFilterAction = function (state) {
46
+ return __assign(__assign({}, state), { filters: [] });
47
+ };
@@ -0,0 +1,26 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ export var includeAction = function (includes, state) {
25
+ return __assign(__assign({}, state), { includes: __spreadArray(__spreadArray([], state.includes, true), [includes], false) });
26
+ };
@@ -0,0 +1,3 @@
1
+ export * from "@/actions/sort";
2
+ export * from "@/actions/filter";
3
+ export * from "@/actions/include";
@@ -0,0 +1,29 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
14
+ if (pack || arguments.length === 2)
15
+ for (var i = 0, l = from.length, ar; i < l; i++) {
16
+ if (ar || !(i in from)) {
17
+ if (!ar)
18
+ ar = Array.prototype.slice.call(from, 0, i);
19
+ ar[i] = from[i];
20
+ }
21
+ }
22
+ return to.concat(ar || Array.prototype.slice.call(from));
23
+ };
24
+ import { usingAlias } from "@/index";
25
+ export var sortAction = function (sorts, state) {
26
+ var attribute = sorts[0], direction = sorts[1];
27
+ var attributeAliased = usingAlias(state, attribute);
28
+ return __assign(__assign({}, state), { sorts: __spreadArray(__spreadArray([], state.sorts, true), [[attributeAliased, direction]], false) });
29
+ };
@@ -0,0 +1,86 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ import { useReducer, useState } from "react";
14
+ import { build, clearFilterAction, filterAction, includeAction, sortAction, } from "@/index";
15
+ var reducer = function (state, action) {
16
+ switch (action === null || action === void 0 ? void 0 : action.type) {
17
+ case "filter": {
18
+ var filter = action.payload;
19
+ return filterAction(filter.attribute, filter.value, state);
20
+ }
21
+ case "clear_filter": {
22
+ return clearFilterAction(state);
23
+ }
24
+ case "include": {
25
+ var includes = action.payload;
26
+ return includeAction(includes, state);
27
+ }
28
+ case "sort": {
29
+ var sorts = action.payload;
30
+ return sortAction(sorts, state);
31
+ }
32
+ default: {
33
+ return __assign({}, state);
34
+ }
35
+ }
36
+ };
37
+ var initialState = function () {
38
+ return ({
39
+ aliases: {},
40
+ filters: [],
41
+ includes: [],
42
+ sorts: [],
43
+ });
44
+ };
45
+ export var useQueryBuilder = function (config) {
46
+ if (config === void 0) {
47
+ config = {};
48
+ }
49
+ var init = useState(function () { return initialState(); })[0];
50
+ var _a = useReducer(reducer, init, function (init) {
51
+ var _a;
52
+ return (__assign(__assign({}, init), { aliases: (_a = config === null || config === void 0 ? void 0 : config.aliases) !== null && _a !== void 0 ? _a : {} }));
53
+ }), state = _a[0], dispatch = _a[1];
54
+ var builder = {
55
+ filters: function (attribute, value) {
56
+ dispatch({
57
+ type: "filter",
58
+ payload: { attribute: attribute, value: value },
59
+ });
60
+ return builder;
61
+ },
62
+ build: function () { return build(state); },
63
+ clearFilters: function () {
64
+ dispatch({
65
+ type: "clear_filter",
66
+ payload: undefined,
67
+ });
68
+ return builder;
69
+ },
70
+ includes: function (includes) {
71
+ dispatch({
72
+ type: "include",
73
+ payload: includes,
74
+ });
75
+ return builder;
76
+ },
77
+ sorts: function (attribute, direction) {
78
+ dispatch({
79
+ type: "sort",
80
+ payload: [attribute, direction !== null && direction !== void 0 ? direction : "asc"],
81
+ });
82
+ return builder;
83
+ },
84
+ };
85
+ return builder;
86
+ };
@@ -0,0 +1,4 @@
1
+ export var usingAlias = function (state, key) {
2
+ var _a;
3
+ return (_a = state.aliases[key]) !== null && _a !== void 0 ? _a : key;
4
+ };
@@ -0,0 +1,30 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ export var build = function (state) {
14
+ var filters = state.filters.reduce(function (acc, filter) {
15
+ var _a;
16
+ return (__assign(__assign({}, acc), (_a = {}, _a["filters[".concat(filter.attribute, "]")] = filter.value.join(","), _a)));
17
+ }, {});
18
+ var sorts = state.sorts.reduce(function (acc, sort) {
19
+ var attribute = sort[0], dir = sort[1];
20
+ var direction = dir === "desc" ? "-" : "";
21
+ acc.push("".concat(direction).concat(attribute));
22
+ return acc;
23
+ }, []);
24
+ var urlSearchParams = new URLSearchParams(__assign({}, filters));
25
+ if (sorts.length > 0) {
26
+ urlSearchParams.append("sort", sorts.join(","));
27
+ }
28
+ var searchParamsString = urlSearchParams.toString();
29
+ return searchParamsString ? "?" + urlSearchParams.toString() : "";
30
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export * from "@/utils";
2
+ export * from "@/actions";
3
+ export * from "@/useQueryBuilder";
@@ -0,0 +1,86 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ import { useReducer, useState } from "react";
14
+ import { build, clearFilterAction, filterAction, includeAction, sortAction, } from "@/index";
15
+ var reducer = function (state, action) {
16
+ switch (action === null || action === void 0 ? void 0 : action.type) {
17
+ case "filter": {
18
+ var filter = action.payload;
19
+ return filterAction(filter.attribute, filter.value, state);
20
+ }
21
+ case "clear_filter": {
22
+ return clearFilterAction(state);
23
+ }
24
+ case "include": {
25
+ var includes = action.payload;
26
+ return includeAction(includes, state);
27
+ }
28
+ case "sort": {
29
+ var sorts = action.payload;
30
+ return sortAction(sorts, state);
31
+ }
32
+ default: {
33
+ return __assign({}, state);
34
+ }
35
+ }
36
+ };
37
+ var initialState = function () {
38
+ return ({
39
+ aliases: {},
40
+ filters: [],
41
+ includes: [],
42
+ sorts: [],
43
+ });
44
+ };
45
+ export var useQueryBuilder = function (config) {
46
+ if (config === void 0) {
47
+ config = {};
48
+ }
49
+ var init = useState(function () { return initialState(); })[0];
50
+ var _a = useReducer(reducer, init, function (init) {
51
+ var _a;
52
+ return (__assign(__assign({}, init), { aliases: (_a = config === null || config === void 0 ? void 0 : config.aliases) !== null && _a !== void 0 ? _a : {} }));
53
+ }), state = _a[0], dispatch = _a[1];
54
+ var builder = {
55
+ filters: function (attribute, value) {
56
+ dispatch({
57
+ type: "filter",
58
+ payload: { attribute: attribute, value: value },
59
+ });
60
+ return builder;
61
+ },
62
+ build: function () { return build(state); },
63
+ clearFilters: function () {
64
+ dispatch({
65
+ type: "clear_filter",
66
+ payload: undefined,
67
+ });
68
+ return builder;
69
+ },
70
+ includes: function (includes) {
71
+ dispatch({
72
+ type: "include",
73
+ payload: includes,
74
+ });
75
+ return builder;
76
+ },
77
+ sorts: function (attribute, direction) {
78
+ dispatch({
79
+ type: "sort",
80
+ payload: [attribute, direction !== null && direction !== void 0 ? direction : "asc"],
81
+ });
82
+ return builder;
83
+ },
84
+ };
85
+ return builder;
86
+ };
@@ -0,0 +1,4 @@
1
+ export var usingAlias = function (state, key) {
2
+ var _a;
3
+ return (_a = state.aliases[key]) !== null && _a !== void 0 ? _a : key;
4
+ };
@@ -0,0 +1,30 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function (t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s)
6
+ if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ export var build = function (state) {
14
+ var filters = state.filters.reduce(function (acc, filter) {
15
+ var _a;
16
+ return (__assign(__assign({}, acc), (_a = {}, _a["filters[".concat(filter.attribute, "]")] = filter.value.join(","), _a)));
17
+ }, {});
18
+ var sorts = state.sorts.reduce(function (acc, sort) {
19
+ var attribute = sort[0], dir = sort[1];
20
+ var direction = dir === "desc" ? "-" : "";
21
+ acc.push("".concat(direction).concat(attribute));
22
+ return acc;
23
+ }, []);
24
+ var urlSearchParams = new URLSearchParams(__assign({}, filters));
25
+ if (sorts.length > 0) {
26
+ urlSearchParams.append("sort", sorts.join(","));
27
+ }
28
+ var searchParamsString = urlSearchParams.toString();
29
+ return searchParamsString ? "?" + urlSearchParams.toString() : "";
30
+ };
@@ -0,0 +1,3 @@
1
+ export * from "@/utils/state";
2
+ export * from "@/utils/alias";
3
+ export * from "@/utils/build";
@@ -0,0 +1 @@
1
+ export {};
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "@/utils";
2
+ export * from "@/actions";
3
+ export * from "@/useQueryBuilder";