@elliemae/pui-cli 9.0.0-next.52 → 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 +6 -3
- package/dist/cjs/babel.config.cjs +1 -1
- package/dist/cjs/build/vite.config.js +45 -0
- package/dist/cjs/cli.js +3 -1
- package/dist/cjs/commands/buildcdn.js +74 -0
- package/dist/cjs/commands/lint.js +1 -1
- package/dist/cjs/commands/test.js +0 -1
- package/dist/cjs/commands/tscheck.js +8 -1
- package/dist/cjs/commands/utils.js +8 -8
- package/dist/cjs/commands/vitest.js +0 -1
- package/dist/cjs/index.js +5 -7
- package/dist/cjs/lint-config/eslint.config.js +259 -0
- package/dist/cjs/lint-config/stylelint.config.js +1 -1
- package/dist/cjs/monorepo/utils.cjs +2 -2
- package/dist/cjs/monorepo/utils.js +1 -1
- 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 +40 -29
- package/dist/cjs/server/index.js +8 -3
- package/dist/cjs/server/logger.js +5 -2
- package/dist/cjs/server/middlewares.js +2 -2
- package/dist/cjs/server/wsServer.js +7 -4
- package/dist/cjs/testing/jest.config.cjs +1 -2
- package/dist/cjs/testing/jest.polyfills.cjs +1 -1
- 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/vitest.config.js +1 -5
- package/dist/cjs/transpile/.swcrc +1 -0
- package/dist/cjs/utils.cjs +1 -1
- package/dist/cjs/utils.js +3 -1
- package/dist/cjs/webpack/csp-plugin.js +79 -0
- package/dist/cjs/webpack/csp.js +158 -0
- package/dist/cjs/webpack/helpers.js +14 -14
- package/dist/cjs/webpack/interceptor-middleware.js +125 -0
- package/dist/cjs/webpack/webpack.dev.babel.js +16 -4
- package/dist/cjs/webpack/webpack.lib.base.babel.js +0 -2
- package/dist/cjs/webpack/webpack.lib.prod.babel.js +3 -1
- package/dist/cjs/webpack/webpack.prod.babel.js +12 -5
- package/dist/cjs/webpack/webpack.storybook.js +1 -1
- package/dist/esm/babel.config.cjs +1 -1
- package/dist/esm/build/vite.config.js +25 -0
- package/dist/esm/cli.js +3 -1
- package/dist/esm/commands/buildcdn.js +43 -0
- package/dist/esm/commands/lint.js +1 -1
- package/dist/esm/commands/test.js +0 -1
- package/dist/esm/commands/tscheck.js +8 -1
- package/dist/esm/commands/utils.js +8 -8
- package/dist/esm/commands/vitest.js +0 -1
- package/dist/esm/index.js +2 -4
- package/dist/esm/lint-config/eslint.config.js +228 -0
- package/dist/esm/lint-config/stylelint.config.js +1 -1
- package/dist/esm/monorepo/utils.cjs +2 -2
- package/dist/esm/monorepo/utils.js +1 -1
- 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 +40 -29
- package/dist/esm/server/index.js +8 -3
- package/dist/esm/server/logger.js +5 -2
- package/dist/esm/server/middlewares.js +2 -2
- package/dist/esm/server/wsServer.js +7 -4
- package/dist/esm/testing/jest.config.cjs +1 -2
- package/dist/esm/testing/jest.polyfills.cjs +1 -1
- 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/vitest.config.js +1 -4
- package/dist/esm/transpile/.swcrc +1 -0
- package/dist/esm/utils.cjs +1 -1
- package/dist/esm/utils.js +3 -1
- package/dist/esm/webpack/csp-plugin.js +49 -0
- package/dist/esm/webpack/csp.js +128 -0
- package/dist/esm/webpack/helpers.js +14 -14
- package/dist/esm/webpack/interceptor-middleware.js +105 -0
- package/dist/esm/webpack/webpack.dev.babel.js +16 -4
- package/dist/esm/webpack/webpack.lib.base.babel.js +0 -2
- package/dist/esm/webpack/webpack.lib.prod.babel.js +3 -1
- package/dist/esm/webpack/webpack.prod.babel.js +12 -5
- package/dist/esm/webpack/webpack.storybook.js +1 -1
- package/dist/types/eslint.config.d.ts +3 -0
- package/dist/types/eslint.config.d.ts.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/commands/build.d.ts.map +1 -1
- package/dist/types/lib/commands/buildcdn.d.ts +3 -0
- package/dist/types/lib/commands/buildcdn.d.ts.map +1 -0
- package/dist/types/lib/commands/gendoc.d.ts.map +1 -1
- package/dist/types/lib/commands/pack.d.ts.map +1 -1
- package/dist/types/lib/commands/start.d.ts.map +1 -1
- package/dist/types/lib/commands/test.d.ts.map +1 -1
- package/dist/types/lib/commands/tscheck.d.ts.map +1 -1
- package/dist/types/lib/commands/utils.d.ts +2 -1
- package/dist/types/lib/commands/utils.d.ts.map +1 -1
- package/dist/types/lib/commands/vitest.d.ts.map +1 -1
- package/dist/types/lib/index.d.ts +1 -2
- package/dist/types/lib/index.d.ts.map +1 -1
- 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/lib/server/cert.d.ts +5 -0
- package/dist/types/lib/server/cert.d.ts.map +1 -0
- package/dist/types/lib/server/csp.d.ts +0 -1
- package/dist/types/lib/server/csp.d.ts.map +1 -1
- package/dist/types/lib/server/logger.d.ts.map +1 -1
- package/dist/types/lib/server/wsServer.d.ts +2 -2
- package/dist/types/lib/server/wsServer.d.ts.map +1 -1
- package/dist/types/lib/testing/jest.config.d.cts +2 -1
- package/dist/types/lib/testing/jest.node.config.d.cts +2 -1
- package/dist/types/lib/testing/mocks/cssModule.d.ts.map +1 -1
- package/dist/types/lib/testing/mocks/html.d.ts.map +1 -1
- 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/lib/testing/mocks/image.d.ts.map +1 -1
- package/dist/types/lib/testing/mocks/svg.d.ts.map +1 -1
- package/dist/types/lib/testing/resolver.d.cts.map +1 -1
- package/dist/types/lib/testing/vitest.config.d.ts +1 -1
- package/dist/types/lib/testing/vitest.config.d.ts.map +1 -1
- package/dist/types/lib/transpile/esbuild.d.ts.map +1 -1
- package/dist/types/lib/utils.d.cts +1 -1
- package/dist/types/lib/utils.d.cts.map +1 -1
- package/dist/types/lib/utils.d.ts +2 -2
- package/dist/types/lib/utils.d.ts.map +1 -1
- 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/lib/webpack/helpers.d.ts +0 -1
- package/dist/types/lib/webpack/helpers.d.ts.map +1 -1
- 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/lib/webpack/webpack.base.babel.d.ts.map +1 -1
- package/dist/types/lib/webpack/webpack.dev.babel.d.ts.map +1 -1
- package/dist/types/lib/webpack/webpack.lib.base.babel.d.ts.map +1 -1
- package/dist/types/lib/webpack/webpack.lib.prod.babel.d.ts.map +1 -1
- package/dist/types/lib/webpack/webpack.prod.babel.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/library.tsconfig.json +8 -5
- package/package.json +146 -142
- package/dist/cjs/lint-config/eslint/config.js +0 -186
- package/dist/cjs/lint-config/eslint/react.js +0 -107
- package/dist/cjs/lint-config/eslint/typescript/config.js +0 -97
- package/dist/cjs/testing/setup-test-env.js +0 -6
- package/dist/esm/lint-config/eslint/config.js +0 -155
- package/dist/esm/lint-config/eslint/react.js +0 -76
- package/dist/esm/lint-config/eslint/typescript/config.js +0 -67
- package/dist/esm/testing/setup-test-env.js +0 -5
- package/dist/types/lib/lint-config/eslint/config.d.ts +0 -2
- package/dist/types/lib/lint-config/eslint/config.d.ts.map +0 -1
- package/dist/types/lib/lint-config/eslint/react.d.ts +0 -2
- package/dist/types/lib/lint-config/eslint/react.d.ts.map +0 -1
- package/dist/types/lib/lint-config/eslint/typescript/config.d.ts +0 -2
- package/dist/types/lib/lint-config/eslint/typescript/config.d.ts.map +0 -1
- package/dist/types/lib/testing/setup-test-env.d.ts +0 -2
- package/dist/types/lib/testing/setup-test-env.d.ts.map +0 -1
- package/dist/types/lib/tests/basic.test.d.ts +0 -1
- package/dist/types/lib/tests/basic.test.d.ts.map +0 -1
|
@@ -40,7 +40,7 @@ const readPackageLock = async () => {
|
|
|
40
40
|
const pkgLockJSON = await readFile(appPkgLockFile, "utf8");
|
|
41
41
|
const { dependencies } = JSON.parse(pkgLockJSON);
|
|
42
42
|
return (moduleName) => dependencies[moduleName]?.version || "";
|
|
43
|
-
} catch (
|
|
43
|
+
} catch (_err) {
|
|
44
44
|
console.warn("Package lock file not found");
|
|
45
45
|
return () => "";
|
|
46
46
|
}
|
|
@@ -49,7 +49,7 @@ const getSupportedBrowsers = async () => {
|
|
|
49
49
|
const { stdout } = await exec("npx --no-install browserslist", {
|
|
50
50
|
stdout: "pipe"
|
|
51
51
|
});
|
|
52
|
-
const browserVersions = stdout?.toString()?.split("\n")
|
|
52
|
+
const browserVersions = stdout?.toString()?.split("\n") ?? [];
|
|
53
53
|
return browserVersions.reduce((acc, nameVersion) => {
|
|
54
54
|
if (!nameVersion) return acc;
|
|
55
55
|
const [name, version] = nameVersion.split(" ");
|
|
@@ -95,8 +95,7 @@ const writeAppInfo = async () => {
|
|
|
95
95
|
path.join(versionedPath, "info.json"),
|
|
96
96
|
path.join(process.cwd(), "build", "public", "info.json")
|
|
97
97
|
].forEach((infoPath) => {
|
|
98
|
-
writeFile(infoPath, infoJSON).
|
|
99
|
-
}).catch((err) => console.error(err));
|
|
98
|
+
writeFile(infoPath, infoJSON).catch((err) => console.error(err));
|
|
100
99
|
});
|
|
101
100
|
};
|
|
102
101
|
const copyDir = async (src, dest) => {
|
|
@@ -123,6 +122,7 @@ const updateManifestWithVersionInfo = async (dest) => {
|
|
|
123
122
|
};
|
|
124
123
|
const updateRuntimeFile = async (src, dest, version) => {
|
|
125
124
|
const latestJSFolder = "latest/js";
|
|
125
|
+
const latestCSSFolder = "latest/css";
|
|
126
126
|
const pipe = promisify(pipeline);
|
|
127
127
|
const results = await fg([
|
|
128
128
|
path.join(src, "runtime~app.*.js").replace(/\\/g, "/")
|
|
@@ -132,16 +132,16 @@ const updateRuntimeFile = async (src, dest, version) => {
|
|
|
132
132
|
const runtimeFileName = path.basename(runtimeFilePath);
|
|
133
133
|
const destRuntimeFilePath = path.join(dest, runtimeFileName);
|
|
134
134
|
const runtimeFileData = await readFile(runtimeFilePath, "utf8");
|
|
135
|
-
if (runtimeFileData.includes(latestJSFolder)) {
|
|
135
|
+
if (runtimeFileData.includes(latestJSFolder) || runtimeFileData.includes(latestCSSFolder)) {
|
|
136
136
|
await writeFile(
|
|
137
137
|
destRuntimeFilePath,
|
|
138
|
-
runtimeFileData.replace(latestJSFolder, `${version}/js`)
|
|
138
|
+
runtimeFileData.replace(latestJSFolder, `${version}/js`).replace(latestCSSFolder, `${version}/css`)
|
|
139
139
|
);
|
|
140
140
|
const sourceMapFile = `${runtimeFilePath}.map`;
|
|
141
141
|
const sourcemap = await readFile(sourceMapFile, "utf8");
|
|
142
142
|
await writeFile(
|
|
143
143
|
`${destRuntimeFilePath}.map`,
|
|
144
|
-
sourcemap.replace(latestJSFolder, `${version}/js`)
|
|
144
|
+
sourcemap.replace(latestJSFolder, `${version}/js`).replace(latestCSSFolder, `${version}/css`)
|
|
145
145
|
);
|
|
146
146
|
const gzip = createGzip();
|
|
147
147
|
let source = createReadStream(destRuntimeFilePath);
|
|
@@ -171,7 +171,7 @@ const isPathExist = async (pathToCheck) => {
|
|
|
171
171
|
try {
|
|
172
172
|
await access(pathToCheck, constants.F_OK);
|
|
173
173
|
return true;
|
|
174
|
-
} catch (
|
|
174
|
+
} catch (_err) {
|
|
175
175
|
return false;
|
|
176
176
|
}
|
|
177
177
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { babelConfig } from "./babel.config.cjs";
|
|
2
|
-
import { config } from "./lint-config/eslint
|
|
3
|
-
import { config as config2 } from "./lint-config/eslint/react.js";
|
|
2
|
+
import { config } from "./lint-config/eslint.config.js";
|
|
4
3
|
import { stylelintConfig } from "./lint-config/stylelint.config.js";
|
|
5
4
|
import { prettierConfig } from "./lint-config/prettier.config.js";
|
|
6
5
|
import { commitlintConfig } from "./lint-config/commitlint.config.js";
|
|
@@ -12,14 +11,13 @@ import { loadRoutes } from "./server/appRoutes.js";
|
|
|
12
11
|
import { webpackFinal } from "./webpack/webpack.storybook.js";
|
|
13
12
|
export {
|
|
14
13
|
babelConfig,
|
|
15
|
-
config as baseConfig,
|
|
16
14
|
commitlintConfig,
|
|
15
|
+
config as eslintConfig,
|
|
17
16
|
jestConfig,
|
|
18
17
|
jestNodeConfig,
|
|
19
18
|
lintStagedConfig,
|
|
20
19
|
loadRoutes,
|
|
21
20
|
prettierConfig,
|
|
22
|
-
config2 as reactConfig,
|
|
23
21
|
stylelintConfig,
|
|
24
22
|
vitestConfig,
|
|
25
23
|
webpackFinal
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import globals from "globals";
|
|
4
|
+
import eslint from "@eslint/js";
|
|
5
|
+
import { FlatCompat } from "@eslint/eslintrc";
|
|
6
|
+
import { includeIgnoreFile } from "@eslint/compat";
|
|
7
|
+
import tseslint from "typescript-eslint";
|
|
8
|
+
import eslintPluginImportX from "eslint-plugin-import-x";
|
|
9
|
+
import reactPlugin from "eslint-plugin-react";
|
|
10
|
+
import reactHookPlugin from "eslint-plugin-react-hooks";
|
|
11
|
+
import jest from "eslint-plugin-jest";
|
|
12
|
+
import { configs as wdioConfig } from "eslint-plugin-wdio";
|
|
13
|
+
import testingLibraryConfig from "eslint-plugin-testing-library";
|
|
14
|
+
import storybookConfig from "eslint-plugin-storybook";
|
|
15
|
+
import prettierRecommended from "eslint-plugin-prettier/recommended";
|
|
16
|
+
import jsxA11yConfig from "eslint-plugin-jsx-a11y";
|
|
17
|
+
import * as mdx from "eslint-plugin-mdx";
|
|
18
|
+
import { createTypeScriptImportResolver } from "eslint-import-resolver-typescript";
|
|
19
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
20
|
+
const __dirname = path.dirname(__filename);
|
|
21
|
+
const gitignorePath = path.resolve(process.cwd(), ".gitignore");
|
|
22
|
+
const compat = new FlatCompat({
|
|
23
|
+
baseDirectory: __dirname
|
|
24
|
+
});
|
|
25
|
+
const ignores = {
|
|
26
|
+
ignores: [
|
|
27
|
+
"build/*",
|
|
28
|
+
"**/node_modules/",
|
|
29
|
+
"dist/*",
|
|
30
|
+
"reports/*",
|
|
31
|
+
"allure-report/*",
|
|
32
|
+
"public/*",
|
|
33
|
+
"webroot/*",
|
|
34
|
+
"cdn/*",
|
|
35
|
+
".tmp/*",
|
|
36
|
+
"coverage/*",
|
|
37
|
+
"demo/*",
|
|
38
|
+
"docs/*",
|
|
39
|
+
"temp/*",
|
|
40
|
+
"**/vendor/*.js",
|
|
41
|
+
".docusaurus/*",
|
|
42
|
+
".scannerwork/*",
|
|
43
|
+
".DS_Store/*",
|
|
44
|
+
".nx/*",
|
|
45
|
+
".idea/*",
|
|
46
|
+
"*.tgz",
|
|
47
|
+
"npm-debug.log",
|
|
48
|
+
"stats.json",
|
|
49
|
+
"!.storybook"
|
|
50
|
+
]
|
|
51
|
+
};
|
|
52
|
+
const options = {
|
|
53
|
+
languageOptions: {
|
|
54
|
+
ecmaVersion: "latest",
|
|
55
|
+
sourceType: "module",
|
|
56
|
+
globals: {
|
|
57
|
+
...globals.builtin,
|
|
58
|
+
...globals.browser,
|
|
59
|
+
...globals.es2021,
|
|
60
|
+
...globals.nodeBuiltin,
|
|
61
|
+
...globals.node,
|
|
62
|
+
...globals.serviceworker,
|
|
63
|
+
...globals.jest,
|
|
64
|
+
...globals.commonjs,
|
|
65
|
+
browser: true,
|
|
66
|
+
$: true
|
|
67
|
+
},
|
|
68
|
+
parserOptions: {
|
|
69
|
+
ecmaVersion: "latest",
|
|
70
|
+
sourceType: "module",
|
|
71
|
+
ecmaFeatures: {
|
|
72
|
+
jsx: true
|
|
73
|
+
},
|
|
74
|
+
project: true,
|
|
75
|
+
projectService: true,
|
|
76
|
+
tsconfigRootDir: process.cwd()
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
settings: {
|
|
80
|
+
react: {
|
|
81
|
+
version: "detect",
|
|
82
|
+
pragma: "React"
|
|
83
|
+
},
|
|
84
|
+
jest: {
|
|
85
|
+
version: "detect"
|
|
86
|
+
},
|
|
87
|
+
"import-x/parsers": {
|
|
88
|
+
espree: [".js", ".cjs", ".mjs", ".jsx"]
|
|
89
|
+
},
|
|
90
|
+
// "import-x/resolver": {
|
|
91
|
+
// node: {
|
|
92
|
+
// extensions: [".js", ".jsx", ".ts", ".tsx"],
|
|
93
|
+
// },
|
|
94
|
+
// typescript: true,
|
|
95
|
+
// },
|
|
96
|
+
"import/resolver-next": [
|
|
97
|
+
createTypeScriptImportResolver({
|
|
98
|
+
alwaysTryTypes: true
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const e2eTestConfig = {
|
|
104
|
+
files: ["**/*.func.spec.{js,ts}", "**/*.visual.spec.{js,ts}"],
|
|
105
|
+
extends: [wdioConfig["flat/recommended"]],
|
|
106
|
+
rules: {
|
|
107
|
+
"jest/valid-expect": "off"
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
const jestConfig = {
|
|
111
|
+
files: ["**/*.test.{js,jsx,ts,tsx}", "**/testing/**/*.{js,jsx,ts,tsx}"],
|
|
112
|
+
extends: [
|
|
113
|
+
jest.configs["flat/recommended"],
|
|
114
|
+
jest.configs["flat/style"],
|
|
115
|
+
testingLibraryConfig.configs["flat/dom"],
|
|
116
|
+
testingLibraryConfig.configs["flat/react"]
|
|
117
|
+
]
|
|
118
|
+
};
|
|
119
|
+
const sbConfig = {
|
|
120
|
+
files: ["**/*.stories.{js,jsx,ts,tsx,mdx}"],
|
|
121
|
+
extends: [storybookConfig.configs["flat/recommended"]]
|
|
122
|
+
};
|
|
123
|
+
const jsRulesConfig = {
|
|
124
|
+
rules: {
|
|
125
|
+
complexity: ["error", { max: 10 }],
|
|
126
|
+
"import-x/no-named-as-default-member": "off",
|
|
127
|
+
"import-x/no-named-as-default": "off",
|
|
128
|
+
"import-x/no-unresolved": [
|
|
129
|
+
"error",
|
|
130
|
+
{ caseSensitive: true, caseSensitiveStrict: true }
|
|
131
|
+
],
|
|
132
|
+
"import-x/extensions": [
|
|
133
|
+
"error",
|
|
134
|
+
"never",
|
|
135
|
+
{
|
|
136
|
+
json: "ignorePackages",
|
|
137
|
+
js: "ignorePackages"
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"max-depth": ["error", { max: 4 }],
|
|
141
|
+
"max-nested-callbacks": ["error", { max: 3 }],
|
|
142
|
+
"max-params": ["error", { max: 3 }],
|
|
143
|
+
"max-statements": ["error", { max: 20 }],
|
|
144
|
+
"no-console": "warn",
|
|
145
|
+
"no-param-reassign": ["error", { props: false }],
|
|
146
|
+
"no-unused-vars": "off",
|
|
147
|
+
"prefer-template": "error"
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
const tsConfig = {
|
|
151
|
+
ignores: ["**/*.{js,jsx,mjs,cjs,mdx,md}"],
|
|
152
|
+
extends: [
|
|
153
|
+
tseslint.configs.recommendedTypeChecked,
|
|
154
|
+
tseslint.configs.stylisticTypeChecked
|
|
155
|
+
],
|
|
156
|
+
rules: {
|
|
157
|
+
"@typescript-eslint/no-unused-vars": [
|
|
158
|
+
"error",
|
|
159
|
+
{
|
|
160
|
+
args: "all",
|
|
161
|
+
argsIgnorePattern: "^_",
|
|
162
|
+
caughtErrors: "all",
|
|
163
|
+
caughtErrorsIgnorePattern: "^_",
|
|
164
|
+
destructuredArrayIgnorePattern: "^_",
|
|
165
|
+
varsIgnorePattern: "^_",
|
|
166
|
+
ignoreRestSiblings: true
|
|
167
|
+
}
|
|
168
|
+
],
|
|
169
|
+
"@typescript-eslint/unbound-method": [
|
|
170
|
+
"error",
|
|
171
|
+
{
|
|
172
|
+
ignoreStatic: true
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const reactConfig = {
|
|
178
|
+
files: ["**/*.{jsx,tsx}"],
|
|
179
|
+
extends: [
|
|
180
|
+
reactPlugin.configs.flat.recommended,
|
|
181
|
+
reactPlugin.configs.flat["jsx-runtime"],
|
|
182
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
183
|
+
jsxA11yConfig.flatConfigs.recommended,
|
|
184
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment
|
|
185
|
+
...compat.extends("plugin:redux-saga/recommended")
|
|
186
|
+
],
|
|
187
|
+
languageOptions: {
|
|
188
|
+
...reactPlugin.configs.flat.recommended.languageOptions
|
|
189
|
+
},
|
|
190
|
+
plugins: {
|
|
191
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
192
|
+
"react-hooks": reactHookPlugin
|
|
193
|
+
},
|
|
194
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
195
|
+
rules: {
|
|
196
|
+
"react/prop-types": ["error", { skipUndeclared: true }],
|
|
197
|
+
"react/display-name": "off",
|
|
198
|
+
"react/function-component-definition": [
|
|
199
|
+
2,
|
|
200
|
+
{ namedComponents: "arrow-function" }
|
|
201
|
+
],
|
|
202
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
203
|
+
...reactHookPlugin.configs.recommended.rules
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
const config = tseslint.config(
|
|
207
|
+
ignores,
|
|
208
|
+
includeIgnoreFile(gitignorePath),
|
|
209
|
+
{
|
|
210
|
+
ignores: ["**/*.stories.mdx"],
|
|
211
|
+
extends: [mdx.flat]
|
|
212
|
+
},
|
|
213
|
+
eslint.configs.recommended,
|
|
214
|
+
tsConfig,
|
|
215
|
+
eslintPluginImportX.flatConfigs.recommended,
|
|
216
|
+
eslintPluginImportX.flatConfigs.typescript,
|
|
217
|
+
jestConfig,
|
|
218
|
+
prettierRecommended,
|
|
219
|
+
//jsdoc.configs["flat/recommended"],
|
|
220
|
+
reactConfig,
|
|
221
|
+
e2eTestConfig,
|
|
222
|
+
sbConfig,
|
|
223
|
+
jsRulesConfig,
|
|
224
|
+
options
|
|
225
|
+
);
|
|
226
|
+
export {
|
|
227
|
+
config
|
|
228
|
+
};
|
|
@@ -10,7 +10,7 @@ const stylelintConfig = {
|
|
|
10
10
|
"/node_modules/**/*",
|
|
11
11
|
"/vendor/**/*"
|
|
12
12
|
],
|
|
13
|
-
extends: ["stylelint-config-standard"],
|
|
13
|
+
extends: ["stylelint-config-standard", "stylelint-prettier/recommended"],
|
|
14
14
|
customSyntax: "postcss-styled-syntax",
|
|
15
15
|
rules: {
|
|
16
16
|
"selector-type-no-unknown": null,
|
|
@@ -6,13 +6,13 @@ const WORKSPACE_MANIFEST_FILENAME = 'pnpm-workspace.yaml';
|
|
|
6
6
|
|
|
7
7
|
const getPNPMWorkspaceLocation = (cwd) => {
|
|
8
8
|
let location = null;
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
for (const fileName of [WORKSPACE_MANIFEST_FILENAME, 'pnpm-workspace.yml']) {
|
|
11
11
|
try {
|
|
12
12
|
const result = execSync(`npx find-up ${fileName}`, { cwd });
|
|
13
13
|
location = result.toString().trim();
|
|
14
14
|
break;
|
|
15
|
-
} catch (
|
|
15
|
+
} catch (_err) {
|
|
16
16
|
// ignore
|
|
17
17
|
}
|
|
18
18
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
const getCertOptions = () => {
|
|
5
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
6
|
+
const __dirname = path.dirname(__filename);
|
|
7
|
+
return {
|
|
8
|
+
pfx: fs.readFileSync(path.join(__dirname, "./certs/cert.pfx")),
|
|
9
|
+
passphrase: "uiplatform"
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
getCertOptions
|
|
14
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIERjCCAy6gAwIBAgIURZDLMeITZ77a7OqWfmuim11w3/0wDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwgZYxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UEBwwKUGxlYXNh
|
|
4
|
+
bnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9ybTESMBAGA1UE
|
|
5
|
+
AwwJbG9jYWxob3N0MS0wKwYJKoZIhvcNAQkBFh52aW5vdGgua2FseWFuYXN1bmRh
|
|
6
|
+
cmFtQGljZS5jb20wHhcNMjQxMDMxMTg1ODI1WhcNMjUxMDMxMTg1ODI1WjCBmzEL
|
|
7
|
+
MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRMwEQYDVQQHDApQbGVhc2FudG9uMQww
|
|
8
|
+
CgYDVQQKDANJQ0UxFDASBgNVBAsMC1VJIFBsYXRmb3JtMRcwFQYDVQQDDA5sb2Nh
|
|
9
|
+
bGhvc3Q6ODA4MDEtMCsGCSqGSIb3DQEJARYedmlub3RoLmthbHlhbmFzdW5kYXJh
|
|
10
|
+
bUBpY2UuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwfAgF1AN
|
|
11
|
+
m/RnbzKzoXS7SU3JkQWTeQ1ndaZRwiD4Xkg5bvdhzWUJORVYQTWIJJrL3KxqZzGM
|
|
12
|
+
gVj4UJt3AaQD73A+bQagS5EgYxLqg1v34HZvhwMfdoZfw9epQt5KCF3JQXyH+lJk
|
|
13
|
+
RyklnjHVZbYE1/eF1pb0KosIWPXY+kCYTi2b0oPifyO90bVOw3QvxLDF4fgk+QqL
|
|
14
|
+
7HU1EOAak4wj07dNi83xqCOqjtWzmlYokvYELFgCUMzWFEjxuWZMuGu8+28JAMX9
|
|
15
|
+
oXni9K8f4SJX5eZrRrtAHt+LwsxcLQPTmHHeTxvEc/L8//jAVUTohUr+/IfC59z0
|
|
16
|
+
dko7ulPQKjgsFwIDAQABo4GEMIGBMB8GA1UdIwQYMBaAFB/8xooBufI/rf2vXZBh
|
|
17
|
+
sLmQARwoMAkGA1UdEwQCMAAwNAYDVR0RBC0wK4IJbG9jYWxob3N0gg5sb2NhbGhv
|
|
18
|
+
c3Q6ODA4MIIObG9jYWxob3N0OjMwMDAwHQYDVR0OBBYEFLQKGRQF7uuWmv1mYPGF
|
|
19
|
+
lWd8FxjbMA0GCSqGSIb3DQEBCwUAA4IBAQAVqVVBtbkQo1JI7+3oPSgL+CPQC37x
|
|
20
|
+
szF+vXLeswBS6OYrqA4AgW0R3vnhB64t/+oRmUu59vi+PuC1ff4w23g2HMZ+MlY2
|
|
21
|
+
smgJ8XMoxyEn4aVAPLECzBuR67uGzCxJbqtg/avb6EIWTXzBwHI95PWVcWaLav1q
|
|
22
|
+
sf3Mc60LVlAFQb1Ec5MlQHgMHaGJSDE3UwPL+JOOTG1XLnqMt+WFfqG6gN6G3FkY
|
|
23
|
+
dSg3HOR2m2VHaQWvA8Zb34uTUan40K+/hlpbzfgDXF8nvg1Fwivje8+7L3FOcCw0
|
|
24
|
+
k3yHwccxFqhPkXXaByZzaBKIlFXtLA4LiUwVQ7JEwPsJS5U108tuAQ8V
|
|
25
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE REQUEST-----
|
|
2
|
+
MIIC4TCCAckCAQAwgZsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UE
|
|
3
|
+
BwwKUGxlYXNhbnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9y
|
|
4
|
+
bTEXMBUGA1UEAwwObG9jYWxob3N0OjgwODAxLTArBgkqhkiG9w0BCQEWHnZpbm90
|
|
5
|
+
aC5rYWx5YW5hc3VuZGFyYW1AaWNlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
|
6
|
+
ADCCAQoCggEBAMHwIBdQDZv0Z28ys6F0u0lNyZEFk3kNZ3WmUcIg+F5IOW73Yc1l
|
|
7
|
+
CTkVWEE1iCSay9ysamcxjIFY+FCbdwGkA+9wPm0GoEuRIGMS6oNb9+B2b4cDH3aG
|
|
8
|
+
X8PXqULeSghdyUF8h/pSZEcpJZ4x1WW2BNf3hdaW9CqLCFj12PpAmE4tm9KD4n8j
|
|
9
|
+
vdG1TsN0L8SwxeH4JPkKi+x1NRDgGpOMI9O3TYvN8agjqo7Vs5pWKJL2BCxYAlDM
|
|
10
|
+
1hRI8blmTLhrvPtvCQDF/aF54vSvH+EiV+Xma0a7QB7fi8LMXC0D05hx3k8bxHPy
|
|
11
|
+
/P/4wFVE6IVK/vyHwufc9HZKO7pT0Co4LBcCAwEAAaAAMA0GCSqGSIb3DQEBCwUA
|
|
12
|
+
A4IBAQA/ud/JTN+FBGDyQFoGes/CAhKdj8hfZq1F/sivJXiXoC03FYd4NhAan/aY
|
|
13
|
+
1BFqiYESW1aYrDN4MyXEFhxeB5aOPHaraQ7Ny5eSAiQd6GJMNs5/lpc9W6gddXA/
|
|
14
|
+
rtl0BJ85YUh9NrRNKYdplJDrCUaZh5lFQcHb7eDsQyZJVBgJzjJ1YgpTh3Sz+hcS
|
|
15
|
+
eK6HiPqKIvRBaCgeKzEStEaLlrrsKhCezX7MOJ56JDGO7UgAxe5nRBD6Rg1Eoq+H
|
|
16
|
+
En6Q4im/SwFIFdYt0G2BW60OEmzP+sW16XfPeMTyNZrVYQ5a3r0oMYEPrPnL6FXo
|
|
17
|
+
u4ogdp1aQ2AhdGnsZxbht1uTAmCO
|
|
18
|
+
-----END CERTIFICATE REQUEST-----
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
2
|
+
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
|
|
29
|
+
r4eCFaUCCZOC2RMb8/iTn8x1VXqTkOQB
|
|
30
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
|
Binary file
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
|
2
|
+
MIIEDzCCAvegAwIBAgIUX5nLM97FoZtWQKe+Ez6zVIpf88QwDQYJKoZIhvcNAQEL
|
|
3
|
+
BQAwgZYxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTETMBEGA1UEBwwKUGxlYXNh
|
|
4
|
+
bnRvbjEMMAoGA1UECgwDSUNFMRQwEgYDVQQLDAtVSSBQbGF0Zm9ybTESMBAGA1UE
|
|
5
|
+
AwwJbG9jYWxob3N0MS0wKwYJKoZIhvcNAQkBFh52aW5vdGgua2FseWFuYXN1bmRh
|
|
6
|
+
cmFtQGljZS5jb20wHhcNMjQxMDMxMTg1NjExWhcNMjkxMDMwMTg1NjExWjCBljEL
|
|
7
|
+
MAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRMwEQYDVQQHDApQbGVhc2FudG9uMQww
|
|
8
|
+
CgYDVQQKDANJQ0UxFDASBgNVBAsMC1VJIFBsYXRmb3JtMRIwEAYDVQQDDAlsb2Nh
|
|
9
|
+
bGhvc3QxLTArBgkqhkiG9w0BCQEWHnZpbm90aC5rYWx5YW5hc3VuZGFyYW1AaWNl
|
|
10
|
+
LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAP1YQm5nQotkgTAW
|
|
11
|
+
vuxRAlqLeO8peX0WHcgReIaoNXlMkoYBsiQkkX2pW1WdB1PPmQntE9bhJ2lR8Onq
|
|
12
|
+
//g5tjjfIB05pptbIDd7WCnLCseVHfeCbvOhvFza0qjsKUdoS4xBCWlY9WLR7rfo
|
|
13
|
+
ahv8yi9De+HuSgAmPCf3/IQm1/BvBfG5IDLU2maAruolTQUW+sDj+clQDpucKvS0
|
|
14
|
+
YaJMyfOAFjUj/0FvA2XwzQ9FTQX3Mv4NLXgJzhfNKTpJjgfM5lNEkV4EJmmQPS+5
|
|
15
|
+
BBZbaV1A9yabYEUsAfyYtOJc1tdCjnSCXB3cdnPOx1FBIZCM3CdJXyHnDnvZlzfY
|
|
16
|
+
SSNAR/sCAwEAAaNTMFEwHQYDVR0OBBYEFB/8xooBufI/rf2vXZBhsLmQARwoMB8G
|
|
17
|
+
A1UdIwQYMBaAFB/8xooBufI/rf2vXZBhsLmQARwoMA8GA1UdEwEB/wQFMAMBAf8w
|
|
18
|
+
DQYJKoZIhvcNAQELBQADggEBAEJHfJTGWjrQ3toRb+dbQbWdOeqtHW5uvIZ4Mg3E
|
|
19
|
+
Fb6DIz4xe0AOnWJSTk567nCQjHBYnSvjuCtNIbrREeNkkk2oCWVw5RQKwJjkOKzI
|
|
20
|
+
MiHYsckf5JJKGT2ELRZdHlRWWMZxPKy6pDIQU37R7k+E9Jr8VM62W9A5gZo9WWrG
|
|
21
|
+
Qje98PXE0qXmKKbYP9ZJx3Rsj12+GGJyiNc/pkeY17MX8bfRladueCNkiXbof3Xc
|
|
22
|
+
GwjRWw/OS/Dj4VVgDRsh3T24xh3yHY323t4T/3StzR61ix0/ITh3JUqPGoRiKjHC
|
|
23
|
+
8YDasQh3yuJfsfZTif0MeGT20bdZPgPgqmUTB2tVYe67aZM=
|
|
24
|
+
-----END CERTIFICATE-----
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-----BEGIN ENCRYPTED PRIVATE KEY-----
|
|
2
|
+
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
|
|
29
|
+
eG1+pj5536megxAPm8DIZVe208oiwc+e
|
|
30
|
+
-----END ENCRYPTED PRIVATE KEY-----
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
4590CB31E21367BEDAECEA967E6BA29B5D70DFFD
|
package/dist/esm/server/csp.js
CHANGED
|
@@ -2,20 +2,17 @@ import fs from "node:fs";
|
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import crypto from "crypto";
|
|
4
4
|
import express from "express";
|
|
5
|
-
import
|
|
5
|
+
import helmet from "helmet";
|
|
6
6
|
const CSP_REPORT_URI = "/diagnostics/v1/csp";
|
|
7
7
|
const sources = [
|
|
8
|
-
"'self'",
|
|
9
8
|
"http://localhost:*",
|
|
9
|
+
"https://localhost:*",
|
|
10
10
|
"ws://localhost:*",
|
|
11
|
+
"*.ice.com",
|
|
11
12
|
"*.elliemae.io",
|
|
12
13
|
"*.elliemae.com",
|
|
13
|
-
"*.
|
|
14
|
-
"*.ellielabs.com"
|
|
15
|
-
"http://pdx-col.eum-appdynamics.com",
|
|
16
|
-
"https://pdx-col.eum-appdynamics.com/",
|
|
17
|
-
"https://www.google-analytics.com",
|
|
18
|
-
"https://www.googletagmanager.com"
|
|
14
|
+
"*.ellieservices.com",
|
|
15
|
+
"*.ellielabs.com"
|
|
19
16
|
];
|
|
20
17
|
const sendFileWithCSPNonce = ({
|
|
21
18
|
buildPath,
|
|
@@ -29,41 +26,55 @@ const sendFileWithCSPNonce = ({
|
|
|
29
26
|
res.sendStatus(404);
|
|
30
27
|
} else {
|
|
31
28
|
res.set("Content-Type", "text/html");
|
|
29
|
+
res.set("Reporting-Endpoints", `csp-report-uri="${CSP_REPORT_URI}"`);
|
|
30
|
+
res.set(
|
|
31
|
+
"Permissions-Policy",
|
|
32
|
+
"geolocation=(), camera=(), microphone=(), interest-cohort=()"
|
|
33
|
+
);
|
|
32
34
|
res.send(html.replace(nonceRegex, res.locals.cspNonce));
|
|
33
35
|
}
|
|
34
36
|
});
|
|
35
37
|
};
|
|
36
38
|
const getScriptSrc = () => {
|
|
37
|
-
const source = (
|
|
38
|
-
const scriptSrc =
|
|
39
|
+
const source = (_req, res) => `'nonce-${res.locals.cspNonce}'`;
|
|
40
|
+
const scriptSrc = [source, "'strict-dynamic'"];
|
|
39
41
|
return true ? scriptSrc.concat(["'unsafe-eval'"]) : scriptSrc;
|
|
40
42
|
};
|
|
41
43
|
const csp = (app) => {
|
|
42
|
-
app.use((
|
|
43
|
-
res.locals.cspNonce = crypto.randomBytes(
|
|
44
|
+
app.use((_req, res, next) => {
|
|
45
|
+
res.locals.cspNonce = crypto.randomBytes(32).toString("base64");
|
|
44
46
|
next();
|
|
45
47
|
});
|
|
46
48
|
app.use(
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
49
|
+
helmet({
|
|
50
|
+
crossOriginOpenerPolicy: { policy: "same-origin-allow-popups" },
|
|
51
|
+
crossOriginResourcePolicy: false,
|
|
52
|
+
contentSecurityPolicy: {
|
|
53
|
+
useDefaults: false,
|
|
54
|
+
directives: {
|
|
55
|
+
defaultSrc: helmet.contentSecurityPolicy.dangerouslyDisableDefaultSrc,
|
|
56
|
+
baseUri: ["'self'"],
|
|
57
|
+
frameAncestors: sources,
|
|
58
|
+
objectSrc: ["'none'"],
|
|
59
|
+
scriptSrc: getScriptSrc(),
|
|
60
|
+
upgradeInsecureRequests: [],
|
|
61
|
+
reportUri: CSP_REPORT_URI,
|
|
62
|
+
reportTo: "csp-report-uri"
|
|
63
|
+
},
|
|
64
|
+
reportOnly: process.env.CSP_REPORT_ONLY !== "false"
|
|
62
65
|
},
|
|
63
|
-
|
|
66
|
+
xFrameOptions: false,
|
|
67
|
+
xPermittedCrossDomainPolicies: false,
|
|
68
|
+
xDownloadOptions: false,
|
|
69
|
+
xXssProtection: false
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
app.use(
|
|
73
|
+
CSP_REPORT_URI,
|
|
74
|
+
express.json({
|
|
75
|
+
type: ["application/csp-report", "application/reports+json"]
|
|
64
76
|
})
|
|
65
77
|
);
|
|
66
|
-
app.use(CSP_REPORT_URI, express.json({ type: "application/csp-report" }));
|
|
67
78
|
app.use(CSP_REPORT_URI, (req, res) => {
|
|
68
79
|
console.log("CSP Violation: ", req.body);
|
|
69
80
|
res.status(204).end();
|
package/dist/esm/server/index.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
|
+
import https from "node:https";
|
|
2
|
+
import http from "node:http";
|
|
1
3
|
import express from "express";
|
|
4
|
+
import { getCertOptions } from "./cert.js";
|
|
2
5
|
import { logger } from "./logger.js";
|
|
3
6
|
import {
|
|
4
7
|
setupDefaultMiddlewares,
|
|
5
8
|
setupAdditionalMiddlewars
|
|
6
9
|
} from "./middlewares.js";
|
|
7
10
|
import { port, wsPort, host } from "./utils.js";
|
|
11
|
+
import { isHttps } from "../utils.js";
|
|
8
12
|
import { loadRoutes } from "./appRoutes.js";
|
|
9
13
|
import { createWSServer } from "./wsServer.js";
|
|
10
|
-
|
|
14
|
+
void async function startServer() {
|
|
11
15
|
const app = express();
|
|
12
16
|
setupDefaultMiddlewares(app);
|
|
13
17
|
await loadRoutes(app);
|
|
14
18
|
setupAdditionalMiddlewars(app);
|
|
15
|
-
|
|
19
|
+
const server = isHttps() ? https.createServer(getCertOptions(), app) : http.createServer(app);
|
|
20
|
+
server.listen(port, host, () => {
|
|
16
21
|
logger.appStarted(port.toString(), host || "localhost");
|
|
17
22
|
}).on("error", (err) => {
|
|
18
23
|
logger.error(err);
|
|
@@ -22,4 +27,4 @@ import { createWSServer } from "./wsServer.js";
|
|
|
22
27
|
port: wsPort
|
|
23
28
|
});
|
|
24
29
|
app.locals.wsServer = wsServer;
|
|
25
|
-
}
|
|
30
|
+
}();
|