@eienjs/adonisjs-api-query 1.1.1 → 3.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.
- package/{LICENSE.md → LICENSE} +1 -1
- package/README.md +166 -2
- package/build/configure.d.ts +2 -2
- package/build/configure.js +10 -0
- package/build/index.d.ts +38 -31
- package/build/index.js +38 -154
- package/build/providers/api_query_provider.d.ts +48 -37
- package/build/providers/api_query_provider.js +26 -27
- package/build/src/allowed_filter.d.ts +44 -36
- package/build/src/allowed_filter.js +135 -0
- package/build/src/allowed_include.d.ts +15 -16
- package/build/src/allowed_include.js +47 -0
- package/build/src/allowed_sort.d.ts +17 -17
- package/build/src/allowed_sort.js +49 -0
- package/build/src/api_query_builder_request.d.ts +55 -30
- package/build/src/api_query_builder_request.js +200 -0
- package/build/src/base_filterable.d.ts +45 -0
- package/build/src/base_filterable.js +172 -0
- package/build/src/bindings/api_query_request.js +13 -0
- package/build/src/bindings/filterable_query.js +51 -0
- package/build/src/bindings/filters_query.js +38 -0
- package/build/src/bindings/includes_query.js +50 -0
- package/build/src/bindings/sorts_query.js +42 -0
- package/build/src/bindings/validation_query.js +27 -0
- package/build/src/decorators/filterable.d.ts +20 -0
- package/build/src/decorators/filterable.js +24 -0
- package/build/src/define_config.d.ts +3 -3
- package/build/src/define_config.js +25 -0
- package/build/src/enums/filter_operator.d.ts +8 -9
- package/build/src/enums/filter_operator.js +11 -0
- package/build/src/enums/sort_direction.d.ts +3 -4
- package/build/src/enums/sort_direction.js +6 -0
- package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.d.ts +5 -5
- package/build/src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js +10 -0
- package/build/src/exceptions/filterable_not_configured.d.ts +5 -0
- package/build/src/exceptions/filterable_not_configured.js +12 -0
- package/build/src/exceptions/invalid_append_query.d.ts +6 -4
- package/build/src/exceptions/invalid_append_query.js +17 -0
- package/build/src/exceptions/invalid_direction.d.ts +3 -3
- package/build/src/exceptions/invalid_direction.js +9 -0
- package/build/src/exceptions/invalid_field_query.d.ts +6 -4
- package/build/src/exceptions/invalid_field_query.js +17 -0
- package/build/src/exceptions/invalid_filter_query.d.ts +6 -6
- package/build/src/exceptions/invalid_filter_query.js +17 -0
- package/build/src/exceptions/invalid_filter_value.d.ts +3 -3
- package/build/src/exceptions/invalid_filter_value.js +8 -0
- package/build/src/exceptions/invalid_include_query.d.ts +6 -6
- package/build/src/exceptions/invalid_include_query.js +21 -0
- package/build/src/exceptions/invalid_query.d.ts +3 -3
- package/build/{chunk-XIRHVLVQ.js → src/exceptions/invalid_query.js} +3 -7
- package/build/src/exceptions/invalid_sort_query.d.ts +6 -6
- package/build/src/exceptions/invalid_sort_query.js +17 -0
- package/build/src/exceptions/unknown_included_fields_query.d.ts +4 -4
- package/build/src/exceptions/unknown_included_fields_query.js +12 -0
- package/build/src/exceptions/vine_not_installed.d.ts +5 -0
- package/build/src/exceptions/vine_not_installed.js +12 -0
- package/build/src/filters/filters_begin_with_strict.d.ts +6 -6
- package/build/src/filters/filters_begin_with_strict.js +8 -0
- package/build/src/filters/filters_callback.d.ts +6 -6
- package/build/src/filters/filters_callback.js +11 -0
- package/build/src/filters/filters_ends_with_strict.d.ts +6 -6
- package/build/src/filters/filters_ends_with_strict.js +8 -0
- package/build/src/filters/filters_exact.d.ts +11 -11
- package/build/src/filters/filters_exact.js +50 -0
- package/build/src/filters/filters_operator.d.ts +13 -13
- package/build/src/filters/filters_operator.js +52 -0
- package/build/src/filters/filters_partial.d.ts +9 -11
- package/build/src/filters/filters_partial.js +37 -0
- package/build/src/filters/filters_scope.d.ts +12 -0
- package/build/src/filters/filters_scope.js +98 -0
- package/build/src/filters/filters_trashed.d.ts +5 -5
- package/build/src/filters/filters_trashed.js +13 -0
- package/build/src/includes/included_callback.d.ts +7 -7
- package/build/src/includes/included_callback.js +11 -0
- package/build/src/includes/included_count.d.ts +4 -4
- package/build/src/includes/included_count.js +11 -0
- package/build/src/includes/included_relationship.d.ts +8 -8
- package/build/src/includes/included_relationship.js +37 -0
- package/build/src/sorts/sorts_callback.d.ts +6 -6
- package/build/src/sorts/sorts_callback.js +11 -0
- package/build/src/sorts/sorts_field.d.ts +4 -4
- package/build/src/sorts/sorts_field.js +7 -0
- package/build/src/utils/helpers.js +14 -0
- package/build/src/validation/schema_builder.d.ts +3 -0
- package/build/src/validation/schema_builder.js +38 -0
- package/build/src/validation/vine_resolver.js +13 -0
- package/build/stubs/main.d.ts +1 -1
- package/build/stubs/main.js +3 -0
- package/build/types.d.ts +116 -0
- package/build/types.js +1 -0
- package/package.json +101 -88
- package/build/api_query_request-QXOB4BN6.js +0 -18
- package/build/api_query_request-QXOB4BN6.js.map +0 -1
- package/build/chunk-3ITWUZL5.js +0 -108
- package/build/chunk-3ITWUZL5.js.map +0 -1
- package/build/chunk-54HNQTDY.js +0 -348
- package/build/chunk-54HNQTDY.js.map +0 -1
- package/build/chunk-IV3B5WO7.js +0 -160
- package/build/chunk-IV3B5WO7.js.map +0 -1
- package/build/chunk-MKQ3HMMA.js +0 -198
- package/build/chunk-MKQ3HMMA.js.map +0 -1
- package/build/chunk-XIRHVLVQ.js.map +0 -1
- package/build/filters_query-LCFH2F2X.js +0 -55
- package/build/filters_query-LCFH2F2X.js.map +0 -1
- package/build/includes_query-PVONWQMC.js +0 -70
- package/build/includes_query-PVONWQMC.js.map +0 -1
- package/build/index.js.map +0 -1
- package/build/metafile-esm.json +0 -1
- package/build/providers/api_query_provider.js.map +0 -1
- package/build/sorts_query-NJTC5UXX.js +0 -63
- package/build/sorts_query-NJTC5UXX.js.map +0 -1
- package/build/src/bindings/api_query_request.d.ts +0 -2
- package/build/src/bindings/filters_query.d.ts +0 -3
- package/build/src/bindings/includes_query.d.ts +0 -3
- package/build/src/bindings/sorts_query.d.ts +0 -3
- package/build/src/types.d.ts +0 -90
- package/build/src/types.js +0 -1
- package/build/src/types.js.map +0 -1
- package/build/src/utils/helpers.d.ts +0 -3
- /package/build/{config.stub → stubs/config.stub} +0 -0
package/package.json
CHANGED
|
@@ -1,60 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eienjs/adonisjs-api-query",
|
|
3
|
-
"description": "Easily build Lucid queries from API requests",
|
|
4
|
-
"version": "1.1.1",
|
|
5
3
|
"type": "module",
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"files": [
|
|
9
|
-
"build",
|
|
10
|
-
"!build/bin",
|
|
11
|
-
"!build/tests"
|
|
12
|
-
],
|
|
13
|
-
"exports": {
|
|
14
|
-
".": "./build/index.js",
|
|
15
|
-
"./types": "./build/src/types.js",
|
|
16
|
-
"./api_query_provider": "./build/providers/api_query_provider.js"
|
|
17
|
-
},
|
|
18
|
-
"devDependencies": {
|
|
19
|
-
"@adonisjs/assembler": "^7.8.2",
|
|
20
|
-
"@adonisjs/core": "^6.17.2",
|
|
21
|
-
"@adonisjs/lucid": "^21.6.0",
|
|
22
|
-
"@commitlint/cli": "^19.8.1",
|
|
23
|
-
"@commitlint/config-conventional": "^19.8.1",
|
|
24
|
-
"@japa/assert": "^4.1.1",
|
|
25
|
-
"@japa/file-system": "^2.3.2",
|
|
26
|
-
"@japa/runner": "^4.3.0",
|
|
27
|
-
"@nodecfdi/eslint-config": "^3.5.1",
|
|
28
|
-
"@nodecfdi/prettier-config": "^1.4.1",
|
|
29
|
-
"@nodecfdi/tsconfig": "^1.7.4",
|
|
30
|
-
"@poppinss/hooks": "^7.2.6",
|
|
31
|
-
"@swc/core": "^1.13.2",
|
|
32
|
-
"@types/luxon": "^3.6.2",
|
|
33
|
-
"@types/node": "^22.16.5",
|
|
34
|
-
"adonis-lucid-soft-deletes": "^2.1.0",
|
|
35
|
-
"auto-changelog": "^2.5.0",
|
|
36
|
-
"better-sqlite3": "^12.2.0",
|
|
37
|
-
"c8": "^10.1.3",
|
|
38
|
-
"del-cli": "^6.0.0",
|
|
39
|
-
"enforce-unique": "^1.3.0",
|
|
40
|
-
"eslint": "^9.31.0",
|
|
41
|
-
"husky": "^9.1.7",
|
|
42
|
-
"is-in-ci": "^1.0.0",
|
|
43
|
-
"luxon": "^3.7.1",
|
|
44
|
-
"native-copyfiles": "^1.3.5",
|
|
45
|
-
"np": "^10.2.0",
|
|
46
|
-
"prettier": "^3.6.2",
|
|
47
|
-
"ts-node-maintained": "^10.9.5",
|
|
48
|
-
"tsup": "^8.5.0",
|
|
49
|
-
"typescript": "^5.8.3"
|
|
50
|
-
},
|
|
51
|
-
"dependencies": {
|
|
52
|
-
"collect.js": "^4.36.1"
|
|
53
|
-
},
|
|
54
|
-
"peerDependencies": {
|
|
55
|
-
"@adonisjs/core": "^6.17.2",
|
|
56
|
-
"@adonisjs/lucid": "^21.6.0"
|
|
57
|
-
},
|
|
4
|
+
"version": "3.0.0",
|
|
5
|
+
"description": "Easily build Lucid queries from API requests",
|
|
58
6
|
"author": "Fernando Isidro <luffynando@gmail.com>",
|
|
59
7
|
"license": "MIT",
|
|
60
8
|
"homepage": "https://github.com/eienjs/adonisjs-api-query",
|
|
@@ -76,8 +24,64 @@
|
|
|
76
24
|
"sort",
|
|
77
25
|
"includes"
|
|
78
26
|
],
|
|
27
|
+
"exports": {
|
|
28
|
+
".": "./build/index.js",
|
|
29
|
+
"./providers/api_query_provider": "./build/providers/api_query_provider.js",
|
|
30
|
+
"./types": "./build/types.js",
|
|
31
|
+
"./package.json": "./package.json"
|
|
32
|
+
},
|
|
33
|
+
"types": "build/index.d.ts",
|
|
34
|
+
"files": [
|
|
35
|
+
"build"
|
|
36
|
+
],
|
|
79
37
|
"engines": {
|
|
80
|
-
"node": ">=
|
|
38
|
+
"node": ">=24.0.0"
|
|
39
|
+
},
|
|
40
|
+
"peerDependencies": {
|
|
41
|
+
"@adonisjs/assembler": "^8.4.0",
|
|
42
|
+
"@adonisjs/core": "^7.3.4",
|
|
43
|
+
"@adonisjs/lucid": "^22.4.2",
|
|
44
|
+
"@vinejs/vine": ">=4.4.0"
|
|
45
|
+
},
|
|
46
|
+
"peerDependenciesMeta": {
|
|
47
|
+
"@adonisjs/assembler": {
|
|
48
|
+
"optional": true
|
|
49
|
+
},
|
|
50
|
+
"@vinejs/vine": {
|
|
51
|
+
"optional": true
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@adonisjs/assembler": "^8.6.0",
|
|
57
|
+
"@adonisjs/core": "^7.6.0",
|
|
58
|
+
"@adonisjs/eslint-plugin": "^2.2.2",
|
|
59
|
+
"@adonisjs/lucid": "^22.4.2",
|
|
60
|
+
"@adonisjs/tsconfig": "^2.0.0",
|
|
61
|
+
"@commitlint/cli": "^21.2.4",
|
|
62
|
+
"@commitlint/config-conventional": "^21.2.4",
|
|
63
|
+
"@eienjs/adonisjs-soft-deletes": "^1.0.1",
|
|
64
|
+
"@eienjs/eslint-config": "^2.3.1",
|
|
65
|
+
"@japa/assert": "^4.2.0",
|
|
66
|
+
"@japa/file-system": "^3.0.0",
|
|
67
|
+
"@japa/runner": "^5.4.0",
|
|
68
|
+
"@poppinss/hooks": "^7.3.1",
|
|
69
|
+
"@poppinss/ts-exec": "^1.5.1",
|
|
70
|
+
"@types/luxon": "^3.7.6",
|
|
71
|
+
"@types/node": "^26.6.6",
|
|
72
|
+
"@vinejs/vine": "^4.4.0",
|
|
73
|
+
"auto-changelog": "^2.7.0",
|
|
74
|
+
"better-sqlite3": "^13.0.3",
|
|
75
|
+
"c8": "^12.0.0",
|
|
76
|
+
"enforce-unique": "^1.3.0",
|
|
77
|
+
"eslint": "^10.13.0",
|
|
78
|
+
"eslint-plugin-erasable-syntax-only": "^0.7.2",
|
|
79
|
+
"husky": "^9.1.7",
|
|
80
|
+
"is-in-ci": "^2.0.0",
|
|
81
|
+
"luxon": "^3.7.2",
|
|
82
|
+
"release-it": "^21.1.1",
|
|
83
|
+
"tsdown": "^0.23.3",
|
|
84
|
+
"typescript": "^6.0.3"
|
|
81
85
|
},
|
|
82
86
|
"c8": {
|
|
83
87
|
"reporter": [
|
|
@@ -94,51 +98,60 @@
|
|
|
94
98
|
"@commitlint/config-conventional"
|
|
95
99
|
]
|
|
96
100
|
},
|
|
97
|
-
"prettier": "@nodecfdi/prettier-config/pkg",
|
|
98
101
|
"publishConfig": {
|
|
99
102
|
"access": "public",
|
|
100
103
|
"tag": "latest"
|
|
101
104
|
},
|
|
102
105
|
"auto-changelog": {
|
|
103
106
|
"template": "keepachangelog",
|
|
104
|
-
"hideCredit": true
|
|
107
|
+
"hideCredit": true,
|
|
108
|
+
"commitLimit": false
|
|
105
109
|
},
|
|
106
|
-
"
|
|
107
|
-
"
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
"
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
110
|
+
"release-it": {
|
|
111
|
+
"git": {
|
|
112
|
+
"commit": true,
|
|
113
|
+
"tag": true,
|
|
114
|
+
"push": true,
|
|
115
|
+
"requireCleanWorkingDir": true,
|
|
116
|
+
"commitMessage": "chore(release): :tada: v${version}",
|
|
117
|
+
"tagAnnotation": "chore(release): :tada: v${version}"
|
|
118
|
+
},
|
|
119
|
+
"github": {
|
|
120
|
+
"release": true,
|
|
121
|
+
"web": true,
|
|
122
|
+
"releaseName": "Release v${version}"
|
|
123
|
+
},
|
|
124
|
+
"npm": {
|
|
125
|
+
"publish": true,
|
|
126
|
+
"publishPackageManager": "pnpm",
|
|
127
|
+
"publishArgs": [
|
|
128
|
+
"--no-git-checks"
|
|
129
|
+
]
|
|
130
|
+
},
|
|
131
|
+
"hooks": {
|
|
132
|
+
"before:init": [
|
|
133
|
+
"pnpm run lint:check",
|
|
134
|
+
"pnpm run typecheck",
|
|
135
|
+
"pnpm test"
|
|
136
|
+
],
|
|
137
|
+
"after:bump": [
|
|
138
|
+
"pnpm run build",
|
|
139
|
+
"pnpm run changelog"
|
|
140
|
+
]
|
|
141
|
+
}
|
|
124
142
|
},
|
|
125
143
|
"scripts": {
|
|
126
|
-
"
|
|
127
|
-
"
|
|
128
|
-
"
|
|
129
|
-
"typecheck": "tsc --noEmit",
|
|
144
|
+
"changelog": "auto-changelog -u -p",
|
|
145
|
+
"commitlint": "commitlint --edit",
|
|
146
|
+
"index:commands": "adonis-kit index build/commands",
|
|
130
147
|
"lint": "eslint . --fix",
|
|
131
148
|
"lint:check": "eslint .",
|
|
132
|
-
"
|
|
133
|
-
"
|
|
134
|
-
"test": "node --import ts-node-maintained/register/esm --enable-source-maps bin/test.ts",
|
|
149
|
+
"typecheck": "tsc --noEmit",
|
|
150
|
+
"test": "node --import=@poppinss/ts-exec --enable-source-maps bin/test.ts",
|
|
135
151
|
"test:coverage": "c8 pnpm run test",
|
|
136
|
-
"tool:code": "pnpm run lint:check && pnpm run
|
|
152
|
+
"tool:code": "pnpm run lint:check && pnpm run typecheck",
|
|
137
153
|
"tool:build": "pnpm run tool:code && pnpm run test",
|
|
138
|
-
"
|
|
139
|
-
"
|
|
140
|
-
"postbuild": "pnpm run copy:templates",
|
|
141
|
-
"release": "np",
|
|
142
|
-
"version": "pnpm run build && pnpm run changelog"
|
|
154
|
+
"build": "tsdown",
|
|
155
|
+
"release": "release-it"
|
|
143
156
|
}
|
|
144
157
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ApiQueryBuilderRequest
|
|
3
|
-
} from "./chunk-MKQ3HMMA.js";
|
|
4
|
-
|
|
5
|
-
// src/bindings/api_query_request.ts
|
|
6
|
-
var extendModelQueryBuilderWithRequest = function(builder) {
|
|
7
|
-
builder.macro("withRequest", function(request) {
|
|
8
|
-
this.$queryBuilderRequest = ApiQueryBuilderRequest.fromRequest(request);
|
|
9
|
-
return this;
|
|
10
|
-
});
|
|
11
|
-
builder.getter("$apiQueryBuilderRequest", function() {
|
|
12
|
-
return this.$queryBuilderRequest ?? new ApiQueryBuilderRequest();
|
|
13
|
-
});
|
|
14
|
-
};
|
|
15
|
-
export {
|
|
16
|
-
extendModelQueryBuilderWithRequest
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=api_query_request-QXOB4BN6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bindings/api_query_request.ts"],"sourcesContent":["import { type Request } from '@adonisjs/core/http';\nimport { type ModelQueryBuilder } from '@adonisjs/lucid/orm';\nimport { ApiQueryBuilderRequest } from '../api_query_builder_request.js';\n\ntype ModelQueryBuilderWithRequest = ModelQueryBuilder & { $queryBuilderRequest?: ApiQueryBuilderRequest };\n\nexport const extendModelQueryBuilderWithRequest = function (builder: typeof ModelQueryBuilder): void {\n builder.macro('withRequest', function (this: ModelQueryBuilderWithRequest, request: Request) {\n this.$queryBuilderRequest = ApiQueryBuilderRequest.fromRequest(request);\n\n return this;\n });\n\n builder.getter('$apiQueryBuilderRequest', function (this: ModelQueryBuilderWithRequest) {\n return this.$queryBuilderRequest ?? new ApiQueryBuilderRequest();\n });\n};\n"],"mappings":";;;;;AAMO,IAAM,qCAAqC,SAAU,SAAyC;AACnG,UAAQ,MAAM,eAAe,SAA8C,SAAkB;AAC3F,SAAK,uBAAuB,uBAAuB,YAAY,OAAO;AAEtE,WAAO;AAAA,EACT,CAAC;AAED,UAAQ,OAAO,2BAA2B,WAA8C;AACtF,WAAO,KAAK,wBAAwB,IAAI,uBAAuB;AAAA,EACjE,CAAC;AACH;","names":[]}
|
package/build/chunk-3ITWUZL5.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
InvalidQuery
|
|
3
|
-
} from "./chunk-XIRHVLVQ.js";
|
|
4
|
-
|
|
5
|
-
// src/enums/sort_direction.ts
|
|
6
|
-
var SortDirection = {
|
|
7
|
-
Ascending: "asc",
|
|
8
|
-
Descending: "desc"
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
// src/exceptions/invalid_direction.ts
|
|
12
|
-
import { Exception } from "@adonisjs/core/exceptions";
|
|
13
|
-
var InvalidDirection = class _InvalidDirection extends Exception {
|
|
14
|
-
static make(sort) {
|
|
15
|
-
return new _InvalidDirection(
|
|
16
|
-
`The direction should be either \`${SortDirection.Descending}\` or \`${SortDirection.Ascending}\` ${sort} given`
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
// src/sorts/sorts_callback.ts
|
|
22
|
-
var SortsCallback = class {
|
|
23
|
-
constructor(_callback) {
|
|
24
|
-
this._callback = _callback;
|
|
25
|
-
}
|
|
26
|
-
handle(query, descending, property) {
|
|
27
|
-
this._callback(query, descending, property);
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
// src/sorts/sorts_field.ts
|
|
32
|
-
var SortsField = class {
|
|
33
|
-
handle(query, descending, property) {
|
|
34
|
-
void query.orderBy(property, descending ? "desc" : "asc");
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
// src/allowed_sort.ts
|
|
39
|
-
var AllowedSort = class _AllowedSort {
|
|
40
|
-
static parseSortDirection(name) {
|
|
41
|
-
return name.startsWith("-") ? SortDirection.Descending : SortDirection.Ascending;
|
|
42
|
-
}
|
|
43
|
-
static field(name, internalName) {
|
|
44
|
-
return new _AllowedSort(name, new SortsField(), internalName);
|
|
45
|
-
}
|
|
46
|
-
static custom(name, sortClass, internalName) {
|
|
47
|
-
return new _AllowedSort(name, sortClass, internalName);
|
|
48
|
-
}
|
|
49
|
-
static callback(name, callback, internalName) {
|
|
50
|
-
return new _AllowedSort(name, new SortsCallback(callback), internalName);
|
|
51
|
-
}
|
|
52
|
-
defaultDirection;
|
|
53
|
-
internalName;
|
|
54
|
-
name;
|
|
55
|
-
sortClass;
|
|
56
|
-
constructor(name, sortClass, internalName) {
|
|
57
|
-
this.name = name.replace(/^-+/, "");
|
|
58
|
-
this.defaultDirection = _AllowedSort.parseSortDirection(name);
|
|
59
|
-
this.sortClass = sortClass;
|
|
60
|
-
this.internalName = internalName ?? this.name;
|
|
61
|
-
}
|
|
62
|
-
sort(query, descending) {
|
|
63
|
-
descending = descending ?? this.defaultDirection === SortDirection.Descending;
|
|
64
|
-
this.sortClass.handle(query, descending, this.internalName);
|
|
65
|
-
}
|
|
66
|
-
getName() {
|
|
67
|
-
return this.name;
|
|
68
|
-
}
|
|
69
|
-
isSort(sortName) {
|
|
70
|
-
return this.name === sortName;
|
|
71
|
-
}
|
|
72
|
-
getInternalName() {
|
|
73
|
-
return this.internalName;
|
|
74
|
-
}
|
|
75
|
-
setDefaultDirection(defaultDirection) {
|
|
76
|
-
if (![SortDirection.Ascending, SortDirection.Descending].includes(defaultDirection)) {
|
|
77
|
-
throw InvalidDirection.make(defaultDirection);
|
|
78
|
-
}
|
|
79
|
-
this.defaultDirection = defaultDirection;
|
|
80
|
-
return this;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// src/exceptions/invalid_sort_query.ts
|
|
85
|
-
import { ResponseStatus } from "@adonisjs/core/http";
|
|
86
|
-
var InvalidSortQuery = class _InvalidSortQuery extends InvalidQuery {
|
|
87
|
-
constructor(unknownSorts, allowedSorts) {
|
|
88
|
-
const notAllowed = unknownSorts.join(", ");
|
|
89
|
-
const allowed = allowedSorts.join(", ");
|
|
90
|
-
const message = `Requested sort(s) \`${notAllowed}\` is not allowed. Allowed sort(s) are \`${allowed}\``;
|
|
91
|
-
super(message, { status: ResponseStatus.BadRequest });
|
|
92
|
-
this.unknownSorts = unknownSorts;
|
|
93
|
-
this.allowedSorts = allowedSorts;
|
|
94
|
-
}
|
|
95
|
-
static sortsNotAllowed(unknownSorts, allowedSorts) {
|
|
96
|
-
return new _InvalidSortQuery(unknownSorts, allowedSorts);
|
|
97
|
-
}
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
export {
|
|
101
|
-
SortDirection,
|
|
102
|
-
InvalidDirection,
|
|
103
|
-
SortsCallback,
|
|
104
|
-
SortsField,
|
|
105
|
-
AllowedSort,
|
|
106
|
-
InvalidSortQuery
|
|
107
|
-
};
|
|
108
|
-
//# sourceMappingURL=chunk-3ITWUZL5.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/enums/sort_direction.ts","../src/exceptions/invalid_direction.ts","../src/sorts/sorts_callback.ts","../src/sorts/sorts_field.ts","../src/allowed_sort.ts","../src/exceptions/invalid_sort_query.ts"],"sourcesContent":["export const SortDirection = {\n Ascending: 'asc',\n Descending: 'desc',\n} as const;\n\nexport type SortDirection = (typeof SortDirection)[keyof typeof SortDirection];\n","import { Exception } from '@adonisjs/core/exceptions';\nimport { SortDirection } from '../enums/sort_direction.js';\n\nexport class InvalidDirection extends Exception {\n public static make(sort: string): InvalidDirection {\n return new InvalidDirection(\n `The direction should be either \\`${SortDirection.Descending}\\` or \\`${SortDirection.Ascending}\\` ${sort} given`,\n );\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type Sort } from '../types.js';\n\nexport class SortsCallback<Model extends LucidModel> implements Sort<Model> {\n public constructor(\n private readonly _callback: (\n query: ModelQueryBuilderContract<Model>,\n descending: boolean,\n property: string,\n ) => void,\n ) {}\n\n public handle(query: ModelQueryBuilderContract<Model>, descending: boolean, property: string): void {\n this._callback(query, descending, property);\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type Sort } from '../types.js';\n\nexport class SortsField<Model extends LucidModel> implements Sort<Model> {\n public handle(query: ModelQueryBuilderContract<Model>, descending: boolean, property: string): void {\n void query.orderBy(property, descending ? 'desc' : 'asc');\n }\n}\n","import { type LucidModel, type ModelAttributes, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { SortDirection } from './enums/sort_direction.js';\nimport { InvalidDirection } from './exceptions/invalid_direction.js';\nimport { SortsCallback } from './sorts/sorts_callback.js';\nimport { SortsField } from './sorts/sorts_field.js';\nimport { type ExtractKeys, type Sort } from './types.js';\n\nexport class AllowedSort<Model extends LucidModel> {\n public static parseSortDirection(name: string): string {\n return name.startsWith('-') ? SortDirection.Descending : SortDirection.Ascending;\n }\n\n public static field<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ): AllowedSort<Model> {\n return new AllowedSort<Model>(name, new SortsField<Model>(), internalName);\n }\n\n public static custom<Model extends LucidModel>(\n name: string,\n sortClass: Sort<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ): AllowedSort<Model> {\n return new AllowedSort<Model>(name, sortClass, internalName);\n }\n\n public static callback<Model extends LucidModel>(\n name: string,\n callback: (query: ModelQueryBuilderContract<Model>, descending: boolean, property: string) => void,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ): AllowedSort<Model> {\n return new AllowedSort<Model>(name, new SortsCallback<Model>(callback), internalName);\n }\n\n protected defaultDirection: string;\n\n protected internalName: string;\n\n protected name: string;\n\n protected sortClass: Sort<Model>;\n\n public constructor(\n name: string,\n sortClass: Sort<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ) {\n this.name = name.replace(/^-+/, '');\n this.defaultDirection = AllowedSort.parseSortDirection(name);\n this.sortClass = sortClass;\n this.internalName = internalName ?? this.name;\n }\n\n public sort(query: ModelQueryBuilderContract<Model>, descending?: boolean): void {\n descending = descending ?? this.defaultDirection === SortDirection.Descending;\n\n this.sortClass.handle(query, descending, this.internalName);\n }\n\n public getName(): string {\n return this.name;\n }\n\n public isSort(sortName: string): boolean {\n return this.name === sortName;\n }\n\n public getInternalName(): string {\n return this.internalName;\n }\n\n public setDefaultDirection(defaultDirection: string): this {\n if (!([SortDirection.Ascending, SortDirection.Descending] as string[]).includes(defaultDirection)) {\n throw InvalidDirection.make(defaultDirection);\n }\n\n this.defaultDirection = defaultDirection;\n\n return this;\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidSortQuery extends InvalidQuery {\n public constructor(\n public readonly unknownSorts: string[],\n public readonly allowedSorts: string[],\n ) {\n const notAllowed = unknownSorts.join(', ');\n const allowed = allowedSorts.join(', ');\n const message = `Requested sort(s) \\`${notAllowed}\\` is not allowed. Allowed sort(s) are \\`${allowed}\\``;\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static sortsNotAllowed(unknownSorts: string[], allowedSorts: string[]): InvalidSortQuery {\n return new InvalidSortQuery(unknownSorts, allowedSorts);\n }\n}\n"],"mappings":";;;;;AAAO,IAAM,gBAAgB;AAAA,EAC3B,WAAW;AAAA,EACX,YAAY;AACd;;;ACHA,SAAS,iBAAiB;AAGnB,IAAM,mBAAN,MAAM,0BAAyB,UAAU;AAAA,EAC9C,OAAc,KAAK,MAAgC;AACjD,WAAO,IAAI;AAAA,MACT,oCAAoC,cAAc,UAAU,WAAW,cAAc,SAAS,MAAM,IAAI;AAAA,IAC1G;AAAA,EACF;AACF;;;ACNO,IAAM,gBAAN,MAAqE;AAAA,EACnE,YACY,WAKjB;AALiB;AAAA,EAKhB;AAAA,EAEI,OAAO,OAAyC,YAAqB,UAAwB;AAClG,SAAK,UAAU,OAAO,YAAY,QAAQ;AAAA,EAC5C;AACF;;;ACZO,IAAM,aAAN,MAAkE;AAAA,EAChE,OAAO,OAAyC,YAAqB,UAAwB;AAClG,SAAK,MAAM,QAAQ,UAAU,aAAa,SAAS,KAAK;AAAA,EAC1D;AACF;;;ACAO,IAAM,cAAN,MAAM,aAAsC;AAAA,EACjD,OAAc,mBAAmB,MAAsB;AACrD,WAAO,KAAK,WAAW,GAAG,IAAI,cAAc,aAAa,cAAc;AAAA,EACzE;AAAA,EAEA,OAAc,MACZ,MACA,cACoB;AACpB,WAAO,IAAI,aAAmB,MAAM,IAAI,WAAkB,GAAG,YAAY;AAAA,EAC3E;AAAA,EAEA,OAAc,OACZ,MACA,WACA,cACoB;AACpB,WAAO,IAAI,aAAmB,MAAM,WAAW,YAAY;AAAA,EAC7D;AAAA,EAEA,OAAc,SACZ,MACA,UACA,cACoB;AACpB,WAAO,IAAI,aAAmB,MAAM,IAAI,cAAqB,QAAQ,GAAG,YAAY;AAAA,EACtF;AAAA,EAEU;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEH,YACL,MACA,WACA,cACA;AACA,SAAK,OAAO,KAAK,QAAQ,OAAO,EAAE;AAClC,SAAK,mBAAmB,aAAY,mBAAmB,IAAI;AAC3D,SAAK,YAAY;AACjB,SAAK,eAAe,gBAAgB,KAAK;AAAA,EAC3C;AAAA,EAEO,KAAK,OAAyC,YAA4B;AAC/E,iBAAa,cAAc,KAAK,qBAAqB,cAAc;AAEnE,SAAK,UAAU,OAAO,OAAO,YAAY,KAAK,YAAY;AAAA,EAC5D;AAAA,EAEO,UAAkB;AACvB,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,OAAO,UAA2B;AACvC,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAEO,kBAA0B;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,oBAAoB,kBAAgC;AACzD,QAAI,CAAE,CAAC,cAAc,WAAW,cAAc,UAAU,EAAe,SAAS,gBAAgB,GAAG;AACjG,YAAM,iBAAiB,KAAK,gBAAgB;AAAA,IAC9C;AAEA,SAAK,mBAAmB;AAExB,WAAO;AAAA,EACT;AACF;;;ACjFA,SAAS,sBAAsB;AAGxB,IAAM,mBAAN,MAAM,0BAAyB,aAAa;AAAA,EAC1C,YACW,cACA,cAChB;AACA,UAAM,aAAa,aAAa,KAAK,IAAI;AACzC,UAAM,UAAU,aAAa,KAAK,IAAI;AACtC,UAAM,UAAU,uBAAuB,UAAU,4CAA4C,OAAO;AAEpG,UAAM,SAAS,EAAE,QAAQ,eAAe,WAAW,CAAC;AAPpC;AACA;AAAA,EAOlB;AAAA,EAEA,OAAc,gBAAgB,cAAwB,cAA0C;AAC9F,WAAO,IAAI,kBAAiB,cAAc,YAAY;AAAA,EACxD;AACF;","names":[]}
|