# Module Authoring Requirements 1. One TS file can import another TS file without building it first - Remove deeply nested dist imports (*/lib/*) - **SOLVED** Remove SASS imports - **RESOLUTION**: Use separate package name, solves internal issues and enables more predictability/stability for users. `import { makeMergeProps } from '@fluentui/react-compose';` `import { makeMergeProps } from '@fluentui/react-compose-next';` 1. No side-effects - **SOLVED** Example, remove top-level loadStyles() code executed on import/parse. Can move to first render. - **TODO** Another example, setting the version globally on the window for debug. This also could be moved to the mount/render/init phase of some core piece of the library. - **TODO** Require use of PURE annotation for React components. Not available in TS compiler but is solved in Babel. ## Component Directory Complexity Simplify folder and import structures, current: ``` react-flex /src index.ts ---> ./Flex Flex.ts ---> ./components/Flex/index /components /Flex ---> ./Flex index.ts ---> ./Flex Flex.tsx ---> Component Code /lib Flex.js ---> ./components/Flex index.js ---> ./Flex /components /Flex Flex.js ---> Component Code index.js ---> ./Flex Curent resolution: import { Flex } from 'react-flex' --> react-flex/lib/index.js --> react-flex/lib/Flex.js --> react-flex/lib/components/Flex/index.js --> react-flex/lib/components/Flex/Flex.js Proposed resolution: import { Flex } from 'react-flex' --> react-flex/lib/index.js --> react-flex/lib/Flex/Flex.js