@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.
Files changed (125) hide show
  1. package/.genx/configure.js +5 -0
  2. package/.genx/package.json +1 -1
  3. package/.genx/prompts/api.js +2 -9
  4. package/.genx/prompts/server.js +9 -0
  5. package/.genx/prompts.js +9 -2
  6. package/.genx/static.js +1 -1
  7. package/.genx/templates/angular/component/component.hbs +46 -3
  8. package/.genx/templates/angular/gridLayout.hbs +8 -8
  9. package/.genx/templates/react/chart.hbs +7 -3
  10. package/.genx/templates/react/component/component.column.defs.hbs +4 -2
  11. package/.genx/templates/react/component/component.create.form.hbs +2 -2
  12. package/.genx/templates/react/component/component.gridOptions.hbs +4 -2
  13. package/.genx/templates/react/component/component.hbs +101 -21
  14. package/.genx/templates/react/component/component.index.hbs +1 -1
  15. package/.genx/templates/react/component/component.update.form.hbs +1 -1
  16. package/.genx/templates/react/entityManager.hbs +62 -49
  17. package/.genx/templates/react/form.hbs +7 -3
  18. package/.genx/templates/react/grid.hbs +16 -10
  19. package/.genx/templates/react/gridLayout.hbs +8 -8
  20. package/.genx/templates/react/route.hbs +2 -2
  21. package/.genx/templates/react/tabsLayout.hbs +5 -5
  22. package/.genx/templates/web-components/component/component.hbs +55 -2
  23. package/.genx/templates/web-components/component/component.template.hbs +0 -3
  24. package/.genx/templates/web-components/entityManager.hbs +1 -1
  25. package/.genx/templates/web-components/gridLayout.hbs +8 -8
  26. package/.genx/templates/web-components/route.template.hbs +2 -2
  27. package/.genx/utils/deleteGradleWrappers.js +12 -0
  28. package/.genx/utils/formatRouteData.js +10 -0
  29. package/.genx/utils/generateRoute.js +2 -1
  30. package/.genx/utils/generateTile.js +2 -2
  31. package/.genx/utils/getTodosAndComments.js +28 -0
  32. package/.genx/utils/index.js +2 -0
  33. package/.genx/versions.json +3 -3
  34. package/.gitignore +3 -0
  35. package/CHANGELOG.md +681 -0
  36. package/README.md +7 -13
  37. package/client-tmp/angular/__mocks__/fileMock.js +1 -0
  38. package/client-tmp/angular/angular.json +0 -29
  39. package/client-tmp/angular/jest.config.js +20 -0
  40. package/client-tmp/angular/package.json +6 -6
  41. package/client-tmp/angular/src/app/layouts/default/default.layout.spec.ts +2 -2
  42. package/client-tmp/angular/src/jest.setup.ts +46 -0
  43. package/client-tmp/angular/tsconfig.app.json +1 -2
  44. package/client-tmp/angular/tsconfig.json +1 -2
  45. package/client-tmp/angular/tsconfig.spec.json +13 -7
  46. package/client-tmp/react/.babelrc +2 -1
  47. package/client-tmp/react/.eslintrc.cjs +1 -0
  48. package/client-tmp/react/README.md +36 -24
  49. package/client-tmp/react/jest.config.ts +15 -0
  50. package/client-tmp/react/lint-css.ts +19 -0
  51. package/client-tmp/react/package.json +42 -24
  52. package/client-tmp/react/public/favicon.ico +0 -0
  53. package/client-tmp/react/public/index.html +13 -0
  54. package/client-tmp/react/src/App.tsx +95 -68
  55. package/client-tmp/react/src/components/ErrorMessage/{ErrorMessage.test.js → ErrorMessage.test.tsx} +18 -20
  56. package/client-tmp/react/src/components/ErrorMessage/{ErrorMessage.jsx → ErrorMessage.tsx} +9 -4
  57. package/client-tmp/react/src/config.ts +2 -16
  58. package/client-tmp/react/src/custom-elements.d.ts +21 -9
  59. package/client-tmp/react/src/environments/environment.prod.ts +8 -0
  60. package/client-tmp/react/src/environments/environment.ts +9 -0
  61. package/client-tmp/react/src/guards/ProtectedGuard.tsx +66 -0
  62. package/client-tmp/react/src/helpers/hasPermissionHelper.tsx +11 -0
  63. package/client-tmp/react/src/helpers/isAuthenticatedHelper.tsx +14 -0
  64. package/client-tmp/react/src/helpers/isConnectedHelper.tsx +16 -0
  65. package/client-tmp/react/src/layouts/blank/BlankLayout.tsx +1 -1
  66. package/client-tmp/react/src/layouts/default/DefaultLayout.tsx +26 -15
  67. package/client-tmp/react/src/main.tsx +21 -5
  68. package/client-tmp/react/src/pages/AuthPage/{AuthPage.test.js → AuthPage.test.tsx} +2 -2
  69. package/client-tmp/react/src/pages/AuthPage/{AuthPage.jsx → AuthPage.tsx} +3 -2
  70. package/client-tmp/react/src/pages/NotFoundPage/NotFoundPage.css +0 -0
  71. package/client-tmp/react/src/pages/NotFoundPage/NotFoundPage.tsx +14 -0
  72. package/client-tmp/react/src/pages/NotPermittedPage/{NotPermittedPage.test.js → NotPermittedPage.test.tsx} +3 -4
  73. package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.tsx +14 -0
  74. package/client-tmp/react/src/pbc/README.md +7 -0
  75. package/client-tmp/react/src/pbc/container.tsx +44 -0
  76. package/client-tmp/react/src/pbc/elementsRenderer.tsx +40 -0
  77. package/client-tmp/react/src/pbc/utils.ts +121 -0
  78. package/client-tmp/react/src/services/store.service.ts +48 -0
  79. package/client-tmp/react/src/share/foundation-login.ts +13 -6
  80. package/client-tmp/react/src/share/genesis-components.ts +49 -23
  81. package/client-tmp/react/src/store/AuthContext.tsx +0 -2
  82. package/client-tmp/react/src/store/RoutesContext.tsx +74 -0
  83. package/client-tmp/react/src/types/LayoutName.ts +3 -0
  84. package/client-tmp/react/src/types/RouteLayouts.ts +3 -1
  85. package/client-tmp/react/src/utils/getLayoutNameByRoute.ts +5 -0
  86. package/client-tmp/react/src/utils/history.ts +4 -2
  87. package/client-tmp/react/src/utils/index.ts +3 -1
  88. package/client-tmp/react/src/utils/layout.ts +11 -0
  89. package/client-tmp/react/test/e2e/fixture.ts +1 -1
  90. package/client-tmp/react/tsconfig.app.json +2 -26
  91. package/client-tmp/react/tsconfig.json +31 -8
  92. package/client-tmp/react/tsconfig.node.json +1 -1
  93. package/client-tmp/react/vite.config.ts +70 -0
  94. package/client-tmp/react/webpack.config.js +103 -0
  95. package/client-tmp/web-components/README.md +2 -2
  96. package/client-tmp/web-components/package.json +10 -8
  97. package/client-tmp/web-components/src/main/main.styles.ts +1 -1
  98. package/client-tmp/web-components/src/pbc/README.md +1 -1
  99. package/client-tmp/web-components/src/routes/config.ts +4 -1
  100. package/client-tmp/web-components/src/utils/index.ts +1 -0
  101. package/client-tmp/web-components/src/utils/layout.ts +11 -0
  102. package/client-tmp/web-components/test/README.md +1 -1
  103. package/client-tmp/web-components/tsconfig.json +1 -1
  104. package/package.json +1 -1
  105. package/server/README.md +1 -1
  106. package/server/build.gradle.kts +6 -3
  107. package/server/gradle.properties +2 -1
  108. package/server/settings.gradle.kts +6 -5
  109. package/server/{{appName}}-app/src/test/kotlin/global/genesis/EventHandlerTest.kt +1 -1
  110. package/settings.gradle.kts +7 -4
  111. package/testData/excel/.gitkeep +0 -0
  112. package/client-tmp/angular/karma.conf.js +0 -9
  113. package/client-tmp/angular/src/app/app.component.spec.ts +0 -23
  114. package/client-tmp/react/env.development.json +0 -3
  115. package/client-tmp/react/jest.config.js +0 -10
  116. package/client-tmp/react/lint-css.js +0 -18
  117. package/client-tmp/react/src/guards/AuthGuard.tsx +0 -32
  118. package/client-tmp/react/src/guards/PermissionsGuard.tsx +0 -37
  119. package/client-tmp/react/src/index.js +0 -17
  120. package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.jsx +0 -13
  121. package/client-tmp/react/src/reportWebVitals.js +0 -13
  122. package/client-tmp/react/vite.config.js +0 -59
  123. /package/client-tmp/react/{jest.setup.js → jest.setup.ts} +0 -0
  124. /package/client-tmp/react/src/{setupTests.js → setupTests.ts} +0 -0
  125. /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
- This project has been created from the Genesis Blank Application Seed. Our seeds allow users to quickly bootstrap
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
- # Introduction
34
+ # Getting started with development
38
35
 
39
- ## Next Steps
36
+ ## Next steps
40
37
 
41
- To get a simple application running check the [Quick Start](https://learn.genesis.global/docs/getting-started/quick-start/) guide.
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
- If you need an introduction to the Genesis platform and its modules it's worth heading [here](https://learn.genesis.global/docs/getting-started/learn-the-basics/simple-introduction/).
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 Client
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 low-code platform
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": "ng 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
- "karma": "~6.4.0",
61
- "karma-chrome-launcher": "~3.2.0",
62
- "karma-coverage": "~2.2.0",
63
- "karma-jasmine": "~5.1.0",
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 = jasmine.createSpy('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,9 +1,8 @@
1
- /* To learn more about this file see: https://angular.io/config/tsconfig. */
2
1
  {
3
2
  "extends": "./tsconfig.json",
4
3
  "compilerOptions": {
5
4
  "outDir": "./out-tsc/app",
6
- "types": ["node"],
5
+ "types": ["node"]
7
6
  },
8
7
  "files": [
9
8
  "src/main.ts"
@@ -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
- "jasmine"
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/**/*.d.ts",
12
- "src/pbc/**/*.ts",
13
- "src/**/*.spec.ts"
18
+ "src/**/*.spec.ts",
19
+ "src/**/*.d.ts"
14
20
  ]
15
- }
21
+ }
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "presets": [
3
3
  "@babel/preset-env",
4
- "@babel/preset-react"
4
+ "@babel/preset-react",
5
+ "@babel/preset-typescript"
5
6
  ],
6
7
  "plugins": [
7
8
  "react-require"
@@ -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
- ## Development
7
-
8
- 1. Install dependencies:
6
+ ## Install dependencies:
9
7
 
10
8
  ```shell
11
9
  npm run bootstrap
12
10
  ```
13
11
 
14
- 2. Start the development server:
12
+ ## Development server
15
13
 
16
- ```shell
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
- 3. Build for production:
16
+ ## Build
21
17
 
22
- ```shell
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
- Preview the production build:
20
+ ## Running unit tests
27
21
 
28
- ```shell
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
- ## Clean
24
+ ## Running end-to-end tests
33
25
 
34
- Remove `build` and `node_modules` directories:
26
+ Run `npm run test:e2e` to execute the end-to-end tests.
35
27
 
36
- ```shell
37
- npm run clean
38
- ```
28
+ ## Linting
39
29
 
40
- Baseline task combines `clean` and `install` tasks into a single command:
30
+ Run `npm run lint` to lint the project.
41
31
 
42
- ```shell
43
- npm run baseline
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": "vite 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": "vite",
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/**/*.js src/**/*.jsx",
19
- "lint:fix": "eslint src/**/*.js src/**/*.jsx --fix",
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.js",
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/foundation-layout": "{{versions.UI}}",
56
+ "@genesislcap/web-core": "{{versions.UI}}",
47
57
  "@genesislcap/g2plot-chart": "{{versions.UI}}",
48
58
  "history": "^5.3.0",
49
- "react": "^19.0.0-beta-94eed63c49-20240425",
50
- "react-dom": "^19.0.0-beta-94eed63c49-20240425",
51
- "react-router-dom": "6.24.1"
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.24.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.0.0",
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": "npm:types-react@alpha",
68
- "@types/react-dom": "npm:types-react-dom@alpha",
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": "^4.6.2",
75
- "eslint-plugin-react-refresh": "^0.4.7",
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
- "overrides": {
82
- "@types/react": "npm:types-react@alpha",
83
- "@types/react-dom": "npm:types-react-dom@alpha"
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
  }
@@ -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>