@genesislcap/blank-app-seed 3.29.2 → 3.30.0-prerelease.10

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 (73) hide show
  1. package/.genx/package.json +1 -1
  2. package/.genx/scripts/update-versions.js +45 -15
  3. package/.genx/templates/angular/entityManager.hbs +3 -0
  4. package/.genx/templates/angular/route.hbs +0 -1
  5. package/.genx/templates/react/chart.hbs +9 -1
  6. package/.genx/templates/react/component/component.column.defs.hbs +4 -2
  7. package/.genx/templates/react/component/component.create.form.hbs +2 -2
  8. package/.genx/templates/react/component/component.gridOptions.hbs +5 -3
  9. package/.genx/templates/react/component/component.hbs +65 -20
  10. package/.genx/templates/react/component/component.index.hbs +1 -1
  11. package/.genx/templates/react/component/component.update.form.hbs +1 -1
  12. package/.genx/templates/react/entityManager.hbs +63 -43
  13. package/.genx/templates/react/form.hbs +9 -1
  14. package/.genx/templates/react/grid.hbs +23 -7
  15. package/.genx/templates/react/gridLayout.hbs +28 -28
  16. package/.genx/templates/react/horizontalLayout.hbs +5 -5
  17. package/.genx/templates/react/route.hbs +4 -19
  18. package/.genx/templates/react/tabsLayout.hbs +5 -5
  19. package/.genx/templates/web-components/entityManager.hbs +3 -0
  20. package/.genx/utils/formatRouteData.js +1 -1
  21. package/.genx/utils/generateRoute.js +8 -7
  22. package/.genx/utils/generateTile.js +31 -15
  23. package/.genx/versions.json +3 -3
  24. package/.github/pull_request_template.md +1 -1
  25. package/.github/workflows/build.yml +3 -2
  26. package/.github/workflows/slack.yml +1 -1
  27. package/.github/workflows/upgrade.yml +6 -1
  28. package/.github/workflows/upgrade_prerelease.yml +1 -0
  29. package/.idea/modules.xml +6 -6
  30. package/CHANGELOG.md +165 -4
  31. package/client-tmp/react/.babelrc +10 -0
  32. package/client-tmp/react/.eslintrc.cjs +4 -1
  33. package/client-tmp/react/env.development.json +3 -0
  34. package/client-tmp/react/index.html +1 -1
  35. package/client-tmp/react/jest.config.ts +15 -0
  36. package/client-tmp/react/jest.setup.ts +1 -0
  37. package/client-tmp/react/lint-css.ts +19 -0
  38. package/client-tmp/react/package.json +42 -6
  39. package/client-tmp/react/playwright.config.ts +17 -0
  40. package/client-tmp/react/src/App.tsx +34 -7
  41. package/client-tmp/react/src/components/ErrorMessage/ErrorMessage.test.tsx +95 -0
  42. package/client-tmp/react/src/components/ErrorMessage/ErrorMessage.tsx +67 -0
  43. package/client-tmp/react/src/config.ts +2 -1
  44. package/client-tmp/react/src/custom-elements.d.ts +19 -9
  45. package/client-tmp/react/src/guards/AuthGuard.tsx +1 -1
  46. package/client-tmp/react/src/guards/PermissionsGuard.tsx +37 -0
  47. package/client-tmp/react/src/index.ts +21 -0
  48. package/client-tmp/react/src/pages/AuthPage/AuthPage.test.tsx +10 -0
  49. package/client-tmp/react/src/pages/{auth/AuthPage.jsx → AuthPage/AuthPage.tsx} +3 -2
  50. package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.css +0 -0
  51. package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.test.tsx +17 -0
  52. package/client-tmp/react/src/pages/NotPermittedPage/NotPermittedPage.tsx +14 -0
  53. package/client-tmp/react/src/{reportWebVitals.js → reportWebVitals.ts} +1 -1
  54. package/client-tmp/react/src/share/foundation-login.ts +1 -1
  55. package/client-tmp/react/src/svg-elements.d.ts +1 -1
  56. package/client-tmp/react/src/utils/fdc3.ts +32 -0
  57. package/client-tmp/react/src/utils/history.ts +1 -3
  58. package/client-tmp/react/src/utils/index.ts +4 -0
  59. package/client-tmp/react/src/utils/permissions.ts +7 -0
  60. package/client-tmp/react/src/utils/setApiHost.ts +9 -0
  61. package/client-tmp/react/test/e2e/fixture.ts +26 -0
  62. package/client-tmp/react/test/e2e/flows/001-protected.e2e.ts +6 -0
  63. package/client-tmp/react/test/e2e/index.ts +2 -0
  64. package/client-tmp/react/test/e2e/pages/index.ts +1 -0
  65. package/client-tmp/react/test/e2e/pages/protected.ts +16 -0
  66. package/client-tmp/react/tsconfig.app.json +2 -5
  67. package/client-tmp/react/tsconfig.json +4 -1
  68. package/client-tmp/react/vite.config.ts +57 -12
  69. package/package.json +1 -1
  70. package/server/settings.gradle.kts +2 -2
  71. package/client-tmp/react/src/index.js +0 -17
  72. /package/client-tmp/react/src/pages/{auth → AuthPage}/AuthPage.css +0 -0
  73. /package/client-tmp/react/src/{setupTests.js → setupTests.ts} +0 -0
@@ -44,17 +44,32 @@ const getPathByFramework = {
44
44
  },
45
45
  [FRAMEWORK_REACT_ALIAS]: {
46
46
  ...defaultPathGetters,
47
+ index: (componentPath) => `${componentPath}/index.tsx`,
47
48
  clientSrcPath: `../../client/src/pages`,
48
- route: (clientSrcPath, tile, routeName) =>
49
- `${clientSrcPath}/${routeName}/${tile.name}-${tile.componentType}`,
50
- component: (componentPath, tile) =>
51
- `${componentPath}/${tile.name}.component.jsx`,
52
- style: (componentPath, tile) =>
53
- `${componentPath}/${tile.name}.component.css`,
49
+ route: (clientSrcPath, tile, routeName, changeCase) =>
50
+ `${clientSrcPath}/${changeCase.pascalCase(routeName)}/${changeCase.pascalCase(tile.name)}${changeCase.pascalCase(tile.componentType)}`,
51
+ component: (componentPath, tile, changeCase) =>
52
+ `${componentPath}/${changeCase.pascalCase(tile.name)}Component.tsx`,
53
+ style: (componentPath, tile, changeCase) =>
54
+ `${componentPath}/${changeCase.pascalCase(tile.name)}Component.css`,
55
+ addForm: (componentPath, tile, changeCase) =>
56
+ `${componentPath}/${changeCase.pascalCase(tile.name)}CreateFormSchema.ts`,
57
+ updateForm: (componentPath, tile, changeCase) =>
58
+ `${componentPath}/${changeCase.pascalCase(tile.name)}UpdateFormSchema.ts`,
59
+ columnDefs: (componentPath, tile, changeCase) =>
60
+ `${componentPath}/${changeCase.pascalCase(tile.name)}ColumnDefs.ts`,
61
+ gridOptions: (componentPath, tile, changeCase) =>
62
+ `${componentPath}/${changeCase.pascalCase(tile.name)}GridOptions.ts`,
54
63
  },
55
64
  };
56
65
 
57
- const getFilesToWrite = (tileData, routeName, path, sourceTemplateDir) => {
66
+ const getFilesToWrite = (
67
+ tileData,
68
+ routeName,
69
+ path,
70
+ sourceTemplateDir,
71
+ changeCase,
72
+ ) => {
58
73
  const {
59
74
  clientSrcPath,
60
75
  route: getRouteDir,
@@ -68,7 +83,7 @@ const getFilesToWrite = (tileData, routeName, path, sourceTemplateDir) => {
68
83
  gridOptions: getGridOptionsTarget,
69
84
  } = path;
70
85
 
71
- const routeDir = getRouteDir(clientSrcPath, tileData, routeName);
86
+ const routeDir = getRouteDir(clientSrcPath, tileData, routeName, changeCase);
72
87
 
73
88
  const componentIndexFile = {
74
89
  source: `${sourceTemplateDir}/component/component.index.hbs`,
@@ -77,32 +92,32 @@ const getFilesToWrite = (tileData, routeName, path, sourceTemplateDir) => {
77
92
 
78
93
  const componentFile = {
79
94
  source: `${sourceTemplateDir}/component/component.hbs`,
80
- target: getComponentTarget(routeDir, tileData),
95
+ target: getComponentTarget(routeDir, tileData, changeCase),
81
96
  };
82
97
 
83
98
  const componentStylesFile = {
84
99
  source: `${sourceTemplateDir}/component/component.styles.hbs`,
85
- target: getStyleTarget(routeDir, tileData),
100
+ target: getStyleTarget(routeDir, tileData, changeCase),
86
101
  };
87
102
 
88
103
  const componentAddFormFile = {
89
104
  source: `${sourceTemplateDir}/component/component.create.form.hbs`,
90
- target: getAddFormTarget(routeDir, tileData),
105
+ target: getAddFormTarget(routeDir, tileData, changeCase),
91
106
  };
92
107
 
93
108
  const componentUpdateFormFile = {
94
109
  source: `${sourceTemplateDir}/component/component.update.form.hbs`,
95
- target: getUpdateFormTarget(routeDir, tileData),
110
+ target: getUpdateFormTarget(routeDir, tileData, changeCase),
96
111
  };
97
112
 
98
113
  const componentColumnsFile = {
99
114
  source: `${sourceTemplateDir}/component/component.column.defs.hbs`,
100
- target: getColumnDefsTarget(routeDir, tileData),
115
+ target: getColumnDefsTarget(routeDir, tileData, changeCase),
101
116
  };
102
117
 
103
118
  const componentGridOptionsFile = {
104
119
  source: `${sourceTemplateDir}/component/component.gridOptions.hbs`,
105
- target: getGridOptionsTarget(routeDir, tileData),
120
+ target: getGridOptionsTarget(routeDir, tileData, changeCase),
106
121
  };
107
122
 
108
123
  const filesToWrite = [componentIndexFile, componentFile, componentStylesFile];
@@ -159,13 +174,14 @@ const generateTile = (
159
174
  const routeName = changeCase.paramCase(route.name);
160
175
  const sourceTemplateDir = `../${DIR_TEMPLATE_BY_FRAMEWORK[framework]}`;
161
176
  const { clientSrcPath, route: getRouteDir } = getPathByFramework[framework];
162
- const routeDir = getRouteDir(clientSrcPath, tileData, routeName);
177
+ const routeDir = getRouteDir(clientSrcPath, tileData, routeName, changeCase);
163
178
 
164
179
  const filesToWrite = getFilesToWrite(
165
180
  tileData,
166
181
  routeName,
167
182
  getPathByFramework[framework],
168
183
  sourceTemplateDir,
184
+ changeCase,
169
185
  );
170
186
 
171
187
  makeDirectory(resolve(__dirname, routeDir));
@@ -1,5 +1,5 @@
1
1
  {
2
- "UI": "14.200.0",
3
- "GSF": "8.2.4",
4
- "Auth": "8.2.1"
2
+ "UI": "14.208.0",
3
+ "GSF": "8.4.0-beta1",
4
+ "Auth": "8.4.0-beta1"
5
5
  }
@@ -36,7 +36,7 @@ rm -rf blankappseedtest && npx -y @genesislcap/genx@latest init blankappseedtest
36
36
  ### Route and CSV parameter handling test
37
37
 
38
38
  ```
39
- rm -rf blankappseedtest && npx -y @genesislcap/genx@latest init blankappseedtest --ref %YOUR-BRANCH-NAME% --no-npm -x --routes '[{"name":"Home","tiles":[{"title":"Entity manager","type":"entity-manager","config":{ "modalPosition": "centre", "sizeColumnsToFit": true, "enableSearchBar": true, "resourceName":"ALL_POSITIONS","title":"My Positions","updateEvent":"EVENT_COUNTERPARTY_MODIFY","deleteEvent":"EVENT_COUNTERPARTY_DELETE","createEvent":"EVENT_COUNTERPARTY_INSERT", "createFormUiSchema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline create schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]}, "updateFormUiSchema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline update schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]}, "columns": [{"field":"INSTRUMENT_NAME","headerName":"Instrument Name"},{"field":"VALUE","headerName":"Inline coldef - VALUE"},{"field":"QUANTITY","headerName":"Quantity"},{"field":"PNL","headerName":"PNL"}] }},{"title":"Grid","type":"grid-pro","config":{"resourceName":"ALL_TRADES", "gridOptions": {"columnDefs":[{"field":"INSTRUMENT_NAME","headerName":"Instrument Name"},{"field":"VALUE","headerName":"Inline coldef - VALUE"},{"field":"QUANTITY","headerName":"Quantity"},{"field":"PNL","headerName":"PNL"}]} }},{"title":"Form","type":"smart-form","config":{"resourceName":"EVENT_COUNTERPARTY_INSERT", "uischema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline form schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]} }}]}, {"name":"Realtime Dashboard","tiles":[{"title":"Entity manager tile","type":"entity-manager","config":{"resourceName":"ALL_COUNTERPARTYS","title":"Counterparty Management","updateEvent":"EVENT_COUNTERPARTY_MODIFY","deleteEvent":"EVENT_COUNTERPARTY_DELETE","createEvent":"EVENT_COUNTERPARTY_INSERT"}},{"title":"Form tile","type":"smart-form","config":{"resourceName":"EVENT_COUNTERPARTY_INSERT"}}]},{"name":"Analytics","tiles":[{"title":"Grid Tile","type":"grid-pro","config":{"resourceName":"ALL_POSITIONS"}},{"title":"Charts Tile 1","type":"chart","config":{"type":"line","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_NAME","yField":"VALUE"}},{"title":"Charts Tile 2","type":"chart","config":{"type":"pie","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_NAME","yField":"VALUE"}},{"title":"Charts Tile 3","type":"chart","config":{"type":"column","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_ID","yField":"VALUE"}}]}]' --csv '[{"name": "trade", "fields": ["a", "B"]}, {"name": "position", "fields": ["id", "TYPE"]} ]' --apiHost 'wss://public-foundation.genesislab.global/gwf/' --no-shell && cd blankappseedtest/client && npm run bootstrap && npm run dev
39
+ rm -rf blankappseedtest && npx -y @genesislcap/genx@latest init blankappseedtest --ref %YOUR-BRANCH-NAME% --no-npm -x --routes '[{"name":"Home","tiles":[{"title":"Entity manager","type":"entity-manager","config":{ "modalPosition": "centre", "sizeColumnsToFit": true, "enableSearchBar": true, "resourceName":"ALL_POSITIONS","title":"My Positions","updateEvent":"EVENT_COUNTERPARTY_MODIFY","deleteEvent":"EVENT_COUNTERPARTY_DELETE","createEvent":"EVENT_COUNTERPARTY_INSERT", "createFormUiSchema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline create schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]}, "updateFormUiSchema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline update schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]}, "columns": [{"field":"INSTRUMENT_NAME","headerName":"Instrument Name"},{"field":"VALUE","headerName":"Inline coldef - VALUE"},{"field":"QUANTITY","headerName":"Quantity"},{"field":"PNL","headerName":"PNL"}] }},{"title":"Grid","type":"grid-pro","config":{"resourceName":"ALL_TRADES", "gridOptions": {"columns":[{"field":"INSTRUMENT_NAME","headerName":"Instrument Name"},{"field":"VALUE","headerName":"Inline coldef - VALUE"},{"field":"QUANTITY","headerName":"Quantity"},{"field":"PNL","headerName":"PNL"}]} }},{"title":"Form","type":"smart-form","config":{"resourceName":"EVENT_COUNTERPARTY_INSERT", "uischema": {"type":"VerticalLayout","elements":[{"type":"Control","label":"Inline form schema - main contact","scope":"#/properties/MAIN_CONTACT"},{"type":"Control","label":"Issuer Name - Local Schema","scope":"#/properties/ISSUER_NAME","options":{"readonly":true}},{"type":"Control","label":"Price","scope":"#/properties/PRICE"},{"type":"Control","scope":"#/properties/COUNTERPARTY","options":{"allOptionsResourceName":"ALL_COUNTERPARTYS","valueField":"COUNTERPARTY_ID","labelField":"COUNTERPARTY_ID"}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"isPassword":true}},{"type":"Control","label":"Password","scope":"#/properties/PASSWORD","options":{"textarea":true}}]} }}]}, {"name":"Realtime Dashboard","tiles":[{"title":"Entity manager tile","type":"entity-manager","config":{"resourceName":"ALL_COUNTERPARTYS","title":"Counterparty Management","updateEvent":"EVENT_COUNTERPARTY_MODIFY","deleteEvent":"EVENT_COUNTERPARTY_DELETE","createEvent":"EVENT_COUNTERPARTY_INSERT"}},{"title":"Form tile","type":"smart-form","config":{"resourceName":"EVENT_COUNTERPARTY_INSERT"}}]},{"name":"Analytics","tiles":[{"title":"Grid Tile","type":"grid-pro","config":{"resourceName":"ALL_POSITIONS"}},{"title":"Charts Tile 1","type":"chart","config":{"type":"line","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_NAME","yField":"VALUE"}},{"title":"Charts Tile 2","type":"chart","config":{"type":"pie","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_NAME","yField":"VALUE"}},{"title":"Charts Tile 3","type":"chart","config":{"type":"column","resourceName":"ALL_POSITIONS","xField":"INSTRUMENT_ID","yField":"VALUE"}}]}]' --csv '[{"name": "trade", "fields": ["a", "B"]}, {"name": "position", "fields": ["id", "TYPE"]} ]' --apiHost 'wss://public-foundation.genesislab.global/gwf/' --no-shell && cd blankappseedtest/client && npm run bootstrap && npm run dev
40
40
  ```
41
41
 
42
42
  ✅   **Checklist**
@@ -15,6 +15,7 @@ jobs:
15
15
  genesisArtifactoryUser: ${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_USER }}
16
16
  genesisArtifactoryPassword: ${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_KEY }}
17
17
  USE_DOCKER: 1
18
+ GRADLE_PARAMS: ${{ github.base_ref == 'prerelease' && '-PuseDevRepo=true' || '' }}
18
19
  runs-on: ubuntu-latest
19
20
  steps:
20
21
  - uses: actions/checkout@v4
@@ -46,7 +47,7 @@ jobs:
46
47
 
47
48
  - name: Build sample app
48
49
  working-directory: /tmp/testapp
49
- run: ./gradlew build --info
50
+ run: ./gradlew ${GRADLE_PARAMS} build --info
50
51
 
51
52
  - name: Lint UI
52
53
  working-directory: /tmp/testapp/client
@@ -62,7 +63,7 @@ jobs:
62
63
 
63
64
  - name: Create Server Dockerfile
64
65
  working-directory: /tmp/testapp
65
- run: ./gradlew :server:testapp-app:createDockerfile --info
66
+ run: ./gradlew ${GRADLE_PARAMS} :server:testapp-app:createDockerfile --info
66
67
 
67
68
  - name: Build Docker images
68
69
  working-directory: /tmp/testapp
@@ -2,7 +2,7 @@ name: Slack PR notification
2
2
 
3
3
  on:
4
4
  pull_request:
5
- branches: [main]
5
+ branches: [main, prerelease]
6
6
  types: [opened, reopened]
7
7
 
8
8
  jobs:
@@ -11,6 +11,10 @@ on:
11
11
  type: boolean
12
12
  required: false
13
13
  description: Only update if there are newer patch versions
14
+ skip-server:
15
+ type: boolean
16
+ required: false
17
+ description: Skip updating server dependencies
14
18
  secrets:
15
19
  GH_USER_TOKEN:
16
20
  required: true
@@ -26,6 +30,7 @@ jobs:
26
30
  env:
27
31
  BRANCH: ${{ inputs.branch }}
28
32
  PATCH_ARG: ${{ inputs.patch-only && '--patch-only' || '' }}
33
+ SKIP_SERVER_ARG: ${{ inputs.skip-server && '--skip-server' || '' }}
29
34
  steps:
30
35
  - uses: actions/checkout@v4
31
36
  with:
@@ -47,7 +52,7 @@ jobs:
47
52
  jfrog config add --artifactory-url="https://genesisglobal.jfrog.io/artifactory" --user="${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_USER }}" --password="${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_KEY }}" --interactive=false
48
53
 
49
54
  - name: Update to latest versions if available
50
- run: node .genx/scripts/update-versions ${PATCH_ARG}
55
+ run: node .genx/scripts/update-versions ${PATCH_ARG} ${SKIP_SERVER_ARG}
51
56
 
52
57
  - name: Check for changes
53
58
  id: versions
@@ -12,6 +12,7 @@ jobs:
12
12
  uses: ./.github/workflows/upgrade.yml
13
13
  with:
14
14
  branch: prerelease
15
+ skip-server: true
15
16
  secrets:
16
17
  GH_USER_TOKEN: ${{ secrets.GH_USER_TOKEN }}
17
18
  JFROG_LIBS_RELEASE_CLIENT_RO_USER: ${{ secrets.JFROG_LIBS_RELEASE_CLIENT_RO_USER }}
package/.idea/modules.xml CHANGED
@@ -2,12 +2,12 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.main.iml" />
6
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-fields/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-fields.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-fields/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-fields.main.iml" />
7
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-dao/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-dao.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-dao/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-dao.main.iml" />
8
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-view/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-view.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-view/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-view.main.iml" />
9
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-hft/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-hft.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-hft/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-hft.main.iml" />
10
- <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-sysdef.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/genesisproduct-{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-sysdef.main.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}.{{appName}}-dictionary-cache.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}.{{appName}}-dictionary-cache.main.iml" />
6
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-fields/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-fields.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-fields/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-fields.main.iml" />
7
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-dao/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-dao.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-dao/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-dao.main.iml" />
8
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-view/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-view.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-view/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-view.main.iml" />
9
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-hft/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-hft.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-hft/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-hft.main.iml" />
10
+ <module fileurl="file://$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-sysdef.main.iml" filepath="$PROJECT_DIR$/.idea/modules/server/build/internal-modules/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/{{appName}}.{{appName}}-dictionary-cache.{{appName}}-generated-sysdef.main.iml" />
11
11
  </modules>
12
12
  </component>
13
13
  </project>
package/CHANGELOG.md CHANGED
@@ -1,18 +1,179 @@
1
1
  # Changelog
2
2
 
3
- ## [3.29.2](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1...v3.29.2) (2024-08-15)
3
+ ## [3.30.0-prerelease.10](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.9...v3.30.0-prerelease.10) (2024-09-13)
4
4
 
5
5
 
6
6
  ### Bug Fixes
7
7
 
8
- * handling multiple hyphens when generating DB namespace PA-1361 (#318) 2dbaadb, closes PSD-9 PSD-9 PSD-0 PSD-0 PSD-0 PSD-0 PTC-0
8
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#342) d255814
9
9
 
10
- ## [3.29.1](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.0...v3.29.1) (2024-08-14)
10
+ ## [3.30.0-prerelease.9](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.8...v3.30.0-prerelease.9) (2024-09-12)
11
+
12
+
13
+ ### Features
14
+
15
+ * integrate TypeScript support into react - [FUI-2157](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/2157) (#338) ac55e1f
16
+
17
+ ## [3.30.0-prerelease.8](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.7...v3.30.0-prerelease.8) (2024-09-11)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * updating server version information for Auth [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 09ba9a2
23
+
24
+ ## [3.30.0-prerelease.7](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.6...v3.30.0-prerelease.7) (2024-09-11)
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 5d4f8da
30
+
31
+ ## [3.30.0-prerelease.6](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.5...v3.30.0-prerelease.6) (2024-09-10)
32
+
33
+
34
+ ### Features
35
+
36
+ * product name specified with settings plugin property (#331) 082cea0
37
+
38
+ ## [3.30.0-prerelease.5](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.4...v3.30.0-prerelease.5) (2024-09-09)
39
+
40
+
41
+ ### Bug Fixes
42
+
43
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#341) 1d38563
44
+
45
+ ## [3.30.0-prerelease.4](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.3...v3.30.0-prerelease.4) (2024-09-06)
46
+
47
+
48
+ ### Features
49
+
50
+ * add unit tests - [FUI-2173](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/2173) (#332) a4168f3
51
+
52
+ ## [3.30.0-prerelease.3](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.2...v3.30.0-prerelease.3) (2024-09-06)
53
+
54
+
55
+ ### Bug Fixes
56
+
57
+ * update GSF and Auth dependency versions [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#336) d5d69e6
58
+
59
+ ## [3.30.0-prerelease.2](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.30.0-prerelease.1...v3.30.0-prerelease.2) (2024-09-06)
60
+
61
+
62
+ ### Bug Fixes
63
+
64
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#334) 3af309b
65
+
66
+ ## [3.30.0-prerelease.1](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.15...v3.30.0-prerelease.1) (2024-09-05)
67
+
68
+
69
+ ### Features
70
+
71
+ * add entityLabel so toast popups tell us the type of entity added GENC-762 (#333) 692bda0
72
+
73
+ ## [3.29.1-prerelease.15](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.14...v3.29.1-prerelease.15) (2024-09-05)
74
+
75
+
76
+ ### Bug Fixes
77
+
78
+ * updating server version information for Auth [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 9e491e3
79
+
80
+ ## [3.29.1-prerelease.14](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.13...v3.29.1-prerelease.14) (2024-09-05)
81
+
82
+
83
+ ### Bug Fixes
84
+
85
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) a9473e4
86
+
87
+ ## [3.29.1-prerelease.13](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.12...v3.29.1-prerelease.13) (2024-09-05)
88
+
89
+
90
+ ### Bug Fixes
91
+
92
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#328) 626c48b
93
+
94
+ ## [3.29.1-prerelease.12](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.11...v3.29.1-prerelease.12) (2024-09-03)
95
+
96
+
97
+ ### Bug Fixes
98
+
99
+ * update unit test commands in package.json (#329) 290a3ab
100
+
101
+ ## [3.29.1-prerelease.11](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.10...v3.29.1-prerelease.11) (2024-08-28)
102
+
103
+
104
+ ### Bug Fixes
105
+
106
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#323) aea0500
107
+
108
+ ## [3.29.1-prerelease.10](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.9...v3.29.1-prerelease.10) (2024-08-23)
109
+
110
+
111
+ ### Bug Fixes
112
+
113
+ * updating server version information for Auth [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 940ebbc
114
+
115
+ ## [3.29.1-prerelease.9](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.8...v3.29.1-prerelease.9) (2024-08-23)
116
+
117
+
118
+ ### Bug Fixes
119
+
120
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) fea6c6f
121
+
122
+ ## [3.29.1-prerelease.8](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.7...v3.29.1-prerelease.8) (2024-08-23)
123
+
124
+
125
+ ### Bug Fixes
126
+
127
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 0fbf0b3
128
+
129
+ ## [3.29.1-prerelease.7](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.6...v3.29.1-prerelease.7) (2024-08-20)
130
+
131
+
132
+ ### Bug Fixes
133
+
134
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#321) b5d9dd9
135
+
136
+ ## [3.29.1-prerelease.6](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.5...v3.29.1-prerelease.6) (2024-08-20)
137
+
138
+
139
+ ### Bug Fixes
140
+
141
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) f18c4cf
142
+
143
+ ## [3.29.1-prerelease.5](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.4...v3.29.1-prerelease.5) (2024-08-16)
144
+
145
+
146
+ ### Bug Fixes
147
+
148
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) a2c959c
149
+
150
+ ## [3.29.1-prerelease.4](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.3...v3.29.1-prerelease.4) (2024-08-16)
151
+
152
+
153
+ ### Bug Fixes
154
+
155
+ * updating server version information for GSF [PSD-0](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/0) 872539b
156
+
157
+ ## [3.29.1-prerelease.3](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.2...v3.29.1-prerelease.3) (2024-08-15)
158
+
159
+
160
+ ### Bug Fixes
161
+
162
+ * useonlytemplatecols not enabled from create GENC-703 (#316) 93c9e9f
163
+
164
+ ## [3.29.1-prerelease.2](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.1-prerelease.1...v3.29.1-prerelease.2) (2024-08-15)
165
+
166
+
167
+ ### Bug Fixes
168
+
169
+ * handling multiple hyphens when generating DB namespace PA-1361 (#317) ceda4bb
170
+
171
+ ## [3.29.1-prerelease.1](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.29.0...v3.29.1-prerelease.1) (2024-08-14)
11
172
 
12
173
 
13
174
  ### Bug Fixes
14
175
 
15
- * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#313) 2b62917
176
+ * automated dependency version update [skip-ci] [PSD-9](https://github.com/genesiscommunitysuccess/blank-app-seed/issues/9) (#314) 5070baa
16
177
 
17
178
  ## [3.29.0](https://github.com/genesiscommunitysuccess/blank-app-seed/compare/v3.28.6...v3.29.0) (2024-08-13)
18
179
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "presets": [
3
+ "@babel/preset-env",
4
+ "@babel/preset-react",
5
+ "@babel/preset-typescript"
6
+ ],
7
+ "plugins": [
8
+ "react-require"
9
+ ]
10
+ }
@@ -1,6 +1,6 @@
1
1
  module.exports = {
2
2
  root: true,
3
- env: { browser: true, es2020: true },
3
+ env: { browser: true, es2020: true, node: true, jest: true },
4
4
  extends: [
5
5
  'eslint:recommended',
6
6
  'plugin:@typescript-eslint/recommended',
@@ -10,6 +10,9 @@ module.exports = {
10
10
  parser: '@typescript-eslint/parser',
11
11
  plugins: ['react-refresh'],
12
12
  rules: {
13
+ '@typescript-eslint/no-explicit-any': 'off',
14
+ '@typescript-eslint/no-unused-vars': 'off',
15
+ '@typescript-eslint/no-var-requires': 'off',
13
16
  'react-refresh/only-export-components': [
14
17
  'warn',
15
18
  { allowConstantExport: true },
@@ -0,0 +1,3 @@
1
+ {
2
+ "VITE_API_HOST": "{{apiHost}}"
3
+ }
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
- <title>{{pkgName}}</title>
7
+ <title>{{capitalCase appName}}</title>
8
8
  </head>
9
9
  <body>
10
10
  <div id="root"></div>
@@ -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 @@
1
+ import '@testing-library/jest-dom';
@@ -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
+ }
@@ -5,12 +5,26 @@
5
5
  "scripts": {
6
6
  "baseline": "npm run clean && npm run bootstrap",
7
7
  "bootstrap": "npm i --legacy-peer-deps",
8
+ "bootstrap:ci": "npm ci --no-fund --no-audit",
9
+ "build": "vite build",
10
+ "build:stats": "npm run build --stats-json",
11
+ "clean": "genx clean dist node_modules",
8
12
  "dev": "vite",
9
- "build": "tsc -b && vite build",
10
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
11
- "serve": "vite preview",
12
- "clean": "rm -rf node_modules dist",
13
- "lint:fix": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0 --fix"
13
+ "dev:docker": "npm run dev -- --host 0.0.0.0",
14
+ "dev:no-open": "NO_OPEN=true npm run dev",
15
+ "dev:intellij": "npm run dev",
16
+ "dev:https": "HTTPS=true npm run dev",
17
+ "dsconfig": "dsconfig --path src/styles/design-tokens.json",
18
+ "lint": "eslint src/**/*.ts src/**/*.tsx",
19
+ "lint:fix": "eslint src/**/*.ts src/**/*.tsx --fix",
20
+ "lint:eslint": "npm lint",
21
+ "lint:stylelint": "npx ts-node lint-css.ts",
22
+ "test": "jest",
23
+ "test:coverage": "jest --coverage",
24
+ "test:unit:watch": "jest --watchAll",
25
+ "test:e2e": "genx test --e2e",
26
+ "test:e2e:debug": "genx test --e2e --debug",
27
+ "test:e2e:ui": "genx test --e2e --interactive"
14
28
  },
15
29
  "dependencies": {
16
30
  "@ag-grid-community/client-side-row-model": "29.2.0",
@@ -19,6 +33,9 @@
19
33
  "@ag-grid-enterprise/core": "29.2.0",
20
34
  "@ag-grid-enterprise/row-grouping": "29.2.0",
21
35
  "@ag-grid-enterprise/server-side-row-model": "29.2.0",
36
+ {{#if FDC3.includeDependencies}}
37
+ "@genesislcap/foundation-fdc3": "{{versions.UI}}",
38
+ {{/if}}
22
39
  "@genesislcap/foundation-comms": "{{versions.UI}}",
23
40
  "@genesislcap/foundation-login": "{{versions.UI}}",
24
41
  "@genesislcap/foundation-entity-management": "{{versions.UI}}",
@@ -31,18 +48,37 @@
31
48
  "history": "^5.3.0",
32
49
  "react": "^19.0.0-beta-94eed63c49-20240425",
33
50
  "react-dom": "^19.0.0-beta-94eed63c49-20240425",
34
- "react-router-dom": "6.24.1"
51
+ "react-router-dom": "6.24.1",
52
+ "web-vitals": "^2.1.4"
35
53
  },
36
54
  "devDependencies": {
55
+ "@babel/core": "^7.25.2",
56
+ "@babel/preset-env": "^7.25.4",
57
+ "@babel/preset-react": "^7.24.7",
58
+ "@genesislcap/design-system-configurator": "{{versions.UI}}",
59
+ "@genesislcap/eslint-config": "{{versions.UI}}",
60
+ "@genesislcap/prettier-config": "{{versions.UI}}",
61
+ "@genesislcap/foundation-testing": "{{versions.UI}}",
62
+ "@genesislcap/genx": "{{versions.UI}}",
63
+ "@genesislcap/build-kit": "{{versions.UI}}",
64
+ "@testing-library/dom": "^10.4.0",
65
+ "@testing-library/jest-dom": "^6.5.0",
66
+ "@testing-library/react": "^16.0.0",
67
+ "@types/jest": "^29.5.12",
37
68
  "@types/node": "^20.14.10",
38
69
  "@types/react": "npm:types-react@alpha",
39
70
  "@types/react-dom": "npm:types-react-dom@alpha",
40
71
  "@typescript-eslint/eslint-plugin": "^7.13.1",
41
72
  "@typescript-eslint/parser": "^7.13.1",
42
73
  "@vitejs/plugin-react": "^4.3.1",
74
+ "babel-plugin-react-require": "^4.0.3",
43
75
  "eslint": "^8.57.0",
44
76
  "eslint-plugin-react-hooks": "^4.6.2",
45
77
  "eslint-plugin-react-refresh": "^0.4.7",
78
+ "jest": "^29.7.0",
79
+ "jest-environment-jsdom": "^29.7.0",
80
+ "ts-jest": "^29.2.5",
81
+ "ts-node": "^10.9.2",
46
82
  "typescript": "^5.2.2",
47
83
  "vite": "^5.3.1"
48
84
  },
@@ -0,0 +1,17 @@
1
+ import { configDefaults } from '@genesislcap/foundation-testing/e2e';
2
+
3
+ export const PROTOCOL = process.env['PROTOCOL'] || 'http';
4
+ export const HOST = process.env['HOST'] || 'localhost';
5
+ export const PORT: number = Number(process.env['PORT']) || 5173;
6
+
7
+ export default {
8
+ ...configDefaults,
9
+ webServer: {
10
+ ...configDefaults.webServer,
11
+ url: `${PROTOCOL}://${HOST}:${PORT}`,
12
+ },
13
+ use: {
14
+ ...configDefaults.use,
15
+ baseURL: `${PROTOCOL}://${HOST}:${PORT}`,
16
+ }
17
+ };