Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Theming] Fix tsc output #498

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"dist",
"lib",
"lib/constants",
"lib/icons",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We import directly from here, so I think it should also be present here?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, it seems you have to manually specify the nested paths here so I don't know how it was working. I remember I had to specify in daylight exactly "files": [ "dist", "dist/static", "dist/static/media" ], otherwise it would not output the media folder . But whatever this seems consistent

"lib/utils"
],
"types": "./lib/index.d.ts",
Expand All @@ -30,7 +31,7 @@
"build:icons:deprecated": "svgr --expand-props none --template src/utils/svgToIconTemplate/index.js -d src/icons/ src/svgs/deprecated/",
"build:icons:index": "create-index src/icons/",
"build:rollup": "rollup -c",
"build:babel": "babel src -d lib --extensions '.js,.ts,.tsx'",
"build:babel": "babel src -d lib --extensions '.js,.ts,.tsx' --ignore '**/*.test.{js,ts,tsx}'",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We currently build test files, which seems unnecessary/inadvisable.

I got side-tracked a bit about keeping actual source vs. test separate, could be a good Cooldown item to get things up to Open Source Best Practices.

"build:svgs:index": "create-index src/svgs/ --recursive --update --extensions svg",
"publish-package": "run-s build && yarn publish",
"heroku-postbuild": "yarn run build:icons && yarn run build:icons:index && yarn run build-storybook",
Expand Down
4 changes: 2 additions & 2 deletions shared/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
"noUnusedLocals": true,
"noUnusedParameters": true,
"paths": {
"emotion-theming": ["types/emotion-theming"],
"@emotion/styled": ["types/@emotion/styled"]
"emotion-theming": ["src/types/emotion-theming"],
"@emotion/styled": ["src/types/@emotion/styled"]
},
"resolveJsonModule": true,
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/accordion/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Accordion } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/alert/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React, { ReactElement } from 'react';
import TestRenderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Alert } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/avatar/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Avatar } from '.';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/banner/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import TestRenderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Banner } from './index';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { LinkButton } from './index';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import CameraIcon from '../../../../svgs/icons/camera-icon.svg';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { TextButton } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/button/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';
import { primaryTheme } from 'src/constants/themes';

import CameraIcon from '../../svgs/icons/camera-icon.svg';
Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/callout/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { primaryTheme } from 'src/constants/themes';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import NeckGlyph from '../../svgs/glyphs/neck-glyph.svg';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/carousel/arrow/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import Arrow from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/carousel/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Carousel } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/chip/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Chip } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/container/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Container } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/dialogModal/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { ModalTitle } from './style';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/dropdown/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { DesktopDropdown } from './desktopDropdown';
import { MobileDropdown } from './mobileDropdown';
Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/field/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { MessageItem } from '../verificationMessages/style';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/immersiveModal/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { ModalTitle } from './style';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/indicator/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Indicator } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/loadingSpinner/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { primaryTheme } from 'src/constants/themes';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { LoadingSpinner } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/optionButton/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import AcneGlyph from '../../svgs/glyphs/acne-glyph.svg';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/progressBar/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { primaryTheme } from 'src/constants/themes';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { ProgressBar } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/selectorButton/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import AcneOneGlyph from '../../svgs/glyphs/acne-one-glyph.svg';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/tabs/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { mount } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { TabItem } from './style';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/toggle/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import { shallow, mount } from 'enzyme';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Toggle } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/tooltip/test.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { Tooltip } from './index';

Expand Down
2 changes: 1 addition & 1 deletion src/shared-components/verificationMessages/test.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { shallow } from 'enzyme';
import { decorateWithThemeProvider } from 'tests/utils/decorateWithThemeProvider';
import { decorateWithThemeProvider } from 'src/tests/decorateWithThemeProvider';

import { VerificationMessages } from './index';

Expand Down
3 changes: 3 additions & 0 deletions src/tests/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
We write test helpers in `src/tests` instead of the `tests` directory at the root because in order for our TypeScript declaration files to not be deeply nested (e.g. `lib/src/constants`, instead of `lib/constants`, which is where we output our non-declaration source), `src` must be the "The longest common path of all non-declaration input files".

See: https://www.typescriptlang.org/tsconfig#outDir and https://www.typescriptlang.org/tsconfig#rootDir
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import React from 'react';
import { ThemeProvider } from 'emotion-theming';

import { primaryTheme } from '../../src/constants/themes';
import type { ThemeType } from '../../src/constants/themes/types';
import { primaryTheme } from '../constants/themes';
import type { ThemeType } from '../constants/themes/types';

type PropsType = Record<string, unknown>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { ThemeType } from 'src/constants/themes/types';
import styled, {
CreateStyled,
StyledComponent,
} from '../../../node_modules/@emotion/styled';
} from '../../../../node_modules/@emotion/styled';

export default styled as CreateStyled<ThemeType>;

Expand Down
3 changes: 3 additions & 0 deletions src/types/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
We write global `types` in `src/types` instead of a `types` directory at the root because in order for our TypeScript declaration files to not be deeply nested (e.g. `lib/src/constants`, instead of `lib/constants`, which is where we output our non-declaration source), `src` must be the "The longest common path of all non-declaration input files".

See: https://www.typescriptlang.org/tsconfig#outDir and https://www.typescriptlang.org/tsconfig#rootDir
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import { ThemeType } from 'src/constants/themes/types';
import {
useTheme as useEmotionTheme,
ThemeProvider,
} from '../../node_modules/emotion-theming';
} from '../../../node_modules/emotion-theming';

export const useTheme = () => useEmotionTheme<ThemeType>();

Expand Down
File renamed without changes.
9 changes: 9 additions & 0 deletions src/types/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"extends": "../tsconfig",
"compilerOptions": {},
"references": [
{
"path": "../src"
}
]
}
6 changes: 5 additions & 1 deletion tests/setupTests.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
import { configure } from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';

// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
configure({ adapter: new Adapter() });

window.matchMedia =
window.matchMedia ||
function () {
return {
matches: false,
dispatchEvent: () => false,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fleshed out these properties to remove the TypeScript error, and I guess related changes made the eslint stuff not matter anymore.

addListener: () => undefined,
removeListener: () => undefined,
media: '',
onchange: () => undefined,
addEventListener: () => undefined,
removeEventListener: () => undefined,
};
};
15 changes: 6 additions & 9 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,13 @@
"compilerOptions": {
"baseUrl": "./",
"declaration": true,
"declarationMap": true,
"emitDeclarationOnly": true,
"outDir": "lib",
"rootDirs": ["src"]
// The folder structure in outDir is based on "The longest common path of all non-declaration input files."
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comments are valid json in tsconfig files 🙂

// To match our babel output, we need to compile everything in `src` without also nesting it in a folder named `src`.
// Setting the `rootDir` to `src` will guarantee this behavior, and raise compilation errors if violated.
"rootDir": "src"
},
"include": [
"src/**/*.ts",
"src/**/*.js",
"src/**/*.tsx",
"tests/**/*.ts",
"tests/**/*.tsx",
"types/**/*.ts"
]
"include": ["src/**/*.ts", "src/**/*.js", "src/**/*.tsx"]
}