From 3775ea893d93e02a1589dea53e408a6050fcaae4 Mon Sep 17 00:00:00 2001 From: "J.C. Zhong" Date: Wed, 11 Jan 2023 05:40:51 +0000 Subject: [PATCH 1/3] chore: update yaml-loader --- .github/pr-title-checker-config.json | 2 +- package.json | 2 +- .../components/DataDoc/DataDocCellControl.tsx | 12 +-- .../components/DataDoc/DataDocLoading.tsx | 3 +- .../DataTableViewMini/ColumnPanelView.tsx | 3 +- querybook/webapp/components/Info/FAQ.tsx | 3 +- .../webapp/components/Landing/Landing.tsx | 3 +- .../UserSettingsMenu/UserSettingsMenu.tsx | 18 +---- querybook/webapp/config.d.ts | 76 +++++++++++++++++++ querybook/webapp/const/queryResultLimit.ts | 5 +- .../lib/query-result/error-suggestion.ts | 11 +-- querybook/webapp/redux/user/reducer.ts | 11 +-- webpack.config.js | 2 +- yarn.lock | 25 ++++-- 14 files changed, 111 insertions(+), 65 deletions(-) create mode 100644 querybook/webapp/config.d.ts diff --git a/.github/pr-title-checker-config.json b/.github/pr-title-checker-config.json index a6771ceb8..90b777da8 100644 --- a/.github/pr-title-checker-config.json +++ b/.github/pr-title-checker-config.json @@ -4,6 +4,6 @@ "color": "EEEEEE" }, "CHECKS": { - "regexp": "(build|fix|ci|docs|ui|refactor|test|feat|minor|MAJOR|BREAKING CHANGE)(\\(.+\\))?!?\\:" + "regexp": "(build|fix|ci|docs|ui|refactor|test|feat|minor|MAJOR|BREAKING CHANGE|\\[Snyk\\])(\\(.+\\))?!?\\:" } } diff --git a/package.json b/package.json index 885944c4b..cd5ae1141 100644 --- a/package.json +++ b/package.json @@ -102,7 +102,7 @@ "typescript": "4.4.4", "webpack": "5.65.0", "webpack-cli": "4.7.0", - "yaml-loader": "0.6.0", + "yaml-loader": "^0.8.0", "yup": "^0.32.11" }, "devDependencies": { diff --git a/querybook/webapp/components/DataDoc/DataDocCellControl.tsx b/querybook/webapp/components/DataDoc/DataDocCellControl.tsx index 7eddad251..fa25c1853 100644 --- a/querybook/webapp/components/DataDoc/DataDocCellControl.tsx +++ b/querybook/webapp/components/DataDoc/DataDocCellControl.tsx @@ -2,6 +2,7 @@ import clsx from 'clsx'; import React, { useCallback } from 'react'; import toast from 'react-hot-toast'; +import DatadocConfig from 'config/datadoc.yaml'; import { ComponentType, ElementType } from 'const/analytics'; import { IDataCellMeta } from 'const/datadoc'; import { useBoundFunc } from 'hooks/useBoundFunction'; @@ -16,16 +17,7 @@ import { IListMenuItem, ListMenu } from 'ui/Menu/ListMenu'; const COPY_CELL_SHORTCUT = getShortcutSymbols(KeyMap.dataDoc.copyCell.key); const PASTE_CELL_SHORTCUT = getShortcutSymbols(KeyMap.dataDoc.pasteCell.key); -const cellTypes: Record< - string, - { - key: string; - icon: string; - name?: string; - meta: Record; - meta_default: Record; - } -> = require('config/datadoc.yaml').cell_types; +const cellTypes = DatadocConfig.cell_types; interface IProps { index?: number; diff --git a/querybook/webapp/components/DataDoc/DataDocLoading.tsx b/querybook/webapp/components/DataDoc/DataDocLoading.tsx index da9e9fb4f..40f7936a9 100644 --- a/querybook/webapp/components/DataDoc/DataDocLoading.tsx +++ b/querybook/webapp/components/DataDoc/DataDocLoading.tsx @@ -1,11 +1,12 @@ import { sample } from 'lodash'; import React from 'react'; +import loadingHintsConfig from 'config/loading_hints.yaml'; import { Icon } from 'ui/Icon/Icon'; import { LoadingIcon } from 'ui/Loading/Loading'; import { Subtitle, Title } from 'ui/Title/Title'; -const loadingHints: string[] = require('config/loading_hints.yaml').hints; +const loadingHints = loadingHintsConfig.hints; export const DataDocLoading: React.FC = () => { const hint = sample(loadingHints); diff --git a/querybook/webapp/components/DataTableViewMini/ColumnPanelView.tsx b/querybook/webapp/components/DataTableViewMini/ColumnPanelView.tsx index 60cc09b7f..6c604b267 100644 --- a/querybook/webapp/components/DataTableViewMini/ColumnPanelView.tsx +++ b/querybook/webapp/components/DataTableViewMini/ColumnPanelView.tsx @@ -2,13 +2,12 @@ import { ContentState } from 'draft-js'; import React from 'react'; import { useSelector } from 'react-redux'; +import hiveTypeInfo from 'config/type_info.yaml'; import { prettyPrintType } from 'lib/utils/complex-types'; import { IStoreState } from 'redux/store/types'; import { PanelSection, SubPanelSection } from './PanelSection'; -const hiveTypeInfo: Record = require('config/type_info.yaml'); - interface IColumnPanelViewProps { columnId: number; } diff --git a/querybook/webapp/components/Info/FAQ.tsx b/querybook/webapp/components/Info/FAQ.tsx index 66371469b..1add37c3e 100644 --- a/querybook/webapp/components/Info/FAQ.tsx +++ b/querybook/webapp/components/Info/FAQ.tsx @@ -1,12 +1,13 @@ import * as React from 'react'; +import faqsConfig from 'config/faqs.yaml'; import { Content } from 'ui/Content/Content'; import { Markdown } from 'ui/Markdown/Markdown'; import { Subtitle } from 'ui/Title/Title'; import './FAQ.scss'; -const faqs: Array<{ q: string; a: string }> = require('config/faqs.yaml').faqs; +const faqs = faqsConfig.faqs; export const FAQ: React.FunctionComponent = () => (
diff --git a/querybook/webapp/components/Landing/Landing.tsx b/querybook/webapp/components/Landing/Landing.tsx index 5ddb8752b..6dac0ee41 100644 --- a/querybook/webapp/components/Landing/Landing.tsx +++ b/querybook/webapp/components/Landing/Landing.tsx @@ -3,6 +3,7 @@ import React from 'react'; import { useDispatch } from 'react-redux'; import { QuerybookSidebarUIGuide } from 'components/UIGuide/QuerybookSidebarUIGuide'; +import loadingHintsConfig from 'config/loading_hints.yaml'; import { ComponentType, ElementType } from 'const/analytics'; import { useShallowSelector } from 'hooks/redux/useShallowSelector'; import { useBrowserTitle } from 'hooks/useBrowserTitle'; @@ -21,7 +22,7 @@ import { Column, Columns } from 'ui/Column/Column'; import './Landing.scss'; -const querybookHints: string[] = require('config/loading_hints.yaml').hints; +const querybookHints = loadingHintsConfig.hints; const DefaultLanding: React.FC = ({ children }) => { const { userInfo, recentDataDocs, favoriteDataDocs, environment } = diff --git a/querybook/webapp/components/UserSettingsMenu/UserSettingsMenu.tsx b/querybook/webapp/components/UserSettingsMenu/UserSettingsMenu.tsx index cc33debc7..88dabbb6a 100644 --- a/querybook/webapp/components/UserSettingsMenu/UserSettingsMenu.tsx +++ b/querybook/webapp/components/UserSettingsMenu/UserSettingsMenu.tsx @@ -2,6 +2,7 @@ import React, { useMemo } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { UserSettingsTab } from 'components/EnvironmentAppRouter/modalRoute/UserSettingsMenuRoute'; +import userSettingConfig from 'config/user_setting.yaml'; import { titleize } from 'lib/utils'; import { availableEnvironmentsSelector } from 'redux/environment/selector'; import { notificationServiceSelector } from 'redux/notificationService/selector'; @@ -12,23 +13,6 @@ import { makeSelectOptions, Select } from 'ui/Select/Select'; import './UserSettingsMenu.scss'; -const userSettingConfig: Record< - string, - { - options: Array< - | string - | { - value: string; - key: string; - } - >; - default: string; - helper: string; - tab: UserSettingsTab; - per_env?: boolean; - } -> = require('config/user_setting.yaml'); - export const UserSettingsMenu: React.FC<{ tab: UserSettingsTab }> = ({ tab, }) => { diff --git a/querybook/webapp/config.d.ts b/querybook/webapp/config.d.ts new file mode 100644 index 000000000..9901e7d28 --- /dev/null +++ b/querybook/webapp/config.d.ts @@ -0,0 +1,76 @@ +declare module 'config/datadoc.yaml' { + const data: { + cell_types: Record< + string, + { + key: string; + icon: string; + name?: string; + meta: Record; + meta_default: Record; + } + >; + }; + export default data; +} + +declare module 'config/faqs.yaml' { + const data: { + faqs: Array<{ q: string; a: string }>; + }; + export default data; +} + +declare module 'config/loading_hints.yaml' { + const data: { + hints: string[]; + }; + export default data; +} + +declare module 'config/type_info.yaml' { + const data: Record; + export default data; +} + +declare module 'config/user_setting.yaml' { + const data: Record< + string, + { + options: Array< + | string + | { + value: string; + key: string; + } + >; + default: string; + helper: string; + tab: UserSettingsTab; + per_env?: boolean; + } + >; + export default data; +} + +declare module 'config/query_result_limit.yaml' { + const data: { + default_query_result_size: number; + query_result_size_options: number[]; + }; + export default data; +} + +declare module 'config/query_error.yaml' { + const data: Record< + string, + Record< + string, + { + regex: string; + message: string; + } + > + >; + export default data; +} diff --git a/querybook/webapp/const/queryResultLimit.ts b/querybook/webapp/const/queryResultLimit.ts index c7560670f..d188fa8b7 100644 --- a/querybook/webapp/const/queryResultLimit.ts +++ b/querybook/webapp/const/queryResultLimit.ts @@ -1,9 +1,8 @@ // Make sure this is in increasing order // export const test = 5; - -const QueryResultLimitConfig = require('config/query_result_limit.yaml'); +import QueryResultLimitConfig from 'config/query_result_limit.yaml'; export const StatementExecutionDefaultResultSize = QueryResultLimitConfig.default_query_result_size; -export const StatementExecutionResultSizes: number[] = +export const StatementExecutionResultSizes = QueryResultLimitConfig.query_result_size_options; diff --git a/querybook/webapp/lib/query-result/error-suggestion.ts b/querybook/webapp/lib/query-result/error-suggestion.ts index 708dce34d..a09487ef7 100644 --- a/querybook/webapp/lib/query-result/error-suggestion.ts +++ b/querybook/webapp/lib/query-result/error-suggestion.ts @@ -1,3 +1,4 @@ +import queryErrorsByLanguage from 'config/query_error.yaml'; import { IQueryEngine } from 'const/queryEngine'; import { IQueryError, @@ -5,16 +6,6 @@ import { IStatementExecution, } from 'const/queryExecution'; -const queryErrorsByLanguage: Record< - string, - Record< - string, - { - regex: string; - message: string; - } - > -> = require('config/query_error.yaml'); const SHARED_ERROR_SUGGESTION = 'common'; // Merge all the common in diff --git a/querybook/webapp/redux/user/reducer.ts b/querybook/webapp/redux/user/reducer.ts index 7ff5aca72..e16cf965a 100644 --- a/querybook/webapp/redux/user/reducer.ts +++ b/querybook/webapp/redux/user/reducer.ts @@ -1,5 +1,6 @@ import { produce } from 'immer'; +import userSettingsConfig from 'config/user_setting.yaml'; import localStore from 'lib/local-store'; import { USER_SETTINGS_KEY } from 'lib/local-store/const'; import { EnvironmentAction } from 'redux/environment/types'; @@ -7,16 +8,6 @@ import { NotificationServiceAction } from 'redux/notificationService/types'; import { IUserState, UserAction } from './types'; -const userSettingsConfig: Record< - string, - { - default: string; - helper: string; - options: Array; - per_env?: boolean; - } -> = require('config/user_setting.yaml'); - function computeUserSettings( customSetting: Record, currentEnvId?: number diff --git a/webpack.config.js b/webpack.config.js index d98b120bd..8658ef1cd 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -205,7 +205,7 @@ module.exports = (env, options) => { { test: /\.ya?ml$/, include: path.resolve(__dirname, 'querybook/config'), - use: ['json-loader', 'yaml-loader'], + use: 'yaml-loader', }, { test: /\.md$/i, diff --git a/yarn.lock b/yarn.lock index 56c0cc0ea..846646842 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12422,6 +12422,11 @@ javascript-natural-sort@0.7.1: resolved "https://registry.yarnpkg.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz#f9e2303d4507f6d74355a73664d1440fb5a0ef59" integrity sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw== +javascript-stringify@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz#27c76539be14d8bd128219a2d731b09337904e79" + integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg== + jest-changed-files@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" @@ -19457,15 +19462,16 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yaml-loader@0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.6.0.tgz#fe1c48b9f4803dace55a59a1474e790ba6ab1b48" - integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow== +yaml-loader@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.8.0.tgz#c839325e3fdee082b3768b2a21fe34fde5d96f61" + integrity sha512-LjeKnTzVBKWiQBeE2L9ssl6WprqaUIxCSNs5tle8PaDydgu3wVFXTbMfsvF2MSErpy9TDVa092n4q6adYwJaWg== dependencies: - loader-utils "^1.4.0" - yaml "^1.8.3" + javascript-stringify "^2.0.1" + loader-utils "^2.0.0" + yaml "^2.0.0" -yaml@^1.10.0, yaml@^1.8.3: +yaml@^1.10.0: version "1.10.2" resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== @@ -19475,6 +19481,11 @@ yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== +yaml@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.2.1.tgz#3014bf0482dcd15147aa8e56109ce8632cd60ce4" + integrity sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw== + yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" From 33e49056cea1527783837b1ea1f3d5bed1c1f6a9 Mon Sep 17 00:00:00 2001 From: "J.C. Zhong" Date: Wed, 11 Jan 2023 21:31:07 +0000 Subject: [PATCH 2/3] remove json-loader --- .storybook/webpack.js | 2 +- package.json | 3 +-- yarn.lock | 5 ----- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.storybook/webpack.js b/.storybook/webpack.js index c0a903397..564c911d6 100644 --- a/.storybook/webpack.js +++ b/.storybook/webpack.js @@ -41,7 +41,7 @@ module.exports = async (config) => { config.module.rules.push({ test: /\.ya?ml$/, include: path.resolve(__dirname, 'querybook/config'), - use: ['json-loader', 'yaml-loader'], + use: 'yaml-loader', }); config.module.rules.push({ test: /\.(ts|tsx)$/, diff --git a/package.json b/package.json index cd5ae1141..3df417911 100644 --- a/package.json +++ b/package.json @@ -168,7 +168,6 @@ "eslint-plugin-unused-imports": "^2.0.0", "jest": "26.6.3", "jest-esm-transformer": "^1.0.0", - "json-loader": "^0.5.7", "postcss-loader": "^6.1.0", "postcss-preset-env": "6.7.0", "prettier": "2.7.1", @@ -180,4 +179,4 @@ "tslint": "^6.1.3", "webpack-dev-server": "^3.11.2" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 846646842..1ba7145d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12916,11 +12916,6 @@ json-bigint@^1.0.0: dependencies: bignumber.js "^9.0.0" -json-loader@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" - integrity sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w== - json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" From 517b0569e619c551f3aac9141da89b8537606f38 Mon Sep 17 00:00:00 2001 From: "J.C. Zhong" Date: Wed, 11 Jan 2023 22:35:15 +0000 Subject: [PATCH 3/3] fix storybook --- .storybook/main.js | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.storybook/main.js b/.storybook/main.js index e5ff6fa76..76f8335bc 100644 --- a/.storybook/main.js +++ b/.storybook/main.js @@ -7,4 +7,8 @@ module.exports = { core: { builder: 'webpack5', }, + // https://github.com/pmmmwh/react-refresh-webpack-plugin/issues/176#issuecomment-768238380 + reactOptions: { + fastRefresh: true, + }, }; diff --git a/package.json b/package.json index 3df417911..d69ae46ae 100644 --- a/package.json +++ b/package.json @@ -179,4 +179,4 @@ "tslint": "^6.1.3", "webpack-dev-server": "^3.11.2" } -} \ No newline at end of file +}