@eienjs/adonisjs-api-query 1.1.1 → 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 (105) hide show
  1. package/{LICENSE.md → LICENSE} +1 -1
  2. package/README.md +28 -2
  3. package/build/configure.d.ts +6 -2
  4. package/build/configure.js +11 -0
  5. package/build/index.d.ts +32 -31
  6. package/build/index.js +31 -153
  7. package/build/providers/api_query_provider.d.ts +41 -37
  8. package/build/providers/api_query_provider.js +21 -26
  9. package/build/src/allowed_filter.d.ts +40 -36
  10. package/build/src/allowed_filter.js +113 -0
  11. package/build/src/allowed_include.d.ts +20 -16
  12. package/build/src/allowed_include.js +48 -0
  13. package/build/src/allowed_sort.d.ts +21 -17
  14. package/build/src/allowed_sort.js +50 -0
  15. package/build/src/api_query_builder_request.d.ts +34 -30
  16. package/build/src/api_query_builder_request.js +122 -0
  17. package/build/src/bindings/api_query_request.js +13 -0
  18. package/build/src/bindings/filters_query.js +40 -0
  19. package/build/src/bindings/includes_query.js +51 -0
  20. package/build/src/bindings/sorts_query.js +45 -0
  21. package/build/src/define_config.d.ts +7 -3
  22. package/build/src/define_config.js +25 -0
  23. package/build/src/enums/filter_operator.d.ts +11 -9
  24. package/build/src/enums/filter_operator.js +12 -0
  25. package/build/src/enums/sort_direction.d.ts +6 -4
  26. package/build/src/enums/sort_direction.js +7 -0
  27. package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.d.ts +9 -5
  28. package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js +11 -0
  29. package/build/src/exceptions/invalid_append_query.d.ts +8 -4
  30. package/build/src/exceptions/invalid_append_query.js +14 -0
  31. package/build/src/exceptions/invalid_direction.d.ts +7 -3
  32. package/build/src/exceptions/invalid_direction.js +10 -0
  33. package/build/src/exceptions/invalid_filter_query.d.ts +10 -6
  34. package/build/src/exceptions/invalid_filter_query.js +18 -0
  35. package/build/src/exceptions/invalid_filter_value.d.ts +7 -3
  36. package/build/src/exceptions/invalid_filter_value.js +9 -0
  37. package/build/src/exceptions/invalid_include_query.d.ts +10 -6
  38. package/build/src/exceptions/invalid_include_query.js +22 -0
  39. package/build/src/exceptions/invalid_query.d.ts +7 -3
  40. package/build/src/exceptions/invalid_query.js +7 -0
  41. package/build/src/exceptions/invalid_sort_query.d.ts +10 -6
  42. package/build/src/exceptions/invalid_sort_query.js +18 -0
  43. package/build/src/exceptions/unknown_included_fields_query.d.ts +8 -4
  44. package/build/src/exceptions/unknown_included_fields_query.js +13 -0
  45. package/build/src/filters/filters_begin_with_strict.d.ts +10 -6
  46. package/build/src/filters/filters_begin_with_strict.js +9 -0
  47. package/build/src/filters/filters_callback.d.ts +10 -6
  48. package/build/src/filters/filters_callback.js +12 -0
  49. package/build/src/filters/filters_ends_with_strict.d.ts +10 -6
  50. package/build/src/filters/filters_ends_with_strict.js +9 -0
  51. package/build/src/filters/filters_exact.d.ts +15 -11
  52. package/build/src/filters/filters_exact.js +47 -0
  53. package/build/src/filters/filters_operator.d.ts +17 -13
  54. package/build/src/filters/filters_operator.js +53 -0
  55. package/build/src/filters/filters_partial.d.ts +15 -11
  56. package/build/src/filters/filters_partial.js +39 -0
  57. package/build/src/filters/filters_trashed.d.ts +9 -5
  58. package/build/src/filters/filters_trashed.js +14 -0
  59. package/build/src/includes/included_callback.d.ts +11 -7
  60. package/build/src/includes/included_callback.js +12 -0
  61. package/build/src/includes/included_count.d.ts +8 -4
  62. package/build/src/includes/included_count.js +11 -0
  63. package/build/src/includes/included_relationship.d.ts +12 -8
  64. package/build/src/includes/included_relationship.js +40 -0
  65. package/build/src/sorts/sorts_callback.d.ts +10 -6
  66. package/build/src/sorts/sorts_callback.js +12 -0
  67. package/build/src/sorts/sorts_field.d.ts +8 -4
  68. package/build/src/sorts/sorts_field.js +8 -0
  69. package/build/src/utils/helpers.js +26 -0
  70. package/build/stubs/main.d.ts +4 -1
  71. package/build/stubs/main.js +4 -0
  72. package/build/types.d.ts +91 -0
  73. package/build/types.js +1 -0
  74. package/package.json +99 -88
  75. package/build/api_query_request-QXOB4BN6.js +0 -18
  76. package/build/api_query_request-QXOB4BN6.js.map +0 -1
  77. package/build/chunk-3ITWUZL5.js +0 -108
  78. package/build/chunk-3ITWUZL5.js.map +0 -1
  79. package/build/chunk-54HNQTDY.js +0 -348
  80. package/build/chunk-54HNQTDY.js.map +0 -1
  81. package/build/chunk-IV3B5WO7.js +0 -160
  82. package/build/chunk-IV3B5WO7.js.map +0 -1
  83. package/build/chunk-MKQ3HMMA.js +0 -198
  84. package/build/chunk-MKQ3HMMA.js.map +0 -1
  85. package/build/chunk-XIRHVLVQ.js +0 -10
  86. package/build/chunk-XIRHVLVQ.js.map +0 -1
  87. package/build/filters_query-LCFH2F2X.js +0 -55
  88. package/build/filters_query-LCFH2F2X.js.map +0 -1
  89. package/build/includes_query-PVONWQMC.js +0 -70
  90. package/build/includes_query-PVONWQMC.js.map +0 -1
  91. package/build/index.js.map +0 -1
  92. package/build/metafile-esm.json +0 -1
  93. package/build/providers/api_query_provider.js.map +0 -1
  94. package/build/sorts_query-NJTC5UXX.js +0 -63
  95. package/build/sorts_query-NJTC5UXX.js.map +0 -1
  96. package/build/src/bindings/api_query_request.d.ts +0 -2
  97. package/build/src/bindings/filters_query.d.ts +0 -3
  98. package/build/src/bindings/includes_query.d.ts +0 -3
  99. package/build/src/bindings/sorts_query.d.ts +0 -3
  100. package/build/src/exceptions/invalid_field_query.d.ts +0 -5
  101. package/build/src/types.d.ts +0 -90
  102. package/build/src/types.js +0 -1
  103. package/build/src/types.js.map +0 -1
  104. package/build/src/utils/helpers.d.ts +0 -3
  105. /package/build/{config.stub → stubs/config.stub} +0 -0
@@ -1,6 +1,6 @@
1
1
  # The MIT License
2
2
 
3
- Copyright (c) 2025 - EienJS
3
+ Copyright (c) 2025 - 2026 | EienJS
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -7,12 +7,38 @@
7
7
  [![Build Status][badge-build]][build]
8
8
  [![Total Downloads][badge-downloads]][downloads]
9
9
 
10
- > Easily build Lucid queries from API requests
10
+ > Easily build Lucid queries from API requests for your AdonisJS v7 application.
11
11
 
12
12
  ## Introduction
13
13
 
14
14
  This package provides a set of macros on `ModelQueryBuilder` to build [Lucid](https://adonisjs.com/docs/lucid) queries from API requests. Inspired by [Spatie's Laravel Query Builder](https://github.com/spatie/laravel-query-builder).
15
15
 
16
+ ## Quick Start
17
+
18
+ Install the package using the following command:
19
+
20
+ ```sh
21
+ node ace add @eienjs/adonisjs-api-query
22
+ ```
23
+
24
+ Automatically the command will register the provider. Now you can use with your controller response:
25
+
26
+ ```typescript
27
+ import type { HttpContext } from '@adonisjs/core/http';
28
+ import User from '#models/user';
29
+
30
+ // inside a controller
31
+ export default class MyController {
32
+ public async handle({ request }: HttpContext) {
33
+ const users = await User.query()
34
+ .withRequest(request) // Pass the request to the query builder if async local storage is not enabled
35
+ .allowedFilters('name')
36
+ .allowedIncludes('posts')
37
+ .allowedSorts('id');
38
+ }
39
+ }
40
+ ```
41
+
16
42
  ## Documentation
17
43
 
18
44
  The documentation is available on [EienJS](https://eienjs.com/packages/adonisjs-api-query/getting-started/).
@@ -30,7 +56,7 @@ The `@eienjs/adonisjs-api-query` library is licensed for use under the MIT Licen
30
56
  [source]: https://github.com/eienjs/adonisjs-api-query
31
57
  [node-version]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
32
58
  [release]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
33
- [license]: https://github.com/eienjs/adonisjs-api-query/blob/main/LICENSE.md
59
+ [license]: https://github.com/eienjs/adonisjs-api-query/blob/main/LICENSE
34
60
  [build]: https://github.com/eienjs/adonisjs-api-query/actions/workflows/build.yml?query=branch:main
35
61
  [downloads]: https://www.npmjs.com/package/@eienjs/adonisjs-api-query
36
62
  [badge-source]: https://img.shields.io/badge/source-eienjs/adonisjs--api--query-blue.svg?logo=github
@@ -1,2 +1,6 @@
1
- import type Configure from '@adonisjs/core/commands/configure';
2
- export declare const configure: (command: Configure) => Promise<void>;
1
+ import Configure from "@adonisjs/core/commands/configure";
2
+
3
+ //#region configure.d.ts
4
+ declare const configure: (command: Configure) => Promise<void>;
5
+ //#endregion
6
+ export { configure };
@@ -0,0 +1,11 @@
1
+ import { stubsRoot } from "./stubs/main.js";
2
+ //#region configure.ts
3
+ const configure = async (command) => {
4
+ const codemods = await command.createCodemods();
5
+ await codemods.updateRcFile((rcFile) => {
6
+ rcFile.addProvider("@eienjs/adonisjs-api-query/providers/api_query_provider");
7
+ });
8
+ await codemods.makeUsingStub(stubsRoot, "config.stub", {});
9
+ };
10
+ //#endregion
11
+ export { configure };
package/build/index.d.ts CHANGED
@@ -1,31 +1,32 @@
1
- export { configure } from './configure.js';
2
- export { AllowedFilter } from './src/allowed_filter.js';
3
- export { AllowedInclude } from './src/allowed_include.js';
4
- export { AllowedSort } from './src/allowed_sort.js';
5
- export { ApiQueryBuilderRequest } from './src/api_query_builder_request.js';
6
- export { defineConfig } from './src/define_config.js';
7
- export { FilterOperator } from './src/enums/filter_operator.js';
8
- export { SortDirection } from './src/enums/sort_direction.js';
9
- export { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from './src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js';
10
- export { InvalidAppendQuery } from './src/exceptions/invalid_append_query.js';
11
- export { InvalidDirection } from './src/exceptions/invalid_direction.js';
12
- export { InvalidFilterQuery } from './src/exceptions/invalid_filter_query.js';
13
- export { InvalidFilterValue } from './src/exceptions/invalid_filter_value.js';
14
- export { InvalidIncludeQuery } from './src/exceptions/invalid_include_query.js';
15
- export { InvalidQuery } from './src/exceptions/invalid_query.js';
16
- export { InvalidSortQuery } from './src/exceptions/invalid_sort_query.js';
17
- export { UnknownIncludedFieldsQuery } from './src/exceptions/unknown_included_fields_query.js';
18
- export { stubsRoot } from './stubs/main.js';
19
- export * from 'collect.js';
20
- export { FiltersBeginWithStrict } from './src/filters/filters_begin_with_strict.js';
21
- export { FiltersCallback } from './src/filters/filters_callback.js';
22
- export { FiltersEndsWithStrict } from './src/filters/filters_ends_with_strict.js';
23
- export { FiltersExact } from './src/filters/filters_exact.js';
24
- export { FiltersOperator } from './src/filters/filters_operator.js';
25
- export { FiltersPartial } from './src/filters/filters_partial.js';
26
- export { FiltersTrashed } from './src/filters/filters_trashed.js';
27
- export { IncludedCallback } from './src/includes/included_callback.js';
28
- export { IncludedCount } from './src/includes/included_count.js';
29
- export { IncludedRelationship } from './src/includes/included_relationship.js';
30
- export { SortsCallback } from './src/sorts/sorts_callback.js';
31
- export { SortsField } from './src/sorts/sorts_field.js';
1
+ import { configure } from "./configure.js";
2
+ import { FilterOperator } from "./src/enums/filter_operator.js";
3
+ import { AllowedFilter } from "./src/allowed_filter.js";
4
+ import { AllowedInclude } from "./src/allowed_include.js";
5
+ import { AllowedSort } from "./src/allowed_sort.js";
6
+ import { ApiQueryBuilderRequest } from "./src/api_query_builder_request.js";
7
+ import { defineConfig } from "./src/define_config.js";
8
+ import { SortDirection } from "./src/enums/sort_direction.js";
9
+ import { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from "./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js";
10
+ import { InvalidQuery } from "./src/exceptions/invalid_query.js";
11
+ import { InvalidAppendQuery } from "./src/exceptions/invalid_append_query.js";
12
+ import { InvalidDirection } from "./src/exceptions/invalid_direction.js";
13
+ import { InvalidFilterQuery } from "./src/exceptions/invalid_filter_query.js";
14
+ import { InvalidFilterValue } from "./src/exceptions/invalid_filter_value.js";
15
+ import { InvalidIncludeQuery } from "./src/exceptions/invalid_include_query.js";
16
+ import { InvalidSortQuery } from "./src/exceptions/invalid_sort_query.js";
17
+ import { UnknownIncludedFieldsQuery } from "./src/exceptions/unknown_included_fields_query.js";
18
+ import { FiltersExact } from "./src/filters/filters_exact.js";
19
+ import { FiltersPartial } from "./src/filters/filters_partial.js";
20
+ import { FiltersBeginWithStrict } from "./src/filters/filters_begin_with_strict.js";
21
+ import { FiltersCallback } from "./src/filters/filters_callback.js";
22
+ import { FiltersEndsWithStrict } from "./src/filters/filters_ends_with_strict.js";
23
+ import { FiltersOperator } from "./src/filters/filters_operator.js";
24
+ import { FiltersTrashed } from "./src/filters/filters_trashed.js";
25
+ import { IncludedCallback } from "./src/includes/included_callback.js";
26
+ import { IncludedCount } from "./src/includes/included_count.js";
27
+ import { IncludedRelationship } from "./src/includes/included_relationship.js";
28
+ import { SortsCallback } from "./src/sorts/sorts_callback.js";
29
+ import { SortsField } from "./src/sorts/sorts_field.js";
30
+ import { stubsRoot } from "./stubs/main.js";
31
+ export * from "collect.js";
32
+ export { AllowedFieldsMustBeCalledBeforeAllowedIncludes, AllowedFilter, AllowedInclude, AllowedSort, ApiQueryBuilderRequest, FilterOperator, FiltersBeginWithStrict, FiltersCallback, FiltersEndsWithStrict, FiltersExact, FiltersOperator, FiltersPartial, FiltersTrashed, IncludedCallback, IncludedCount, IncludedRelationship, InvalidAppendQuery, InvalidDirection, InvalidFilterQuery, InvalidFilterValue, InvalidIncludeQuery, InvalidQuery, InvalidSortQuery, SortDirection, SortsCallback, SortsField, UnknownIncludedFieldsQuery, configure, defineConfig, stubsRoot };
package/build/index.js CHANGED
@@ -1,154 +1,32 @@
1
- import {
2
- AllowedSort,
3
- InvalidDirection,
4
- InvalidSortQuery,
5
- SortDirection,
6
- SortsCallback,
7
- SortsField
8
- } from "./chunk-3ITWUZL5.js";
9
- import {
10
- AllowedFilter,
11
- FilterOperator,
12
- FiltersBeginWithStrict,
13
- FiltersCallback,
14
- FiltersEndsWithStrict,
15
- FiltersExact,
16
- FiltersOperator,
17
- FiltersPartial,
18
- FiltersTrashed,
19
- InvalidFilterQuery
20
- } from "./chunk-54HNQTDY.js";
21
- import {
22
- ApiQueryBuilderRequest
23
- } from "./chunk-MKQ3HMMA.js";
24
- import {
25
- AllowedInclude,
26
- IncludedCallback,
27
- IncludedCount,
28
- IncludedRelationship,
29
- InvalidIncludeQuery
30
- } from "./chunk-IV3B5WO7.js";
31
- import {
32
- InvalidQuery
33
- } from "./chunk-XIRHVLVQ.js";
34
-
35
- // stubs/main.ts
36
- import path from "path";
37
- import { fileURLToPath } from "url";
38
- var stubsRoot = path.dirname(fileURLToPath(import.meta.url));
39
-
40
- // configure.ts
41
- var configure = async (command) => {
42
- const codemods = await command.createCodemods();
43
- await codemods.updateRcFile((rcFile) => {
44
- rcFile.addProvider("@eienjs/adonisjs-api-query/api_query_provider");
45
- });
46
- await codemods.makeUsingStub(stubsRoot, "config.stub", {});
47
- };
48
-
49
- // src/define_config.ts
50
- import { configProvider } from "@adonisjs/core";
51
- var defineConfig = function(config) {
52
- return configProvider.create(async (_) => {
53
- return {
54
- parameters: {
55
- include: config.parameters?.include ?? "include",
56
- filter: config.parameters?.filter ?? "filter",
57
- sort: config.parameters?.sort ?? "sort",
58
- fields: config.parameters?.fields ?? "fields",
59
- append: config.parameters?.append ?? "append"
60
- },
61
- countSuffix: config.countSuffix ?? "Count",
62
- existsSuffix: config.existsSuffix ?? "Exists",
63
- disableInvalidFilterQueryException: config.disableInvalidFilterQueryException ?? false,
64
- disableInvalidSortQueryException: config.disableInvalidSortQueryException ?? false,
65
- disableInvalidIncludesQueryException: config.disableInvalidIncludesQueryException ?? false,
66
- convertRelationNamesToSnakeCasePlural: config.convertRelationNamesToSnakeCasePlural ?? false,
67
- convertRelationTableNameStrategy: config.convertRelationTableNameStrategy ?? false,
68
- convertFieldNamesToSnakeCase: config.convertFieldNamesToSnakeCase ?? false
69
- };
70
- });
71
- };
72
-
73
- // src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts
74
- import { Exception } from "@adonisjs/core/exceptions";
75
- var AllowedFieldsMustBeCalledBeforeAllowedIncludes = class extends Exception {
76
- static code;
77
- static status;
78
- constructor() {
79
- super("The QueryBuilder's `allowedFields` method must be called before the `allowedIncludes` method");
80
- }
81
- };
82
-
83
- // src/exceptions/invalid_append_query.ts
84
- import { ResponseStatus } from "@adonisjs/core/http";
85
- var InvalidAppendQuery = class _InvalidAppendQuery extends InvalidQuery {
86
- constructor(appendsNotAllowed, allowedAppends) {
87
- const notAllowed = appendsNotAllowed.join(", ");
88
- const allowed = allowedAppends.join(", ");
89
- const message = `Requested append(s) \`${notAllowed}\` are not allowed. Allowed append(s) are \`${allowed}\``;
90
- super(message, { status: ResponseStatus.BadRequest });
91
- }
92
- static appendsNotAllowed(appendsNotAllowed, allowedAppends) {
93
- return new _InvalidAppendQuery(appendsNotAllowed, allowedAppends);
94
- }
95
- };
96
-
97
- // src/exceptions/invalid_filter_value.ts
98
- import { Exception as Exception2 } from "@adonisjs/core/exceptions";
99
- var InvalidFilterValue = class _InvalidFilterValue extends Exception2 {
100
- static make(value) {
101
- return new _InvalidFilterValue(`Filter value \`${value}\` is invalid`);
102
- }
103
- };
104
-
105
- // src/exceptions/unknown_included_fields_query.ts
106
- import { ResponseStatus as ResponseStatus2 } from "@adonisjs/core/http";
107
- var UnknownIncludedFieldsQuery = class extends InvalidQuery {
108
- unknownFields;
109
- constructor(unknownFields) {
110
- const notAllowed = unknownFields.join(", ");
111
- const message = [
112
- `Requested field(s) \`${notAllowed}\` are not allowed (yet). `,
113
- "If you want to allow these fields, please make sure to call the QueryBuilder's `allowedFields` method before the `allowedIncludes` method"
114
- ].join("");
115
- super(message, { status: ResponseStatus2.BadRequest });
116
- this.unknownFields = unknownFields;
117
- }
118
- };
119
-
120
- // index.ts
1
+ import { stubsRoot } from "./stubs/main.js";
2
+ import { configure } from "./configure.js";
3
+ import { ApiQueryBuilderRequest } from "./src/api_query_builder_request.js";
4
+ import { FiltersExact } from "./src/filters/filters_exact.js";
5
+ import { FiltersPartial } from "./src/filters/filters_partial.js";
6
+ import { FiltersBeginWithStrict } from "./src/filters/filters_begin_with_strict.js";
7
+ import { FiltersCallback } from "./src/filters/filters_callback.js";
8
+ import { FiltersEndsWithStrict } from "./src/filters/filters_ends_with_strict.js";
9
+ import { FilterOperator } from "./src/enums/filter_operator.js";
10
+ import { FiltersOperator } from "./src/filters/filters_operator.js";
11
+ import { FiltersTrashed } from "./src/filters/filters_trashed.js";
12
+ import { AllowedFilter } from "./src/allowed_filter.js";
13
+ import { IncludedCallback } from "./src/includes/included_callback.js";
14
+ import { IncludedCount } from "./src/includes/included_count.js";
15
+ import { IncludedRelationship } from "./src/includes/included_relationship.js";
16
+ import { AllowedInclude } from "./src/allowed_include.js";
17
+ import { SortDirection } from "./src/enums/sort_direction.js";
18
+ import { InvalidDirection } from "./src/exceptions/invalid_direction.js";
19
+ import { SortsCallback } from "./src/sorts/sorts_callback.js";
20
+ import { SortsField } from "./src/sorts/sorts_field.js";
21
+ import { AllowedSort } from "./src/allowed_sort.js";
22
+ import { defineConfig } from "./src/define_config.js";
23
+ import { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from "./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js";
24
+ import { InvalidQuery } from "./src/exceptions/invalid_query.js";
25
+ import { InvalidAppendQuery } from "./src/exceptions/invalid_append_query.js";
26
+ import { InvalidFilterQuery } from "./src/exceptions/invalid_filter_query.js";
27
+ import { InvalidFilterValue } from "./src/exceptions/invalid_filter_value.js";
28
+ import { InvalidIncludeQuery } from "./src/exceptions/invalid_include_query.js";
29
+ import { InvalidSortQuery } from "./src/exceptions/invalid_sort_query.js";
30
+ import { UnknownIncludedFieldsQuery } from "./src/exceptions/unknown_included_fields_query.js";
121
31
  export * from "collect.js";
122
- export {
123
- AllowedFieldsMustBeCalledBeforeAllowedIncludes,
124
- AllowedFilter,
125
- AllowedInclude,
126
- AllowedSort,
127
- ApiQueryBuilderRequest,
128
- FilterOperator,
129
- FiltersBeginWithStrict,
130
- FiltersCallback,
131
- FiltersEndsWithStrict,
132
- FiltersExact,
133
- FiltersOperator,
134
- FiltersPartial,
135
- FiltersTrashed,
136
- IncludedCallback,
137
- IncludedCount,
138
- IncludedRelationship,
139
- InvalidAppendQuery,
140
- InvalidDirection,
141
- InvalidFilterQuery,
142
- InvalidFilterValue,
143
- InvalidIncludeQuery,
144
- InvalidQuery,
145
- InvalidSortQuery,
146
- SortDirection,
147
- SortsCallback,
148
- SortsField,
149
- UnknownIncludedFieldsQuery,
150
- configure,
151
- defineConfig,
152
- stubsRoot
153
- };
154
- //# sourceMappingURL=index.js.map
32
+ export { AllowedFieldsMustBeCalledBeforeAllowedIncludes, AllowedFilter, AllowedInclude, AllowedSort, ApiQueryBuilderRequest, FilterOperator, FiltersBeginWithStrict, FiltersCallback, FiltersEndsWithStrict, FiltersExact, FiltersOperator, FiltersPartial, FiltersTrashed, IncludedCallback, IncludedCount, IncludedRelationship, InvalidAppendQuery, InvalidDirection, InvalidFilterQuery, InvalidFilterValue, InvalidIncludeQuery, InvalidQuery, InvalidSortQuery, SortDirection, SortsCallback, SortsField, UnknownIncludedFieldsQuery, configure, defineConfig, stubsRoot };
@@ -1,42 +1,46 @@
1
- import { type Request } from '@adonisjs/core/http';
2
- import { type ApplicationService } from '@adonisjs/core/types';
3
- import { type LucidModel } from '@adonisjs/lucid/types/model';
4
- import { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';
5
- import { type Collection } from 'collect.js';
6
- import { type AllowedFilter } from '../src/allowed_filter.js';
7
- import { type AllowedInclude } from '../src/allowed_include.js';
8
- import { type AllowedSort } from '../src/allowed_sort.js';
9
- import { type ApiQueryBuilderRequest } from '../src/api_query_builder_request.js';
10
- import { type ExtractKeys, type HintedString, type SortUnionKeyParams } from '../src/types.js';
11
- export default class ApiQueryProvider {
12
- protected app: ApplicationService;
13
- constructor(app: ApplicationService);
14
- boot(): Promise<void>;
1
+ import { ExtractKeys, HintedString, SortUnionKeyParams } from "../types.js";
2
+ import { AllowedFilter } from "../src/allowed_filter.js";
3
+ import { AllowedInclude } from "../src/allowed_include.js";
4
+ import { AllowedSort } from "../src/allowed_sort.js";
5
+ import { ApiQueryBuilderRequest } from "../src/api_query_builder_request.js";
6
+ import { Collection } from "collect.js";
7
+ import { HttpRequest } from "@adonisjs/core/http";
8
+ import { LucidModel } from "@adonisjs/lucid/types/model";
9
+ import { ExtractModelRelations } from "@adonisjs/lucid/types/relations";
10
+ import { ApplicationService } from "@adonisjs/core/types";
11
+
12
+ //#region providers/api_query_provider.d.ts
13
+ declare class ApiQueryProvider {
14
+ protected app: ApplicationService;
15
+ constructor(app: ApplicationService);
16
+ boot(): Promise<void>;
15
17
  }
16
18
  declare module '@adonisjs/lucid/orm' {
17
- interface ModelQueryBuilder {
18
- withRequest(request: Request): this;
19
- $apiQueryBuilderRequest: ApiQueryBuilderRequest;
20
- allowedSorts(...sorts: (AllowedSort<LucidModel> | string)[]): this;
21
- allowedSorts(sorts: (AllowedSort<LucidModel> | string)[]): this;
22
- defaultSort(...sorts: (AllowedSort<LucidModel> | string)[]): this;
23
- defaultSort(sorts: (AllowedSort<LucidModel> | string)[]): this;
24
- allowedFilters(...filters: (AllowedFilter<LucidModel> | string)[]): this;
25
- allowedFilters(filters: (AllowedFilter<LucidModel> | string)[]): this;
26
- allowedIncludes(...includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
27
- allowedIncludes(includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
28
- }
19
+ interface ModelQueryBuilder {
20
+ withRequest(request: HttpRequest): this;
21
+ $apiQueryBuilderRequest: ApiQueryBuilderRequest;
22
+ allowedSorts(...sorts: (AllowedSort<LucidModel> | string)[]): this;
23
+ allowedSorts(sorts: (AllowedSort<LucidModel> | string)[]): this;
24
+ defaultSort(...sorts: (AllowedSort<LucidModel> | string)[]): this;
25
+ defaultSort(sorts: (AllowedSort<LucidModel> | string)[]): this;
26
+ allowedFilters(...filters: (AllowedFilter<LucidModel> | string)[]): this;
27
+ allowedFilters(filters: (AllowedFilter<LucidModel> | string)[]): this;
28
+ allowedIncludes(...includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
29
+ allowedIncludes(includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;
30
+ }
29
31
  }
30
32
  declare module '@adonisjs/lucid/types/model' {
31
- interface ModelQueryBuilderContract<Model extends LucidModel, Result = InstanceType<Model>> {
32
- withRequest(request: Request): this;
33
- allowedSorts(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
34
- allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
35
- defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
36
- defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
37
- allowedFilters(...filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
38
- allowedFilters(filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
39
- allowedIncludes(...includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
40
- allowedIncludes(includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
41
- }
33
+ interface ModelQueryBuilderContract<Model extends LucidModel, Result = InstanceType<Model>> {
34
+ withRequest(request: HttpRequest): this;
35
+ allowedSorts(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
36
+ allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
37
+ defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
38
+ defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
39
+ allowedFilters(...filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
40
+ allowedFilters(filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
41
+ allowedIncludes(...includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
42
+ allowedIncludes(includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
43
+ }
42
44
  }
45
+ //#endregion
46
+ export { ApiQueryProvider as default };
@@ -1,30 +1,25 @@
1
- // providers/api_query_provider.ts
2
- import { configProvider } from "@adonisjs/core";
3
1
  import { RuntimeException } from "@adonisjs/core/exceptions";
2
+ import { configProvider } from "@adonisjs/core";
4
3
  import { ModelQueryBuilder } from "@adonisjs/lucid/orm";
4
+ //#region providers/api_query_provider.ts
5
5
  var ApiQueryProvider = class {
6
- constructor(app) {
7
- this.app = app;
8
- }
9
- async boot() {
10
- const { extendModelQueryBuilderWithRequest } = await import("../api_query_request-QXOB4BN6.js");
11
- const { extendModelQueryBuilderWithSortsQuery } = await import("../sorts_query-NJTC5UXX.js");
12
- const { extendModelQueryBuilderWithFiltersQuery } = await import("../filters_query-LCFH2F2X.js");
13
- const { extendModelQueryBuilderWithIncludesQuery } = await import("../includes_query-PVONWQMC.js");
14
- const apiQueryConfigProvider = this.app.config.get("apiquery");
15
- const config = await configProvider.resolve(this.app, apiQueryConfigProvider);
16
- if (!config) {
17
- throw new RuntimeException(
18
- 'Invalid "config/apiquery.ts" file. Make sure you are using the "defineConfig" method'
19
- );
20
- }
21
- extendModelQueryBuilderWithRequest(ModelQueryBuilder);
22
- extendModelQueryBuilderWithSortsQuery(ModelQueryBuilder, config);
23
- extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);
24
- extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);
25
- }
26
- };
27
- export {
28
- ApiQueryProvider as default
6
+ app;
7
+ constructor(app) {
8
+ this.app = app;
9
+ }
10
+ async boot() {
11
+ const { extendModelQueryBuilderWithRequest } = await import("../src/bindings/api_query_request.js");
12
+ const { extendModelQueryBuilderWithSortsQuery } = await import("../src/bindings/sorts_query.js");
13
+ const { extendModelQueryBuilderWithFiltersQuery } = await import("../src/bindings/filters_query.js");
14
+ const { extendModelQueryBuilderWithIncludesQuery } = await import("../src/bindings/includes_query.js");
15
+ const apiQueryConfigProvider = this.app.config.get("apiquery");
16
+ const config = await configProvider.resolve(this.app, apiQueryConfigProvider);
17
+ if (!config) throw new RuntimeException("Invalid \"config/apiquery.ts\" file. Make sure you are using the \"defineConfig\" method");
18
+ extendModelQueryBuilderWithRequest(ModelQueryBuilder);
19
+ extendModelQueryBuilderWithSortsQuery(ModelQueryBuilder, config);
20
+ extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);
21
+ extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);
22
+ }
29
23
  };
30
- //# sourceMappingURL=api_query_provider.js.map
24
+ //#endregion
25
+ export { ApiQueryProvider as default };
@@ -1,37 +1,41 @@
1
- import { type LucidModel, type ModelAttributes, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';
2
- import { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';
3
- import { Collection } from 'collect.js';
4
- import { type FilterOperator } from './enums/filter_operator.js';
5
- import { type ExtractKeys, type Filter } from './types.js';
6
- export declare class AllowedFilter<Model extends LucidModel> {
7
- static setFilterArrayValueDelimiter(delimiter?: string): void;
8
- static exact<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, addRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
9
- static partial<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, addRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
10
- static beginsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, addRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
11
- static endsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, addRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
12
- static callback<Model extends LucidModel>(name: string, callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
13
- static trashed<Model extends LucidModel>(name?: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>): AllowedFilter<Model>;
14
- static custom<Model extends LucidModel>(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
15
- static operator<Model extends LucidModel>(name: string, filterOperator: FilterOperator, boolean?: 'and' | 'or', internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, addRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
16
- protected name: string;
17
- protected filterClass: Filter<Model>;
18
- protected internalName: string;
19
- protected ignored: Collection<unknown>;
20
- protected default: unknown;
21
- protected $hasDefault: boolean;
22
- protected nullable: boolean;
23
- constructor(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>);
24
- filter(query: ModelQueryBuilderContract<Model>, value: unknown): void;
25
- getFilterClass(): Filter<Model>;
26
- getName(): string;
27
- isForFilter(filterName: string): boolean;
28
- ignore(...values: unknown[]): this;
29
- getIgnored(): unknown[];
30
- getInternalName(): string;
31
- setDefault(defaultValue: unknown): this;
32
- getDefault(): unknown;
33
- hasDefault(): boolean;
34
- setNullable(nullable?: boolean): this;
35
- unsetDefault(): this;
36
- protected resolveValueForFiltering(value: unknown): StrictValuesWithoutRaw | null;
1
+ import { FilterOperator } from "./enums/filter_operator.js";
2
+ import { EnumType, ExtractKeys, Filter } from "../types.js";
3
+ import { Collection } from "collect.js";
4
+ import { LucidModel, ModelAttributes, ModelQueryBuilderContract } from "@adonisjs/lucid/types/model";
5
+ import { StrictValuesWithoutRaw } from "@adonisjs/lucid/types/querybuilder";
6
+
7
+ //#region src/allowed_filter.d.ts
8
+ declare class AllowedFilter<Model extends LucidModel> {
9
+ protected name: string;
10
+ protected filterClass: Filter<Model>;
11
+ protected internalName: string;
12
+ protected ignored: Collection<unknown>;
13
+ protected default: unknown;
14
+ protected $hasDefault: boolean;
15
+ protected nullable: boolean;
16
+ constructor(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>);
17
+ filter(query: ModelQueryBuilderContract<Model>, value: unknown): void;
18
+ getFilterClass(): Filter<Model>;
19
+ getName(): string;
20
+ isForFilter(filterName: string): boolean;
21
+ ignore(...values: unknown[]): this;
22
+ getIgnored(): unknown[];
23
+ getInternalName(): string;
24
+ setDefault(defaultValue: unknown): this;
25
+ getDefault(): unknown;
26
+ hasDefault(): boolean;
27
+ setNullable(isNullable?: boolean): this;
28
+ unsetDefault(): this;
29
+ protected resolveValueForFiltering(value: unknown): StrictValuesWithoutRaw | null;
30
+ static setFilterArrayValueDelimiter(delimiter?: string): void;
31
+ static exact<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
32
+ static partial<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
33
+ static beginsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
34
+ static endsWithStrict<Model extends LucidModel>(name: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
35
+ static callback<Model extends LucidModel>(name: string, callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
36
+ static trashed<Model extends LucidModel>(name?: string, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>): AllowedFilter<Model>;
37
+ static custom<Model extends LucidModel>(name: string, filterClass: Filter<Model>, internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, arrayValueDelimiter?: string): AllowedFilter<Model>;
38
+ static operator<Model extends LucidModel>(name: string, filterOperator: EnumType<typeof FilterOperator>, boolean?: 'and' | 'or', internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>, shouldAddRelationConstraint?: boolean, arrayValueDelimiter?: string): AllowedFilter<Model>;
37
39
  }
40
+ //#endregion
41
+ export { AllowedFilter };