From 01f1065fffcf3c0a3a753793d3c67ccf32d71a30 Mon Sep 17 00:00:00 2001 From: tada5hi Date: Thu, 20 Oct 2022 13:43:01 +0200 Subject: [PATCH] fix: add missing generic type argument for parameters --- src/parameter/fields/build.ts | 5 +++-- src/parameter/fields/parse.ts | 5 +++-- src/parameter/filters/build.ts | 3 ++- src/parameter/filters/parse.ts | 7 ++++--- src/parameter/pagination/build.ts | 3 ++- src/parameter/pagination/parse.ts | 5 ++++- src/parameter/relations/build.ts | 5 +++-- src/parameter/relations/parse.ts | 3 ++- src/parameter/sort/build.ts | 7 +++++-- src/parameter/sort/parse.ts | 7 +++++-- src/type.ts | 1 + test/unit/fields.spec.ts | 2 +- 12 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/parameter/fields/build.ts b/src/parameter/fields/build.ts index 014a2aa0..08ffc7dc 100644 --- a/src/parameter/fields/build.ts +++ b/src/parameter/fields/build.ts @@ -6,10 +6,11 @@ */ import { createMerger } from 'smob'; +import { ObjectLiteral } from '../../type'; import { FieldsBuildInput } from './type'; import { flattenToKeyPathArray, groupArrayByKeyPath } from '../../utils'; -export function buildQueryFields( +export function buildQueryFields( input?: FieldsBuildInput, ) : Record | string[] { if (typeof input === 'undefined') { @@ -26,7 +27,7 @@ export function buildQueryFields( return data; } -export function mergeQueryFields( +export function mergeQueryFields( target: Record | string[], source: Record | string[], ): Record | string[] { diff --git a/src/parameter/fields/parse.ts b/src/parameter/fields/parse.ts index ef866d52..8a1031b9 100644 --- a/src/parameter/fields/parse.ts +++ b/src/parameter/fields/parse.ts @@ -6,6 +6,7 @@ */ import { merge } from 'smob'; +import { ObjectLiteral } from '../../type'; import { applyMapping, buildFieldWithPath, groupArrayByKeyPath, hasOwnProperty, isFieldPathAllowedByRelations, } from '../../utils'; @@ -34,9 +35,9 @@ function buildReverseRecord( return output; } -export function parseQueryFields( +export function parseQueryFields( data: unknown, - options?: FieldsParseOptions, + options?: FieldsParseOptions, ) : FieldsParseOutput { options ??= {}; diff --git a/src/parameter/filters/build.ts b/src/parameter/filters/build.ts index 6e1332df..5574711e 100644 --- a/src/parameter/filters/build.ts +++ b/src/parameter/filters/build.ts @@ -6,6 +6,7 @@ */ import { merge } from 'smob'; +import { ObjectLiteral } from '../../type'; import { FiltersBuildInput } from './type'; import { FilterOperator } from './constants'; import { isFilterOperatorConfig } from './utils'; @@ -21,7 +22,7 @@ const OperatorWeight = { [FilterOperator.IN]: 13105, }; -export function buildQueryFilters( +export function buildQueryFilters( data?: FiltersBuildInput, ) : Record { if (typeof data === 'undefined') { diff --git a/src/parameter/filters/parse.ts b/src/parameter/filters/parse.ts index 74133b91..988cca2a 100644 --- a/src/parameter/filters/parse.ts +++ b/src/parameter/filters/parse.ts @@ -5,6 +5,7 @@ * view the LICENSE file that was distributed with this source code. */ +import { ObjectLiteral } from '../../type'; import { FieldDetails, applyMapping, @@ -55,8 +56,8 @@ function transformFiltersParseOutput(output: FiltersParseOutput) { return output; } -function buildDefaultFiltersParseOutput( - options: FiltersParseOptions, +function buildDefaultFiltersParseOutput( + options: FiltersParseOptions, input?: Record, ) : FiltersParseOutput { const inputKeys = Object.keys(input || {}); @@ -108,7 +109,7 @@ function buildDefaultFiltersParseOutput( return input ? Object.values(input) : []; } -export function parseQueryFilters>( +export function parseQueryFilters( data: unknown, options?: FiltersParseOptions, ) : FiltersParseOutput { diff --git a/src/parameter/pagination/build.ts b/src/parameter/pagination/build.ts index 439dae5b..124c35e2 100644 --- a/src/parameter/pagination/build.ts +++ b/src/parameter/pagination/build.ts @@ -6,9 +6,10 @@ */ import { merge } from 'smob'; +import { ObjectLiteral } from '../../type'; import { PaginationBuildInput } from './type'; -export function mergeQueryPagination( +export function mergeQueryPagination( target?: PaginationBuildInput, source?: PaginationBuildInput, ) : PaginationBuildInput { diff --git a/src/parameter/pagination/parse.ts b/src/parameter/pagination/parse.ts index e84e1494..7d3e250e 100644 --- a/src/parameter/pagination/parse.ts +++ b/src/parameter/pagination/parse.ts @@ -9,7 +9,10 @@ import { PaginationParseOptions, PaginationParseOutput } from './type'; // -------------------------------------------------- -function finalizePagination(data: PaginationParseOutput, options: PaginationParseOptions) : PaginationParseOutput { +function finalizePagination( + data: PaginationParseOutput, + options: PaginationParseOptions, +) : PaginationParseOutput { if (typeof options.maxLimit !== 'undefined') { if ( typeof data.limit === 'undefined' || diff --git a/src/parameter/relations/build.ts b/src/parameter/relations/build.ts index 56599214..d3091dd7 100644 --- a/src/parameter/relations/build.ts +++ b/src/parameter/relations/build.ts @@ -6,10 +6,11 @@ */ import { mergeArrays } from 'smob'; +import { ObjectLiteral } from '../../type'; import { RelationsBuildInput } from './type'; import { flattenToKeyPathArray } from '../../utils'; -export function buildQueryRelations( +export function buildQueryRelations( input?: RelationsBuildInput, ) : string[] { if (typeof input === 'undefined') { @@ -19,7 +20,7 @@ export function buildQueryRelations( return flattenToKeyPathArray(input); } -export function mergeQueryRelations( +export function mergeQueryRelations( target?: string[], source?: string[], ) : string[] { diff --git a/src/parameter/relations/parse.ts b/src/parameter/relations/parse.ts index dfb1ecac..1385c3d7 100644 --- a/src/parameter/relations/parse.ts +++ b/src/parameter/relations/parse.ts @@ -6,6 +6,7 @@ */ import minimatch from 'minimatch'; +import { ObjectLiteral } from '../../type'; import { applyMapping, hasOwnProperty } from '../../utils'; import { isPathCoveredByParseOptionsAllowed } from '../utils'; @@ -14,7 +15,7 @@ import { includeParents } from './utils'; // -------------------------------------------------- -export function parseQueryRelations = Record>( +export function parseQueryRelations( data: unknown, options?: RelationsParseOptions, ): RelationsParseOutput { diff --git a/src/parameter/sort/build.ts b/src/parameter/sort/build.ts index 0c9aa36f..80c4cdc2 100644 --- a/src/parameter/sort/build.ts +++ b/src/parameter/sort/build.ts @@ -6,10 +6,13 @@ */ import { mergeArrays } from 'smob'; +import { ObjectLiteral } from '../../type'; import { SortBuildInput, SortDirection } from './type'; import { flattenToKeyPathArray } from '../../utils'; -export function buildQuerySort(data?: SortBuildInput) { +export function buildQuerySort( + data?: SortBuildInput, +) { if (typeof data === 'undefined') { return []; } @@ -42,7 +45,7 @@ export function buildQuerySort(data?: SortBuildInput) { }); } -export function mergeQuerySort( +export function mergeQuerySort( target?: string[], source?: string[], ) { diff --git a/src/parameter/sort/parse.ts b/src/parameter/sort/parse.ts index 61251856..82e98887 100644 --- a/src/parameter/sort/parse.ts +++ b/src/parameter/sort/parse.ts @@ -5,6 +5,7 @@ * view the LICENSE file that was distributed with this source code. */ +import { ObjectLiteral } from '../../type'; import { applyMapping, buildFieldWithPath, flattenNestedObject, @@ -31,7 +32,9 @@ function isMultiDimensionalArray(arr: unknown) : arr is unknown[][] { return arr.length > 0 && Array.isArray(arr[0]); } -function buildDefaultSortParseOutput>(options: SortParseOptions) : SortParseOutput { +function buildDefaultSortParseOutput( + options: SortParseOptions, +) : SortParseOutput { if (options.default) { const output : SortParseOutput = []; @@ -59,7 +62,7 @@ function buildDefaultSortParseOutput>(options: Sor * @param data * @param options */ -export function parseQuerySort>( +export function parseQuerySort( data: unknown, options?: SortParseOptions, ) : SortParseOutput { diff --git a/src/type.ts b/src/type.ts index 5173b6ba..60712fa3 100644 --- a/src/type.ts +++ b/src/type.ts @@ -5,6 +5,7 @@ * view the LICENSE file that was distributed with this source code. */ +export type ObjectLiteral = Record; export type Flatten = Type extends Array ? Item : Type; export type OnlyScalar = T extends string | number | boolean | undefined | null ? T : never; export type OnlySingleObject = T extends { [key: string]: any } ? T : never; diff --git a/test/unit/fields.spec.ts b/test/unit/fields.spec.ts index 8af7ffbe..f88047eb 100644 --- a/test/unit/fields.spec.ts +++ b/test/unit/fields.spec.ts @@ -177,7 +177,7 @@ describe('src/fields/index.ts', () => { ] as FieldsParseOutput); // if multiple possibilities are available for request field, use default - data = parseQueryFields(['id'], { + data = parseQueryFields>(['id'], { allowed: { domain: ['id', 'name'], domain2: ['id', 'name'] }, default: { domain: ['id'], domain2: ['name']} });