diff --git a/.github/workflows/storybook.yml b/.github/workflows/storybook.yml new file mode 100644 index 000000000..df81cf31b --- /dev/null +++ b/.github/workflows/storybook.yml @@ -0,0 +1,28 @@ +name: Build and Deploy Storybook +on: + push: + main +jobs: + deploy-storybook: + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v3 + - name: Install pnpm + uses: pnpm/action-setup@v2 + with: + version: latest + - name: Init 🖥 + uses: actions/setup-node@v3 + with: + node-version: 18 + cache: 'pnpm' + - name: Install dependencies + run: pnpm install + - name: Build Storybook + run: pnpm build-storybook + # - name: Deploy 🚀 + # uses: JamesIves/github-pages-deploy-action@v4 + # with: + # folder: dist/storybook/shared-storybook + # branch: feat/bootstrap diff --git a/README.md b/README.md index c5a6fa726..4867c6413 100644 --- a/README.md +++ b/README.md @@ -1,22 +1,17 @@ -# Origin +# Origin Defi - +## Start any the app -✨ **This workspace has been generated by [Nx, a Smart, fast and extensible build system.](https://nx.dev)** ✨ +To start the development server run `nx serve ousd` or `nx serve oeth`. Open your browser and navigate to http://localhost:4200/. Happy coding! +## Storybook -## Start the app +There is a shared storybook aggregator that can run all the stories across all the libraries, run +`pnpm storybook`. If you want to run storybook for one individual library (eg: ousd) simply run `pnpm nx storybook defi-ousd` (basically the command is `pnpm nx storybook name-of-the-lib`). -To start the development server run `nx serve origin`. Open your browser and navigate to http://localhost:4200/. Happy coding! +## Translations - -## Generate code - -If you happen to use Nx plugins, you can leverage code generators that might come with it. - -Run `nx list` to get a list of available plugins and whether they have generators. Then run `nx list ` to see what generators are available. - -Learn more about [Nx generators on the docs](https://nx.dev/plugin-features/use-code-generators). +Basic translation setup was added to the repo. It might require some changes depending on how we would structure our translations and our modules, but for now it extracts and compiles translations available in the `apps` folder and the appropriate module in in `libs/defi/module-name`. ## Running tasks @@ -39,25 +34,3 @@ nx run-many -t -p ``` Targets can be defined in the `package.json` or `projects.json`. Learn more [in the docs](https://nx.dev/core-features/run-tasks). - -## Want better Editor Integration? - -Have a look at the [Nx Console extensions](https://nx.dev/nx-console). It provides autocomplete support, a UI for exploring and running tasks & generators, and more! Available for VSCode, IntelliJ and comes with a LSP for Vim users. - -## Ready to deploy? - -Just run `nx build demoapp` to build the application. The build artifacts will be stored in the `dist/` directory, ready to be deployed. - -## Set up CI! - -Nx comes with local caching already built-in (check your `nx.json`). On CI you might want to go a step further. - -- [Set up remote caching](https://nx.dev/core-features/share-your-cache) -- [Set up task distribution across multiple machines](https://nx.dev/core-features/distribute-task-execution) -- [Learn more how to setup CI](https://nx.dev/recipes/ci) - -## Connect with us! - -- [Join the community](https://nx.dev/community) -- [Subscribe to the Nx Youtube Channel](https://www.youtube.com/@nxdevtools) -- [Follow us on Twitter](https://twitter.com/nxdevtools) diff --git a/apps/oeth/project.json b/apps/oeth/project.json index 5ad31d160..4b26f005f 100644 --- a/apps/oeth/project.json +++ b/apps/oeth/project.json @@ -67,6 +67,18 @@ "options": { "lintFilePatterns": ["apps/oeth/**/*.{ts,tsx,js,jsx}"] } + }, + "i18n-extract": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm formatjs extract '{apps/oeth,libs/defi/oeth}/**/!(*.d).{ts,tsx}' --out-file apps/oeth/src/lang/en.json --id-interpolation-pattern '[sha512:contenthash:base64:6]'" + } + }, + "i18n-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm formatjs compile 'apps/oeth/src/lang/en.json' --out-file apps/oeth/src/lang/enUS.json" + } } }, "tags": [] diff --git a/apps/oeth/src/lang/en.json b/apps/oeth/src/lang/en.json new file mode 100644 index 000000000..2654cb997 --- /dev/null +++ b/apps/oeth/src/lang/en.json @@ -0,0 +1,8 @@ +{ + "xomxyH": { + "defaultMessage": "Welcome to DefiOeth!" + }, + "y6cogA": { + "defaultMessage": "test OEth" + } +} diff --git a/apps/oeth/src/lang/enUS.json b/apps/oeth/src/lang/enUS.json new file mode 100644 index 000000000..688bdab96 --- /dev/null +++ b/apps/oeth/src/lang/enUS.json @@ -0,0 +1,4 @@ +{ + "xomxyH": "Welcome to DefiOeth!", + "y6cogA": "test OEth" +} \ No newline at end of file diff --git a/apps/oeth/src/lang/index.ts b/apps/oeth/src/lang/index.ts new file mode 100644 index 000000000..b46ee3f17 --- /dev/null +++ b/apps/oeth/src/lang/index.ts @@ -0,0 +1,3 @@ +import * as en from './enUS.json'; + +export { en }; diff --git a/apps/oeth/src/main.tsx b/apps/oeth/src/main.tsx index 3d036d30c..1898e9b7f 100644 --- a/apps/oeth/src/main.tsx +++ b/apps/oeth/src/main.tsx @@ -5,21 +5,27 @@ import { OethRoot } from './views/root'; import { QueryClientProvider } from '@tanstack/react-query'; import { queryClient } from '@origin/shared/data-access'; import { theme } from '@origin/shared/theme'; -import { CssBaseline, Experimental_CssVarsProvider as CssVarsProvider } from '@mui/material'; - +import { + CssBaseline, + Experimental_CssVarsProvider as CssVarsProvider, +} from '@mui/material'; +import { IntlProvider } from 'react-intl'; +import { en } from './lang'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); root.render( - - - - - - - - + + + + + + + + + + ); diff --git a/apps/oeth/src/views/root/index.tsx b/apps/oeth/src/views/root/index.tsx index c567f95f7..517bdaba2 100644 --- a/apps/oeth/src/views/root/index.tsx +++ b/apps/oeth/src/views/root/index.tsx @@ -1,8 +1,13 @@ // placeholder component until we actually start migration -import {DefiOeth} from '@origin/defi/oeth'; +import { DefiOeth } from '@origin/defi/oeth'; +import { useIntl } from 'react-intl'; export function OethRoot() { - return <>

test OEth

- + const intl = useIntl(); + return ( + <> +

{intl.formatMessage({ defaultMessage: 'test OEth' })}

+ -} \ No newline at end of file + ); +} diff --git a/apps/oeth/vite.config.ts b/apps/oeth/vite.config.ts index b10584f73..39f6c9cba 100644 --- a/apps/oeth/vite.config.ts +++ b/apps/oeth/vite.config.ts @@ -17,7 +17,19 @@ export default defineConfig({ }, plugins: [ - react(), + react({ + babel: { + plugins: [ + [ + 'formatjs', + { + idInterpolationPattern: '[sha512:contenthash:base64:6]', + ast: true, + }, + ], + ], + }, + }), viteTsConfigPaths({ root: '../../', }), diff --git a/apps/ousd/project.json b/apps/ousd/project.json index 955c7a550..d8bf6a621 100644 --- a/apps/ousd/project.json +++ b/apps/ousd/project.json @@ -67,6 +67,18 @@ "options": { "lintFilePatterns": ["apps/ousd/**/*.{ts,tsx,js,jsx}"] } + }, + "i18n-extract": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm formatjs extract '{apps/ousd,libs/defi/ousd}/**/!(*.d).{ts,tsx}' --out-file apps/ousd/src/lang/en-aggregated.json --id-interpolation-pattern '[sha512:contenthash:base64:6]'" + } + }, + "i18n-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm formatjs compile 'apps/ousd/src/lang/en.json' --out-file apps/ousd/src/lang/enUS.json" + } } }, "tags": [] diff --git a/apps/ousd/src/components/index.tsx b/apps/ousd/src/components/index.tsx index b1adda157..fdd920c25 100644 --- a/apps/ousd/src/components/index.tsx +++ b/apps/ousd/src/components/index.tsx @@ -1,6 +1,13 @@ // placeholder component until we actually start migration -import {DefiOusd} from '@origin/defi/ousd'; +import { DefiOusd } from '@origin/defi/ousd'; +import { useIntl } from 'react-intl'; export function OUSDRoot() { - return <>

test OUSD

-} \ No newline at end of file + const intl = useIntl(); + return ( + <> +

{intl.formatMessage({ defaultMessage: 'test OUSD' })}

+ + + ); +} diff --git a/apps/ousd/src/lang/en.json b/apps/ousd/src/lang/en.json new file mode 100644 index 000000000..31bc282bd --- /dev/null +++ b/apps/ousd/src/lang/en.json @@ -0,0 +1,8 @@ +{ + "47v1cE": { + "defaultMessage": "test OUSD" + }, + "SFRdeA": { + "defaultMessage": "Welcome to DefiOusd!" + } +} diff --git a/apps/ousd/src/lang/enUS.json b/apps/ousd/src/lang/enUS.json new file mode 100644 index 000000000..b0d6e35ea --- /dev/null +++ b/apps/ousd/src/lang/enUS.json @@ -0,0 +1,4 @@ +{ + "47v1cE": "test OUSD", + "SFRdeA": "Welcome to DefiOusd!" +} \ No newline at end of file diff --git a/apps/ousd/src/lang/index.ts b/apps/ousd/src/lang/index.ts new file mode 100644 index 000000000..b46ee3f17 --- /dev/null +++ b/apps/ousd/src/lang/index.ts @@ -0,0 +1,3 @@ +import * as en from './enUS.json'; + +export { en }; diff --git a/apps/ousd/src/main.tsx b/apps/ousd/src/main.tsx index d174e0b5c..3c52a6263 100644 --- a/apps/ousd/src/main.tsx +++ b/apps/ousd/src/main.tsx @@ -3,20 +3,26 @@ import * as ReactDOM from 'react-dom/client'; import { OUSDRoot } from './components'; import { QueryClientProvider } from '@tanstack/react-query'; import { queryClient } from '@origin/shared/data-access'; -import { CssBaseline, Experimental_CssVarsProvider as CssVarsProvider } from '@mui/material'; +import { + CssBaseline, + Experimental_CssVarsProvider as CssVarsProvider, +} from '@mui/material'; import { theme } from '@origin/shared/theme'; - +import { IntlProvider } from 'react-intl'; +import { en } from './lang'; const root = ReactDOM.createRoot( document.getElementById('root') as HTMLElement ); root.render( - - - - - - + + + + + + + + ); diff --git a/apps/ousd/vite.config.ts b/apps/ousd/vite.config.ts index 5260dcf86..3c9a4c7c5 100644 --- a/apps/ousd/vite.config.ts +++ b/apps/ousd/vite.config.ts @@ -17,7 +17,19 @@ export default defineConfig({ }, plugins: [ - react(), + react({ + babel: { + plugins: [ + [ + 'formatjs', + { + idInterpolationPattern: '[sha512:contenthash:base64:6]', + ast: true, + }, + ], + ], + }, + }), viteTsConfigPaths({ root: '../../', }), diff --git a/libs/defi/oeth/.storybook/main.js b/libs/defi/oeth/.storybook/main.ts similarity index 58% rename from libs/defi/oeth/.storybook/main.js rename to libs/defi/oeth/.storybook/main.ts index 41e0a0960..257218aac 100644 --- a/libs/defi/oeth/.storybook/main.js +++ b/libs/defi/oeth/.storybook/main.ts @@ -1,11 +1,19 @@ const config = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], addons: ['@storybook/addon-essentials'], framework: { name: '@storybook/react-vite', options: { builder: { - viteConfigPath: '', + viteConfigPath: `${__dirname}/../../../shared/storybook/vite.config.ts`, + }, + }, + }, + typescript: { + check: true, + checkOptions: { + typescript: { + configFile: `${__dirname}/../tsconfig.storybook.json`, }, }, }, diff --git a/libs/defi/oeth/.storybook/preview.js b/libs/defi/oeth/.storybook/preview.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/libs/defi/oeth/.storybook/preview.tsx b/libs/defi/oeth/.storybook/preview.tsx new file mode 100644 index 000000000..d7cc85f52 --- /dev/null +++ b/libs/defi/oeth/.storybook/preview.tsx @@ -0,0 +1,3 @@ +import preview from '@origin/shared/storybook'; + +export default preview; diff --git a/libs/defi/oeth/src/components/defi-oeth.tsx b/libs/defi/oeth/src/components/defi-oeth.tsx index 651ce798e..0c0a1433e 100644 --- a/libs/defi/oeth/src/components/defi-oeth.tsx +++ b/libs/defi/oeth/src/components/defi-oeth.tsx @@ -1,10 +1,13 @@ +import { useIntl } from 'react-intl'; + /* eslint-disable-next-line */ export interface DefiOethProps {} export function DefiOeth(props: DefiOethProps) { + const intl = useIntl(); return (
-

Welcome to DefiOeth!

+

{intl.formatMessage({ defaultMessage: 'Welcome to DefiOeth!' })}

); } diff --git a/libs/defi/oeth/tsconfig.storybook.json b/libs/defi/oeth/tsconfig.storybook.json index 3555ddd4f..7985e684a 100644 --- a/libs/defi/oeth/tsconfig.storybook.json +++ b/libs/defi/oeth/tsconfig.storybook.json @@ -27,5 +27,5 @@ "src/**/*.stories.mdx", ".storybook/*.js", ".storybook/*.ts" - ] +, ".storybook/preview.tsx" ] } diff --git a/libs/defi/ousd/.storybook/main.js b/libs/defi/ousd/.storybook/main.ts similarity index 58% rename from libs/defi/ousd/.storybook/main.js rename to libs/defi/ousd/.storybook/main.ts index 41e0a0960..257218aac 100644 --- a/libs/defi/ousd/.storybook/main.js +++ b/libs/defi/ousd/.storybook/main.ts @@ -1,11 +1,19 @@ const config = { - stories: ['../src/lib/**/*.stories.@(js|jsx|ts|tsx|mdx)'], + stories: ['../src/**/*.stories.@(js|jsx|ts|tsx|mdx)'], addons: ['@storybook/addon-essentials'], framework: { name: '@storybook/react-vite', options: { builder: { - viteConfigPath: '', + viteConfigPath: `${__dirname}/../../../shared/storybook/vite.config.ts`, + }, + }, + }, + typescript: { + check: true, + checkOptions: { + typescript: { + configFile: `${__dirname}/../tsconfig.storybook.json`, }, }, }, diff --git a/libs/defi/ousd/.storybook/preview.js b/libs/defi/ousd/.storybook/preview.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/libs/defi/ousd/.storybook/preview.tsx b/libs/defi/ousd/.storybook/preview.tsx new file mode 100644 index 000000000..d7cc85f52 --- /dev/null +++ b/libs/defi/ousd/.storybook/preview.tsx @@ -0,0 +1,3 @@ +import preview from '@origin/shared/storybook'; + +export default preview; diff --git a/libs/defi/ousd/src/components/defi-ousd.tsx b/libs/defi/ousd/src/components/defi-ousd.tsx index 96861e994..6ab60e347 100644 --- a/libs/defi/ousd/src/components/defi-ousd.tsx +++ b/libs/defi/ousd/src/components/defi-ousd.tsx @@ -1,10 +1,13 @@ +import { useIntl } from 'react-intl'; + /* eslint-disable-next-line */ export interface DefiOusdProps {} export function DefiOusd(props: DefiOusdProps) { + const intl = useIntl(); return (
-

Welcome to DefiOusd!

+

{intl.formatMessage({ defaultMessage: 'Welcome to DefiOusd!' })}

); } diff --git a/libs/defi/ousd/tsconfig.storybook.json b/libs/defi/ousd/tsconfig.storybook.json index 3555ddd4f..7985e684a 100644 --- a/libs/defi/ousd/tsconfig.storybook.json +++ b/libs/defi/ousd/tsconfig.storybook.json @@ -27,5 +27,5 @@ "src/**/*.stories.mdx", ".storybook/*.js", ".storybook/*.ts" - ] +, ".storybook/preview.tsx" ] } diff --git a/libs/shared/storybook/.storybook/main.js b/libs/shared/storybook/.storybook/main.ts similarity index 59% rename from libs/shared/storybook/.storybook/main.js rename to libs/shared/storybook/.storybook/main.ts index 38974e83c..3ab09e8d5 100644 --- a/libs/shared/storybook/.storybook/main.js +++ b/libs/shared/storybook/.storybook/main.ts @@ -1,11 +1,21 @@ -const config = { +import type { StorybookConfig } from '@storybook/react-vite'; + +const config: StorybookConfig = { stories: ['../../../**/*.stories.@(js|jsx|ts|tsx|mdx)'], addons: ['@storybook/addon-essentials'], framework: { name: '@storybook/react-vite', options: { builder: { - viteConfigPath: '', + viteConfigPath: `${__dirname}/../vite.config.ts`, + }, + }, + }, + typescript: { + check: true, + checkOptions: { + typescript: { + configFile: `${__dirname}/../tsconfig.storybook.json`, }, }, }, diff --git a/libs/shared/storybook/.storybook/preview.js b/libs/shared/storybook/.storybook/preview.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/libs/shared/storybook/.storybook/preview.tsx b/libs/shared/storybook/.storybook/preview.tsx new file mode 100644 index 000000000..0f6cb162f --- /dev/null +++ b/libs/shared/storybook/.storybook/preview.tsx @@ -0,0 +1,3 @@ +import preview from '../src'; + +export default preview; diff --git a/libs/shared/storybook/src/decorators.tsx b/libs/shared/storybook/src/decorators.tsx new file mode 100644 index 000000000..49e5085c7 --- /dev/null +++ b/libs/shared/storybook/src/decorators.tsx @@ -0,0 +1,23 @@ +import type { Preview } from '@storybook/react'; +import * as React from 'react'; +import { IntlProvider } from 'react-intl'; +import { Experimental_CssVarsProvider as CssVarsProvider } from '@mui/material'; +import { theme } from '@origin/shared/theme'; + +export const decorators: Preview['decorators'] = [ + (StoryComponent) => { + return ( + // + + + + // + ); + }, +]; + +const preview: Preview = { + decorators, +}; + +export default preview; diff --git a/libs/shared/storybook/src/index.ts b/libs/shared/storybook/src/index.ts index 56e3d6840..b7ad9f016 100644 --- a/libs/shared/storybook/src/index.ts +++ b/libs/shared/storybook/src/index.ts @@ -1 +1,3 @@ -export * from './lib/shared-storybook'; +import preview from './decorators'; + +export default preview; diff --git a/libs/shared/storybook/src/lib/shared-storybook.ts b/libs/shared/storybook/src/lib/shared-storybook.ts deleted file mode 100644 index 42f3fab0d..000000000 --- a/libs/shared/storybook/src/lib/shared-storybook.ts +++ /dev/null @@ -1,3 +0,0 @@ -export function sharedStorybook(): string { - return 'shared-storybook'; -} diff --git a/libs/shared/storybook/tsconfig.json b/libs/shared/storybook/tsconfig.json index 4deb6c041..6dca5acab 100644 --- a/libs/shared/storybook/tsconfig.json +++ b/libs/shared/storybook/tsconfig.json @@ -7,7 +7,8 @@ "noImplicitOverride": true, "noPropertyAccessFromIndexSignature": true, "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "jsx": "react-jsx" }, "files": [], "include": [], diff --git a/libs/shared/storybook/tsconfig.lib.json b/libs/shared/storybook/tsconfig.lib.json index 4dc48672f..90d8c2d8e 100644 --- a/libs/shared/storybook/tsconfig.lib.json +++ b/libs/shared/storybook/tsconfig.lib.json @@ -5,7 +5,7 @@ "declaration": true, "types": ["node"] }, - "include": ["src/**/*.ts"], + "include": ["src/**/*.ts", "src/decorators.tsx"], "exclude": [ "jest.config.ts", "src/**/*.spec.ts", diff --git a/libs/shared/storybook/tsconfig.storybook.json b/libs/shared/storybook/tsconfig.storybook.json index 3555ddd4f..7985e684a 100644 --- a/libs/shared/storybook/tsconfig.storybook.json +++ b/libs/shared/storybook/tsconfig.storybook.json @@ -27,5 +27,5 @@ "src/**/*.stories.mdx", ".storybook/*.js", ".storybook/*.ts" - ] +, ".storybook/preview.tsx" ] } diff --git a/libs/shared/storybook/vite.config.ts b/libs/shared/storybook/vite.config.ts new file mode 100644 index 000000000..e26084052 --- /dev/null +++ b/libs/shared/storybook/vite.config.ts @@ -0,0 +1,34 @@ +/// +import { defineConfig } from 'vite'; +import react from '@vitejs/plugin-react'; +import viteTsConfigPaths from 'vite-tsconfig-paths'; + +export default defineConfig({ + plugins: [ + react({ + babel: { + plugins: [ + [ + 'formatjs', + { + idInterpolationPattern: '[sha512:contenthash:base64:6]', + ast: true, + }, + ], + ], + }, + }), + viteTsConfigPaths({ + root: '../../', + }), + ], + + // Uncomment this if you are using workers. + // worker: { + // plugins: [ + // viteTsConfigPaths({ + // root: '../../', + // }), + // ], + // }, +}); diff --git a/package.json b/package.json index 21bf1aa35..ad1db6cc4 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,10 @@ "name": "@origin/source", "version": "0.0.0", "license": "MIT", - "scripts": {}, + "scripts": { + "build-storybook": "nx build-storybook shared-storybook --verbose", + "storybook": "nx storybook shared-storybook" + }, "private": true, "dependencies": { "@emotion/react": "^11.11.1", @@ -11,11 +14,13 @@ "@tanstack/react-query": "^4.29.19", "react": "18.2.0", "react-dom": "18.2.0", + "react-intl": "^6.4.4", "react-router-dom": "6.11.2", "tslib": "^2.3.0" }, "devDependencies": { "@babel/preset-react": "^7.14.5", + "@formatjs/cli": "^6.1.3", "@nx/cypress": "16.5.1", "@nx/eslint-plugin": "16.5.1", "@nx/js": "16.5.1", @@ -38,6 +43,7 @@ "@vitejs/plugin-react": "~4.0.0", "@vitest/coverage-c8": "~0.32.0", "@vitest/ui": "~0.32.0", + "babel-plugin-formatjs": "^10.5.3", "eslint": "~8.15.0", "eslint-config-prettier": "8.1.0", "eslint-plugin-cypress": "^2.10.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ea2b4d560..0f5254ce1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ dependencies: react-dom: specifier: 18.2.0 version: 18.2.0(react@18.2.0) + react-intl: + specifier: ^6.4.4 + version: 6.4.4(react@18.2.0)(typescript@5.1.6) react-router-dom: specifier: 6.11.2 version: 6.11.2(react-dom@18.2.0)(react@18.2.0) @@ -34,6 +37,9 @@ devDependencies: '@babel/preset-react': specifier: ^7.14.5 version: 7.22.5(@babel/core@7.22.9) + '@formatjs/cli': + specifier: ^6.1.3 + version: 6.1.3 '@nx/cypress': specifier: 16.5.1 version: 16.5.1(eslint@8.15.0)(nx@16.5.1)(typescript@5.1.6) @@ -100,6 +106,9 @@ devDependencies: '@vitest/ui': specifier: ~0.32.0 version: 0.32.0(vitest@0.32.0) + babel-plugin-formatjs: + specifier: ^10.5.3 + version: 10.5.3 eslint: specifier: ~8.15.0 version: 8.15.0 @@ -1933,6 +1942,98 @@ packages: resolution: {integrity: sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==} dev: true + /@formatjs/cli@6.1.3: + resolution: {integrity: sha512-PdTXZTY8LqxwmvFqdifn89gjXnPUpGtGyFs0BnoeLuOuxZFSnBfIs5WQCVMaJnr1+0vNNlXyT0VAIAwjRpf6BA==} + engines: {node: '>= 16'} + hasBin: true + peerDependencies: + '@vue/compiler-sfc': ^3.2.34 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dev: true + + /@formatjs/ecma402-abstract@1.17.0: + resolution: {integrity: sha512-6ueQTeJZtwKjmh23bdkq/DMqH4l4bmfvtQH98blOSbiXv/OUiyijSW6jU22IT8BNM1ujCaEvJfTtyCYVH38EMQ==} + dependencies: + '@formatjs/intl-localematcher': 0.4.0 + tslib: 2.6.0 + + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + dependencies: + tslib: 2.6.0 + dev: false + + /@formatjs/icu-messageformat-parser@2.6.0: + resolution: {integrity: sha512-yT6at0qc0DANw9qM/TU8RZaCtfDXtj4pZM/IC2WnVU80yAcliS3KVDiuUt4jSQAeFL9JS5bc2hARnFmjPdA6qw==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/icu-skeleton-parser': 1.6.0 + tslib: 2.6.0 + + /@formatjs/icu-skeleton-parser@1.6.0: + resolution: {integrity: sha512-eMmxNpoX/J1IPUjPGSZwo0Wh+7CEvdEMddP2Jxg1gQJXfGfht/FdW2D5XDFj3VMbOTUQlDIdZJY7uC6O6gjPoA==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + tslib: 2.6.0 + + /@formatjs/intl-displaynames@6.5.0: + resolution: {integrity: sha512-sg/nR8ILEdUl+2sWu6jc1nQ5s04yucGlH1RVfatW8TSJ5uG3Yy3vgigi8NNC/BuhcncUNPWqSpTCSI1hA+rhiw==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/intl-localematcher': 0.4.0 + tslib: 2.6.0 + dev: false + + /@formatjs/intl-listformat@7.4.0: + resolution: {integrity: sha512-ifupb+balZUAF/Oh3QyGRqPRWGSKwWoMPR0cYZEG7r61SimD+m38oFQqVx/3Fp7LfQFF11m7IS+MlxOo2sKINA==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/intl-localematcher': 0.4.0 + tslib: 2.6.0 + dev: false + + /@formatjs/intl-localematcher@0.4.0: + resolution: {integrity: sha512-bRTd+rKomvfdS4QDlVJ6TA/Jx1F2h/TBVO5LjvhQ7QPPHp19oPNMIum7W2CMEReq/zPxpmCeB31F9+5gl/qtvw==} + dependencies: + tslib: 2.6.0 + + /@formatjs/intl@2.9.0(typescript@5.1.6): + resolution: {integrity: sha512-Ym0trUoC/VO6wQu4YHa0H1VR2tEixFRmwZgADkDLm7nD+vv1Ob+/88mUAoT0pwvirFqYKgUKEwp1tFepqyqvVA==} + peerDependencies: + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.6.0 + '@formatjs/intl-displaynames': 6.5.0 + '@formatjs/intl-listformat': 7.4.0 + intl-messageformat: 10.5.0 + tslib: 2.6.0 + typescript: 5.1.6 + dev: false + + /@formatjs/ts-transformer@3.13.3: + resolution: {integrity: sha512-W6+huH4dLYx8eZfZue6fcreNzLZHoPboreqJSkickYCKIOicI35zC0Txb4xCT6kau/DXAKTpNEln3V2NgX6Igg==} + peerDependencies: + ts-jest: '>=27' + peerDependenciesMeta: + ts-jest: + optional: true + dependencies: + '@formatjs/icu-messageformat-parser': 2.6.0 + '@types/json-stable-stringify': 1.0.34 + '@types/node': 16.18.38 + chalk: 4.1.2 + json-stable-stringify: 1.0.2 + tslib: 2.6.0 + typescript: 5.1.6 + dev: true + /@humanwhocodes/config-array@0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -3907,6 +4008,12 @@ packages: '@babel/types': 7.22.5 dev: true + /@types/babel__helper-plugin-utils@7.10.0: + resolution: {integrity: sha512-60YtHzhQ9HAkToHVV+TB4VLzBn9lrfgrsOjiJMtbv/c1jPdekBxaByd6DMsGBzROXWoIL6U3lEFvvbu69RkUoA==} + dependencies: + '@types/babel__core': 7.20.1 + dev: true + /@types/babel__template@7.4.1: resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} dependencies: @@ -4023,6 +4130,13 @@ packages: '@types/node': 18.14.2 dev: true + /@types/hoist-non-react-statics@3.3.1: + resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} + dependencies: + '@types/react': 18.2.14 + hoist-non-react-statics: 3.3.2 + dev: false + /@types/http-errors@2.0.1: resolution: {integrity: sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==} dev: true @@ -4047,6 +4161,10 @@ packages: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true + /@types/json-stable-stringify@1.0.34: + resolution: {integrity: sha512-s2cfwagOQAS8o06TcwKfr9Wx11dNGbH2E9vJz1cqV+a/LOyhWNLUNd6JSRYNzvB4d29UuJX2M0Dj9vE1T8fRXw==} + dev: true + /@types/json5@0.0.29: resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} dev: true @@ -4930,6 +5048,25 @@ packages: - supports-color dev: true + /babel-plugin-formatjs@10.5.3: + resolution: {integrity: sha512-PBeryWyN2HY2VUGNFPQS6+DPNQ/I9zDZ97y38i1+LzIpIyTHBePECq/ehEABE73PvvF2irFiN7TCYBrQQw5+lA==} + dependencies: + '@babel/core': 7.22.9 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) + '@babel/traverse': 7.22.8 + '@babel/types': 7.22.5 + '@formatjs/icu-messageformat-parser': 2.6.0 + '@formatjs/ts-transformer': 3.13.3 + '@types/babel__core': 7.20.1 + '@types/babel__helper-plugin-utils': 7.10.0 + '@types/babel__traverse': 7.20.1 + tslib: 2.6.0 + transitivePeerDependencies: + - supports-color + - ts-jest + dev: true + /babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} engines: {node: '>=8'} @@ -7056,6 +7193,15 @@ packages: side-channel: 1.0.4 dev: true + /intl-messageformat@10.5.0: + resolution: {integrity: sha512-AvojYuOaRb6r2veOKfTVpxH9TrmjSdc5iR9R5RgBwrDZYSmAAFVT+QLbW3C4V7Qsg0OguMp67Q/EoUkxZzXRGw==} + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.6.0 + tslib: 2.6.0 + dev: false + /ip@2.0.0: resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} dev: true @@ -7472,6 +7618,12 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json-stable-stringify@1.0.2: + resolution: {integrity: sha512-eunSSaEnxV12z+Z73y/j5N37/In40GK4GmsSy+tEHJMxknvqnA7/djeYtAgW0GsWHUfg+847WJjKaEylk2y09g==} + dependencies: + jsonify: 0.0.1 + dev: true + /json5@1.0.2: resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} hasBin: true @@ -7513,6 +7665,10 @@ packages: graceful-fs: 4.2.11 dev: true + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + dev: true + /jsx-ast-utils@3.3.4: resolution: {integrity: sha512-fX2TVdCViod6HwKEtSWGHs57oFhVfCMwieb9PuRDgjDPh5XeqJiHFFFJCHxU5cnTc3Bu/GRL+kPiFmw8XWOfKw==} engines: {node: '>=4.0'} @@ -8505,6 +8661,29 @@ packages: react: 18.2.0 dev: true + /react-intl@6.4.4(react@18.2.0)(typescript@5.1.6): + resolution: {integrity: sha512-/C9Sl/5//ohfkNG6AWlJuf4BhTXsbzyk93K62A4zRhSPANyOGpKZ+fWhN+TLfFd5YjDUHy+exU/09y0w1bO4Xw==} + peerDependencies: + react: ^16.6.0 || 17 || 18 + typescript: ^4.7 || 5 + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@formatjs/ecma402-abstract': 1.17.0 + '@formatjs/icu-messageformat-parser': 2.6.0 + '@formatjs/intl': 2.9.0(typescript@5.1.6) + '@formatjs/intl-displaynames': 6.5.0 + '@formatjs/intl-listformat': 7.4.0 + '@types/hoist-non-react-statics': 3.3.1 + '@types/react': 18.2.14 + hoist-non-react-statics: 3.3.2 + intl-messageformat: 10.5.0 + react: 18.2.0 + tslib: 2.6.0 + typescript: 5.1.6 + dev: false + /react-is@16.13.1: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} @@ -9461,7 +9640,6 @@ packages: resolution: {integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==} engines: {node: '>=14.17'} hasBin: true - dev: true /ufo@1.1.2: resolution: {integrity: sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==} diff --git a/tsconfig.base.json b/tsconfig.base.json index 0a7b82f3b..21b63f18a 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -13,6 +13,7 @@ "lib": ["es2020", "dom"], "skipLibCheck": true, "skipDefaultLibCheck": true, + "resolveJsonModule": true, "baseUrl": ".", "paths": { "@origin/defi/oeth": ["libs/defi/oeth/src/index.ts"],