@elliemae/pui-cli 9.0.0-next.5 → 9.0.0-next.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app.tsconfig.json +3 -1
- package/dist/cjs/babel.config.js +99 -0
- package/dist/cjs/cli.js +2 -2
- package/dist/cjs/commands/build.js +4 -6
- package/dist/cjs/commands/codemod.js +1 -1
- package/dist/cjs/commands/gendoc.js +2 -2
- package/dist/cjs/commands/lint.js +27 -10
- package/dist/cjs/commands/pack.js +3 -4
- package/dist/cjs/commands/start.js +3 -3
- package/dist/cjs/commands/storybook.js +1 -1
- package/dist/cjs/commands/test.js +46 -23
- package/dist/cjs/commands/tscheck.js +3 -3
- package/dist/cjs/commands/utils.js +37 -10
- package/dist/cjs/commands/version.js +1 -1
- package/dist/cjs/commands/vitest.js +6 -11
- package/dist/cjs/index.cjs +0 -16
- package/dist/cjs/index.js +13 -11
- package/dist/cjs/lint-config/commitlint.config.js +26 -0
- package/dist/cjs/lint-config/eslint/config.js +186 -0
- package/dist/cjs/lint-config/eslint/react.js +107 -0
- package/dist/cjs/lint-config/eslint/typescript/config.js +97 -0
- package/dist/cjs/lint-config/lint-staged.config.js +2 -2
- package/dist/cjs/lint-config/prettier.config.js +31 -0
- package/dist/cjs/lint-config/stylelint.config.js +45 -0
- package/dist/cjs/monorepo/delete-merged-tags.js +2 -3
- package/dist/cjs/monorepo/set-registry-version.js +3 -3
- package/dist/cjs/monorepo/set-workspace-version.js +3 -3
- package/dist/cjs/monorepo/utils.js +1 -1
- package/dist/cjs/pui-config.js +5 -6
- package/dist/cjs/release.config.js +46 -0
- package/dist/cjs/server/appRoutes.js +5 -8
- package/dist/cjs/server/csp.js +6 -5
- package/dist/cjs/server/index.js +6 -1
- package/dist/cjs/server/logger.js +2 -2
- package/dist/cjs/server/middlewares.js +5 -5
- package/dist/cjs/server/utils.js +12 -5
- package/dist/cjs/server/wsServer.js +125 -0
- package/dist/cjs/testing/ExtendedJSDomEnv.cjs +27 -0
- package/dist/cjs/testing/extended/axe-core/getMessageAndPass.js +36 -0
- package/dist/cjs/testing/extended/axe-core/index.js +24 -0
- package/dist/cjs/testing/extended/axe-core/reporter.js +50 -0
- package/dist/cjs/testing/extended/axe-core/shouldIgnoreNodeViolation.js +31 -0
- package/dist/cjs/testing/extended/axe-core/toHaveNoViolations.js +42 -0
- package/dist/cjs/testing/jest.config.cjs +6 -2
- package/dist/cjs/testing/jest.polyfills.cjs +30 -0
- package/dist/cjs/testing/mocks/svg.js +1 -1
- package/dist/cjs/testing/setup-react-env.js +1 -1
- package/dist/cjs/testing/setup-test-env.js +0 -2
- package/dist/cjs/testing/setup-tests.js +30 -12
- package/dist/cjs/testing/vitest.config.js +10 -10
- package/dist/cjs/transpile/.swcrc +1 -1
- package/dist/cjs/transpile/esbuild.js +48 -15
- package/dist/cjs/transpile/react-shim.js +1 -1
- package/dist/cjs/update-notifier.js +3 -3
- package/dist/cjs/utils.js +4 -5
- package/dist/cjs/webpack/helpers.js +29 -23
- package/dist/cjs/webpack/webpack.base.babel.js +21 -35
- package/dist/cjs/webpack/webpack.dev.babel.js +20 -10
- package/dist/cjs/webpack/webpack.lib.base.babel.js +22 -13
- package/dist/cjs/webpack/webpack.lib.dev.babel.js +14 -18
- package/dist/cjs/webpack/webpack.lib.prod.babel.js +12 -11
- package/dist/cjs/webpack/webpack.prod.babel.js +8 -8
- package/dist/cjs/webpack/webpack.storybook.js +15 -17
- package/dist/esm/babel.config.js +79 -0
- package/dist/esm/commands/build.js +2 -4
- package/dist/esm/commands/lint.js +26 -8
- package/dist/esm/commands/pack.js +1 -2
- package/dist/esm/commands/start.js +1 -1
- package/dist/esm/commands/test.js +45 -22
- package/dist/esm/commands/utils.js +33 -6
- package/dist/esm/commands/vitest.js +5 -10
- package/dist/esm/index.cjs +0 -16
- package/dist/esm/index.js +13 -11
- package/dist/esm/lint-config/commitlint.config.js +6 -0
- package/dist/esm/lint-config/eslint/config.js +155 -0
- package/dist/esm/lint-config/eslint/react.js +76 -0
- package/dist/esm/lint-config/eslint/typescript/config.js +67 -0
- package/dist/esm/lint-config/{prettier.config.cjs → prettier.config.js} +5 -2
- package/dist/esm/lint-config/stylelint.config.js +25 -0
- package/dist/esm/monorepo/delete-merged-tags.js +2 -3
- package/dist/esm/monorepo/set-registry-version.js +1 -1
- package/dist/esm/monorepo/set-workspace-version.js +1 -1
- package/dist/esm/pui-config.js +2 -3
- package/dist/esm/release.config.js +26 -0
- package/dist/esm/server/appRoutes.js +3 -6
- package/dist/esm/server/csp.js +2 -1
- package/dist/esm/server/index.js +6 -1
- package/dist/esm/server/utils.js +11 -4
- package/dist/esm/server/wsServer.js +95 -0
- package/dist/esm/testing/ExtendedJSDomEnv.cjs +27 -0
- package/dist/esm/testing/extended/axe-core/getMessageAndPass.js +16 -0
- package/dist/esm/testing/extended/axe-core/index.js +4 -0
- package/dist/esm/testing/extended/axe-core/reporter.js +30 -0
- package/dist/esm/testing/extended/axe-core/shouldIgnoreNodeViolation.js +11 -0
- package/dist/esm/testing/extended/axe-core/toHaveNoViolations.js +22 -0
- package/dist/esm/testing/jest.config.cjs +6 -2
- package/dist/esm/testing/jest.polyfills.cjs +30 -0
- package/dist/esm/testing/setup-test-env.js +0 -2
- package/dist/esm/testing/setup-tests.js +29 -11
- package/dist/esm/testing/vitest.config.js +8 -8
- package/dist/esm/transpile/.swcrc +1 -1
- package/dist/esm/transpile/esbuild.js +45 -12
- package/dist/esm/update-notifier.js +1 -1
- package/dist/esm/utils.js +2 -3
- package/dist/esm/webpack/helpers.js +25 -19
- package/dist/esm/webpack/webpack.base.babel.js +13 -27
- package/dist/esm/webpack/webpack.dev.babel.js +13 -3
- package/dist/esm/webpack/webpack.lib.base.babel.js +14 -5
- package/dist/esm/webpack/webpack.lib.dev.babel.js +9 -13
- package/dist/esm/webpack/webpack.lib.prod.babel.js +12 -7
- package/dist/esm/webpack/webpack.prod.babel.js +4 -4
- package/dist/esm/webpack/webpack.storybook.js +12 -14
- package/dist/types/docusaurus.config.d.ts +3 -0
- package/dist/types/docusaurus.config.d.ts.map +1 -0
- package/dist/types/{babel.config.d.cts → lib/babel.config.d.ts} +9 -9
- package/dist/types/lib/babel.config.d.ts.map +1 -0
- package/dist/types/lib/cli.d.ts +3 -0
- package/dist/types/lib/cli.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/build.d.ts +3 -2
- package/dist/types/lib/commands/build.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/codemod.d.ts +3 -2
- package/dist/types/lib/commands/codemod.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/gendoc.d.ts +1 -0
- package/dist/types/lib/commands/gendoc.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/lint.d.ts +4 -2
- package/dist/types/lib/commands/lint.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/pack.d.ts +3 -2
- package/dist/types/lib/commands/pack.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/start.d.ts +3 -2
- package/dist/types/lib/commands/start.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/storybook.d.ts +3 -2
- package/dist/types/lib/commands/storybook.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/test.d.ts +5 -2
- package/dist/types/lib/commands/test.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/tscheck.d.ts +3 -2
- package/dist/types/lib/commands/tscheck.d.ts.map +1 -0
- package/dist/types/lib/commands/utils.d.ts +39 -0
- package/dist/types/lib/commands/utils.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/version.d.ts +3 -2
- package/dist/types/lib/commands/version.d.ts.map +1 -0
- package/dist/types/{commands → lib/commands}/vitest.d.ts +3 -2
- package/dist/types/lib/commands/vitest.d.ts.map +1 -0
- package/dist/types/lib/index.d.cts +4 -0
- package/dist/types/lib/index.d.cts.map +1 -0
- package/dist/types/{index.d.ts → lib/index.d.ts} +11 -8
- package/dist/types/lib/index.d.ts.map +1 -0
- package/dist/types/lib/lint-config/commitlint.config.d.ts +5 -0
- package/dist/types/lib/lint-config/commitlint.config.d.ts.map +1 -0
- package/dist/types/lib/lint-config/eslint/config.d.ts +2 -0
- package/dist/types/lib/lint-config/eslint/config.d.ts.map +1 -0
- package/dist/types/lib/lint-config/eslint/react.d.ts +2 -0
- package/dist/types/lib/lint-config/eslint/react.d.ts.map +1 -0
- package/dist/types/lib/lint-config/eslint/typescript/config.d.ts +2 -0
- package/dist/types/lib/lint-config/eslint/typescript/config.d.ts.map +1 -0
- package/dist/types/{lint-config → lib/lint-config}/lint-staged.config.d.ts +1 -0
- package/dist/types/lib/lint-config/lint-staged.config.d.ts.map +1 -0
- package/dist/types/lib/lint-config/prettier.config.d.ts +3 -0
- package/dist/types/lib/lint-config/prettier.config.d.ts.map +1 -0
- package/dist/types/lib/lint-config/stylelint.config.d.ts +14 -0
- package/dist/types/lib/lint-config/stylelint.config.d.ts.map +1 -0
- package/dist/types/{monorepo → lib/monorepo}/delete-merged-tags.d.ts +1 -0
- package/dist/types/lib/monorepo/delete-merged-tags.d.ts.map +1 -0
- package/dist/types/{monorepo → lib/monorepo}/set-registry-version.d.ts +1 -0
- package/dist/types/lib/monorepo/set-registry-version.d.ts.map +1 -0
- package/dist/types/{monorepo → lib/monorepo}/set-workspace-version.d.ts +1 -0
- package/dist/types/lib/monorepo/set-workspace-version.d.ts.map +1 -0
- package/dist/types/{monorepo → lib/monorepo}/utils.d.cts +1 -0
- package/dist/types/lib/monorepo/utils.d.cts.map +1 -0
- package/dist/types/{monorepo → lib/monorepo}/utils.d.ts +1 -0
- package/dist/types/lib/monorepo/utils.d.ts.map +1 -0
- package/dist/types/lib/pui-config.d.ts +2 -0
- package/dist/types/lib/pui-config.d.ts.map +1 -0
- package/dist/types/lib/release.config.d.ts +11 -0
- package/dist/types/lib/release.config.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/appRoutes.d.ts +1 -0
- package/dist/types/lib/server/appRoutes.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/csp.d.ts +3 -2
- package/dist/types/lib/server/csp.d.ts.map +1 -0
- package/dist/types/lib/server/index.d.ts +2 -0
- package/dist/types/lib/server/index.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/logger.d.ts +1 -0
- package/dist/types/lib/server/logger.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/middlewares.d.ts +1 -0
- package/dist/types/lib/server/middlewares.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/utils.d.ts +2 -0
- package/dist/types/lib/server/utils.d.ts.map +1 -0
- package/dist/types/lib/server/wsServer.d.ts +14 -0
- package/dist/types/lib/server/wsServer.d.ts.map +1 -0
- package/dist/types/lib/testing/ExtendedJSDomEnv.d.cts +6 -0
- package/dist/types/lib/testing/ExtendedJSDomEnv.d.cts.map +1 -0
- package/dist/types/lib/testing/extended/axe-core/getMessageAndPass.d.ts +9 -0
- package/dist/types/lib/testing/extended/axe-core/getMessageAndPass.d.ts.map +1 -0
- package/dist/types/lib/testing/extended/axe-core/index.d.ts +2 -0
- package/dist/types/lib/testing/extended/axe-core/index.d.ts.map +1 -0
- package/dist/types/lib/testing/extended/axe-core/reporter.d.ts +3 -0
- package/dist/types/lib/testing/extended/axe-core/reporter.d.ts.map +1 -0
- package/dist/types/lib/testing/extended/axe-core/shouldIgnoreNodeViolation.d.ts +3 -0
- package/dist/types/lib/testing/extended/axe-core/shouldIgnoreNodeViolation.d.ts.map +1 -0
- package/dist/types/lib/testing/extended/axe-core/toHaveNoViolations.d.ts +13 -0
- package/dist/types/lib/testing/extended/axe-core/toHaveNoViolations.d.ts.map +1 -0
- package/dist/types/lib/testing/jest.config.d.cts +46 -0
- package/dist/types/lib/testing/jest.config.d.cts.map +1 -0
- package/dist/types/{testing → lib/testing}/jest.node.config.d.cts +5 -0
- package/dist/types/lib/testing/jest.node.config.d.cts.map +1 -0
- package/dist/types/lib/testing/jest.polyfills.d.cts +2 -0
- package/dist/types/lib/testing/jest.polyfills.d.cts.map +1 -0
- package/dist/types/lib/testing/mocks/axios.d.ts +18 -0
- package/dist/types/lib/testing/mocks/axios.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/cssModule.d.ts +1 -0
- package/dist/types/lib/testing/mocks/cssModule.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/html.d.ts +1 -0
- package/dist/types/lib/testing/mocks/html.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/image.d.ts +1 -0
- package/dist/types/lib/testing/mocks/image.d.ts.map +1 -0
- package/dist/types/lib/testing/mocks/matchMedia.d.ts +2 -0
- package/dist/types/lib/testing/mocks/matchMedia.d.ts.map +1 -0
- package/dist/types/lib/testing/mocks/pui-app-loader.d.ts +2 -0
- package/dist/types/lib/testing/mocks/pui-app-loader.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/pui-diagnostics.d.ts +14 -13
- package/dist/types/lib/testing/mocks/pui-diagnostics.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/pui-user-monitoring.d.ts +1 -0
- package/dist/types/lib/testing/mocks/pui-user-monitoring.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/retry-axios.d.ts +1 -0
- package/dist/types/lib/testing/mocks/retry-axios.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/svg.d.ts +1 -0
- package/dist/types/lib/testing/mocks/svg.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/mocks/webpack-hmr.d.ts +1 -0
- package/dist/types/lib/testing/mocks/webpack-hmr.d.ts.map +1 -0
- package/dist/types/{testing → lib/testing}/resolver.d.cts +1 -0
- package/dist/types/lib/testing/resolver.d.cts.map +1 -0
- package/dist/types/lib/testing/setup-react-env.d.ts +2 -0
- package/dist/types/lib/testing/setup-react-env.d.ts.map +1 -0
- package/dist/types/lib/testing/setup-test-env.d.ts +2 -0
- package/dist/types/lib/testing/setup-test-env.d.ts.map +1 -0
- package/dist/types/lib/testing/setup-tests.d.ts +2 -0
- package/dist/types/lib/testing/setup-tests.d.ts.map +1 -0
- package/dist/types/lib/testing/vitest.config.d.ts +2 -0
- package/dist/types/lib/testing/vitest.config.d.ts.map +1 -0
- package/dist/types/lib/tests/basic.test.d.ts +1 -0
- package/dist/types/lib/tests/basic.test.d.ts.map +1 -0
- package/dist/types/{transpile → lib/transpile}/esbuild.d.ts +4 -3
- package/dist/types/lib/transpile/esbuild.d.ts.map +1 -0
- package/dist/types/{transpile → lib/transpile}/react-shim.d.ts +1 -0
- package/dist/types/lib/transpile/react-shim.d.ts.map +1 -0
- package/dist/types/lib/transpile/swcrc.config.d.cts +2 -0
- package/dist/types/lib/transpile/swcrc.config.d.cts.map +1 -0
- package/dist/types/lib/typedoc.d.cts +4 -0
- package/dist/types/lib/typedoc.d.cts.map +1 -0
- package/dist/types/{update-notifier.d.ts → lib/update-notifier.d.ts} +1 -0
- package/dist/types/lib/update-notifier.d.ts.map +1 -0
- package/dist/types/{utils.d.cts → lib/utils.d.cts} +1 -0
- package/dist/types/lib/utils.d.cts.map +1 -0
- package/dist/types/{utils.d.ts → lib/utils.d.ts} +1 -0
- package/dist/types/lib/utils.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/helpers.d.ts +5 -1
- package/dist/types/lib/webpack/helpers.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.base.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.base.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.dev.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.dev.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.lib.base.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.lib.dev.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.lib.dev.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.lib.prod.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.prod.babel.d.ts +1 -0
- package/dist/types/lib/webpack/webpack.prod.babel.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/webpack.storybook.d.ts +1 -1
- package/dist/types/lib/webpack/webpack.storybook.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -0
- package/library.tsconfig.json +6 -1
- package/nx.json +97 -0
- package/package.json +210 -194
- package/dist/cjs/babel.config.cjs +0 -97
- package/dist/cjs/dummy.js +0 -1
- package/dist/cjs/lint-config/commitlint.config.cjs +0 -1
- package/dist/cjs/lint-config/eslint/common.cjs +0 -163
- package/dist/cjs/lint-config/eslint/non-react.cjs +0 -14
- package/dist/cjs/lint-config/eslint/react.cjs +0 -26
- package/dist/cjs/lint-config/eslint/typescript/common.cjs +0 -49
- package/dist/cjs/lint-config/eslint/typescript/non-react.cjs +0 -12
- package/dist/cjs/lint-config/eslint/typescript/react.cjs +0 -19
- package/dist/cjs/lint-config/prettier.config.cjs +0 -8
- package/dist/cjs/lint-config/stylelint.config.cjs +0 -19
- package/dist/cjs/release.config.cjs +0 -24
- package/dist/esm/babel.config.cjs +0 -97
- package/dist/esm/dummy.js +0 -0
- package/dist/esm/lint-config/commitlint.config.cjs +0 -1
- package/dist/esm/lint-config/eslint/common.cjs +0 -163
- package/dist/esm/lint-config/eslint/non-react.cjs +0 -14
- package/dist/esm/lint-config/eslint/react.cjs +0 -26
- package/dist/esm/lint-config/eslint/typescript/common.cjs +0 -49
- package/dist/esm/lint-config/eslint/typescript/non-react.cjs +0 -12
- package/dist/esm/lint-config/eslint/typescript/react.cjs +0 -19
- package/dist/esm/lint-config/stylelint.config.cjs +0 -19
- package/dist/esm/release.config.cjs +0 -24
- package/dist/types/cli.d.ts +0 -2
- package/dist/types/commands/utils.d.ts +0 -17
- package/dist/types/dummy.d.ts +0 -0
- package/dist/types/index.d.cts +0 -9
- package/dist/types/lint-config/commitlint.config.d.cts +0 -4
- package/dist/types/lint-config/eslint/common.d.cts +0 -130
- package/dist/types/lint-config/eslint/non-react.d.cts +0 -96
- package/dist/types/lint-config/eslint/react.d.cts +0 -126
- package/dist/types/lint-config/eslint/typescript/common.d.cts +0 -40
- package/dist/types/lint-config/eslint/typescript/non-react.d.cts +0 -90
- package/dist/types/lint-config/eslint/typescript/react.d.cts +0 -121
- package/dist/types/lint-config/prettier.config.d.cts +0 -8
- package/dist/types/lint-config/stylelint.config.d.cts +0 -10
- package/dist/types/pui-config.d.ts +0 -1
- package/dist/types/release.config.d.cts +0 -7
- package/dist/types/server/index.d.ts +0 -1
- package/dist/types/testing/jest.config.d.cts +0 -41
- package/dist/types/testing/mocks/axios.d.ts +0 -17
- package/dist/types/testing/mocks/matchMedia.d.ts +0 -1
- package/dist/types/testing/mocks/pui-app-loader.d.ts +0 -1
- package/dist/types/testing/setup-react-env.d.ts +0 -1
- package/dist/types/testing/setup-test-env.d.ts +0 -1
- package/dist/types/testing/setup-tests.d.ts +0 -1
- package/dist/types/testing/vitest.config.d.ts +0 -1
- package/dist/types/transpile/swcrc.config.d.cts +0 -1
- package/dist/types/typedoc.d.cts +0 -3
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import globals from "globals";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
5
|
+
import js from "@eslint/js";
|
|
6
|
+
import importPlugin from "eslint-plugin-import";
|
|
7
|
+
import jest from "eslint-plugin-jest";
|
|
8
|
+
import jsdoc from "eslint-plugin-jsdoc";
|
|
9
|
+
import eslintConfigPrettier from "eslint-config-prettier";
|
|
10
|
+
import { config as tsConfig } from "./typescript/config.js";
|
|
11
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
12
|
+
const __dirname = path.dirname(__filename);
|
|
13
|
+
const compat = new FlatCompat({
|
|
14
|
+
baseDirectory: __dirname
|
|
15
|
+
});
|
|
16
|
+
const importConfig = {
|
|
17
|
+
// All eslint-plugin-import config is here
|
|
18
|
+
languageOptions: {
|
|
19
|
+
parserOptions: {
|
|
20
|
+
// Eslint doesn't supply ecmaVersion in `parser.js` `context.parserOptions`
|
|
21
|
+
// This is required to avoid ecmaVersion < 2015 error or 'import' / 'export' error
|
|
22
|
+
ecmaVersion: "latest",
|
|
23
|
+
sourceType: "module"
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
plugins: { import: importPlugin },
|
|
27
|
+
settings: {
|
|
28
|
+
// This will do the trick
|
|
29
|
+
"import/parsers": {
|
|
30
|
+
espree: [".js", ".cjs", ".mjs", ".jsx"]
|
|
31
|
+
},
|
|
32
|
+
"import/resolver": {
|
|
33
|
+
typescript: true,
|
|
34
|
+
node: true
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
rules: {
|
|
38
|
+
...importPlugin.configs["recommended"].rules
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
const e2eTestConfig = {
|
|
42
|
+
files: ["*.func.spec.js", "*.visual.spec.js"],
|
|
43
|
+
rules: {
|
|
44
|
+
"jest/valid-expect": "off"
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
const jestConfig = {
|
|
48
|
+
files: ["**/*.test.*", "**/testing/**/*.js"],
|
|
49
|
+
...jest.configs["flat/recommended"]
|
|
50
|
+
};
|
|
51
|
+
const ignores = {
|
|
52
|
+
ignores: [
|
|
53
|
+
"build/*",
|
|
54
|
+
"**/node_modules/",
|
|
55
|
+
"dist/*",
|
|
56
|
+
"reports/*",
|
|
57
|
+
"coverage/*",
|
|
58
|
+
"demo/*",
|
|
59
|
+
"docs/*",
|
|
60
|
+
"temp/*",
|
|
61
|
+
"**/vendor/*.js",
|
|
62
|
+
".docusaurus/*"
|
|
63
|
+
]
|
|
64
|
+
};
|
|
65
|
+
const options = {
|
|
66
|
+
languageOptions: {
|
|
67
|
+
ecmaVersion: "latest",
|
|
68
|
+
sourceType: "module",
|
|
69
|
+
globals: {
|
|
70
|
+
...globals.builtin,
|
|
71
|
+
...globals.browser,
|
|
72
|
+
...globals.es2021,
|
|
73
|
+
...globals.nodeBuiltin,
|
|
74
|
+
...globals.node,
|
|
75
|
+
...globals.serviceworker
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
plugins: { jsdoc },
|
|
79
|
+
settings: {
|
|
80
|
+
react: {
|
|
81
|
+
version: "detect"
|
|
82
|
+
},
|
|
83
|
+
jest: {
|
|
84
|
+
version: 28
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
const rules = {
|
|
89
|
+
"arrow-body-style": [2, "as-needed"],
|
|
90
|
+
"class-methods-use-this": 0,
|
|
91
|
+
"import/imports-first": 0,
|
|
92
|
+
"import/newline-after-import": 0,
|
|
93
|
+
"import/no-dynamic-require": 0,
|
|
94
|
+
"import/no-extraneous-dependencies": 0,
|
|
95
|
+
"import/no-named-as-default": 0,
|
|
96
|
+
"import/no-unresolved": [
|
|
97
|
+
2,
|
|
98
|
+
{ caseSensitive: true, caseSensitiveStrict: true }
|
|
99
|
+
],
|
|
100
|
+
// Tip: https://github.com/import-js/eslint-plugin-import/issues/1868
|
|
101
|
+
"import/no-webpack-loader-syntax": 0,
|
|
102
|
+
"import/prefer-default-export": 0,
|
|
103
|
+
"import/extensions": [
|
|
104
|
+
2,
|
|
105
|
+
"never",
|
|
106
|
+
{
|
|
107
|
+
json: "ignorePackages",
|
|
108
|
+
js: "ignorePackages"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
indent: [
|
|
112
|
+
2,
|
|
113
|
+
2,
|
|
114
|
+
{
|
|
115
|
+
SwitchCase: 1
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
complexity: ["error", { max: 10 }],
|
|
119
|
+
"max-depth": ["error", { max: 4 }],
|
|
120
|
+
"max-lines-per-function": 0,
|
|
121
|
+
"max-nested-callbacks": ["error", { max: 3 }],
|
|
122
|
+
"max-params": ["error", { max: 3 }],
|
|
123
|
+
"max-statements": ["error", { max: 20 }],
|
|
124
|
+
"max-len": 0,
|
|
125
|
+
"newline-per-chained-call": 0,
|
|
126
|
+
"no-confusing-arrow": 0,
|
|
127
|
+
"no-console": 1,
|
|
128
|
+
"no-param-reassign": ["error", { props: false }],
|
|
129
|
+
"no-unused-vars": 2,
|
|
130
|
+
"no-use-before-define": 0,
|
|
131
|
+
"prefer-template": 2,
|
|
132
|
+
"require-yield": 0,
|
|
133
|
+
"jsdoc/require-jsdoc": 0,
|
|
134
|
+
"eslint-comments/disable-enable-pair": ["error", { allowWholeFile: true }]
|
|
135
|
+
};
|
|
136
|
+
const config = [
|
|
137
|
+
ignores,
|
|
138
|
+
js.configs.recommended,
|
|
139
|
+
jestConfig,
|
|
140
|
+
...compat.extends("plugin:eslint-comments/recommended"),
|
|
141
|
+
...compat.extends("plugin:wdio/recommended"),
|
|
142
|
+
...compat.extends("plugin:testing-library/dom"),
|
|
143
|
+
...compat.extends("plugin:storybook/recommended"),
|
|
144
|
+
importConfig,
|
|
145
|
+
e2eTestConfig,
|
|
146
|
+
options,
|
|
147
|
+
eslintConfigPrettier,
|
|
148
|
+
{
|
|
149
|
+
rules
|
|
150
|
+
},
|
|
151
|
+
...tsConfig
|
|
152
|
+
];
|
|
153
|
+
export {
|
|
154
|
+
config
|
|
155
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
4
|
+
import { config as baseConfig } from "./config.js";
|
|
5
|
+
import reactRecommended from "eslint-plugin-react/configs/recommended";
|
|
6
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
7
|
+
const __dirname = path.dirname(__filename);
|
|
8
|
+
const compat = new FlatCompat({
|
|
9
|
+
baseDirectory: __dirname
|
|
10
|
+
});
|
|
11
|
+
const reactRules = {
|
|
12
|
+
"jsx-a11y/aria-props": 2,
|
|
13
|
+
"jsx-a11y/heading-has-content": 0,
|
|
14
|
+
"jsx-a11y/label-has-associated-control": [
|
|
15
|
+
2,
|
|
16
|
+
{
|
|
17
|
+
// NOTE: If this error triggers, either disable it or add
|
|
18
|
+
// your custom components, labels and attributes via these options
|
|
19
|
+
// See https://github.com/evcohen/eslint-plugin-jsx-a11y/blob/master/docs/rules/label-has-associated-control.md
|
|
20
|
+
controlComponents: ["Input"]
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"jsx-a11y/label-has-for": 0,
|
|
24
|
+
"jsx-a11y/mouse-events-have-key-events": 2,
|
|
25
|
+
"jsx-a11y/role-has-required-aria-props": 2,
|
|
26
|
+
"jsx-a11y/role-supports-aria-props": 2,
|
|
27
|
+
"react/destructuring-assignment": 0,
|
|
28
|
+
"react-hooks/rules-of-hooks": "error",
|
|
29
|
+
"react/jsx-closing-tag-location": 0,
|
|
30
|
+
"react/forbid-prop-types": 0,
|
|
31
|
+
"react/jsx-first-prop-new-line": [2, "multiline"],
|
|
32
|
+
"react/jsx-no-target-blank": 0,
|
|
33
|
+
"react/jsx-props-no-spreading": 0,
|
|
34
|
+
"react/jsx-uses-vars": 2,
|
|
35
|
+
"react/require-default-props": 0,
|
|
36
|
+
"react/require-extension": 0,
|
|
37
|
+
"react/self-closing-comp": 0,
|
|
38
|
+
"react/sort-comp": 0,
|
|
39
|
+
"react/react-in-jsx-scope": 0,
|
|
40
|
+
"react/jsx-filename-extension": [
|
|
41
|
+
1,
|
|
42
|
+
{ extensions: [".js", ".jsx", ".tsx", ".mdx"] }
|
|
43
|
+
],
|
|
44
|
+
"react/function-component-definition": [
|
|
45
|
+
2,
|
|
46
|
+
{ namedComponents: "arrow-function" }
|
|
47
|
+
],
|
|
48
|
+
"redux-saga/no-yield-in-race": 2,
|
|
49
|
+
"redux-saga/yield-effects": 2
|
|
50
|
+
};
|
|
51
|
+
const reactRecommendedConfig = {
|
|
52
|
+
...reactRecommended,
|
|
53
|
+
languageOptions: {
|
|
54
|
+
...reactRecommended.languageOptions
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
const addFileOverride = (configs) => configs.map((config2) => ({
|
|
58
|
+
...config2,
|
|
59
|
+
files: ["*.jsx", "*.tsx"]
|
|
60
|
+
}));
|
|
61
|
+
const config = [
|
|
62
|
+
...baseConfig,
|
|
63
|
+
...addFileOverride([
|
|
64
|
+
reactRecommendedConfig,
|
|
65
|
+
...compat.extends("plugin:react-hooks/recommended"),
|
|
66
|
+
...compat.extends("plugin:jsx-a11y/recommended"),
|
|
67
|
+
...compat.extends("plugin:redux-saga/recommended"),
|
|
68
|
+
...compat.extends("plugin:mdx/recommended"),
|
|
69
|
+
{
|
|
70
|
+
rules: reactRules
|
|
71
|
+
}
|
|
72
|
+
])
|
|
73
|
+
];
|
|
74
|
+
export {
|
|
75
|
+
config
|
|
76
|
+
};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import tseslint from "typescript-eslint";
|
|
2
|
+
import importPlugin from "eslint-plugin-import";
|
|
3
|
+
const importTypedConfig = {
|
|
4
|
+
settings: {
|
|
5
|
+
"import/resolver": {
|
|
6
|
+
typescript: true,
|
|
7
|
+
node: true
|
|
8
|
+
}
|
|
9
|
+
},
|
|
10
|
+
rules: {
|
|
11
|
+
...importPlugin.configs["typescript"].rules
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
const rules = {
|
|
15
|
+
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
16
|
+
"@typescript-eslint/explicit-function-return-type": "off",
|
|
17
|
+
"@typescript-eslint/no-use-before-define": [
|
|
18
|
+
"error",
|
|
19
|
+
{ functions: false, classes: true, variables: true, typedefs: true }
|
|
20
|
+
],
|
|
21
|
+
"@typescript-eslint/unbound-method": [
|
|
22
|
+
"error",
|
|
23
|
+
{
|
|
24
|
+
ignoreStatic: true
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"@typescript-eslint/no-floating-promises": [
|
|
28
|
+
"error",
|
|
29
|
+
{
|
|
30
|
+
ignoreIIFE: true
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
};
|
|
34
|
+
const options = {
|
|
35
|
+
languageOptions: {
|
|
36
|
+
parserOptions: {
|
|
37
|
+
tsconfigRootDir: process.cwd(),
|
|
38
|
+
project: true
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
settings: {
|
|
42
|
+
"import/resolver": {
|
|
43
|
+
typescript: {
|
|
44
|
+
alwaysTryTypes: true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"import/parsers": {
|
|
48
|
+
"@typescript-eslint/parser": [".ts", ".tsx"]
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const addFileOverride = (configs) => configs.map((config2) => ({
|
|
53
|
+
...config2,
|
|
54
|
+
files: ["*.ts", "*.tsx"]
|
|
55
|
+
}));
|
|
56
|
+
const config = addFileOverride([
|
|
57
|
+
options,
|
|
58
|
+
...tseslint.configs.recommendedTypeChecked,
|
|
59
|
+
...tseslint.configs.stylisticTypeChecked,
|
|
60
|
+
importTypedConfig,
|
|
61
|
+
{
|
|
62
|
+
rules
|
|
63
|
+
}
|
|
64
|
+
]);
|
|
65
|
+
export {
|
|
66
|
+
config
|
|
67
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const stylelintConfig = {
|
|
2
|
+
ignoreFiles: [
|
|
3
|
+
"/dist/**/*",
|
|
4
|
+
"/coverage/**/*",
|
|
5
|
+
"/build/**/*",
|
|
6
|
+
"/reports/**/*",
|
|
7
|
+
"/temp/**/*",
|
|
8
|
+
"/docs/**/*",
|
|
9
|
+
"/demo/**/*",
|
|
10
|
+
"/node_modules/**/*",
|
|
11
|
+
"/vendor/**/*"
|
|
12
|
+
],
|
|
13
|
+
extends: ["stylelint-config-standard"],
|
|
14
|
+
customSyntax: "postcss-styled-syntax",
|
|
15
|
+
rules: {
|
|
16
|
+
"selector-type-no-unknown": null,
|
|
17
|
+
"function-no-unknown": null,
|
|
18
|
+
"value-no-vendor-prefix": true,
|
|
19
|
+
"property-no-vendor-prefix": true,
|
|
20
|
+
"no-empty-source": null
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
export {
|
|
24
|
+
stylelintConfig
|
|
25
|
+
};
|
|
@@ -3,7 +3,7 @@ const cwd = process.cwd();
|
|
|
3
3
|
const execaOptions = { cwd, stdio: "inherit" };
|
|
4
4
|
const semVerRegEx = /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
5
5
|
const isSemVersion = (tagName) => semVerRegEx.test(tagName);
|
|
6
|
-
const branchName = (process.env.BRANCH_NAME
|
|
6
|
+
const branchName = (process.env.BRANCH_NAME ?? "master").toLowerCase();
|
|
7
7
|
const branchTags = {
|
|
8
8
|
master: /^v?(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)$/,
|
|
9
9
|
next: /^v.*-next\.(0|[1-9]\d*)/,
|
|
@@ -12,8 +12,7 @@ const branchTags = {
|
|
|
12
12
|
};
|
|
13
13
|
const deleteTags = (cmd, filter) => {
|
|
14
14
|
const result = execSync(cmd, { cwd });
|
|
15
|
-
if (!result)
|
|
16
|
-
return;
|
|
15
|
+
if (!result) return;
|
|
17
16
|
const tags = result.toString().split("\n").join(" ");
|
|
18
17
|
execSync(`git tag -d ${filter ? filter(tags) : tags}`, { cwd });
|
|
19
18
|
};
|
|
@@ -2,7 +2,7 @@ import { readFile, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import fg from "fast-glob";
|
|
3
3
|
import normalizePath from "normalize-path";
|
|
4
4
|
import { findMonoRepoRoot } from "./utils.js";
|
|
5
|
-
const monorepoRoot = normalizePath(findMonoRepoRoot()
|
|
5
|
+
const monorepoRoot = normalizePath(findMonoRepoRoot() ?? "");
|
|
6
6
|
const setRegistryVersion = async () => {
|
|
7
7
|
const files = await fg([
|
|
8
8
|
`${monorepoRoot}/libs/*/package.json`,
|
|
@@ -2,7 +2,7 @@ import { readFile, writeFile } from "node:fs/promises";
|
|
|
2
2
|
import fg from "fast-glob";
|
|
3
3
|
import normalizePath from "normalize-path";
|
|
4
4
|
import { findMonoRepoRoot } from "./utils.js";
|
|
5
|
-
const monorepoRoot = normalizePath(findMonoRepoRoot()
|
|
5
|
+
const monorepoRoot = normalizePath(findMonoRepoRoot() ?? "");
|
|
6
6
|
const setWorkspaceVersion = async () => {
|
|
7
7
|
const files = await fg([
|
|
8
8
|
`${monorepoRoot}/libs/*/package.json`,
|
package/dist/esm/pui-config.js
CHANGED
|
@@ -3,13 +3,12 @@ import fs from "node:fs";
|
|
|
3
3
|
import { merge } from "lodash";
|
|
4
4
|
const baseConfig = {
|
|
5
5
|
esBuild: {
|
|
6
|
-
target: "
|
|
6
|
+
target: "es2022"
|
|
7
7
|
}
|
|
8
8
|
};
|
|
9
9
|
const getPUIConfig = () => {
|
|
10
10
|
const configPath = path.resolve(process.cwd(), "./pui.config.js");
|
|
11
|
-
if (!fs.existsSync(configPath))
|
|
12
|
-
return baseConfig;
|
|
11
|
+
if (!fs.existsSync(configPath)) return baseConfig;
|
|
13
12
|
const config = JSON.parse(fs.readFileSync(configPath, "utf8"));
|
|
14
13
|
return merge(baseConfig, config);
|
|
15
14
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var release_config_default = {
|
|
2
|
+
branches: [
|
|
3
|
+
"+([0-9])?(.{+([0-9]),x}).x",
|
|
4
|
+
"master",
|
|
5
|
+
"next-major",
|
|
6
|
+
{ name: "beta", prerelease: true },
|
|
7
|
+
{ name: "alpha", prerelease: true },
|
|
8
|
+
{ name: "hotfix", prerelease: true },
|
|
9
|
+
{ name: "next", prerelease: true }
|
|
10
|
+
],
|
|
11
|
+
plugins: [
|
|
12
|
+
"@semantic-release/commit-analyzer",
|
|
13
|
+
"@semantic-release/release-notes-generator",
|
|
14
|
+
[
|
|
15
|
+
"@semantic-release/changelog",
|
|
16
|
+
{
|
|
17
|
+
changelogTitle: "# Changelog\n\nAll notable changes to this project will be documented in this file. See\n[Conventional Commits](https://conventionalcommits.org) for commit guidelines."
|
|
18
|
+
}
|
|
19
|
+
],
|
|
20
|
+
"@semantic-release/npm",
|
|
21
|
+
"@semantic-release/github"
|
|
22
|
+
]
|
|
23
|
+
};
|
|
24
|
+
export {
|
|
25
|
+
release_config_default as default
|
|
26
|
+
};
|
|
@@ -6,14 +6,12 @@ const serviceEndpoints = /\.endpoint\.js$/;
|
|
|
6
6
|
const getFilesMatching = (filePattern) => {
|
|
7
7
|
const getFiles = (dir) => {
|
|
8
8
|
let routeFiles = [];
|
|
9
|
-
if (!fs.existsSync(dir))
|
|
10
|
-
return routeFiles;
|
|
9
|
+
if (!fs.existsSync(dir)) return routeFiles;
|
|
11
10
|
fs.readdirSync(dir).forEach((file) => {
|
|
12
11
|
const fullPath = path.join(dir, file);
|
|
13
12
|
if (fs.lstatSync(fullPath).isDirectory()) {
|
|
14
13
|
routeFiles = routeFiles.concat(getFiles(fullPath));
|
|
15
|
-
} else if (filePattern.test(fullPath))
|
|
16
|
-
routeFiles.push(fullPath);
|
|
14
|
+
} else if (filePattern.test(fullPath)) routeFiles.push(fullPath);
|
|
17
15
|
});
|
|
18
16
|
return routeFiles;
|
|
19
17
|
};
|
|
@@ -32,8 +30,7 @@ const loadRoutes = async (app) => {
|
|
|
32
30
|
const routeFileURL = pathToFileURL(routeFile).href;
|
|
33
31
|
const { default: init } = await import(routeFileURL);
|
|
34
32
|
try {
|
|
35
|
-
if (typeof init === "function")
|
|
36
|
-
init(app);
|
|
33
|
+
if (typeof init === "function") init(app);
|
|
37
34
|
} catch (err) {
|
|
38
35
|
console.error(
|
|
39
36
|
`unable to load routes from ${routeFile}. ${err.message}`
|
package/dist/esm/server/csp.js
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
+
import crypto from "crypto";
|
|
3
4
|
import express from "express";
|
|
4
5
|
import cspPolicy from "helmet-csp";
|
|
5
|
-
import crypto from "crypto";
|
|
6
6
|
const CSP_REPORT_URI = "/diagnostics/v1/csp";
|
|
7
7
|
const sources = [
|
|
8
8
|
"'self'",
|
|
9
9
|
"http://localhost:*",
|
|
10
|
+
"ws://localhost:*",
|
|
10
11
|
"*.elliemae.io",
|
|
11
12
|
"*.elliemae.com",
|
|
12
13
|
"*.elliservices.com",
|
package/dist/esm/server/index.js
CHANGED
|
@@ -4,8 +4,9 @@ import {
|
|
|
4
4
|
setupDefaultMiddlewares,
|
|
5
5
|
setupAdditionalMiddlewars
|
|
6
6
|
} from "./middlewares.js";
|
|
7
|
-
import { port, host } from "./utils.js";
|
|
7
|
+
import { port, wsPort, host } from "./utils.js";
|
|
8
8
|
import { loadRoutes } from "./appRoutes.js";
|
|
9
|
+
import { createWSServer } from "./wsServer.js";
|
|
9
10
|
(async function startServer() {
|
|
10
11
|
const app = express();
|
|
11
12
|
setupDefaultMiddlewares(app);
|
|
@@ -17,4 +18,8 @@ import { loadRoutes } from "./appRoutes.js";
|
|
|
17
18
|
logger.error(err);
|
|
18
19
|
process.exit(1);
|
|
19
20
|
});
|
|
21
|
+
const { wsServer } = await createWSServer({
|
|
22
|
+
port: wsPort
|
|
23
|
+
});
|
|
24
|
+
app.locals.wsServer = wsServer;
|
|
20
25
|
})();
|
package/dist/esm/server/utils.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import minimist from "minimist";
|
|
2
|
-
const argv = minimist(
|
|
2
|
+
const argv = minimist(
|
|
3
|
+
process.argv.slice(2)
|
|
4
|
+
);
|
|
3
5
|
const getCWD = () => process.cwd();
|
|
4
6
|
const port = parseInt(
|
|
5
|
-
argv.port
|
|
7
|
+
argv.port ?? process.env.port ?? process.env.PORT ?? "3000",
|
|
8
|
+
10
|
|
9
|
+
);
|
|
10
|
+
const host = argv.host ?? process.env.HOST ?? "localhost";
|
|
11
|
+
const wsPort = parseInt(
|
|
12
|
+
argv.wsport ?? process.env.wsport ?? process.env.WSPORT ?? "5000",
|
|
6
13
|
10
|
|
7
14
|
);
|
|
8
|
-
const host = argv.host || process.env.HOST || "localhost";
|
|
9
15
|
export {
|
|
10
16
|
getCWD,
|
|
11
17
|
host,
|
|
12
|
-
port
|
|
18
|
+
port,
|
|
19
|
+
wsPort
|
|
13
20
|
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import * as wsLib from "ws";
|
|
3
|
+
const PING_INTERVAL = 3e4;
|
|
4
|
+
const DEFAULT_PORT = 5001;
|
|
5
|
+
const onSocketError = (err) => {
|
|
6
|
+
console.error(err);
|
|
7
|
+
};
|
|
8
|
+
const authenticate = (token, cb) => {
|
|
9
|
+
if (!token) cb(4401);
|
|
10
|
+
else cb();
|
|
11
|
+
};
|
|
12
|
+
const getAuthToken = (protocols) => {
|
|
13
|
+
const authProtocol = protocols.find(
|
|
14
|
+
(protocol) => protocol.startsWith("auth--")
|
|
15
|
+
);
|
|
16
|
+
if (!authProtocol) return "";
|
|
17
|
+
return authProtocol.split("--")[1]?.trim?.();
|
|
18
|
+
};
|
|
19
|
+
const createWSServer = ({
|
|
20
|
+
port = DEFAULT_PORT,
|
|
21
|
+
pingInterval = PING_INTERVAL,
|
|
22
|
+
onOpen
|
|
23
|
+
}) => {
|
|
24
|
+
let isAlive = false;
|
|
25
|
+
const heartbeat = () => {
|
|
26
|
+
isAlive = true;
|
|
27
|
+
};
|
|
28
|
+
const httpServer = http.createServer();
|
|
29
|
+
const wsServer = new wsLib.WebSocketServer({ noServer: true });
|
|
30
|
+
httpServer.on("upgrade", (req, socket, head) => {
|
|
31
|
+
socket.on("error", onSocketError);
|
|
32
|
+
wsServer.handleUpgrade(req, socket, head, (ws) => {
|
|
33
|
+
const protocols = req.headers["sec-websocket-protocol"]?.split(",");
|
|
34
|
+
if (!protocols) {
|
|
35
|
+
console.error("no protocols");
|
|
36
|
+
ws.close(4401, "unauthorized");
|
|
37
|
+
socket.destroy();
|
|
38
|
+
socket.removeListener("error", onSocketError);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
authenticate(getAuthToken(protocols) || "", (errCode) => {
|
|
42
|
+
if (errCode) {
|
|
43
|
+
switch (errCode) {
|
|
44
|
+
case 4401:
|
|
45
|
+
ws.close(errCode, "unauthorized");
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
ws.close(4400, "Unknown error");
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
socket.destroy();
|
|
52
|
+
socket.removeListener("error", onSocketError);
|
|
53
|
+
} else {
|
|
54
|
+
socket.removeListener("error", onSocketError);
|
|
55
|
+
wsServer.emit("connection", ws, req);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
wsServer.on("connection", (ws) => {
|
|
61
|
+
isAlive = true;
|
|
62
|
+
ws.on("error", console.error);
|
|
63
|
+
ws.on("pong", () => {
|
|
64
|
+
heartbeat();
|
|
65
|
+
});
|
|
66
|
+
ws.on("message", (message) => {
|
|
67
|
+
console.log(
|
|
68
|
+
"message from client:",
|
|
69
|
+
JSON.parse(message)
|
|
70
|
+
);
|
|
71
|
+
ws.send(JSON.stringify(JSON.parse(message)));
|
|
72
|
+
});
|
|
73
|
+
console.log("client connected");
|
|
74
|
+
onOpen?.(ws);
|
|
75
|
+
});
|
|
76
|
+
const interval = setInterval(() => {
|
|
77
|
+
wsServer.clients.forEach((ws) => {
|
|
78
|
+
if (isAlive === false) ws.terminate();
|
|
79
|
+
isAlive = false;
|
|
80
|
+
ws.ping();
|
|
81
|
+
});
|
|
82
|
+
}, pingInterval);
|
|
83
|
+
wsServer.on("close", function close() {
|
|
84
|
+
clearInterval(interval);
|
|
85
|
+
});
|
|
86
|
+
return new Promise((resolve) => {
|
|
87
|
+
httpServer.listen(port, () => {
|
|
88
|
+
console.log(`Websocket server listening on port ${port}`);
|
|
89
|
+
return resolve({ httpServer, wsServer });
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
};
|
|
93
|
+
export {
|
|
94
|
+
createWSServer
|
|
95
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const { TestEnvironment } = require('jest-environment-jsdom');
|
|
2
|
+
|
|
3
|
+
// ICE platform is meant to be run on node > 18
|
|
4
|
+
// "jest-environment-jsdom": "~29.6.3" is instead meant to support node >16
|
|
5
|
+
// features that are supported since node 17 & 18 are not supported in jsdom env
|
|
6
|
+
// the limitation is not relevant for us since we are already running on node 18 anyway,
|
|
7
|
+
// this "ExtendedJSDomEnv" is an extension of the
|
|
8
|
+
// jest.config.cjs
|
|
9
|
+
// {
|
|
10
|
+
// ...
|
|
11
|
+
// testEnvironment: 'jsdom'
|
|
12
|
+
// ...
|
|
13
|
+
// }
|
|
14
|
+
// that actually uses node 18 features that are not supported in "jest-environment-jsdom": "~29.6.3"
|
|
15
|
+
|
|
16
|
+
// https://github.com/facebook/jest/blob/v29.4.3/website/versioned_docs/version-29.4/Configuration.md#testenvironment-string
|
|
17
|
+
class FixJSDOMEnvironment extends TestEnvironment {
|
|
18
|
+
constructor(...args) {
|
|
19
|
+
super(...args);
|
|
20
|
+
|
|
21
|
+
// From here on we are using "node" (currently running version of it) to polyfill jsdom this.global
|
|
22
|
+
|
|
23
|
+
// FIXME https://github.com/jsdom/jsdom/issues/3363
|
|
24
|
+
if (structuredClone) this.global.structuredClone = structuredClone;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
module.exports = FixJSDOMEnvironment;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { matcherHint } from "jest-matcher-utils";
|
|
2
|
+
import { reporter } from "./reporter.js";
|
|
3
|
+
const getMessageAndPass = (violations) => {
|
|
4
|
+
const formatedViolations = reporter(violations);
|
|
5
|
+
const pass = formatedViolations.length === 0;
|
|
6
|
+
if (pass) return { message: () => "", pass };
|
|
7
|
+
return {
|
|
8
|
+
message: () => `${matcherHint(".toHaveNoViolations")}
|
|
9
|
+
|
|
10
|
+
${formatedViolations}`,
|
|
11
|
+
pass
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
getMessageAndPass
|
|
16
|
+
};
|