@genesislcap/blank-app-seed 3.30.0-prerelease.8 → 3.30.0-prerelease.80
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/.genx/configure.js +5 -0
- package/.genx/package.json +1 -1
- package/.genx/prompts/api.js +2 -9
- package/.genx/prompts/server.js +9 -0
- package/.genx/prompts.js +9 -2
- package/.genx/static.js +1 -1
- package/.genx/templates/angular/component/component.hbs +46 -3
- package/.genx/templates/angular/gridLayout.hbs +8 -8
- package/.genx/templates/react/chart.hbs +7 -3
- package/.genx/templates/react/component/component.column.defs.hbs +4 -2
- package/.genx/templates/react/component/component.create.form.hbs +2 -2
- package/.genx/templates/react/component/component.gridOptions.hbs +4 -2
- package/.genx/templates/react/component/component.hbs +101 -21
- package/.genx/templates/react/component/component.index.hbs +1 -1
- package/.genx/templates/react/component/component.update.form.hbs +1 -1
- package/.genx/templates/react/entityManager.hbs +62 -49
- package/.genx/templates/react/form.hbs +7 -3
- package/.genx/templates/react/grid.hbs +16 -10
- package/.genx/templates/react/gridLayout.hbs +8 -8
- package/.genx/templates/react/route.hbs +2 -2
- package/.genx/templates/react/tabsLayout.hbs +5 -5
- package/.genx/templates/web-components/component/component.hbs +55 -2
- package/.genx/templates/web-components/component/component.template.hbs +0 -3
- package/.genx/templates/web-components/entityManager.hbs +1 -1
- package/.genx/templates/web-components/gridLayout.hbs +8 -8
- package/.genx/templates/web-components/route.template.hbs +2 -2
- package/.genx/utils/deleteGradleWrappers.js +12 -0
- package/.genx/utils/formatRouteData.js +10 -0
- package/.genx/utils/generateRoute.js +2 -1
- package/.genx/utils/generateTile.js +2 -2
- package/.genx/utils/getTodosAndComments.js +28 -0
- package/.genx/utils/index.js +2 -0
- package/.genx/versions.json +3 -3
- package/.gitignore +3 -0
- package/CHANGELOG.md +681 -0
- package/README.md +7 -13
- package/client-tmp/angular/__mocks__/fileMock.js +1 -0
- package/client-tmp/angular/angular.json +0 -29
- package/client-tmp/angular/jest.config.js +20 -0
- package/client-tmp/angular/package.json +6 -6
- package/client-tmp/angular/src/app/layouts/default/default.layout.spec.ts +2 -2
- package/client-tmp/angular/src/jest.setup.ts +46 -0
- package/client-tmp/angular/tsconfig.app.json +1 -2
- package/client-tmp/angular/tsconfig.json +1 -2
- package/client-tmp/angular/tsconfig.spec.json +13 -7
- package/client-tmp/react/.babelrc +2 -1
- package/client-tmp/react/.eslintrc.cjs +1 -0
- package/client-tmp/react/README.md +36 -24
- package/client-tmp/react/jest.config.ts +15 -0
- package/client-tmp/react/lint-css.ts +19 -0
- package/client-tmp/react/package.json +42 -24
- package/client-tmp/react/public/favicon.ico +0 -0
- package/client-tmp/react/public/index.html +13 -0
- package/client-tmp/react/src/App.tsx +95 -68
- package/client-tmp/react/src/components/ErrorMessage/{ErrorMessage.test.js → ErrorMessage.test.tsx} +18 -20
- package/client-tmp/react/src/components/ErrorMessage/{ErrorMessage.jsx → ErrorMessage.tsx} +9 -4
- package/client-tmp/react/src/config.ts +2 -16
- package/client-tmp/react/src/custom-elements.d.ts +21 -9
- package/client-tmp/react/src/environments/environment.prod.ts +8 -0
- package/client-tmp/react/src/environments/environment.ts +9 -0
- package/client-tmp/react/src/guards/ProtectedGuard.tsx +66 -0
- package/client-tmp/react/src/helpers/hasPermissionHelper.tsx +11 -0
- package/client-tmp/react/src/helpers/isAuthenticatedHelper.tsx +14 -0
- package/client-tmp/react/src/helpers/isConnectedHelper.tsx +16 -0
- package/client-tmp/react/src/layouts/blank/BlankLayout.tsx +1 -1
- package/client-tmp/react/src/layouts/default/DefaultLayout.tsx +26 -15
- package/client-tmp/react/src/main.tsx +21 -5
- package/client-tmp/react/src/pages/AuthPage/{AuthPage.test.js → AuthPage.test.tsx} +2 -2
- package/client-tmp/react/src/pages/AuthPage/{AuthPage.jsx → AuthPage.tsx} +3 -2
- package/client-tmp/react/src/pages/NotFoundPage/NotFoundPage.css +0 -0
- package/client-tmp/react/src/pages/NotFoundPage/NotFoundPage.tsx +14 -0
- package/client-tmp/react/src/pages/NotPermittedPage/{NotPermittedPage.test.js → NotPermittedPage.test.tsx} +3 -4
- package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.tsx +14 -0
- package/client-tmp/react/src/pbc/README.md +7 -0
- package/client-tmp/react/src/pbc/container.tsx +44 -0
- package/client-tmp/react/src/pbc/elementsRenderer.tsx +40 -0
- package/client-tmp/react/src/pbc/utils.ts +121 -0
- package/client-tmp/react/src/services/store.service.ts +48 -0
- package/client-tmp/react/src/share/foundation-login.ts +13 -6
- package/client-tmp/react/src/share/genesis-components.ts +49 -23
- package/client-tmp/react/src/store/AuthContext.tsx +0 -2
- package/client-tmp/react/src/store/RoutesContext.tsx +74 -0
- package/client-tmp/react/src/types/LayoutName.ts +3 -0
- package/client-tmp/react/src/types/RouteLayouts.ts +3 -1
- package/client-tmp/react/src/utils/getLayoutNameByRoute.ts +5 -0
- package/client-tmp/react/src/utils/history.ts +4 -2
- package/client-tmp/react/src/utils/index.ts +3 -1
- package/client-tmp/react/src/utils/layout.ts +11 -0
- package/client-tmp/react/test/e2e/fixture.ts +1 -1
- package/client-tmp/react/tsconfig.app.json +2 -26
- package/client-tmp/react/tsconfig.json +31 -8
- package/client-tmp/react/tsconfig.node.json +1 -1
- package/client-tmp/react/vite.config.ts +70 -0
- package/client-tmp/react/webpack.config.js +103 -0
- package/client-tmp/web-components/README.md +2 -2
- package/client-tmp/web-components/package.json +10 -8
- package/client-tmp/web-components/src/main/main.styles.ts +1 -1
- package/client-tmp/web-components/src/pbc/README.md +1 -1
- package/client-tmp/web-components/src/routes/config.ts +4 -1
- package/client-tmp/web-components/src/utils/index.ts +1 -0
- package/client-tmp/web-components/src/utils/layout.ts +11 -0
- package/client-tmp/web-components/test/README.md +1 -1
- package/client-tmp/web-components/tsconfig.json +1 -1
- package/package.json +1 -1
- package/server/README.md +1 -1
- package/server/build.gradle.kts +6 -3
- package/server/gradle.properties +2 -1
- package/server/settings.gradle.kts +6 -5
- package/server/{{appName}}-app/src/test/kotlin/global/genesis/EventHandlerTest.kt +1 -1
- package/settings.gradle.kts +7 -4
- package/testData/excel/.gitkeep +0 -0
- package/client-tmp/angular/karma.conf.js +0 -9
- package/client-tmp/angular/src/app/app.component.spec.ts +0 -23
- package/client-tmp/react/env.development.json +0 -3
- package/client-tmp/react/jest.config.js +0 -10
- package/client-tmp/react/lint-css.js +0 -18
- package/client-tmp/react/src/guards/AuthGuard.tsx +0 -32
- package/client-tmp/react/src/guards/PermissionsGuard.tsx +0 -37
- package/client-tmp/react/src/index.js +0 -17
- package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.jsx +0 -13
- package/client-tmp/react/src/reportWebVitals.js +0 -13
- package/client-tmp/react/vite.config.js +0 -59
- /package/client-tmp/react/{jest.setup.js → jest.setup.ts} +0 -0
- /package/client-tmp/react/src/{setupTests.js → setupTests.ts} +0 -0
- /package/server/{{appName}}-app/src/main/genesis/scripts/{{{appName}}-data-pipelines.kts → {{appName}}-pipelines.kts} +0 -0
package/README.md
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
# {{appName}}
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
their projects. Each seed adheres to strict Genesis best practices, and has passed numerous performance, compliance and
|
|
5
|
-
accessibility checks.
|
|
3
|
+
{{{description}}}
|
|
6
4
|
|
|
7
|
-
{{description}}
|
|
8
5
|
{{!
|
|
9
6
|
|
|
10
7
|
# Testing
|
|
@@ -34,16 +31,13 @@ npx -y @genesislcap/genx@latest init myapp -x -s ./blank-app-seed --enableSSO --
|
|
|
34
31
|
```
|
|
35
32
|
}}
|
|
36
33
|
|
|
37
|
-
#
|
|
34
|
+
# Getting started with development
|
|
38
35
|
|
|
39
|
-
## Next
|
|
36
|
+
## Next steps
|
|
40
37
|
|
|
41
|
-
|
|
38
|
+
If you need an introduction to the Genesis platform and its modules it's worth heading [here](https://docs.genesis.global/docs/develop/platform-overview/).
|
|
42
39
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
## Project Structure
|
|
40
|
+
## Project structure
|
|
47
41
|
|
|
48
42
|
This project contains **server** and **client** directories which contain the server and client code respectively.
|
|
49
43
|
|
|
@@ -54,7 +48,7 @@ It is built using a DSL-like definition based on the Kotlin language: GPAL.
|
|
|
54
48
|
|
|
55
49
|
When first opening the project, if you receive a notification from IntelliJ IDE detecting Gradle project select the option to 'Load as gradle project'.
|
|
56
50
|
|
|
57
|
-
### Web
|
|
51
|
+
### Web client
|
|
58
52
|
|
|
59
53
|
The Web client for this project can be found [here](./client/README.md). It is built using Genesis's next
|
|
60
54
|
generation web development framework, which is based on Web Components.
|
|
@@ -66,4 +60,4 @@ This is free and unencumbered software released into the public domain. For full
|
|
|
66
60
|
**NOTE** This project uses licensed components listed in the next section, thus licenses for those components are required during development.
|
|
67
61
|
|
|
68
62
|
## Licensed components
|
|
69
|
-
Genesis
|
|
63
|
+
Genesis application platform
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = 'test-file-stub';
|
|
@@ -90,35 +90,6 @@
|
|
|
90
90
|
"buildTarget": "{{pkgName}}:build"
|
|
91
91
|
}
|
|
92
92
|
},
|
|
93
|
-
"test": {
|
|
94
|
-
"builder": "@angular-builders/custom-webpack:karma",
|
|
95
|
-
"configurations": {
|
|
96
|
-
"production": {
|
|
97
|
-
"customWebpackConfig": {
|
|
98
|
-
"path": "./webpack.prod.config.js",
|
|
99
|
-
"mergeStrategies": {
|
|
100
|
-
"externals": "replace"
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
"development": {
|
|
105
|
-
"customWebpackConfig": {
|
|
106
|
-
"path": "./webpack.dev.config.js",
|
|
107
|
-
"mergeStrategies": {
|
|
108
|
-
"externals": "replace"
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
},
|
|
113
|
-
"defaultConfiguration": "development",
|
|
114
|
-
"options": {
|
|
115
|
-
"polyfills": ["zone.js", "zone.js/testing"],
|
|
116
|
-
"tsConfig": "tsconfig.spec.json",
|
|
117
|
-
"assets": ["src/favicon.ico", "src/assets"],
|
|
118
|
-
"styles": ["src/styles/styles.css"],
|
|
119
|
-
"scripts": []
|
|
120
|
-
}
|
|
121
|
-
},
|
|
122
93
|
"lint": {
|
|
123
94
|
"builder": "@angular-eslint/builder:lint",
|
|
124
95
|
"options": {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const { pathsToModuleNameMapper } = require('ts-jest');
|
|
2
|
+
const { compilerOptions } = require('./tsconfig');
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
preset: 'jest-preset-angular',
|
|
6
|
+
roots: ['<rootDir>/src/'],
|
|
7
|
+
testMatch: ['**/+(*.)+(spec).+(ts)'],
|
|
8
|
+
setupFilesAfterEnv: ['<rootDir>/src/jest.setup.ts'],
|
|
9
|
+
collectCoverage: true,
|
|
10
|
+
coverageReporters: ['html'],
|
|
11
|
+
coverageDirectory: 'coverage/my-app',
|
|
12
|
+
transformIgnorePatterns: [
|
|
13
|
+
'node_modules/(?!(@genesislcap/*|consola|@angular|@microsoft|exenv-es6|uuid))',
|
|
14
|
+
],
|
|
15
|
+
moduleNameMapper: {
|
|
16
|
+
...pathsToModuleNameMapper(compilerOptions.paths || {}, { prefix: '<rootDir>/' }),
|
|
17
|
+
'\\.(jpg|jpeg|png|gif|svg)$': '<rootDir>/src/__mocks__/fileMock.js',
|
|
18
|
+
'\\.(css)$': 'identity-obj-proxy',
|
|
19
|
+
},
|
|
20
|
+
};
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"lint:fix": "genx lint --fix",
|
|
28
28
|
"lint:eslint": "genx lint -l eslint --profile",
|
|
29
29
|
"lint:stylelint": "node lint-css.js",
|
|
30
|
-
"test": "
|
|
30
|
+
"test": "jest",
|
|
31
31
|
"test:e2e": "genx test --e2e",
|
|
32
32
|
"test:e2e:debug": "genx test --e2e --debug",
|
|
33
33
|
"test:e2e:ui": "genx test --e2e --interactive",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"@genesislcap/genx": "{{versions.UI}}",
|
|
55
55
|
"@genesislcap/build-kit": "{{versions.UI}}",
|
|
56
56
|
"@types/jasmine": "~5.1.0",
|
|
57
|
+
"@types/jest": "^29.5.13",
|
|
57
58
|
"@types/numeral": "^2.0.5",
|
|
58
59
|
"file-loader": "^6.2.0",
|
|
59
60
|
"jasmine-core": "~5.1.0",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"
|
|
63
|
-
"
|
|
64
|
-
"karma-jasmine-html-reporter": "~2.1.0",
|
|
61
|
+
"jest": "^29.7.0",
|
|
62
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
63
|
+
"jest-preset-angular": "^14.2.4",
|
|
64
|
+
"jest-transform-stub": "^2.0.0",
|
|
65
65
|
"svg-url-loader": "^8.0.0",
|
|
66
66
|
"typescript": "~5.4.5",
|
|
67
67
|
"ts-node": "10.9.2",
|
|
@@ -4,7 +4,7 @@ import { DefaultLayoutComponent } from './default.layout';
|
|
|
4
4
|
import { ElementRef, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
5
5
|
|
|
6
6
|
class MockRouter {
|
|
7
|
-
navigate =
|
|
7
|
+
navigate = jest.fn();
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
class MockElementRef implements ElementRef {
|
|
@@ -46,4 +46,4 @@ describe('DefaultLayoutComponent', () => {
|
|
|
46
46
|
component.navigateAngular(path);
|
|
47
47
|
expect(router.navigate).toHaveBeenCalledWith([path]);
|
|
48
48
|
});
|
|
49
|
-
});
|
|
49
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import 'jest-preset-angular/setup-jest';
|
|
2
|
+
|
|
3
|
+
// Mock window.matchMedia
|
|
4
|
+
Object.defineProperty(window, 'matchMedia', {
|
|
5
|
+
writable: true,
|
|
6
|
+
value: (query: string) => ({
|
|
7
|
+
matches: false,
|
|
8
|
+
media: query,
|
|
9
|
+
onchange: null,
|
|
10
|
+
addListener: jest.fn(), // Deprecated
|
|
11
|
+
removeListener: jest.fn(), // Deprecated
|
|
12
|
+
addEventListener: jest.fn(),
|
|
13
|
+
removeEventListener: jest.fn(),
|
|
14
|
+
dispatchEvent: jest.fn(),
|
|
15
|
+
}),
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
// Mock BroadcastChannel
|
|
19
|
+
class MockBroadcastChannel {
|
|
20
|
+
name: string;
|
|
21
|
+
onmessage: ((this: BroadcastChannel, ev: MessageEvent) => any) | null = null;
|
|
22
|
+
onmessageerror: ((this: BroadcastChannel, ev: MessageEvent) => any) | null = null;
|
|
23
|
+
|
|
24
|
+
constructor(name: string) {
|
|
25
|
+
this.name = name;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
postMessage(message: any) {
|
|
29
|
+
if (this.onmessage) {
|
|
30
|
+
this.onmessage({ data: message } as MessageEvent);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
close() {}
|
|
35
|
+
|
|
36
|
+
addEventListener() {}
|
|
37
|
+
removeEventListener() {}
|
|
38
|
+
dispatchEvent() {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Object.defineProperty(window, 'BroadcastChannel', {
|
|
44
|
+
writable: true,
|
|
45
|
+
value: MockBroadcastChannel,
|
|
46
|
+
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
1
|
{
|
|
3
2
|
"compileOnSave": false,
|
|
4
3
|
"compilerOptions": {
|
|
@@ -23,7 +22,7 @@
|
|
|
23
22
|
"ES2022",
|
|
24
23
|
"dom"
|
|
25
24
|
],
|
|
26
|
-
"resolveJsonModule": true
|
|
25
|
+
"resolveJsonModule": true
|
|
27
26
|
},
|
|
28
27
|
"angularCompilerOptions": {
|
|
29
28
|
"enableI18nLegacyMessageIdFormat": false,
|
|
@@ -1,15 +1,21 @@
|
|
|
1
|
-
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
|
2
1
|
{
|
|
3
2
|
"extends": "./tsconfig.json",
|
|
4
3
|
"compilerOptions": {
|
|
4
|
+
"module": "ES2022",
|
|
5
|
+
"target": "ES2022",
|
|
5
6
|
"outDir": "./out-tsc/spec",
|
|
6
7
|
"types": [
|
|
7
|
-
"
|
|
8
|
-
]
|
|
8
|
+
"jest"
|
|
9
|
+
],
|
|
10
|
+
"esModuleInterop": true,
|
|
11
|
+
"emitDecoratorMetadata": true,
|
|
12
|
+
"resolveJsonModule": true
|
|
9
13
|
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/jest.setup.ts",
|
|
16
|
+
],
|
|
10
17
|
"include": [
|
|
11
|
-
"src/**/*.
|
|
12
|
-
"src
|
|
13
|
-
"src/**/*.spec.ts"
|
|
18
|
+
"src/**/*.spec.ts",
|
|
19
|
+
"src/**/*.d.ts"
|
|
14
20
|
]
|
|
15
|
-
}
|
|
21
|
+
}
|
|
@@ -10,6 +10,7 @@ module.exports = {
|
|
|
10
10
|
parser: '@typescript-eslint/parser',
|
|
11
11
|
plugins: ['react-refresh'],
|
|
12
12
|
rules: {
|
|
13
|
+
'@typescript-eslint/no-explicit-any': 'off',
|
|
13
14
|
'@typescript-eslint/no-unused-vars': 'off',
|
|
14
15
|
'@typescript-eslint/no-var-requires': 'off',
|
|
15
16
|
'react-refresh/only-export-components': [
|
|
@@ -3,45 +3,57 @@
|
|
|
3
3
|
|
|
4
4
|
This project is built with React.
|
|
5
5
|
|
|
6
|
-
##
|
|
7
|
-
|
|
8
|
-
1. Install dependencies:
|
|
6
|
+
## Install dependencies:
|
|
9
7
|
|
|
10
8
|
```shell
|
|
11
9
|
npm run bootstrap
|
|
12
10
|
```
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
## Development server
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
npm run start
|
|
18
|
-
```
|
|
14
|
+
Run `npm run dev` for a dev server. Navigate to `http://localhost:3000/`. The application will automatically reload if you change any of the source files.
|
|
19
15
|
|
|
20
|
-
|
|
16
|
+
## Build
|
|
21
17
|
|
|
22
|
-
|
|
23
|
-
npm run build
|
|
24
|
-
```
|
|
18
|
+
Run `npm run build` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
25
19
|
|
|
26
|
-
|
|
20
|
+
## Running unit tests
|
|
27
21
|
|
|
28
|
-
|
|
29
|
-
npm run serve
|
|
30
|
-
```
|
|
22
|
+
Run `npm run test` to execute the unit tests via [Jest](https://jestjs.io/docs/getting-started).
|
|
31
23
|
|
|
32
|
-
##
|
|
24
|
+
## Running end-to-end tests
|
|
33
25
|
|
|
34
|
-
|
|
26
|
+
Run `npm run test:e2e` to execute the end-to-end tests.
|
|
35
27
|
|
|
36
|
-
|
|
37
|
-
npm run clean
|
|
38
|
-
```
|
|
28
|
+
## Linting
|
|
39
29
|
|
|
40
|
-
|
|
30
|
+
Run `npm run lint` to lint the project.
|
|
41
31
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
## NPM Scripts
|
|
33
|
+
|
|
34
|
+
- `npm run baseline`: Cleans the project and installs dependencies.
|
|
35
|
+
- `npm run bootstrap`: Installs dependencies without auditing or funding checks.
|
|
36
|
+
- `npm run bootstrap:ci`: Installs dependencies in CI environment without auditing or funding checks.
|
|
37
|
+
- `npm run build`: Builds the project in production configuration.
|
|
38
|
+
- `npm run build:stats`: Builds the project and generates a stats JSON file.
|
|
39
|
+
- `npm run clean`: Cleans the `dist` and `node_modules` directories.
|
|
40
|
+
- `npm run dev`: Serves the project in development mode.
|
|
41
|
+
- `npm run dev:vite`: Serves the project in development mode (specific for vite configuration).
|
|
42
|
+
- `npm run dev:docker`: Serves the project in development mode, accessible from any network interface.
|
|
43
|
+
- `npm run dev:no-open`: Serves the project in development mode without automatically opening the browser.
|
|
44
|
+
- `npm run dev:intellij`: Serves the project in development mode (specific for IntelliJ).
|
|
45
|
+
- `npm run dev:https`: Serves the project in development mode with HTTPS.
|
|
46
|
+
- `npm run dsconfig`: Configures design system based on `src/styles/design-tokens.json`.
|
|
47
|
+
- `npm run lint`: Lints the project using the specified profile.
|
|
48
|
+
- `npm run lint:fix`: Fixes linting errors in the project.
|
|
49
|
+
- `npm run lint:eslint`: Lints the project using ESLint and the specified profile.
|
|
50
|
+
- `npm run lint:stylelint`: Lints CSS using a custom script.
|
|
51
|
+
- `npm run test`: Runs unit tests.
|
|
52
|
+
- `npm run test:e2e`: Runs end-to-end tests.
|
|
53
|
+
- `npm run test:e2e:debug`: Runs end-to-end tests in debug mode.
|
|
54
|
+
- `npm run test:e2e:ui`: Runs end-to-end tests in interactive mode.
|
|
55
|
+
- `npm run test:coverage`: Runs unit tests and generates a code coverage report.
|
|
56
|
+
- `npm run test:unit:watch`: Runs unit tests in watch mode.
|
|
45
57
|
|
|
46
58
|
## Further help
|
|
47
59
|
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Config } from '@jest/types';
|
|
2
|
+
|
|
3
|
+
const config: Config.InitialOptions = {
|
|
4
|
+
testEnvironment: 'jsdom',
|
|
5
|
+
moduleFileExtensions: ['js', 'jsx', 'ts', 'tsx'],
|
|
6
|
+
transform: {
|
|
7
|
+
'^.+\\.jsx?$': 'babel-jest',
|
|
8
|
+
'^.+\\.tsx?$': ['ts-jest', { tsconfig: 'tsconfig.app.json' }],
|
|
9
|
+
},
|
|
10
|
+
setupFilesAfterEnv: ['<rootDir>/jest.setup.ts'],
|
|
11
|
+
testMatch: ["**/?(*.)+(test).[jt]s?(x)"],
|
|
12
|
+
watchPathIgnorePatterns: ["<rootDir>/node_modules/", "<rootDir>/dist/"],
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default config;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import glob from 'glob';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
|
|
5
|
+
const cssFiles: string[] = glob.sync(path.join(__dirname, '**/*.css'));
|
|
6
|
+
|
|
7
|
+
if (cssFiles.length === 0) {
|
|
8
|
+
console.log('No CSS files found.');
|
|
9
|
+
process.exit(0);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const command: string = `genx lint -l stylelint ${cssFiles.join(' ')}`;
|
|
13
|
+
|
|
14
|
+
try {
|
|
15
|
+
execSync(command, { stdio: 'inherit' });
|
|
16
|
+
} catch (error) {
|
|
17
|
+
console.error('Error running stylelint:', error);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
}
|
|
@@ -2,23 +2,29 @@
|
|
|
2
2
|
"name": "{{pkgName}}",
|
|
3
3
|
"version": "{{applicationVersionWeb}}",
|
|
4
4
|
"private": true,
|
|
5
|
+
"config": {
|
|
6
|
+
"PERSIST_LAYOUT_IN_DEV": false
|
|
7
|
+
},
|
|
5
8
|
"scripts": {
|
|
6
9
|
"baseline": "npm run clean && npm run bootstrap",
|
|
7
10
|
"bootstrap": "npm i --legacy-peer-deps",
|
|
8
11
|
"bootstrap:ci": "npm ci --no-fund --no-audit",
|
|
9
|
-
"build": "
|
|
12
|
+
"build": "webpack --mode production",
|
|
13
|
+
"build:vite": "vite build",
|
|
10
14
|
"build:stats": "npm run build --stats-json",
|
|
11
15
|
"clean": "genx clean dist node_modules",
|
|
12
|
-
"dev": "
|
|
16
|
+
"dev": "webpack serve --mode development",
|
|
17
|
+
"dev:vite": "vite build && vite preview",
|
|
13
18
|
"dev:docker": "npm run dev -- --host 0.0.0.0",
|
|
14
19
|
"dev:no-open": "NO_OPEN=true npm run dev",
|
|
15
20
|
"dev:intellij": "npm run dev",
|
|
16
21
|
"dev:https": "HTTPS=true npm run dev",
|
|
17
22
|
"dsconfig": "dsconfig --path src/styles/design-tokens.json",
|
|
18
|
-
"lint": "eslint src/**/*.
|
|
19
|
-
"lint:fix": "eslint src/**/*.
|
|
23
|
+
"lint": "eslint src/**/*.ts src/**/*.tsx",
|
|
24
|
+
"lint:fix": "eslint src/**/*.ts src/**/*.tsx --fix",
|
|
20
25
|
"lint:eslint": "npm lint",
|
|
21
|
-
"lint:stylelint": "node lint-css.
|
|
26
|
+
"lint:stylelint": "npx ts-node lint-css.ts",
|
|
27
|
+
"stats": "webpack --mode production --json > stats.json",
|
|
22
28
|
"test": "jest",
|
|
23
29
|
"test:coverage": "jest --coverage",
|
|
24
30
|
"test:unit:watch": "jest --watchAll",
|
|
@@ -33,27 +39,32 @@
|
|
|
33
39
|
"@ag-grid-enterprise/core": "29.2.0",
|
|
34
40
|
"@ag-grid-enterprise/row-grouping": "29.2.0",
|
|
35
41
|
"@ag-grid-enterprise/server-side-row-model": "29.2.0",
|
|
42
|
+
"@genesislcap/foundation-comms": "{{versions.UI}}",
|
|
43
|
+
"@genesislcap/foundation-entity-management": "{{versions.UI}}",
|
|
36
44
|
{{#if FDC3.includeDependencies}}
|
|
37
45
|
"@genesislcap/foundation-fdc3": "{{versions.UI}}",
|
|
38
46
|
{{/if}}
|
|
39
|
-
"@genesislcap/foundation-comms": "{{versions.UI}}",
|
|
40
|
-
"@genesislcap/foundation-login": "{{versions.UI}}",
|
|
41
|
-
"@genesislcap/foundation-entity-management": "{{versions.UI}}",
|
|
42
47
|
"@genesislcap/foundation-header": "{{versions.UI}}",
|
|
48
|
+
"@genesislcap/foundation-layout": "{{versions.UI}}",
|
|
49
|
+
"@genesislcap/foundation-logger": "{{versions.UI}}",
|
|
50
|
+
"@genesislcap/foundation-login": "{{versions.UI}}",
|
|
51
|
+
"@genesislcap/foundation-shell": "{{versions.UI}}",
|
|
43
52
|
"@genesislcap/foundation-ui": "{{versions.UI}}",
|
|
53
|
+
"@genesislcap/foundation-utils": "{{versions.UI}}",
|
|
44
54
|
"@genesislcap/rapid-design-system": "{{versions.UI}}",
|
|
45
55
|
"@genesislcap/rapid-grid-pro": "{{versions.UI}}",
|
|
46
|
-
"@genesislcap/
|
|
56
|
+
"@genesislcap/web-core": "{{versions.UI}}",
|
|
47
57
|
"@genesislcap/g2plot-chart": "{{versions.UI}}",
|
|
48
58
|
"history": "^5.3.0",
|
|
49
|
-
"react": "^19.0.0
|
|
50
|
-
"react-dom": "^19.0.0
|
|
51
|
-
"react-router-dom": "
|
|
59
|
+
"react": "^19.0.0",
|
|
60
|
+
"react-dom": "^19.0.0",
|
|
61
|
+
"react-router-dom": "7.0.2",
|
|
62
|
+
"web-vitals": "^2.1.4"
|
|
52
63
|
},
|
|
53
64
|
"devDependencies": {
|
|
54
65
|
"@babel/core": "^7.25.2",
|
|
55
66
|
"@babel/preset-env": "^7.25.4",
|
|
56
|
-
"@babel/preset-react": "^7.
|
|
67
|
+
"@babel/preset-react": "^7.26.3",
|
|
57
68
|
"@genesislcap/design-system-configurator": "{{versions.UI}}",
|
|
58
69
|
"@genesislcap/eslint-config": "{{versions.UI}}",
|
|
59
70
|
"@genesislcap/prettier-config": "{{versions.UI}}",
|
|
@@ -62,24 +73,31 @@
|
|
|
62
73
|
"@genesislcap/build-kit": "{{versions.UI}}",
|
|
63
74
|
"@testing-library/dom": "^10.4.0",
|
|
64
75
|
"@testing-library/jest-dom": "^6.5.0",
|
|
65
|
-
"@testing-library/react": "^16.
|
|
76
|
+
"@testing-library/react": "^16.1.0",
|
|
77
|
+
"@types/css-modules": "^1.0.5",
|
|
78
|
+
"@types/jest": "^29.5.12",
|
|
66
79
|
"@types/node": "^20.14.10",
|
|
67
|
-
"@types/react": "
|
|
68
|
-
"@types/react-dom": "
|
|
80
|
+
"@types/react": "^19.0.1",
|
|
81
|
+
"@types/react-dom": "^19.0.2",
|
|
69
82
|
"@typescript-eslint/eslint-plugin": "^7.13.1",
|
|
70
83
|
"@typescript-eslint/parser": "^7.13.1",
|
|
71
84
|
"@vitejs/plugin-react": "^4.3.1",
|
|
85
|
+
"babel-loader": "^9.2.1",
|
|
72
86
|
"babel-plugin-react-require": "^4.0.3",
|
|
87
|
+
"dotenv-webpack": "^8.1.0",
|
|
73
88
|
"eslint": "^8.57.0",
|
|
74
|
-
"eslint-plugin-react-hooks": "^
|
|
75
|
-
"eslint-plugin-react-refresh": "^0.4.
|
|
89
|
+
"eslint-plugin-react-hooks": "^5.1.0",
|
|
90
|
+
"eslint-plugin-react-refresh": "^0.4.16",
|
|
91
|
+
"file-loader": "^6.2.0",
|
|
76
92
|
"jest": "^29.7.0",
|
|
77
93
|
"jest-environment-jsdom": "^29.7.0",
|
|
94
|
+
"ts-jest": "^29.2.5",
|
|
95
|
+
"ts-node": "^10.9.2",
|
|
78
96
|
"typescript": "^5.2.2",
|
|
79
|
-
"vite": "^5.3.1"
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
}
|
|
97
|
+
"vite": "^5.3.1",
|
|
98
|
+
"vite-plugin-tsconfig-paths": "^1.4.1",
|
|
99
|
+
"webpack": "^5.94.0",
|
|
100
|
+
"webpack-cli": "^5.1.4",
|
|
101
|
+
"webpack-dev-server": "^5.1.0"
|
|
102
|
+
}
|
|
85
103
|
}
|
|
Binary file
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
|
+
<title>{{capitalCase appName}}</title>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<div id="root"></div>
|
|
11
|
+
<script src="/bundle.js"></script>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|