@eienjs/adonisjs-api-query 1.0.1 → 1.1.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/README.md +0 -2
- package/build/{chunk-HQN7LHVO.js → chunk-3ITWUZL5.js} +3 -1
- package/build/{chunk-AL3XCN3K.js → chunk-54HNQTDY.js} +26 -20
- package/build/chunk-54HNQTDY.js.map +1 -0
- package/build/{chunk-OS75QJZN.js → chunk-IV3B5WO7.js} +6 -5
- package/build/chunk-IV3B5WO7.js.map +1 -0
- package/build/{filters_query-4E533ESM.js → filters_query-LCFH2F2X.js} +2 -2
- package/build/{includes_query-2XNHHWJB.js → includes_query-PVONWQMC.js} +2 -2
- package/build/index.d.ts +12 -0
- package/build/index.js +28 -4
- package/build/index.js.map +1 -1
- package/build/metafile-esm.json +1 -1
- package/build/providers/api_query_provider.d.ts +2 -2
- package/build/providers/api_query_provider.js +3 -3
- package/build/providers/api_query_provider.js.map +1 -1
- package/build/{sorts_query-LUETK3FD.js → sorts_query-NJTC5UXX.js} +2 -2
- package/package.json +12 -12
- package/build/chunk-AL3XCN3K.js.map +0 -1
- package/build/chunk-OS75QJZN.js.map +0 -1
- /package/build/{chunk-HQN7LHVO.js.map → chunk-3ITWUZL5.js.map} +0 -0
- /package/build/{filters_query-4E533ESM.js.map → filters_query-LCFH2F2X.js.map} +0 -0
- /package/build/{includes_query-2XNHHWJB.js.map → includes_query-PVONWQMC.js.map} +0 -0
- /package/build/{sorts_query-LUETK3FD.js.map → sorts_query-NJTC5UXX.js.map} +0 -0
package/README.md
CHANGED
|
@@ -100,7 +100,9 @@ var InvalidSortQuery = class _InvalidSortQuery extends InvalidQuery {
|
|
|
100
100
|
export {
|
|
101
101
|
SortDirection,
|
|
102
102
|
InvalidDirection,
|
|
103
|
+
SortsCallback,
|
|
104
|
+
SortsField,
|
|
103
105
|
AllowedSort,
|
|
104
106
|
InvalidSortQuery
|
|
105
107
|
};
|
|
106
|
-
//# sourceMappingURL=chunk-
|
|
108
|
+
//# sourceMappingURL=chunk-3ITWUZL5.js.map
|
|
@@ -6,20 +6,6 @@ import {
|
|
|
6
6
|
InvalidQuery
|
|
7
7
|
} from "./chunk-XIRHVLVQ.js";
|
|
8
8
|
|
|
9
|
-
// src/enums/filter_operator.ts
|
|
10
|
-
var FilterOperator = {
|
|
11
|
-
Dynamic: "",
|
|
12
|
-
Equal: "=",
|
|
13
|
-
LessThan: "<",
|
|
14
|
-
GreaterThan: ">",
|
|
15
|
-
LessThanOrEqual: "<=",
|
|
16
|
-
GreaterThanOrEqual: ">=",
|
|
17
|
-
NotEqual: "<>"
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
// src/allowed_filter.ts
|
|
21
|
-
import { Collection } from "collect.js";
|
|
22
|
-
|
|
23
9
|
// src/filters/filters_exact.ts
|
|
24
10
|
import collect from "collect.js";
|
|
25
11
|
var FiltersExact = class {
|
|
@@ -59,12 +45,13 @@ var FiltersExact = class {
|
|
|
59
45
|
return query.model.$relationsDefinitions.has(firstRelationShip);
|
|
60
46
|
}
|
|
61
47
|
withRelationConstraint(query, value, property) {
|
|
62
|
-
const [relation, relationProperty] = collect(property.split(".")).pipe((parts) =>
|
|
63
|
-
parts.
|
|
64
|
-
parts.
|
|
65
|
-
|
|
48
|
+
const [relation, relationProperty] = collect(property.split(".")).pipe((parts) => {
|
|
49
|
+
const rProperty = parts.pop();
|
|
50
|
+
const rPath = parts.implode(".");
|
|
51
|
+
return [rPath, rProperty];
|
|
52
|
+
});
|
|
66
53
|
void query.whereHas(relation, (subQuery) => {
|
|
67
|
-
const columnName = this.qualifyColumn(
|
|
54
|
+
const columnName = this.qualifyColumn(subQuery, relationProperty);
|
|
68
55
|
this.relationConstraints.push(columnName);
|
|
69
56
|
this.handle(subQuery, value, columnName);
|
|
70
57
|
});
|
|
@@ -138,6 +125,17 @@ var FiltersEndsWithStrict = class _FiltersEndsWithStrict extends FiltersPartial
|
|
|
138
125
|
}
|
|
139
126
|
};
|
|
140
127
|
|
|
128
|
+
// src/enums/filter_operator.ts
|
|
129
|
+
var FilterOperator = {
|
|
130
|
+
Dynamic: "",
|
|
131
|
+
Equal: "=",
|
|
132
|
+
LessThan: "<",
|
|
133
|
+
GreaterThan: ">",
|
|
134
|
+
LessThanOrEqual: "<=",
|
|
135
|
+
GreaterThanOrEqual: ">=",
|
|
136
|
+
NotEqual: "<>"
|
|
137
|
+
};
|
|
138
|
+
|
|
141
139
|
// src/filters/filters_operator.ts
|
|
142
140
|
var FiltersOperator = class extends FiltersExact {
|
|
143
141
|
constructor($addRelationConstraint, $filterOperator, $boolean) {
|
|
@@ -206,6 +204,7 @@ var FiltersTrashed = class {
|
|
|
206
204
|
};
|
|
207
205
|
|
|
208
206
|
// src/allowed_filter.ts
|
|
207
|
+
import { Collection } from "collect.js";
|
|
209
208
|
var AllowedFilter = class _AllowedFilter {
|
|
210
209
|
static setFilterArrayValueDelimiter(delimiter) {
|
|
211
210
|
if (delimiter) {
|
|
@@ -335,8 +334,15 @@ var InvalidFilterQuery = class _InvalidFilterQuery extends InvalidQuery {
|
|
|
335
334
|
};
|
|
336
335
|
|
|
337
336
|
export {
|
|
337
|
+
FiltersExact,
|
|
338
|
+
FiltersPartial,
|
|
339
|
+
FiltersBeginWithStrict,
|
|
340
|
+
FiltersCallback,
|
|
341
|
+
FiltersEndsWithStrict,
|
|
338
342
|
FilterOperator,
|
|
343
|
+
FiltersOperator,
|
|
344
|
+
FiltersTrashed,
|
|
339
345
|
AllowedFilter,
|
|
340
346
|
InvalidFilterQuery
|
|
341
347
|
};
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
348
|
+
//# sourceMappingURL=chunk-54HNQTDY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/filters/filters_exact.ts","../src/filters/filters_partial.ts","../src/filters/filters_begin_with_strict.ts","../src/filters/filters_callback.ts","../src/filters/filters_ends_with_strict.ts","../src/enums/filter_operator.ts","../src/filters/filters_operator.ts","../src/filters/filters_trashed.ts","../src/allowed_filter.ts","../src/exceptions/invalid_filter_query.ts"],"sourcesContent":["import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport collect, { type Collection } from 'collect.js';\nimport { type Filter } from '../types.js';\n\nexport class FiltersExact<Model extends LucidModel> implements Filter<Model> {\n protected relationConstraints: string[] = [];\n\n public constructor(protected addRelationConstraint = true) {}\n\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n if (this.addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n void query.whereIn(this.qualifyColumn(query, property), value);\n\n return;\n }\n\n if (value === null) {\n void query.whereNull(this.qualifyColumn(query, property));\n\n return;\n }\n\n void query.where(this.qualifyColumn(query, property), '=', value);\n }\n\n protected qualifyColumn(query: ModelQueryBuilderContract<Model, InstanceType<Model>>, column: string): string {\n if (column.includes('.')) {\n return column;\n }\n\n return `${query.model.table}.${query.model.$getColumn(column)?.columnName}`;\n }\n\n protected isRelationProperty(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n property: string,\n ): boolean {\n if (!property.includes('.')) {\n return false;\n }\n\n if (this.relationConstraints.includes(property)) {\n return false;\n }\n\n const firstRelationShip = property.split('.')[0];\n\n return query.model.$relationsDefinitions.has(firstRelationShip);\n }\n\n protected withRelationConstraint(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n const [relation, relationProperty] = collect(property.split('.')).pipe((parts: Collection<string>) => {\n const rProperty = parts.pop();\n const rPath = parts.implode('.');\n\n return [rPath as ExtractModelRelations<InstanceType<Model>>, rProperty];\n });\n\n void query.whereHas(relation, (subQuery: ModelQueryBuilderContract<Model>) => {\n const columnName = this.qualifyColumn(subQuery, relationProperty);\n this.relationConstraints.push(columnName);\n\n this.handle(subQuery, value, columnName);\n });\n }\n}\n","import { type DialectContract } from '@adonisjs/lucid/types/database';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersExact } from './filters_exact.js';\n\nexport class FiltersPartial<Model extends LucidModel> extends FiltersExact<Model> implements Filter<Model> {\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n if (this.addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n if (value.filter((item) => item.toString().length > 0).length === 0) {\n return;\n }\n\n void query.where((subQuery) => {\n for (const partialValue of value.filter((item) => item.toString().length > 0)) {\n const [innerSql, innerBindings] = this.getWhereRawParameters(\n partialValue,\n this.parsePropertyToColumn(subQuery, property),\n );\n void subQuery.orWhereRaw(innerSql, innerBindings);\n }\n });\n\n return;\n }\n\n const [sql, bindings] = this.getWhereRawParameters(value, this.parsePropertyToColumn(query, property));\n void query.whereRaw(sql, bindings);\n }\n\n protected parsePropertyToColumn(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n property: string,\n ): string {\n if (property.includes('.')) {\n return property;\n }\n\n return query.model.$getColumn(property)?.columnName ?? property;\n }\n\n protected getDatabaseDialect(query: ModelQueryBuilderContract<Model, InstanceType<Model>>): DialectContract['name'] {\n return query.client.dialect.name;\n }\n\n protected getWhereRawParameters(value: StrictValuesWithoutRaw | null, property: string): [string, string[]] {\n const resolvedValue = `${value}`.toLowerCase();\n\n return [`LOWER(??) LIKE ?`, [property, `%${FiltersPartial.escapeLike(resolvedValue)}%`]];\n }\n\n protected static escapeLike(value: string): string {\n return value\n .replaceAll('\\\\', '\\\\\\\\')\n .replaceAll('_', String.raw`\\\\_`)\n .replaceAll('%', String.raw`\\\\%`);\n }\n}\n","import { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersPartial } from './filters_partial.js';\n\nexport class FiltersBeginWithStrict<Model extends LucidModel> extends FiltersPartial<Model> implements Filter<Model> {\n protected getWhereRawParameters(value: StrictValuesWithoutRaw, property: string): [string, string[]] {\n return [`${property} LIKE ?`, [`${FiltersBeginWithStrict.escapeLike(value.toString())}%`]];\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type Filter } from '../types.js';\n\nexport class FiltersCallback<Model extends LucidModel> implements Filter<Model> {\n public constructor(\n private callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void,\n ) {}\n\n public handle(query: ModelQueryBuilderContract<Model, InstanceType<Model>>, value: unknown, property: string): void {\n this.callback(query, value, property);\n }\n}\n","import { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersPartial } from './filters_partial.js';\n\nexport class FiltersEndsWithStrict<Model extends LucidModel> extends FiltersPartial<Model> implements Filter<Model> {\n protected getWhereRawParameters(value: StrictValuesWithoutRaw, property: string): [string, string[]] {\n return [`${property} LIKE ?`, [`%${FiltersEndsWithStrict.escapeLike(value.toString())}`]];\n }\n}\n","export const FilterOperator = {\n Dynamic: '',\n Equal: '=',\n LessThan: '<',\n GreaterThan: '>',\n LessThanOrEqual: '<=',\n GreaterThanOrEqual: '>=',\n NotEqual: '<>',\n} as const;\n\nexport type FilterOperator = (typeof FilterOperator)[keyof typeof FilterOperator];\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { FilterOperator } from '../enums/filter_operator.js';\nimport { type Filter } from '../types.js';\nimport { substrReplace } from '../utils/helpers.js';\nimport { FiltersExact } from './filters_exact.js';\n\nexport class FiltersOperator<Model extends LucidModel> extends FiltersExact<Model> implements Filter<Model> {\n public constructor(\n protected $addRelationConstraint: boolean,\n protected $filterOperator: FilterOperator,\n protected $boolean: 'and' | 'or',\n ) {\n super($addRelationConstraint);\n }\n\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw,\n property: string,\n ): void {\n let filterOperator = this.$filterOperator;\n\n if (this.$addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n const items = value;\n\n void query.where((subQuery) => {\n for (const item of items) {\n this.handle(subQuery, item, property);\n }\n });\n\n return;\n }\n\n if (filterOperator === FilterOperator.Dynamic) {\n filterOperator = this.getDynamicFilterOperator(value.toString());\n value = this.removeDynamicFilterOperatorFromValue(value.toString(), filterOperator);\n }\n\n if (this.$boolean === 'and') {\n void query.where(this.qualifyColumn(query, property), filterOperator, value);\n\n return;\n }\n\n void query.orWhere(this.qualifyColumn(query, property), filterOperator, value);\n }\n\n protected getDynamicFilterOperator(value: string): FilterOperator {\n let filterOperator: FilterOperator = FilterOperator.Equal;\n\n for (const filterOperatorCase of Object.values(FilterOperator)) {\n if (value.startsWith(filterOperatorCase) && filterOperatorCase !== FilterOperator.Dynamic) {\n filterOperator = filterOperatorCase;\n }\n }\n\n return filterOperator;\n }\n\n protected removeDynamicFilterOperatorFromValue(value: string, filterOperator: FilterOperator): string {\n if (value.includes(filterOperator)) {\n value = substrReplace(value, '', 0, filterOperator.length);\n }\n\n return value;\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\n\nexport class FiltersTrashed<Model extends LucidModel> implements Filter<Model> {\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw,\n _property: string,\n ): void {\n if (!('withTrashed' in query && 'onlyTrashed' in query)) {\n return;\n }\n\n const queryWithSoftDeletes = query as {\n withTrashed(): ModelQueryBuilderContract<Model>;\n onlyTrashed(): ModelQueryBuilderContract<Model>;\n };\n\n if (value === 'with') {\n void queryWithSoftDeletes.withTrashed();\n\n return;\n }\n\n if (value === 'only') {\n void queryWithSoftDeletes.onlyTrashed();\n }\n }\n}\n","import { type LucidModel, type ModelAttributes, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { Collection } from 'collect.js';\nimport { ApiQueryBuilderRequest } from './api_query_builder_request.js';\nimport { type FilterOperator } from './enums/filter_operator.js';\nimport { FiltersBeginWithStrict } from './filters/filters_begin_with_strict.js';\nimport { FiltersCallback } from './filters/filters_callback.js';\nimport { FiltersEndsWithStrict } from './filters/filters_ends_with_strict.js';\nimport { FiltersExact } from './filters/filters_exact.js';\nimport { FiltersOperator } from './filters/filters_operator.js';\nimport { FiltersPartial } from './filters/filters_partial.js';\nimport { FiltersTrashed } from './filters/filters_trashed.js';\nimport { type ExtractKeys, type Filter } from './types.js';\n\nexport class AllowedFilter<Model extends LucidModel> {\n public static setFilterArrayValueDelimiter(delimiter?: string): void {\n if (delimiter) {\n ApiQueryBuilderRequest.setFilterArrayValueDelimiter(delimiter);\n }\n }\n\n public static exact<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersExact<Model>(addRelationConstraint), internalName);\n }\n\n public static partial<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersPartial<Model>(addRelationConstraint), internalName);\n }\n\n public static beginsWithStrict<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersBeginWithStrict<Model>(addRelationConstraint), internalName);\n }\n\n public static endsWithStrict<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersEndsWithStrict<Model>(addRelationConstraint), internalName);\n }\n\n public static callback<Model extends LucidModel>(\n name: string,\n callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersCallback<Model>(callback), internalName);\n }\n\n public static trashed<Model extends LucidModel>(\n name = 'trashed',\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ): AllowedFilter<Model> {\n return new AllowedFilter<Model>(name, new FiltersTrashed<Model>(), internalName);\n }\n\n public static custom<Model extends LucidModel>(\n name: string,\n filterClass: Filter<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, filterClass, internalName);\n }\n\n public static operator<Model extends LucidModel>(\n name: string,\n filterOperator: FilterOperator,\n boolean: 'and' | 'or' = 'and',\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(\n name,\n new FiltersOperator<Model>(addRelationConstraint, filterOperator, boolean),\n internalName,\n );\n }\n\n protected name: string;\n\n protected filterClass: Filter<Model>;\n\n protected internalName: string;\n\n protected ignored: Collection<unknown>;\n\n protected default: unknown;\n\n protected $hasDefault = false;\n\n protected nullable = false;\n\n public constructor(\n name: string,\n filterClass: Filter<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ) {\n this.name = name;\n this.filterClass = filterClass;\n this.ignored = new Collection();\n this.internalName = internalName ?? this.name;\n }\n\n public filter(query: ModelQueryBuilderContract<Model>, value: unknown): void {\n const valueToFilter = this.resolveValueForFiltering(value);\n if (!this.nullable && valueToFilter === null) {\n return;\n }\n\n this.filterClass.handle(query, valueToFilter, this.internalName);\n }\n\n public getFilterClass(): Filter<Model> {\n return this.filterClass;\n }\n\n public getName(): string {\n return this.name;\n }\n\n public isForFilter(filterName: string): boolean {\n return this.name === filterName;\n }\n\n public ignore(...values: unknown[]): this {\n this.ignored = this.ignored.merge(values).flatten();\n\n return this;\n }\n\n public getIgnored(): unknown[] {\n return this.ignored.toArray();\n }\n\n public getInternalName(): string {\n return this.internalName;\n }\n\n public setDefault(defaultValue: unknown): this {\n this.default = defaultValue;\n this.$hasDefault = true;\n\n if (defaultValue === null) {\n this.setNullable(true);\n }\n\n return this;\n }\n\n public getDefault(): unknown {\n return this.default;\n }\n\n public hasDefault(): boolean {\n return this.$hasDefault;\n }\n\n public setNullable(nullable = true): this {\n this.nullable = nullable;\n\n return this;\n }\n\n public unsetDefault(): this {\n this.$hasDefault = false;\n this.default = undefined;\n\n return this;\n }\n\n protected resolveValueForFiltering(value: unknown): StrictValuesWithoutRaw | null {\n if (Array.isArray(value)) {\n const remainingProperties = value.map((subValue) => this.resolveValueForFiltering(subValue));\n\n return remainingProperties.length === 0 ? null : (remainingProperties as StrictValuesWithoutRaw);\n }\n\n return this.ignored.contains(value) ? null : (value as StrictValuesWithoutRaw);\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidFilterQuery extends InvalidQuery {\n public constructor(\n public readonly unknownFilters: string[],\n public readonly allowedFilters: string[],\n ) {\n const notAllowed = unknownFilters.join(', ');\n const allowed = allowedFilters.join(', ');\n const message = `Requested filter(s) \\`${notAllowed}\\` are not allowed. Allowed filter(s) are \\`${allowed}\\``;\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static filtersNotAllowed(unknownFilters: string[], allowedFilters: string[]): InvalidFilterQuery {\n return new InvalidFilterQuery(unknownFilters, allowedFilters);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,10 +2,6 @@ import {
|
|
|
2
2
|
InvalidQuery
|
|
3
3
|
} from "./chunk-XIRHVLVQ.js";
|
|
4
4
|
|
|
5
|
-
// src/allowed_include.ts
|
|
6
|
-
import app2 from "@adonisjs/core/services/app";
|
|
7
|
-
import { Collection as Collection2 } from "collect.js";
|
|
8
|
-
|
|
9
5
|
// src/includes/included_callback.ts
|
|
10
6
|
var IncludedCallback = class {
|
|
11
7
|
constructor(callback) {
|
|
@@ -81,6 +77,8 @@ var IncludedRelationship = class {
|
|
|
81
77
|
};
|
|
82
78
|
|
|
83
79
|
// src/allowed_include.ts
|
|
80
|
+
import app2 from "@adonisjs/core/services/app";
|
|
81
|
+
import { Collection as Collection2 } from "collect.js";
|
|
84
82
|
var AllowedInclude = class _AllowedInclude {
|
|
85
83
|
static relationship(name, internalName) {
|
|
86
84
|
internalName = internalName ?? name;
|
|
@@ -153,7 +151,10 @@ var InvalidIncludeQuery = class _InvalidIncludeQuery extends InvalidQuery {
|
|
|
153
151
|
};
|
|
154
152
|
|
|
155
153
|
export {
|
|
154
|
+
IncludedCallback,
|
|
155
|
+
IncludedCount,
|
|
156
|
+
IncludedRelationship,
|
|
156
157
|
AllowedInclude,
|
|
157
158
|
InvalidIncludeQuery
|
|
158
159
|
};
|
|
159
|
-
//# sourceMappingURL=chunk-
|
|
160
|
+
//# sourceMappingURL=chunk-IV3B5WO7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/includes/included_callback.ts","../src/includes/included_count.ts","../src/includes/included_relationship.ts","../src/allowed_include.ts","../src/exceptions/invalid_include_query.ts"],"sourcesContent":["import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations, type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Include } from '../types.js';\n\nexport class IncludedCallback<ParentModel extends LucidModel, RelatedModel extends LucidModel>\n implements Include<ParentModel>\n{\n public constructor(\n public readonly callback: (\n query:\n | ModelRelations<RelatedModel, ParentModel>['builder']\n | ModelRelations<RelatedModel, ParentModel>['subQuery'],\n ) => void,\n ) {}\n\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, include: string): void {\n void query.preload(include as ExtractModelRelations<InstanceType<ParentModel>>, this.callback);\n }\n}\n","import app from '@adonisjs/core/services/app';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Include } from '../types.js';\n\nexport class IncludedCount<ParentModel extends LucidModel> implements Include<ParentModel> {\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, count: string): void {\n const suffix = app.config.get<string>('apiquery.countSuffix', 'Count');\n const relation = (count.endsWith(suffix) ? count.slice(0, -suffix.length) : count) as ExtractModelRelations<\n InstanceType<ParentModel>\n >;\n\n void query.withCount(relation);\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations, type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { Collection } from 'collect.js';\nimport { type Include } from '../types.js';\n\nexport class IncludedRelationship<ParentModel extends LucidModel> implements Include<ParentModel> {\n public static getIndividualRelationshipPathsFromInclude(include: string): Collection<string> {\n const originalInclude = new Collection(include.split('.'));\n\n return originalInclude.reduce((includes, relationship) => {\n const includesArray = includes ?? new Collection<string>();\n\n if (includesArray.isEmpty()) {\n return includesArray.push(relationship);\n }\n\n return includesArray.push(`${includes!.last()}.${relationship}`);\n }, new Collection<string>()) as Collection<string>;\n }\n\n public getRequestedFieldsForRelatedTable?: (relationship: string) => string[];\n\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, relationship: string): void {\n const relatedTables = relationship.split('.');\n\n if (relatedTables.length === 0) {\n return;\n }\n\n const [relation, ...rest] = relatedTables;\n\n if (!query.model.$hasRelation(relation)) {\n return;\n }\n\n void query.preload(relation as ExtractModelRelations<InstanceType<ParentModel>>, (subQuery) => {\n if (this.getRequestedFieldsForRelatedTable !== undefined) {\n const fields = this.getRequestedFieldsForRelatedTable(relation);\n if (fields.length > 0) {\n void subQuery.select(fields);\n }\n }\n\n this.buildNestedQuery(rest, subQuery, relation);\n });\n }\n\n private buildNestedQuery<SubParentModel extends LucidModel, SubRelatedModel extends LucidModel>(\n relatedTables: string[],\n subQuery:\n | ModelRelations<SubRelatedModel, SubParentModel>['builder']\n | ModelRelations<SubRelatedModel, SubParentModel>['subQuery'],\n parent = '',\n ): void {\n if (relatedTables.length === 0) {\n return;\n }\n\n const [relation, ...rest] = relatedTables;\n\n if (!subQuery.model.$hasRelation(relation)) {\n return;\n }\n\n void subQuery.preload(relation as ExtractModelRelations<InstanceType<SubRelatedModel>>, (nestedQuery) => {\n const fullRelationName = parent === '' ? relation : `${parent}.${relation}`;\n if (this.getRequestedFieldsForRelatedTable !== undefined) {\n const fields = this.getRequestedFieldsForRelatedTable(fullRelationName);\n if (fields.length > 0) {\n void nestedQuery.select(fields);\n }\n }\n\n this.buildNestedQuery(rest, nestedQuery, fullRelationName);\n });\n }\n}\n","import app from '@adonisjs/core/services/app';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { Collection } from 'collect.js';\nimport { IncludedCallback } from './includes/included_callback.js';\nimport { IncludedCount } from './includes/included_count.js';\nimport { IncludedRelationship } from './includes/included_relationship.js';\nimport { type Include } from './types.js';\n\nexport class AllowedInclude<Model extends LucidModel> {\n public static relationship<ParentModel extends LucidModel>(\n name: string,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n internalName = internalName ?? name;\n\n return IncludedRelationship.getIndividualRelationshipPathsFromInclude(internalName)\n .zip(IncludedRelationship.getIndividualRelationshipPathsFromInclude(name).toArray<string>())\n .reduce((includes, args) => {\n const [relationship, alias] = args;\n\n includes = includes!.push(\n new AllowedInclude<ParentModel>(alias, new IncludedRelationship<ParentModel>(), relationship),\n );\n\n if (!relationship.includes('.')) {\n const countSuffix = app.config.get<string>('apiquery.countSuffix', 'Count');\n for (const countAllowedInclude of AllowedInclude.count(\n `${alias}${countSuffix}`,\n `${relationship}${countSuffix}`,\n )) {\n includes = includes.push(countAllowedInclude);\n }\n }\n\n return includes;\n }, new Collection<AllowedInclude<ParentModel>>()) as Collection<AllowedInclude<ParentModel>>;\n }\n\n public static count<ParentModel extends LucidModel>(\n name: string,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([new AllowedInclude<ParentModel>(name, new IncludedCount<ParentModel>(), internalName)]);\n }\n\n public static callback<ParentModel extends LucidModel, RelatedModel extends LucidModel>(\n name: string,\n callback: (\n query:\n | ModelRelations<RelatedModel, ParentModel>['builder']\n | ModelRelations<RelatedModel, ParentModel>['subQuery'],\n ) => void,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([\n new AllowedInclude<ParentModel>(name, new IncludedCallback<ParentModel, RelatedModel>(callback), internalName),\n ]);\n }\n\n public static custom<ParentModel extends LucidModel>(\n name: string,\n includeClass: Include<ParentModel>,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([new AllowedInclude<ParentModel>(name, includeClass, internalName)]);\n }\n\n protected internalName: string;\n\n protected name: string;\n\n protected includeClass: Include<Model>;\n\n public constructor(name: string, includeClass: Include<Model>, internalName?: string) {\n this.name = name;\n this.includeClass = includeClass;\n this.internalName = internalName ?? this.name;\n }\n\n public include(query: ModelQueryBuilderContract<Model>): void {\n // if ('getRequestedFieldsForRelatedTable' in this.includeClass) {\n // this.includeClass.getRequestedFieldsForRelatedTable = (relationship: string) => {\n // return query.getRequestedFieldsForRelatedTable(relationship);\n // };\n // }\n\n this.includeClass.handle(query, this.internalName);\n }\n\n public getName(): string {\n return this.name;\n }\n\n public isForInclude(includeName: string): boolean {\n return this.name === includeName;\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidIncludeQuery extends InvalidQuery {\n public constructor(\n public readonly unknownIncludes: string[],\n public readonly allowedIncludes: string[],\n ) {\n const notAllowed = unknownIncludes.join(', ');\n let message = `Requested include(s) \\`${notAllowed}\\` are not allowed. `;\n\n if (allowedIncludes.length > 0) {\n const allowed = allowedIncludes.join(', ');\n message = `${message}Allowed include(s) are \\`${allowed}\\``;\n } else {\n message = `${message}There are no allowed includes`;\n }\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static includesNotAllowed(unknownIncludes: string[], allowedIncludes: string[]): InvalidIncludeQuery {\n return new InvalidIncludeQuery(unknownIncludes, allowedIncludes);\n }\n}\n"],"mappings":"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","names":["app","Collection","app","Collection"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AllowedFilter,
|
|
3
3
|
InvalidFilterQuery
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-54HNQTDY.js";
|
|
5
5
|
import "./chunk-MKQ3HMMA.js";
|
|
6
6
|
import "./chunk-XIRHVLVQ.js";
|
|
7
7
|
|
|
@@ -52,4 +52,4 @@ var extendModelQueryBuilderWithFiltersQuery = function(builder, config) {
|
|
|
52
52
|
export {
|
|
53
53
|
extendModelQueryBuilderWithFiltersQuery
|
|
54
54
|
};
|
|
55
|
-
//# sourceMappingURL=filters_query-
|
|
55
|
+
//# sourceMappingURL=filters_query-LCFH2F2X.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AllowedInclude,
|
|
3
3
|
InvalidIncludeQuery
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IV3B5WO7.js";
|
|
5
5
|
import "./chunk-XIRHVLVQ.js";
|
|
6
6
|
|
|
7
7
|
// src/bindings/includes_query.ts
|
|
@@ -67,4 +67,4 @@ var extendModelQueryBuilderWithIncludesQuery = function(builder, config) {
|
|
|
67
67
|
export {
|
|
68
68
|
extendModelQueryBuilderWithIncludesQuery
|
|
69
69
|
};
|
|
70
|
-
//# sourceMappingURL=includes_query-
|
|
70
|
+
//# sourceMappingURL=includes_query-PVONWQMC.js.map
|
package/build/index.d.ts
CHANGED
|
@@ -17,3 +17,15 @@ export { InvalidSortQuery } from './src/exceptions/invalid_sort_query.js';
|
|
|
17
17
|
export { UnknownIncludedFieldsQuery } from './src/exceptions/unknown_included_fields_query.js';
|
|
18
18
|
export { stubsRoot } from './stubs/main.js';
|
|
19
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';
|
package/build/index.js
CHANGED
|
@@ -2,20 +2,32 @@ import {
|
|
|
2
2
|
AllowedSort,
|
|
3
3
|
InvalidDirection,
|
|
4
4
|
InvalidSortQuery,
|
|
5
|
-
SortDirection
|
|
6
|
-
|
|
5
|
+
SortDirection,
|
|
6
|
+
SortsCallback,
|
|
7
|
+
SortsField
|
|
8
|
+
} from "./chunk-3ITWUZL5.js";
|
|
7
9
|
import {
|
|
8
10
|
AllowedFilter,
|
|
9
11
|
FilterOperator,
|
|
12
|
+
FiltersBeginWithStrict,
|
|
13
|
+
FiltersCallback,
|
|
14
|
+
FiltersEndsWithStrict,
|
|
15
|
+
FiltersExact,
|
|
16
|
+
FiltersOperator,
|
|
17
|
+
FiltersPartial,
|
|
18
|
+
FiltersTrashed,
|
|
10
19
|
InvalidFilterQuery
|
|
11
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-54HNQTDY.js";
|
|
12
21
|
import {
|
|
13
22
|
ApiQueryBuilderRequest
|
|
14
23
|
} from "./chunk-MKQ3HMMA.js";
|
|
15
24
|
import {
|
|
16
25
|
AllowedInclude,
|
|
26
|
+
IncludedCallback,
|
|
27
|
+
IncludedCount,
|
|
28
|
+
IncludedRelationship,
|
|
17
29
|
InvalidIncludeQuery
|
|
18
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-IV3B5WO7.js";
|
|
19
31
|
import {
|
|
20
32
|
InvalidQuery
|
|
21
33
|
} from "./chunk-XIRHVLVQ.js";
|
|
@@ -114,6 +126,16 @@ export {
|
|
|
114
126
|
AllowedSort,
|
|
115
127
|
ApiQueryBuilderRequest,
|
|
116
128
|
FilterOperator,
|
|
129
|
+
FiltersBeginWithStrict,
|
|
130
|
+
FiltersCallback,
|
|
131
|
+
FiltersEndsWithStrict,
|
|
132
|
+
FiltersExact,
|
|
133
|
+
FiltersOperator,
|
|
134
|
+
FiltersPartial,
|
|
135
|
+
FiltersTrashed,
|
|
136
|
+
IncludedCallback,
|
|
137
|
+
IncludedCount,
|
|
138
|
+
IncludedRelationship,
|
|
117
139
|
InvalidAppendQuery,
|
|
118
140
|
InvalidDirection,
|
|
119
141
|
InvalidFilterQuery,
|
|
@@ -122,6 +144,8 @@ export {
|
|
|
122
144
|
InvalidQuery,
|
|
123
145
|
InvalidSortQuery,
|
|
124
146
|
SortDirection,
|
|
147
|
+
SortsCallback,
|
|
148
|
+
SortsField,
|
|
125
149
|
UnknownIncludedFieldsQuery,
|
|
126
150
|
configure,
|
|
127
151
|
defineConfig,
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../stubs/main.ts","../configure.ts","../src/define_config.ts","../src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts","../src/exceptions/invalid_append_query.ts","../src/exceptions/invalid_filter_value.ts","../src/exceptions/unknown_included_fields_query.ts","../index.ts"],"sourcesContent":["import path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport const stubsRoot = path.dirname(fileURLToPath(import.meta.url));\n","import type Configure from '@adonisjs/core/commands/configure';\nimport { stubsRoot } from './stubs/main.js';\n\nexport const configure = async (command: Configure): Promise<void> => {\n const codemods = await command.createCodemods();\n\n await codemods.updateRcFile((rcFile) => {\n rcFile.addProvider('@eienjs/adonisjs-api-query/api_query_provider');\n });\n\n await codemods.makeUsingStub(stubsRoot, 'config.stub', {});\n};\n","import { configProvider } from '@adonisjs/core';\nimport { type ConfigProvider } from '@adonisjs/core/types';\nimport { type ApiQueryConfig, type ResolvedApiQueryConfig } from './types.js';\n\nexport const defineConfig = function (config: ApiQueryConfig): ConfigProvider<ResolvedApiQueryConfig> {\n return configProvider.create(async (_) => {\n return {\n parameters: {\n include: config.parameters?.include ?? 'include',\n filter: config.parameters?.filter ?? 'filter',\n sort: config.parameters?.sort ?? 'sort',\n fields: config.parameters?.fields ?? 'fields',\n append: config.parameters?.append ?? 'append',\n },\n countSuffix: config.countSuffix ?? 'Count',\n existsSuffix: config.existsSuffix ?? 'Exists',\n disableInvalidFilterQueryException: config.disableInvalidFilterQueryException ?? false,\n disableInvalidSortQueryException: config.disableInvalidSortQueryException ?? false,\n disableInvalidIncludesQueryException: config.disableInvalidIncludesQueryException ?? false,\n convertRelationNamesToSnakeCasePlural: config.convertRelationNamesToSnakeCasePlural ?? false,\n convertRelationTableNameStrategy: config.convertRelationTableNameStrategy ?? false,\n convertFieldNamesToSnakeCase: config.convertFieldNamesToSnakeCase ?? false,\n };\n });\n};\n","import { Exception } from '@adonisjs/core/exceptions';\n\nexport class AllowedFieldsMustBeCalledBeforeAllowedIncludes extends Exception {\n public static readonly code: 'E_BAD_METHOD_CALL_EXCEPTION';\n\n public static readonly status: 500;\n\n public constructor() {\n super(\"The QueryBuilder's `allowedFields` method must be called before the `allowedIncludes` method\");\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidAppendQuery extends InvalidQuery {\n public constructor(appendsNotAllowed: string[], allowedAppends: string[]) {\n const notAllowed = appendsNotAllowed.join(', ');\n const allowed = allowedAppends.join(', ');\n const message = `Requested append(s) \\`${notAllowed}\\` are not allowed. Allowed append(s) are \\`${allowed}\\``;\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static appendsNotAllowed(appendsNotAllowed: string[], allowedAppends: string[]): InvalidAppendQuery {\n return new InvalidAppendQuery(appendsNotAllowed, allowedAppends);\n }\n}\n","import { Exception } from '@adonisjs/core/exceptions';\n\nexport class InvalidFilterValue extends Exception {\n public static make(value: unknown): InvalidFilterValue {\n return new InvalidFilterValue(`Filter value \\`${value}\\` is invalid`);\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class UnknownIncludedFieldsQuery extends InvalidQuery {\n public readonly unknownFields: string[];\n\n public constructor(unknownFields: string[]) {\n const notAllowed = unknownFields.join(', ');\n const message = [\n `Requested field(s) \\`${notAllowed}\\` are not allowed (yet). `,\n \"If you want to allow these fields, please make sure to call the QueryBuilder's `allowedFields` method before the `allowedIncludes` method\",\n ].join('');\n\n super(message, { status: ResponseStatus.BadRequest });\n\n this.unknownFields = unknownFields;\n }\n}\n","export { configure } from './configure.js';\nexport { AllowedFilter } from './src/allowed_filter.js';\nexport { AllowedInclude } from './src/allowed_include.js';\nexport { AllowedSort } from './src/allowed_sort.js';\nexport { ApiQueryBuilderRequest } from './src/api_query_builder_request.js';\nexport { defineConfig } from './src/define_config.js';\nexport { FilterOperator } from './src/enums/filter_operator.js';\nexport { SortDirection } from './src/enums/sort_direction.js';\nexport { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from './src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js';\nexport { InvalidAppendQuery } from './src/exceptions/invalid_append_query.js';\nexport { InvalidDirection } from './src/exceptions/invalid_direction.js';\nexport { InvalidFilterQuery } from './src/exceptions/invalid_filter_query.js';\nexport { InvalidFilterValue } from './src/exceptions/invalid_filter_value.js';\nexport { InvalidIncludeQuery } from './src/exceptions/invalid_include_query.js';\nexport { InvalidQuery } from './src/exceptions/invalid_query.js';\nexport { InvalidSortQuery } from './src/exceptions/invalid_sort_query.js';\nexport { UnknownIncludedFieldsQuery } from './src/exceptions/unknown_included_fields_query.js';\nexport { stubsRoot } from './stubs/main.js';\nexport * from 'collect.js';\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../stubs/main.ts","../configure.ts","../src/define_config.ts","../src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts","../src/exceptions/invalid_append_query.ts","../src/exceptions/invalid_filter_value.ts","../src/exceptions/unknown_included_fields_query.ts","../index.ts"],"sourcesContent":["import path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nexport const stubsRoot = path.dirname(fileURLToPath(import.meta.url));\n","import type Configure from '@adonisjs/core/commands/configure';\nimport { stubsRoot } from './stubs/main.js';\n\nexport const configure = async (command: Configure): Promise<void> => {\n const codemods = await command.createCodemods();\n\n await codemods.updateRcFile((rcFile) => {\n rcFile.addProvider('@eienjs/adonisjs-api-query/api_query_provider');\n });\n\n await codemods.makeUsingStub(stubsRoot, 'config.stub', {});\n};\n","import { configProvider } from '@adonisjs/core';\nimport { type ConfigProvider } from '@adonisjs/core/types';\nimport { type ApiQueryConfig, type ResolvedApiQueryConfig } from './types.js';\n\nexport const defineConfig = function (config: ApiQueryConfig): ConfigProvider<ResolvedApiQueryConfig> {\n return configProvider.create(async (_) => {\n return {\n parameters: {\n include: config.parameters?.include ?? 'include',\n filter: config.parameters?.filter ?? 'filter',\n sort: config.parameters?.sort ?? 'sort',\n fields: config.parameters?.fields ?? 'fields',\n append: config.parameters?.append ?? 'append',\n },\n countSuffix: config.countSuffix ?? 'Count',\n existsSuffix: config.existsSuffix ?? 'Exists',\n disableInvalidFilterQueryException: config.disableInvalidFilterQueryException ?? false,\n disableInvalidSortQueryException: config.disableInvalidSortQueryException ?? false,\n disableInvalidIncludesQueryException: config.disableInvalidIncludesQueryException ?? false,\n convertRelationNamesToSnakeCasePlural: config.convertRelationNamesToSnakeCasePlural ?? false,\n convertRelationTableNameStrategy: config.convertRelationTableNameStrategy ?? false,\n convertFieldNamesToSnakeCase: config.convertFieldNamesToSnakeCase ?? false,\n };\n });\n};\n","import { Exception } from '@adonisjs/core/exceptions';\n\nexport class AllowedFieldsMustBeCalledBeforeAllowedIncludes extends Exception {\n public static readonly code: 'E_BAD_METHOD_CALL_EXCEPTION';\n\n public static readonly status: 500;\n\n public constructor() {\n super(\"The QueryBuilder's `allowedFields` method must be called before the `allowedIncludes` method\");\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidAppendQuery extends InvalidQuery {\n public constructor(appendsNotAllowed: string[], allowedAppends: string[]) {\n const notAllowed = appendsNotAllowed.join(', ');\n const allowed = allowedAppends.join(', ');\n const message = `Requested append(s) \\`${notAllowed}\\` are not allowed. Allowed append(s) are \\`${allowed}\\``;\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static appendsNotAllowed(appendsNotAllowed: string[], allowedAppends: string[]): InvalidAppendQuery {\n return new InvalidAppendQuery(appendsNotAllowed, allowedAppends);\n }\n}\n","import { Exception } from '@adonisjs/core/exceptions';\n\nexport class InvalidFilterValue extends Exception {\n public static make(value: unknown): InvalidFilterValue {\n return new InvalidFilterValue(`Filter value \\`${value}\\` is invalid`);\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class UnknownIncludedFieldsQuery extends InvalidQuery {\n public readonly unknownFields: string[];\n\n public constructor(unknownFields: string[]) {\n const notAllowed = unknownFields.join(', ');\n const message = [\n `Requested field(s) \\`${notAllowed}\\` are not allowed (yet). `,\n \"If you want to allow these fields, please make sure to call the QueryBuilder's `allowedFields` method before the `allowedIncludes` method\",\n ].join('');\n\n super(message, { status: ResponseStatus.BadRequest });\n\n this.unknownFields = unknownFields;\n }\n}\n","export { configure } from './configure.js';\nexport { AllowedFilter } from './src/allowed_filter.js';\nexport { AllowedInclude } from './src/allowed_include.js';\nexport { AllowedSort } from './src/allowed_sort.js';\nexport { ApiQueryBuilderRequest } from './src/api_query_builder_request.js';\nexport { defineConfig } from './src/define_config.js';\nexport { FilterOperator } from './src/enums/filter_operator.js';\nexport { SortDirection } from './src/enums/sort_direction.js';\nexport { AllowedFieldsMustBeCalledBeforeAllowedIncludes } from './src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js';\nexport { InvalidAppendQuery } from './src/exceptions/invalid_append_query.js';\nexport { InvalidDirection } from './src/exceptions/invalid_direction.js';\nexport { InvalidFilterQuery } from './src/exceptions/invalid_filter_query.js';\nexport { InvalidFilterValue } from './src/exceptions/invalid_filter_value.js';\nexport { InvalidIncludeQuery } from './src/exceptions/invalid_include_query.js';\nexport { InvalidQuery } from './src/exceptions/invalid_query.js';\nexport { InvalidSortQuery } from './src/exceptions/invalid_sort_query.js';\nexport { UnknownIncludedFieldsQuery } from './src/exceptions/unknown_included_fields_query.js';\nexport { stubsRoot } from './stubs/main.js';\nexport * from 'collect.js';\n// Filters\nexport { FiltersBeginWithStrict } from './src/filters/filters_begin_with_strict.js';\nexport { FiltersCallback } from './src/filters/filters_callback.js';\nexport { FiltersEndsWithStrict } from './src/filters/filters_ends_with_strict.js';\nexport { FiltersExact } from './src/filters/filters_exact.js';\nexport { FiltersOperator } from './src/filters/filters_operator.js';\nexport { FiltersPartial } from './src/filters/filters_partial.js';\nexport { FiltersTrashed } from './src/filters/filters_trashed.js';\n// Includes\nexport { IncludedCallback } from './src/includes/included_callback.js';\nexport { IncludedCount } from './src/includes/included_count.js';\nexport { IncludedRelationship } from './src/includes/included_relationship.js';\n// Sorts\nexport { SortsCallback } from './src/sorts/sorts_callback.js';\nexport { SortsField } from './src/sorts/sorts_field.js';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAEvB,IAAM,YAAY,KAAK,QAAQ,cAAc,YAAY,GAAG,CAAC;;;ACA7D,IAAM,YAAY,OAAO,YAAsC;AACpE,QAAM,WAAW,MAAM,QAAQ,eAAe;AAE9C,QAAM,SAAS,aAAa,CAAC,WAAW;AACtC,WAAO,YAAY,+CAA+C;AAAA,EACpE,CAAC;AAED,QAAM,SAAS,cAAc,WAAW,eAAe,CAAC,CAAC;AAC3D;;;ACXA,SAAS,sBAAsB;AAIxB,IAAM,eAAe,SAAU,QAAgE;AACpG,SAAO,eAAe,OAAO,OAAO,MAAM;AACxC,WAAO;AAAA,MACL,YAAY;AAAA,QACV,SAAS,OAAO,YAAY,WAAW;AAAA,QACvC,QAAQ,OAAO,YAAY,UAAU;AAAA,QACrC,MAAM,OAAO,YAAY,QAAQ;AAAA,QACjC,QAAQ,OAAO,YAAY,UAAU;AAAA,QACrC,QAAQ,OAAO,YAAY,UAAU;AAAA,MACvC;AAAA,MACA,aAAa,OAAO,eAAe;AAAA,MACnC,cAAc,OAAO,gBAAgB;AAAA,MACrC,oCAAoC,OAAO,sCAAsC;AAAA,MACjF,kCAAkC,OAAO,oCAAoC;AAAA,MAC7E,sCAAsC,OAAO,wCAAwC;AAAA,MACrF,uCAAuC,OAAO,yCAAyC;AAAA,MACvF,kCAAkC,OAAO,oCAAoC;AAAA,MAC7E,8BAA8B,OAAO,gCAAgC;AAAA,IACvE;AAAA,EACF,CAAC;AACH;;;ACxBA,SAAS,iBAAiB;AAEnB,IAAM,iDAAN,cAA6D,UAAU;AAAA,EAC5E,OAAuB;AAAA,EAEvB,OAAuB;AAAA,EAEhB,cAAc;AACnB,UAAM,8FAA8F;AAAA,EACtG;AACF;;;ACVA,SAAS,sBAAsB;AAGxB,IAAM,qBAAN,MAAM,4BAA2B,aAAa;AAAA,EAC5C,YAAY,mBAA6B,gBAA0B;AACxE,UAAM,aAAa,kBAAkB,KAAK,IAAI;AAC9C,UAAM,UAAU,eAAe,KAAK,IAAI;AACxC,UAAM,UAAU,yBAAyB,UAAU,+CAA+C,OAAO;AAEzG,UAAM,SAAS,EAAE,QAAQ,eAAe,WAAW,CAAC;AAAA,EACtD;AAAA,EAEA,OAAc,kBAAkB,mBAA6B,gBAA8C;AACzG,WAAO,IAAI,oBAAmB,mBAAmB,cAAc;AAAA,EACjE;AACF;;;ACfA,SAAS,aAAAA,kBAAiB;AAEnB,IAAM,qBAAN,MAAM,4BAA2BA,WAAU;AAAA,EAChD,OAAc,KAAK,OAAoC;AACrD,WAAO,IAAI,oBAAmB,kBAAkB,KAAK,eAAe;AAAA,EACtE;AACF;;;ACNA,SAAS,kBAAAC,uBAAsB;AAGxB,IAAM,6BAAN,cAAyC,aAAa;AAAA,EAC3C;AAAA,EAET,YAAY,eAAyB;AAC1C,UAAM,aAAa,cAAc,KAAK,IAAI;AAC1C,UAAM,UAAU;AAAA,MACd,wBAAwB,UAAU;AAAA,MAClC;AAAA,IACF,EAAE,KAAK,EAAE;AAET,UAAM,SAAS,EAAE,QAAQC,gBAAe,WAAW,CAAC;AAEpD,SAAK,gBAAgB;AAAA,EACvB;AACF;;;ACCA,cAAc;","names":["Exception","ResponseStatus","ResponseStatus"]}
|
package/build/metafile-esm.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"stubs/main.ts":{"bytes":144,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"node:url","kind":"import-statement","external":true}],"format":"esm"},"configure.ts":{"bytes":423,"imports":[{"path":"stubs/main.ts","kind":"import-statement","original":"./stubs/main.js"}],"format":"esm"},"src/utils/helpers.ts":{"bytes":931,"imports":[],"format":"esm"},"src/api_query_builder_request.ts":{"bytes":6640,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/utils/helpers.ts","kind":"import-statement","original":"./utils/helpers.js"}],"format":"esm"},"src/filters/filters_exact.ts":{"bytes":2526,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/filters/filters_partial.ts":{"bytes":2356,"imports":[{"path":"@adonisjs/lucid/types/database","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters_exact.js"}],"format":"esm"},"src/filters/filters_begin_with_strict.ts":{"bytes":570,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters_partial.js"}],"format":"esm"},"src/filters/filters_callback.ts":{"bytes":527,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/filters/filters_ends_with_strict.ts":{"bytes":568,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters_partial.js"}],"format":"esm"},"src/enums/filter_operator.ts":{"bytes":265,"imports":[],"format":"esm"},"src/filters/filters_operator.ts":{"bytes":2380,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"src/enums/filter_operator.ts","kind":"import-statement","original":"../enums/filter_operator.js"},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/utils/helpers.ts","kind":"import-statement","original":"../utils/helpers.js"},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters_exact.js"}],"format":"esm"},"src/filters/filters_trashed.ts":{"bytes":885,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_filter.ts":{"bytes":6731,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"./api_query_builder_request.js"},{"path":"./enums/filter_operator.js","kind":"import-statement","external":true},{"path":"src/filters/filters_begin_with_strict.ts","kind":"import-statement","original":"./filters/filters_begin_with_strict.js"},{"path":"src/filters/filters_callback.ts","kind":"import-statement","original":"./filters/filters_callback.js"},{"path":"src/filters/filters_ends_with_strict.ts","kind":"import-statement","original":"./filters/filters_ends_with_strict.js"},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters/filters_exact.js"},{"path":"src/filters/filters_operator.ts","kind":"import-statement","original":"./filters/filters_operator.js"},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters/filters_partial.js"},{"path":"src/filters/filters_trashed.ts","kind":"import-statement","original":"./filters/filters_trashed.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_callback.ts":{"bytes":809,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_count.ts":{"bytes":742,"imports":[{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_relationship.ts":{"bytes":2731,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_include.ts":{"bytes":3602,"imports":[{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/includes/included_callback.ts","kind":"import-statement","original":"./includes/included_callback.js"},{"path":"src/includes/included_count.ts","kind":"import-statement","original":"./includes/included_count.js"},{"path":"src/includes/included_relationship.ts","kind":"import-statement","original":"./includes/included_relationship.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/enums/sort_direction.ts":{"bytes":166,"imports":[],"format":"esm"},"src/exceptions/invalid_direction.ts":{"bytes":387,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"../enums/sort_direction.js"}],"format":"esm"},"src/sorts/sorts_callback.ts":{"bytes":551,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/sorts/sorts_field.ts":{"bytes":385,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_sort.ts":{"bytes":2724,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"./enums/sort_direction.js"},{"path":"src/exceptions/invalid_direction.ts","kind":"import-statement","original":"./exceptions/invalid_direction.js"},{"path":"src/sorts/sorts_callback.ts","kind":"import-statement","original":"./sorts/sorts_callback.js"},{"path":"src/sorts/sorts_field.ts","kind":"import-statement","original":"./sorts/sorts_field.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/define_config.ts":{"bytes":1326,"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/types","kind":"import-statement","external":true},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts":{"bytes":376,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_query.ts":{"bytes":174,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_append_query.ts":{"bytes":706,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_filter_query.ts":{"bytes":739,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_filter_value.ts":{"bytes":248,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_include_query.ts":{"bytes":900,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_sort_query.ts":{"bytes":710,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/unknown_included_fields_query.ts":{"bytes":672,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"index.ts":{"bytes":1315,"imports":[{"path":"configure.ts","kind":"import-statement","original":"./configure.js"},{"path":"src/allowed_filter.ts","kind":"import-statement","original":"./src/allowed_filter.js"},{"path":"src/allowed_include.ts","kind":"import-statement","original":"./src/allowed_include.js"},{"path":"src/allowed_sort.ts","kind":"import-statement","original":"./src/allowed_sort.js"},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"./src/api_query_builder_request.js"},{"path":"src/define_config.ts","kind":"import-statement","original":"./src/define_config.js"},{"path":"src/enums/filter_operator.ts","kind":"import-statement","original":"./src/enums/filter_operator.js"},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"./src/enums/sort_direction.js"},{"path":"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts","kind":"import-statement","original":"./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js"},{"path":"src/exceptions/invalid_append_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_append_query.js"},{"path":"src/exceptions/invalid_direction.ts","kind":"import-statement","original":"./src/exceptions/invalid_direction.js"},{"path":"src/exceptions/invalid_filter_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_filter_query.js"},{"path":"src/exceptions/invalid_filter_value.ts","kind":"import-statement","original":"./src/exceptions/invalid_filter_value.js"},{"path":"src/exceptions/invalid_include_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_include_query.js"},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_query.js"},{"path":"src/exceptions/invalid_sort_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_sort_query.js"},{"path":"src/exceptions/unknown_included_fields_query.ts","kind":"import-statement","original":"./src/exceptions/unknown_included_fields_query.js"},{"path":"stubs/main.ts","kind":"import-statement","original":"./stubs/main.js"},{"path":"collect.js","kind":"import-statement","external":true}],"format":"esm"},"src/bindings/api_query_request.ts":{"bytes":770,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"../api_query_builder_request.js"}],"format":"esm"},"src/bindings/sorts_query.ts":{"bytes":2829,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_sort.ts","kind":"import-statement","original":"../allowed_sort.js"},{"path":"src/exceptions/invalid_sort_query.ts","kind":"import-statement","original":"../exceptions/invalid_sort_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/bindings/filters_query.ts":{"bytes":2528,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_filter.ts","kind":"import-statement","original":"../allowed_filter.js"},{"path":"src/exceptions/invalid_filter_query.ts","kind":"import-statement","original":"../exceptions/invalid_filter_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/bindings/includes_query.ts":{"bytes":3412,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_include.ts","kind":"import-statement","original":"../allowed_include.js"},{"path":"src/exceptions/invalid_include_query.ts","kind":"import-statement","original":"../exceptions/invalid_include_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"providers/api_query_provider.ts":{"bytes":4064,"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/types","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../src/allowed_filter.js","kind":"import-statement","external":true},{"path":"../src/allowed_include.js","kind":"import-statement","external":true},{"path":"../src/allowed_sort.js","kind":"import-statement","external":true},{"path":"../src/api_query_builder_request.js","kind":"import-statement","external":true},{"path":"../src/types.js","kind":"import-statement","external":true},{"path":"src/bindings/api_query_request.ts","kind":"dynamic-import","original":"../src/bindings/api_query_request.js"},{"path":"src/bindings/sorts_query.ts","kind":"dynamic-import","original":"../src/bindings/sorts_query.js"},{"path":"src/bindings/filters_query.ts","kind":"dynamic-import","original":"../src/bindings/filters_query.js"},{"path":"src/bindings/includes_query.ts","kind":"dynamic-import","original":"../src/bindings/includes_query.js"}],"format":"esm"},"src/types.ts":{"bytes":4261,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"build/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":7495},"build/index.js":{"imports":[{"path":"build/chunk-HQN7LHVO.js","kind":"import-statement"},{"path":"build/chunk-AL3XCN3K.js","kind":"import-statement"},{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-OS75QJZN.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:url","kind":"import-statement","external":true},{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["AllowedFieldsMustBeCalledBeforeAllowedIncludes","AllowedFilter","AllowedInclude","AllowedSort","ApiQueryBuilderRequest","FilterOperator","InvalidAppendQuery","InvalidDirection","InvalidFilterQuery","InvalidFilterValue","InvalidIncludeQuery","InvalidQuery","InvalidSortQuery","SortDirection","UnknownIncludedFieldsQuery","configure","defineConfig","stubsRoot"],"entryPoint":"index.ts","inputs":{"stubs/main.ts":{"bytesInOutput":134},"configure.ts":{"bytesInOutput":276},"index.ts":{"bytesInOutput":28},"src/define_config.ts":{"bytesInOutput":1118},"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts":{"bytesInOutput":298},"src/exceptions/invalid_append_query.ts":{"bytesInOutput":599},"src/exceptions/invalid_filter_value.ts":{"bytesInOutput":247},"src/exceptions/unknown_included_fields_query.ts":{"bytesInOutput":593}},"bytes":4371},"build/providers/api_query_provider.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4876},"build/providers/api_query_provider.js":{"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"build/api_query_request-QXOB4BN6.js","kind":"dynamic-import"},{"path":"build/sorts_query-LUETK3FD.js","kind":"dynamic-import"},{"path":"build/filters_query-4E533ESM.js","kind":"dynamic-import"},{"path":"build/includes_query-2XNHHWJB.js","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"providers/api_query_provider.ts","inputs":{"providers/api_query_provider.ts":{"bytesInOutput":1261}},"bytes":1338},"build/src/types.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"build/src/types.js":{"imports":[],"exports":[],"entryPoint":"src/types.ts","inputs":{"src/types.ts":{"bytesInOutput":0}},"bytes":0},"build/api_query_request-QXOB4BN6.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1131},"build/api_query_request-QXOB4BN6.js":{"imports":[{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"}],"exports":["extendModelQueryBuilderWithRequest"],"entryPoint":"src/bindings/api_query_request.ts","inputs":{"src/bindings/api_query_request.ts":{"bytesInOutput":348}},"bytes":499},"build/sorts_query-LUETK3FD.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4447},"build/sorts_query-LUETK3FD.js":{"imports":[{"path":"build/chunk-HQN7LHVO.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithSortsQuery"],"entryPoint":"src/bindings/sorts_query.ts","inputs":{"src/bindings/sorts_query.ts":{"bytesInOutput":1877}},"bytes":2064},"build/chunk-HQN7LHVO.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":7217},"build/chunk-HQN7LHVO.js":{"imports":[{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedSort","InvalidDirection","InvalidSortQuery","SortDirection"],"inputs":{"src/enums/sort_direction.ts":{"bytesInOutput":66},"src/exceptions/invalid_direction.ts":{"bytesInOutput":311},"src/sorts/sorts_callback.ts":{"bytesInOutput":187},"src/sorts/sorts_field.ts":{"bytesInOutput":135},"src/allowed_sort.ts":{"bytesInOutput":1415},"src/exceptions/invalid_sort_query.ts":{"bytesInOutput":634}},"bytes":3084},"build/filters_query-4E533ESM.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3812},"build/filters_query-4E533ESM.js":{"imports":[{"path":"build/chunk-AL3XCN3K.js","kind":"import-statement"},{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithFiltersQuery"],"entryPoint":"src/bindings/filters_query.ts","inputs":{"src/bindings/filters_query.ts":{"bytesInOutput":1613}},"bytes":1838},"build/chunk-AL3XCN3K.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":25699},"build/chunk-AL3XCN3K.js":{"imports":[{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedFilter","FilterOperator","InvalidFilterQuery"],"inputs":{"src/enums/filter_operator.ts":{"bytesInOutput":162},"src/allowed_filter.ts":{"bytesInOutput":3816},"src/filters/filters_exact.ts":{"bytesInOutput":1632},"src/filters/filters_partial.ts":{"bytesInOutput":1536},"src/filters/filters_begin_with_strict.ts":{"bytesInOutput":231},"src/filters/filters_callback.ts":{"bytesInOutput":175},"src/filters/filters_ends_with_strict.ts":{"bytesInOutput":228},"src/filters/filters_operator.ts":{"bytesInOutput":1750},"src/filters/filters_trashed.ts":{"bytesInOutput":371},"src/exceptions/invalid_filter_query.ts":{"bytesInOutput":671}},"bytes":11168},"build/chunk-MKQ3HMMA.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12289},"build/chunk-MKQ3HMMA.js":{"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["ApiQueryBuilderRequest","substrReplace"],"inputs":{"src/api_query_builder_request.ts":{"bytesInOutput":5775},"src/utils/helpers.ts":{"bytesInOutput":804}},"bytes":6732},"build/includes_query-2XNHHWJB.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5167},"build/includes_query-2XNHHWJB.js":{"imports":[{"path":"build/chunk-OS75QJZN.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithIncludesQuery"],"entryPoint":"src/bindings/includes_query.ts","inputs":{"src/bindings/includes_query.ts":{"bytesInOutput":2315}},"bytes":2514},"build/chunk-OS75QJZN.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12703},"build/chunk-OS75QJZN.js":{"imports":[{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedInclude","InvalidIncludeQuery"],"inputs":{"src/allowed_include.ts":{"bytesInOutput":1841},"src/includes/included_callback.ts":{"bytesInOutput":173},"src/includes/included_count.ts":{"bytesInOutput":297},"src/includes/included_relationship.ts":{"bytesInOutput":1845},"src/exceptions/invalid_include_query.ts":{"bytesInOutput":835}},"bytes":5311},"build/chunk-XIRHVLVQ.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":383},"build/chunk-XIRHVLVQ.js":{"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"exports":["InvalidQuery"],"inputs":{"src/exceptions/invalid_query.ts":{"bytesInOutput":148}},"bytes":211}}}
|
|
1
|
+
{"inputs":{"stubs/main.ts":{"bytes":144,"imports":[{"path":"node:path","kind":"import-statement","external":true},{"path":"node:url","kind":"import-statement","external":true}],"format":"esm"},"configure.ts":{"bytes":423,"imports":[{"path":"stubs/main.ts","kind":"import-statement","original":"./stubs/main.js"}],"format":"esm"},"src/utils/helpers.ts":{"bytes":931,"imports":[],"format":"esm"},"src/api_query_builder_request.ts":{"bytes":6640,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/utils/helpers.ts","kind":"import-statement","original":"./utils/helpers.js"}],"format":"esm"},"src/filters/filters_exact.ts":{"bytes":2571,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/filters/filters_partial.ts":{"bytes":2356,"imports":[{"path":"@adonisjs/lucid/types/database","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters_exact.js"}],"format":"esm"},"src/filters/filters_begin_with_strict.ts":{"bytes":570,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters_partial.js"}],"format":"esm"},"src/filters/filters_callback.ts":{"bytes":527,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/filters/filters_ends_with_strict.ts":{"bytes":568,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters_partial.js"}],"format":"esm"},"src/enums/filter_operator.ts":{"bytes":265,"imports":[],"format":"esm"},"src/filters/filters_operator.ts":{"bytes":2380,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"src/enums/filter_operator.ts","kind":"import-statement","original":"../enums/filter_operator.js"},{"path":"../types.js","kind":"import-statement","external":true},{"path":"src/utils/helpers.ts","kind":"import-statement","original":"../utils/helpers.js"},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters_exact.js"}],"format":"esm"},"src/filters/filters_trashed.ts":{"bytes":885,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_filter.ts":{"bytes":6731,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"./api_query_builder_request.js"},{"path":"./enums/filter_operator.js","kind":"import-statement","external":true},{"path":"src/filters/filters_begin_with_strict.ts","kind":"import-statement","original":"./filters/filters_begin_with_strict.js"},{"path":"src/filters/filters_callback.ts","kind":"import-statement","original":"./filters/filters_callback.js"},{"path":"src/filters/filters_ends_with_strict.ts","kind":"import-statement","original":"./filters/filters_ends_with_strict.js"},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./filters/filters_exact.js"},{"path":"src/filters/filters_operator.ts","kind":"import-statement","original":"./filters/filters_operator.js"},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./filters/filters_partial.js"},{"path":"src/filters/filters_trashed.ts","kind":"import-statement","original":"./filters/filters_trashed.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_callback.ts":{"bytes":809,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_count.ts":{"bytes":742,"imports":[{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/includes/included_relationship.ts":{"bytes":2731,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_include.ts":{"bytes":3602,"imports":[{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/includes/included_callback.ts","kind":"import-statement","original":"./includes/included_callback.js"},{"path":"src/includes/included_count.ts","kind":"import-statement","original":"./includes/included_count.js"},{"path":"src/includes/included_relationship.ts","kind":"import-statement","original":"./includes/included_relationship.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/enums/sort_direction.ts":{"bytes":166,"imports":[],"format":"esm"},"src/exceptions/invalid_direction.ts":{"bytes":387,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"../enums/sort_direction.js"}],"format":"esm"},"src/sorts/sorts_callback.ts":{"bytes":551,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/sorts/sorts_field.ts":{"bytes":385,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/allowed_sort.ts":{"bytes":2724,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"./enums/sort_direction.js"},{"path":"src/exceptions/invalid_direction.ts","kind":"import-statement","original":"./exceptions/invalid_direction.js"},{"path":"src/sorts/sorts_callback.ts","kind":"import-statement","original":"./sorts/sorts_callback.js"},{"path":"src/sorts/sorts_field.ts","kind":"import-statement","original":"./sorts/sorts_field.js"},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/define_config.ts":{"bytes":1326,"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/types","kind":"import-statement","external":true},{"path":"./types.js","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts":{"bytes":376,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_query.ts":{"bytes":174,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_append_query.ts":{"bytes":706,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_filter_query.ts":{"bytes":739,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_filter_value.ts":{"bytes":248,"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"format":"esm"},"src/exceptions/invalid_include_query.ts":{"bytes":900,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/invalid_sort_query.ts":{"bytes":710,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"src/exceptions/unknown_included_fields_query.ts":{"bytes":672,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./invalid_query.js"}],"format":"esm"},"index.ts":{"bytes":2188,"imports":[{"path":"configure.ts","kind":"import-statement","original":"./configure.js"},{"path":"src/allowed_filter.ts","kind":"import-statement","original":"./src/allowed_filter.js"},{"path":"src/allowed_include.ts","kind":"import-statement","original":"./src/allowed_include.js"},{"path":"src/allowed_sort.ts","kind":"import-statement","original":"./src/allowed_sort.js"},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"./src/api_query_builder_request.js"},{"path":"src/define_config.ts","kind":"import-statement","original":"./src/define_config.js"},{"path":"src/enums/filter_operator.ts","kind":"import-statement","original":"./src/enums/filter_operator.js"},{"path":"src/enums/sort_direction.ts","kind":"import-statement","original":"./src/enums/sort_direction.js"},{"path":"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts","kind":"import-statement","original":"./src/exceptions/allowed_fields_must_be_called_before_allowed_includes.js"},{"path":"src/exceptions/invalid_append_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_append_query.js"},{"path":"src/exceptions/invalid_direction.ts","kind":"import-statement","original":"./src/exceptions/invalid_direction.js"},{"path":"src/exceptions/invalid_filter_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_filter_query.js"},{"path":"src/exceptions/invalid_filter_value.ts","kind":"import-statement","original":"./src/exceptions/invalid_filter_value.js"},{"path":"src/exceptions/invalid_include_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_include_query.js"},{"path":"src/exceptions/invalid_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_query.js"},{"path":"src/exceptions/invalid_sort_query.ts","kind":"import-statement","original":"./src/exceptions/invalid_sort_query.js"},{"path":"src/exceptions/unknown_included_fields_query.ts","kind":"import-statement","original":"./src/exceptions/unknown_included_fields_query.js"},{"path":"stubs/main.ts","kind":"import-statement","original":"./stubs/main.js"},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/filters/filters_begin_with_strict.ts","kind":"import-statement","original":"./src/filters/filters_begin_with_strict.js"},{"path":"src/filters/filters_callback.ts","kind":"import-statement","original":"./src/filters/filters_callback.js"},{"path":"src/filters/filters_ends_with_strict.ts","kind":"import-statement","original":"./src/filters/filters_ends_with_strict.js"},{"path":"src/filters/filters_exact.ts","kind":"import-statement","original":"./src/filters/filters_exact.js"},{"path":"src/filters/filters_operator.ts","kind":"import-statement","original":"./src/filters/filters_operator.js"},{"path":"src/filters/filters_partial.ts","kind":"import-statement","original":"./src/filters/filters_partial.js"},{"path":"src/filters/filters_trashed.ts","kind":"import-statement","original":"./src/filters/filters_trashed.js"},{"path":"src/includes/included_callback.ts","kind":"import-statement","original":"./src/includes/included_callback.js"},{"path":"src/includes/included_count.ts","kind":"import-statement","original":"./src/includes/included_count.js"},{"path":"src/includes/included_relationship.ts","kind":"import-statement","original":"./src/includes/included_relationship.js"},{"path":"src/sorts/sorts_callback.ts","kind":"import-statement","original":"./src/sorts/sorts_callback.js"},{"path":"src/sorts/sorts_field.ts","kind":"import-statement","original":"./src/sorts/sorts_field.js"}],"format":"esm"},"src/bindings/api_query_request.ts":{"bytes":770,"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"src/api_query_builder_request.ts","kind":"import-statement","original":"../api_query_builder_request.js"}],"format":"esm"},"src/bindings/sorts_query.ts":{"bytes":2829,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_sort.ts","kind":"import-statement","original":"../allowed_sort.js"},{"path":"src/exceptions/invalid_sort_query.ts","kind":"import-statement","original":"../exceptions/invalid_sort_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/bindings/filters_query.ts":{"bytes":2528,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_filter.ts","kind":"import-statement","original":"../allowed_filter.js"},{"path":"src/exceptions/invalid_filter_query.ts","kind":"import-statement","original":"../exceptions/invalid_filter_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"src/bindings/includes_query.ts":{"bytes":3412,"imports":[{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"src/allowed_include.ts","kind":"import-statement","original":"../allowed_include.js"},{"path":"src/exceptions/invalid_include_query.ts","kind":"import-statement","original":"../exceptions/invalid_include_query.js"},{"path":"../types.js","kind":"import-statement","external":true}],"format":"esm"},"providers/api_query_provider.ts":{"bytes":4117,"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/types","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/relations","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"../src/allowed_filter.js","kind":"import-statement","external":true},{"path":"../src/allowed_include.js","kind":"import-statement","external":true},{"path":"../src/allowed_sort.js","kind":"import-statement","external":true},{"path":"../src/api_query_builder_request.js","kind":"import-statement","external":true},{"path":"../src/types.js","kind":"import-statement","external":true},{"path":"src/bindings/api_query_request.ts","kind":"dynamic-import","original":"../src/bindings/api_query_request.js"},{"path":"src/bindings/sorts_query.ts","kind":"dynamic-import","original":"../src/bindings/sorts_query.js"},{"path":"src/bindings/filters_query.ts","kind":"dynamic-import","original":"../src/bindings/filters_query.js"},{"path":"src/bindings/includes_query.ts","kind":"dynamic-import","original":"../src/bindings/includes_query.js"}],"format":"esm"},"src/types.ts":{"bytes":4261,"imports":[{"path":"@adonisjs/lucid/types/model","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/types/querybuilder","kind":"import-statement","external":true}],"format":"esm"}},"outputs":{"build/index.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":8395},"build/index.js":{"imports":[{"path":"build/chunk-3ITWUZL5.js","kind":"import-statement"},{"path":"build/chunk-54HNQTDY.js","kind":"import-statement"},{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-IV3B5WO7.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"node:path","kind":"import-statement","external":true},{"path":"node:url","kind":"import-statement","external":true},{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["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"],"entryPoint":"index.ts","inputs":{"stubs/main.ts":{"bytesInOutput":134},"configure.ts":{"bytesInOutput":276},"index.ts":{"bytesInOutput":28},"src/define_config.ts":{"bytesInOutput":1118},"src/exceptions/allowed_fields_must_be_called_before_allowed_includes.ts":{"bytesInOutput":298},"src/exceptions/invalid_append_query.ts":{"bytesInOutput":599},"src/exceptions/invalid_filter_value.ts":{"bytesInOutput":247},"src/exceptions/unknown_included_fields_query.ts":{"bytesInOutput":593}},"bytes":4837},"build/providers/api_query_provider.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4933},"build/providers/api_query_provider.js":{"imports":[{"path":"@adonisjs/core","kind":"import-statement","external":true},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/lucid/orm","kind":"import-statement","external":true},{"path":"build/api_query_request-QXOB4BN6.js","kind":"dynamic-import"},{"path":"build/sorts_query-NJTC5UXX.js","kind":"dynamic-import"},{"path":"build/filters_query-LCFH2F2X.js","kind":"dynamic-import"},{"path":"build/includes_query-PVONWQMC.js","kind":"dynamic-import"}],"exports":["default"],"entryPoint":"providers/api_query_provider.ts","inputs":{"providers/api_query_provider.ts":{"bytesInOutput":1261}},"bytes":1338},"build/src/types.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"build/src/types.js":{"imports":[],"exports":[],"entryPoint":"src/types.ts","inputs":{"src/types.ts":{"bytesInOutput":0}},"bytes":0},"build/api_query_request-QXOB4BN6.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":1131},"build/api_query_request-QXOB4BN6.js":{"imports":[{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"}],"exports":["extendModelQueryBuilderWithRequest"],"entryPoint":"src/bindings/api_query_request.ts","inputs":{"src/bindings/api_query_request.ts":{"bytesInOutput":348}},"bytes":499},"build/sorts_query-NJTC5UXX.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":4447},"build/sorts_query-NJTC5UXX.js":{"imports":[{"path":"build/chunk-3ITWUZL5.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithSortsQuery"],"entryPoint":"src/bindings/sorts_query.ts","inputs":{"src/bindings/sorts_query.ts":{"bytesInOutput":1877}},"bytes":2064},"build/chunk-3ITWUZL5.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":7217},"build/chunk-3ITWUZL5.js":{"imports":[{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedSort","InvalidDirection","InvalidSortQuery","SortDirection","SortsCallback","SortsField"],"inputs":{"src/enums/sort_direction.ts":{"bytesInOutput":66},"src/exceptions/invalid_direction.ts":{"bytesInOutput":311},"src/sorts/sorts_callback.ts":{"bytesInOutput":187},"src/sorts/sorts_field.ts":{"bytesInOutput":135},"src/allowed_sort.ts":{"bytesInOutput":1415},"src/exceptions/invalid_sort_query.ts":{"bytesInOutput":634}},"bytes":3115},"build/filters_query-LCFH2F2X.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":3812},"build/filters_query-LCFH2F2X.js":{"imports":[{"path":"build/chunk-54HNQTDY.js","kind":"import-statement"},{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithFiltersQuery"],"entryPoint":"src/bindings/filters_query.ts","inputs":{"src/bindings/filters_query.ts":{"bytesInOutput":1613}},"bytes":1838},"build/chunk-54HNQTDY.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":25748},"build/chunk-54HNQTDY.js":{"imports":[{"path":"build/chunk-MKQ3HMMA.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedFilter","FilterOperator","FiltersBeginWithStrict","FiltersCallback","FiltersEndsWithStrict","FiltersExact","FiltersOperator","FiltersPartial","FiltersTrashed","InvalidFilterQuery"],"inputs":{"src/filters/filters_exact.ts":{"bytesInOutput":1677},"src/filters/filters_partial.ts":{"bytesInOutput":1536},"src/filters/filters_begin_with_strict.ts":{"bytesInOutput":231},"src/filters/filters_callback.ts":{"bytesInOutput":175},"src/filters/filters_ends_with_strict.ts":{"bytesInOutput":228},"src/enums/filter_operator.ts":{"bytesInOutput":162},"src/filters/filters_operator.ts":{"bytesInOutput":1750},"src/filters/filters_trashed.ts":{"bytesInOutput":371},"src/allowed_filter.ts":{"bytesInOutput":3816},"src/exceptions/invalid_filter_query.ts":{"bytesInOutput":671}},"bytes":11328},"build/chunk-MKQ3HMMA.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12289},"build/chunk-MKQ3HMMA.js":{"imports":[{"path":"@adonisjs/core/http","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["ApiQueryBuilderRequest","substrReplace"],"inputs":{"src/api_query_builder_request.ts":{"bytesInOutput":5775},"src/utils/helpers.ts":{"bytesInOutput":804}},"bytes":6732},"build/includes_query-PVONWQMC.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":5167},"build/includes_query-PVONWQMC.js":{"imports":[{"path":"build/chunk-IV3B5WO7.js","kind":"import-statement"},{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"collect.js","kind":"import-statement","external":true}],"exports":["extendModelQueryBuilderWithIncludesQuery"],"entryPoint":"src/bindings/includes_query.ts","inputs":{"src/bindings/includes_query.ts":{"bytesInOutput":2315}},"bytes":2514},"build/chunk-IV3B5WO7.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":12701},"build/chunk-IV3B5WO7.js":{"imports":[{"path":"build/chunk-XIRHVLVQ.js","kind":"import-statement"},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/services/app","kind":"import-statement","external":true},{"path":"collect.js","kind":"import-statement","external":true},{"path":"@adonisjs/core/http","kind":"import-statement","external":true}],"exports":["AllowedInclude","IncludedCallback","IncludedCount","IncludedRelationship","InvalidIncludeQuery"],"inputs":{"src/includes/included_callback.ts":{"bytesInOutput":173},"src/includes/included_count.ts":{"bytesInOutput":297},"src/includes/included_relationship.ts":{"bytesInOutput":1845},"src/allowed_include.ts":{"bytesInOutput":1841},"src/exceptions/invalid_include_query.ts":{"bytesInOutput":835}},"bytes":5345},"build/chunk-XIRHVLVQ.js.map":{"imports":[],"exports":[],"inputs":{},"bytes":383},"build/chunk-XIRHVLVQ.js":{"imports":[{"path":"@adonisjs/core/exceptions","kind":"import-statement","external":true}],"exports":["InvalidQuery"],"inputs":{"src/exceptions/invalid_query.ts":{"bytesInOutput":148}},"bytes":211}}}
|
|
@@ -34,8 +34,8 @@ declare module '@adonisjs/lucid/types/model' {
|
|
|
34
34
|
allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
35
35
|
defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
36
36
|
defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;
|
|
37
|
-
allowedFilters(...filters: (AllowedFilter<Model> | ExtractKeys<ModelAttributes<InstanceType<Model
|
|
38
|
-
allowedFilters(filters: (AllowedFilter<Model> | ExtractKeys<ModelAttributes<InstanceType<Model
|
|
37
|
+
allowedFilters(...filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
|
|
38
|
+
allowedFilters(filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]): this;
|
|
39
39
|
allowedIncludes(...includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
|
|
40
40
|
allowedIncludes(includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]): this;
|
|
41
41
|
}
|
|
@@ -8,9 +8,9 @@ var ApiQueryProvider = class {
|
|
|
8
8
|
}
|
|
9
9
|
async boot() {
|
|
10
10
|
const { extendModelQueryBuilderWithRequest } = await import("../api_query_request-QXOB4BN6.js");
|
|
11
|
-
const { extendModelQueryBuilderWithSortsQuery } = await import("../sorts_query-
|
|
12
|
-
const { extendModelQueryBuilderWithFiltersQuery } = await import("../filters_query-
|
|
13
|
-
const { extendModelQueryBuilderWithIncludesQuery } = await import("../includes_query-
|
|
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
14
|
const apiQueryConfigProvider = this.app.config.get("apiquery");
|
|
15
15
|
const config = await configProvider.resolve(this.app, apiQueryConfigProvider);
|
|
16
16
|
if (!config) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../providers/api_query_provider.ts"],"sourcesContent":["import { configProvider } from '@adonisjs/core';\nimport { RuntimeException } from '@adonisjs/core/exceptions';\nimport { type Request } from '@adonisjs/core/http';\nimport { type ApplicationService } from '@adonisjs/core/types';\nimport { ModelQueryBuilder } from '@adonisjs/lucid/orm';\nimport { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Collection } from 'collect.js';\nimport { type AllowedFilter } from '../src/allowed_filter.js';\nimport { type AllowedInclude } from '../src/allowed_include.js';\nimport { type AllowedSort } from '../src/allowed_sort.js';\nimport { type ApiQueryBuilderRequest } from '../src/api_query_builder_request.js';\nimport {\n type ApiQueryConfig,\n type ExtractKeys,\n type HintedString,\n type ResolvedApiQueryConfig,\n type SortUnionKeyParams,\n} from '../src/types.js';\n\nexport default class ApiQueryProvider {\n public constructor(protected app: ApplicationService) {}\n\n public async boot(): Promise<void> {\n const { extendModelQueryBuilderWithRequest } = await import('../src/bindings/api_query_request.js');\n const { extendModelQueryBuilderWithSortsQuery } = await import('../src/bindings/sorts_query.js');\n const { extendModelQueryBuilderWithFiltersQuery } = await import('../src/bindings/filters_query.js');\n const { extendModelQueryBuilderWithIncludesQuery } = await import('../src/bindings/includes_query.js');\n const apiQueryConfigProvider = this.app.config.get<ApiQueryConfig>('apiquery');\n const config = await configProvider.resolve<ResolvedApiQueryConfig>(this.app, apiQueryConfigProvider);\n\n if (!config) {\n throw new RuntimeException(\n 'Invalid \"config/apiquery.ts\" file. Make sure you are using the \"defineConfig\" method',\n );\n }\n\n extendModelQueryBuilderWithRequest(ModelQueryBuilder);\n extendModelQueryBuilderWithSortsQuery(ModelQueryBuilder, config);\n extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);\n extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);\n }\n}\n\ndeclare module '@adonisjs/lucid/orm' {\n interface ModelQueryBuilder {\n withRequest(request: Request): this;\n $apiQueryBuilderRequest: ApiQueryBuilderRequest;\n\n allowedSorts(...sorts: (AllowedSort<LucidModel> | string)[]): this;\n allowedSorts(sorts: (AllowedSort<LucidModel> | string)[]): this;\n defaultSort(...sorts: (AllowedSort<LucidModel> | string)[]): this;\n defaultSort(sorts: (AllowedSort<LucidModel> | string)[]): this;\n\n allowedFilters(...filters: (AllowedFilter<LucidModel> | string)[]): this;\n allowedFilters(filters: (AllowedFilter<LucidModel> | string)[]): this;\n\n allowedIncludes(...includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;\n allowedIncludes(includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;\n }\n}\n\ndeclare module '@adonisjs/lucid/types/model' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ModelQueryBuilderContract<Model extends LucidModel, Result = InstanceType<Model>> {\n withRequest(request: Request): this;\n\n allowedSorts(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n\n allowedFilters(...filters: (AllowedFilter<Model> | ExtractKeys<ModelAttributes<InstanceType<Model
|
|
1
|
+
{"version":3,"sources":["../../providers/api_query_provider.ts"],"sourcesContent":["import { configProvider } from '@adonisjs/core';\nimport { RuntimeException } from '@adonisjs/core/exceptions';\nimport { type Request } from '@adonisjs/core/http';\nimport { type ApplicationService } from '@adonisjs/core/types';\nimport { ModelQueryBuilder } from '@adonisjs/lucid/orm';\nimport { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Collection } from 'collect.js';\nimport { type AllowedFilter } from '../src/allowed_filter.js';\nimport { type AllowedInclude } from '../src/allowed_include.js';\nimport { type AllowedSort } from '../src/allowed_sort.js';\nimport { type ApiQueryBuilderRequest } from '../src/api_query_builder_request.js';\nimport {\n type ApiQueryConfig,\n type ExtractKeys,\n type HintedString,\n type ResolvedApiQueryConfig,\n type SortUnionKeyParams,\n} from '../src/types.js';\n\nexport default class ApiQueryProvider {\n public constructor(protected app: ApplicationService) {}\n\n public async boot(): Promise<void> {\n const { extendModelQueryBuilderWithRequest } = await import('../src/bindings/api_query_request.js');\n const { extendModelQueryBuilderWithSortsQuery } = await import('../src/bindings/sorts_query.js');\n const { extendModelQueryBuilderWithFiltersQuery } = await import('../src/bindings/filters_query.js');\n const { extendModelQueryBuilderWithIncludesQuery } = await import('../src/bindings/includes_query.js');\n const apiQueryConfigProvider = this.app.config.get<ApiQueryConfig>('apiquery');\n const config = await configProvider.resolve<ResolvedApiQueryConfig>(this.app, apiQueryConfigProvider);\n\n if (!config) {\n throw new RuntimeException(\n 'Invalid \"config/apiquery.ts\" file. Make sure you are using the \"defineConfig\" method',\n );\n }\n\n extendModelQueryBuilderWithRequest(ModelQueryBuilder);\n extendModelQueryBuilderWithSortsQuery(ModelQueryBuilder, config);\n extendModelQueryBuilderWithFiltersQuery(ModelQueryBuilder, config);\n extendModelQueryBuilderWithIncludesQuery(ModelQueryBuilder, config);\n }\n}\n\ndeclare module '@adonisjs/lucid/orm' {\n interface ModelQueryBuilder {\n withRequest(request: Request): this;\n $apiQueryBuilderRequest: ApiQueryBuilderRequest;\n\n allowedSorts(...sorts: (AllowedSort<LucidModel> | string)[]): this;\n allowedSorts(sorts: (AllowedSort<LucidModel> | string)[]): this;\n defaultSort(...sorts: (AllowedSort<LucidModel> | string)[]): this;\n defaultSort(sorts: (AllowedSort<LucidModel> | string)[]): this;\n\n allowedFilters(...filters: (AllowedFilter<LucidModel> | string)[]): this;\n allowedFilters(filters: (AllowedFilter<LucidModel> | string)[]): this;\n\n allowedIncludes(...includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;\n allowedIncludes(includes: (Collection<AllowedInclude<LucidModel>> | string)[]): this;\n }\n}\n\ndeclare module '@adonisjs/lucid/types/model' {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n interface ModelQueryBuilderContract<Model extends LucidModel, Result = InstanceType<Model>> {\n withRequest(request: Request): this;\n\n allowedSorts(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n allowedSorts(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n defaultSort(...sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n defaultSort(sorts: (AllowedSort<Model> | HintedString<SortUnionKeyParams<Model>>)[]): this;\n\n allowedFilters(\n ...filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[]\n ): this;\n allowedFilters(\n filters: (AllowedFilter<Model> | HintedString<ExtractKeys<ModelAttributes<InstanceType<Model>>>>)[],\n ): this;\n\n allowedIncludes(\n ...includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[]\n ): this;\n allowedIncludes(\n includes: (Collection<AllowedInclude<Model>> | HintedString<ExtractModelRelations<InstanceType<Model>>>)[],\n ): this;\n }\n}\n"],"mappings":";AAAA,SAAS,sBAAsB;AAC/B,SAAS,wBAAwB;AAGjC,SAAS,yBAAyB;AAgBlC,IAAqB,mBAArB,MAAsC;AAAA,EAC7B,YAAsB,KAAyB;AAAzB;AAAA,EAA0B;AAAA,EAEvD,MAAa,OAAsB;AACjC,UAAM,EAAE,mCAAmC,IAAI,MAAM,OAAO,kCAAsC;AAClG,UAAM,EAAE,sCAAsC,IAAI,MAAM,OAAO,4BAAgC;AAC/F,UAAM,EAAE,wCAAwC,IAAI,MAAM,OAAO,8BAAkC;AACnG,UAAM,EAAE,yCAAyC,IAAI,MAAM,OAAO,+BAAmC;AACrG,UAAM,yBAAyB,KAAK,IAAI,OAAO,IAAoB,UAAU;AAC7E,UAAM,SAAS,MAAM,eAAe,QAAgC,KAAK,KAAK,sBAAsB;AAEpG,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAEA,uCAAmC,iBAAiB;AACpD,0CAAsC,mBAAmB,MAAM;AAC/D,4CAAwC,mBAAmB,MAAM;AACjE,6CAAyC,mBAAmB,MAAM;AAAA,EACpE;AACF;","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AllowedSort,
|
|
3
3
|
InvalidSortQuery
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3ITWUZL5.js";
|
|
5
5
|
import "./chunk-XIRHVLVQ.js";
|
|
6
6
|
|
|
7
7
|
// src/bindings/sorts_query.ts
|
|
@@ -60,4 +60,4 @@ var extendModelQueryBuilderWithSortsQuery = function(builder, config) {
|
|
|
60
60
|
export {
|
|
61
61
|
extendModelQueryBuilderWithSortsQuery
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=sorts_query-
|
|
63
|
+
//# sourceMappingURL=sorts_query-NJTC5UXX.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eienjs/adonisjs-api-query",
|
|
3
3
|
"description": "Easily build Lucid queries from API requests",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "1.1.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "./build/index.js",
|
|
7
7
|
"types": "./build/index.d.ts",
|
|
@@ -19,34 +19,34 @@
|
|
|
19
19
|
"@adonisjs/assembler": "^7.8.2",
|
|
20
20
|
"@adonisjs/core": "^6.17.2",
|
|
21
21
|
"@adonisjs/lucid": "^21.6.0",
|
|
22
|
-
"@commitlint/cli": "^19.8.
|
|
23
|
-
"@commitlint/config-conventional": "^19.8.
|
|
24
|
-
"@dpaskhin/unique": "^1.0.0",
|
|
22
|
+
"@commitlint/cli": "^19.8.1",
|
|
23
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
25
24
|
"@japa/assert": "^4.0.1",
|
|
26
25
|
"@japa/file-system": "^2.3.2",
|
|
27
26
|
"@japa/runner": "^4.2.0",
|
|
28
|
-
"@nodecfdi/eslint-config": "^3.
|
|
27
|
+
"@nodecfdi/eslint-config": "^3.2.1",
|
|
29
28
|
"@nodecfdi/prettier-config": "^1.4.1",
|
|
30
29
|
"@nodecfdi/tsconfig": "^1.7.4",
|
|
31
30
|
"@poppinss/hooks": "^7.2.5",
|
|
32
|
-
"@swc/core": "^1.11.
|
|
33
|
-
"@types/luxon": "^3.
|
|
34
|
-
"@types/node": "^22.
|
|
31
|
+
"@swc/core": "^1.11.24",
|
|
32
|
+
"@types/luxon": "^3.6.2",
|
|
33
|
+
"@types/node": "^22.15.17",
|
|
35
34
|
"adonis-lucid-soft-deletes": "^2.1.0",
|
|
36
35
|
"auto-changelog": "^2.5.0",
|
|
37
|
-
"better-sqlite3": "^11.
|
|
36
|
+
"better-sqlite3": "^11.10.0",
|
|
38
37
|
"c8": "^10.1.3",
|
|
39
38
|
"del-cli": "^6.0.0",
|
|
40
|
-
"
|
|
39
|
+
"enforce-unique": "^1.3.0",
|
|
40
|
+
"eslint": "^9.26.0",
|
|
41
41
|
"husky": "^9.1.7",
|
|
42
42
|
"is-in-ci": "^1.0.0",
|
|
43
|
-
"luxon": "^3.
|
|
43
|
+
"luxon": "^3.6.1",
|
|
44
44
|
"native-copyfiles": "^0.3.2",
|
|
45
45
|
"np": "^10.2.0",
|
|
46
46
|
"prettier": "^3.5.3",
|
|
47
47
|
"ts-node-maintained": "^10.9.5",
|
|
48
48
|
"tsup": "^8.4.0",
|
|
49
|
-
"typescript": "
|
|
49
|
+
"typescript": "^5.8.3"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"collect.js": "^4.36.1"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/enums/filter_operator.ts","../src/allowed_filter.ts","../src/filters/filters_exact.ts","../src/filters/filters_partial.ts","../src/filters/filters_begin_with_strict.ts","../src/filters/filters_callback.ts","../src/filters/filters_ends_with_strict.ts","../src/filters/filters_operator.ts","../src/filters/filters_trashed.ts","../src/exceptions/invalid_filter_query.ts"],"sourcesContent":["export const FilterOperator = {\n Dynamic: '',\n Equal: '=',\n LessThan: '<',\n GreaterThan: '>',\n LessThanOrEqual: '<=',\n GreaterThanOrEqual: '>=',\n NotEqual: '<>',\n} as const;\n\nexport type FilterOperator = (typeof FilterOperator)[keyof typeof FilterOperator];\n","import { type LucidModel, type ModelAttributes, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { Collection } from 'collect.js';\nimport { ApiQueryBuilderRequest } from './api_query_builder_request.js';\nimport { type FilterOperator } from './enums/filter_operator.js';\nimport { FiltersBeginWithStrict } from './filters/filters_begin_with_strict.js';\nimport { FiltersCallback } from './filters/filters_callback.js';\nimport { FiltersEndsWithStrict } from './filters/filters_ends_with_strict.js';\nimport { FiltersExact } from './filters/filters_exact.js';\nimport { FiltersOperator } from './filters/filters_operator.js';\nimport { FiltersPartial } from './filters/filters_partial.js';\nimport { FiltersTrashed } from './filters/filters_trashed.js';\nimport { type ExtractKeys, type Filter } from './types.js';\n\nexport class AllowedFilter<Model extends LucidModel> {\n public static setFilterArrayValueDelimiter(delimiter?: string): void {\n if (delimiter) {\n ApiQueryBuilderRequest.setFilterArrayValueDelimiter(delimiter);\n }\n }\n\n public static exact<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersExact<Model>(addRelationConstraint), internalName);\n }\n\n public static partial<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersPartial<Model>(addRelationConstraint), internalName);\n }\n\n public static beginsWithStrict<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersBeginWithStrict<Model>(addRelationConstraint), internalName);\n }\n\n public static endsWithStrict<Model extends LucidModel>(\n name: string,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersEndsWithStrict<Model>(addRelationConstraint), internalName);\n }\n\n public static callback<Model extends LucidModel>(\n name: string,\n callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, new FiltersCallback<Model>(callback), internalName);\n }\n\n public static trashed<Model extends LucidModel>(\n name = 'trashed',\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ): AllowedFilter<Model> {\n return new AllowedFilter<Model>(name, new FiltersTrashed<Model>(), internalName);\n }\n\n public static custom<Model extends LucidModel>(\n name: string,\n filterClass: Filter<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(name, filterClass, internalName);\n }\n\n public static operator<Model extends LucidModel>(\n name: string,\n filterOperator: FilterOperator,\n boolean: 'and' | 'or' = 'and',\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n addRelationConstraint = true,\n arrayValueDelimiter?: string,\n ): AllowedFilter<Model> {\n this.setFilterArrayValueDelimiter(arrayValueDelimiter);\n\n return new AllowedFilter<Model>(\n name,\n new FiltersOperator<Model>(addRelationConstraint, filterOperator, boolean),\n internalName,\n );\n }\n\n protected name: string;\n\n protected filterClass: Filter<Model>;\n\n protected internalName: string;\n\n protected ignored: Collection<unknown>;\n\n protected default: unknown;\n\n protected $hasDefault = false;\n\n protected nullable = false;\n\n public constructor(\n name: string,\n filterClass: Filter<Model>,\n internalName?: ExtractKeys<ModelAttributes<InstanceType<Model>>>,\n ) {\n this.name = name;\n this.filterClass = filterClass;\n this.ignored = new Collection();\n this.internalName = internalName ?? this.name;\n }\n\n public filter(query: ModelQueryBuilderContract<Model>, value: unknown): void {\n const valueToFilter = this.resolveValueForFiltering(value);\n if (!this.nullable && valueToFilter === null) {\n return;\n }\n\n this.filterClass.handle(query, valueToFilter, this.internalName);\n }\n\n public getFilterClass(): Filter<Model> {\n return this.filterClass;\n }\n\n public getName(): string {\n return this.name;\n }\n\n public isForFilter(filterName: string): boolean {\n return this.name === filterName;\n }\n\n public ignore(...values: unknown[]): this {\n this.ignored = this.ignored.merge(values).flatten();\n\n return this;\n }\n\n public getIgnored(): unknown[] {\n return this.ignored.toArray();\n }\n\n public getInternalName(): string {\n return this.internalName;\n }\n\n public setDefault(defaultValue: unknown): this {\n this.default = defaultValue;\n this.$hasDefault = true;\n\n if (defaultValue === null) {\n this.setNullable(true);\n }\n\n return this;\n }\n\n public getDefault(): unknown {\n return this.default;\n }\n\n public hasDefault(): boolean {\n return this.$hasDefault;\n }\n\n public setNullable(nullable = true): this {\n this.nullable = nullable;\n\n return this;\n }\n\n public unsetDefault(): this {\n this.$hasDefault = false;\n this.default = undefined;\n\n return this;\n }\n\n protected resolveValueForFiltering(value: unknown): StrictValuesWithoutRaw | null {\n if (Array.isArray(value)) {\n const remainingProperties = value.map((subValue) => this.resolveValueForFiltering(subValue));\n\n return remainingProperties.length === 0 ? null : (remainingProperties as StrictValuesWithoutRaw);\n }\n\n return this.ignored.contains(value) ? null : (value as StrictValuesWithoutRaw);\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport collect, { type Collection } from 'collect.js';\nimport { type Filter } from '../types.js';\n\nexport class FiltersExact<Model extends LucidModel> implements Filter<Model> {\n protected relationConstraints: string[] = [];\n\n public constructor(protected addRelationConstraint = true) {}\n\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n if (this.addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n void query.whereIn(this.qualifyColumn(query, property), value);\n\n return;\n }\n\n if (value === null) {\n void query.whereNull(this.qualifyColumn(query, property));\n\n return;\n }\n\n void query.where(this.qualifyColumn(query, property), '=', value);\n }\n\n protected qualifyColumn(query: ModelQueryBuilderContract<Model, InstanceType<Model>>, column: string): string {\n if (column.includes('.')) {\n return column;\n }\n\n return `${query.model.table}.${query.model.$getColumn(column)?.columnName}`;\n }\n\n protected isRelationProperty(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n property: string,\n ): boolean {\n if (!property.includes('.')) {\n return false;\n }\n\n if (this.relationConstraints.includes(property)) {\n return false;\n }\n\n const firstRelationShip = property.split('.')[0];\n\n return query.model.$relationsDefinitions.has(firstRelationShip);\n }\n\n protected withRelationConstraint(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n const [relation, relationProperty] = collect(property.split('.')).pipe((parts: Collection<string>) => [\n parts.except([parts.last()]).implode('.') as ExtractModelRelations<InstanceType<Model>>,\n parts.last(),\n ]);\n\n void query.whereHas(relation, (subQuery: ModelQueryBuilderContract<Model>) => {\n const columnName = this.qualifyColumn(query, relationProperty);\n this.relationConstraints.push(columnName);\n\n this.handle(subQuery, value, columnName);\n });\n }\n}\n","import { type DialectContract } from '@adonisjs/lucid/types/database';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersExact } from './filters_exact.js';\n\nexport class FiltersPartial<Model extends LucidModel> extends FiltersExact<Model> implements Filter<Model> {\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw | null,\n property: string,\n ): void {\n if (this.addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n if (value.filter((item) => item.toString().length > 0).length === 0) {\n return;\n }\n\n void query.where((subQuery) => {\n for (const partialValue of value.filter((item) => item.toString().length > 0)) {\n const [innerSql, innerBindings] = this.getWhereRawParameters(\n partialValue,\n this.parsePropertyToColumn(subQuery, property),\n );\n void subQuery.orWhereRaw(innerSql, innerBindings);\n }\n });\n\n return;\n }\n\n const [sql, bindings] = this.getWhereRawParameters(value, this.parsePropertyToColumn(query, property));\n void query.whereRaw(sql, bindings);\n }\n\n protected parsePropertyToColumn(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n property: string,\n ): string {\n if (property.includes('.')) {\n return property;\n }\n\n return query.model.$getColumn(property)?.columnName ?? property;\n }\n\n protected getDatabaseDialect(query: ModelQueryBuilderContract<Model, InstanceType<Model>>): DialectContract['name'] {\n return query.client.dialect.name;\n }\n\n protected getWhereRawParameters(value: StrictValuesWithoutRaw | null, property: string): [string, string[]] {\n const resolvedValue = `${value}`.toLowerCase();\n\n return [`LOWER(??) LIKE ?`, [property, `%${FiltersPartial.escapeLike(resolvedValue)}%`]];\n }\n\n protected static escapeLike(value: string): string {\n return value\n .replaceAll('\\\\', '\\\\\\\\')\n .replaceAll('_', String.raw`\\\\_`)\n .replaceAll('%', String.raw`\\\\%`);\n }\n}\n","import { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersPartial } from './filters_partial.js';\n\nexport class FiltersBeginWithStrict<Model extends LucidModel> extends FiltersPartial<Model> implements Filter<Model> {\n protected getWhereRawParameters(value: StrictValuesWithoutRaw, property: string): [string, string[]] {\n return [`${property} LIKE ?`, [`${FiltersBeginWithStrict.escapeLike(value.toString())}%`]];\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type Filter } from '../types.js';\n\nexport class FiltersCallback<Model extends LucidModel> implements Filter<Model> {\n public constructor(\n private callback: (query: ModelQueryBuilderContract<Model>, value: unknown, property: string) => void,\n ) {}\n\n public handle(query: ModelQueryBuilderContract<Model, InstanceType<Model>>, value: unknown, property: string): void {\n this.callback(query, value, property);\n }\n}\n","import { type LucidModel } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\nimport { FiltersPartial } from './filters_partial.js';\n\nexport class FiltersEndsWithStrict<Model extends LucidModel> extends FiltersPartial<Model> implements Filter<Model> {\n protected getWhereRawParameters(value: StrictValuesWithoutRaw, property: string): [string, string[]] {\n return [`${property} LIKE ?`, [`%${FiltersEndsWithStrict.escapeLike(value.toString())}`]];\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { FilterOperator } from '../enums/filter_operator.js';\nimport { type Filter } from '../types.js';\nimport { substrReplace } from '../utils/helpers.js';\nimport { FiltersExact } from './filters_exact.js';\n\nexport class FiltersOperator<Model extends LucidModel> extends FiltersExact<Model> implements Filter<Model> {\n public constructor(\n protected $addRelationConstraint: boolean,\n protected $filterOperator: FilterOperator,\n protected $boolean: 'and' | 'or',\n ) {\n super($addRelationConstraint);\n }\n\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw,\n property: string,\n ): void {\n let filterOperator = this.$filterOperator;\n\n if (this.$addRelationConstraint && this.isRelationProperty(query, property)) {\n this.withRelationConstraint(query, value, property);\n\n return;\n }\n\n if (Array.isArray(value)) {\n const items = value;\n\n void query.where((subQuery) => {\n for (const item of items) {\n this.handle(subQuery, item, property);\n }\n });\n\n return;\n }\n\n if (filterOperator === FilterOperator.Dynamic) {\n filterOperator = this.getDynamicFilterOperator(value.toString());\n value = this.removeDynamicFilterOperatorFromValue(value.toString(), filterOperator);\n }\n\n if (this.$boolean === 'and') {\n void query.where(this.qualifyColumn(query, property), filterOperator, value);\n\n return;\n }\n\n void query.orWhere(this.qualifyColumn(query, property), filterOperator, value);\n }\n\n protected getDynamicFilterOperator(value: string): FilterOperator {\n let filterOperator: FilterOperator = FilterOperator.Equal;\n\n for (const filterOperatorCase of Object.values(FilterOperator)) {\n if (value.startsWith(filterOperatorCase) && filterOperatorCase !== FilterOperator.Dynamic) {\n filterOperator = filterOperatorCase;\n }\n }\n\n return filterOperator;\n }\n\n protected removeDynamicFilterOperatorFromValue(value: string, filterOperator: FilterOperator): string {\n if (value.includes(filterOperator)) {\n value = substrReplace(value, '', 0, filterOperator.length);\n }\n\n return value;\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type StrictValuesWithoutRaw } from '@adonisjs/lucid/types/querybuilder';\nimport { type Filter } from '../types.js';\n\nexport class FiltersTrashed<Model extends LucidModel> implements Filter<Model> {\n public handle(\n query: ModelQueryBuilderContract<Model, InstanceType<Model>>,\n value: StrictValuesWithoutRaw,\n _property: string,\n ): void {\n if (!('withTrashed' in query && 'onlyTrashed' in query)) {\n return;\n }\n\n const queryWithSoftDeletes = query as {\n withTrashed(): ModelQueryBuilderContract<Model>;\n onlyTrashed(): ModelQueryBuilderContract<Model>;\n };\n\n if (value === 'with') {\n void queryWithSoftDeletes.withTrashed();\n\n return;\n }\n\n if (value === 'only') {\n void queryWithSoftDeletes.onlyTrashed();\n }\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidFilterQuery extends InvalidQuery {\n public constructor(\n public readonly unknownFilters: string[],\n public readonly allowedFilters: string[],\n ) {\n const notAllowed = unknownFilters.join(', ');\n const allowed = allowedFilters.join(', ');\n const message = `Requested filter(s) \\`${notAllowed}\\` are not allowed. Allowed filter(s) are \\`${allowed}\\``;\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static filtersNotAllowed(unknownFilters: string[], allowedFilters: string[]): InvalidFilterQuery {\n return new InvalidFilterQuery(unknownFilters, allowedFilters);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/allowed_include.ts","../src/includes/included_callback.ts","../src/includes/included_count.ts","../src/includes/included_relationship.ts","../src/exceptions/invalid_include_query.ts"],"sourcesContent":["import app from '@adonisjs/core/services/app';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { Collection } from 'collect.js';\nimport { IncludedCallback } from './includes/included_callback.js';\nimport { IncludedCount } from './includes/included_count.js';\nimport { IncludedRelationship } from './includes/included_relationship.js';\nimport { type Include } from './types.js';\n\nexport class AllowedInclude<Model extends LucidModel> {\n public static relationship<ParentModel extends LucidModel>(\n name: string,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n internalName = internalName ?? name;\n\n return IncludedRelationship.getIndividualRelationshipPathsFromInclude(internalName)\n .zip(IncludedRelationship.getIndividualRelationshipPathsFromInclude(name).toArray<string>())\n .reduce((includes, args) => {\n const [relationship, alias] = args;\n\n includes = includes!.push(\n new AllowedInclude<ParentModel>(alias, new IncludedRelationship<ParentModel>(), relationship),\n );\n\n if (!relationship.includes('.')) {\n const countSuffix = app.config.get<string>('apiquery.countSuffix', 'Count');\n for (const countAllowedInclude of AllowedInclude.count(\n `${alias}${countSuffix}`,\n `${relationship}${countSuffix}`,\n )) {\n includes = includes.push(countAllowedInclude);\n }\n }\n\n return includes;\n }, new Collection<AllowedInclude<ParentModel>>()) as Collection<AllowedInclude<ParentModel>>;\n }\n\n public static count<ParentModel extends LucidModel>(\n name: string,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([new AllowedInclude<ParentModel>(name, new IncludedCount<ParentModel>(), internalName)]);\n }\n\n public static callback<ParentModel extends LucidModel, RelatedModel extends LucidModel>(\n name: string,\n callback: (\n query:\n | ModelRelations<RelatedModel, ParentModel>['builder']\n | ModelRelations<RelatedModel, ParentModel>['subQuery'],\n ) => void,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([\n new AllowedInclude<ParentModel>(name, new IncludedCallback<ParentModel, RelatedModel>(callback), internalName),\n ]);\n }\n\n public static custom<ParentModel extends LucidModel>(\n name: string,\n includeClass: Include<ParentModel>,\n internalName?: string,\n ): Collection<AllowedInclude<ParentModel>> {\n return new Collection([new AllowedInclude<ParentModel>(name, includeClass, internalName)]);\n }\n\n protected internalName: string;\n\n protected name: string;\n\n protected includeClass: Include<Model>;\n\n public constructor(name: string, includeClass: Include<Model>, internalName?: string) {\n this.name = name;\n this.includeClass = includeClass;\n this.internalName = internalName ?? this.name;\n }\n\n public include(query: ModelQueryBuilderContract<Model>): void {\n // if ('getRequestedFieldsForRelatedTable' in this.includeClass) {\n // this.includeClass.getRequestedFieldsForRelatedTable = (relationship: string) => {\n // return query.getRequestedFieldsForRelatedTable(relationship);\n // };\n // }\n\n this.includeClass.handle(query, this.internalName);\n }\n\n public getName(): string {\n return this.name;\n }\n\n public isForInclude(includeName: string): boolean {\n return this.name === includeName;\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations, type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Include } from '../types.js';\n\nexport class IncludedCallback<ParentModel extends LucidModel, RelatedModel extends LucidModel>\n implements Include<ParentModel>\n{\n public constructor(\n public readonly callback: (\n query:\n | ModelRelations<RelatedModel, ParentModel>['builder']\n | ModelRelations<RelatedModel, ParentModel>['subQuery'],\n ) => void,\n ) {}\n\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, include: string): void {\n void query.preload(include as ExtractModelRelations<InstanceType<ParentModel>>, this.callback);\n }\n}\n","import app from '@adonisjs/core/services/app';\nimport { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations } from '@adonisjs/lucid/types/relations';\nimport { type Include } from '../types.js';\n\nexport class IncludedCount<ParentModel extends LucidModel> implements Include<ParentModel> {\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, count: string): void {\n const suffix = app.config.get<string>('apiquery.countSuffix', 'Count');\n const relation = (count.endsWith(suffix) ? count.slice(0, -suffix.length) : count) as ExtractModelRelations<\n InstanceType<ParentModel>\n >;\n\n void query.withCount(relation);\n }\n}\n","import { type LucidModel, type ModelQueryBuilderContract } from '@adonisjs/lucid/types/model';\nimport { type ExtractModelRelations, type ModelRelations } from '@adonisjs/lucid/types/relations';\nimport { Collection } from 'collect.js';\nimport { type Include } from '../types.js';\n\nexport class IncludedRelationship<ParentModel extends LucidModel> implements Include<ParentModel> {\n public static getIndividualRelationshipPathsFromInclude(include: string): Collection<string> {\n const originalInclude = new Collection(include.split('.'));\n\n return originalInclude.reduce((includes, relationship) => {\n const includesArray = includes ?? new Collection<string>();\n\n if (includesArray.isEmpty()) {\n return includesArray.push(relationship);\n }\n\n return includesArray.push(`${includes!.last()}.${relationship}`);\n }, new Collection<string>()) as Collection<string>;\n }\n\n public getRequestedFieldsForRelatedTable?: (relationship: string) => string[];\n\n public handle(query: ModelQueryBuilderContract<ParentModel, InstanceType<ParentModel>>, relationship: string): void {\n const relatedTables = relationship.split('.');\n\n if (relatedTables.length === 0) {\n return;\n }\n\n const [relation, ...rest] = relatedTables;\n\n if (!query.model.$hasRelation(relation)) {\n return;\n }\n\n void query.preload(relation as ExtractModelRelations<InstanceType<ParentModel>>, (subQuery) => {\n if (this.getRequestedFieldsForRelatedTable !== undefined) {\n const fields = this.getRequestedFieldsForRelatedTable(relation);\n if (fields.length > 0) {\n void subQuery.select(fields);\n }\n }\n\n this.buildNestedQuery(rest, subQuery, relation);\n });\n }\n\n private buildNestedQuery<SubParentModel extends LucidModel, SubRelatedModel extends LucidModel>(\n relatedTables: string[],\n subQuery:\n | ModelRelations<SubRelatedModel, SubParentModel>['builder']\n | ModelRelations<SubRelatedModel, SubParentModel>['subQuery'],\n parent = '',\n ): void {\n if (relatedTables.length === 0) {\n return;\n }\n\n const [relation, ...rest] = relatedTables;\n\n if (!subQuery.model.$hasRelation(relation)) {\n return;\n }\n\n void subQuery.preload(relation as ExtractModelRelations<InstanceType<SubRelatedModel>>, (nestedQuery) => {\n const fullRelationName = parent === '' ? relation : `${parent}.${relation}`;\n if (this.getRequestedFieldsForRelatedTable !== undefined) {\n const fields = this.getRequestedFieldsForRelatedTable(fullRelationName);\n if (fields.length > 0) {\n void nestedQuery.select(fields);\n }\n }\n\n this.buildNestedQuery(rest, nestedQuery, fullRelationName);\n });\n }\n}\n","import { ResponseStatus } from '@adonisjs/core/http';\nimport { InvalidQuery } from './invalid_query.js';\n\nexport class InvalidIncludeQuery extends InvalidQuery {\n public constructor(\n public readonly unknownIncludes: string[],\n public readonly allowedIncludes: string[],\n ) {\n const notAllowed = unknownIncludes.join(', ');\n let message = `Requested include(s) \\`${notAllowed}\\` are not allowed. `;\n\n if (allowedIncludes.length > 0) {\n const allowed = allowedIncludes.join(', ');\n message = `${message}Allowed include(s) are \\`${allowed}\\``;\n } else {\n message = `${message}There are no allowed includes`;\n }\n\n super(message, { status: ResponseStatus.BadRequest });\n }\n\n public static includesNotAllowed(unknownIncludes: string[], allowedIncludes: string[]): InvalidIncludeQuery {\n return new InvalidIncludeQuery(unknownIncludes, allowedIncludes);\n }\n}\n"],"mappings":"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","names":["app","Collection","app","Collection"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|