123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * SonarQube
- * Copyright (C) 2009-2022 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
- import { isEqual, isNil, omitBy } from 'lodash';
- import { RawQuery } from '../types/types';
- import { isValidDate, parseDate, toNotSoISOString, toShortNotSoISOString } from './dates';
-
- export function queriesEqual(a: RawQuery, b: RawQuery): boolean {
- const keysA = Object.keys(a);
- const keysB = Object.keys(b);
-
- if (keysA.length !== keysB.length) {
- return false;
- }
-
- return keysA.every(key => isEqual(a[key], b[key]));
- }
-
- export function cleanQuery(query: RawQuery): RawQuery {
- return omitBy(query, isNil);
- }
-
- export function parseAsBoolean(value: string | undefined, defaultValue = true): boolean {
- if (value === 'false') {
- return false;
- }
- if (value === 'true') {
- return true;
- }
- return defaultValue;
- }
-
- export function parseAsOptionalBoolean(value: string | undefined): boolean | undefined {
- if (value === 'true') {
- return true;
- } else if (value === 'false') {
- return false;
- }
- return undefined;
- }
-
- export function parseAsDate(value?: string): Date | undefined {
- if (value) {
- const date = parseDate(value);
- if (isValidDate(date)) {
- return date;
- }
- }
- return undefined;
- }
-
- export function parseAsString(value: string | undefined): string {
- return value || '';
- }
-
- export function parseAsOptionalString(value: string | undefined): string | undefined {
- return value || undefined;
- }
-
- export function parseAsArray<T>(value: string | undefined, itemParser: (x: string) => T): T[] {
- return value ? value.split(',').map(itemParser) : [];
- }
-
- export function parseAsOptionalArray<T>(
- value: string | undefined,
- itemParser: (x: string) => T
- ): T[] | undefined {
- return value ? parseAsArray(value, itemParser) : undefined;
- }
-
- export function serializeDate(value?: Date, serializer = toNotSoISOString): string | undefined {
- if (value != null && value.toISOString) {
- return serializer(value);
- }
- return undefined;
- }
-
- export function serializeDateShort(value: Date | undefined): string | undefined {
- return serializeDate(value, toShortNotSoISOString);
- }
-
- export function serializeString(value: string | undefined): string | undefined {
- return value || undefined;
- }
-
- export function serializeStringArray(value: string[] | undefined[]): string | undefined {
- return value && value.length ? value.join() : undefined;
- }
-
- export function serializeOptionalBoolean(value: boolean | undefined): string | undefined {
- if (value === true) {
- return 'true';
- } else if (value === false) {
- return 'false';
- }
- return undefined;
- }
|