Skip to content
This repository has been archived by the owner on Sep 24, 2024. It is now read-only.

Commit

Permalink
fix: setup app to work as mfe
Browse files Browse the repository at this point in the history
  • Loading branch information
gciotola committed Mar 12, 2024
1 parent ce1b571 commit 2fbcf33
Show file tree
Hide file tree
Showing 15 changed files with 811 additions and 475 deletions.
85 changes: 42 additions & 43 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ parameters:
default: "sku_lists"

orbs:
aws-cli: circleci/aws-cli@4.1.2
aws-cli: circleci/aws-cli@4.1.3
aws-s3: circleci/aws-s3@4.0.0

image: &image
docker:
- image: cimg/node:18.15.0
- image: cimg/node:20.11.0
resource_class: medium+

setup: &setup
Expand All @@ -28,8 +28,11 @@ jobs:
- checkout
- <<: *setup
- run:
name: Test
command: pnpm test
name: Audit
command: pnpm audit || exit 0
- run:
name: Test
command: pnpm --if-present lint && pnpm --if-present ts:check && pnpm --if-present test
build:
<<: *image
environment:
Expand All @@ -38,17 +41,15 @@ jobs:
- checkout
- <<: *setup
- run:
name: Audit
command: pnpm audit --audit-level high && (pnpm audit || exit 0)
- run:
name: Build
name: Build
command: pnpm build
- aws-cli/setup:
aws_access_key_id: AWS_ACCESS_KEY
aws_secret_access_key: AWS_SECRET_ACCESS_KEY
- aws-s3/sync:
from: packages/app/dist
to: "s3://$S3_ASSETS_BUCKET/team/fe-static-apps/<< pipeline.parameters.project-name >>/<<pipeline.git.tag>>"
to: "s3://$S3_ASSETS_BUCKET/team/fe-static-apps/<< pipeline.parameters.project-name >>/<< pipeline.git.tag >>"

preview:
<<: *image
parameters:
Expand All @@ -74,16 +75,14 @@ jobs:
to: "s3://$S3_ASSETS_DEV_BUCKET/team/fe-static-apps/<< pipeline.parameters.project-name >>/<< pipeline.git.tag >>-<< parameters.preview-env >>"

workflows:
version: 2

run-tests:
jobs:
- test:
context: commercelayer
filters:
tags:
ignore: /v.*/
ignore: /v.*|pr-.*/

test-build-and-push:
jobs:
- test:
Expand All @@ -104,33 +103,33 @@ workflows:
ignore: /.*/

test-and-preview-link:
jobs:
- test:
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
- preview:
name: preview-prd
requires:
- test
preview-env: prd
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
- preview:
name: preview-stg
requires:
- test
preview-env: stg
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
jobs:
- test:
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
- preview:
name: preview-prd
requires:
- test
preview-env: prd
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
- preview:
name: preview-stg
requires:
- test
preview-env: stg
context: commercelayer
filters:
tags:
only: /^pr-(0|[1-9]\d*).*/
branches:
ignore: /.*/
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ typings/
.yarn-integrity

# dotenv environment variables file
.env
.env.test
# .env --> we want to keep it versionated by default. Use `.env.(local|production)` for custom env to be ignored
.env.*

# parcel-bundler cache (https://parceljs.org/)
.cache
Expand Down
2 changes: 1 addition & 1 deletion .npmrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
//registry.npmjs.org/:_authToken=${NPM_READ_TOKEN}
use-node-version=18.15.0
use-node-version=20.11.0
auto-install-peers=true
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@
"license": "MIT",
"engines": {
"node": ">=18",
"pnpm": ">=7"
"pnpm": ">=8"
},
"workspaces": [
"packages/*"
],
"devDependencies": {
"husky": "^8.0.3",
"lerna": "^7.3.1",
"lint-staged": "^15.0.1",
"npm-check-updates": "^16.14.6"
"husky": "^9.0.11",
"lerna": "^8.1.2",
"lint-staged": "^15.2.2",
"npm-check-updates": "^16.14.15"
}
}
}
4 changes: 4 additions & 0 deletions packages/app/.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Base router path for the project
PUBLIC_PROJECT_PATH=
# When set it defines the slug for the self hosted version of the project
PUBLIC_SELF_HOSTED_SLUG=
2 changes: 0 additions & 2 deletions packages/app/.env.local.sample

This file was deleted.

2 changes: 1 addition & 1 deletion packages/app/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ You need a local Node.JS (version 18+) environment and some React.JS knowledge t
git clone https://github.com/<your username>/app-sku-lists.git && cd app-sku-lists
```

3. Set your environment by creating a new `/src/app/.env.local` file starting from `/src/app/.env.local.sample` (not required for local development).
3. Set your environment by creating a new `/src/app/.env.local` file starting from `/src/app/.env` (not required for local development).

4. Install dependencies and run the development server:

Expand Down
9 changes: 0 additions & 9 deletions packages/app/global.d.ts

This file was deleted.

15 changes: 14 additions & 1 deletion packages/app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,28 @@
href="https://data.commercelayer.app/assets/images/favicons/favicon-32x32.png"
/>
<link rel="preconnect" href="https://fonts.gstatic.com" />
<script src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<link
href="https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap"
rel="stylesheet"
/>
</head>
<body>
<div id="root"></div>
<div id="root-app"></div>

<script src="/config.local.js"></script>
<script src="/config.js"></script>

<script type="module" src="/src/main.tsx"></script>

<script>
window.addEventListener('DOMContentLoaded', () => {
window.clApp_sku_lists.init(document.getElementById('root-app'), {
organizationSlug: '%PUBLIC_SELF_HOSTED_SLUG%',
routerBase: '%PUBLIC_PROJECT_PATH%'
})
})
</script>
</body>
</html>
27 changes: 14 additions & 13 deletions packages/app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,31 +15,32 @@
"prepare": "touch ./public/config.local.js"
},
"dependencies": {
"@commercelayer/app-elements": "1.15.1",
"@commercelayer/sdk": "5.32.0",
"@commercelayer/app-elements": "1.17.1",
"@commercelayer/sdk": "5.34.1",
"@hookform/resolvers": "^3.3.4",
"lodash": "^4.17.21",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-hook-form": "^7.50.1",
"swr": "^2.2.4",
"type-fest": "^4.10.2",
"wouter": "^3.0.0",
"react-hook-form": "^7.51.0",
"swr": "^2.2.5",
"type-fest": "^4.12.0",
"wouter": "^3.1.0",
"zod": "^3.22.4"
},
"devDependencies": {
"@commercelayer/eslint-config-ts-react": "^1.3.0",
"@testing-library/react": "^14.1.2",
"@testing-library/react": "^14.2.1",
"@types/lodash": "^4.14.202",
"@types/node": "20.11.16",
"@types/react": "^18.2.48",
"@types/react-dom": "^18.2.18",
"@types/node": "20.11.26",
"@types/react": "^18.2.65",
"@types/react-dom": "^18.2.21",
"@vitejs/plugin-react": "^4.2.1",
"eslint": "^8.56.0",
"eslint": "^8.57.0",
"jsdom": "^24.0.0",
"rollup-plugin-external-globals": "^0.9.2",
"typescript": "^5.3.3",
"vite": "^5.0.12",
"vite": "^5.1.6",
"vite-tsconfig-paths": "^4.3.1",
"vitest": "^1.2.1"
"vitest": "^1.3.1"
}
}
70 changes: 19 additions & 51 deletions packages/app/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,61 +3,29 @@ import { SkuListDetails } from '#pages/SkuListDetails'
import { SkuListEdit } from '#pages/SkuListEdit'
import { SkuListNew } from '#pages/SkuListNew'
import { SkuListsList } from '#pages/SkuListsList'
import {
CoreSdkProvider,
ErrorBoundary,
MetaTags,
TokenProvider
} from '@commercelayer/app-elements'
import { SWRConfig } from 'swr'
import type { FC } from 'react'
import { Redirect, Route, Router, Switch } from 'wouter'
import { appRoutes } from './data/routes'

const isDev = Boolean(import.meta.env.DEV)
const basePath =
import.meta.env.PUBLIC_PROJECT_PATH != null
? `/${import.meta.env.PUBLIC_PROJECT_PATH}`
: undefined
interface AppProps {
routerBase?: string
}

export function App(): JSX.Element {
export const App: FC<AppProps> = ({ routerBase }) => {
return (
<ErrorBoundary hasContainer>
<SWRConfig
value={{
revalidateOnFocus: false
}}
>
<TokenProvider
kind='sku_lists'
appSlug='sku_lists'
domain={window.clAppConfig.domain}
reauthenticateOnInvalidAuth={!isDev}
devMode={isDev}
loadingElement={<div />}
organizationSlug={import.meta.env.PUBLIC_SELF_HOSTED_SLUG}
>
<MetaTags />
<CoreSdkProvider>
<Router base={basePath}>
<Switch>
<Route path={appRoutes.home.path}>
<Redirect to={appRoutes.list.path} />
</Route>
<Route path={appRoutes.list.path} component={SkuListsList} />
<Route
path={appRoutes.details.path}
component={SkuListDetails}
/>
<Route path={appRoutes.edit.path} component={SkuListEdit} />
<Route path={appRoutes.new.path} component={SkuListNew} />
<Route>
<ErrorNotFound />
</Route>
</Switch>
</Router>
</CoreSdkProvider>
</TokenProvider>
</SWRConfig>
</ErrorBoundary>
<Router base={routerBase}>
<Switch>
<Route path={appRoutes.home.path}>
<Redirect to={appRoutes.list.path} />
</Route>
<Route path={appRoutes.list.path} component={SkuListsList} />
<Route path={appRoutes.details.path} component={SkuListDetails} />
<Route path={appRoutes.edit.path} component={SkuListEdit} />
<Route path={appRoutes.new.path} component={SkuListNew} />
<Route>
<ErrorNotFound />
</Route>
</Switch>
</Router>
)
}
Loading

0 comments on commit 2fbcf33

Please sign in to comment.