From 8814c070665f886dd986557a768aea475662a7e3 Mon Sep 17 00:00:00 2001 From: Jan Potoms <2109932+Janpot@users.noreply.github.com> Date: Fri, 24 Mar 2023 16:55:16 +0100 Subject: [PATCH] Remove example and docker files (#1798) --- docker/compose/docker-compose.yml | 29 --- docker/images/toolpad/Dockerfile | 57 ------ examples/README.md | 59 ------ examples/bundleSize/.gitignore | 3 - examples/bundleSize/package.json | 20 -- examples/bundleSize/toolpad.yml | 173 ------------------ .../bundleSize/toolpad/components/diff.tsx | 41 ----- .../bundleSize/toolpad/components/percent.tsx | 31 ---- examples/bundleSize/toolpad/queries.ts | 82 --------- packages/create-toolpad-app/package.json | 2 +- packages/toolpad/package.json | 3 + renovate.json | 7 + 12 files changed, 11 insertions(+), 496 deletions(-) delete mode 100644 docker/compose/docker-compose.yml delete mode 100644 docker/images/toolpad/Dockerfile delete mode 100644 examples/README.md delete mode 100644 examples/bundleSize/.gitignore delete mode 100644 examples/bundleSize/package.json delete mode 100644 examples/bundleSize/toolpad.yml delete mode 100644 examples/bundleSize/toolpad/components/diff.tsx delete mode 100644 examples/bundleSize/toolpad/components/percent.tsx delete mode 100644 examples/bundleSize/toolpad/queries.ts diff --git a/docker/compose/docker-compose.yml b/docker/compose/docker-compose.yml deleted file mode 100644 index 539d4a66a40..00000000000 --- a/docker/compose/docker-compose.yml +++ /dev/null @@ -1,29 +0,0 @@ -version: '3.7' - -services: - toolpad: - image: muicom/toolpad:${TAG:-latest} - environment: - - TOOLPAD_DATABASE_URL=postgresql://toolpad-app:secretpw@postgres:5432/postgres?connect_timeout=10 - - PORT=3000 - - TOOLPAD_EXTERNAL_URL=http://localhost:3000/ - ports: - - '3000:3000' - - postgres: - image: postgres:14.5 - restart: always - environment: - - POSTGRES_USER=toolpad-app - - POSTGRES_PASSWORD=secretpw - logging: - options: - max-size: 10m - max-file: '3' - expose: - - '5432' - volumes: - - postgres-data:/var/lib/postgresql/data - -volumes: - postgres-data: diff --git a/docker/images/toolpad/Dockerfile b/docker/images/toolpad/Dockerfile deleted file mode 100644 index 3caa850d1dd..00000000000 --- a/docker/images/toolpad/Dockerfile +++ /dev/null @@ -1,57 +0,0 @@ -FROM node:18.9.0 as base - -ARG GIT_SHA1 -ENV GIT_SHA1=$GIT_SHA1 -LABEL com.mui.toolpad.git-sha1=$GIT_SHA1 - -ARG CIRCLE_BUILD_NUM -ENV CIRCLE_BUILD_NUM=$CIRCLE_BUILD_NUM -LABEL com.mui.toolpad.circle-build-num=$CIRCLE_BUILD_NUM - -ENV YARN_CACHE_FOLDER=/root/caches/.yarn - -WORKDIR /app - -RUN --mount=type=cache,target=/root/caches \ - yarn cache clean - - - - -FROM base AS deps - -COPY ./package.json ./yarn.lock ./ -COPY ./packages/eslint-plugin-material-ui/package.json ./packages/eslint-plugin-material-ui/ -COPY ./packages/toolpad-app/package.json ./packages/toolpad-app/ -COPY ./packages/toolpad-components/package.json ./packages/toolpad-components/ -COPY ./packages/toolpad-core/package.json ./packages/toolpad-core/ -COPY ./packages/create-toolpad-app/package.json ./packages/create-toolpad-app/ -RUN --mount=type=cache,target=/root/caches \ - yarn install --frozen-lockfile - - - -FROM base as builder -COPY --from=deps /app/ ./ -COPY . . -RUN --mount=type=cache,target=/root/caches \ - yarn release:build && \ - yarn install --production --ignore-scripts --prefer-offline - - - - - -FROM base as prod - -ENV NODE_ENV production -ENV YARN_CACHE_FOLDER= -USER node -COPY --from=builder --chown=node /app/ ./ -EXPOSE 3000 -ENV PORT 3000 - -# TODO: Disable or not? -# ENV NEXT_TELEMETRY_DISABLED 1 - -CMD ["yarn", "start"] diff --git a/examples/README.md b/examples/README.md deleted file mode 100644 index 58acef32530..00000000000 --- a/examples/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# mui-toolpad-examples - -## To get started on the bundle size application - -```sh -cd ./bundleSize -yarn -yarn dev -``` - -## To start building an application - -### setup - -```sh -mkdir my-app -cd ./my-app -yarn init --yes -yarn add @mui/toolpad @mui/toolpad-core -``` - -add the following scripts to package.json: - -```json -"scripts": { - "dev": "toolpad dev", - "build": "toolpad build", - "start": "toolpad start" -} -``` - -(TODO: replace above with a `npx @mui/toolpad init`?) - -run - -```sh -yarn dev -``` - -Go to the url that's printed - -### app building - -You'll see the trusted page editor. connections/components have been removed. - -#### Creating a custom component - -Go to the component drawer and click on "create new component". -In your toolpad/components folder a new component will appear. you can edit in vscode. - -Known sharp edges: - -- close the toolpad component editor because it makes it interfere with the file system one. -- do not rename the file, or at least not to something that doesn't start with a small letter, or contains spaces ot special characters. You'll see strange things happen. To be fixed -- the code will be copied verbatim in the toolpad config. This is because that's currently exactly how this works. It's a hack and we'll come up with something proper once we are able to change low level things in Toolpad - -#### Connecting data - -You'll see you can only create two types of queries for now. Local function queries are defined inside of the `./toolpad/queries.ts` file. If you create a local function query, you'll see an editor where you can select one of the exported functions in `./toolpad/queries.ts` and bind parameters. there's a button that will open vscode for you to edit the queries file. In this file you can export any async function and it will appear in the query editor dropdown, click preview to run it and see its result. You can use environment variables here and import node modules. The result of the function will be brought to the page as bindable state. diff --git a/examples/bundleSize/.gitignore b/examples/bundleSize/.gitignore deleted file mode 100644 index bb9c1bcfe43..00000000000 --- a/examples/bundleSize/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -.toolpad-generated -.env \ No newline at end of file diff --git a/examples/bundleSize/package.json b/examples/bundleSize/package.json deleted file mode 100644 index d0af9f62895..00000000000 --- a/examples/bundleSize/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "bundle-size", - "version": "1.0.0", - "main": "index.js", - "license": "MIT", - "private": true, - "scripts": { - "dev": "toolpad dev", - "build": "toolpad build", - "start": "toolpad start" - }, - "dependencies": { - "@mui/toolpad": "latest", - "@mui/toolpad-core": "latest", - "axios": "^1.3.3" - }, - "engines": { - "node": "^16.17.0" - } -} diff --git a/examples/bundleSize/toolpad.yml b/examples/bundleSize/toolpad.yml deleted file mode 100644 index 9b916da2bf3..00000000000 --- a/examples/bundleSize/toolpad.yml +++ /dev/null @@ -1,173 +0,0 @@ -nodes: - h60gd9e: - name: Application - attributes: {} - id: h60gd9e - type: app - parentId: null - parentProp: null - parentIndex: null - h71gdad: - name: page1 - attributes: - title: - type: const - value: Page 1 - parameters: - type: const - value: - - - baseRef - - master - - - baseCommit - - 467a3af67ee21b4a0949d0053b2113b89e1cd6ca - - - circleCIBuildNumber - - "478251" - id: h71gdad - type: page - parentId: h60gd9e - parentProp: pages - parentIndex: a0 - dk03lv4: - attributes: - query: - type: const - value: - function: getBundleSizes - connectionId: - type: const - value: null - dataSource: - type: const - value: local - name: bundleSizes - id: dk03lv4 - type: query - parentId: h71gdad - parentProp: queries - parentIndex: a0 - params: - - - baseRef - - type: jsExpression - value: | - page.parameters.baseRef - - - baseCommit - - type: jsExpression - value: | - page.parameters.baseCommit - - - circleCIBuildNumber - - type: jsExpression - value: | - page.parameters.circleCIBuildNumber - 3d43lvk: - name: pageRow - props: {} - attributes: - component: - type: const - value: PageRow - layout: {} - id: 3d43lvk - type: element - parentId: h71gdad - parentProp: children - parentIndex: a0 - sl33lb6: - name: dataGrid - props: - rows: - type: jsExpression - value: | - bundleSizes.data - columns: - type: const - value: - - field: id - type: string - headerName: Bundle - width: 334 - - field: absoluteDiff.parsed - type: codeComponent - codeComponent: diff - headerName: Size change - align: right - - field: relativeDiff.parsed - type: codeComponent - codeComponent: percent - width: 111 - headerName: Size % - align: right - - field: current.parsed - type: number - headerName: Size - numberFormat: - kind: preset - preset: bytes - - field: absoluteDiff.gzip - type: codeComponent - headerName: Gzip change - codeComponent: diff - align: right - - field: relativeDiff.gzip - type: codeComponent - codeComponent: percent - headerName: Gzip % - align: right - - field: current.gzip - type: number - numberFormat: - kind: preset - preset: bytes - headerName: Gzip - height: - type: const - value: 534 - density: - type: const - value: standard - attributes: - component: - type: const - value: DataGrid - layout: {} - id: sl33lb6 - type: element - parentId: 3d43lvk - parentProp: children - parentIndex: a0 - r413myq: - name: pageRow1 - props: {} - attributes: - component: - type: const - value: PageRow - layout: {} - id: r413myq - type: element - parentId: h71gdad - parentProp: children - parentIndex: Zz - aq03mi8: - name: text - props: - value: - type: const - value: "# Size comparison" - variant: - type: const - value: h2 - mode: - type: const - value: markdown - attributes: - component: - type: const - value: Text - layout: {} - id: aq03mi8 - type: element - parentId: r413myq - parentProp: children - parentIndex: a0 -root: h60gd9e -version: 6 diff --git a/examples/bundleSize/toolpad/components/diff.tsx b/examples/bundleSize/toolpad/components/diff.tsx deleted file mode 100644 index 804687f4a67..00000000000 --- a/examples/bundleSize/toolpad/components/diff.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react'; -import { createComponent } from '@mui/toolpad/browser'; - -const bytesFormat = new Intl.NumberFormat(undefined, { - style: 'unit', - maximumSignificantDigits: 3, - notation: 'compact', - unit: 'byte', - unitDisplay: 'narrow', - signDisplay: 'always', -}); - -function prettyBytes(value: number) { - return bytesFormat.format(value); -} - -export interface ParsedProps { - value: number; -} - -function formatDiff(value: number): string { - if (!value) { - return ''; - } - - const trendIcon = value < 0 ? '▼' : '🔺'; - - return `${prettyBytes(Math.abs(value))} ${trendIcon}`; -} - -function Diff({ value }: ParsedProps) { - return {formatDiff(value)}; -} - -export default createComponent(Diff, { - argTypes: { - value: { - typeDef: { type: 'string' }, - }, - }, -}); diff --git a/examples/bundleSize/toolpad/components/percent.tsx b/examples/bundleSize/toolpad/components/percent.tsx deleted file mode 100644 index 5e05c51644f..00000000000 --- a/examples/bundleSize/toolpad/components/percent.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import * as React from 'react'; -import { createComponent } from '@mui/toolpad/browser'; - -const percentFormat = new Intl.NumberFormat(undefined, { - style: 'percent', - maximumFractionDigits: 2, - signDisplay: 'always', -}); - -export interface ParsedProps { - value: number; -} - -function formatPercent(change: number | undefined): string { - if (!change) { - return ''; - } - return percentFormat.format(change); -} - -function Percent({ value }: ParsedProps) { - return {formatPercent(value)}; -} - -export default createComponent(Percent, { - argTypes: { - value: { - typeDef: { type: 'string' }, - }, - }, -}); diff --git a/examples/bundleSize/toolpad/queries.ts b/examples/bundleSize/toolpad/queries.ts deleted file mode 100644 index d4cb7f0f750..00000000000 --- a/examples/bundleSize/toolpad/queries.ts +++ /dev/null @@ -1,82 +0,0 @@ -// Toolpad queries: - -import axios from 'axios'; -import { createQuery } from '@mui/toolpad/server'; - -async function getBaseSnapshot(baseRef: string, baseCommit: string) { - const baseSnapshotUrl = new URL( - `https://s3.eu-central-1.amazonaws.com/mui-org-ci/artifacts/${encodeURIComponent( - baseRef, - )}/${encodeURIComponent(baseCommit)}/size-snapshot.json`, - ); - const baseSnapshot = await axios.get(baseSnapshotUrl.href); - return baseSnapshot.data; -} - -async function getTargetSnapshot(circleCIBuildNumber: string) { - const { data: artifacts } = await axios.get( - `https://circleci.com/api/v2/project/gh/mui/material-ui/${encodeURIComponent( - circleCIBuildNumber, - )}/artifacts`, - ); - const snapshotEntry = artifacts.items.find((entry) => entry.path === 'size-snapshot.json'); - const { data } = await axios.get(snapshotEntry.url); - return data; -} - -const NULL_SNAPSHOT = { parsed: 0, gzip: 0 }; - -function getSizeInfo( - property: K, - current: Record, - previous: Record, -) { - const absoluteDiff = current[property] - previous[property]; - const relativeDiff = current[property] / previous[property] - 1; - return { - [`previous.${property}`]: previous[property], - [`current.${property}`]: current[property], - [`absoluteDiff.${property}`]: absoluteDiff || undefined, - [`relativeDiff.${property}`]: relativeDiff || undefined, - }; -} - -export const getBundleSizes = createQuery( - async ({ parameters }) => { - const [base, target] = await Promise.all([ - getBaseSnapshot(parameters.baseRef as string, parameters.baseCommit as string), - getTargetSnapshot(parameters.circleCIBuildNumber as string), - ]); - - const bundles = new Set([...Object.keys(base), ...Object.keys(target)]); - return Array.from(bundles, (bundle) => { - const currentSize = target[bundle] || NULL_SNAPSHOT; - const previousSize = base[bundle] || NULL_SNAPSHOT; - - const entry = { - id: bundle, - name: bundle, - ...getSizeInfo('parsed', currentSize, previousSize), - ...getSizeInfo('gzip', currentSize, previousSize), - }; - - return entry; - }).sort( - (a, b) => Math.abs(b['absoluteDiff.parsed'] || 0) - Math.abs(a['absoluteDiff.parsed'] || 0), - ); - }, - { - parameters: { - baseRef: { - typeDef: { type: 'string' }, - defaultValue: 'master', - }, - baseCommit: { - typeDef: { type: 'string' }, - }, - circleCIBuildNumber: { - typeDef: { type: 'string' }, - }, - }, - }, -); diff --git a/packages/create-toolpad-app/package.json b/packages/create-toolpad-app/package.json index c00c4a9fe90..3d5645576ae 100644 --- a/packages/create-toolpad-app/package.json +++ b/packages/create-toolpad-app/package.json @@ -26,7 +26,7 @@ "dev": "tsc -p ./tsconfig.json --watch" }, "engines": { - "node": ">=14.6.0" + "node": ">=16.17" }, "dependencies": { "chalk": "^5.2.0", diff --git a/packages/toolpad/package.json b/packages/toolpad/package.json index e8093ff6688..fb7faad5d2e 100644 --- a/packages/toolpad/package.json +++ b/packages/toolpad/package.json @@ -41,5 +41,8 @@ "dotenv": "^16.0.3", "execa": "^7.1.1" }, + "engines": { + "node": ">=16.17" + }, "gitHead": "de68953329881ccd3aa40e82a7302c0baa38c3c5" } diff --git a/renovate.json b/renovate.json index 9c3883bdd8a..2237e5ac1b7 100644 --- a/renovate.json +++ b/renovate.json @@ -40,6 +40,13 @@ "matchPackageNames": ["cimg/node", "node"], "allowedVersions": "<=16" }, + { + "description": "Ignore nodejs in engines", + "matchPackageNames": ["node"], + "matchManagers": ["npm"], + "matchDepTypes": ["engines"], + "enabled": false + }, { "groupName": "react-inspector", "matchPackageNames": ["react-inspector"],