@elliemae/pui-cli 9.0.0-next.6 → 9.0.0-next.61
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 +8 -3
- package/dist/cjs/babel.config.cjs +1 -12
- package/dist/cjs/build/vite.config.js +45 -0
- package/dist/cjs/cli.js +5 -3
- package/dist/cjs/commands/build.js +4 -6
- package/dist/cjs/commands/buildcdn.js +74 -0
- 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 -24
- package/dist/cjs/commands/tscheck.js +11 -4
- package/dist/cjs/commands/utils.js +45 -18
- package/dist/cjs/commands/version.js +1 -1
- package/dist/cjs/commands/vitest.js +6 -12
- package/dist/cjs/index.cjs +0 -14
- package/dist/cjs/index.js +13 -13
- package/dist/cjs/lint-config/commitlint.config.js +26 -0
- package/dist/cjs/lint-config/eslint.config.js +259 -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.cjs +2 -2
- package/dist/cjs/monorepo/utils.js +2 -2
- 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/cert.js +45 -0
- package/dist/cjs/server/certs/cert.crt +25 -0
- package/dist/cjs/server/certs/cert.csr +18 -0
- package/dist/cjs/server/certs/cert.ext +7 -0
- package/dist/cjs/server/certs/cert.key +30 -0
- package/dist/cjs/server/certs/cert.pfx +0 -0
- package/dist/cjs/server/certs/rootCA.crt +24 -0
- package/dist/cjs/server/certs/rootCA.key +30 -0
- package/dist/cjs/server/certs/rootCA.srl +1 -0
- package/dist/cjs/server/csp.js +45 -33
- package/dist/cjs/server/index.js +14 -4
- package/dist/cjs/server/logger.js +7 -4
- package/dist/cjs/server/middlewares.js +7 -7
- package/dist/cjs/server/utils.js +12 -5
- package/dist/cjs/server/wsServer.js +128 -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 +7 -4
- package/dist/cjs/testing/jest.polyfills.cjs +30 -0
- package/dist/cjs/testing/mocks/iframe.js +24 -0
- package/dist/cjs/testing/mocks/svg.js +0 -11
- package/dist/cjs/testing/resolver.cjs +0 -1
- package/dist/cjs/testing/setup-react-env.js +1 -1
- package/dist/cjs/testing/setup-tests.js +30 -12
- package/dist/cjs/testing/vitest.config.js +10 -14
- package/dist/cjs/transpile/.swcrc +2 -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.cjs +1 -1
- package/dist/cjs/utils.js +7 -6
- package/dist/cjs/webpack/csp-plugin.js +79 -0
- package/dist/cjs/webpack/csp.js +158 -0
- package/dist/cjs/webpack/helpers.js +43 -37
- package/dist/cjs/webpack/interceptor-middleware.js +125 -0
- package/dist/cjs/webpack/webpack.base.babel.js +21 -35
- package/dist/cjs/webpack/webpack.dev.babel.js +35 -13
- package/dist/cjs/webpack/webpack.lib.base.babel.js +22 -15
- package/dist/cjs/webpack/webpack.lib.dev.babel.js +14 -18
- package/dist/cjs/webpack/webpack.lib.prod.babel.js +15 -12
- package/dist/cjs/webpack/webpack.prod.babel.js +17 -10
- package/dist/cjs/webpack/webpack.storybook.js +16 -18
- package/dist/esm/babel.config.cjs +1 -12
- package/dist/esm/build/vite.config.js +25 -0
- package/dist/esm/cli.js +3 -1
- package/dist/esm/commands/build.js +2 -4
- package/dist/esm/commands/buildcdn.js +43 -0
- 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 -23
- package/dist/esm/commands/tscheck.js +8 -1
- package/dist/esm/commands/utils.js +41 -14
- package/dist/esm/commands/vitest.js +5 -11
- package/dist/esm/index.cjs +0 -14
- package/dist/esm/index.js +10 -10
- package/dist/esm/lint-config/commitlint.config.js +6 -0
- package/dist/esm/lint-config/eslint.config.js +228 -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/monorepo/utils.cjs +2 -2
- package/dist/esm/monorepo/utils.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/cert.js +14 -0
- package/dist/esm/server/certs/cert.crt +25 -0
- package/dist/esm/server/certs/cert.csr +18 -0
- package/dist/esm/server/certs/cert.ext +7 -0
- package/dist/esm/server/certs/cert.key +30 -0
- package/dist/esm/server/certs/cert.pfx +0 -0
- package/dist/esm/server/certs/rootCA.crt +24 -0
- package/dist/esm/server/certs/rootCA.key +30 -0
- package/dist/esm/server/certs/rootCA.srl +1 -0
- package/dist/esm/server/csp.js +42 -30
- package/dist/esm/server/index.js +14 -4
- package/dist/esm/server/logger.js +5 -2
- package/dist/esm/server/middlewares.js +2 -2
- package/dist/esm/server/utils.js +11 -4
- package/dist/esm/server/wsServer.js +98 -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 +7 -4
- package/dist/esm/testing/jest.polyfills.cjs +30 -0
- package/dist/esm/testing/mocks/iframe.js +4 -0
- package/dist/esm/testing/mocks/svg.js +0 -1
- package/dist/esm/testing/resolver.cjs +0 -1
- package/dist/esm/testing/setup-tests.js +29 -11
- package/dist/esm/testing/vitest.config.js +9 -12
- package/dist/esm/transpile/.swcrc +2 -1
- package/dist/esm/transpile/esbuild.js +45 -12
- package/dist/esm/update-notifier.js +1 -1
- package/dist/esm/utils.cjs +1 -1
- package/dist/esm/utils.js +5 -4
- package/dist/esm/webpack/csp-plugin.js +49 -0
- package/dist/esm/webpack/csp.js +128 -0
- package/dist/esm/webpack/helpers.js +39 -33
- package/dist/esm/webpack/interceptor-middleware.js +105 -0
- package/dist/esm/webpack/webpack.base.babel.js +13 -27
- package/dist/esm/webpack/webpack.dev.babel.js +28 -6
- package/dist/esm/webpack/webpack.lib.base.babel.js +14 -7
- package/dist/esm/webpack/webpack.lib.dev.babel.js +9 -13
- package/dist/esm/webpack/webpack.lib.prod.babel.js +15 -8
- package/dist/esm/webpack/webpack.prod.babel.js +13 -6
- package/dist/esm/webpack/webpack.storybook.js +13 -15
- package/dist/types/docusaurus.config.d.ts +3 -0
- package/dist/types/docusaurus.config.d.ts.map +1 -0
- package/dist/types/eslint.config.d.ts +3 -0
- package/dist/types/eslint.config.d.ts.map +1 -0
- package/dist/types/{babel.config.d.cts → lib/babel.config.d.cts} +8 -7
- package/dist/types/lib/babel.config.d.cts.map +1 -0
- package/dist/types/lib/build/vite.config.d.ts +3 -0
- package/dist/types/lib/build/vite.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/lib/commands/buildcdn.d.ts +3 -0
- package/dist/types/lib/commands/buildcdn.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 +40 -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 +5 -0
- package/dist/types/lib/index.d.cts.map +1 -0
- package/dist/types/{index.d.ts → lib/index.d.ts} +9 -7
- 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 +3 -0
- package/dist/types/lib/lint-config/eslint.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/lib/server/cert.d.ts +5 -0
- package/dist/types/lib/server/cert.d.ts.map +1 -0
- package/dist/types/{server → lib/server}/csp.d.ts +3 -3
- 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 +47 -0
- package/dist/types/lib/testing/jest.config.d.cts.map +1 -0
- package/dist/types/{testing → lib/testing}/jest.node.config.d.cts +7 -1
- 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/lib/testing/mocks/iframe.d.ts +3 -0
- package/dist/types/lib/testing/mocks/iframe.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-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/{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} +2 -1
- package/dist/types/lib/utils.d.cts.map +1 -0
- package/dist/types/lib/utils.d.ts +5 -0
- package/dist/types/lib/utils.d.ts.map +1 -0
- package/dist/types/lib/webpack/csp-plugin.d.ts +33 -0
- package/dist/types/lib/webpack/csp-plugin.d.ts.map +1 -0
- package/dist/types/lib/webpack/csp.d.ts +66 -0
- package/dist/types/lib/webpack/csp.d.ts.map +1 -0
- package/dist/types/{webpack → lib/webpack}/helpers.d.ts +5 -2
- package/dist/types/lib/webpack/helpers.d.ts.map +1 -0
- package/dist/types/lib/webpack/interceptor-middleware.d.ts +11 -0
- package/dist/types/lib/webpack/interceptor-middleware.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 +13 -5
- package/nx.json +97 -0
- package/package.json +228 -210
- 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/cjs/testing/setup-test-env.js +0 -8
- 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/esm/testing/setup-test-env.js +0 -7
- 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
- package/dist/types/utils.d.ts +0 -4
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var csp_plugin_exports = {};
|
|
30
|
+
__export(csp_plugin_exports, {
|
|
31
|
+
CspPlugin: () => CspPlugin
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(csp_plugin_exports);
|
|
34
|
+
var import_html_webpack_plugin = __toESM(require("html-webpack-plugin"));
|
|
35
|
+
var import_csp = require("./csp.js");
|
|
36
|
+
const defaultOptions = {
|
|
37
|
+
enableUnsafeEval: false
|
|
38
|
+
};
|
|
39
|
+
class CspPlugin {
|
|
40
|
+
#options = defaultOptions;
|
|
41
|
+
/**
|
|
42
|
+
* @param {object} options Additional options for this module.
|
|
43
|
+
*/
|
|
44
|
+
constructor(options) {
|
|
45
|
+
this.#options = { ...this.#options, ...options ?? {} };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Processes HtmlWebpackPlugin's html data by adding the CSP
|
|
49
|
+
* @param _compilation
|
|
50
|
+
* @param htmlPluginData
|
|
51
|
+
* @param htmlPluginData.html
|
|
52
|
+
* @param compileCb
|
|
53
|
+
* @returns {*}
|
|
54
|
+
*/
|
|
55
|
+
processCsp(_compilation, htmlPluginData, compileCb) {
|
|
56
|
+
const cspModule = new import_csp.CSP(htmlPluginData.html);
|
|
57
|
+
cspModule.refactorSourcedScriptsForHashBasedCsp();
|
|
58
|
+
const scriptHashes = cspModule.hashAllInlineScripts();
|
|
59
|
+
const { enableUnsafeEval } = this.#options;
|
|
60
|
+
const strictCsp = import_csp.CSP.getStrictCsp(scriptHashes, {
|
|
61
|
+
enableUnsafeEval
|
|
62
|
+
});
|
|
63
|
+
cspModule.addMetaTag(strictCsp);
|
|
64
|
+
htmlPluginData.html = cspModule.serializeDom();
|
|
65
|
+
return compileCb(null, htmlPluginData);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hooks into webpack to collect assets and hash them, build the policy, and add it into our HTML template
|
|
69
|
+
* @param compiler
|
|
70
|
+
*/
|
|
71
|
+
apply(compiler) {
|
|
72
|
+
compiler.hooks.compilation.tap("CspPlugin", (compilation) => {
|
|
73
|
+
import_html_webpack_plugin.default.getCompilationHooks(compilation).beforeEmit.tapAsync(
|
|
74
|
+
"CspPlugin",
|
|
75
|
+
this.processCsp.bind(this, compilation)
|
|
76
|
+
);
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var csp_exports = {};
|
|
30
|
+
__export(csp_exports, {
|
|
31
|
+
CSP: () => CSP
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(csp_exports);
|
|
34
|
+
var crypto = __toESM(require("node:crypto"));
|
|
35
|
+
var cheerio = __toESM(require("cheerio"));
|
|
36
|
+
class CSP {
|
|
37
|
+
static HASH_FUNCTION = "sha256";
|
|
38
|
+
static INLINE_SCRIPT_SELECTOR = "script:not([src])";
|
|
39
|
+
static SOURCED_SCRIPT_SELECTOR = "script[src]";
|
|
40
|
+
$;
|
|
41
|
+
constructor(html) {
|
|
42
|
+
this.$ = cheerio.load(html);
|
|
43
|
+
}
|
|
44
|
+
serializeDom() {
|
|
45
|
+
return this.$.root().html() ?? "";
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Returns a strict Content Security Policy for mittigating XSS.
|
|
49
|
+
* For more details read csp.withgoogle.com.
|
|
50
|
+
* If you modify this CSP, make sure it has not become trivially bypassable by
|
|
51
|
+
* checking the policy using csp-evaluator.withgoogle.com.
|
|
52
|
+
* @param hashes A list of sha-256 hashes of trusted inline scripts.
|
|
53
|
+
* @param cspOptions
|
|
54
|
+
* @param enableTrustedTypes If Trusted Types should be enabled for scripts.
|
|
55
|
+
* @param enableBrowserFallbacks If fallbacks for older browsers should be
|
|
56
|
+
* added. This is will not weaken the policy as modern browsers will ignore
|
|
57
|
+
* the fallbacks.
|
|
58
|
+
* @param enableUnsafeEval If you cannot remove all uses of eval(), you can
|
|
59
|
+
* still set a strict CSP, but you will have to use the 'unsafe-eval'
|
|
60
|
+
* keyword which will make your policy slightly less secure.
|
|
61
|
+
* @param cspOptions.enableBrowserFallbacks
|
|
62
|
+
* @param cspOptions.enableTrustedTypes
|
|
63
|
+
* @param cspOptions.enableUnsafeEval
|
|
64
|
+
* @returns A strict Content Security Policy string.
|
|
65
|
+
*/
|
|
66
|
+
static getStrictCsp(hashes, cspOptions = {
|
|
67
|
+
enableUnsafeEval: false
|
|
68
|
+
}) {
|
|
69
|
+
const strictCspTemplate = {
|
|
70
|
+
// 'strict-dynamic' allows hashed scripts to create new scripts.
|
|
71
|
+
"script-src": [`'strict-dynamic'`, ...hashes ?? []],
|
|
72
|
+
// Restricts `object-src` to disable dangerous plugins like Flash.
|
|
73
|
+
"object-src": [`'none'`],
|
|
74
|
+
// Restricts `base-uri` to block the injection of `<base>` tags. This
|
|
75
|
+
// prevents attackers from changing the locations of scripts loaded from
|
|
76
|
+
// relative URLs.
|
|
77
|
+
"base-uri": [`'self'`]
|
|
78
|
+
};
|
|
79
|
+
if (cspOptions.enableUnsafeEval) {
|
|
80
|
+
strictCspTemplate["script-src"].push(`'unsafe-eval'`);
|
|
81
|
+
}
|
|
82
|
+
return Object.entries(strictCspTemplate).map(([directive, values]) => `${directive} ${values.join(" ")};`).join("");
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Enables a CSP via a meta tag at the beginning of the document.
|
|
86
|
+
* Warning: It's recommended to set CSP as HTTP response header instead of
|
|
87
|
+
* using a meta tag. Injections before the meta tag will not be covered by CSP
|
|
88
|
+
* and meta tags don't support CSP in report-only mode.
|
|
89
|
+
* @param csp A Content Security Policy string.
|
|
90
|
+
*/
|
|
91
|
+
addMetaTag(csp) {
|
|
92
|
+
let metaTag = this.$('meta[http-equiv="Content-Security-Policy"]');
|
|
93
|
+
if (!metaTag.length) {
|
|
94
|
+
metaTag = cheerio.load('<meta http-equiv="Content-Security-Policy">')(
|
|
95
|
+
"meta"
|
|
96
|
+
);
|
|
97
|
+
metaTag.prependTo(this.$("head"));
|
|
98
|
+
}
|
|
99
|
+
metaTag.attr("content", csp);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Replaces all sourced scripts with a single inline script that can be hashed
|
|
103
|
+
*/
|
|
104
|
+
refactorSourcedScriptsForHashBasedCsp() {
|
|
105
|
+
const scriptInfoList = this.$(CSP.SOURCED_SCRIPT_SELECTOR).map((_i, script) => {
|
|
106
|
+
const src = this.$(script).attr("src") ?? "";
|
|
107
|
+
const type = this.$(script).attr("type") ?? "";
|
|
108
|
+
this.$(script).remove();
|
|
109
|
+
return { src, type };
|
|
110
|
+
}).toArray().filter((info) => info.src);
|
|
111
|
+
const loaderScript = CSP.createLoaderScript(scriptInfoList);
|
|
112
|
+
if (!loaderScript) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
const newScript = cheerio.load("<script>")("script");
|
|
116
|
+
newScript.text(loaderScript);
|
|
117
|
+
newScript.appendTo(this.$("body"));
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Returns a list of hashes of all inline scripts found in the HTML document.
|
|
121
|
+
* @returns A list of sha-256 hashes of inline scripts.
|
|
122
|
+
*/
|
|
123
|
+
hashAllInlineScripts() {
|
|
124
|
+
return this.$(CSP.INLINE_SCRIPT_SELECTOR).map((_i, elem) => CSP.hashInlineScript(this.$(elem).html() ?? "")).get();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Returns JS code for dynamically loading sourced (external) scripts.
|
|
128
|
+
* @param scriptInfoList A list of objects containing src and type for scripts that should be loaded
|
|
129
|
+
* @returns JS code for loading scripts.
|
|
130
|
+
*/
|
|
131
|
+
static createLoaderScript(scriptInfoList) {
|
|
132
|
+
if (!scriptInfoList.length) {
|
|
133
|
+
return void 0;
|
|
134
|
+
}
|
|
135
|
+
return `
|
|
136
|
+
var scripts = ${JSON.stringify(scriptInfoList)};
|
|
137
|
+
scripts.forEach(function(scriptInfo) {
|
|
138
|
+
var s = document.createElement('script');
|
|
139
|
+
s.src = scriptInfo.src;
|
|
140
|
+
if (scriptInfo.type) {
|
|
141
|
+
s.type = scriptInfo.type;
|
|
142
|
+
}
|
|
143
|
+
s.async = false; // preserve execution order.
|
|
144
|
+
document.body.appendChild(s);
|
|
145
|
+
});
|
|
146
|
+
`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Calculates a CSP compatible hash of an inline script.
|
|
150
|
+
* @param scriptText Text between opening and closing script tag. Has to
|
|
151
|
+
* include whitespaces and newlines!
|
|
152
|
+
* @returns A sha-256 hash of the script.
|
|
153
|
+
*/
|
|
154
|
+
static hashInlineScript(scriptText) {
|
|
155
|
+
const hash = crypto.createHash(CSP.HASH_FUNCTION).update(scriptText, "utf-8").digest("base64");
|
|
156
|
+
return `'${CSP.HASH_FUNCTION}-${hash}'`;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
@@ -34,6 +34,7 @@ __export(helpers_exports, {
|
|
|
34
34
|
getAlias: () => getAlias,
|
|
35
35
|
getAppVersion: () => getAppVersion,
|
|
36
36
|
getCompressionPlugins: () => getCompressionPlugins,
|
|
37
|
+
getLibraryAlias: () => getLibraryAlias,
|
|
37
38
|
getLibraryName: () => getLibraryName,
|
|
38
39
|
getLibraryVariableName: () => getLibraryVariableName,
|
|
39
40
|
getMediaPath: () => getMediaPath,
|
|
@@ -46,11 +47,11 @@ __export(helpers_exports, {
|
|
|
46
47
|
resolveExtensions: () => resolveExtensions
|
|
47
48
|
});
|
|
48
49
|
module.exports = __toCommonJS(helpers_exports);
|
|
49
|
-
var import_node_path = __toESM(require("node:path")
|
|
50
|
-
var import_node_fs = __toESM(require("node:fs")
|
|
51
|
-
var
|
|
52
|
-
var
|
|
53
|
-
var
|
|
50
|
+
var import_node_path = __toESM(require("node:path"));
|
|
51
|
+
var import_node_fs = __toESM(require("node:fs"));
|
|
52
|
+
var import_zlib = __toESM(require("zlib"));
|
|
53
|
+
var import_lodash = __toESM(require("lodash"));
|
|
54
|
+
var import_compression_webpack_plugin = __toESM(require("compression-webpack-plugin"));
|
|
54
55
|
var import_utils = require("../monorepo/utils.js");
|
|
55
56
|
var import_utils2 = require("../utils.js");
|
|
56
57
|
let pathSep = import_node_path.default.sep;
|
|
@@ -63,10 +64,9 @@ const getNodeModulesRegEx = (modules) => modules.map(
|
|
|
63
64
|
const excludeNodeModulesExcept = (modules) => {
|
|
64
65
|
const moduleRegExps = getNodeModulesRegEx(modules);
|
|
65
66
|
return function(modulePath) {
|
|
66
|
-
if (
|
|
67
|
-
for (
|
|
68
|
-
if (
|
|
69
|
-
return false;
|
|
67
|
+
if (modulePath.includes("node_modules")) {
|
|
68
|
+
for (const moduleRegExp of moduleRegExps)
|
|
69
|
+
if (moduleRegExp.test(modulePath)) return false;
|
|
70
70
|
return true;
|
|
71
71
|
}
|
|
72
72
|
return false;
|
|
@@ -80,7 +80,7 @@ const getLibraryName = () => {
|
|
|
80
80
|
const modifiedLibName = `emui-${libraryName.replace("@elliemae/", "").replace("pui-", "")}`;
|
|
81
81
|
return import_lodash.default.camelCase(modifiedLibName);
|
|
82
82
|
};
|
|
83
|
-
const getLibraryVariableName = () => (process.env.LIBRARY_VARIABLE_NAME
|
|
83
|
+
const getLibraryVariableName = () => (process.env.LIBRARY_VARIABLE_NAME ?? getLibraryName()).split(".");
|
|
84
84
|
const mapToFolder = (dependencies, folder) => dependencies.reduce(
|
|
85
85
|
(acc, dependency) => ({
|
|
86
86
|
[dependency]: import_node_path.default.resolve(`${folder}/${dependency.replace("$", "")}`),
|
|
@@ -89,7 +89,7 @@ const mapToFolder = (dependencies, folder) => dependencies.reduce(
|
|
|
89
89
|
{}
|
|
90
90
|
);
|
|
91
91
|
const getAlias = () => {
|
|
92
|
-
const monorepoRoot = (0, import_utils.findMonoRepoRoot)(process.cwd())
|
|
92
|
+
const monorepoRoot = (0, import_utils.findMonoRepoRoot)(process.cwd()) ?? "";
|
|
93
93
|
return mapToFolder(
|
|
94
94
|
[
|
|
95
95
|
"@babel/runtime",
|
|
@@ -103,6 +103,8 @@ const getAlias = () => {
|
|
|
103
103
|
"styled-components",
|
|
104
104
|
"immer",
|
|
105
105
|
"react-dates",
|
|
106
|
+
"react-select",
|
|
107
|
+
"react-spring",
|
|
106
108
|
"react-transition-group",
|
|
107
109
|
"@elliemae/pui-cli",
|
|
108
110
|
"@elliemae/pui-app-sdk$",
|
|
@@ -111,6 +113,15 @@ const getAlias = () => {
|
|
|
111
113
|
import_node_path.default.join(monorepoRoot, "./node_modules")
|
|
112
114
|
);
|
|
113
115
|
};
|
|
116
|
+
const getLibraryAlias = (name, alias) => {
|
|
117
|
+
const monorepoRoot = (0, import_utils.findMonoRepoRoot)(process.cwd()) ?? "";
|
|
118
|
+
const aliasPath = import_node_path.default.resolve(
|
|
119
|
+
`${import_node_path.default.join(monorepoRoot, "./node_modules")}/${alias}`
|
|
120
|
+
);
|
|
121
|
+
return {
|
|
122
|
+
[name]: aliasPath
|
|
123
|
+
};
|
|
124
|
+
};
|
|
114
125
|
const modulesToTranspile = [
|
|
115
126
|
"@elliemae/pui-*",
|
|
116
127
|
"@elliemae/ds-*",
|
|
@@ -123,12 +134,11 @@ const getUserMonitoringFileName = () => {
|
|
|
123
134
|
process.cwd(),
|
|
124
135
|
"node_modules/@elliemae/pui-user-monitoring/dist/public/js"
|
|
125
136
|
);
|
|
126
|
-
if (!import_node_fs.default.existsSync(userMonLibPath))
|
|
127
|
-
return `${libName}.js`;
|
|
137
|
+
if (!import_node_fs.default.existsSync(userMonLibPath)) return `${libName}.js`;
|
|
128
138
|
const distJSFiles = import_node_fs.default.readdirSync(userMonLibPath);
|
|
129
|
-
return distJSFiles.
|
|
130
|
-
(fName) =>
|
|
131
|
-
)
|
|
139
|
+
return distJSFiles.find(
|
|
140
|
+
(fName) => /emuiUserMonitoring+((?!chunk).)*\.js$/.exec(fName)
|
|
141
|
+
);
|
|
132
142
|
};
|
|
133
143
|
const getAppLoaderFileName = () => {
|
|
134
144
|
const libName = "emuiAppLoader";
|
|
@@ -136,12 +146,11 @@ const getAppLoaderFileName = () => {
|
|
|
136
146
|
process.cwd(),
|
|
137
147
|
"node_modules/@elliemae/pui-app-loader/dist/public/js"
|
|
138
148
|
);
|
|
139
|
-
if (!import_node_fs.default.existsSync(appLoaderLibPath))
|
|
140
|
-
return `${libName}.js`;
|
|
149
|
+
if (!import_node_fs.default.existsSync(appLoaderLibPath)) return `${libName}.js`;
|
|
141
150
|
const distJSFiles = import_node_fs.default.readdirSync(appLoaderLibPath);
|
|
142
|
-
return distJSFiles.
|
|
143
|
-
(fName) =>
|
|
144
|
-
)
|
|
151
|
+
return distJSFiles.find(
|
|
152
|
+
(fName) => /emuiAppLoader+((?!chunk).)*\.js$/.exec(fName)
|
|
153
|
+
);
|
|
145
154
|
};
|
|
146
155
|
const getDiagnosticsFileName = () => {
|
|
147
156
|
const libName = "emuiDiagnostics";
|
|
@@ -149,12 +158,11 @@ const getDiagnosticsFileName = () => {
|
|
|
149
158
|
process.cwd(),
|
|
150
159
|
"node_modules/@elliemae/pui-diagnostics/dist/public/js"
|
|
151
160
|
);
|
|
152
|
-
if (!import_node_fs.default.existsSync(libPath))
|
|
153
|
-
return `${libName}.js`;
|
|
161
|
+
if (!import_node_fs.default.existsSync(libPath)) return `${libName}.js`;
|
|
154
162
|
const distJSFiles = import_node_fs.default.readdirSync(libPath);
|
|
155
|
-
return distJSFiles.
|
|
156
|
-
(fName) =>
|
|
157
|
-
)
|
|
163
|
+
return distJSFiles.find(
|
|
164
|
+
(fName) => /emuiDiagnostics+((?!chunk).)*\.js$/.exec(fName)
|
|
165
|
+
);
|
|
158
166
|
};
|
|
159
167
|
const getENCWLoaderFileName = () => {
|
|
160
168
|
const libName = "emuiEncwLoader";
|
|
@@ -162,18 +170,16 @@ const getENCWLoaderFileName = () => {
|
|
|
162
170
|
process.cwd(),
|
|
163
171
|
"node_modules/@elliemae/encw-loader/dist/public/js"
|
|
164
172
|
);
|
|
165
|
-
if (!import_node_fs.default.existsSync(appLoaderLibPath))
|
|
166
|
-
return `${libName}.js`;
|
|
173
|
+
if (!import_node_fs.default.existsSync(appLoaderLibPath)) return `${libName}.js`;
|
|
167
174
|
const distJSFiles = import_node_fs.default.readdirSync(appLoaderLibPath);
|
|
168
|
-
return distJSFiles.
|
|
169
|
-
(fName) =>
|
|
170
|
-
)
|
|
175
|
+
return distJSFiles.find(
|
|
176
|
+
(fName) => /emuiEncwLoader+((?!chunk).)*\.js$/.exec(fName)
|
|
177
|
+
);
|
|
171
178
|
};
|
|
172
179
|
const getAppVersion = () => {
|
|
173
|
-
if (!process.env.APP_VERSION)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
return match && match[1] || LATEST_VERSION;
|
|
180
|
+
if (!process.env.APP_VERSION) return LATEST_VERSION;
|
|
181
|
+
const match = /^v?(\d+\.\d+)\..*$/.exec(process.env.APP_VERSION);
|
|
182
|
+
return match?.[1] ?? LATEST_VERSION;
|
|
177
183
|
};
|
|
178
184
|
const getPaths = (latestVersion = true) => {
|
|
179
185
|
const version = latestVersion ? LATEST_VERSION : getAppVersion();
|
|
@@ -208,9 +214,9 @@ const getCompressionPlugins = (isLibrary = false) => {
|
|
|
208
214
|
];
|
|
209
215
|
const commonConfig = {
|
|
210
216
|
test: /\.(js|css)$/,
|
|
211
|
-
exclude: !isLibrary ? excludeList : [],
|
|
212
217
|
// we are compressing all files since in aws cloudfront edge lambda, we don't want to whitelist files that are not compressed due to below limits
|
|
213
|
-
minRatio: Infinity
|
|
218
|
+
minRatio: Infinity,
|
|
219
|
+
...!isLibrary ? { exclude: excludeList } : {}
|
|
214
220
|
};
|
|
215
221
|
return [
|
|
216
222
|
new import_compression_webpack_plugin.default({
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var interceptor_middleware_exports = {};
|
|
20
|
+
__export(interceptor_middleware_exports, {
|
|
21
|
+
addCSPNonceMiddleware: () => addCSPNonceMiddleware,
|
|
22
|
+
interceptorMiddleware: () => interceptorMiddleware
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(interceptor_middleware_exports);
|
|
25
|
+
const VALID_PARAMS = ["isInterceptable", "intercept", "afterSend"];
|
|
26
|
+
const validateParams = (methods) => {
|
|
27
|
+
Object.keys(methods).forEach((k) => {
|
|
28
|
+
if (!VALID_PARAMS.includes(k)) {
|
|
29
|
+
throw new Error(`${k} isn't a valid param (${VALID_PARAMS.join(", ")})`);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
if (!("isInterceptable" in methods)) {
|
|
33
|
+
throw new Error("isInterceptable is a required param (function)");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const interceptorMiddleware = (fn) => (req, res, next) => {
|
|
37
|
+
const methods = fn(req, res);
|
|
38
|
+
validateParams(methods);
|
|
39
|
+
const originalEnd = res.end;
|
|
40
|
+
const originalWrite = res.write;
|
|
41
|
+
const chunks = [];
|
|
42
|
+
let isIntercepting;
|
|
43
|
+
let isFirstWrite = true;
|
|
44
|
+
function intercept(rawChunk, encoding) {
|
|
45
|
+
if (isFirstWrite) {
|
|
46
|
+
isFirstWrite = false;
|
|
47
|
+
isIntercepting = methods.isInterceptable();
|
|
48
|
+
}
|
|
49
|
+
if (isIntercepting) {
|
|
50
|
+
if (rawChunk) {
|
|
51
|
+
let tempChunk = rawChunk;
|
|
52
|
+
if (rawChunk !== null && !Buffer.isBuffer(tempChunk)) {
|
|
53
|
+
if (!encoding) {
|
|
54
|
+
tempChunk = Buffer.from(rawChunk);
|
|
55
|
+
} else {
|
|
56
|
+
tempChunk = Buffer.from(
|
|
57
|
+
rawChunk,
|
|
58
|
+
encoding
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
chunks.push(tempChunk);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return isIntercepting;
|
|
66
|
+
}
|
|
67
|
+
const newResWrite = (...args) => {
|
|
68
|
+
if (!intercept(args[0], args[1])) {
|
|
69
|
+
return originalWrite.apply(res, args);
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
};
|
|
73
|
+
res.write = newResWrite;
|
|
74
|
+
const afterSend = (oldBody, newBody) => {
|
|
75
|
+
if (typeof methods.afterSend === "function") {
|
|
76
|
+
process.nextTick(() => {
|
|
77
|
+
methods.afterSend?.(oldBody, newBody);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const newResEnd = (...args) => {
|
|
82
|
+
if (intercept(args[0], args[1])) {
|
|
83
|
+
isIntercepting = false;
|
|
84
|
+
const oldBody = Buffer.concat(chunks).toString("utf-8");
|
|
85
|
+
if (methods.intercept) {
|
|
86
|
+
if (typeof methods.intercept !== "function") {
|
|
87
|
+
throw new Error(
|
|
88
|
+
"`send` must be a function with the body to be sent as the only param"
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
res.removeHeader("Content-Length");
|
|
92
|
+
methods.intercept(oldBody, (newBody) => {
|
|
93
|
+
args[0] = newBody;
|
|
94
|
+
originalEnd.apply(res, args);
|
|
95
|
+
afterSend(oldBody, newBody);
|
|
96
|
+
});
|
|
97
|
+
} else {
|
|
98
|
+
afterSend(oldBody, oldBody);
|
|
99
|
+
originalEnd.apply(res, args);
|
|
100
|
+
}
|
|
101
|
+
} else {
|
|
102
|
+
originalEnd.apply(res, args);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
res.end = newResEnd;
|
|
106
|
+
next();
|
|
107
|
+
};
|
|
108
|
+
const addCSPNonceMiddleware = (middlewares) => {
|
|
109
|
+
const index = middlewares.findIndex(
|
|
110
|
+
(middleware) => middleware.name === "webpack-dev-middleware"
|
|
111
|
+
);
|
|
112
|
+
middlewares.splice(index, 0, {
|
|
113
|
+
name: "csp-nonce-middleware",
|
|
114
|
+
middleware: interceptorMiddleware((_req, res) => ({
|
|
115
|
+
// Only HTML responses will be intercepted
|
|
116
|
+
isInterceptable() {
|
|
117
|
+
return (res.get("Content-Type") ?? "").includes("text/html");
|
|
118
|
+
},
|
|
119
|
+
// Appends a paragraph at the end of the response body
|
|
120
|
+
intercept(body, send) {
|
|
121
|
+
send(body.replace(/__CSP_NONCE__/g, res.locals.cspNonce));
|
|
122
|
+
}
|
|
123
|
+
}))
|
|
124
|
+
});
|
|
125
|
+
};
|
|
@@ -31,16 +31,16 @@ __export(webpack_base_babel_exports, {
|
|
|
31
31
|
baseConfig: () => baseConfig
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(webpack_base_babel_exports);
|
|
34
|
-
var import_node_path = __toESM(require("node:path")
|
|
35
|
-
var import_webpack = __toESM(require("webpack")
|
|
34
|
+
var import_node_path = __toESM(require("node:path"));
|
|
35
|
+
var import_webpack = __toESM(require("webpack"));
|
|
36
36
|
var import_webpack_dev_server = require("webpack-dev-server");
|
|
37
|
-
var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin")
|
|
38
|
-
var import_postcss_preset_env = __toESM(require("postcss-preset-env")
|
|
39
|
-
var import_copy_webpack_plugin = __toESM(require("copy-webpack-plugin")
|
|
40
|
-
var import_moment_locales_webpack_plugin = __toESM(require("moment-locales-webpack-plugin")
|
|
37
|
+
var import_mini_css_extract_plugin = __toESM(require("mini-css-extract-plugin"));
|
|
38
|
+
var import_postcss_preset_env = __toESM(require("postcss-preset-env"));
|
|
39
|
+
var import_copy_webpack_plugin = __toESM(require("copy-webpack-plugin"));
|
|
40
|
+
var import_moment_locales_webpack_plugin = __toESM(require("moment-locales-webpack-plugin"));
|
|
41
41
|
var import_webpack_manifest_plugin = require("webpack-manifest-plugin");
|
|
42
|
-
var import_favicons_webpack_plugin = __toESM(require("favicons-webpack-plugin")
|
|
43
|
-
var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild")
|
|
42
|
+
var import_favicons_webpack_plugin = __toESM(require("favicons-webpack-plugin"));
|
|
43
|
+
var import_browserslist_to_esbuild = __toESM(require("browserslist-to-esbuild"));
|
|
44
44
|
var import_helpers = require("./helpers.js");
|
|
45
45
|
const minicssLoader = {
|
|
46
46
|
loader: import_mini_css_extract_plugin.default.loader,
|
|
@@ -129,14 +129,16 @@ const plugins = [
|
|
|
129
129
|
noErrorOnMissing: true,
|
|
130
130
|
globOptions: {
|
|
131
131
|
ignore: ["readme.md"]
|
|
132
|
-
}
|
|
132
|
+
},
|
|
133
|
+
info: { minimized: true }
|
|
133
134
|
},
|
|
134
135
|
{
|
|
135
136
|
from: "webroot",
|
|
136
137
|
noErrorOnMissing: true,
|
|
137
138
|
globOptions: {
|
|
138
139
|
ignore: ["readme.md"]
|
|
139
|
-
}
|
|
140
|
+
},
|
|
141
|
+
info: { minimized: true }
|
|
140
142
|
}
|
|
141
143
|
])
|
|
142
144
|
}),
|
|
@@ -145,7 +147,7 @@ const plugins = [
|
|
|
145
147
|
fileName: "./latest/manifest.json",
|
|
146
148
|
publicPath: "",
|
|
147
149
|
map: (file) => {
|
|
148
|
-
file.name = file.name.replace(/^latest
|
|
150
|
+
file.name = file.name.replace(/^latest(\/|\\)/, "");
|
|
149
151
|
return file;
|
|
150
152
|
}
|
|
151
153
|
}),
|
|
@@ -284,34 +286,18 @@ const baseConfig = (options) => ({
|
|
|
284
286
|
mainFields: ["browser", "module", "main"],
|
|
285
287
|
alias: {
|
|
286
288
|
...(0, import_helpers.getAlias)(),
|
|
287
|
-
...
|
|
289
|
+
...options.resolve?.alias ?? {}
|
|
288
290
|
}
|
|
289
291
|
},
|
|
292
|
+
externalsPresets: {
|
|
293
|
+
web: true
|
|
294
|
+
},
|
|
290
295
|
externals: {
|
|
291
296
|
"@elliemae/pui-user-monitoring": "emuiUserMonitoring",
|
|
292
297
|
"@elliemae/pui-app-loader": "emuiAppLoader",
|
|
293
|
-
"@elliemae/pui-diagnostics": "emuiDiagnostics"
|
|
294
|
-
react: "emuiAppReactDependencies.react",
|
|
295
|
-
"react-dom": "emuiAppReactDependencies.reactDOM",
|
|
296
|
-
"@reduxjs/toolkit": "emuiAppReactDependencies.rtk",
|
|
297
|
-
axios: "emuiAppReactDependencies.axios.default",
|
|
298
|
-
dompurify: "emuiAppReactDependencies.dompurify",
|
|
299
|
-
history: "emuiAppReactDependencies.history",
|
|
300
|
-
immer: "emuiAppReactDependencies.immer",
|
|
301
|
-
invariant: "emuiAppReactDependencies.invariant",
|
|
302
|
-
"pubsub-js": "emuiAppReactDependencies.pubsubjs",
|
|
303
|
-
"react-aria-live": "emuiAppReactDependencies.reactAriaLive",
|
|
304
|
-
"react-helmet": "emuiAppReactDependencies.reactHelmet",
|
|
305
|
-
"react-hook-form": "emuiAppReactDependencies.reactHookForm",
|
|
306
|
-
"react-redux": "emuiAppReactDependencies.reactRedux",
|
|
307
|
-
"react-router-dom": "emuiAppReactDependencies.reactRouterDOM",
|
|
308
|
-
reduxInjectors: "emuiAppReactDependencies.reduxInjectors",
|
|
309
|
-
reselect: "emuiAppReactDependencies.reselect",
|
|
310
|
-
// "styled-components": "emuiAppReactDependencies.styledComponents",
|
|
311
|
-
"styled-system": "emuiAppReactDependencies.styledSystem"
|
|
312
|
-
// "@xstyled/styled-components": "emuiAppReactDependencies.xstyled",
|
|
298
|
+
"@elliemae/pui-diagnostics": "emuiDiagnostics"
|
|
313
299
|
},
|
|
314
|
-
devtool: options.devtool
|
|
315
|
-
performance: options.performance
|
|
316
|
-
devServer: options.devServer
|
|
300
|
+
devtool: options.devtool ?? "eval-source-map",
|
|
301
|
+
performance: options.performance ?? {},
|
|
302
|
+
devServer: options.devServer ?? {}
|
|
317
303
|
});
|