@slickgrid-universal/graphql 5.10.2 → 5.12.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.
@@ -98,6 +98,6 @@ export declare class GraphqlService implements BackendService {
98
98
  */
99
99
  protected castFilterToColumnFilters(columnFilters: ColumnFilters | CurrentFilter[]): CurrentFilter[];
100
100
  /** Normalizes the search value according to field type. */
101
- protected normalizeSearchValue(fieldType: typeof FieldType[keyof typeof FieldType], searchValue: any): any;
101
+ protected normalizeSearchValue(fieldType: (typeof FieldType)[keyof typeof FieldType], searchValue: any): any;
102
102
  }
103
103
  //# sourceMappingURL=graphql.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphql.service.d.ts","sourceRoot":"","sources":["../../../src/services/graphql.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"graphql.service.d.ts","sourceRoot":"","sources":["../../../src/services/graphql.service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"graphqlQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/graphqlQueryBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAM1B,SAAS,CAAC,WAAW,EAAE,MAAM;IALzC,KAAK,EAAG,MAAM,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAM;IACjB,IAAI,EAAE,GAAG,CAAC;gBAGY,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAYtF;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAc1B;;;OAGG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAW9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAYlB,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM;IA4B3C,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAgB1C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG;CAWlC"}
1
+ {"version":3,"file":"graphqlQueryBuilder.d.ts","sourceRoot":"","sources":["../../../src/services/graphqlQueryBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,CAAC,OAAO,OAAO,mBAAmB;IAOpC,SAAS,CAAC,WAAW,EAAE,MAAM;IAN/B,KAAK,EAAG,MAAM,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE,GAAG,EAAE,CAAM;IACjB,IAAI,EAAE,GAAG,CAAC;gBAIE,WAAW,EAAE,MAAM,EAC7B,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAe7C;;;OAGG;IACH,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI;IAc1B;;;OAGG;IACH,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAY9B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,QAAQ,IAAI,MAAM;IAYlB,SAAS,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,MAAM;IA4B3C,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,GAAG;IAkB1C,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG;CAWlC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@slickgrid-universal/graphql",
3
- "version": "5.10.2",
3
+ "version": "5.12.0",
4
4
  "description": "GraphQL Service to sync a grid with a GraphQL backend server",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "types": "./dist/types/index.d.ts",
@@ -38,12 +38,12 @@
38
38
  "not dead"
39
39
  ],
40
40
  "dependencies": {
41
- "@slickgrid-universal/common": "~5.10.2",
42
- "@slickgrid-universal/utils": "~5.10.2"
41
+ "@slickgrid-universal/common": "~5.12.0",
42
+ "@slickgrid-universal/utils": "~5.12.0"
43
43
  },
44
44
  "funding": {
45
45
  "type": "ko_fi",
46
46
  "url": "https://ko-fi.com/ghiscoding"
47
47
  },
48
- "gitHead": "61dcfac0074bedede5bed92faa49c2d42d551f4c"
48
+ "gitHead": "d7e892ebc1727d7c83cc1e5cc80db8302eef4f63"
49
49
  }
@@ -20,13 +20,7 @@ import type {
20
20
  SlickGrid,
21
21
  SortDirectionString,
22
22
  } from '@slickgrid-universal/common';
23
- import {
24
- FieldType,
25
- mapOperatorType,
26
- mapOperatorByFieldType,
27
- OperatorType,
28
- SortDirection,
29
- } from '@slickgrid-universal/common';
23
+ import { FieldType, mapOperatorType, mapOperatorByFieldType, OperatorType, SortDirection } from '@slickgrid-universal/common';
30
24
  import { getHtmlStringOutput, stripTags } from '@slickgrid-universal/utils';
31
25
 
32
26
  import type {
@@ -56,7 +50,7 @@ export class GraphqlService implements BackendService {
56
50
  pagination: Pagination | undefined;
57
51
  defaultPaginationOptions: GraphqlPaginationOption = {
58
52
  first: DEFAULT_ITEMS_PER_PAGE,
59
- offset: 0
53
+ offset: 0,
60
54
  };
61
55
 
62
56
  /** Getter for the Column Definitions */
@@ -66,7 +60,7 @@ export class GraphqlService implements BackendService {
66
60
 
67
61
  /** Getter for the Grid Options pulled through the Grid Object */
68
62
  protected get _gridOptions(): GridOption {
69
- return this._grid?.getOptions() ?? {} as GridOption;
63
+ return this._grid?.getOptions() ?? ({} as GridOption);
70
64
  }
71
65
 
72
66
  /** Initialization of the service, which acts as a constructor */
@@ -151,14 +145,14 @@ export class GraphqlService implements BackendService {
151
145
 
152
146
  if (this.options.useCursor && this.options.paginationOptions) {
153
147
  datasetFilters = { ...this.options.paginationOptions };
154
- }
155
- else {
148
+ } else {
156
149
  const paginationOptions = this.options?.paginationOptions;
157
- datasetFilters.first = (this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize
158
- ?? this.options?.paginationOptions?.first
159
- ?? this.pagination?.pageSize
160
- ?? this.defaultPaginationOptions.first;
161
- datasetFilters.offset = paginationOptions?.hasOwnProperty('offset') ? +(paginationOptions as any)['offset'] : 0;
150
+ datasetFilters.first =
151
+ (this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize ??
152
+ this.options?.paginationOptions?.first ??
153
+ this.pagination?.pageSize ??
154
+ this.defaultPaginationOptions.first;
155
+ datasetFilters.offset = paginationOptions && 'offset' in paginationOptions ? +paginationOptions.offset! : 0;
162
156
  }
163
157
  }
164
158
 
@@ -208,7 +202,6 @@ export class GraphqlService implements BackendService {
208
202
  * @param inputArray
209
203
  */
210
204
  buildFilterQuery(inputArray: string[]): string {
211
-
212
205
  const set = (o: any = {}, a: any) => {
213
206
  const k = a.shift();
214
207
  o[k] = a.length ? set(o[k] ?? {}, a) : null;
@@ -238,10 +231,9 @@ export class GraphqlService implements BackendService {
238
231
  * @return Pagination Options
239
232
  */
240
233
  getInitPaginationOptions(): GraphqlDatasetFilter {
241
- const paginationFirst = (this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize ?? this.pagination?.pageSize ?? DEFAULT_ITEMS_PER_PAGE;
242
- return this.options?.useCursor
243
- ? { first: paginationFirst }
244
- : { first: paginationFirst, offset: 0 };
234
+ const paginationFirst =
235
+ (this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize ?? this.pagination?.pageSize ?? DEFAULT_ITEMS_PER_PAGE;
236
+ return this.options?.useCursor ? { first: paginationFirst } : { first: paginationFirst, offset: 0 };
245
237
  }
246
238
 
247
239
  /** Get the GraphQL dataset name */
@@ -281,11 +273,14 @@ export class GraphqlService implements BackendService {
281
273
  // save current pagination as Page 1 and page size as "first" set size
282
274
  this._currentPagination = {
283
275
  pageNumber: 1,
284
- pageSize: paginationOptions.first || DEFAULT_PAGE_SIZE
276
+ pageSize: paginationOptions.first || DEFAULT_PAGE_SIZE,
285
277
  };
286
278
 
287
279
  // unless user specifically set "enablePagination" to False, we'll update pagination options in every other cases
288
- if (this._gridOptions && (this._gridOptions.enablePagination || !this._gridOptions.hasOwnProperty('enablePagination') || this.options?.infiniteScroll)) {
280
+ if (
281
+ this._gridOptions &&
282
+ (this._gridOptions.enablePagination || !('enablePagination' in this._gridOptions) || this.options?.infiniteScroll)
283
+ ) {
289
284
  this.updateOptions({ paginationOptions });
290
285
  }
291
286
  }
@@ -309,7 +304,9 @@ export class GraphqlService implements BackendService {
309
304
  this._currentFilters = this.castFilterToColumnFilters(args.columnFilters);
310
305
 
311
306
  if (!args || !args.grid) {
312
- throw new Error('Something went wrong when trying create the GraphQL Backend Service, it seems that "args" is not populated correctly');
307
+ throw new Error(
308
+ 'Something went wrong when trying create the GraphQL Backend Service, it seems that "args" is not populated correctly'
309
+ );
313
310
  }
314
311
 
315
312
  // loop through all columns to inspect filters & set the query
@@ -347,14 +344,18 @@ export class GraphqlService implements BackendService {
347
344
  * }
348
345
  * }
349
346
  */
350
- processOnPaginationChanged(_event: Event | undefined, args: PaginationChangedArgs | (PaginationCursorChangedArgs & PaginationChangedArgs)): string {
351
- const pageSize = +((this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize || args.pageSize || ((this.pagination) ? this.pagination.pageSize : DEFAULT_PAGE_SIZE));
347
+ processOnPaginationChanged(
348
+ _event: Event | undefined,
349
+ args: PaginationChangedArgs | (PaginationCursorChangedArgs & PaginationChangedArgs)
350
+ ): string {
351
+ const pageSize = +(
352
+ (this.options?.infiniteScroll as InfiniteScrollOption)?.fetchSize ||
353
+ args.pageSize ||
354
+ (this.pagination ? this.pagination.pageSize : DEFAULT_PAGE_SIZE)
355
+ );
352
356
 
353
357
  // if first/last defined on args, then it is a cursor based pagination change
354
- 'first' in args || 'last' in args
355
- ? this.updatePagination(args.newPage, pageSize, args)
356
- : this.updatePagination(args.newPage, pageSize);
357
-
358
+ 'first' in args || 'last' in args ? this.updatePagination(args.newPage, pageSize, args) : this.updatePagination(args.newPage, pageSize);
358
359
 
359
360
  // build the GraphQL query which we will use in the WebAPI callback
360
361
  return this.buildQuery();
@@ -374,7 +375,13 @@ export class GraphqlService implements BackendService {
374
375
  * }
375
376
  */
376
377
  processOnSortChanged(_event: Event | undefined, args: SingleColumnSort | MultiColumnSort): string {
377
- const sortColumns = (args.multiColumnSort) ? (args as MultiColumnSort).sortCols : new Array({ columnId: (args as ColumnSort).sortCol?.id ?? '', sortCol: (args as ColumnSort).sortCol, sortAsc: (args as ColumnSort).sortAsc });
378
+ const sortColumns = args.multiColumnSort
379
+ ? (args as MultiColumnSort).sortCols
380
+ : new Array({
381
+ columnId: (args as ColumnSort).sortCol?.id ?? '',
382
+ sortCol: (args as ColumnSort).sortCol,
383
+ sortAsc: (args as ColumnSort).sortAsc,
384
+ });
378
385
 
379
386
  // loop through all columns to inspect sorters & set the query
380
387
  this.updateSorters(sortColumns);
@@ -402,7 +409,7 @@ export class GraphqlService implements BackendService {
402
409
  }
403
410
 
404
411
  for (const columnId in columnFilters) {
405
- if (columnFilters.hasOwnProperty(columnId)) {
412
+ if (columnId in columnFilters) {
406
413
  const columnFilter = (columnFilters as any)[columnId];
407
414
 
408
415
  // if user defined some "presets", then we need to find the filters from the column definitions instead
@@ -413,44 +420,54 @@ export class GraphqlService implements BackendService {
413
420
  columnDef = columnFilter.columnDef;
414
421
  }
415
422
  if (!columnDef) {
416
- throw new Error('[GraphQL Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?');
423
+ throw new Error(
424
+ '[GraphQL Service]: Something went wrong in trying to get the column definition of the specified filter (or preset filters). Did you make a typo on the filter columnId?'
425
+ );
417
426
  }
418
427
 
419
- let fieldName = columnDef.filter?.queryField || columnDef.queryFieldFilter || columnDef.queryField || columnDef.field || columnDef.name || '';
428
+ let fieldName =
429
+ columnDef.filter?.queryField || columnDef.queryFieldFilter || columnDef.queryField || columnDef.field || columnDef.name || '';
420
430
  if (fieldName instanceof HTMLElement) {
421
431
  fieldName = stripTags(fieldName.innerHTML);
422
432
  }
423
433
  const fieldType = columnDef.type || FieldType.string;
424
434
  let searchTerms = columnFilter?.searchTerms ?? [];
425
- let fieldSearchValue = (Array.isArray(searchTerms) && searchTerms.length === 1) ? searchTerms[0] : '';
435
+ let fieldSearchValue = Array.isArray(searchTerms) && searchTerms.length === 1 ? searchTerms[0] : '';
426
436
  if (typeof fieldSearchValue === 'undefined') {
427
437
  fieldSearchValue = '';
428
438
  }
429
439
 
430
440
  if (!fieldName) {
431
- throw new Error(`GraphQL filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").`);
441
+ throw new Error(
442
+ `GraphQL filter could not find the field name to query the search, your column definition must include a valid "field" or "name" (optionally you can also use the "queryfield").`
443
+ );
432
444
  }
433
445
 
434
446
  if (this.options?.useVerbatimSearchTerms || columnFilter.verbatimSearchTerms) {
435
- searchByArray.push({ field: getHtmlStringOutput(fieldName), operator: columnFilter.operator, value: JSON.stringify(columnFilter.searchTerms) });
447
+ searchByArray.push({
448
+ field: getHtmlStringOutput(fieldName),
449
+ operator: columnFilter.operator,
450
+ value: JSON.stringify(columnFilter.searchTerms),
451
+ });
436
452
  continue;
437
453
  }
438
454
 
439
- fieldSearchValue = (fieldSearchValue === undefined || fieldSearchValue === null) ? '' : `${fieldSearchValue}`; // make sure it's a string
455
+ fieldSearchValue = fieldSearchValue === undefined || fieldSearchValue === null ? '' : `${fieldSearchValue}`; // make sure it's a string
440
456
 
441
457
  // run regex to find possible filter operators unless the user disabled the feature
442
458
  const autoParseInputFilterOperator = columnDef.autoParseInputFilterOperator ?? this._gridOptions.autoParseInputFilterOperator;
443
459
 
444
460
  // group (2): comboStartsWith, (3): comboEndsWith, (4): Operator, (1 or 5): searchValue, (6): last char is '*' (meaning starts with, ex.: abc*)
445
- const matches = autoParseInputFilterOperator !== false
446
- ? fieldSearchValue.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/) || []
447
- : [fieldSearchValue, '', '', '', '', fieldSearchValue, ''];
461
+ const matches =
462
+ autoParseInputFilterOperator !== false
463
+ ? fieldSearchValue.match(/^((.*[^\\*\r\n])[*]{1}(.*[^*\r\n]))|^([<>!=*]{0,2})(.*[^<>!=*])([*]?)$/) || []
464
+ : [fieldSearchValue, '', '', '', '', fieldSearchValue, ''];
448
465
 
449
466
  const comboStartsWith = matches?.[2] || '';
450
467
  const comboEndsWith = matches?.[3] || '';
451
468
  let operator = columnFilter.operator || matches?.[4];
452
469
  searchValue = matches?.[1] || matches?.[5] || '';
453
- const lastValueChar = matches?.[6] || (operator === '*z' || operator === OperatorType.endsWith) ? '*' : '';
470
+ const lastValueChar = matches?.[6] || operator === '*z' || operator === OperatorType.endsWith ? '*' : '';
454
471
 
455
472
  // no need to query if search value is empty
456
473
  if (fieldName && searchValue === '' && searchTerms.length === 0) {
@@ -465,7 +482,7 @@ export class GraphqlService implements BackendService {
465
482
  operator,
466
483
  columnFilterOperator: columnFilter.operator,
467
484
  searchValues: searchTerms,
468
- grid: this._grid
485
+ grid: this._grid,
469
486
  });
470
487
  }
471
488
 
@@ -478,7 +495,12 @@ export class GraphqlService implements BackendService {
478
495
  if (comboStartsWith && comboEndsWith) {
479
496
  searchTerms = [comboStartsWith, comboEndsWith];
480
497
  operator = OperatorType.startsWithEndsWith;
481
- } else if (Array.isArray(searchTerms) && searchTerms.length === 1 && typeof searchTerms[0] === 'string' && searchTerms[0].indexOf('..') >= 0) {
498
+ } else if (
499
+ Array.isArray(searchTerms) &&
500
+ searchTerms.length === 1 &&
501
+ typeof searchTerms[0] === 'string' &&
502
+ searchTerms[0].indexOf('..') >= 0
503
+ ) {
482
504
  if (operator !== OperatorType.rangeInclusive && operator !== OperatorType.rangeExclusive) {
483
505
  operator = this._gridOptions.defaultFilterRangeOperator ?? OperatorType.rangeInclusive;
484
506
  }
@@ -496,7 +518,7 @@ export class GraphqlService implements BackendService {
496
518
 
497
519
  if (typeof searchValue === 'string') {
498
520
  if (operator === '*' || operator === 'a*' || operator === '*z' || lastValueChar === '*') {
499
- operator = ((operator === '*' || operator === '*z') ? 'EndsWith' : 'StartsWith') as OperatorString;
521
+ operator = (operator === '*' || operator === '*z' ? 'EndsWith' : 'StartsWith') as OperatorString;
500
522
  }
501
523
  }
502
524
 
@@ -512,7 +534,12 @@ export class GraphqlService implements BackendService {
512
534
  }
513
535
 
514
536
  // Range with 1 searchterm should lead to equals for a date field.
515
- if ((operator === OperatorType.rangeInclusive || operator === OperatorType.rangeExclusive) && Array.isArray(searchTerms) && searchTerms.length === 1 && fieldType === FieldType.date) {
537
+ if (
538
+ (operator === OperatorType.rangeInclusive || operator === OperatorType.rangeExclusive) &&
539
+ Array.isArray(searchTerms) &&
540
+ searchTerms.length === 1 &&
541
+ fieldType === FieldType.date
542
+ ) {
516
543
  operator = OperatorType.equal;
517
544
  }
518
545
 
@@ -527,7 +554,11 @@ export class GraphqlService implements BackendService {
527
554
  // StartsWith + EndsWith combo
528
555
  if (operator === OperatorType.startsWithEndsWith && Array.isArray(searchTerms) && searchTerms.length === 2) {
529
556
  // add 2 conditions (StartsWith A + EndsWith B) to the search array
530
- searchByArray.push({ field: getHtmlStringOutput(fieldName), operator: OperatorType.startsWith, value: comboStartsWith });
557
+ searchByArray.push({
558
+ field: getHtmlStringOutput(fieldName),
559
+ operator: OperatorType.startsWith,
560
+ value: comboStartsWith,
561
+ });
531
562
  searchByArray.push({ field: getHtmlStringOutput(fieldName), operator: OperatorType.endsWith, value: comboEndsWith });
532
563
  continue;
533
564
  }
@@ -536,8 +567,16 @@ export class GraphqlService implements BackendService {
536
567
  if (searchTerms?.length > 1 && (operator === 'IN' || operator === 'NIN' || operator === 'NOT_IN')) {
537
568
  searchValue = searchTerms.join(',');
538
569
  } else if (searchTerms?.length === 2 && (operator === OperatorType.rangeExclusive || operator === OperatorType.rangeInclusive)) {
539
- searchByArray.push({ field: getHtmlStringOutput(fieldName), operator: (operator === OperatorType.rangeInclusive ? 'GE' : 'GT'), value: searchTerms[0] });
540
- searchByArray.push({ field: getHtmlStringOutput(fieldName), operator: (operator === OperatorType.rangeInclusive ? 'LE' : 'LT'), value: searchTerms[1] });
570
+ searchByArray.push({
571
+ field: getHtmlStringOutput(fieldName),
572
+ operator: operator === OperatorType.rangeInclusive ? 'GE' : 'GT',
573
+ value: searchTerms[0],
574
+ });
575
+ searchByArray.push({
576
+ field: getHtmlStringOutput(fieldName),
577
+ operator: operator === OperatorType.rangeInclusive ? 'LE' : 'LT',
578
+ value: searchTerms[1],
579
+ });
541
580
  continue;
542
581
  }
543
582
 
@@ -565,7 +604,7 @@ export class GraphqlService implements BackendService {
565
604
  updatePagination(newPage: number, pageSize: number, cursorArgs?: PaginationCursorChangedArgs): void {
566
605
  this._currentPagination = {
567
606
  pageNumber: newPage,
568
- pageSize
607
+ pageSize,
569
608
  };
570
609
 
571
610
  let paginationOptions: GraphqlPaginationOption | GraphqlCursorPaginationOption = {};
@@ -585,7 +624,7 @@ export class GraphqlService implements BackendService {
585
624
  // use offset based pagination
586
625
  paginationOptions = {
587
626
  first: pageSize,
588
- offset: (newPage > 1) ? ((newPage - 1) * pageSize) : 0 // recalculate offset but make sure the result is always over 0
627
+ offset: newPage > 1 ? (newPage - 1) * pageSize : 0, // recalculate offset but make sure the result is always over 0
589
628
  };
590
629
  }
591
630
 
@@ -602,30 +641,30 @@ export class GraphqlService implements BackendService {
602
641
  if (!sortColumns && presetSorters) {
603
642
  // make the presets the current sorters, also make sure that all direction are in uppercase for GraphQL
604
643
  currentSorters = presetSorters;
605
- currentSorters.forEach((sorter) => sorter.direction = sorter.direction.toUpperCase() as SortDirectionString);
644
+ currentSorters.forEach((sorter) => (sorter.direction = sorter.direction.toUpperCase() as SortDirectionString));
606
645
 
607
646
  // display the correct sorting icons on the UI, for that it requires (columnId, sortAsc) properties
608
647
  const tmpSorterArray = currentSorters.map((sorter) => {
609
648
  const columnDef = this._columnDefinitions?.find((column: Column) => column.id === sorter.columnId);
610
649
 
611
650
  graphqlSorters.push({
612
- field: columnDef ? ((columnDef.queryFieldSorter || columnDef.queryField || columnDef.field) + '') : (sorter.columnId + ''),
613
- direction: sorter.direction
651
+ field: columnDef ? (columnDef.queryFieldSorter || columnDef.queryField || columnDef.field) + '' : sorter.columnId + '',
652
+ direction: sorter.direction,
614
653
  });
615
654
 
616
655
  // return only the column(s) found in the Column Definitions ELSE null
617
656
  if (columnDef) {
618
657
  return {
619
658
  columnId: sorter.columnId,
620
- sortAsc: sorter.direction.toUpperCase() === SortDirection.ASC
659
+ sortAsc: sorter.direction.toUpperCase() === SortDirection.ASC,
621
660
  };
622
661
  }
623
662
  return null;
624
- }) as { columnId: string | number; sortAsc: boolean; }[] | null;
663
+ }) as { columnId: string | number; sortAsc: boolean }[] | null;
625
664
 
626
665
  // set the sort icons, but also make sure to filter out null values (that happens when columnDef is not found)
627
666
  if (Array.isArray(tmpSorterArray) && this._grid) {
628
- this._grid.setSortColumns(tmpSorterArray.filter(sorter => sorter) || []);
667
+ this._grid.setSortColumns(tmpSorterArray.filter((sorter) => sorter) || []);
629
668
  }
630
669
  } else if (sortColumns && !presetSorters) {
631
670
  // build the orderBy array, it could be multisort, example
@@ -635,14 +674,14 @@ export class GraphqlService implements BackendService {
635
674
  if (column && column.sortCol) {
636
675
  currentSorters.push({
637
676
  columnId: column.sortCol.id + '',
638
- direction: column.sortAsc ? SortDirection.ASC : SortDirection.DESC
677
+ direction: column.sortAsc ? SortDirection.ASC : SortDirection.DESC,
639
678
  });
640
679
 
641
680
  const fieldName = (column.sortCol.queryFieldSorter || column.sortCol.queryField || column.sortCol.field || '') + '';
642
681
  if (fieldName) {
643
682
  graphqlSorters.push({
644
683
  field: fieldName,
645
- direction: column.sortAsc ? SortDirection.ASC : SortDirection.DESC
684
+ direction: column.sortAsc ? SortDirection.ASC : SortDirection.DESC,
646
685
  });
647
686
  }
648
687
  }
@@ -683,7 +722,7 @@ export class GraphqlService implements BackendService {
683
722
  // example with (field: & direction:): /field:s?(".*?")|direction:s?(".*?")/
684
723
  const reg = new RegExp(patternRegex, 'g');
685
724
 
686
- return inputStr.replace(reg, group1 => {
725
+ return inputStr.replace(reg, (group1) => {
687
726
  // remove double quotes except when the string starts with a "field:"
688
727
  let removeDoubleQuotes = true;
689
728
  if (group1.startsWith('field:') && keepArgumentFieldDoubleQuotes) {
@@ -703,7 +742,8 @@ export class GraphqlService implements BackendService {
703
742
  */
704
743
  protected castFilterToColumnFilters(columnFilters: ColumnFilters | CurrentFilter[]): CurrentFilter[] {
705
744
  // keep current filters & always save it as an array (columnFilters can be an object when it is dealt by SlickGrid Filter)
706
- const filtersArray: ColumnFilter[] = (typeof columnFilters === 'object') ? Object.keys(columnFilters).map(key => (columnFilters as any)[key]) : columnFilters;
745
+ const filtersArray: ColumnFilter[] =
746
+ typeof columnFilters === 'object' ? Object.keys(columnFilters).map((key) => (columnFilters as any)[key]) : columnFilters;
707
747
 
708
748
  if (!Array.isArray(filtersArray)) {
709
749
  return [];
@@ -725,7 +765,7 @@ export class GraphqlService implements BackendService {
725
765
  }
726
766
 
727
767
  /** Normalizes the search value according to field type. */
728
- protected normalizeSearchValue(fieldType: typeof FieldType[keyof typeof FieldType], searchValue: any): any {
768
+ protected normalizeSearchValue(fieldType: (typeof FieldType)[keyof typeof FieldType], searchValue: any): any {
729
769
  switch (fieldType) {
730
770
  case FieldType.date:
731
771
  case FieldType.string:
@@ -14,7 +14,10 @@ export default class GraphqlQueryBuilder {
14
14
  body: any;
15
15
 
16
16
  /* Constructor, query/mutator you wish to use, and an alias or filter arguments. */
17
- constructor(protected queryFnName: string, aliasOrFilter?: string | object | undefined) {
17
+ constructor(
18
+ protected queryFnName: string,
19
+ aliasOrFilter?: string | object | undefined
20
+ ) {
18
21
  if (typeof aliasOrFilter === 'string') {
19
22
  this.alias = aliasOrFilter;
20
23
  } else if (typeof aliasOrFilter === 'object') {
@@ -22,7 +25,9 @@ export default class GraphqlQueryBuilder {
22
25
  } else if (aliasOrFilter === undefined && arguments.length === 2) {
23
26
  throw new TypeError(`You have passed undefined as Second argument to "Query"`);
24
27
  } else if (aliasOrFilter !== undefined) {
25
- throw new TypeError(`Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${aliasOrFilter}`);
28
+ throw new TypeError(
29
+ `Second argument to "Query" should be an alias name(String) or filter arguments(Object). What was passed is: ${aliasOrFilter}`
30
+ );
26
31
  }
27
32
  }
28
33
 
@@ -48,13 +53,14 @@ export default class GraphqlQueryBuilder {
48
53
  * Outlines the properties you wish to be returned from the query.
49
54
  * @param properties representing each attribute you want Returned
50
55
  */
51
- find(...searches: any[]): this { // THIS NEED TO BE A "FUNCTION" to scope 'arguments'
56
+ find(...searches: any[]): this {
57
+ // THIS NEED TO BE A "FUNCTION" to scope 'arguments'
52
58
  if (!searches || !Array.isArray(searches) || searches.length === 0) {
53
59
  throw new TypeError(`find value can not be >>falsy<<`);
54
60
  }
55
61
  // if its a string.. it may have other values
56
62
  // else it sould be an Object or Array of maped values
57
- const searchKeys = (searches.length === 1 && Array.isArray(searches[0])) ? searches[0] : searches;
63
+ const searchKeys = searches.length === 1 && Array.isArray(searches[0]) ? searches[0] : searches;
58
64
  this.body = this.parceFind(searchKeys);
59
65
  return this;
60
66
  }
@@ -76,7 +82,7 @@ export default class GraphqlQueryBuilder {
76
82
  throw new ReferenceError(`return properties are not defined. use the 'find' function to defined them`);
77
83
  }
78
84
 
79
- return `${(this.alias) ? (this.alias + ':') : ''} ${this.queryFnName} ${(this.head.length > 0) ? '(' + this.head.join(',') + ')' : ''} { ${this.body} }`;
85
+ return `${this.alias ? this.alias + ':' : ''} ${this.queryFnName} ${this.head.length > 0 ? '(' + this.head.join(',') + ')' : ''} { ${this.body} }`;
80
86
  }
81
87
 
82
88
  // --
@@ -115,9 +121,11 @@ export default class GraphqlQueryBuilder {
115
121
  if (typeof value === 'string') {
116
122
  value = JSON.stringify(value);
117
123
  } else if (Array.isArray(value)) {
118
- value = value.map(item => {
119
- return this.getGraphQLValue(item);
120
- }).join();
124
+ value = value
125
+ .map((item) => {
126
+ return this.getGraphQLValue(item);
127
+ })
128
+ .join();
121
129
  value = `[${value}]`;
122
130
  } else if (value instanceof Date) {
123
131
  value = JSON.stringify(value);