diff --git a/package.json b/package.json
index 4dcc4e547..405826872 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "querybook",
- "version": "3.16.0",
+ "version": "3.16.1",
"description": "A Big Data Webapp",
"private": true,
"scripts": {
@@ -38,39 +38,39 @@
"@babel/preset-typescript": "^7.16.0",
"@types/diff": "^5.0.2",
"@welldone-software/why-did-you-render": "^6.1.1",
- "axios": "0.21.1",
+ "axios": "^1.2.2",
"bignumber.js": "^9.0.1",
"chart.js": "^3.9.1",
"chartjs-adapter-moment": "^1.0.0",
"chartjs-plugin-datalabels": "^2.1.0",
"clean-webpack-plugin": "3.0.0",
- "clsx": "^1.1.1",
+ "clsx": "^1.2.1",
"codemirror": "^5.64.0",
"core-decorators": "0.20.0",
"core-js": "^3.19.1",
- "cron-parser": "4.6.0",
+ "cron-parser": "^4.7.0",
"dagre": "^0.8.5",
"draft-js": "0.11.7",
"draft-js-export-html": "^1.4.1",
"draft-js-import-html": "^1.4.1",
- "fast-json-stable-stringify": "2.0.0",
- "formik": "2.2.9",
+ "fast-json-stable-stringify": "^2.1.0",
+ "formik": "^2.2.9",
"history": "^4.10.1",
"html-webpack-plugin": "5.3.1",
- "immer": "8.0.1",
+ "immer": "^9.0.17",
"immutable": "3.7.4",
"jsdiff": "^1.1.1",
"json-bigint": "^1.0.0",
- "localforage": "^1.7.3",
+ "localforage": "^1.10.0",
"lodash": "4.17.21",
"lodash-decorators": "6.0.1",
"lucide-react": "^0.17.13",
"markdown-to-jsx": "^7.1.0",
- "memoize-one": "5.0.2",
- "mini-css-extract-plugin": "2.1.0",
+ "memoize-one": "^6.0.0",
+ "mini-css-extract-plugin": "^2.7.2",
"moment": "2.29.4",
- "normalizr": "3.3.0",
- "qs": "6.10.3",
+ "normalizr": "^3.6.2",
+ "qs": "^6.11.0",
"rc-time-picker": "3.6.4",
"re-resizable": "4.9.0",
"react": "17.0.2",
@@ -79,13 +79,13 @@
"react-dnd": "^15.1.2",
"react-dnd-html5-backend": "^15.1.2",
"react-dom": "17.0.2",
- "react-hot-toast": "^2.0.0",
+ "react-hot-toast": "^2.4.0",
"react-json-view": "^1.21.3",
"react-lazyload": "^3.2.0",
"react-redux": "7.2.4",
"react-router-dom": "5.1.2",
"react-select": "4.3.1",
- "react-table": "6.8.6",
+ "react-table": "^6.8.6",
"react-virtualized": "9.22.3",
"reactflow": "^11.3.0",
"reactour": "^1.18.6",
@@ -97,8 +97,8 @@
"sass": "^1.50.0",
"smooth-scroll-into-view-if-needed": "^1.1.27",
"socket.io-client": "^4.5.2",
- "sql-formatter": "2.3.4",
- "styled-components": "5.2.1",
+ "sql-formatter": "^12.0.4",
+ "styled-components": "5.3.6",
"typescript": "4.4.4",
"webpack": "5.65.0",
"webpack-cli": "4.7.0",
@@ -129,7 +129,7 @@
"@types/lodash": "4.14.116",
"@types/markdown-to-jsx": "^6.11.3",
"@types/memoize-one": "3.1.1",
- "@types/qs": "^6.5.1",
+ "@types/qs": "^6.9.7",
"@types/rc-time-picker": "^3.4.1",
"@types/react": "17.0.15",
"@types/react-dom": "17.0.9",
diff --git a/querybook/webapp/__tests__/lib/sql-helper/sql-formatter.test.ts b/querybook/webapp/__tests__/lib/sql-helper/sql-formatter.test.ts
index 41e74df8c..22712c5f5 100644
--- a/querybook/webapp/__tests__/lib/sql-helper/sql-formatter.test.ts
+++ b/querybook/webapp/__tests__/lib/sql-helper/sql-formatter.test.ts
@@ -12,7 +12,7 @@ FROM
);
expect(format('select ARRAY [1] || ARRAY [2];', 'presto')).toBe(
`SELECT
- ARRAY [1] || ARRAY [2];`
+ ARRAY[1] || ARRAY[2];`
);
});
test('Simple formatting with templating case', () => {
@@ -58,7 +58,7 @@ from
});
test('Simple formatting tab indent', () => {
- expect(format('select * from test;', 'presto', { indent: '\t' })).toBe(
+ expect(format('select * from test;', 'presto', { useTabs: true })).toBe(
`SELECT
\t*
FROM
@@ -67,7 +67,7 @@ FROM
});
test('Simple formatting four space indent', () => {
- expect(format('select * from test;', 'presto', { indent: ' ' })).toBe(
+ expect(format('select * from test;', 'presto', { tabWidth: 4 })).toBe(
`SELECT
*
FROM
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/AsyncButton.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/AsyncButton.test.js.snap
index 7451d061a..c07d8ce9a 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/AsyncButton.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/AsyncButton.test.js.snap
@@ -28,19 +28,19 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
test
`;
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Box.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Box.test.js.snap
index 746ec0960..bf0070d3a 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Box.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Box.test.js.snap
@@ -2,7 +2,7 @@
exports[`matches enzyme snapshots matches snapshot 1`] = `
Test
@@ -10,7 +10,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
Test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Button.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Button.test.js.snap
index 65a604fb3..91d73e7dd 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Button.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Button.test.js.snap
@@ -142,18 +142,18 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
test
`;
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Center.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Center.test.js.snap
index 8d94fc4ee..2262d41b1 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Center.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Center.test.js.snap
@@ -10,10 +10,10 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
Test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Column.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Column.test.js.snap
index 7d0232f64..6e25163ab 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Column.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Column.test.js.snap
@@ -2,7 +2,7 @@
exports[`matches enzyme snapshots matches snapshot 1`] = `
Test
@@ -15,15 +15,15 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
Test
Test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Container.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Container.test.js.snap
index b8ab90893..ee8a44443 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Container.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Container.test.js.snap
@@ -17,7 +17,7 @@ exports[`matches test renderer snapshot serializes the styles 1`] = `
className="TestContainer Container"
>
Test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Content.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Content.test.js.snap
index 98f1bd7b5..bd7809e83 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Content.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Content.test.js.snap
@@ -2,7 +2,7 @@
exports[`matches enzyme snapshots matches snapshot 1`] = `
test",
@@ -13,7 +13,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
test",
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/CopyButton.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/CopyButton.test.js.snap
index f6fba8cac..e03c2fc1e 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/CopyButton.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/CopyButton.test.js.snap
@@ -16,7 +16,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
Test Copy
`;
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/DisabledSection.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/DisabledSection.test.js.snap
index 8750f3641..957c707f2 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/DisabledSection.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/DisabledSection.test.js.snap
@@ -2,7 +2,7 @@
exports[`matches enzyme snapshots matches snapshot - false 1`] = `
@@ -11,7 +11,7 @@ exports[`matches enzyme snapshots matches snapshot - false 1`] = `
exports[`matches enzyme snapshots matches snapshot 1`] = `
@@ -19,7 +19,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Dropdown.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Dropdown.test.js.snap
index 1756b4f34..e22b78dc2 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Dropdown.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Dropdown.test.js.snap
@@ -27,7 +27,7 @@ exports[`matches test renderer snapshot serializes the styles 1`] = `
onMouseLeave={[Function]}
>
Test
@@ -10,7 +10,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
Test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/KeyboardKey.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/KeyboardKey.test.js.snap
index 7306186bf..fdd67962c 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/KeyboardKey.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/KeyboardKey.test.js.snap
@@ -8,7 +8,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
test
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/Level.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/Level.test.js.snap
index 89bb942da..45238bedd 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/Level.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/Level.test.js.snap
@@ -2,7 +2,7 @@
exports[`matches enzyme snapshots matches snapshot 1`] = `
@@ -10,7 +10,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
@@ -14,17 +14,17 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
@@ -107,18 +107,18 @@ exports[`matches test renderer snapshot serializes the styles 1`] = `
className="Pagination-next"
>
Next
@@ -127,69 +127,69 @@ exports[`matches test renderer snapshot serializes the styles 1`] = `
>
1
2
3
4
@@ -202,18 +202,18 @@ exports[`matches test renderer snapshot serializes the styles 1`] = `
10
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/QuerybookLogo.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/QuerybookLogo.test.js.snap
index 3cc9104f3..aa70d8822 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/QuerybookLogo.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/QuerybookLogo.test.js.snap
@@ -26,7 +26,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
diff --git a/querybook/webapp/__tests__/ui/__snapshots__/ToolBarButton.test.js.snap b/querybook/webapp/__tests__/ui/__snapshots__/ToolBarButton.test.js.snap
index 8f8eda7bc..0ee7c6961 100644
--- a/querybook/webapp/__tests__/ui/__snapshots__/ToolBarButton.test.js.snap
+++ b/querybook/webapp/__tests__/ui/__snapshots__/ToolBarButton.test.js.snap
@@ -16,7 +16,7 @@ exports[`matches enzyme snapshots matches snapshot 1`] = `
exports[`matches test renderer snapshot serializes the styles 1`] = `
diff --git a/querybook/webapp/components/Board/BoardError.tsx b/querybook/webapp/components/Board/BoardError.tsx
index bf268b414..6583aa8af 100644
--- a/querybook/webapp/components/Board/BoardError.tsx
+++ b/querybook/webapp/components/Board/BoardError.tsx
@@ -1,14 +1,14 @@
-import type { AxiosError } from 'axios';
import * as React from 'react';
import { useDispatch } from 'react-redux';
import { AccessRequestButton } from 'components/AccessRequestButton/AccessRequestButton';
+import { AxiosErrorWithMessage } from 'lib/utils/error';
import { addBoardAccessRequest } from 'redux/board/action';
import { Dispatch } from 'redux/store/types';
import { ErrorPage } from 'ui/ErrorPage/ErrorPage';
export const BoardError: React.FunctionComponent<{
- errorObj: AxiosError;
+ errorObj: AxiosErrorWithMessage;
boardId: number;
}> = React.memo(({ boardId, errorObj }) => {
const dispatch: Dispatch = useDispatch();
diff --git a/querybook/webapp/components/DataDoc/DataDoc.tsx b/querybook/webapp/components/DataDoc/DataDoc.tsx
index a230dbbe9..34528e75e 100644
--- a/querybook/webapp/components/DataDoc/DataDoc.tsx
+++ b/querybook/webapp/components/DataDoc/DataDoc.tsx
@@ -42,7 +42,7 @@ import { replaceDataDoc, searchDataDocCells } from 'lib/data-doc/search';
import { sendConfirm, setBrowserTitle } from 'lib/querybookUI';
import history from 'lib/router-history';
import { copy, sanitizeUrlTitle } from 'lib/utils';
-import { formatError, isAxiosError } from 'lib/utils/error';
+import { formatError, isAxiosErrorWithMessage } from 'lib/utils/error';
import { KeyMap, matchKeyMap } from 'lib/utils/keyboard';
import { getQueryString } from 'lib/utils/query-string';
import * as dataDocActions from 'redux/dataDoc/action';
@@ -882,7 +882,7 @@ class DataDocComponent extends React.PureComponent {
const { dataDoc } = this.props;
const { errorObj } = this.state;
- if (isAxiosError(errorObj)) {
+ if (isAxiosErrorWithMessage(errorObj)) {
return (
);
diff --git a/querybook/webapp/components/DataDoc/DataDocError.tsx b/querybook/webapp/components/DataDoc/DataDocError.tsx
index b1060c99d..42a2ddf2c 100644
--- a/querybook/webapp/components/DataDoc/DataDocError.tsx
+++ b/querybook/webapp/components/DataDoc/DataDocError.tsx
@@ -1,14 +1,14 @@
-import { AxiosError } from 'axios';
import * as React from 'react';
import { useDispatch } from 'react-redux';
import { AccessRequestButton } from 'components/AccessRequestButton/AccessRequestButton';
+import { AxiosErrorWithMessage } from 'lib/utils/error';
import * as dataDocActions from 'redux/dataDoc/action';
import { Dispatch } from 'redux/store/types';
import { ErrorPage } from 'ui/ErrorPage/ErrorPage';
export const DataDocError: React.FunctionComponent<{
- errorObj: AxiosError;
+ errorObj: AxiosErrorWithMessage;
docId: number;
}> = React.memo(({ docId, errorObj }) => {
let errorTitle: string;
diff --git a/querybook/webapp/components/DataTableViewSamples/DataTableViewSamples.tsx b/querybook/webapp/components/DataTableViewSamples/DataTableViewSamples.tsx
index a990363c9..092c214d4 100644
--- a/querybook/webapp/components/DataTableViewSamples/DataTableViewSamples.tsx
+++ b/querybook/webapp/components/DataTableViewSamples/DataTableViewSamples.tsx
@@ -11,7 +11,7 @@ import {
} from 'const/metastore';
import { useToggleState } from 'hooks/useToggleState';
import { format } from 'lib/sql-helper/sql-formatter';
-import { isAxiosError } from 'lib/utils/error';
+import { isAxiosErrorWithMessage } from 'lib/utils/error';
import * as dataSourcesActions from 'redux/dataSources/action';
import { Dispatch, IStoreState } from 'redux/store/types';
import { TableSamplesResource } from 'resource/table';
@@ -93,7 +93,7 @@ export const DataTableViewSamples: React.FunctionComponent<
);
setRawSamplesQuery(format(query, language));
} catch (error) {
- if (isAxiosError(error)) {
+ if (isAxiosErrorWithMessage(error)) {
const possibleErrorMessage = error?.response?.data?.error;
if (possibleErrorMessage) {
toast.error(
diff --git a/querybook/webapp/components/QueryEditor/QueryEditor.tsx b/querybook/webapp/components/QueryEditor/QueryEditor.tsx
index f1417f6f8..30bf994c0 100644
--- a/querybook/webapp/components/QueryEditor/QueryEditor.tsx
+++ b/querybook/webapp/components/QueryEditor/QueryEditor.tsx
@@ -26,7 +26,7 @@ import {
AutoCompleteType,
ExcludedTriggerKeys,
} from 'lib/sql-helper/sql-autocompleter';
-import { format } from 'lib/sql-helper/sql-formatter';
+import { format, ISQLFormatOptions } from 'lib/sql-helper/sql-formatter';
import {
ILinterWarning,
IRange,
@@ -232,20 +232,18 @@ export const QueryEditor: React.FC<
);
const formatQuery = useCallback(
- (
- options: {
- case?: 'lower' | 'upper';
- indent?: string;
- } = {}
- ) => {
+ (options: ISQLFormatOptions = {}) => {
if (editorRef.current) {
const indentWithTabs =
editorRef.current.getOption('indentWithTabs');
const indentUnit =
editorRef.current.getOption('indentUnit');
- options['indent'] = indentWithTabs
- ? '\t'
- : ' '.repeat(indentUnit);
+
+ if (indentWithTabs) {
+ options.useTabs = true;
+ } else {
+ options.tabWidth = indentUnit;
+ }
}
const formattedQuery = format(
diff --git a/querybook/webapp/lib/datasource.ts b/querybook/webapp/lib/datasource.ts
index 45e16d3c1..68a06b996 100644
--- a/querybook/webapp/lib/datasource.ts
+++ b/querybook/webapp/lib/datasource.ts
@@ -45,7 +45,7 @@ function syncDatasource(
if (data) {
if (method === 'GET') {
defaultConfig.params = {
- params: data,
+ params: JSON.stringify(data),
};
} else {
defaultConfig.data = data;
diff --git a/querybook/webapp/lib/sql-helper/sql-formatter.ts b/querybook/webapp/lib/sql-helper/sql-formatter.ts
index 99090b78f..c98360cc0 100644
--- a/querybook/webapp/lib/sql-helper/sql-formatter.ts
+++ b/querybook/webapp/lib/sql-helper/sql-formatter.ts
@@ -1,6 +1,6 @@
import { getQueryLinePosition, IToken, tokenize } from './sql-lexer';
import { find, invert, uniqueId } from 'lodash';
-import sqlFormatter from 'sql-formatter';
+import { format as sqlFormat, supportedDialects } from 'sql-formatter';
const skipTokenType = new Set(['TEMPLATED_TAG', 'TEMPLATED_BLOCK', 'URL']);
@@ -48,19 +48,23 @@ function tokensToText(tokens: IToken[]) {
};
}
+export interface ISQLFormatOptions {
+ case?: 'lower' | 'upper';
+ tabWidth?: number;
+ useTabs?: boolean;
+}
+
export function format(
query: string,
language: string,
- options?: {
- case?: 'lower' | 'upper';
- indent?: string;
- }
+ options?: ISQLFormatOptions
) {
options = {
...{
// default options
case: 'upper',
- indent: ' ',
+ tabWidth: 2,
+ useTabs: false,
},
...options,
};
@@ -133,9 +137,10 @@ export function format(
firstKeyWord &&
allowedStatement.has(firstKeyWord.text.toLocaleLowerCase())
) {
- formattedStatement = sqlFormatter.format(statementText, {
- indent: options.indent,
+ formattedStatement = sqlFormat(statementText, {
+ tabWidth: options.tabWidth,
language: getLanguageForSqlFormatter(language),
+ useTabs: options.useTabs,
});
}
@@ -157,13 +162,19 @@ export function format(
);
}
-const SQL_FORMATTER_LANGUAGES = ['db2', 'n1ql', 'pl/sql', 'sql'] as const;
+// Override according to https://github.com/sql-formatter-org/sql-formatter/blob/master/docs/language.md
+const languageMappingOverride = {
+ presto: 'trino',
+ sparksql: 'spark',
+};
-type SqlFormatterLanguage = typeof SQL_FORMATTER_LANGUAGES[number];
+function getLanguageForSqlFormatter(language: string): string {
+ if (supportedDialects.includes(language)) {
+ return language;
+ }
-function getLanguageForSqlFormatter(language: string): SqlFormatterLanguage {
- if ((SQL_FORMATTER_LANGUAGES as readonly string[]).includes(language)) {
- return language as SqlFormatterLanguage;
+ if (language in languageMappingOverride) {
+ return languageMappingOverride[language];
}
return 'sql';
diff --git a/querybook/webapp/lib/utils/error.ts b/querybook/webapp/lib/utils/error.ts
index 6ab808a7c..4669c1bc1 100644
--- a/querybook/webapp/lib/utils/error.ts
+++ b/querybook/webapp/lib/utils/error.ts
@@ -3,6 +3,7 @@ import moment from 'moment';
import { formatDuration, generateFormattedDate } from './datetime';
+export type AxiosErrorWithMessage = AxiosError<{ error?: string }>;
export function formatError(error: any): string {
if (typeof error === 'string') {
return error;
@@ -14,17 +15,11 @@ export function formatError(error: any): string {
error.constructor === Error;
if (isErrorObject) {
if (isAxiosError(error)) {
- if (error.response) {
- if (
- error.response.data &&
- typeof error.response.data === 'object'
- ) {
- // The request was made and the server responded with a status code > 2xx
- if ('error' in error.response.data) {
- return error.response.data.error;
- }
- }
+ if (isAxiosErrorWithMessage(error)) {
+ return error.response.data.error;
+ }
+ if (error.response) {
if (
error.response.status === 429 &&
'flask-limit-key' in error.response.headers
@@ -45,6 +40,19 @@ export function isAxiosError(e: any): e is AxiosError {
return e instanceof Error && (e as AxiosError).isAxiosError;
}
+export function isAxiosErrorWithMessage(e: any): e is AxiosErrorWithMessage {
+ if (
+ isAxiosError(e) &&
+ e.response &&
+ e.response.data &&
+ typeof e.response.data === 'object' &&
+ 'error' in e.response.data
+ ) {
+ return true;
+ }
+ return false;
+}
+
function formatRateLimitError(headers: Record) {
const limitKey = headers['flask-limit-key'];
const limitAmount = headers['flask-limit-amount'];
diff --git a/querybook/webapp/lib/utils/index.ts b/querybook/webapp/lib/utils/index.ts
index d5fba7dc7..c9d3e47e7 100644
--- a/querybook/webapp/lib/utils/index.ts
+++ b/querybook/webapp/lib/utils/index.ts
@@ -161,11 +161,12 @@ export function getQueryEngineId(
}
export function arrayGroupByField<
- T,
+ T extends Record,
K extends keyof PickType
>(array: T[], byField?: K): Record {
+ type GroupedRecord = Record;
if (array.length === 0) {
- return {};
+ return {} as GroupedRecord;
}
return array.reduce((result, item) => {
const identifier: string = item[
@@ -173,7 +174,7 @@ export function arrayGroupByField<
] as any as string;
result[identifier] = item;
return result;
- }, {});
+ }, {} as GroupedRecord);
}
// from https://stackoverflow.com/a/39494245
diff --git a/querybook/webapp/resource/table.ts b/querybook/webapp/resource/table.ts
index 62f869b1a..6e7e6bbce 100644
--- a/querybook/webapp/resource/table.ts
+++ b/querybook/webapp/resource/table.ts
@@ -36,7 +36,7 @@ export const TableSamplesResource = {
ds.fetch(
{
url: `/table/${tableId}/samples/`,
- transformResponse: [JSONBig.parse],
+ transformResponse: [(data) => JSONBig.parse(data)],
},
{
environment_id: environmentId,
@@ -52,7 +52,7 @@ export const TableSamplesResource = {
ds.save(
{
url: `/table/${tableId}/samples/`,
- transformResponse: [JSONBig.parse],
+ transformResponse: [(data) => JSONBig.parse(data)],
},
{
environment_id: environmentId,
diff --git a/yarn.lock b/yarn.lock
index 968aaaec7..9d5a950c0 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -3246,13 +3246,20 @@
resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413"
integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==
-"@emotion/is-prop-valid@0.8.8", "@emotion/is-prop-valid@^0.8.8":
+"@emotion/is-prop-valid@0.8.8":
version "0.8.8"
resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a"
integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==
dependencies:
"@emotion/memoize" "0.7.4"
+"@emotion/is-prop-valid@^1.1.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz#7f2d35c97891669f7e276eb71c83376a5dc44c83"
+ integrity sha512-3aDpDprjM0AwaxGE09bOPkNxHpBd+kA6jty3RnaEXdweX1DF1U3VQpPYb0g1IStAuK7SVQ1cy+bNBBKp4W3Fjg==
+ dependencies:
+ "@emotion/memoize" "^0.8.0"
+
"@emotion/memoize@0.7.4":
version "0.7.4"
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb"
@@ -3263,6 +3270,11 @@
resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.5.tgz#2c40f81449a4e554e9fc6396910ed4843ec2be50"
integrity sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==
+"@emotion/memoize@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.8.0.tgz#f580f9beb67176fa57aae70b08ed510e1b18980f"
+ integrity sha512-G/YwXTkv7Den9mXDO7AhLWkE3q+I92B+VqAE+dYG4NGPaHZGvt3G8Q0p9vmE+sq7rTGphUbAvmQ9YpbfMQGGlA==
+
"@emotion/react@^11.1.1":
version "11.4.0"
resolved "https://registry.yarnpkg.com/@emotion/react/-/react-11.4.0.tgz#2465ad7b073a691409b88dfd96dc17097ddad9b7"
@@ -5653,16 +5665,16 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.5.6.tgz#9c03d3fed70a8d517c191b7734da2879b50ca26c"
integrity sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ==
-"@types/qs@^6.5.1":
- version "6.5.3"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.5.3.tgz#1c3b71b091eaeaf5924538006b7f70603ce63d38"
- integrity sha512-Jugo5V/1bS0fRhy2z8+cUAHEyWOATaz4rbyLVvcFs7+dXp5HfwpEwzF1Q11bB10ApUqHf+yTauxI0UXQDwGrbA==
-
"@types/qs@^6.9.5":
version "6.9.6"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.6.tgz#df9c3c8b31a247ec315e6996566be3171df4b3b1"
integrity sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==
+"@types/qs@^6.9.7":
+ version "6.9.7"
+ resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
+ integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
+
"@types/rc-time-picker@^3.4.1":
version "3.4.1"
resolved "https://registry.yarnpkg.com/@types/rc-time-picker/-/rc-time-picker-3.4.1.tgz#e35f7738e5c7b94dc1c22b21c2606ff92adac8d2"
@@ -5752,6 +5764,13 @@
dependencies:
"@types/react" "*"
+"@types/react-table@^6.8.5":
+ version "6.8.9"
+ resolved "https://registry.yarnpkg.com/@types/react-table/-/react-table-6.8.9.tgz#0925879352e4c15b9b9a7087481ac4268bf8e5ae"
+ integrity sha512-fVQXjy/EYDbgraScgjDONA291McKqGrw0R0NeK639fx2bS4T19TnXMjg3FjOPlkI3qYTQtFTPADlRYysaQIMpA==
+ dependencies:
+ "@types/react" "*"
+
"@types/react-transition-group@*":
version "2.0.16"
resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-2.0.16.tgz#2dcb9e396ab385ee19c4af1c9caa469a14cd042f"
@@ -6589,6 +6608,13 @@ ajv-errors@^1.0.0:
resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.0.tgz#ecf021fa108fd17dfb5e6b383f2dd233e31ffc59"
integrity sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=
+ajv-formats@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
+ dependencies:
+ ajv "^8.0.0"
+
ajv-keywords@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.2.0.tgz#e86b819c602cf8821ad637413698f1dec021847a"
@@ -6604,6 +6630,13 @@ ajv-keywords@^3.5.2:
resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
+ajv-keywords@^5.0.0:
+ version "5.1.0"
+ resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
+ integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+
ajv@^6.1.0:
version "6.5.4"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.5.4.tgz#247d5274110db653706b550fcc2b797ca28cfc59"
@@ -6644,6 +6677,16 @@ ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
+ajv@^8.0.0, ajv@^8.8.0:
+ version "8.12.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
ansi-align@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb"
@@ -7049,12 +7092,14 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==
-axios@0.21.1:
- version "0.21.1"
- resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8"
- integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==
+axios@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.2.tgz#72681724c6e6a43a9fea860fc558127dbe32f9f1"
+ integrity sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==
dependencies:
- follow-redirects "^1.10.0"
+ follow-redirects "^1.15.0"
+ form-data "^4.0.0"
+ proxy-from-env "^1.1.0"
babel-jest@^26.6.3:
version "26.6.3"
@@ -7217,13 +7262,16 @@ babel-plugin-react-docgen@^4.2.1:
lodash "^4.17.15"
react-docgen "^5.0.0"
-"babel-plugin-styled-components@>= 1":
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-1.8.0.tgz#9dd054c8e86825203449a852a5746f29f2dab857"
- integrity sha512-PcrdbXFO/9Plo9JURIj8G0Dsz+Ct8r+NvjoLh6qPt8Y/3EIAj1gHGW1ocPY1IkQbXZLBEZZSRBAxJem1KFdBXg==
+"babel-plugin-styled-components@>= 1.12.0":
+ version "2.0.7"
+ resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.7.tgz#c81ef34b713f9da2b7d3f5550df0d1e19e798086"
+ integrity sha512-i7YhvPgVqRKfoQ66toiZ06jPNA3p6ierpfUuEWxNF+fV27Uv5gxBkf8KZLHUCc1nFA9j6+80pYoIpqCeyW3/bA==
dependencies:
- "@babel/helper-annotate-as-pure" "^7.0.0"
- lodash "^4.17.10"
+ "@babel/helper-annotate-as-pure" "^7.16.0"
+ "@babel/helper-module-imports" "^7.16.0"
+ babel-plugin-syntax-jsx "^6.18.0"
+ lodash "^4.17.11"
+ picomatch "^2.3.0"
babel-plugin-styled-components@^1.12.0:
version "1.12.0"
@@ -8128,11 +8176,16 @@ clone-deep@^4.0.1:
kind-of "^6.0.2"
shallow-clone "^3.0.0"
-clsx@^1.0.4, clsx@^1.1.1:
+clsx@^1.0.4:
version "1.1.1"
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
+clsx@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12"
+ integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==
+
co@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
@@ -8568,12 +8621,12 @@ create-react-context@0.3.0:
gud "^1.0.0"
warning "^4.0.3"
-cron-parser@4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.6.0.tgz#404c3fdbff10ae80eef6b709555d577ef2fd2e0d"
- integrity sha512-guZNLMGUgg6z4+eGhmHGw7ft+v6OQeuHzd1gcLxCo9Yg/qoxmG3nindp2/uwGCLizEisf2H0ptqeVXeoCpP6FA==
+cron-parser@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.yarnpkg.com/cron-parser/-/cron-parser-4.7.0.tgz#184eac151f810e7bf2b32ad37b4dd4a711797cdc"
+ integrity sha512-BdAELR+MCT2ZWsIBhZKDuUqIUCBjHHulPJnm53OfdRLA4EWBjva3R+KM5NeidJuGsNXdEcZkjC7SCnkW5rAFSA==
dependencies:
- luxon "^3.0.1"
+ luxon "^3.1.0"
cross-fetch@^3.0.4:
version "3.1.4"
@@ -10304,11 +10357,16 @@ fast-json-parse@^1.0.3:
resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d"
integrity sha512-FRWsaZRWEJ1ESVNbDWmsAlqDk96gPQezzLghafp5J4GUKjbCz3OkAHuZs5TuPEtkbVQERysLp9xv6c24fBm8Aw==
-fast-json-stable-stringify@2.0.0, fast-json-stable-stringify@^2.0.0:
+fast-json-stable-stringify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I=
+fast-json-stable-stringify@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
+ integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
+
fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
@@ -10548,10 +10606,10 @@ follow-redirects@^1.0.0:
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43"
integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==
-follow-redirects@^1.10.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7"
- integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg==
+follow-redirects@^1.15.0:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
+ integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
for-in@^1.0.2:
version "1.0.2"
@@ -10604,6 +10662,15 @@ form-data@^3.0.0:
combined-stream "^1.0.8"
mime-types "^2.1.12"
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
@@ -10613,7 +10680,7 @@ form-data@~2.3.2:
combined-stream "1.0.6"
mime-types "^2.1.12"
-formik@2.2.9:
+formik@^2.2.9:
version "2.2.9"
resolved "https://registry.yarnpkg.com/formik/-/formik-2.2.9.tgz#8594ba9c5e2e5cf1f42c5704128e119fc46232d0"
integrity sha512-LQLcISMmf1r5at4/gyJigGn0gOwFbeEAlji+N9InZF6LIMXnFNkO42sCI8Jt84YZggpD4cPWObAZaxpEFtSzNA==
@@ -11070,10 +11137,10 @@ globby@^9.2.0:
pify "^4.0.1"
slash "^2.0.0"
-goober@^2.0.35:
- version "2.0.38"
- resolved "https://registry.yarnpkg.com/goober/-/goober-2.0.38.tgz#ca81fbc37b2fc7a6cfe10fd3d8be3a1867927ac2"
- integrity sha512-oGrP8xMB3k6EEcEAuKstd05r0JRFs8L9ouPCTKxupu85PdDJ443LTCXvxRVMeYN6pVhV6htVb7FaKTk5JlFzCQ==
+goober@^2.1.10:
+ version "2.1.11"
+ resolved "https://registry.yarnpkg.com/goober/-/goober-2.1.11.tgz#bbd71f90d2df725397340f808dbe7acc3118e610"
+ integrity sha512-5SS2lmxbhqH0u9ABEWq7WPU69a4i2pYcHeCxqaNq6Cw3mnrF0ghWNM4tEGid4dKy8XNIAUbuThuozDHHKJVh3A==
graceful-fs@^4.1.11, graceful-fs@^4.1.2:
version "4.1.11"
@@ -11639,10 +11706,10 @@ immediate@~3.0.5:
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
-immer@8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/immer/-/immer-8.0.1.tgz#9c73db683e2b3975c424fb0572af5889877ae656"
- integrity sha512-aqXhGP7//Gui2+UrEtvxZxSquQVXTpZ7KDxfCcKAF3Vysvw0CViVaW9RZ1j1xlIYqaaaipBoqdqeibkc18PNvA==
+immer@^9.0.17:
+ version "9.0.17"
+ resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.17.tgz#7cfe8fbb8b461096444e9da7a5ec4a67c6c4adf4"
+ integrity sha512-+hBruaLSQvkPfxRiTLK/mi4vLH+/VQS6z2KJahdoxlleFOI8ARqzOF17uy12eFDlqWmPoygwc5evgwcp+dlHhg==
immutable@3.7.4:
version "3.7.4"
@@ -12931,6 +12998,11 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
@@ -13161,10 +13233,10 @@ loader-utils@^2.0.0:
emojis-list "^3.0.0"
json5 "^2.1.2"
-localforage@^1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.7.3.tgz#0082b3ca9734679e1bd534995bdd3b24cf10f204"
- integrity sha512-1TulyYfc4udS7ECSBT2vwJksWbkwwTX8BzeUIiq8Y07Riy7bDAAnxDaPU/tWyOVmQAcWJIEIFP9lPfBGqVoPgQ==
+localforage@^1.10.0:
+ version "1.10.0"
+ resolved "https://registry.yarnpkg.com/localforage/-/localforage-1.10.0.tgz#5c465dc5f62b2807c3a84c0c6a1b1b3212781dd4"
+ integrity sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==
dependencies:
lie "3.1.1"
@@ -13365,10 +13437,10 @@ lucide-react@^0.17.13:
resolved "https://registry.yarnpkg.com/lucide-react/-/lucide-react-0.17.13.tgz#8019893e241efe7418e9bb88d05116d40235236b"
integrity sha512-fOPHMncOqQYqjZX/OCrqdYQGUYBZ8VMPcw8PAjWjEZXSyfLue2Tbc/W3DAiTZh1ryx7ryQ00nn1KtTG+jHbdmA==
-luxon@^3.0.1:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.0.4.tgz#d179e4e9f05e092241e7044f64aaa54796b03929"
- integrity sha512-aV48rGUwP/Vydn8HT+5cdr26YYQiUZ42NM6ToMoaGKwYfWbfLeRkEu1wXWMHBZT6+KyLfcbbtVcoQFCbbPjKlw==
+luxon@^3.1.0:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.2.1.tgz#14f1af209188ad61212578ea7e3d518d18cee45f"
+ integrity sha512-QrwPArQCNLAKGO/C+ZIilgIuDnEnKx5QYODdDtbFaxzsbZcc/a7WFq7MhsVYgRlwawLtvOUESTlfJ+hc/USqPg==
make-dir@^2.0.0, make-dir@^2.1.0:
version "2.1.0"
@@ -13505,16 +13577,16 @@ memfs@^3.1.2, memfs@^3.2.2:
dependencies:
fs-monkey "1.0.3"
-memoize-one@5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.2.tgz#6aba5276856d72fb44ead3efab86432f94ba203d"
- integrity sha512-o7lldN4fs/axqctc03NF+PMhd2veRrWeJ2n2GjEzUPBD4F9rmNg4A+bQCACIzwjHJEXuYv4aFFMaH35KZfHUrw==
-
memoize-one@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.0.0.tgz#d55007dffefb8de7546659a1722a5d42e128286e"
integrity sha512-7g0+ejkOaI9w5x6LvQwmj68kUj6rxROywPSCqmclG/HBacmFnZqhVscQ8kovkn9FBCNJmOz6SY42+jnvZzDWdw==
+memoize-one@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
+ integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
+
memoizerific@^1.11.3:
version "1.11.3"
resolved "https://registry.yarnpkg.com/memoizerific/-/memoizerific-1.11.3.tgz#7c87a4646444c32d75438570905f2dbd1b1a805a"
@@ -13715,12 +13787,12 @@ mini-create-react-context@^0.3.0:
"@babel/runtime" "^7.12.1"
tiny-warning "^1.0.3"
-mini-css-extract-plugin@2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.1.0.tgz#4aa6558b527ad4c168fee4a20b6092ebe9f98309"
- integrity sha512-SV1GgjMcfqy6hW07rAniUbQE4qS3inh3v4rZEUySkPRWy3vMbS3jUCjMOvNI4lUnDlQYJEmuUqKktTCNY5koFQ==
+mini-css-extract-plugin@^2.7.2:
+ version "2.7.2"
+ resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.2.tgz#e049d3ea7d3e4e773aad585c6cb329ce0c7b72d7"
+ integrity sha512-EdlUizq13o0Pd+uCp+WO/JpkLvHRVGt97RqfeGhXqAcorYo1ypJSpkV+WDT0vY/kmh/p7wRdJNJtuyK540PXDw==
dependencies:
- schema-utils "^3.0.0"
+ schema-utils "^4.0.0"
minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
version "1.0.1"
@@ -13858,6 +13930,11 @@ moo@^0.4.3:
resolved "https://registry.yarnpkg.com/moo/-/moo-0.4.3.tgz#3f847a26f31cf625a956a87f2b10fbc013bfd10e"
integrity sha512-gFD2xGCl8YFgGHsqJ9NKRVdwlioeW3mI1iqfLNYQOv0+6JRwG58Zk9DIGQgyIaffSYaO1xsKnMaYzzNr1KyIAw==
+moo@^0.5.0:
+ version "0.5.2"
+ resolved "https://registry.yarnpkg.com/moo/-/moo-0.5.2.tgz#f9fe82473bc7c184b0d32e2215d3f6e67278733c"
+ integrity sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==
+
move-concurrently@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@@ -13940,6 +14017,16 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=
+nearley@^2.20.1:
+ version "2.20.1"
+ resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.20.1.tgz#246cd33eff0d012faf197ff6774d7ac78acdd474"
+ integrity sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==
+ dependencies:
+ commander "^2.19.0"
+ moo "^0.5.0"
+ railroad-diagrams "^1.0.0"
+ randexp "0.4.6"
+
nearley@^2.7.10:
version "2.19.0"
resolved "https://registry.yarnpkg.com/nearley/-/nearley-2.19.0.tgz#37717781d0fd0f2bfc95e233ebd75678ca4bda46"
@@ -14151,10 +14238,10 @@ normalize-range@^0.1.2:
resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=
-normalizr@3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/normalizr/-/normalizr-3.3.0.tgz#6f44b95e8bf2201845a9e551920c4e5861166d27"
- integrity sha512-u8Us8Ms5KpY0mmNwML4OBxNKvlmSKeXfPBIXU9XmcejrZUjhIvUOd8RYBq62UL4JHxrcO4wqo2sL4s8B74Hadw==
+normalizr@^3.6.2:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/normalizr/-/normalizr-3.6.2.tgz#ac1571207dc3008adb46e3f62311c17f11dcf083"
+ integrity sha512-30qCybsBaCBciotorvuOZTCGEg2AXrJfADMT2Kk/lvpIAcipHdK0zc33nNtwKzyfQAqIJXAcqET6YgflYUgsoQ==
npm-bundled@^1.0.1:
version "1.0.5"
@@ -15624,6 +15711,11 @@ proxy-addr@~2.0.5:
forwarded "~0.1.2"
ipaddr.js "1.9.0"
+proxy-from-env@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
prr@~1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
@@ -15691,13 +15783,6 @@ pure-color@^1.2.0:
resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e"
integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==
-qs@6.10.3:
- version "6.10.3"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
- integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
- dependencies:
- side-channel "^1.0.4"
-
qs@6.7.0, qs@^6.6.0:
version "6.7.0"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
@@ -15710,6 +15795,13 @@ qs@^6.10.0:
dependencies:
side-channel "^1.0.4"
+qs@^6.11.0:
+ version "6.11.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
@@ -15970,12 +16062,12 @@ react-focus-lock@2.5.2:
use-callback-ref "^1.2.5"
use-sidecar "^1.0.5"
-react-hot-toast@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.0.0.tgz#6e83b2937a20b040acb2d5fd08bcf32561b7832a"
- integrity sha512-J0J2rcSvKetlziVquwESgk85pV9JB0Dz3RJIZcAEv7CWU2y2z8BQqxmZHZUxjPKIBGPqXAocZch4Kj4oUdX4+w==
+react-hot-toast@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/react-hot-toast/-/react-hot-toast-2.4.0.tgz#b91e7a4c1b6e3068fc599d3d83b4fb48668ae51d"
+ integrity sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==
dependencies:
- goober "^2.0.35"
+ goober "^2.1.10"
react-input-autosize@^3.0.0:
version "3.0.0"
@@ -16115,12 +16207,14 @@ react-shallow-renderer@^16.13.1:
object-assign "^4.1.1"
react-is "^16.12.0 || ^17.0.0"
-react-table@6.8.6:
- version "6.8.6"
- resolved "https://registry.yarnpkg.com/react-table/-/react-table-6.8.6.tgz#a0ad8b4839319052d5befc012603fb161e52ede3"
- integrity sha1-oK2LSDkxkFLVvvwBJgP7Fh5S7eM=
+react-table@^6.8.6:
+ version "6.11.5"
+ resolved "https://registry.yarnpkg.com/react-table/-/react-table-6.11.5.tgz#84e52885db426a07a6c4ce2c7e942f2cd4e2aa58"
+ integrity sha512-LM+AS9v//7Y7lAlgTWW/cW6Sn5VOb3EsSkKQfQTzOW8FngB1FUskLLNEVkAYsTX9LjOWR3QlGjykJqCE6eXT/g==
dependencies:
+ "@types/react-table" "^6.8.5"
classnames "^2.2.5"
+ react-is "^16.8.1"
react-test-renderer@^17.0.0:
version "17.0.2"
@@ -16641,6 +16735,11 @@ require-directory@^2.1.1:
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I=
+require-from-string@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
+ integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
+
require-main-filename@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b"
@@ -16931,6 +17030,16 @@ schema-utils@^3.1.0, schema-utils@^3.1.1:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
+schema-utils@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
+ integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.8.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.0.0"
+
scroll-into-view-if-needed@^2.2.24:
version "2.2.24"
resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.24.tgz#12bca532990769bd509115a49edcfa755e92a0ea"
@@ -17460,12 +17569,13 @@ sprintf-js@~1.0.2:
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
-sql-formatter@2.3.4:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-2.3.4.tgz#85ff9a946d8157e3917c0b1db514ca8184a1b6f1"
- integrity sha512-CajWtvzYoBJbD5PQeVe3E7AOHAIYvRQEPOKgF9kfKNeY8jtjBiiA6pDzkMuAID8jJMluoPvyKveLigSaA5tKQQ==
+sql-formatter@^12.0.4:
+ version "12.0.4"
+ resolved "https://registry.yarnpkg.com/sql-formatter/-/sql-formatter-12.0.4.tgz#1847eaac7b269ffefbd21d211a00cf002e8cfaee"
+ integrity sha512-uyaLYIYe+e8tIpMiWCf2drSVWUQ6Ln8RC5L96ELVPHX4e3jNvvAz7nKSZKSan0rMyHpimc+D8HaiMQ94eFriEQ==
dependencies:
- lodash "^4.17.20"
+ argparse "^2.0.1"
+ nearley "^2.20.1"
sshpk@^1.7.0:
version "1.14.2"
@@ -17857,17 +17967,17 @@ style-to-object@0.3.0, style-to-object@^0.3.0:
dependencies:
inline-style-parser "0.1.1"
-styled-components@5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.2.1.tgz#6ed7fad2dc233825f64c719ffbdedd84ad79101a"
- integrity sha512-sBdgLWrCFTKtmZm/9x7jkIabjFNVzCUeKfoQsM6R3saImkUnjx0QYdLwJHBjY9ifEcmjDamJDVfknWm1yxZPxQ==
+styled-components@5.3.6:
+ version "5.3.6"
+ resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.6.tgz#27753c8c27c650bee9358e343fc927966bfd00d1"
+ integrity sha512-hGTZquGAaTqhGWldX7hhfzjnIYBZ0IXQXkCYdvF1Sq3DsUaLx6+NTHC5Jj1ooM2F68sBiVz3lvhfwQs/S3l6qg==
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/traverse" "^7.4.5"
- "@emotion/is-prop-valid" "^0.8.8"
+ "@emotion/is-prop-valid" "^1.1.0"
"@emotion/stylis" "^0.8.4"
"@emotion/unitless" "^0.7.4"
- babel-plugin-styled-components ">= 1"
+ babel-plugin-styled-components ">= 1.12.0"
css-to-react-native "^3.0.0"
hoist-non-react-statics "^3.0.0"
shallowequal "^1.1.0"