diff --git a/.changeset/cyan-zoos-rule.md b/.changeset/cyan-zoos-rule.md new file mode 100644 index 00000000000..648b1d39b5a --- /dev/null +++ b/.changeset/cyan-zoos-rule.md @@ -0,0 +1,7 @@ +--- +"@talend/scripts-config-babel": minor +--- + +feat: add preset modules option + +if process.env.ESM is set to true then the babel config will set preset-env.modules option to `false` so the output will be esm. diff --git a/.changeset/smooth-queens-dance.md b/.changeset/smooth-queens-dance.md new file mode 100644 index 00000000000..b5e761e5d89 --- /dev/null +++ b/.changeset/smooth-queens-dance.md @@ -0,0 +1,20 @@ +--- +"@talend/scripts-config-react-webpack": minor +"@talend/json-schema-form-core": minor +"@talend/react-faceted-search": minor +"@talend/design-system": minor +"@talend/design-tokens": minor +"@talend/react-bootstrap": minor +"@talend/assets-api": minor +"@talend/react-cmf-router": minor +"@talend/react-components": minor +"@talend/react-containers": minor +"@talend/react-dataviz": minor +"@talend/react-forms": minor +"@talend/icons": minor +"@talend/utils": minor +"@talend/react-a11y": minor +"@talend/react-cmf": minor +--- + +Add support to ESM diff --git a/.changeset/spotty-trains-hammer.md b/.changeset/spotty-trains-hammer.md new file mode 100644 index 00000000000..d84e6974941 --- /dev/null +++ b/.changeset/spotty-trains-hammer.md @@ -0,0 +1,8 @@ +--- +"@talend/storybook-docs": patch +"@talend/design-docs": patch +"@talend/bootstrap-theme": patch +"@talend/scripts-config-storybook-lib": patch +--- + +Make it compatible with ESM diff --git a/.changeset/three-poets-laugh.md b/.changeset/three-poets-laugh.md new file mode 100644 index 00000000000..0d2ea9f01f5 --- /dev/null +++ b/.changeset/three-poets-laugh.md @@ -0,0 +1,5 @@ +--- +"@talend/scripts-core": minor +--- + +feat: add --esm option to talend-scripts build:lib diff --git a/.gitignore b/.gitignore index abc39076d1d..ed9f9e57949 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ build/ /packages/*/i18n/ tmp/ lib/ +lib-esm/ storybook-static/ dist/ eslint-report.json diff --git a/fork/json-schema-form-core/package.json b/fork/json-schema-form-core/package.json index 3380fe65541..0d24c3976cf 100644 --- a/fork/json-schema-form-core/package.json +++ b/fork/json-schema-form-core/package.json @@ -3,9 +3,16 @@ "version": "1.2.7", "description": "JSON-Schema and JSON-UI-Schema utilities for form generation.", "main": "dist/index.js", - "mainSrc": "src/index.js", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./dist/index.js" + } + }, "scripts": { "build:lib": "rimraf dist && talend-scripts build --umd", + "build:lib:esm": "talend-scripts build --esm", "watch": "webpack --watch", "dist-untested": "webpack --config webpack.config.dist.js", "test:cov": "npm run test", diff --git a/fork/json-schema-form-core/tsconfig.esm.json b/fork/json-schema-form-core/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/fork/json-schema-form-core/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/fork/react-bootstrap/package.json b/fork/react-bootstrap/package.json index 344b0b04e40..e956110595c 100644 --- a/fork/react-bootstrap/package.json +++ b/fork/react-bootstrap/package.json @@ -9,9 +9,17 @@ "homepage": "https://react-bootstrap.github.io/", "sideEffects": false, "main": "lib/index.js", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", + "build:lib:esm": "talend-scripts build --esm", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", "lint": "talend-scripts lint", @@ -40,6 +48,7 @@ "devDependencies": { "@talend/eslint-config": "^13.0.3", "@talend/eslint-plugin": "^1.1.1", + "@talend/scripts-config-typescript": "^11.2.1", "@talend/scripts-core": "^16.3.5", "@talend/scripts-config-babel": "^13.3.1", "@talend/scripts-config-react-webpack": "^16.6.0", diff --git a/fork/react-bootstrap/tsconfig.esm.json b/fork/react-bootstrap/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/fork/react-bootstrap/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/fork/react-bootstrap/tsconfig.json b/fork/react-bootstrap/tsconfig.json new file mode 100644 index 00000000000..3405e576ec1 --- /dev/null +++ b/fork/react-bootstrap/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@talend/scripts-config-typescript/tsconfig.json", + "include": ["src/**/*"] +} diff --git a/package.json b/package.json index 873a69ed950..b327bf96bcb 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "typescript": "^5.3.3" }, "scripts": { - "postinstall": "talend-yarn-workspace run build:lib", + "postinstall": "talend-yarn-workspace run build:lib && talend-yarn-workspace run build:lib:esm", "pre-release": "talend-yarn-workspace run pre-release", "start": "yarn workspace @talend/ui-playground run start", "start-storybook": "yarn workspace @talend/ui-storybook-one run start", diff --git a/packages/a11y/package.json b/packages/a11y/package.json index ddaa3623178..920389ecf44 100644 --- a/packages/a11y/package.json +++ b/packages/a11y/package.json @@ -5,8 +5,16 @@ "mainSrc": "src/index.js", "license": "Apache-2.0", "types": "./lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "scripts": { "build:lib": "talend-scripts build", + "build:lib:esm": "talend-scripts build --esm", "test": "talend-scripts test", "lint": "talend-scripts lint" }, diff --git a/packages/a11y/tsconfig.esm.json b/packages/a11y/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/packages/a11y/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/assets-api/package.json b/packages/assets-api/package.json index 8d7efc61104..753b1b143a2 100644 --- a/packages/assets-api/package.json +++ b/packages/assets-api/package.json @@ -3,11 +3,18 @@ "description": "A set of API designed to access assets using CDN", "types": "lib/index.d.ts", "main": "lib/index.js", - "mainSrc": "src/index.ts", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "pre-release": "talend-scripts build --umd && talend-scripts build --umd --dev", "build:lib": "talend-scripts build", + "build:lib:esm": "talend-scripts build --esm", "start": "echo nothing to start", "test": "talend-scripts test", "test:watch": "talend-scripts test --watch", diff --git a/packages/assets-api/tsconfig.esm.json b/packages/assets-api/tsconfig.esm.json new file mode 100644 index 00000000000..a61d885eff3 --- /dev/null +++ b/packages/assets-api/tsconfig.esm.json @@ -0,0 +1,9 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["src/**/*.test.ts"], + "compilerOptions": { + "declaration": true, + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/cmf-router/package.json b/packages/cmf-router/package.json index 82b3873333c..79a4fb72b19 100644 --- a/packages/cmf-router/package.json +++ b/packages/cmf-router/package.json @@ -3,11 +3,19 @@ "version": "6.1.3", "description": "", "main": "lib/index.js", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "author": "Talend Frontend (http://www.talend.com)", "license": "Apache-2.0", "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", + "build:lib:esm": "talend-scripts build --esm", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", "start": "echo nothing to start", @@ -39,6 +47,7 @@ "@talend/scripts-core": "^16.3.5", "@talend/scripts-config-babel": "^13.3.1", "@talend/scripts-config-react-webpack": "^16.5.1", + "@talend/scripts-config-typescript": "^11.2.1", "react": "^18.2.0", "react-dom": "^18.2.0", "redux-saga-tester": "^1.0.874" diff --git a/packages/cmf-router/tsconfig.esm.json b/packages/cmf-router/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/packages/cmf-router/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/cmf-router/tsconfig.json b/packages/cmf-router/tsconfig.json new file mode 100644 index 00000000000..3405e576ec1 --- /dev/null +++ b/packages/cmf-router/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@talend/scripts-config-typescript/tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/cmf/package.json b/packages/cmf/package.json index bce95a6b046..3989559af41 100644 --- a/packages/cmf/package.json +++ b/packages/cmf/package.json @@ -4,9 +4,21 @@ "main": "lib/index.js", "mainSrc": "src/index.js", "license": "Apache-2.0", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + }, + "./lib/*": { + "import": "./lib-esm/*", + "require": "./lib/*" + } + }, "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", + "build:lib:esm": "talend-scripts build --esm", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", "start": "echo nothing to start", @@ -54,6 +66,7 @@ "@redux-saga/testing-utils": "^1.1.5", "@talend/eslint-config": "^13.0.3", "@talend/eslint-plugin": "^1.1.1", + "@talend/scripts-config-typescript": "^11.2.1", "@talend/scripts-core": "^16.3.5", "@talend/scripts-config-babel": "^13.3.1", "@talend/scripts-config-jest": "^14.0.2", diff --git a/packages/cmf/tsconfig.esm.json b/packages/cmf/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/packages/cmf/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/cmf/tsconfig.json b/packages/cmf/tsconfig.json new file mode 100644 index 00000000000..3405e576ec1 --- /dev/null +++ b/packages/cmf/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@talend/scripts-config-typescript/tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/components/package.json b/packages/components/package.json index c39d66a169c..f3be7cf38a9 100644 --- a/packages/components/package.json +++ b/packages/components/package.json @@ -2,13 +2,24 @@ "name": "@talend/react-components", "description": "Set of react components.", "main": "lib/index.js", - "mainSrc": "src/index.js", + "module": "./lib-esm/index.js", + "exports": { + "./lib/*": { + "import": "./lib-esm/*/index.js", + "require": "./lib/*/index.js" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build && yarn run tsc", + "build:lib:esm": "talend-scripts build --esm", "watch": "talend-scripts build --watch", "tsc": "tsc --emitDeclarationOnly --project ./tsconfig.json --outDir ./types", "test": "cross-env TZ=UTC talend-scripts test", @@ -78,15 +89,15 @@ "@talend/eslint-plugin": "^1.1.1", "@talend/locales-design-system": "^7.15.1", "@talend/locales-tui-components": "^11.4.5", - "@talend/scripts-core": "^16.3.5", "@talend/scripts-config-babel": "^13.3.1", "@talend/scripts-config-react-webpack": "^16.5.1", "@talend/scripts-config-storybook-lib": "^5.3.1", "@talend/scripts-config-typescript": "^11.2.1", + "@talend/scripts-core": "^16.3.5", "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.2.1", - "@testing-library/user-event": "^14.5.2", "@testing-library/react-hooks": "^8.0.1", + "@testing-library/user-event": "^14.5.2", "@types/classnames": "^2.3.1", "@types/d3": "^7.4.3", "@types/jest": "^29.5.12", @@ -102,8 +113,8 @@ "react": "^18.2.0", "react-a11y": "^0.3.4", "react-dom": "^18.2.0", - "react-router-dom": "~6.3.0", "react-i18next": "^13.5.0", + "react-router-dom": "~6.3.0", "react-test-renderer": "^18.2.0" }, "peerDependencies": { diff --git a/packages/components/tsconfig.esm.json b/packages/components/tsconfig.esm.json new file mode 100644 index 00000000000..d5d4fa3f742 --- /dev/null +++ b/packages/components/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "src/**/*.stories.*", "src/**/*.test.*"], + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/containers/package.json b/packages/containers/package.json index 880fb1fb917..10694b07429 100644 --- a/packages/containers/package.json +++ b/packages/containers/package.json @@ -2,13 +2,25 @@ "name": "@talend/react-containers", "description": "Provide connected components aka containers for @talend/react-cmf based on @talend/react-components.", "main": "lib/index.js", - "mainSrc": "src/index.js", + "types": "lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + "./lib/*": { + "import": "./lib-esm/*/index.js", + "require": "./lib/*/index.js" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", + "build:lib:esm": "talend-scripts build --esm", "start": "talend-scripts start-storybook -p 6007", "test": "talend-scripts test", "test:watch": "talend-scripts test --watch", diff --git a/packages/containers/tsconfig.esm.json b/packages/containers/tsconfig.esm.json new file mode 100644 index 00000000000..11b76596549 --- /dev/null +++ b/packages/containers/tsconfig.esm.json @@ -0,0 +1,9 @@ +{ + "extends": "@talend/scripts-config-typescript/tsconfig.json", + "include": ["src/**/*"], + "compilerOptions": { + "declaration": true, + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/dataviz/package.json b/packages/dataviz/package.json index 5671dccc992..827462d5aac 100644 --- a/packages/dataviz/package.json +++ b/packages/dataviz/package.json @@ -3,14 +3,21 @@ "version": "6.1.5", "description": "Talend charts and visualization components", "main": "lib/index.js", - "mainSrc": "src/index.ts", "types": "./lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "pre-release": "yarn build:umd:dev && yarn build:umd:prod", "build:umd:dev": "talend-scripts build --umd --dev", "build:umd:prod": "talend-scripts build --umd", "build:lib": "talend-scripts build", + "build:lib:esm": "talend-scripts build --esm", "build-storybook": "talend-scripts build-storybook", "extract-i18n": "i18next-scanner --config i18next-scanner.config.js", "lint": "talend-scripts lint", diff --git a/packages/dataviz/tsconfig.esm.json b/packages/dataviz/tsconfig.esm.json new file mode 100644 index 00000000000..e24819d9f43 --- /dev/null +++ b/packages/dataviz/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + }, + "exclude": ["src/**/*.test.*", "src/**/*.stories.*", "src/**/*.cy.*"] +} diff --git a/packages/design-docs/src/StatusTable.tsx b/packages/design-docs/src/StatusTable.tsx index 427135982a5..61524be4be1 100644 --- a/packages/design-docs/src/StatusTable.tsx +++ b/packages/design-docs/src/StatusTable.tsx @@ -1,7 +1,9 @@ import { Suspense } from 'react'; -// eslint-disable-next-line @talend/import-depth -import statuses from '@talend/design-system/src/stories/status.json'; -import { Statuses, ComponentStatuses } from '@talend/storybook-docs'; + +import { ComponentStatuses, Statuses } from '@talend/storybook-docs'; + +import statuses from './status.json'; + import theme from './StatusTable.module.scss'; function toTitleCase(value: string) { diff --git a/packages/design-docs/src/status.json b/packages/design-docs/src/status.json new file mode 100644 index 00000000000..ad18832d27b --- /dev/null +++ b/packages/design-docs/src/status.json @@ -0,0 +1,699 @@ +{ + "accordion": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/CDfr4jLz1m6Ud2RNi4qpQJ/Accordion" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Accordion/Accordion.tsx" + }, + "i18n": { "status": "na" } + }, + "badge": { + "figma": { + "status": "wip", + "link": "https://www.figma.com/file/3YWRmMgPIjAABxJl9X9B3W/Badge" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Badge/Badge.tsx" + }, + "i18n": { "status": "wip" } + }, + "breadcrumbs": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/8ifUyNjdZkWBmKKrgfB675/Breadcrumbs" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Breadcrumbs/Breadcrumbs.tsx" + }, + "i18n": { "status": "na" } + }, + "button": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/vvJTHBAgiLfBpgeKEjmvvZ/Buttons" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Button/Button.tsx" + }, + "i18n": { "status": "na" } + }, + "buttonAsLink": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/vvJTHBAgiLfBpgeKEjmvvZ/Buttons" + }, + "storybook": { + "status": "ok" + }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/ButtonAsLink/ButtonAsLink.tsx" + }, + "i18n": { "status": "na" } + }, + "buttonIcon": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/KuJ1PlP77uyXlfOhdniqsZ/ButtonIcon?node-id=1%3A75" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/ButtonIcon/variations/ButtonIcon.tsx" + }, + "i18n": { "status": "na" } + }, + "card": { + "figma": { "status": "wip" }, + "storybook": { "status": "wip" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Card/Card.tsx" + }, + "i18n": { "status": "na" } + }, + "combobox": { + "figma": { + "status": "wip", + "link": "https://www.figma.com/file/XLAg5NdlNDKGVp6IgqDzGC/Combo-box" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Combobox/Combobox.tsx" + }, + "i18n": { "status": "na" } + }, + "divider": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/OGrnGJ6dCVvU0CRYsOuiTZ/Divider" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Divider/Divider.tsx" + }, + "i18n": { "status": "na" } + }, + "drawer": { + "figma": { + "status": "wip", + "link": "https://www.figma.com/file/x0RxG7E0CzVWDycXtNgq7H/Drawer" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Drawer/variants/FloatingDrawer/FloatingDrawer.tsx" + }, + "i18n": { "status": "na" } + }, + "floatingDrawer": { + "figma": { + "status": "wip", + "link": "https://www.figma.com/file/x0RxG7E0CzVWDycXtNgq7H/Drawer" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Drawer/variants/FloatingDrawer/FloatingDrawer.tsx" + }, + "i18n": { "status": "na" } + }, + "dropdown": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/IUeLBwjDCMkpdO7OtZ29u1/Dropdown" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Dropdown/Dropdown.tsx" + }, + "i18n": { "status": "na" } + }, + "emptyState": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/6XBBCBVOhyX6yTaNcZQiti/Empty-States" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/EmptyState/EmptyState.tsx" + }, + "i18n": { "status": "wip" } + }, + "errorState": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/hMYM9HGXajJpWdGwRb5ITR/Coral?node-id=5523%3A27380" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/ErrorState/ErrorState.tsx" + }, + "i18n": { "status": "na" } + }, + "form": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/FaYIWpJeP6LwjWr78L8eAr/Forms?node-id=58%3A0" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Form.tsx" + }, + "i18n": { "status": "na" } + }, + "formAffix": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=249%3A129" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Affix/variations/AffixSelect.tsx" + }, + "i18n": { "status": "na" } + }, + "formButton": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/FaYIWpJeP6LwjWr78L8eAr/?node-id=34%3A4932" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Buttons/Buttons.tsx" + }, + "i18n": { "status": "na" } + }, + "formField": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/hMYM9HGXajJpWdGwRb5ITR/Coral?node-id=5300%3A21659" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok" + }, + "i18n": { "status": "na" } + }, + "formFieldDatalist": { + "figma": { + "status": "ok", + "link": "ttps://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=252%3A0" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Datalist/Datalist.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputPassword": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A294" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Password/Password.tsx" + }, + "i18n": { "status": "ok" } + }, + "formFieldInputCheckbox": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/9q3dOyrI7zRR7dHDe2jRpz/Checkbox?node-id=0%3A1" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Checkbox.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputColor": { + "figma": { + "status": "wip", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=548%3A0" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Color.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputCopy": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=548%3A11" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Copy.tsx" + }, + "i18n": { "status": "ok" } + }, + "formFieldInputDate": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Date.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputDateTimeLocal": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.DatetimeLocal.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputEmail": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Checkbox.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputFile": { + "figma": { + "status": "ok", + "link": "ttps://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A233" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.File.tsx" + }, + "i18n": { "status": "ok" } + }, + "formFieldInputMonth": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Month.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputNumber": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=548%3A53" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Checkbox.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputRadio": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=44%3A76" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Radio.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputSearch": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A198" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Search.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputTel": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Tel.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputText": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Text.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputTime": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Time.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputToggleSwitch": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=252%3A9" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.ToggleSwitch.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputUrl": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Url.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputWeek": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A219" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Input/Input.Week.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputSelect": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A211" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Select/Select.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldInputTextArea": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=245%3A268" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Field/Textarea/Textarea.tsx" + }, + "i18n": { "status": "na" } + }, + "formEnumeration": { + "figma": { "status": "ok" }, + "storybook": { "status": "ok" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Enumeration/Enumeration.component.tsx" + }, + "i18n": { "status": "na" } + }, + "formFieldset": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=349%3A227" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Form/Fieldset/Fieldset.tsx" + }, + "i18n": { "status": "na" } + }, + "icon": { + "figma": { "status": "ok" }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Icon/Icon.tsx" + }, + "i18n": { "status": "na" } + }, + "sizedIcon": { + "figma": { "status": "ok" }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Icon/SizedIcon.tsx" + }, + "i18n": { "status": "na" } + }, + "inlineEditing": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/Ve55mrVTPmg8yDo8VKRp83/Inline-editing?node-id=422%3A3426" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/InlineEditing/variations/InlineEditing.text.tsx" + }, + "i18n": { "status": "ok" } + }, + "inlineMessage": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=12%3A96" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/InlineMessage/InlineMessage.tsx" + }, + "i18n": { "status": "na" } + }, + "link": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/l3FmBFqbeqqSlz9TBZKgWS/Links" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Link/Link.tsx" + }, + "i18n": { "status": "ok" } + }, + "loading": { + "figma": { "status": "ok" }, + "storybook": { "status": "wip" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Loading/Loading.tsx" + }, + "i18n": { "status": "na" } + }, + "message": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/MSrfT0wzGwQSL8GuyG3UE7/Messages?node-id=122%3A42331" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Message/Primitive/MessagePrimitive.tsx" + }, + "i18n": { "status": "na" } + }, + "modal": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/0Jolh2prAAdfO5224n3OU3/Modal" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Modal/Modal.tsx" + }, + "i18n": { "status": "na" } + }, + "popover": { + "figma": { "status": "wip" }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Popover/Popover.tsx" + }, + "i18n": { "status": "na" } + }, + "richRadioButton": { + "figma": { "status": "ok" }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/RichRadioButton/RichRadioButton.component.tsx" + }, + "i18n": { "status": "na" } + }, + "skeleton": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/RMs7GdNC3mnAwHgG4Firw9/Skeletons" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Skeleton/Skeleton.tsx" + }, + "i18n": { "status": "na" } + }, + "stack": { + "figma": { + "status": "na", + "link": "https://www.figma.com/file/qc8oUSyVJM67gSsbTShftt/%F0%9F%93%90-Zoning?node-id=1044%3A237" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Stack/Primitive/StackPrimitive.tsx" + }, + "i18n": { "status": "na" } + }, + "status": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/joEoPYw910CgGO0DiKWRoD/Status?node-id=2%3A72" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Status/Status.tsx" + }, + "i18n": { "status": "ok" } + }, + "stepper": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/WUVKJmcDHfR7K1q1lYhaHk/?node-id=1%3A5" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Stepper/Stepper.tsx" + }, + "i18n": { "status": "ok" } + }, + "stepperStep": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/WUVKJmcDHfR7K1q1lYhaHk/?node-id=1%3A4" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Stepper/Step/Primitive/Step.tsx" + }, + "i18n": { "status": "na" } + }, + "switch": { + "figma": { "status": "ok" }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Switch/Switch.tsx" + }, + "i18n": { "status": "na" } + }, + "tabs": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/bSesPlHPWLPA66wySm8VYV/Tabs" + }, + "storybook": { "status": "wip" }, + "react": { + "status": "wip", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/WIP/Tabs/variants/Tabs.tsx" + }, + "i18n": { "status": "na" } + }, + "tag": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/wggW0Nf0ZujylGaXt5Snnn/Tags" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Tag/Tag.tsx" + }, + "i18n": { "status": "na" } + }, + "tooltip": { + "figma": { + "status": "ok", + "link": "https://www.figma.com/file/93AaDV2pC1tK9J1O6IbHho/Tooltips" + }, + "storybook": { "status": "ok" }, + "react": { + "status": "ok", + "link": "https://github.com/Talend/ui/blob/master/packages/design-system/src/components/Tooltip/Tooltip.tsx" + }, + "i18n": { "status": "na" } + } +} diff --git a/packages/design-system/package.json b/packages/design-system/package.json index 9ab76ec0cca..87385e6a6bf 100644 --- a/packages/design-system/package.json +++ b/packages/design-system/package.json @@ -4,10 +4,22 @@ "description": "Talend Design System", "main": "lib/index.js", "types": "lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + "./lib/*": { + "import": "./lib-esm/*/index.js", + "require": "./lib/*/index.js" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "scripts": { "build:lib": "talend-scripts build", "build:lib:umd": "talend-scripts build --umd --dev", "build:lib:umd:min": "talend-scripts build --umd --prod", + "build:lib:esm": "talend-scripts build --esm", "pre-release": "npm run build:lib:umd && npm run build:lib:umd:min", "watch": "talend-scripts build --watch", "test": "talend-scripts test", diff --git a/packages/design-system/tsconfig.esm.json b/packages/design-system/tsconfig.esm.json new file mode 100644 index 00000000000..d89d5ed4d1f --- /dev/null +++ b/packages/design-system/tsconfig.esm.json @@ -0,0 +1,15 @@ +{ + "extends": "./tsconfig.json", + "exclude": [ + "node_modules", + "src/**/*.stories.*", + "src/**/*.test.*", + "src/**/*.cy.*", + "cypress/**/*", + "src/stories/**/*" + ], + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/design-tokens/package.json b/packages/design-tokens/package.json index dfaee6ea504..b18d56ec288 100644 --- a/packages/design-tokens/package.json +++ b/packages/design-tokens/package.json @@ -4,12 +4,35 @@ "description": "Talend Design Tokens", "main": "lib/index.js", "types": "lib/index.d.ts", - "mainSrc": "src/index.ts", + "module": "./lib-esm/index.js", + "exports": { + "./lib/tokens": { + "import": "./lib-esm/_tokens.scss", + "require": "./lib/_tokens.scss" + }, + "./lib/_tokens": { + "import": "./lib-esm/_tokens.scss", + "require": "./lib/_tokens.scss" + }, + "./lib/*": { + "import": "./lib-esm/*.js", + "require": "./lib/*.js" + }, + "./dist/*": { + "import": "./dist/*", + "require": "./dist/*" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "scripts": { "pre-release": "echo nothing", "build:umd:dev": "talend-scripts build --umd --dev", "build:umd:prod": "talend-scripts build --umd", "build:lib": "talend-scripts build && yarn build:umd:dev && yarn build:umd:prod && yarn test:umd", + "build:lib:esm": "yarn build:lib && talend-scripts build --esm && cpx 'dist/*' lib/esm/dist --verbose", "test": "echo no test for @talend/design-tokens", "test:cov": "echo no test for @talend/design-tokens", "test:umd": "jest scripts/umd.test.js", diff --git a/packages/design-tokens/tsconfig.esm.json b/packages/design-tokens/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/packages/design-tokens/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/faceted-search/package.json b/packages/faceted-search/package.json index 3493cd34c48..d66dcecca8d 100644 --- a/packages/faceted-search/package.json +++ b/packages/faceted-search/package.json @@ -3,13 +3,24 @@ "version": "19.0.1", "description": "Faceted search", "main": "lib/index.js", - "mainSrc": "src/index.js", + "module": "./lib-esm/index.js", + "exports": { + "./lib/*": { + "import": "./lib-esm/*/index.js", + "require": "./lib/*/index.js" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", + "build:lib:esm": "talend-scripts build --esm", "test": "cross-env TZ=UTC talend-scripts test", "test:watch": "cross-env TZ=UTC talend-scripts test --watch", "test:cov": "cross-env TZ=UTC talend-scripts test --coverage", @@ -55,6 +66,7 @@ "@talend/scripts-config-jest": "^14.0.2", "@talend/scripts-config-react-webpack": "^16.5.1", "@talend/scripts-config-storybook-lib": "^5.3.1", + "@talend/scripts-config-typescript": "^11.2.1", "@testing-library/react": "^14.2.1", "@testing-library/user-event": "^14.5.2", "babel-plugin-angularjs-annotate": "^0.10.0", diff --git a/packages/faceted-search/tsconfig.esm.json b/packages/faceted-search/tsconfig.esm.json new file mode 100644 index 00000000000..6bbc81329ae --- /dev/null +++ b/packages/faceted-search/tsconfig.esm.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/faceted-search/tsconfig.json b/packages/faceted-search/tsconfig.json new file mode 100644 index 00000000000..3405e576ec1 --- /dev/null +++ b/packages/faceted-search/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@talend/scripts-config-typescript/tsconfig.json", + "include": ["src/**/*"] +} diff --git a/packages/forms/package.json b/packages/forms/package.json index 61c5dc47e6f..50c57a1ecdd 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -2,12 +2,19 @@ "name": "@talend/react-forms", "description": "React forms library based on json schema form.", "main": "lib/index.js", - "mainSrc": "src/index.js", "types": "./lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "license": "Apache-2.0", "scripts": { "build:dev": "talend-scripts build --umd --dev", "build:prod": "talend-scripts build --umd --prod", + "build:lib:esm": "talend-scripts build --esm", "build-storybook": "talend-scripts build-storybook", "pre-release": "yarn build:dev && yarn build:prod", "build:lib": "talend-scripts build", diff --git a/packages/forms/tsconfig.esm.json b/packages/forms/tsconfig.esm.json new file mode 100644 index 00000000000..49608e4591f --- /dev/null +++ b/packages/forms/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + }, + "exclude": ["node_modules", "stories/**/*", "src/**/*.test.*"] +} diff --git a/packages/icons/package.json b/packages/icons/package.json index d6c25859030..98cb16b6451 100644 --- a/packages/icons/package.json +++ b/packages/icons/package.json @@ -4,6 +4,22 @@ "main": "dist/TalendIcons.js", "types": "dist/typeUtils.d.ts", "style": "build/octicons.css", + "module": "./lib-esm/index.js", + "exports": { + "./.storybook/main.js": "./.storybook/main.js", + "./src/*": { + "import": "./src/*", + "require": "./src/*" + }, + "./dist/typeUtils": { + "import": "./lib-esm/typeUtils.js", + "require": "./dist/typeUtils.js" + }, + ".": { + "import": "./dist/TalendIcons.js", + "require": "./dist/TalendIcons.js" + } + }, "license": "Apache-2.0", "scripts": { "build-umd": "webpack --config webpack.umd.js && webpack --config webpack.umd.js --env production", @@ -11,6 +27,7 @@ "build-react": "node scripts/react.js", "build-webfont": "webpack", "build:lib": "npm run ts:types && npm run build-ts && npm run build-react && npm run build-webfont && npm run build-umd", + "build:lib:esm": "talend-scripts build --esm && cpx 'src/**/*.{svg,json}' lib/esm/src --verbose", "ts:types": "node scripts/typescript.js", "test": "echo no test", "test:cov": "echo no test", diff --git a/packages/icons/tsconfig.esm.json b/packages/icons/tsconfig.esm.json new file mode 100644 index 00000000000..afb7ff63e56 --- /dev/null +++ b/packages/icons/tsconfig.esm.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "include": ["src/**/*"], + "exclude": [ + "node_modules", + "src/**/*.stories.*", + "src/**/*.test.*", + "src/**/*.cy.*", + "cypress/**/*", + "src/stories/**/*" + ], + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/packages/playground-vite/.babelrc.json b/packages/playground-vite/.babelrc.json new file mode 100644 index 00000000000..abd323e11de --- /dev/null +++ b/packages/playground-vite/.babelrc.json @@ -0,0 +1,3 @@ +{ + "extends": "@talend/scripts-config-babel/babel.config.js" +} diff --git a/packages/playground-vite/.editorconfig b/packages/playground-vite/.editorconfig new file mode 100644 index 00000000000..1afd48691fd --- /dev/null +++ b/packages/playground-vite/.editorconfig @@ -0,0 +1,13 @@ +# http://editorconfig.org +root = true +[*] +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +[*.js, *.jsx, *.css, *.scss] +indent_style = tab +# special rule for json expecially package.json wich npm reset to space for any modification +[*.json] +indent_style = space +indent_size = 2 diff --git a/packages/playground-vite/.eslintrc.json b/packages/playground-vite/.eslintrc.json new file mode 100644 index 00000000000..8464e11418a --- /dev/null +++ b/packages/playground-vite/.eslintrc.json @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": "@talend" +} diff --git a/packages/playground-vite/.gitignore b/packages/playground-vite/.gitignore new file mode 100644 index 00000000000..d44b5d89dee --- /dev/null +++ b/packages/playground-vite/.gitignore @@ -0,0 +1,3 @@ +dist +package-lock.json +.cache-loader/ diff --git a/packages/playground-vite/.talend/head.html b/packages/playground-vite/.talend/head.html new file mode 100644 index 00000000000..7224a9a22bc --- /dev/null +++ b/packages/playground-vite/.talend/head.html @@ -0,0 +1,8 @@ + diff --git a/packages/playground-vite/CHANGELOG.md b/packages/playground-vite/CHANGELOG.md new file mode 100644 index 00000000000..8deb9e322bc --- /dev/null +++ b/packages/playground-vite/CHANGELOG.md @@ -0,0 +1,570 @@ +# @talend/ui-playground + +## 2.4.4 + +### Patch Changes + +- Updated dependencies [27a4a5d] + - @talend/react-faceted-search@19.0.0 + +## 2.4.3 + +### Patch Changes + +- Updated dependencies [0629df7] + - @talend/react-forms@14.0.0 + - @talend/react-containers@10.7.3 + +## 2.4.2 + +### Patch Changes + +- Updated dependencies [ce93823] + - @talend/design-system@10.0.0 + - @talend/react-components@16.0.0 + - @talend/react-containers@10.7.2 + - @talend/react-dataviz@6.1.3 + - @talend/react-faceted-search@18.0.0 + - @talend/react-forms@13.2.3 + +## 2.4.1 + +### Patch Changes + +- 1abc22f: chore: upgrade dependencies +- Updated dependencies [1abc22f] +- Updated dependencies [5cedaf1] + - @talend/react-faceted-search@17.2.1 + - @talend/design-system@9.8.1 + - @talend/design-tokens@3.1.1 + - @talend/assets-api@1.3.2 + - @talend/react-cmf-router@6.1.2 + - @talend/react-components@15.3.1 + - @talend/react-containers@10.7.1 + - @talend/react-dataviz@6.1.2 + - @talend/react-forms@13.2.2 + - @talend/icons@7.7.1 + - @talend/bootstrap-theme@9.1.1 + - @talend/react-cmf@8.4.1 + +## 2.4.0 + +### Minor Changes + +- 9568363: Use include instead of same-origin in the credentials option of fetch. + +### Patch Changes + +- Updated dependencies [5770c9f] +- Updated dependencies [9568363] + - @talend/react-faceted-search@17.1.0 + - @talend/design-system@9.2.0 + - @talend/design-tokens@3.1.0 + - @talend/react-components@15.1.0 + - @talend/react-containers@10.7.0 + - @talend/react-dataviz@6.1.0 + - @talend/react-forms@13.1.0 + - @talend/icons@7.7.0 + - @talend/bootstrap-theme@9.1.0 + - @talend/react-cmf@8.4.0 + +## 2.3.4 + +### Patch Changes + +- Updated dependencies [b1c72a1] + - @talend/design-tokens@3.0.0 + - @talend/bootstrap-theme@9.0.0 + - @talend/react-components@15.0.1 + - @talend/react-dataviz@6.0.1 + - @talend/design-system@9.0.1 + - @talend/react-faceted-search@17.0.1 + - @talend/react-forms@13.0.1 + +## 2.3.3 + +### Patch Changes + +- Updated dependencies [18c1d97] +- Updated dependencies [18c1d97] + - @talend/react-faceted-search@17.0.0 + - @talend/react-components@15.0.0 + - @talend/react-dataviz@6.0.0 + - @talend/react-forms@13.0.0 + - @talend/design-system@9.0.0 + - @talend/react-containers@10.6.1 + +## 2.3.2 + +### Patch Changes + +- f675918: fix(DFD-536): Fix click on collapsible toggle +- Updated dependencies [f0770b1] +- Updated dependencies [f675918] +- Updated dependencies [7cc4321] +- Updated dependencies [2065869] + - @talend/design-system@8.11.1 + - @talend/react-forms@12.6.0 + - @talend/react-faceted-search@16.0.0 + +## 2.3.1 + +### Patch Changes + +- Updated dependencies [e095335] +- Updated dependencies [922e3eb] + - @talend/react-components@14.0.0 + - @talend/react-faceted-search@15.0.0 + - @talend/react-dataviz@5.0.0 + - @talend/react-containers@10.5.1 + - @talend/react-forms@12.5.1 + - @talend/react-cmf@8.3.3 + - @talend/design-system@8.8.3 + +## 2.3.0 + +### Minor Changes + +- 7de44f9: Remove dependency on react-bootstrap + +### Patch Changes + +- Updated dependencies [7de44f9] +- Updated dependencies [7de44f9] +- Updated dependencies [7de44f9] +- Updated dependencies [c9e740d] + - @talend/react-components@13.0.0 + - @talend/react-containers@10.4.0 + - @talend/react-forms@12.4.0 + - @talend/react-dataviz@4.2.2 + - @talend/react-faceted-search@14.0.0 + +## 2.2.2 + +### Patch Changes + +- Updated dependencies [b71e4e6] +- Updated dependencies [a7b06bc] +- Updated dependencies [a7b06bc] +- Updated dependencies [424544a] +- Updated dependencies [266df87] + - @talend/design-system@8.7.0 + - @talend/react-faceted-search@13.0.0 + - @talend/react-components@12.4.0 + +## 2.2.1 + +### Patch Changes + +- c468f2f: chore: upgrade dependencies +- Updated dependencies [c468f2f] +- Updated dependencies [6c2df2b] + - @talend/react-faceted-search@12.2.1 + - @talend/design-system@8.6.1 + - @talend/design-tokens@2.10.1 + - @talend/react-bootstrap@2.2.1 + - @talend/assets-api@1.3.1 + - @talend/react-cmf-router@6.1.1 + - @talend/react-components@12.3.1 + - @talend/react-containers@10.3.1 + - @talend/react-dataviz@4.2.1 + - @talend/react-forms@12.3.1 + - @talend/icons@7.3.1 + - @talend/bootstrap-theme@8.3.1 + - @talend/react-cmf@8.3.1 + +## 2.2.0 + +### Minor Changes + +- b9cc5b097: Add missing deps and fix webpack.config file + +### Patch Changes + +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] +- Updated dependencies [b9cc5b097] + - @talend/react-containers@10.2.0 + - @talend/assets-api@1.3.0 + - @talend/design-tokens@2.10.0 + - @talend/react-dataviz@4.2.0 + - @talend/design-system@8.2.0 + - @talend/react-cmf@8.2.0 + - @talend/icons@7.2.0 + - @talend/react-forms@12.1.0 + - @talend/bootstrap-theme@8.3.0 + +## 2.1.1 + +### Patch Changes + +- Updated dependencies [8ec56028a] + - @talend/react-forms@12.0.0 + - @talend/react-containers@10.1.1 + +## 2.1.0 + +### Minor Changes + +- 3f9c8a7bb: update babel config to use babel.config.js instead of .babelrc.json + add missing deps + +### Patch Changes + +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [2177ddfb3] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [77826b091] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] +- Updated dependencies [3f9c8a7bb] + - @talend/react-cmf@8.1.0 + - @talend/react-containers@10.1.0 + - @talend/icons@7.1.0 + - @talend/react-components@12.1.0 + - @talend/react-forms@11.1.0 + - @talend/react-cmf-router@6.1.0 + - @talend/react-dataviz@4.1.0 + - @talend/react-bootstrap@2.1.0 + - @talend/react-faceted-search@12.1.0 + +## 2.0.0 + +### Major Changes + +- 4044f6198: ARCH-662 - Bump i18next from v20 to v23 and react-i18next from v11 to v13 + +### Patch Changes + +- Updated dependencies [96d688489] +- Updated dependencies [9a0732ec5] +- Updated dependencies [da4cf2971] +- Updated dependencies [4044f6198] + - @talend/react-faceted-search@12.0.0 + - @talend/react-bootstrap@2.0.0 + - @talend/react-cmf-router@6.0.0 + - @talend/react-components@12.0.0 + - @talend/react-containers@10.0.0 + - @talend/react-dataviz@4.0.0 + - @talend/react-forms@11.0.0 + - @talend/icons@7.0.0 + - @talend/react-cmf@8.0.0 + - @talend/bootstrap-theme@8.2.1 + +## 1.1.15 + +### Patch Changes + +- Updated dependencies [bfc02c4fb] +- Updated dependencies [bfc02c4fb] +- Updated dependencies [40e70c055] +- Updated dependencies [bfc02c4fb] +- Updated dependencies [bfc02c4fb] +- Updated dependencies [bfc02c4fb] + - @talend/react-faceted-search@11.0.0 + - @talend/react-dataviz@3.0.0 + - @talend/react-components@11.0.0 + - @talend/react-forms@10.0.0 + - @talend/bootstrap-theme@8.0.0 + - @talend/react-containers@9.1.3 + +## 1.1.14 + +### Patch Changes + +- Updated dependencies [aab0eeb36] + - @talend/react-faceted-search@10.0.0 + +## 1.1.13 + +### Patch Changes + +- 616601fda: chore: clean unnecessary react imports after React v17 + + removed by running script `npx react-codemod update-react-imports` + + see doc https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#removing-unused-react-imports + +- Updated dependencies [9db7ef2fe] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [e7d785a6a] +- Updated dependencies [7a097213f] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [b0193afbd] +- Updated dependencies [616601fda] +- Updated dependencies [f47e34dd0] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [9db7ef2fe] +- Updated dependencies [7a097213f] + - @talend/icons@6.55.0 + - @talend/react-components@10.2.2 + - @talend/react-faceted-search@9.1.1 + - @talend/react-cmf-router@5.2.6 + - @talend/react-containers@9.0.2 + - @talend/react-dataviz@2.8.7 + - @talend/react-forms@9.0.4 + - @talend/react-cmf@7.2.0 + +## 1.1.12 + +### Patch Changes + +- Updated dependencies [4dfe7b010] + - @talend/react-components@10.0.0 + - @talend/react-containers@9.0.0 + - @talend/react-dataviz@2.8.6 + - @talend/react-faceted-search@9.0.0 + - @talend/react-forms@9.0.2 + +## 1.1.11 + +### Patch Changes + +- Updated dependencies [99398080f] +- Updated dependencies [5e4aad637] + - @talend/react-containers@8.0.2 + - @talend/react-dataviz@2.8.5 + - @talend/react-forms@9.0.0 + +## 1.1.10 + +### Patch Changes + +- Updated dependencies [9c44d724f] +- Updated dependencies [e83d88f83] +- Updated dependencies [14b462534] +- Updated dependencies [1200c70f8] +- Updated dependencies [70677664b] + - @talend/react-components@9.0.0 + - @talend/react-containers@8.0.0 + - @talend/bootstrap-theme@7.0.0 + - @talend/react-datagrid@14.0.0 + - @talend/react-dataviz@2.8.4 + - @talend/react-forms@8.1.7 + +## 1.1.9 + +### Patch Changes + +- Updated dependencies [ef3977697] +- Updated dependencies [2be2c3f47] +- Updated dependencies [2be2c3f47] +- Updated dependencies [105990b24] +- Updated dependencies [c0ed60ee5] + - @talend/react-components@8.0.0 + - @talend/react-dataviz@2.8.3 + - @talend/react-containers@7.3.2 + - @talend/react-datagrid@13.0.3 + - @talend/react-forms@8.1.6 + +## 1.1.8 + +### Patch Changes + +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [25f96d364] +- Updated dependencies [94435b8cd] + - @talend/icons@6.51.0 + - @talend/react-datagrid@13.0.0 + +## 1.1.7 + +### Patch Changes + +- Updated dependencies [d134a19e8] + - @talend/react-faceted-search@8.0.0 + +## 1.1.6 + +### Patch Changes + +- 6f333498f: fix datagrid page +- a3c65c4fe: fix(playground): display playground icons +- Updated dependencies [47dec5cb4] +- Updated dependencies [e6efa126f] + - @talend/react-faceted-search@7.0.2 + - @talend/react-components@7.10.1 + +## 1.1.5 + +### Patch Changes + +- Updated dependencies [e5aa63ef6] + - @talend/react-faceted-search@7.0.0 + +## 1.1.4 + +### Patch Changes + +- de6f9f80c: Handle datagrid breaking changes +- Updated dependencies [2a7278a95] +- Updated dependencies [c02aeb6ae] +- Updated dependencies [1df17ebbc] +- Updated dependencies [a99154a7d] +- Updated dependencies [c815ba11f] +- Updated dependencies [262e60063] + - @talend/react-datagrid@12.0.0 + - @talend/react-forms@8.1.0 + - @talend/react-components@7.5.0 + - @talend/react-containers@7.3.0 + - @talend/react-dataviz@2.4.0 + - @talend/react-faceted-search@6.0.0 + +## 1.1.3 + +### Patch Changes + +- Updated dependencies [8f396f7d5] +- Updated dependencies [3be0e2d22] +- Updated dependencies [a64664410] +- Updated dependencies [f8a5555eb] +- Updated dependencies [6daf0e5dc] + - @talend/react-components@7.3.0 + - @talend/react-cmf-router@5.2.0 + - @talend/react-forms@8.0.0 + - @talend/react-cmf@7.1.3 + - @talend/react-containers@7.2.4 + +## 1.1.2 + +### Patch Changes + +- Updated dependencies [df3460428] +- Updated dependencies [6887f0fcf] +- Updated dependencies [6887f0fcf] + - @talend/react-datagrid@11.0.0 + - @talend/icons@6.44.0 + +## 1.1.1 + +### Patch Changes + +- Updated dependencies [9a581a4bc] +- Updated dependencies [c8fbf0130] +- Updated dependencies [1160ec1f6] + - @talend/react-components@7.0.0 + - @talend/react-forms@7.3.1 + - @talend/react-containers@7.2.2 + - @talend/react-datagrid@10.0.0 + - @talend/react-dataviz@2.2.1 + - @talend/react-faceted-search@5.0.0 + +## 1.1.0 + +### Minor Changes + +- 47b758112: feat(ARCH-482): use React 17 internally and extend react peer dep version + +### Patch Changes + +- Updated dependencies [6562e397f] +- Updated dependencies [47b758112] + - @talend/react-components@6.49.0 + - @talend/react-bootstrap@1.35.0 + - @talend/react-cmf@7.1.0 + - @talend/react-cmf-router@5.1.0 + - @talend/react-containers@7.2.0 + - @talend/react-datagrid@9.3.0 + - @talend/react-dataviz@2.2.0 + - @talend/react-faceted-search@4.2.0 + - @talend/react-forms@7.3.0 + - @talend/icons@6.42.0 + - @talend/bootstrap-theme@6.39.0 + +## 1.0.6 + +### Patch Changes + +- Updated dependencies [df182bbd4] + - @talend/react-cmf-router@5.0.0 + +## 1.0.5 + +### Patch Changes + +- Updated dependencies [9f84c4ad7] +- Updated dependencies [65599e1a5] +- Updated dependencies [20e907887] +- Updated dependencies [e04e3910f] +- Updated dependencies [e04e3910f] + - @talend/react-datagrid@9.0.0 + - @talend/react-dataviz@2.1.1 + - @talend/react-components@6.46.2 + +## 1.0.4 + +### Patch Changes + +- Updated dependencies [d1815c0af] +- Updated dependencies [4605d2ce4] +- Updated dependencies [d1815c0af] +- Updated dependencies [d1815c0af] + - @talend/react-datagrid@8.0.0 + - @talend/react-forms@7.1.0 + - @talend/react-dataviz@2.1.0 + +## 1.0.3 + +### Patch Changes + +- Updated dependencies [9f3cad9bd] + - @talend/react-dataviz@2.0.0 + +## 1.0.2 + +### Patch Changes + +- Updated dependencies [aaba017d2] +- Updated dependencies [5062e05c1] +- Updated dependencies [1c20a3b6b] + - @talend/react-components@6.44.11 + - @talend/react-containers@7.0.5 + - @talend/react-faceted-search@4.0.0 + +## 1.0.1 + +### Patch Changes + +- Updated dependencies [593026b37] + - @talend/react-cmf@7.0.0 + - @talend/react-cmf-router@4.0.0 + - @talend/react-forms@7.0.0 + - @talend/react-containers@7.0.0 diff --git a/packages/playground-vite/README.md b/packages/playground-vite/README.md new file mode 100644 index 00000000000..24ab0aa14e7 --- /dev/null +++ b/packages/playground-vite/README.md @@ -0,0 +1,17 @@ +# Playground + +This app is aiming to help demonstrate `ui/container` containers in an environement where we can run a `cmf` app and mock a backend. + +It can also be used as a development environment. +It is published to each PR on surge. + +## How to use + +#### Install + +Install is done at the root of the mono repository but because we use the UMD we need to do + +cd Talend/ui +yarn +yarn pre-release +yarn start diff --git a/packages/playground-vite/cmf.json b/packages/playground-vite/cmf.json new file mode 100644 index 00000000000..842a07bc87c --- /dev/null +++ b/packages/playground-vite/cmf.json @@ -0,0 +1,7 @@ +{ + "settings": { + "sources": ["src/settings"], + "sources-dev": ["src/settings"], + "destination": "dist/settings.json" + } +} diff --git a/packages/playground-vite/index.html b/packages/playground-vite/index.html new file mode 100644 index 00000000000..397d8aa9e88 --- /dev/null +++ b/packages/playground-vite/index.html @@ -0,0 +1,18 @@ + + + + + + + <%- injectMeta %> + + Vite + React + + +
+ + + diff --git a/packages/playground-vite/mockVite/kit.js b/packages/playground-vite/mockVite/kit.js new file mode 100644 index 00000000000..f387c33d227 --- /dev/null +++ b/packages/playground-vite/mockVite/kit.js @@ -0,0 +1,162 @@ +import http from 'https'; +import url from 'url'; + +function getTriggerInfo(req) { + return { + ...req.query, + args: req.body, + }; +} + +function basicAuth(args) { + let comment; + let status; + if (!args['basicAuth.url']) { + comment = 'no url'; + status = 'KO'; + } else if (!args['basicAuth.password']) { + comment = 'no password'; + status = 'KO'; + } else if (!args['basicAuth.username']) { + comment = 'no username'; + status = 'KO'; + } + + if (!status) { + if (args['basicAuth.username'] === args['basicAuth.password']) { + comment = 'Yes username === password'; + status = 'OK'; + } else { + status = 'KO'; + comment = 'invalid credentials'; + } + } + return { comment, status }; +} + +function urlValidation({ arg0 }) { + if (arg0) { + const parsed = url.parse(arg0); + if (!parsed.protocol) { + return { comment: `no protocol: ${arg0}`, status: 'KO' }; + } + if (!parsed.hostname) { + return { comment: `no hostname: ${arg0}`, status: 'KO' }; + } + } + return { status: 'OK' }; +} + +function guessTableSchema() { + return { status: 'OK' }; +} + +function reloadForm({ id }) { + if (!id) { + return add.ui; + } + return basic; +} + +function suggestionForDemo() { + return { + cacheable: true, + items: [ + { id: 'clafoutis', label: 'Clafoutis aux poires et aux fruits' }, + { id: 'conchiglioni-au-thon', label: 'Conchiglioni au thon' }, + { id: 'coquillettes-crevettes', label: 'coquillettes aux crevettes' }, + { id: 'crumble', label: 'Crumble a la danette' }, + { id: 'pomme-savane', label: 'Pomme savane' }, + { id: 'tarte-au-citron', label: 'Tarte au citron' }, + ], + }; +} + +const cache = {}; + +function suggestionBig() { + if (cache.photos) { + return cache.photos; + } + return res => { + let body = ''; + function onData(chunk) { + console.log('onData', chunk); + body += chunk; + } + function onEnd() { + console.log('onEnd', body); + cache.photos = { + cacheable: true, + items: JSON.parse(body).map(item => ({ id: item.id.toString(), label: item.title })), + }; + res.json(cache.photos); + } + function onResponse(resp) { + console.log(`Got response: ${resp.statusCode}`); + resp.on('data', onData); + resp.on('end', onEnd); + } + function onError(e) { + console.error(e.message); + } + http.get('https://jsonplaceholder.typicode.com/photos', onResponse).on('error', onError); + }; +} + +function updateProperties({ type }) { + switch (type) { + case 'clafoutis': + case 'pomme-savane': + case 'crumble': + case 'tarte-au-citron': + return { data: 'yes !' }; + case 'coquillettes-crevettes': + return { data: 'this is not a dessert !' }; + default: + return { data: 'don t know that' }; + } +} + +function giveMeFive() { + return res => { + res.status(500).json({ + timestamp: 1548781374412, + status: 500, + error: 'Internal Server Error', + exception: 'javax.ws.rs.ClientErrorException', + message: 'An internal server error occurs', + path: '/proxy/v1/action/execute/dataset', + }); + }; +} + +const TRIGGERS = { + validation: { + urlValidation, + }, + healthcheck: { + basicAuth, + }, + schema: { + guessTableSchema, + }, + reloadForm: { + 'builtin::root::reloadFromId': reloadForm, + }, + suggestions: { + suggestionForDemo, + suggestionBig, + }, + update: { + updateProperties, + }, + error: { + giveMeFive, + }, +}; + +export function trigger(req) { + const info = getTriggerInfo(req); + return TRIGGERS[info.type][info.action](info.args); +} diff --git a/packages/playground-vite/mockVite/mock/header-bar/products-list.json b/packages/playground-vite/mockVite/mock/header-bar/products-list.json new file mode 100644 index 00000000000..0037a33d19f --- /dev/null +++ b/packages/playground-vite/mockVite/mock/header-bar/products-list.json @@ -0,0 +1,26 @@ +[ + { + "id": "TMC", + "name": "Management Console", + "url": "https://www.talend.com/products#tmc", + "icon": "tmc" + }, + { + "id": "TDP", + "name": "Data Preparation", + "url": "https://www.talend.com/products#tdp", + "icon": "tdp" + }, + { + "id": "TIPAAS", + "name": "TIPAAS", + "url": "https://www.talend.com/products#tipaas", + "icon": "tic" + }, + { + "id": "TDC", + "name": "Catalog", + "url": "https://www.talend.com/products#tdc", + "icon": "tdc" + } +] diff --git a/packages/playground-vite/mockVite/mock/kit/example.json b/packages/playground-vite/mockVite/mock/kit/example.json new file mode 100644 index 00000000000..cec63cee94f --- /dev/null +++ b/packages/playground-vite/mockVite/mock/kit/example.json @@ -0,0 +1,343 @@ +{ + "metadata": { + "children": [], + "id": "example", + "label": "Form example", + "name": "example", + "version": 0 + }, + "ui": { + "jsonSchema": { + "properties": { + "array": { + "type": "object", + "properties": { + "strings": { + "type": "array", + "items": { + "type": "string", + "enum": ["red", "green", "blue"] + } + }, + "keyvalue": { + "default": [ + { + "value": "value", + "key": "key" + } + ], + "title": "key value", + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "title": "Value", + "type": "string", + "default": "" + }, + "key": { + "title": "Key", + "type": "string", + "default": "" + } + } + } + } + } + }, + "triggers": { + "login": { + "type": "string" + }, + "password": { + "type": "string" + }, + "url": { + "pattern": "^(http://|https://).*", + "title": "URL", + "type": "string" + } + }, + "example": { + "properties": { + "code": { + "type": "string" + }, + "string": { + "type": "string" + }, + "datalist": { + "type": "string" + }, + "datalistRestricted": { + "type": "string" + }, + "multiSelect": { + "type": "array", + "items": { + "type": "string" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": ["url", "login", "password"] + } + }, + "title": "example", + "type": "object" + }, + "properties": { + "example": { + "datalist": "clafoutis", + "$datalist_name": "Clafoutis aux poires et aux fruits", + "tags": ["clafoutis"], + "$tags_name": ["Clafoutis aux poires et aux fruits"], + "multiSelect": ["1"], + "$multiSelect_name": ["accusamus beatae ad facilis cum similique qui sunt"] + }, + "triggers": { + "login": "login", + "password": "login", + "url": "http://www.example.com" + }, + "array": { + "strings": ["red"], + "keyvalue": [{ "value": "value", "key": "key" }] + } + }, + "uiSchema": [ + { + "title": "Example", + "widget": "tabs", + "items": [ + { + "title": "Advanced Widget", + "widget": "fieldset", + "items": [ + { + "key": "example.code", + "title": "Code", + "widget": "code", + "options": { + "language": "python", + "height": "300px" + } + }, + { + "key": "example.datalist", + "title": "Datalist", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.datalist", + "key": "id" + } + ] + } + ], + "widget": "datalist" + }, + { + "key": "example.datalistRestricted", + "restricted": true, + "title": "Datalist (restricted)", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.datalistRestricted", + "key": "id" + } + ] + } + ], + "widget": "datalist" + }, + { + "key": "example.tags", + "title": "multiSelectTag", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.tags", + "key": "id" + } + ] + } + ], + "widget": "multiSelectTag" + }, + { + "key": "example.multiSelect", + "title": "multiSelect", + "titleMap": [], + "triggers": [ + { + "action": "suggestionBig", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.multiSelect", + "key": "id" + } + ] + } + ], + "widget": "multiSelect" + } + ] + }, + { + "title": "Triggers", + "widget": "fieldset", + "items": [ + { + "widget": "button", + "key": "example.neededToDisplayTheError", + "type": "button", + "title": "Give me HTTP five", + "triggers": [ + { + "action": "giveMeFive", + "family": "test", + "options": [], + "parameters": [ + { + "key": "type", + "path": "example.type" + } + ], + "type": "error" + } + ] + }, + { + "key": "triggers.url", + "placeholder": "url", + "widget": "text" + }, + { + "key": "triggers.login", + "placeholder": "login", + "widget": "text" + }, + { + "key": "triggers.password", + "placeholder": "password", + "type": "password", + "widget": "text" + }, + { + "key": "my.bad.i.need.a.key", + "title": "Validate auth", + "triggers": [ + { + "action": "basicAuth", + "family": "Example", + "parameters": [ + { + "key": "basicAuth.username", + "path": "example.login" + }, + { + "key": "basicAuth.password", + "path": "example.password" + }, + { + "key": "basicAuth.url", + "path": "example.url" + } + ], + "options": ["triggers.url", "triggers.password", "triggers.login"], + "type": "healthcheck" + } + ], + "widget": "button" + } + ] + }, + { + "title": "Arrays", + "widget": "fieldset", + "items": [ + { + "key": "array.strings", + "title": "Strings", + "widget": "array", + "items": [ + { + "key": "array.strings[]", + "widget": "select", + "titleMap": [ + { "name": "red", "value": "red" }, + { "name": "green", "value": "green" }, + { "name": "blue", "value": "blue" } + ] + } + ] + }, + { + "placeholder": "key value", + "key": "array.keyvalue", + "itemWidget": "collapsibleFieldset", + "itemTitle": "Column", + "itemManaged": true, + "items": [ + { + "key": "array.keyvalue[]", + "items": [ + { + "widget": "columns", + "items": [ + { + "placeholder": "key", + "widget": "text", + "title": "Key", + "key": "array.keyvalue[].key", + "required": true + }, + { + "placeholder": "value", + "widget": "text", + "title": "Value", + "key": "array.keyvalue[].value" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } +} diff --git a/packages/playground-vite/mockVite/mock/kit/index.js b/packages/playground-vite/mockVite/mock/kit/index.js new file mode 100644 index 00000000000..39d543a44b9 --- /dev/null +++ b/packages/playground-vite/mockVite/mock/kit/index.js @@ -0,0 +1,8 @@ +/* eslint-disable global-require */ +import example from './example.json'; +import validation from './validation.json'; + +export default { + example, + validation, +}; diff --git a/packages/playground-vite/mockVite/mock/kit/validation.json b/packages/playground-vite/mockVite/mock/kit/validation.json new file mode 100644 index 00000000000..9b5bac47489 --- /dev/null +++ b/packages/playground-vite/mockVite/mock/kit/validation.json @@ -0,0 +1,118 @@ +{ + "metadata": { + "children": [], + "id": "desert", + "label": "Desert", + "name": "desert", + "version": 0 + }, + "ui": { + "jsonSchema": { + "properties": { + "configuration": { + "properties": { + "solrDataset": { + "properties": { + "schema": { + "items": { + "title": "schema", + "type": "string" + }, + "title": "schema", + "type": "array" + }, + "solrUrl": { + "properties": { + "password": { + "title": "password", + "type": "string" + }, + "login": { + "title": "login", + "type": "string" + }, + "url": { + "pattern": "^(http://|https://).*", + "title": "URL", + "type": "string" + } + }, + "required": ["url"], + "title": "solrUrl", + "type": "object" + } + }, + "required": ["core"], + "title": "solrDataset", + "type": "object" + } + }, + "title": "configuration", + "type": "object" + } + }, + "required": [], + "title": "Input", + "type": "object" + }, + "properties": {}, + "uiSchema": [ + { + "items": [ + { + "key": "configuration.solrDataset.solrUrl.url", + "placeholder": "url", + "required": true, + "title": "URL", + "widget": "text" + }, + { + "key": "configuration.solrDataset.solrUrl.login", + "placeholder": "login", + "required": false, + "title": "login", + "widget": "text" + }, + { + "key": "configuration.solrDataset.solrUrl.password", + "placeholder": "password", + "required": false, + "title": "password", + "type": "password", + "widget": "text" + }, + { + "key": "button_healthcheck_configuration.solrDataset.solrUrl", + "title": "Validate Datastore", + "triggers": [ + { + "action": "basicAuth", + "family": "Solr", + "parameters": [ + { + "key": "basicAuth.username", + "path": "configuration.solrDataset.solrUrl.login" + }, + { + "key": "basicAuth.password", + "path": "configuration.solrDataset.solrUrl.password" + }, + { + "key": "basicAuth.url", + "path": "configuration.solrDataset.solrUrl.url" + } + ], + "type": "healthcheck" + } + ], + "widget": "button" + } + ], + "key": "configuration.solrDataset.solrUrl", + "placeholder": "solrUrl", + "required": false, + "title": "solrUrl" + } + ] + } +} diff --git a/packages/playground-vite/mockVite/server.js b/packages/playground-vite/mockVite/server.js new file mode 100644 index 00000000000..296d6d8c978 --- /dev/null +++ b/packages/playground-vite/mockVite/server.js @@ -0,0 +1,66 @@ +import fs from 'fs'; +import path from 'path'; + +import { trigger } from './kit'; +import forms from './mock/kit'; + +const API_MOCK_ENDPOINT = '/api/mock'; +export default [ + { + url: '/api/v1/forms', + method: 'post', + response: ({ body }) => { + return { + code: 200, + data: body, + }; + }, + }, + { + url: '/api/v1/forms/:formId', // ":formId" est un placeholder pour le paramètre + method: 'get', + response: ({ query, params }) => { + console.log('query', query); + console.log('params', params); + if (!query || !query.formId) { + return { code: 404, message: 'Form not found' }; + } + const formData = forms[query.formId]; + if (!formData) { + return { code: 404, message: 'Form not found' }; + } + return formData; + }, + }, + + { + url: '/api/v1/application/action', + method: 'post', + response: ({ body, response }) => { + const result = trigger({ body }); + if (typeof result === 'function') { + result(response); + return null; + } + return result; + }, + }, + { + url: `${API_MOCK_ENDPOINT}/:path*`, + method: 'get', + response: ({ query }) => { + const urlPath = `/${query.path.join('/')}`; + const mockFilePath = path.resolve(__dirname, `./mock/${urlPath}.json`); + try { + const content = fs.readFileSync(mockFilePath, 'utf-8'); + return JSON.parse(content); + } catch (error) { + console.error(`Unable to load mock file "${mockFilePath}" due to:`, error); + return { + code: 400, + data: 'Bad Request', + }; + } + }, + }, +]; diff --git a/packages/playground-vite/package.json b/packages/playground-vite/package.json new file mode 100644 index 00000000000..48a91824c09 --- /dev/null +++ b/packages/playground-vite/package.json @@ -0,0 +1,73 @@ +{ + "name": "@talend/ui-playground-vite", + "version": "0.0.1", + "description": "Showcase Talend/UI", + "private": true, + "type": "module", + "main": "app/index.js", + "scripts": { + "build": "cross-env BASENAME='/playground' talend-scripts build", + "test": "echo nothing to test in playground", + "test:demo:umd": "cross-env BASENAME='/playground/' INITIATOR_URL='/playground/inject.js' talend-scripts build --prod", + "start": "vite dev", + "start-dist": "talend-scripts build && node serve-dist", + "lint": "talend-scripts lint" + }, + "repository": { + "type": "git", + "url": "" + }, + "keywords": [ + "react", + "talend" + ], + "author": "Talend Frontend ", + "license": "Apache-2.0", + "devDependencies": { + "@talend/dynamic-cdn-webpack-plugin": "^13.1.1", + "@talend/eslint-config": "^13.0.3", + "@talend/eslint-plugin": "^1.1.1", + "@talend/scripts-config-babel": "^13.3.1", + "@talend/scripts-config-stylelint": "^4.1.1", + "@talend/scripts-core": "^16.3.5", + "@vitejs/plugin-react": "^4.2.1", + "body-parser": "1.20.1", + "compression": "^1.7.4", + "copy-webpack-plugin": "^11.0.0", + "cross-env": "^7.0.3", + "esbuild-plugin-react-virtualized": "^1.0.4", + "express": "^4.18.2", + "i18next-http-backend": "^1.4.5", + "mockjs": "^1.1.0", + "sass": "^1.75.0", + "vite": "^5.2.8", + "vite-plugin-html": "^3.2.2", + "vite-plugin-mock": "^3.0.1", + "webpack": "^5.90.3" + }, + "dependencies": { + "@talend/assets-api": "^1.3.2", + "@talend/bootstrap-theme": "^9.1.1", + "@talend/design-system": "^10.0.0", + "@talend/design-tokens": "^3.1.1", + "@talend/icons": "^7.7.1", + "@talend/locales-tui-components": "^11.4.5", + "@talend/locales-tui-containers": "^9.1.3", + "@talend/locales-tui-faceted-search": "^11.3.0", + "@talend/locales-tui-forms": "^10.2.4", + "@talend/react-cmf": "^9.0.0", + "@talend/react-cmf-router": "^6.1.2", + "@talend/react-components": "^16.0.0", + "@talend/react-containers": "^10.7.3", + "@talend/react-dataviz": "^6.1.3", + "@talend/react-faceted-search": "^19.0.0", + "@talend/react-forms": "^14.0.0", + "history": "^5.3.0", + "i18next": "^23.10.0", + "prop-types": "^15.8.1", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-i18next": "^13.5.0", + "redux-logger": "^3.0.6" + } +} diff --git a/packages/playground-vite/serve-dist.js b/packages/playground-vite/serve-dist.js new file mode 100644 index 00000000000..c41cccb9ff2 --- /dev/null +++ b/packages/playground-vite/serve-dist.js @@ -0,0 +1,17 @@ +const compression = require('compression'); +const express = require('express'); +const backend = require('./mockBackend/server'); + +const options = process.argv.slice(2); +const app = express(); + +if (options.includes('--gzip')) { + app.use(compression()); +} + +app.use(express.static('dist')); +backend(app); + +app.listen(3000, () => { + console.log('ready http://localhost:3000'); +}); diff --git a/packages/playground-vite/src/app/actions/index.js b/packages/playground-vite/src/app/actions/index.js new file mode 100644 index 00000000000..0d8b889742c --- /dev/null +++ b/packages/playground-vite/src/app/actions/index.js @@ -0,0 +1,5 @@ +import redirect from './redirect.js'; + +export default { + redirect, +}; diff --git a/packages/playground-vite/src/app/actions/redirect.js b/packages/playground-vite/src/app/actions/redirect.js new file mode 100644 index 00000000000..7d6ef074fa0 --- /dev/null +++ b/packages/playground-vite/src/app/actions/redirect.js @@ -0,0 +1,17 @@ +/** + * action creator + * @param {Event} event which trigger this action + * @param {Object} data {model,action} sub objects + * @returns {Object} action + */ +export default function redirect(event, data) { + let path = data.action.path; + path = path.replace('$id', data.model.id); + return { + type: 'foo', + payload: { + method: 'push', + args: [path], + }, + }; +} diff --git a/packages/playground-vite/src/app/components/ComponentFormSandbox.jsx b/packages/playground-vite/src/app/components/ComponentFormSandbox.jsx new file mode 100644 index 00000000000..ba4aeac920d --- /dev/null +++ b/packages/playground-vite/src/app/components/ComponentFormSandbox.jsx @@ -0,0 +1,131 @@ +import { useState } from 'react'; + +import PropTypes from 'prop-types'; + +import { InlineMessageInformation } from '@talend/design-system'; +import { cmfConnect } from '@talend/react-cmf'; +import Layout from '@talend/react-components/lib/Layout'; +import SubHeaderBar from '@talend/react-components/lib/SubHeaderBar'; +import ComponentForm from '@talend/react-containers/lib/ComponentForm'; +import HeaderBar from '@talend/react-containers/lib/HeaderBar'; +import SidePanel from '@talend/react-containers/lib/SidePanel'; +import UIForm from '@talend/react-forms'; + +import example from './example.json'; + +// test new behavior on non css module files +import './ComponentFormSandbox.scss'; + +const { isComponentFormDirty } = ComponentForm.selectors; +const { setComponentFormDirtyState } = ComponentForm.actions; + +const componentId = 'external'; +const jsonSchema = { + type: 'object', + title: 'config', + properties: { + definitionURL: { + type: 'string', + enum: ['/api/v1/forms/example', '/api/v1/forms/validation'], + }, + uiSpecPath: { + type: 'string', + }, + triggerURL: { + type: 'string', + }, + }, +}; + +const uiSchema = [ + { + key: 'definitionURL', + title: 'definitionURL', + }, + { + key: 'uiSpecPath', + title: 'uiSpecPath', + }, + { + key: 'triggerURL', + title: 'triggerURL', + }, +]; + +function ComponentFormSandBox({ dirty, dispatch }) { + const hasAPI = process.env.NODE_ENV === 'development'; + const [displayConfig, setConfig] = useState(false); + const defaultFormProps = { + definitionURL: '/api/v1/forms/example', + uiSpecPath: 'ui', + triggerURL: '/api/v1/application/action', + definition: hasAPI ? undefined : example.ui, // do not fetch + // data: hasAPI ? uispec : undefined, + }; + const uispec = { + jsonSchema, + uiSchema, + properties: defaultFormProps, + }; + const [formProps, setFormProps] = useState(defaultFormProps); + const right = [ + { + label: `Reset (dirty=${dirty.toString()})`, + onClick: () => dispatch(setComponentFormDirtyState(componentId, false)), + }, + { + label: 'Configure', + icon: 'talend-cog', + onClick: () => setConfig(!displayConfig), + }, + ]; + return ( + } header={}> + { + window.location = '/'; + }} + /> +
+ {!hasAPI && ( + + )} + {displayConfig ? ( + { + // eslint-disable-next-line no-console + console.log(event, data); + setFormProps(data); + setConfig(false); + }} + /> + ) : ( + + )} +
+
+ ); +} +ComponentFormSandBox.displayName = 'ComponentFormSandBox'; +ComponentFormSandBox.propTypes = { + dirty: PropTypes.bool.isRequired, + dispatch: PropTypes.func, +}; + +function mapStateToProps(state) { + return { dirty: isComponentFormDirty(state, componentId) }; +} + +export default cmfConnect({ mapStateToProps, withDispatch: true })(ComponentFormSandBox); diff --git a/packages/playground-vite/src/app/components/ComponentFormSandbox.scss b/packages/playground-vite/src/app/components/ComponentFormSandbox.scss new file mode 100644 index 00000000000..aca40f912dd --- /dev/null +++ b/packages/playground-vite/src/app/components/ComponentFormSandbox.scss @@ -0,0 +1,4 @@ +#example { + margin: 10px; + max-width: 800px; +} diff --git a/packages/playground-vite/src/app/components/Dataviz.jsx b/packages/playground-vite/src/app/components/Dataviz.jsx new file mode 100644 index 00000000000..147fdeb9c5a --- /dev/null +++ b/packages/playground-vite/src/app/components/Dataviz.jsx @@ -0,0 +1,79 @@ +import { useEffect, useState } from 'react'; + +import { ErrorBoundary } from '@talend/react-cmf'; +import Layout from '@talend/react-components/lib/Layout'; +import HeaderBar from '@talend/react-containers/lib/HeaderBar'; +import SidePanel from '@talend/react-containers/lib/SidePanel'; +import { + GeoChart, + getGeoChartConfig, + getHorizontalBarChartTooltip, + HorizontalBarChart, + KeyValueTooltip, + ValueType, +} from '@talend/react-dataviz'; + +const data = [ + { + key: 'Entry fully matching filter', + value: 2145, + filteredValue: 2145, + }, + { + key: 'Entry not matching filter', + value: 1500, + filteredValue: 0, + }, + { + key: 'Entry partially matching filter', + value: 3200, + filteredValue: 2080, + }, +]; + +const geo = [ + { key: 'Asia', value: 10 }, + { key: 'Amérique du Nord', value: 20 }, +]; + +export function Dataviz() { + const [chartsConfig, setConfig] = useState(); + useEffect(() => { + async function load() { + try { + const config = await getGeoChartConfig('CONTINENT'); + setConfig(config); + } catch (error) { + console.error(error); + } + } + load(); + }, []); + + return ( + } header={}> +
+ ( + + )} + /> +
+
+ + ( + + )} + /> + +
+
+ ); +} diff --git a/packages/playground-vite/src/app/components/FacetedSearch.jsx b/packages/playground-vite/src/app/components/FacetedSearch.jsx new file mode 100644 index 00000000000..dd04869ad38 --- /dev/null +++ b/packages/playground-vite/src/app/components/FacetedSearch.jsx @@ -0,0 +1,59 @@ +// eslint-disable-next-line @talend/import-depth +import Layout from '@talend/react-components/lib/Layout'; +import HeaderBar from '@talend/react-containers/lib/HeaderBar'; +import SidePanel from '@talend/react-containers/lib/SidePanel'; +import FacetedSearch from '@talend/react-faceted-search'; + +import * as badges from './badgesDefinitions'; + +function action(msg) { + // eslint-disable-next-line no-console + return (...args) => console.log(msg, ...args); +} + +const badgesDefinitions = Object.values(badges); + +const callbacks = { + getTags: () => + new Promise(resolve => + setTimeout(resolve, 2000, [ + 'clean', + 'production', + 'last chunk', + 'salesforce', + 'outdated', + 'extracted', + 'security', + 'in processing', + 'deep learning', + 'sql', + 'cluster', + 'visualization', + 'analytics', + 'users', + 'warehouse', + 'api', + ]), + ), +}; + +export function FacetedSearchPlayground() { + return ( + } header={}> + + {currentFacetedMode => + (currentFacetedMode === FacetedSearch.constants.FACETED_MODE.ADVANCED && ( + + )) || + (currentFacetedMode === FacetedSearch.constants.FACETED_MODE.BASIC && ( + + )) + } + + + ); +} diff --git a/packages/playground-vite/src/app/components/Icons.jsx b/packages/playground-vite/src/app/components/Icons.jsx new file mode 100644 index 00000000000..0a66b443098 --- /dev/null +++ b/packages/playground-vite/src/app/components/Icons.jsx @@ -0,0 +1,23 @@ +// eslint-disable-next-line @talend/import-depth +import logo from '@talend/icons/src/svg/products/logo.svg'; +import Layout from '@talend/react-components/lib/Layout'; +import HeaderBar from '@talend/react-containers/lib/HeaderBar'; +import SidePanel from '@talend/react-containers/lib/SidePanel'; + +export function Icons() { + return ( + } header={}> +
+

Use SVG Icons in our apps

+

+ I can import svg in my app code using the following snippet. You will have the url as + string +

+
import logo from '@talend/icons/src/svg/products/logo.svg';
+

Current url generated is {logo}

+ Let's use an image to display it: + logo +
+
+ ); +} diff --git a/packages/playground-vite/src/app/components/List.jsx b/packages/playground-vite/src/app/components/List.jsx new file mode 100644 index 00000000000..9022201f845 --- /dev/null +++ b/packages/playground-vite/src/app/components/List.jsx @@ -0,0 +1,120 @@ +/* eslint-disable no-console */ +import { Layout, List, SubHeaderBar } from '@talend/react-components'; +import { HeaderBar, SidePanel } from '@talend/react-containers'; + +const props = { + id: 'talend', + displayMode: 'table', + list: { + columns: [ + { key: 'id', label: 'Id', order: 1 }, + { key: 'name', label: 'Name', order: 2 }, + { key: 'author', label: 'Author', order: 3 }, + { key: 'created', label: 'Created', order: 6 }, + { + key: 'modified', + label: 'Modified', + order: 4, + header: 'icon', + data: { iconName: 'talend-scheduler' }, + }, + { key: 'icon', label: 'Icon', hidden: true, order: 5 }, + ], + items: [ + { + id: 0, + name: 'Title with actions', + created: '2016-09-22', + modified: '2016-09-22', + author: 'Jean-Pierre DUPONT', + icon: 'talend-file-s3-o', + display: 'text', + className: 'item-0-class', + }, + { + id: 1, + name: 'Title with a lot of actions', + created: '2016-09-22', + modified: '2016-09-22', + author: 'Jean-Pierre DUPONT', + icon: 'talend-file-xls-o', + display: 'text', + className: 'item-1-class', + }, + { + id: 2, + name: 'Title with super super super super super super super super super super super super super super super super super super super super super super super super super super super super super super long title oh yeah', + created: '2016-09-22', + modified: '2016-09-22', + author: 'Jean-Pierre DUPONT', + icon: 'talend-file-xls-o', + display: 'text', + className: 'item-1-class', + }, + { + id: 3, + name: 'Title in input mode', + created: '2016-09-22', + modified: '2016-09-22', + author: 'Jean-Pierre DUPONT', + icon: 'talend-file-json-o', + display: 'input', + className: 'item-2-class', + }, + { + id: 4, + name: 'Super long title to trigger overflow on tile rendering', + created: '2016-09-22', + modified: '2016-09-22', + author: + 'Jean-Pierre DUPONT with super super super super super super super super super super super super super super super super super super super super super super super long name, but there was not enough long text', + className: 'item-3-class', + }, + ], + titleProps: { + key: 'name', + iconKey: 'icon', + displayModeKey: 'display', + onClick: () => console.log('onClick'), + onEditCancel: () => console.log('onEditCancel'), + onEditSubmit: () => console.log('onEditSubmit'), + }, + itemProps: { + classNameKey: 'className', + }, + }, + toolbar: { + actionBar: { + actions: { + left: [], + }, + }, + display: { + onChange: () => console.log('display.onChange'), + }, + sort: { + field: 'name', + onChange: () => console.log('sort.onChange'), + options: [ + { id: 'id', name: 'Id' }, + { id: 'name', name: 'Name With Multiple Words' }, + ], + }, + }, +}; + +export function LeaguesList() { + return ( + } header={}> + { + window.location = '/'; + }} + /> + + + ); +} + +LeaguesList.displayName = 'LeaguesList'; diff --git a/packages/playground-vite/src/app/components/badgesDefinitions.js b/packages/playground-vite/src/app/components/badgesDefinitions.js new file mode 100644 index 00000000000..3313caaaf01 --- /dev/null +++ b/packages/playground-vite/src/app/components/badgesDefinitions.js @@ -0,0 +1,522 @@ +export const badgeName = { + properties: { + attribute: 'name', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Name', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a dataset name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-name', + }, +}; + +export const badgeConnectionName = { + properties: { + attribute: 'connectionName', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection name', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a connection name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-connection-name', + }, +}; + +export const badgeAuthor = { + properties: { + attribute: 'Author', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Author', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter an author name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-author', + }, +}; + +export const badgeAll = { + properties: { + attribute: 'all', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'All', + operator: {}, + operators: [], + type: 'text', + }, + metadata: { + isAvailableForFacetList: false, + badgePerFacet: '1', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase'], + 'data-feature': 'faceted-badge-all', + }, +}; + +export const badgeMenu = { + properties: { + attribute: 'workspaceId', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Workspace', + operator: {}, + operators: [], + type: 'menu', + filterBarPlaceholder: 'Find a workspace', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'personal', label: 'Personal' }, + { id: 'shared', label: 'Shared' }, + { id: 'custom', label: 'Custom' }, + { + id: 'ws1', + label: + "Long long workspace name can't fit in one line. Long long workspace name can't fit in one line. ", + }, + { id: 'ws2', label: 'Workspace 2' }, + { id: 'ws3', label: 'Workspace 3' }, + { id: 'ws4', label: 'Workspace 4' }, + { id: 'ws5', label: 'Workspace 5' }, + { id: 'ws6', label: 'Workspace 6' }, + { id: 'ws7', label: 'Workspace 7' }, + { id: 'ws8', label: 'Workspace 8' }, + { id: 'ws9', label: 'Workspace 9' }, + { id: 'ws10', label: 'Workspace Test' }, + ], + operators: ['equals', 'notEquals'], + 'data-feature': 'faceted-badge-workspace', + }, +}; + +export const badgeConnectionType = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + ], + operators: ['in', 'notIn'], + 'data-feature': 'faceted-badge-connection-type', + }, +}; + +export const badgeConnectionTypeAllSelector = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + ], + operators: ['in', 'notIn'], + allSelector: true, + }, +}; + +export const badgePrice = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Price', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + 'data-feature': 'faceted-badge-price', + }, +}; + +export const badgeValid = { + properties: { + attribute: 'valid', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Valid', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'valid', + }, + unit: '%', + defaultValue: 50, + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeEmpty = { + properties: { + attribute: 'empty', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Empty', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'empty', + }, + unit: '%', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeInvalid = { + properties: { + attribute: 'invalid', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Invalid', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'invalid', + }, + unit: '%', + defaultValue: 50, + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeTags = { + properties: { + attribute: 'tags', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Tags', + operator: {}, + operators: [], + type: 'checkbox', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + operators: ['in', 'notIn'], + 'data-feature': 'faceted-badge-tags', + }, +}; + +export const badgeWithVeryLongName = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'helloverybeautifullworldhowareyouinthislovelydaythesunishiningandtheskyisbright?', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + }, +}; + +export const badgeEnumWithLotOfValues = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + { id: 'amazon_s3_low', label: 'Amazon S3 Low' }, + { id: 'hdfs_low', label: 'HDFS Low' }, + { id: 'kafka_low', label: 'Kafka Low' }, + { id: 'localcon_low', label: 'Local connection Low' }, + { id: 'salesforce_low', label: 'Salesforce Low' }, + { id: 'aws_kinesis_low', label: 'AWS kinesis Low' }, + { id: 'amazon_s3_high', label: 'Amazon S3 High' }, + { id: 'hdfs_high', label: 'HDFS High' }, + { id: 'kafka_high', label: 'Kafka High' }, + { id: 'localcon_high', label: 'Local connection High' }, + { id: 'salesforce_high', label: 'Salesforce High' }, + { id: 'aws_kinesis_high', label: 'AWS kinesis High' }, + { id: 'amazon_s3_classic', label: 'Amazon S3 Classic' }, + { id: 'hdfs_classic', label: 'HDFS Classic' }, + { id: 'kafka_classic', label: 'Kafka Classic' }, + { id: 'localcon_classic', label: 'Local connection Classic' }, + { id: 'salesforce_classic', label: 'Salesforce Classic' }, + { id: 'aws_kinesis_classic', label: 'AWS kinesis Classic' }, + ], + operators: ['in', 'notIn'], + }, +}; + +export const badgeTextAsCustomAttribute = { + properties: { + attribute: 'target', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Target', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a custom attribute', + }, + metadata: { + category: 'Custom attributes', + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + }, +}; + +export const badgeEnumsAsCustomAttribute = { + properties: { + attribute: 'visibility', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Visibility', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a visibility', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + category: 'Custom attributes', + values: [ + { id: 'internal', label: 'Internal' }, + { id: 'public', label: 'Public' }, + ], + operators: ['in', 'notIn'], + }, +}; + +export const badgeTextAsCategory = { + properties: { + attribute: 'owner', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Owner', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a category name', + }, + metadata: { + category: 'Very long long long long long long long category', + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase', 'equals'], + }, +}; + +export const badgeEmptyLabel = { + properties: { + attribute: 'title', + initialOperatorOpened: true, + initialValueOpened: false, + label: '', + operator: {}, + operators: [], + type: 'text', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase', 'equals'], + }, +}; + +export const badgePriceAsCustomAttribute = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Price', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + category: 'Custom attributes', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + }, +}; + +export const badgeCreationDate = { + properties: { + attribute: 'creationDate', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Creation Date', + operator: {}, + operators: [], + type: 'date', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + 'data-feature': 'faceted-badge-creation-date', + }, +}; + +export const badgePeriod = { + properties: { + attribute: 'period', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Period', + operator: {}, + operators: [], + type: 'period', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['in'], + 'data-feature': 'faceted-badge-period', + }, +}; diff --git a/packages/playground-vite/src/app/components/example.json b/packages/playground-vite/src/app/components/example.json new file mode 100644 index 00000000000..cec63cee94f --- /dev/null +++ b/packages/playground-vite/src/app/components/example.json @@ -0,0 +1,343 @@ +{ + "metadata": { + "children": [], + "id": "example", + "label": "Form example", + "name": "example", + "version": 0 + }, + "ui": { + "jsonSchema": { + "properties": { + "array": { + "type": "object", + "properties": { + "strings": { + "type": "array", + "items": { + "type": "string", + "enum": ["red", "green", "blue"] + } + }, + "keyvalue": { + "default": [ + { + "value": "value", + "key": "key" + } + ], + "title": "key value", + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "title": "Value", + "type": "string", + "default": "" + }, + "key": { + "title": "Key", + "type": "string", + "default": "" + } + } + } + } + } + }, + "triggers": { + "login": { + "type": "string" + }, + "password": { + "type": "string" + }, + "url": { + "pattern": "^(http://|https://).*", + "title": "URL", + "type": "string" + } + }, + "example": { + "properties": { + "code": { + "type": "string" + }, + "string": { + "type": "string" + }, + "datalist": { + "type": "string" + }, + "datalistRestricted": { + "type": "string" + }, + "multiSelect": { + "type": "array", + "items": { + "type": "string" + } + }, + "tags": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object", + "required": ["url", "login", "password"] + } + }, + "title": "example", + "type": "object" + }, + "properties": { + "example": { + "datalist": "clafoutis", + "$datalist_name": "Clafoutis aux poires et aux fruits", + "tags": ["clafoutis"], + "$tags_name": ["Clafoutis aux poires et aux fruits"], + "multiSelect": ["1"], + "$multiSelect_name": ["accusamus beatae ad facilis cum similique qui sunt"] + }, + "triggers": { + "login": "login", + "password": "login", + "url": "http://www.example.com" + }, + "array": { + "strings": ["red"], + "keyvalue": [{ "value": "value", "key": "key" }] + } + }, + "uiSchema": [ + { + "title": "Example", + "widget": "tabs", + "items": [ + { + "title": "Advanced Widget", + "widget": "fieldset", + "items": [ + { + "key": "example.code", + "title": "Code", + "widget": "code", + "options": { + "language": "python", + "height": "300px" + } + }, + { + "key": "example.datalist", + "title": "Datalist", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.datalist", + "key": "id" + } + ] + } + ], + "widget": "datalist" + }, + { + "key": "example.datalistRestricted", + "restricted": true, + "title": "Datalist (restricted)", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.datalistRestricted", + "key": "id" + } + ] + } + ], + "widget": "datalist" + }, + { + "key": "example.tags", + "title": "multiSelectTag", + "titleMap": [], + "triggers": [ + { + "action": "suggestionForDemo", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.tags", + "key": "id" + } + ] + } + ], + "widget": "multiSelectTag" + }, + { + "key": "example.multiSelect", + "title": "multiSelect", + "titleMap": [], + "triggers": [ + { + "action": "suggestionBig", + "family": "remote", + "type": "suggestions", + "onEvent": "focus", + "parameters": [ + { + "path": "example.multiSelect", + "key": "id" + } + ] + } + ], + "widget": "multiSelect" + } + ] + }, + { + "title": "Triggers", + "widget": "fieldset", + "items": [ + { + "widget": "button", + "key": "example.neededToDisplayTheError", + "type": "button", + "title": "Give me HTTP five", + "triggers": [ + { + "action": "giveMeFive", + "family": "test", + "options": [], + "parameters": [ + { + "key": "type", + "path": "example.type" + } + ], + "type": "error" + } + ] + }, + { + "key": "triggers.url", + "placeholder": "url", + "widget": "text" + }, + { + "key": "triggers.login", + "placeholder": "login", + "widget": "text" + }, + { + "key": "triggers.password", + "placeholder": "password", + "type": "password", + "widget": "text" + }, + { + "key": "my.bad.i.need.a.key", + "title": "Validate auth", + "triggers": [ + { + "action": "basicAuth", + "family": "Example", + "parameters": [ + { + "key": "basicAuth.username", + "path": "example.login" + }, + { + "key": "basicAuth.password", + "path": "example.password" + }, + { + "key": "basicAuth.url", + "path": "example.url" + } + ], + "options": ["triggers.url", "triggers.password", "triggers.login"], + "type": "healthcheck" + } + ], + "widget": "button" + } + ] + }, + { + "title": "Arrays", + "widget": "fieldset", + "items": [ + { + "key": "array.strings", + "title": "Strings", + "widget": "array", + "items": [ + { + "key": "array.strings[]", + "widget": "select", + "titleMap": [ + { "name": "red", "value": "red" }, + { "name": "green", "value": "green" }, + { "name": "blue", "value": "blue" } + ] + } + ] + }, + { + "placeholder": "key value", + "key": "array.keyvalue", + "itemWidget": "collapsibleFieldset", + "itemTitle": "Column", + "itemManaged": true, + "items": [ + { + "key": "array.keyvalue[]", + "items": [ + { + "widget": "columns", + "items": [ + { + "placeholder": "key", + "widget": "text", + "title": "Key", + "key": "array.keyvalue[].key", + "required": true + }, + { + "placeholder": "value", + "widget": "text", + "title": "Value", + "key": "array.keyvalue[].value" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + } +} diff --git a/packages/playground-vite/src/app/foo.html b/packages/playground-vite/src/app/foo.html new file mode 100644 index 00000000000..c6092001570 --- /dev/null +++ b/packages/playground-vite/src/app/foo.html @@ -0,0 +1 @@ +

Hello my name is foo

diff --git a/packages/playground-vite/src/app/i18n.js b/packages/playground-vite/src/app/i18n.js new file mode 100644 index 00000000000..2364a509cca --- /dev/null +++ b/packages/playground-vite/src/app/i18n.js @@ -0,0 +1,53 @@ +/* eslint-disable @talend/import-depth */ + +/* eslint-disable import/no-extraneous-dependencies */ +import { initReactI18next } from 'react-i18next'; + +import i18next from 'i18next'; +import HttpApi from 'i18next-http-backend'; + +import assetsApi from '@talend/assets-api'; +import { namespaces as tuiComponentsNamespaces } from '@talend/locales-tui-components/namespaces.js'; +import { namespaces as tuiContainersNamespaces } from '@talend/locales-tui-containers/namespaces.js'; +import { namespaces as tuiFormsNamespaces } from '@talend/locales-tui-forms/namespaces.js'; + +const LOCALES_MAP = { + 'tui-components': assetsApi.getURL( + '/locales/{{lng}}/{{ns}}.json', + '@talend/locales-tui-components', + ), + 'tui-containers': assetsApi.getURL( + '/locales/{{lng}}/{{ns}}.json', + '@talend/locales-tui-containers', + ), + 'tui-forms': assetsApi.getURL('/locales/{{lng}}/{{ns}}.json', '@talend/locales-tui-forms'), + 'tui-faceted-search': assetsApi.getURL( + '/locales/{{lng}}/{{ns}}.json', + '@talend/locales-tui-faceted-search', + ), +}; + +function loadPath(languages, namespaces) { + return LOCALES_MAP[namespaces[0]] || '/assets/locales/{{lng}}/{{ns}}.json'; +} + +export function initI18n() { + i18next + .use(initReactI18next) + .use(HttpApi) + .init({ + fallbackLng: 'en', + lng: 'fr', + ns: [...tuiComponentsNamespaces, ...tuiContainersNamespaces, ...tuiFormsNamespaces], + react: { + useSuspense: false, + }, + interpolation: { + escapeValue: false, + }, + backend: { + loadPath, + }, + defaultNS: 'talend-ui-playground', + }); +} diff --git a/packages/playground-vite/src/app/index.jsx b/packages/playground-vite/src/app/index.jsx new file mode 100644 index 00000000000..657378d2309 --- /dev/null +++ b/packages/playground-vite/src/app/index.jsx @@ -0,0 +1,71 @@ +/* eslint-disable no-console */ + +/** + * Import theme. + * Being the first import is important, so that it is the default style + * and other style can override it + */ +// eslint-disable-next-line @talend/import-depth +import { initI18n } from './i18n.js'; + +import '@talend/bootstrap-theme/dist/bootstrap.css'; +import cmf from '@talend/react-cmf'; +import getRouter from '@talend/react-cmf-router'; +import { AppLoader, IconsProvider as BaseIconsProvider } from '@talend/react-components'; +import containersModule from '@talend/react-containers'; +import ComponentForm from '@talend/react-containers/lib/ComponentForm'; + +import actions from './actions/index.js'; +import ComponentFormSandbox from './components/ComponentFormSandbox.jsx'; +import { Dataviz } from './components/Dataviz.jsx'; +import { FacetedSearchPlayground } from './components/FacetedSearch.jsx'; +import { Icons } from './components/Icons.jsx'; +import { LeaguesList } from './components/List.jsx'; + +// thanks ui-scripts +let basename = window.basename; +if (basename === '/') { + basename = undefined; +} + +const router = getRouter({ basename }); + +initI18n(); +const allsvg = `${basename || ''}/cdn/@talend/icons/${ + process.env.ICONS_VERSION +}/dist/svg-bundle/all.svg`; + +function IconsProvider() { + return ; +} + +const app = { + components: { + ComponentForm, + ComponentFormSandbox, + FacetedSearch: FacetedSearchPlayground, + LeaguesList, + IconsProvider, + Dataviz, + Icons, + }, + settingsURL: `${basename || ''}/settings.json`, + actionCreators: actions, + middlewares: [], + modules: [router.cmfModule, containersModule], + RootComponent: router.RootComponent, + AppLoader, +}; + +// eslint-disable-next-line no-console +console.log('app bootstrap should happens only once'); +/** + * Initialize CMF + * This will: + * - Register your components in the CMF registry + * - Register your action creators in CMF registry + * - Setup redux store using reducer + * - Fetch the settings + * - render react-dom in the dom 'app' element + */ +cmf.bootstrap(app); diff --git a/packages/playground-vite/src/assets/inject.js b/packages/playground-vite/src/assets/inject.js new file mode 100644 index 00000000000..700b1483df1 --- /dev/null +++ b/packages/playground-vite/src/assets/inject.js @@ -0,0 +1,42 @@ +// custom inject to UMD from surge and the others from unpkg + +// eslint-disable-next-line func-names +(function () { + const CDN_URL_REGEX = /^(\/?.*\/cdn)\//; + + function removeIntegrity(info) { + if (info.name && info.name.startsWith('@talend')) { + // eslint-disable-next-line no-param-reassign + delete info.integrity; + } + return info; + } + function prepareUrl(url) { + let newUrl; + const m = CDN_URL_REGEX.exec(url); + if (m !== null) { + // return base ? url.slice(1) : url; + if (!url.includes('/cdn/@talend')) { + newUrl = url.replace(m[1], 'https://statics.cloud.talend.com'); + } + } + return newUrl || url; + } + window.Talend.CDN_URL = 'https://statics.cloud.talend.com'; + + // let's override the assets-api's getCDNUrl to serve local package + window.Talend.getCDNUrl = function getCDNUrl(pkg = {}) { + // if local to the repository load from /cdn + if (['@talend/react-dataviz', '@talend/icons'].includes(pkg.name)) { + const baseTag = document.querySelector('base'); + if (baseTag) { + const root = baseTag.getAttribute('href') || '/'; + return `${root === '/' ? '' : root}/cdn/${pkg.name}/${pkg.version}${pkg.path}`; + } + return `/cdn/${pkg.name}/${pkg.version}${pkg.path}`; + } + return `${window.Talend.CDN_URL}/${pkg.name}/${pkg.version}${pkg.path}`; + }; + window.talendAddStyles(window.Talend.cssBuild.map(removeIntegrity), prepareUrl); + window.talendAddScripts(window.Talend.build.map(removeIntegrity), prepareUrl); +})(); diff --git a/packages/playground-vite/src/settings/settings.json b/packages/playground-vite/src/settings/settings.json new file mode 100644 index 00000000000..9f1884a2573 --- /dev/null +++ b/packages/playground-vite/src/settings/settings.json @@ -0,0 +1,146 @@ +{ + "actions": { + "menu:ComponentForm": { + "icon": "talend-text", + "label": "ComponentForm", + "onClickDispatch": { + "type": "MENU_COMPONENT_FORM_CLICKED", + "cmf": { + "routerPush": "/ComponentForm" + } + } + }, + "menu:List": { + "icon": "talend-table", + "label": "List", + "onClickDispatch": { + "type": "MENU_LIST_CLICKED", + "cmf": { + "routerPush": "/List" + } + } + }, + "menu:Dataviz": { + "icon": "talend-charts", + "label": "Dataviz", + "onClickDispatch": { + "type": "MENU_LIST_CLICKED", + "cmf": { + "routerPush": "/Dataviz" + } + } + }, + "menu:FacetedSearch": { + "icon": "talend-search", + "label": "Faceted Search", + "onClickDispatch": { + "type": "MENU_LIST_CLICKED", + "cmf": { + "routerPush": "/FacetedSearch" + } + } + }, + "menu:Icons": { + "icon": "talend-datagrid", + "label": "Icons", + "onClickDispatch": { + "type": "MENU_LIST_CLICKED", + "cmf": { + "routerPush": "/Icons" + } + } + } + }, + "props": { + "AppLoader#default": { + "components": { + "before-children": [ + { + "component": "Notification" + }, + { + "component": "IconsProvider" + } + ] + } + }, + "HeaderBar#default": { + "keepComponentState": true, + "logo": { + "id": "header-bar-demo-logo", + "icon": "talend-world", + "isFull": false + }, + "brand": { + "id": "header-bar-demo-brand", + "label": "Choose a product" + }, + "products": { + "id": "header-bar-demo-brands", + "items": [ + { + "icon": "talend-star", + "label": "Static menu entry", + "dispatch": { + "type": "CUSTOM_ACTION_TYPE", + "payload": { + "foo": "bar" + } + } + } + ] + }, + "productsUrl": "/api/mock/header-bar/products-list" + }, + "SidePanel#default": { + "actionIds": [ + "menu:ComponentForm", + "menu:List", + "menu:Dataviz", + "menu:FacetedSearch", + "menu:Icons" + ] + }, + "Layout#default": { + "mode": "TwoColumns", + "header": { "component": "HeaderBar" }, + "one": { "component": "SidePanel" }, + "content": {} + }, + "ComponentForm#default": { + "definitionURL": "/api/v1/forms/example", + "uiSpecPath": "ui", + "triggerURL": "/api/v1/application/action", + "className": "full-form" + } + }, + "routes": { + "path": "/", + "component": "AppLoader", + "indexRoute": { + "component": "LeaguesList" + }, + "childRoutes": [ + { + "path": "List", + "component": "LeaguesList" + }, + { + "path": "ComponentForm", + "component": "ComponentFormSandbox" + }, + { + "path": "Dataviz", + "component": "Dataviz" + }, + { + "path": "FacetedSearch", + "component": "FacetedSearch" + }, + { + "path": "Icons", + "component": "Icons" + } + ] + } +} diff --git a/packages/playground-vite/talend-scripts.json b/packages/playground-vite/talend-scripts.json new file mode 100644 index 00000000000..57ed06df2f4 --- /dev/null +++ b/packages/playground-vite/talend-scripts.json @@ -0,0 +1,12 @@ +{ + "cmf": true, + "html": {}, + "webpack": { + "monoRepoFixSourceMap": ["../dataviz/src", "../containers/src", "../components/src"], + "config": { + "development": "./webpack.config.dev.cjs", + "production": "./webpack.config.dev.cjs" + } + }, + "dynamic-cdn-webpack-plugin": false +} diff --git a/packages/playground-vite/vite.config.js b/packages/playground-vite/vite.config.js new file mode 100644 index 00000000000..3ade1e293e4 --- /dev/null +++ b/packages/playground-vite/vite.config.js @@ -0,0 +1,104 @@ +import react from '@vitejs/plugin-react'; +import fixReactVirtualized from 'esbuild-plugin-react-virtualized'; +import fs, { existsSync } from 'fs'; +import path, { join } from 'path'; +import { fileURLToPath } from 'url'; +import { defineConfig } from 'vite'; +import { createHtmlPlugin } from 'vite-plugin-html'; +import { viteMockServe } from 'vite-plugin-mock'; + +function getPath(pkg) { + let currentDir = path.dirname(fileURLToPath(import.meta.resolve(pkg))); + + while (currentDir !== '/' && !existsSync(join(currentDir, 'package.json'))) { + currentDir = path.dirname(currentDir); + } + + if (existsSync(join(currentDir, 'package.json'))) { + return currentDir; + } + throw new Error('package.json introuvable pour le package spécifié'); +} + +function getVersion(pkg) { + const packagePath = path.join(getPath(pkg), 'package.json'); + const packageJson = JSON.parse(fs.readFileSync(packagePath, 'utf8')); + return packageJson.version; +} + +const PKGS = [ + '@talend/locales-design-system', + '@talend/locales-tui-components', + '@talend/locales-tui-containers', + '@talend/locales-tui-faceted-search', + '@talend/locales-tui-forms', + '@talend/assets-api', + '@talend/design-tokens', + '@talend/design-system', + '@talend/react-components', + '@talend/react-containers', + '@talend/react-cmf', + '@talend/react-cmf-router', + '@talend/react-dataviz', + '@talend/react-faceted-search', + '@talend/react-forms', + '@talend/bootstrap-theme', + '@talend/icons', +]; + +const patterns = PKGS.map(pkg => ``).join('\n'); + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [ + react(), + viteMockServe({ + mockPath: 'mockVite', + localEnabled: true, + }), + createHtmlPlugin({ + minify: true, + inject: { + data: { + title: 'index', + injectMeta: patterns, + }, + }, + }), + { + name: 'configure-static-files', + configureServer(server) { + server.middlewares.use((req, res, next) => { + if (req.url === '/settings.json') { + const filePath = path.resolve(__dirname, 'src/settings/settings.json'); + const fileContents = fs.readFileSync(filePath, 'utf-8'); + res.end(fileContents); + return; + } + next(); + }); + }, + }, + ], + optimizeDeps: { + esbuildOptions: { + plugins: [fixReactVirtualized], + }, + }, + resolve: { + alias: { + '~@talend/bootstrap-sass/assets/stylesheets/bootstrap/mixins': fileURLToPath( + import.meta.resolve('@talend/bootstrap-sass/assets/stylesheets/bootstrap/mixins'), + ), + '~@talend/bootstrap-theme/src/theme/guidelines': fileURLToPath( + import.meta.resolve('@talend/bootstrap-theme/src/theme/guidelines'), + ), + '~@talend/bootstrap-theme/src/theme/animation': fileURLToPath( + import.meta.resolve('@talend/bootstrap-theme/src/theme/animation'), + ), + '~@talend/design-tokens/lib/tokens': fileURLToPath( + import.meta.resolve('@talend/design-tokens/lib/tokens'), + ), + }, + }, +}); diff --git a/packages/playground/mockBackend/kit.js b/packages/playground/mockBackend/kit.js index 94640fca3cc..a61892345e5 100644 --- a/packages/playground/mockBackend/kit.js +++ b/packages/playground/mockBackend/kit.js @@ -121,16 +121,14 @@ function updateProperties({ type }) { function giveMeFive() { return res => { - res - .status(500) - .json({ - timestamp: 1548781374412, - status: 500, - error: 'Internal Server Error', - exception: 'javax.ws.rs.ClientErrorException', - message: 'An internal server error occurs', - path: '/proxy/v1/action/execute/dataset', - }); + res.status(500).json({ + timestamp: 1548781374412, + status: 500, + error: 'Internal Server Error', + exception: 'javax.ws.rs.ClientErrorException', + message: 'An internal server error occurs', + path: '/proxy/v1/action/execute/dataset', + }); }; } diff --git a/packages/playground/src/app/components/FacetedSearch.jsx b/packages/playground/src/app/components/FacetedSearch.jsx index 13ccb5fe4c3..dd04869ad38 100644 --- a/packages/playground/src/app/components/FacetedSearch.jsx +++ b/packages/playground/src/app/components/FacetedSearch.jsx @@ -1,10 +1,11 @@ // eslint-disable-next-line @talend/import-depth -import * as badges from '@talend/react-faceted-search/stories/badgesDefinitions'; import Layout from '@talend/react-components/lib/Layout'; import HeaderBar from '@talend/react-containers/lib/HeaderBar'; import SidePanel from '@talend/react-containers/lib/SidePanel'; import FacetedSearch from '@talend/react-faceted-search'; +import * as badges from './badgesDefinitions'; + function action(msg) { // eslint-disable-next-line no-console return (...args) => console.log(msg, ...args); diff --git a/packages/playground/src/app/components/badgesDefinitions.js b/packages/playground/src/app/components/badgesDefinitions.js new file mode 100644 index 00000000000..3313caaaf01 --- /dev/null +++ b/packages/playground/src/app/components/badgesDefinitions.js @@ -0,0 +1,522 @@ +export const badgeName = { + properties: { + attribute: 'name', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Name', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a dataset name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-name', + }, +}; + +export const badgeConnectionName = { + properties: { + attribute: 'connectionName', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection name', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a connection name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-connection-name', + }, +}; + +export const badgeAuthor = { + properties: { + attribute: 'Author', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Author', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter an author name', + }, + metadata: { + isAvailableForQuickSearch: true, + isAvailableForFacetList: true, + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + 'data-feature': 'faceted-badge-author', + }, +}; + +export const badgeAll = { + properties: { + attribute: 'all', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'All', + operator: {}, + operators: [], + type: 'text', + }, + metadata: { + isAvailableForFacetList: false, + badgePerFacet: '1', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase'], + 'data-feature': 'faceted-badge-all', + }, +}; + +export const badgeMenu = { + properties: { + attribute: 'workspaceId', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Workspace', + operator: {}, + operators: [], + type: 'menu', + filterBarPlaceholder: 'Find a workspace', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'personal', label: 'Personal' }, + { id: 'shared', label: 'Shared' }, + { id: 'custom', label: 'Custom' }, + { + id: 'ws1', + label: + "Long long workspace name can't fit in one line. Long long workspace name can't fit in one line. ", + }, + { id: 'ws2', label: 'Workspace 2' }, + { id: 'ws3', label: 'Workspace 3' }, + { id: 'ws4', label: 'Workspace 4' }, + { id: 'ws5', label: 'Workspace 5' }, + { id: 'ws6', label: 'Workspace 6' }, + { id: 'ws7', label: 'Workspace 7' }, + { id: 'ws8', label: 'Workspace 8' }, + { id: 'ws9', label: 'Workspace 9' }, + { id: 'ws10', label: 'Workspace Test' }, + ], + operators: ['equals', 'notEquals'], + 'data-feature': 'faceted-badge-workspace', + }, +}; + +export const badgeConnectionType = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + ], + operators: ['in', 'notIn'], + 'data-feature': 'faceted-badge-connection-type', + }, +}; + +export const badgeConnectionTypeAllSelector = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + ], + operators: ['in', 'notIn'], + allSelector: true, + }, +}; + +export const badgePrice = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Price', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + 'data-feature': 'faceted-badge-price', + }, +}; + +export const badgeValid = { + properties: { + attribute: 'valid', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Valid', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'valid', + }, + unit: '%', + defaultValue: 50, + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeEmpty = { + properties: { + attribute: 'empty', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Empty', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'empty', + }, + unit: '%', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeInvalid = { + properties: { + attribute: 'invalid', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Invalid', + operator: {}, + operators: [], + type: 'slider', + icon: { + name: 'talend-pie-charts', + class: 'invalid', + }, + unit: '%', + defaultValue: 50, + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['equals', 'greaterThan', 'lessThan'], + }, +}; + +export const badgeTags = { + properties: { + attribute: 'tags', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Tags', + operator: {}, + operators: [], + type: 'checkbox', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + operators: ['in', 'notIn'], + 'data-feature': 'faceted-badge-tags', + }, +}; + +export const badgeWithVeryLongName = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'helloverybeautifullworldhowareyouinthislovelydaythesunishiningandtheskyisbright?', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + }, +}; + +export const badgeEnumWithLotOfValues = { + properties: { + attribute: 'connection.type', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Connection type', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a connection type', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + values: [ + { id: 'amazon_s3', label: 'Amazon S3' }, + { id: 'hdfs', label: 'HDFS' }, + { id: 'kafka', label: 'Kafka' }, + { id: 'localcon', label: 'Local connection' }, + { id: 'salesforce', label: 'Salesforce' }, + { id: 'aws_kinesis', label: 'AWS kinesis' }, + { id: 'amazon_s3_low', label: 'Amazon S3 Low' }, + { id: 'hdfs_low', label: 'HDFS Low' }, + { id: 'kafka_low', label: 'Kafka Low' }, + { id: 'localcon_low', label: 'Local connection Low' }, + { id: 'salesforce_low', label: 'Salesforce Low' }, + { id: 'aws_kinesis_low', label: 'AWS kinesis Low' }, + { id: 'amazon_s3_high', label: 'Amazon S3 High' }, + { id: 'hdfs_high', label: 'HDFS High' }, + { id: 'kafka_high', label: 'Kafka High' }, + { id: 'localcon_high', label: 'Local connection High' }, + { id: 'salesforce_high', label: 'Salesforce High' }, + { id: 'aws_kinesis_high', label: 'AWS kinesis High' }, + { id: 'amazon_s3_classic', label: 'Amazon S3 Classic' }, + { id: 'hdfs_classic', label: 'HDFS Classic' }, + { id: 'kafka_classic', label: 'Kafka Classic' }, + { id: 'localcon_classic', label: 'Local connection Classic' }, + { id: 'salesforce_classic', label: 'Salesforce Classic' }, + { id: 'aws_kinesis_classic', label: 'AWS kinesis Classic' }, + ], + operators: ['in', 'notIn'], + }, +}; + +export const badgeTextAsCustomAttribute = { + properties: { + attribute: 'target', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Target', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a custom attribute', + }, + metadata: { + category: 'Custom attributes', + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'containsIgnoreCase', + 'notContainsIgnoreCase', + 'equals', + 'notEquals', + 'match a regexp', + ], + }, +}; + +export const badgeEnumsAsCustomAttribute = { + properties: { + attribute: 'visibility', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Visibility', + operator: {}, + operators: [], + type: 'checkbox', + filterBarPlaceholder: 'Find a visibility', + }, + metadata: { + badgePerFacet: '1', + entitiesPerBadge: 'N', + category: 'Custom attributes', + values: [ + { id: 'internal', label: 'Internal' }, + { id: 'public', label: 'Public' }, + ], + operators: ['in', 'notIn'], + }, +}; + +export const badgeTextAsCategory = { + properties: { + attribute: 'owner', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Owner', + operator: {}, + operators: [], + type: 'text', + placeholder: 'Enter a category name', + }, + metadata: { + category: 'Very long long long long long long long category', + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase', 'equals'], + }, +}; + +export const badgeEmptyLabel = { + properties: { + attribute: 'title', + initialOperatorOpened: true, + initialValueOpened: false, + label: '', + operator: {}, + operators: [], + type: 'text', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['containsIgnoreCase', 'notContainsIgnoreCase', 'equals'], + }, +}; + +export const badgePriceAsCustomAttribute = { + properties: { + attribute: 'price', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Price', + operator: {}, + operators: [], + type: 'number', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + category: 'Custom attributes', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + }, +}; + +export const badgeCreationDate = { + properties: { + attribute: 'creationDate', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Creation Date', + operator: {}, + operators: [], + type: 'date', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: [ + 'equals', + 'notEquals', + 'greaterThan', + 'greaterThanOrEquals', + 'lessThan', + 'lessThanOrEquals', + ], + 'data-feature': 'faceted-badge-creation-date', + }, +}; + +export const badgePeriod = { + properties: { + attribute: 'period', + initialOperatorOpened: true, + initialValueOpened: false, + label: 'Period', + operator: {}, + operators: [], + type: 'period', + }, + metadata: { + badgePerFacet: 'N', + entitiesPerBadge: '1', + operators: ['in'], + 'data-feature': 'faceted-badge-period', + }, +}; diff --git a/packages/playground/src/app/i18n.js b/packages/playground/src/app/i18n.js index 235ce260f91..238619f77db 100644 --- a/packages/playground/src/app/i18n.js +++ b/packages/playground/src/app/i18n.js @@ -1,8 +1,11 @@ /* eslint-disable @talend/import-depth */ + /* eslint-disable import/no-extraneous-dependencies */ -import i18next from 'i18next'; import { initReactI18next } from 'react-i18next'; + +import i18next from 'i18next'; import HttpApi from 'i18next-http-backend'; + import assetsApi from '@talend/assets-api'; import { namespaces as tuiComponentsNamespaces } from '@talend/locales-tui-components/namespaces'; import { namespaces as tuiContainersNamespaces } from '@talend/locales-tui-containers/namespaces'; diff --git a/packages/storybook-docs/package.json b/packages/storybook-docs/package.json index 2d6463657dd..a5d692e8134 100644 --- a/packages/storybook-docs/package.json +++ b/packages/storybook-docs/package.json @@ -39,10 +39,10 @@ "devDependencies": { "@talend/eslint-config": "^13.0.3", "@talend/eslint-plugin": "^1.1.1", - "@talend/scripts-core": "^16.3.5", "@talend/scripts-config-babel": "^13.3.1", "@talend/scripts-config-storybook-lib": "^5.3.1", "@talend/scripts-config-typescript": "^11.2.1", + "@talend/scripts-core": "^16.3.5", "@types/node": "^6.14.13", "@types/react": "^18.2.60", "@types/react-dom": "^18.2.19", @@ -50,8 +50,8 @@ "mini-css-extract-plugin": "^2.8.1", "postcss-loader": "^7.3.4", "resolve-url-loader": "^5.0.0", - "sass": "^1.71.1", - "sass-loader": "^13.3.3", + "sass": "^1.75.0", + "sass-loader": "^14.2.0", "webpack": "^5.90.3", "webpack-cli": "^4.10.0" } diff --git a/packages/storybook-docs/webpack.custom.js b/packages/storybook-docs/webpack.custom.js index 06526b8dca2..08a3ea83e7b 100644 --- a/packages/storybook-docs/webpack.custom.js +++ b/packages/storybook-docs/webpack.custom.js @@ -13,6 +13,11 @@ module.exports = { chunkFilename: '[name].min.css', }), ], + resolve: { + alias: { + '@talend/design-tokens/lib/tokens': require.resolve('@talend/design-tokens/lib/tokens'), + }, + }, module: { rules: [ { @@ -39,7 +44,11 @@ module.exports = { }, { loader: require.resolve('sass-loader'), - options: { sourceMap: true }, + options: { + // implementation: require('sass-embedded'), + api: 'modern-compiler', + sourceMap: true, + }, }, ], }, diff --git a/packages/theme/package.json b/packages/theme/package.json index 15b0aa8f39d..ddfbdf3370e 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -45,8 +45,8 @@ "postcss-loader": "^7.3.4", "postcss-preset-env": "^7.8.3", "rimraf": "^5.0.5", - "sass": "^1.71.1", - "sass-loader": "^13.3.3", + "sass": "^1.75.0", + "sass-loader": "^14.2.0", "style-loader": "^3.3.4", "webpack": "^5.90.3", "webpack-cli": "^4.10.0" diff --git a/packages/theme/webpack.config.js b/packages/theme/webpack.config.js index 2ffb9d6c2da..ee07455afb1 100644 --- a/packages/theme/webpack.config.js +++ b/packages/theme/webpack.config.js @@ -60,6 +60,7 @@ module.exports = (env, argv) => { loader: require.resolve('sass-loader'), options: { sourceMap: true, + sassOptions: { includePaths: ['./node_modules', '../../node_modules'] }, }, }, ], @@ -86,7 +87,7 @@ module.exports = (env, argv) => { ? new webpack.HotModuleReplacementPlugin() : new MiniCssExtractPlugin({ filename: 'bootstrap.css', - }), + }), ], devServer: { port: 1234, diff --git a/packages/utils/package.json b/packages/utils/package.json index 03aba637de6..ab459a28507 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -4,6 +4,17 @@ "description": "Various utilities", "main": "lib/index.js", "types": "lib/index.d.ts", + "module": "./lib-esm/index.js", + "exports": { + "./lib/*": { + "import": "./lib-esm/*/index.js", + "require": "./lib/*/index.js" + }, + ".": { + "import": "./lib-esm/index.js", + "require": "./lib/index.js" + } + }, "repository": { "type": "git", "url": "git+https://github.com/Talend/ui.git" @@ -12,6 +23,7 @@ "license": "Apache-2.0", "scripts": { "build:lib": "talend-scripts build --tsc", + "build:lib:esm": "talend-scripts build --esm", "lint": "talend-scripts lint", "test": "cross-env TZ=UTC talend-scripts test", "test:cov": "cross-env TZ=UTC talend-scripts test --coverage --silent", diff --git a/packages/utils/tsconfig.esm.json b/packages/utils/tsconfig.esm.json new file mode 100644 index 00000000000..1302c194733 --- /dev/null +++ b/packages/utils/tsconfig.esm.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "exclude": ["node_modules", "src/**/*.test.*"], + "compilerOptions": { + "outDir": "lib-esm", + "module": "ESNext" + } +} diff --git a/tools/scripts-config-babel/babel.config.js b/tools/scripts-config-babel/babel.config.js index 27270fbbca0..a3fb308b5ab 100644 --- a/tools/scripts-config-babel/babel.config.js +++ b/tools/scripts-config-babel/babel.config.js @@ -3,6 +3,7 @@ module.exports = { [ require.resolve('@babel/preset-env'), { + modules: process.env.ESM === 'true' ? false : 'auto', targets: 'last 1 year, not ie > 0, not samsung > 0, not opera > 0, not ios > 0, not op_mob > 0, not android > 0, not and_chr > 0, not and_ff > 0, not and_qq > 0', }, diff --git a/tools/scripts-config-react-webpack/config/webpack.config.common.js b/tools/scripts-config-react-webpack/config/webpack.config.common.js index f7541801259..09dcdc45992 100644 --- a/tools/scripts-config-react-webpack/config/webpack.config.common.js +++ b/tools/scripts-config-react-webpack/config/webpack.config.common.js @@ -77,6 +77,11 @@ function getSassLoaders(enableModules, sassData, isEnvDevelopmentServe) { additionalData: sassData, sassOptions: { quietDeps: true, + /** + * This difference reflects ESM's design philosophy which aims for more predictability and less implicit behavior compared to CommonJS. + * As a result, the structure and location of your modules might need to be more precisely managed when working with ESM in Node.js. + */ + includePaths: ['./node_modules', '../node_modules', '../../node_modules'], }, }, }, diff --git a/tools/scripts-config-react-webpack/config/webpack.config.js b/tools/scripts-config-react-webpack/config/webpack.config.js index 42d5eb9acbf..a363dbf05a9 100644 --- a/tools/scripts-config-react-webpack/config/webpack.config.js +++ b/tools/scripts-config-react-webpack/config/webpack.config.js @@ -286,6 +286,7 @@ module.exports = ({ getUserConfig, mode }) => { ), fallback: { url: false, + path: false, }, }, module: { diff --git a/tools/scripts-config-react-webpack/config/webpack.config.umd.js b/tools/scripts-config-react-webpack/config/webpack.config.umd.js index 613eaabd55d..b82d71af6a2 100644 --- a/tools/scripts-config-react-webpack/config/webpack.config.umd.js +++ b/tools/scripts-config-react-webpack/config/webpack.config.umd.js @@ -48,6 +48,7 @@ module.exports = options => { extensions: ['.js', useTypescript && '.ts', useTypescript && '.tsx'].filter(Boolean), fallback: { url: false, + path: false, }, }, module: { diff --git a/tools/scripts-config-react-webpack/package.json b/tools/scripts-config-react-webpack/package.json index 5712d970f2c..57fbc47f458 100644 --- a/tools/scripts-config-react-webpack/package.json +++ b/tools/scripts-config-react-webpack/package.json @@ -46,8 +46,8 @@ "postcss-safe-parser": "^6.0.0", "regenerator-runtime": "^0.13.11", "resolve-url-loader": "^5.0.0", - "sass": "^1.71.1", - "sass-loader": "^13.3.3", + "sass": "^1.75.0", + "sass-loader": "^14.2.0", "source-map-loader": "^4.0.2", "style-loader": "^3.3.4", "svg64": "^1.2.0", diff --git a/tools/scripts-config-storybook-lib/.storybook-templates/main.js b/tools/scripts-config-storybook-lib/.storybook-templates/main.js index dc7a91a8ccc..cefff9cc088 100644 --- a/tools/scripts-config-storybook-lib/.storybook-templates/main.js +++ b/tools/scripts-config-storybook-lib/.storybook-templates/main.js @@ -43,7 +43,7 @@ const defaultMain = { buildStoriesJson: true, }, stories: getStoriesFolders(), - staticDirs: [path.join(__dirname, 'msw'), require.resolve('@talend/icons').replace('/dist/TalendIcons.js', '/dist/svg-bundle')], + staticDirs: [path.join(__dirname, 'msw'), require.resolve('@talend/icons').replace('index.js', '').replace('/dist/TalendIcons.js', '/dist/svg-bundle')], addons: [ '@storybook/addon-essentials', '@storybook/addon-a11y', diff --git a/tools/scripts-core/src/scripts/build-lib.js b/tools/scripts-core/src/scripts/build-lib.js index 2a3a3f48bf9..4bb518e6548 100755 --- a/tools/scripts-core/src/scripts/build-lib.js +++ b/tools/scripts-core/src/scripts/build-lib.js @@ -16,11 +16,17 @@ const isTSLib = !!types; export default async function build(env, presetApi, unsafeOptions) { let useTsc = false; + let useESM = false; const options = unsafeOptions.filter(o => { if (o === '--tsc') { useTsc = true; // do not keep this option return false; + } else if (o === '--esm') { + useESM = true; + Object.assign(env, { ESM: useESM.toString() }); + // do not keep this option + return false; } return true; }); @@ -39,7 +45,9 @@ export default async function build(env, presetApi, unsafeOptions) { path.join(tsRootPath, 'tsconfig.json'); const srcFolder = path.join(process.cwd(), 'src'); - const targetFolder = path.join(process.cwd(), 'lib'); + const targetFolder = useESM + ? path.join(process.cwd(), 'lib-esm') + : path.join(process.cwd(), 'lib'); if (!options.includes('--watch')) { console.log(`Removing target folder (${targetFolder})...`); @@ -51,7 +59,7 @@ export default async function build(env, presetApi, unsafeOptions) { resolve({ status: 0 }); return; } - console.log('Compiling with babel...'); + console.log('Compiling with babel...', { ...env, ESM: useESM.toString() }); utils.process .spawn( 'node', diff --git a/yarn.lock b/yarn.lock index fd8d42efc6a..14aa5231b62 100644 --- a/yarn.lock +++ b/yarn.lock @@ -185,13 +185,13 @@ "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" chokidar "^3.4.0" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5": - version "7.23.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.23.5.tgz#9009b69a8c602293476ad598ff53e4562e15c244" - integrity sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" + integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== dependencies: - "@babel/highlight" "^7.23.4" - chalk "^2.4.2" + "@babel/highlight" "^7.24.2" + picocolors "^1.0.0" "@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5": version "7.23.5" @@ -219,20 +219,20 @@ json5 "^2.1.2" semver "^6.3.0" -"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.0.tgz#56cbda6b185ae9d9bed369816a8f4423c5f2ff1b" - integrity sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw== +"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.5", "@babel/core@^7.23.9", "@babel/core@^7.24.0": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" + integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.4" "@babel/helper-compilation-targets" "^7.23.6" "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.0" - "@babel/parser" "^7.24.0" + "@babel/helpers" "^7.24.4" + "@babel/parser" "^7.24.4" "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" + "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" convert-source-map "^2.0.0" debug "^4.1.0" @@ -258,14 +258,14 @@ jsesc "^2.5.1" source-map "^0.5.0" -"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.23.0", "@babel/generator@^7.23.6", "@babel/generator@^7.7.2": - version "7.23.6" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.23.6.tgz#9e1fca4811c77a10580d17d26b57b036133f3c2e" - integrity sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw== +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.23.0", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" + integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== dependencies: - "@babel/types" "^7.23.6" - "@jridgewell/gen-mapping" "^0.3.2" - "@jridgewell/trace-mapping" "^0.3.17" + "@babel/types" "^7.24.0" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" "@babel/helper-annotate-as-pure@^7.22.5": @@ -448,33 +448,34 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.17.8", "@babel/helpers@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.0.tgz#a3dd462b41769c95db8091e49cfe019389a9409b" - integrity sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA== +"@babel/helpers@^7.17.8", "@babel/helpers@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" + integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.0" + "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" -"@babel/highlight@^7.23.4": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.23.4.tgz#edaadf4d8232e1a961432db785091207ead0621b" - integrity sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A== +"@babel/highlight@^7.24.2": + version "7.24.2" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" + integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== dependencies: "@babel/helper-validator-identifier" "^7.22.20" chalk "^2.4.2" js-tokens "^4.0.0" + picocolors "^1.0.0" "@babel/parser@7.18.9": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.20.15", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" - integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8", "@babel/parser@^7.20.15", "@babel/parser@^7.20.5", "@babel/parser@^7.20.7", "@babel/parser@^7.23.0", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" + integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" @@ -1050,6 +1051,20 @@ dependencies: "@babel/plugin-transform-react-jsx" "^7.22.5" +"@babel/plugin-transform-react-jsx-self@^7.23.3": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" + integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + +"@babel/plugin-transform-react-jsx-source@^7.23.3": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0" + integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" @@ -1352,18 +1367,18 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/traverse@^7.17.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.0", "@babel/traverse@^7.4.5": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" - integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== +"@babel/traverse@^7.17.3", "@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.1", "@babel/traverse@^7.4.5": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" + integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" + "@babel/code-frame" "^7.24.1" + "@babel/generator" "^7.24.1" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.0" + "@babel/parser" "^7.24.1" "@babel/types" "^7.24.0" debug "^4.3.1" globals "^11.1.0" @@ -1376,7 +1391,7 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.17.0", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.23.6", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.17.0", "@babel/types@^7.18.9", "@babel/types@^7.2.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1810,116 +1825,231 @@ resolved "https://registry.yarnpkg.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz#08de79f54eb3406f9daaf77c76e35313da963963" integrity sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw== +"@esbuild/aix-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" + integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== + "@esbuild/android-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622" integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ== +"@esbuild/android-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" + integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== + "@esbuild/android-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682" integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw== +"@esbuild/android-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" + integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== + "@esbuild/android-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2" integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg== +"@esbuild/android-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" + integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== + "@esbuild/darwin-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz#08172cbeccf95fbc383399a7f39cfbddaeb0d7c1" integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA== +"@esbuild/darwin-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" + integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== + "@esbuild/darwin-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d" integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ== +"@esbuild/darwin-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" + integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== + "@esbuild/freebsd-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54" integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw== +"@esbuild/freebsd-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" + integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== + "@esbuild/freebsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e" integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ== +"@esbuild/freebsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" + integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== + "@esbuild/linux-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0" integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA== +"@esbuild/linux-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" + integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== + "@esbuild/linux-arm@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0" integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg== +"@esbuild/linux-arm@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" + integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== + "@esbuild/linux-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7" integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA== +"@esbuild/linux-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" + integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== + "@esbuild/linux-loong64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d" integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg== +"@esbuild/linux-loong64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" + integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== + "@esbuild/linux-mips64el@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231" integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ== +"@esbuild/linux-mips64el@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" + integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== + "@esbuild/linux-ppc64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb" integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA== +"@esbuild/linux-ppc64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" + integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== + "@esbuild/linux-riscv64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6" integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A== +"@esbuild/linux-riscv64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" + integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== + "@esbuild/linux-s390x@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071" integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ== +"@esbuild/linux-s390x@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" + integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== + "@esbuild/linux-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338" integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w== +"@esbuild/linux-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" + integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== + "@esbuild/netbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1" integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A== +"@esbuild/netbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" + integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== + "@esbuild/openbsd-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae" integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg== +"@esbuild/openbsd-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" + integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== + "@esbuild/sunos-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d" integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ== +"@esbuild/sunos-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" + integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== + "@esbuild/win32-arm64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9" integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg== +"@esbuild/win32-arm64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" + integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== + "@esbuild/win32-ia32@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102" integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g== +"@esbuild/win32-ia32@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" + integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== + "@esbuild/win32-x64@0.18.20": version "0.18.20" resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d" integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ== +"@esbuild/win32-x64@0.20.2": + version "0.20.2" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" + integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -2262,24 +2392,24 @@ "@types/yargs" "^17.0.8" chalk "^4.0.0" -"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.4.tgz#9b18145d26cf33d08576cf4c7665b28554480ed7" - integrity sha512-Oud2QPM5dHviZNn4y/WhhYKSXksv+1xLEIsNrAbGcFzUN3ubqWRFT5gwPchNc5NuzILOU4tPBDTZ4VwhL8Y7cw== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" + integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== dependencies: - "@jridgewell/set-array" "^1.0.1" + "@jridgewell/set-array" "^1.2.1" "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/trace-mapping" "^0.3.24" "@jridgewell/resolve-uri@^3.1.0": version "3.1.2" resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/set-array@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== "@jridgewell/source-map@^0.3.3": version "0.3.5" @@ -2294,10 +2424,10 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.23" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.23.tgz#afc96847f3f07841477f303eed687707a5aacd80" - integrity sha512-9/4foRoUKp8s96tSkh8DlAAc5A0Ty8vLXld+l9gjKKY6ckwI8G15f0hskGmuLZu78ZlGa1vtsfOa+lnB4vG6Jg== +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.25" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" + integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -2949,6 +3079,89 @@ resolved "https://registry.yarnpkg.com/@redux-saga/types/-/types-1.2.1.tgz#9403f51c17cae37edf870c6bc0c81c1ece5ccef8" integrity sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA== +"@rollup/pluginutils@^4.2.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.2.1.tgz#e6c6c3aba0744edce3fb2074922d3776c0af2a6d" + integrity sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ== + dependencies: + estree-walker "^2.0.1" + picomatch "^2.2.2" + +"@rollup/rollup-android-arm-eabi@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.0.tgz#57936f50d0335e2e7bfac496d209606fa516add4" + integrity sha512-jwXtxYbRt1V+CdQSy6Z+uZti7JF5irRKF8hlKfEnF/xJpcNGuuiZMBvuoYM+x9sr9iWGnzrlM0+9hvQ1kgkf1w== + +"@rollup/rollup-android-arm64@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.0.tgz#81bba83b37382a2d0e30ceced06c8d3d85138054" + integrity sha512-fI9nduZhCccjzlsA/OuAwtFGWocxA4gqXGTLvOyiF8d+8o0fZUeSztixkYjcGq1fGZY3Tkq4yRvHPFxU+jdZ9Q== + +"@rollup/rollup-darwin-arm64@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.0.tgz#a371bd723a5c4c4a33376da72abfc3938066842b" + integrity sha512-BcnSPRM76/cD2gQC+rQNGBN6GStBs2pl/FpweW8JYuz5J/IEa0Fr4AtrPv766DB/6b2MZ/AfSIOSGw3nEIP8SA== + +"@rollup/rollup-darwin-x64@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.0.tgz#8baf2fda277c9729125017c65651296282412886" + integrity sha512-LDyFB9GRolGN7XI6955aFeI3wCdCUszFWumWU0deHA8VpR3nWRrjG6GtGjBrQxQKFevnUTHKCfPR4IvrW3kCgQ== + +"@rollup/rollup-linux-arm-gnueabihf@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.0.tgz#822830a8f7388d5b81d04c69415408d3bab1079b" + integrity sha512-ygrGVhQP47mRh0AAD0zl6QqCbNsf0eTo+vgwkY6LunBcg0f2Jv365GXlDUECIyoXp1kKwL5WW6rsO429DBY/bA== + +"@rollup/rollup-linux-arm64-gnu@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.0.tgz#e20fbe1bd4414c7119f9e0bba8ad17a6666c8365" + integrity sha512-x+uJ6MAYRlHGe9wi4HQjxpaKHPM3d3JjqqCkeC5gpnnI6OWovLdXTpfa8trjxPLnWKyBsSi5kne+146GAxFt4A== + +"@rollup/rollup-linux-arm64-musl@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.0.tgz#13f475596a62e1924f13fe1c8cf2c40e09a99b47" + integrity sha512-nrRw8ZTQKg6+Lttwqo6a2VxR9tOroa2m91XbdQ2sUUzHoedXlsyvY1fN4xWdqz8PKmf4orDwejxXHjh7YBGUCA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.0.tgz#6a431c441420d1c510a205e08c6673355a0a2ea9" + integrity sha512-xV0d5jDb4aFu84XKr+lcUJ9y3qpIWhttO3Qev97z8DKLXR62LC3cXT/bMZXrjLF9X+P5oSmJTzAhqwUbY96PnA== + +"@rollup/rollup-linux-riscv64-gnu@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.0.tgz#53d9448962c3f9ed7a1672269655476ea2d67567" + integrity sha512-SDDhBQwZX6LPRoPYjAZWyL27LbcBo7WdBFWJi5PI9RPCzU8ijzkQn7tt8NXiXRiFMJCVpkuMkBf4OxSxVMizAw== + +"@rollup/rollup-linux-s390x-gnu@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.0.tgz#95f0c133b324da3e7e5c7d12855e0eb71d21a946" + integrity sha512-RxB/qez8zIDshNJDufYlTT0ZTVut5eCpAZ3bdXDU9yTxBzui3KhbGjROK2OYTTor7alM7XBhssgoO3CZ0XD3qA== + +"@rollup/rollup-linux-x64-gnu@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.0.tgz#820ada75c68ead1acc486e41238ca0d8f8531478" + integrity sha512-C6y6z2eCNCfhZxT9u+jAM2Fup89ZjiG5pIzZIDycs1IwESviLxwkQcFRGLjnDrP+PT+v5i4YFvlcfAs+LnreXg== + +"@rollup/rollup-linux-x64-musl@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.0.tgz#ca74f22e125efbe94c1148d989ef93329b464443" + integrity sha512-i0QwbHYfnOMYsBEyjxcwGu5SMIi9sImDVjDg087hpzXqhBSosxkE7gyIYFHgfFl4mr7RrXksIBZ4DoLoP4FhJg== + +"@rollup/rollup-win32-arm64-msvc@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.0.tgz#269023332297051d037a9593dcba92c10fef726b" + integrity sha512-Fq52EYb0riNHLBTAcL0cun+rRwyZ10S9vKzhGKKgeD+XbwunszSY0rVMco5KbOsTlwovP2rTOkiII/fQ4ih/zQ== + +"@rollup/rollup-win32-ia32-msvc@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.0.tgz#d7701438daf964011fd7ca33e3f13f3ff5129e7b" + integrity sha512-e/PBHxPdJ00O9p5Ui43+vixSgVf4NlLsmV6QneGERJ3lnjIua/kim6PRFe3iDueT1rQcgSkYP8ZBBXa/h4iPvw== + +"@rollup/rollup-win32-x64-msvc@4.14.0": + version "4.14.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.0.tgz#0bb7ac3cd1c3292db1f39afdabfd03ccea3a3d34" + integrity sha512-aGg7iToJjdklmxlUlJh/PaPNa4PmqHfyRMLunbL3eaMO0gp656+q1zOKkpJ/CVe9CryJv6tAN1HDoR8cNGzkag== + "@rooks/use-mutation-observer@4.11.2": version "4.11.2" resolved "https://registry.yarnpkg.com/@rooks/use-mutation-observer/-/use-mutation-observer-4.11.2.tgz#a0466c4338e0a4487ea19253c86bcd427c29f4af" @@ -4123,7 +4336,7 @@ "@types/babel__core" "*" "@types/prettier" "^2.0.0" -"@types/babel__core@*", "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.18.0": +"@types/babel__core@*", "@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.18.0", "@types/babel__core@^7.20.5": version "7.20.5" resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== @@ -4508,7 +4721,7 @@ dependencies: "@types/estree" "*" -"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5": +"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0", "@types/estree@^1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== @@ -4749,6 +4962,11 @@ resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.5.tgz#ec10755e871497bcd83efe927e43ec46e8c0747e" integrity sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag== +"@types/mockjs@^1.0.7": + version "1.0.10" + resolved "https://registry.yarnpkg.com/@types/mockjs/-/mockjs-1.0.10.tgz#535e4bdc7c0e4658fc4b3696029d45ee6b053c8a" + integrity sha512-SXgrhajHG7boLv6oU93CcmdDm0HYRiceuz6b+7z+/2lCJPTWDv0V5YiwFHT2ejE4bQqgSXQiVPQYPWv7LGsK1g== + "@types/ms@*": version "0.7.34" resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433" @@ -5220,6 +5438,17 @@ resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vitejs/plugin-react@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz#744d8e4fcb120fc3dbaa471dadd3483f5a304bb9" + integrity sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ== + dependencies: + "@babel/core" "^7.23.5" + "@babel/plugin-transform-react-jsx-self" "^7.23.3" + "@babel/plugin-transform-react-jsx-source" "^7.23.3" + "@types/babel__core" "^7.20.5" + react-refresh "^0.14.0" + "@vue/compiler-core@3.4.21": version "3.4.21" resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a" @@ -6581,6 +6810,13 @@ bufferstreams@^3.0.0: dependencies: readable-stream "^3.4.0" +bundle-require@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/bundle-require/-/bundle-require-4.0.2.tgz#65fc74ff14eabbba36d26c9a6161bd78fff6b29e" + integrity sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag== + dependencies: + load-tsconfig "^0.2.3" + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -7107,6 +7343,11 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@*: + version "12.0.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.0.0.tgz#b929db6df8546080adfd004ab215ed48cf6f2592" + integrity sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA== + commander@11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/commander/-/commander-11.1.0.tgz#62fdce76006a68e5c1ab3314dc92e800eb83d906" @@ -7237,7 +7478,7 @@ confusing-browser-globals@^1.0.10: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== -connect-history-api-fallback@^1: +connect-history-api-fallback@^1, connect-history-api-fallback@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== @@ -7257,6 +7498,16 @@ connect@3.6.6: parseurl "~1.3.2" utils-merge "1.0.1" +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + connected-react-router@^6.9.3: version "6.9.3" resolved "https://registry.yarnpkg.com/connected-react-router/-/connected-react-router-6.9.3.tgz#72300aca9f9d6f38e1f4a2901572faa02adec972" @@ -7268,6 +7519,11 @@ connected-react-router@^6.9.3: immutable "^3.8.1 || ^4.0.0" seamless-immutable "^7.1.3" +consola@^2.15.3: + version "2.15.3" + resolved "https://registry.yarnpkg.com/consola/-/consola-2.15.3.tgz#2e11f98d6a4be71ff72e0bdf07bd23e12cb61550" + integrity sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw== + consola@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" @@ -7586,7 +7842,7 @@ css-select@^2.0.0: domutils "^1.7.0" nth-check "^1.0.2" -css-select@^4.1.3: +css-select@^4.1.3, css-select@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== @@ -8623,6 +8879,11 @@ dotenv-expand@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-10.0.0.tgz#12605d00fb0af6d0a592e6558585784032e4ef37" integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A== +dotenv-expand@^8.0.2: + version "8.0.3" + resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-8.0.3.tgz#29016757455bcc748469c83a19b36aaf2b83dd6e" + integrity sha512-SErOMvge0ZUyWd5B0NXMQlDkN+8r+HhVUsxgOO7IoPDOdDRD2JjExpN6y3KnFR66jsJMwSn1pqIivhU5rcJiNg== + dotenv@^16.0.0: version "16.4.5" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" @@ -8680,10 +8941,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -ejs@^3.1.8: - version "3.1.9" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" - integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ== +ejs@^3.1.6, ejs@^3.1.8: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== dependencies: jake "^10.8.5" @@ -8987,6 +9248,11 @@ esbuild-plugin-alias@^0.2.1: resolved "https://registry.yarnpkg.com/esbuild-plugin-alias/-/esbuild-plugin-alias-0.2.1.tgz#45a86cb941e20e7c2bc68a2bea53562172494fcb" integrity sha512-jyfL/pwPqaFXyKnj8lP8iLk6Z0m099uXR45aSN8Av1XD4vhvQutxxPzgA2bTcAwQpa1zCXDcWOlhFgyP3GKqhQ== +esbuild-plugin-react-virtualized@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/esbuild-plugin-react-virtualized/-/esbuild-plugin-react-virtualized-1.0.4.tgz#b8911ce8fae4636daa87cfa898752170f5d45609" + integrity sha512-/Y+82TBduHox0/uhJlTgUqi3ZWN+qZPF0xy9crkHQE2AOOdm76l6VY2F0Mdfvue9hqXz2FOlKHlHUVXNalHLzA== + esbuild-register@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.5.0.tgz#449613fb29ab94325c722f560f800dd946dc8ea8" @@ -9022,6 +9288,35 @@ esbuild@^0.18.0: "@esbuild/win32-ia32" "0.18.20" "@esbuild/win32-x64" "0.18.20" +esbuild@^0.20.1: + version "0.20.2" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" + integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.20.2" + "@esbuild/android-arm" "0.20.2" + "@esbuild/android-arm64" "0.20.2" + "@esbuild/android-x64" "0.20.2" + "@esbuild/darwin-arm64" "0.20.2" + "@esbuild/darwin-x64" "0.20.2" + "@esbuild/freebsd-arm64" "0.20.2" + "@esbuild/freebsd-x64" "0.20.2" + "@esbuild/linux-arm" "0.20.2" + "@esbuild/linux-arm64" "0.20.2" + "@esbuild/linux-ia32" "0.20.2" + "@esbuild/linux-loong64" "0.20.2" + "@esbuild/linux-mips64el" "0.20.2" + "@esbuild/linux-ppc64" "0.20.2" + "@esbuild/linux-riscv64" "0.20.2" + "@esbuild/linux-s390x" "0.20.2" + "@esbuild/linux-x64" "0.20.2" + "@esbuild/netbsd-x64" "0.20.2" + "@esbuild/openbsd-x64" "0.20.2" + "@esbuild/sunos-x64" "0.20.2" + "@esbuild/win32-arm64" "0.20.2" + "@esbuild/win32-ia32" "0.20.2" + "@esbuild/win32-x64" "0.20.2" + escalade@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" @@ -9397,7 +9692,7 @@ estree-util-visit@^1.0.0, estree-util-visit@^1.2.1: "@types/estree-jsx" "^1.0.0" "@types/unist" "^2.0.0" -estree-walker@^2.0.2: +estree-walker@^2.0.1, estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== @@ -9617,7 +9912,7 @@ fast-fifo@^1.1.0: resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== -fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.11, fast-glob@^3.2.12, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -9807,6 +10102,19 @@ finalhandler@1.1.0: statuses "~1.3.1" unpipe "~1.0.0" +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "~2.3.0" + parseurl "~1.3.3" + statuses "~1.5.0" + unpipe "~1.0.0" + finalhandler@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" @@ -10073,7 +10381,7 @@ fs-extra@9.1.0, fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^10.0.0, fs-extra@^10.1.0: +fs-extra@^10.0.0, fs-extra@^10.0.1, fs-extra@^10.1.0: version "10.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== @@ -10139,7 +10447,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -10344,15 +10652,15 @@ glob2base@0.0.12: find-index "^0.1.1" glob@^10.0.0, glob@^10.2.2, glob@^10.3.7: - version "10.3.10" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b" - integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g== + version "10.3.12" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.12.tgz#3a65c363c2e9998d220338e88a5f6ac97302960b" + integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== dependencies: foreground-child "^3.1.0" - jackspeak "^2.3.5" + jackspeak "^2.3.6" minimatch "^9.0.1" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - path-scurry "^1.10.1" + minipass "^7.0.4" + path-scurry "^1.10.2" glob@^7.0.3, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0: version "7.2.3" @@ -10591,7 +10899,7 @@ hasown@^2.0.0, hasown@^2.0.1: dependencies: function-bind "^1.1.2" -he@^1.2.0: +he@1.2.0, he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -10677,7 +10985,7 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-minifier-terser@^6.0.2: +html-minifier-terser@^6.0.2, html-minifier-terser@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab" integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw== @@ -11714,7 +12022,7 @@ iterator.prototype@^1.1.2: reflect.getprototypeof "^1.0.4" set-function-name "^2.0.1" -jackspeak@^2.3.5: +jackspeak@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-2.3.6.tgz#647ecc472238aee4b06ac0e461acc21a8c505ca8" integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== @@ -12660,6 +12968,11 @@ load-plugin@^5.0.0: "@npmcli/config" "^6.0.0" import-meta-resolve "^2.0.0" +load-tsconfig@^0.2.3: + version "0.2.5" + resolved "https://registry.yarnpkg.com/load-tsconfig/-/load-tsconfig-0.2.5.tgz#453b8cd8961bfb912dea77eb6c168fe8cca3d3a1" + integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg== + load-yaml-file@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/load-yaml-file/-/load-yaml-file-0.2.0.tgz#af854edaf2bea89346c07549122753c07372f64d" @@ -12887,6 +13200,11 @@ lower-case@^2.0.2: dependencies: tslib "^2.0.3" +lru-cache@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" + integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== + lru-cache@^4.0.1: version "4.1.5" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" @@ -12914,11 +13232,6 @@ lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== -"lru-cache@^9.1.1 || ^10.0.0": - version "10.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.0.tgz#0bd445ca57363465900f4d1f9bd8db343a4d95c3" - integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== - lz-string@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941" @@ -13713,7 +14026,7 @@ minipass@^5.0.0: resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0": +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: version "7.0.4" resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== @@ -13758,6 +14071,13 @@ mock-socket@^9.3.1: resolved "https://registry.yarnpkg.com/mock-socket/-/mock-socket-9.3.1.tgz#24fb00c2f573c84812aa4a24181bb025de80cc8e" integrity sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw== +mockjs@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mockjs/-/mockjs-1.1.0.tgz#e6a0c378e91906dbaff20911cc0273b3c7d75b06" + integrity sha512-eQsKcWzIaZzEZ07NuEyO4Nw65g0hdWAyurVol1IPl1gahRwY+svqzfgfey8U8dahLwG44d6/RwEzuK52rSa/JQ== + dependencies: + commander "*" + modern-css-reset@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/modern-css-reset/-/modern-css-reset-1.4.0.tgz#5bee4d11eeca2ff19b882c6e8f1769773e792d04" @@ -13975,6 +14295,14 @@ node-gyp@^9.0.0: tar "^6.1.2" which "^2.0.2" +node-html-parser@^5.3.3: + version "5.4.2" + resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-5.4.2.tgz#93e004038c17af80226c942336990a0eaed8136a" + integrity sha512-RaBPP3+51hPne/OolXxcz89iYvQvKOydaqoePpOgXcrOKZhjVIzmpKZz+Hd/RBO2/zN2q6CNJhQzucVz+u3Jyw== + dependencies: + css-select "^4.2.1" + he "1.2.0" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -14569,12 +14897,12 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-scurry@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.1.tgz#9ba6bf5aa8500fe9fd67df4f0d9483b2b0bfc698" - integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ== +path-scurry@^1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.10.2.tgz#8f6357eb1239d5fa1da8b9f70e9c080675458ba7" + integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== dependencies: - lru-cache "^9.1.1 || ^10.0.0" + lru-cache "^10.2.0" minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-to-regexp@0.1.7: @@ -14597,6 +14925,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339" + integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw== + pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" @@ -14641,7 +14974,7 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -15281,14 +15614,14 @@ postcss@^7.0.14, postcss@^7.0.32, postcss@^7.0.5, postcss@^7.0.6: picocolors "^0.2.1" source-map "^0.6.1" -postcss@^8.2.14, postcss@^8.4.24, postcss@^8.4.28, postcss@^8.4.33, postcss@^8.4.35: - version "8.4.35" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" - integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== +postcss@^8.2.14, postcss@^8.4.24, postcss@^8.4.28, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== dependencies: nanoid "^3.3.7" picocolors "^1.0.0" - source-map-js "^1.0.2" + source-map-js "^1.2.0" preact@^10.13.2: version "10.19.6" @@ -16616,6 +16949,30 @@ robust-predicates@^3.0.2: resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== +rollup@^4.13.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.14.0.tgz#c3e2cd479f1b2358b65c1f810fa05b51603d7be8" + integrity sha512-Qe7w62TyawbDzB4yt32R0+AbIo6m1/sqO7UPzFS8Z/ksL5mrfhA0v4CavfdmFav3D+ub4QeAgsGEe84DoWe/nQ== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.14.0" + "@rollup/rollup-android-arm64" "4.14.0" + "@rollup/rollup-darwin-arm64" "4.14.0" + "@rollup/rollup-darwin-x64" "4.14.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.14.0" + "@rollup/rollup-linux-arm64-gnu" "4.14.0" + "@rollup/rollup-linux-arm64-musl" "4.14.0" + "@rollup/rollup-linux-powerpc64le-gnu" "4.14.0" + "@rollup/rollup-linux-riscv64-gnu" "4.14.0" + "@rollup/rollup-linux-s390x-gnu" "4.14.0" + "@rollup/rollup-linux-x64-gnu" "4.14.0" + "@rollup/rollup-linux-x64-musl" "4.14.0" + "@rollup/rollup-win32-arm64-msvc" "4.14.0" + "@rollup/rollup-win32-ia32-msvc" "4.14.0" + "@rollup/rollup-win32-x64-msvc" "4.14.0" + fsevents "~2.3.2" + rtl-css-js@^1.16.1: version "1.16.1" resolved "https://registry.yarnpkg.com/rtl-css-js/-/rtl-css-js-1.16.1.tgz#4b48b4354b0ff917a30488d95100fbf7219a3e80" @@ -16700,17 +17057,17 @@ safe-regex-test@^1.0.3: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.3.3.tgz#60df5e858788cffb1a3215e5b92e9cba61e7e133" - integrity sha512-mt5YN2F1MOZr3d/wBRcZxeFgwgkH44wVc2zohO2YF6JiOMkiXe4BYRZpSu2sO1g71mo/j16txzUhsKZlqjVGzA== +sass-loader@^14.2.0: + version "14.2.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-14.2.0.tgz#0d4440170fd9c9d93684e274a5ef73dbf55f414b" + integrity sha512-jxmjDXD9OYNDb2bp9JvopdE6QjecQY9beTWik/6sEHrsMxyo90Gyc471A4NUz60NLs4WsAh6yVtIvhLwEZcXeg== dependencies: neo-async "^2.6.2" -sass@^1.71.1: - version "1.71.1" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.71.1.tgz#dfb09c63ce63f89353777bbd4a88c0a38386ee54" - integrity sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg== +sass@^1.75.0: + version "1.75.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c" + integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -17234,10 +17591,10 @@ source-list-map@^2.0.1: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== -"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2, source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== source-map-loader@^4.0.2: version "4.0.2" @@ -17442,7 +17799,7 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.4.0 < 2": +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== @@ -19190,6 +19547,49 @@ vinyl@^3.0.0: replace-ext "^2.0.0" teex "^1.0.1" +vite-plugin-html@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/vite-plugin-html/-/vite-plugin-html-3.2.2.tgz#661834fa09015d3fda48ba694dbaa809396f5f7a" + integrity sha512-vb9C9kcdzcIo/Oc3CLZVS03dL5pDlOFuhGlZYDCJ840BhWl/0nGeZWf3Qy7NlOayscY4Cm/QRgULCQkEZige5Q== + dependencies: + "@rollup/pluginutils" "^4.2.0" + colorette "^2.0.16" + connect-history-api-fallback "^1.6.0" + consola "^2.15.3" + dotenv "^16.0.0" + dotenv-expand "^8.0.2" + ejs "^3.1.6" + fast-glob "^3.2.11" + fs-extra "^10.0.1" + html-minifier-terser "^6.1.0" + node-html-parser "^5.3.3" + pathe "^0.2.0" + +vite-plugin-mock@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/vite-plugin-mock/-/vite-plugin-mock-3.0.1.tgz#281adb7901351d230b636fbbd694573f6e2564b5" + integrity sha512-jEqRkX6Ts6z9e3sPrktcmujLGTIjxMwMZUhcgoo1q0dEMcljMBkZgJK1vMaetTm+GfOy2NkGVQOwVqLS/Vy6Uw== + dependencies: + "@types/mockjs" "^1.0.7" + bundle-require "^4.0.1" + chokidar "^3.5.3" + connect "^3.7.0" + debug "^4.3.4" + fast-glob "^3.2.12" + path-to-regexp "^6.2.1" + picocolors "^1.0.0" + +vite@^5.2.8: + version "5.2.8" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.8.tgz#a99e09939f1a502992381395ce93efa40a2844aa" + integrity sha512-OyZR+c1CE8yeHw5V5t59aXsUPPVTHMDjEZz8MgguLL/Q7NblxhZUlTu9xSPqlsUO/y+X7dlU05jdhvyycD55DA== + dependencies: + esbuild "^0.20.1" + postcss "^8.4.38" + rollup "^4.13.0" + optionalDependencies: + fsevents "~2.3.3" + void-elements@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-3.1.0.tgz#614f7fbf8d801f0bb5f0661f5b2f5785750e4f09"