@genesislcap/blank-app-seed 1.5.2

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 (130) hide show
  1. package/.genx/.genxrc.js +9 -0
  2. package/.genx/configure.js +15 -0
  3. package/.genx/details.js +23 -0
  4. package/.genx/package.json +48 -0
  5. package/.genx/prompts/api.js +48 -0
  6. package/.genx/prompts/server.js +28 -0
  7. package/.genx/prompts/validators.js +10 -0
  8. package/.genx/prompts.js +22 -0
  9. package/.genx/scripts/health-check.sh +23 -0
  10. package/.genx/scripts/init-gradle.sh +21 -0
  11. package/.genx/scripts/update-versions.js +36 -0
  12. package/.genx/tests/fixtures/testapp/client/src/routes/home/home.template.ts +6 -0
  13. package/.genx/tests/fixtures/testapp/docker-compose.yml +20 -0
  14. package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-fields-dictionary.kts +20 -0
  15. package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-processes.xml +36 -0
  16. package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-service-definitions.xml +16 -0
  17. package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-tables-dictionary.kts +26 -0
  18. package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-dataserver.kts +13 -0
  19. package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-eventhandler.kts +21 -0
  20. package/.genx/versions.json +5 -0
  21. package/.vscode/settings.json +1 -0
  22. package/CHANGELOG.md +42 -0
  23. package/LICENSE +54 -0
  24. package/README.md +67 -0
  25. package/build.gradle.kts +15 -0
  26. package/client/.prettierignore +14 -0
  27. package/client/Dockerfile +12 -0
  28. package/client/README.md +88 -0
  29. package/client/build.gradle.kts +100 -0
  30. package/client/docs/images/lsp_jetbrains_one.png +0 -0
  31. package/client/docs/images/lsp_jetbrains_two.png +0 -0
  32. package/client/docs/images/lsp_vscode_one.png +0 -0
  33. package/client/docs/images/lsp_vscode_two.png +0 -0
  34. package/client/index.html +24 -0
  35. package/client/package.json +106 -0
  36. package/client/playwright.config.ts +1 -0
  37. package/client/public/favicon.ico +0 -0
  38. package/client/public/initSSO.js +49 -0
  39. package/client/settings.gradle.kts +1 -0
  40. package/client/src/components/components.ts +57 -0
  41. package/client/src/components/index.ts +1 -0
  42. package/client/src/index.federated.ts +1 -0
  43. package/client/src/index.ts +1 -0
  44. package/client/src/layouts/default.ts +135 -0
  45. package/client/src/layouts/index.ts +1 -0
  46. package/client/src/main/index.ts +2 -0
  47. package/client/src/main/main.css +17 -0
  48. package/client/src/main/main.styles.ts +21 -0
  49. package/client/src/main/main.template.ts +21 -0
  50. package/client/src/main/main.ts +95 -0
  51. package/client/src/routes/config.ts +142 -0
  52. package/client/src/routes/home/home.styles.ts +7 -0
  53. package/client/src/routes/home/home.template.ts +6 -0
  54. package/client/src/routes/home/home.ts +14 -0
  55. package/client/src/routes/index.ts +1 -0
  56. package/client/src/routes/not-found/not-found.styles.ts +11 -0
  57. package/client/src/routes/not-found/not-found.template.ts +6 -0
  58. package/client/src/routes/not-found/not-found.ts +16 -0
  59. package/client/src/styles/design-tokens.json +56 -0
  60. package/client/src/styles/index.ts +2 -0
  61. package/client/src/styles/styles.ts +30 -0
  62. package/client/src/styles/typography.ts +25 -0
  63. package/client/src/types.ts +5 -0
  64. package/client/src/utils/index.ts +1 -0
  65. package/client/src/utils/logger.ts +3 -0
  66. package/client/test/README.md +3 -0
  67. package/client/test/e2e/fixture.ts +25 -0
  68. package/client/test/e2e/flows/001-protected.e2e.ts +6 -0
  69. package/client/test/e2e/index.ts +2 -0
  70. package/client/test/e2e/pages/index.ts +1 -0
  71. package/client/test/e2e/pages/protected.ts +16 -0
  72. package/docker-compose.yml +42 -0
  73. package/gradle/wrapper/gradle-wrapper.jar +0 -0
  74. package/gradle/wrapper/gradle-wrapper.properties +7 -0
  75. package/gradle.properties +3 -0
  76. package/gradlew +249 -0
  77. package/gradlew.bat +92 -0
  78. package/package.json +23 -0
  79. package/server/jvm/README.md +27 -0
  80. package/server/jvm/build.gradle.kts +100 -0
  81. package/server/jvm/docker-scripts/configureDB.sh +12 -0
  82. package/server/jvm/docker-scripts/docker-entrypoint.sh +7 -0
  83. package/server/jvm/docker-scripts/genesisInstall.sh +5 -0
  84. package/server/jvm/docker-scripts/remap.sh +23 -0
  85. package/server/jvm/gradle/wrapper/gradle-wrapper.jar +0 -0
  86. package/server/jvm/gradle/wrapper/gradle-wrapper.properties +7 -0
  87. package/server/jvm/gradle.properties +10 -0
  88. package/server/jvm/gradlew +249 -0
  89. package/server/jvm/gradlew.bat +92 -0
  90. package/server/jvm/settings.gradle.kts +60 -0
  91. package/server/jvm/{{appName}}-config/build.gradle.kts +8 -0
  92. package/server/jvm/{{appName}}-config/src/main/kotlin/donotdelete.txt +1 -0
  93. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-fields-dictionary.kts +14 -0
  94. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-processes.xml +15 -0
  95. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-service-definitions.xml +15 -0
  96. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-system-definition.kts +20 -0
  97. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-tables-dictionary.kts +14 -0
  98. package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-view-dictionary.kts +13 -0
  99. package/server/jvm/{{appName}}-deploy/build.gradle.kts +35 -0
  100. package/server/jvm/{{appName}}-dictionary-cache/build.gradle.kts +13 -0
  101. package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-dao/build.gradle.kts +1 -0
  102. package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-fields/build.gradle.kts +1 -0
  103. package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-hft/build.gradle.kts +1 -0
  104. package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/build.gradle.kts +1 -0
  105. package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-view/build.gradle.kts +1 -0
  106. package/server/jvm/{{appName}}-distribution/build.gradle.kts +97 -0
  107. package/server/jvm/{{appName}}-eventhandler/build.gradle.kts +13 -0
  108. package/server/jvm/{{appName}}-eventhandler/src/test/resources/GenesisHome/donotdelete.txt +0 -0
  109. package/server/jvm/{{appName}}-messages/build.gradle.kts +6 -0
  110. package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/common/readme.md +1 -0
  111. package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/event/readme.md +1 -0
  112. package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/request/readme.md +1 -0
  113. package/server/jvm/{{appName}}-messages/src/main/resources/META-INF/global/genesis/message/product-info +1 -0
  114. package/server/jvm/{{appName}}-script-config/build.gradle.kts +16 -0
  115. package/server/jvm/{{appName}}-script-config/src/main/kotlin/donotdelete.txt +1 -0
  116. package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-dataserver.kts +13 -0
  117. package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-eventhandler.kts +13 -0
  118. package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-reqrep.kts +13 -0
  119. package/server/jvm/{{appName}}-script-config/src/test/kotlin/GenesisTestSupportTest.kt +23 -0
  120. package/server/jvm/{{appName}}-script-config/src/test/resources/GenesisHome/donotdelete.txt +0 -0
  121. package/server/jvm/{{appName}}-site-specific/README.md +3 -0
  122. package/server/jvm/{{appName}}-site-specific/build.gradle.kts +114 -0
  123. package/server/jvm/{{appName}}-site-specific/src/main/kotlin/donotdelete.txt +1 -0
  124. package/server/jvm/{{appName}}-site-specific/src/main/resources/cfg/genesis-system-definition.kts +52 -0
  125. package/server/jvm/{{appName}}-site-specific/src/main/resources/data/user.csv +2 -0
  126. package/server/nginx/Dockerfile +5 -0
  127. package/server/nginx/cert.crt +20 -0
  128. package/server/nginx/cert.key +27 -0
  129. package/server/nginx/default.conf +40 -0
  130. package/settings.gradle.kts +35 -0
@@ -0,0 +1,21 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { stylesFontFaces } from '../styles';
3
+ import './main.css';
4
+
5
+ export const MainStyles = css`
6
+ ${stylesFontFaces}
7
+ :host {
8
+ contain: content;
9
+
10
+ --nav-height: 60px;
11
+ }
12
+
13
+ :host,
14
+ zero-design-system-provider,
15
+ .dynamic-template,
16
+ fast-router {
17
+ display: flex;
18
+ width: 100%;
19
+ height: 100%;
20
+ }
21
+ `;
@@ -0,0 +1,21 @@
1
+ import { html, ref } from '@microsoft/fast-element';
2
+ import type { ViewTemplate } from '@microsoft/fast-element';
3
+ import type { MainApplication } from './main';
4
+
5
+ export const DynamicTemplate: ViewTemplate<MainApplication> = html`
6
+ <zero-design-system-provider ${ref('provider')}>
7
+ <div class="dynamic-template">${(x) => x.selectTemplate()}</div>
8
+ </zero-design-system-provider>
9
+ `;
10
+
11
+ export const LoadingTemplate: ViewTemplate<MainApplication> = html`
12
+ <zero-progress-ring></zero-progress-ring>
13
+ `;
14
+
15
+ export const MainTemplate: ViewTemplate<MainApplication> = html`
16
+ <fast-router
17
+ @luminance-icon-clicked=${(x) => x.onDarkModeToggle()}
18
+ :config=${(x) => x.config}
19
+ :navigation=${(x) => x.navigation}
20
+ ></fast-router>
21
+ `;
@@ -0,0 +1,95 @@
1
+ import { Connect, ConnectConfig, defaultConnectConfig } from '@genesislcap/foundation-comms';
2
+ import { Navigation } from '@genesislcap/foundation-header';
3
+ import { configureDesignSystem } from '@genesislcap/foundation-ui';
4
+ import { baseLayerLuminance, StandardLuminance } from '@microsoft/fast-components';
5
+ import { FASTElement, customElement, observable, DOM } from '@microsoft/fast-element';
6
+ import { Container, inject, Registration } from '@microsoft/fast-foundation';
7
+ import { DefaultRouteRecognizer } from '@microsoft/fast-router';
8
+ import * as Components from '../components';
9
+ import { MainRouterConfig } from '../routes';
10
+ import designTokens from '../styles/design-tokens.json';
11
+ import { logger } from '../utils';
12
+ import { MainStyles as styles } from './main.styles';
13
+ import { DynamicTemplate as template, LoadingTemplate, MainTemplate } from './main.template';
14
+
15
+ // eslint-disable-next-line
16
+ declare var API_HOST: string;
17
+
18
+ const hostEnv = location.host;
19
+ const hostUrl = API_HOST || `wss://${hostEnv}/gwf/`;
20
+
21
+ @customElement({
22
+ name: '{{rootElement}}',
23
+ template,
24
+ styles,
25
+ })
26
+ export class MainApplication extends FASTElement {
27
+ @inject(MainRouterConfig) config!: MainRouterConfig;
28
+ @inject(Navigation) navigation!: Navigation;
29
+ @Connect connect!: Connect;
30
+ @Container container!: Container;
31
+ @observable provider!: any;
32
+ @observable ready: boolean = false;
33
+ @observable data: any = null;
34
+
35
+ async connectedCallback() {
36
+ super.connectedCallback();
37
+ logger.debug('{{rootElement}} is now connected to the DOM');
38
+ this.registerDIDependencies();
39
+ await this.loadRemotes();
40
+ DOM.queueUpdate(() => {
41
+ configureDesignSystem(this.provider, designTokens);
42
+ });
43
+ }
44
+
45
+ disconnectedCallback() {
46
+ super.disconnectedCallback();
47
+ }
48
+
49
+ onDarkModeToggle() {
50
+ baseLayerLuminance.setValueFor(
51
+ this.provider,
52
+ baseLayerLuminance.getValueFor(this.provider) === StandardLuminance.DarkMode
53
+ ? StandardLuminance.LightMode
54
+ : StandardLuminance.DarkMode,
55
+ );
56
+ }
57
+
58
+ async loadRemotes() {
59
+ await Components.loadRemotes();
60
+ /**
61
+ * Simulate loading delay
62
+ * await new Promise(resolve => setTimeout(resolve, 3000));
63
+ */
64
+ this.ready = true;
65
+ }
66
+
67
+ public selectTemplate() {
68
+ return this.ready ? MainTemplate : LoadingTemplate;
69
+ }
70
+
71
+ private registerDIDependencies() {
72
+ this.container.register(
73
+ Registration.transient(DefaultRouteRecognizer, DefaultRouteRecognizer),
74
+ /**
75
+ * Register custom configs for core services and micro frontends. Note this can also be done via
76
+ * provideDesignSystem().register(...) if preferred.
77
+ *
78
+ * Registration.instance<CredentialManagerConfig>(CredentialManagerConfig, {
79
+ * ...defaultCredentialManagerConfig,
80
+ * cookie: {
81
+ * ...defaultCredentialManagerConfig.cookie,
82
+ * path: '/login',
83
+ * },
84
+ * }),
85
+ */
86
+ Registration.instance<ConnectConfig>(ConnectConfig, {
87
+ ...defaultConnectConfig,
88
+ connect: {
89
+ ...defaultConnectConfig.connect,
90
+ heartbeatInterval: 15_000,
91
+ },
92
+ }),
93
+ );
94
+ }
95
+ }
@@ -0,0 +1,142 @@
1
+ import {
2
+ Auth,
3
+ FoundationAnalytics,
4
+ FoundationAnalyticsEvent,
5
+ FoundationAnalyticsEventType,
6
+ Session,
7
+ } from '@genesislcap/foundation-comms';
8
+ import {
9
+ defaultLoginConfig,
10
+ LoginConfig,
11
+ Settings as LoginSettings,
12
+ } from '@genesislcap/foundation-login';
13
+ import { Constructable } from '@microsoft/fast-element';
14
+ import { Container, optional } from '@microsoft/fast-foundation';
15
+ import { Route, RouterConfiguration } from '@microsoft/fast-router';
16
+ import { defaultLayout, loginLayout } from '../layouts';
17
+ import { Home } from './home/home';
18
+ import { NotFound } from './not-found/not-found';
19
+
20
+ // eslint-disable-next-line
21
+ declare var ENABLE_SSO: string;
22
+
23
+ const ssoSettings =
24
+ typeof ENABLE_SSO !== 'undefined' && ENABLE_SSO === 'true'
25
+ ? {
26
+ autoAuth: true,
27
+ sso: {
28
+ toggled: true,
29
+ identityProvidersPath: 'sso/list',
30
+ },
31
+ }
32
+ : {};
33
+
34
+ export class MainRouterConfig extends RouterConfiguration<LoginSettings> {
35
+ constructor(
36
+ @Auth private auth: Auth,
37
+ @Container private container: Container,
38
+ @FoundationAnalytics private analytics: FoundationAnalytics,
39
+ @Session private session: Session,
40
+ @optional(LoginConfig)
41
+ private loginConfig: LoginConfig = { ...defaultLoginConfig, autoAuth: true, autoConnect: true },
42
+ ) {
43
+ super();
44
+ }
45
+
46
+ public allRoutes = [{ index: 1, path: 'home', title: 'Home', icon: 'home', variant: 'solid' }];
47
+
48
+ public configure() {
49
+ this.title = 'Blank App Demo';
50
+ this.defaultLayout = defaultLayout;
51
+
52
+ const authPath = 'login';
53
+
54
+ this.routes.map(
55
+ { path: '', redirect: authPath },
56
+ {
57
+ path: authPath,
58
+ name: 'login',
59
+ title: 'Login',
60
+ element: async () => {
61
+ const { configure, define } = await import(
62
+ /* webpackChunkName: "foundation-login" */
63
+ '@genesislcap/foundation-login'
64
+ );
65
+ configure(this.container, {
66
+ autoConnect: true,
67
+ defaultRedirectUrl: 'home',
68
+ ...ssoSettings,
69
+ });
70
+ return define({
71
+ name: `{{rootElement}}-login`,
72
+ /**
73
+ * You can augment the template and styles here when needed.
74
+ */
75
+ });
76
+ },
77
+ layout: loginLayout,
78
+ settings: { public: true },
79
+ childRouters: true,
80
+ },
81
+ { path: 'home', element: Home, title: 'Home', name: 'home' },
82
+ { path: 'not-found', element: NotFound, title: 'Not Found', name: 'not-found' },
83
+ );
84
+
85
+ const auth = this.auth;
86
+
87
+ /**
88
+ * Example of a FallbackRouteDefinition
89
+ */
90
+ this.routes.fallback(() =>
91
+ this.auth.isLoggedIn ? { redirect: 'not-found' } : { redirect: authPath },
92
+ );
93
+
94
+ /**
95
+ * Example of a NavigationContributor
96
+ */
97
+ this.contributors.push({
98
+ navigate: async (phase) => {
99
+ const settings = phase.route.settings;
100
+
101
+ this.analytics.trackEvent(FoundationAnalyticsEventType.routeChanged, <
102
+ FoundationAnalyticsEvent.RouteChanged
103
+ >{
104
+ path: phase.route.endpoint.path,
105
+ });
106
+
107
+ /**
108
+ * If public route don't block
109
+ */
110
+ if (settings && settings.public) {
111
+ return;
112
+ }
113
+
114
+ /**
115
+ * If logged in don't block
116
+ */
117
+ if (this.auth.isLoggedIn) {
118
+ return;
119
+ }
120
+
121
+ /**
122
+ * If allowAutoAuth and session is valid try to connect+auto-login
123
+ */
124
+ if (this.loginConfig.autoAuth && (await auth.reAuthFromSession())) {
125
+ return;
126
+ }
127
+
128
+ /**
129
+ * Otherwise route them somewhere, like to a login
130
+ */
131
+ phase.cancel(() => {
132
+ this.session.captureReturnUrl();
133
+ Route.name.replace(phase.router, authPath);
134
+ });
135
+ },
136
+ });
137
+ }
138
+
139
+ public construct<T>(Type: Constructable<T>): T {
140
+ return this.container.get(Type) as T;
141
+ }
142
+ }
@@ -0,0 +1,7 @@
1
+ import { css } from '@microsoft/fast-element';
2
+
3
+ export const HomeStyles = css`
4
+ :host {
5
+ /* insert css styles here */
6
+ }
7
+ `;
@@ -0,0 +1,6 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ import type { Home } from './home';
3
+
4
+ export const HomeTemplate = html<Home>`
5
+ <!-- insert template code here -->
6
+ `;
@@ -0,0 +1,14 @@
1
+ import { customElement, FASTElement } from '@microsoft/fast-element';
2
+ import { HomeStyles as styles } from './home.styles';
3
+ import { HomeTemplate as template } from './home.template';
4
+
5
+ @customElement({
6
+ name: 'home-route',
7
+ template,
8
+ styles,
9
+ })
10
+ export class Home extends FASTElement {
11
+ constructor() {
12
+ super();
13
+ }
14
+ }
@@ -0,0 +1 @@
1
+ export * from './config';
@@ -0,0 +1,11 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { mixinScreen } from '../../styles';
3
+
4
+ export const NotFoundStyles = css`
5
+ :host {
6
+ ${mixinScreen('flex')}
7
+
8
+ align-items: center;
9
+ justify-content: center;
10
+ }
11
+ `;
@@ -0,0 +1,6 @@
1
+ import { html } from '@microsoft/fast-element';
2
+ import type { NotFound } from './not-found';
3
+
4
+ export const NotFoundTemplate = html<NotFound>`
5
+ <h1>Not found! 404</h1>
6
+ `;
@@ -0,0 +1,16 @@
1
+ import { customElement, FASTElement } from '@microsoft/fast-element';
2
+ import { logger } from '../../utils';
3
+ import { NotFoundStyles as styles } from './not-found.styles';
4
+ import { NotFoundTemplate as template } from './not-found.template';
5
+
6
+ @customElement({
7
+ name: 'not-found-route',
8
+ template,
9
+ styles,
10
+ })
11
+ export class NotFound extends FASTElement {
12
+ public connectedCallback() {
13
+ super.connectedCallback();
14
+ logger.debug(`${name} is now connected to the DOM`);
15
+ }
16
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "design_tokens": {
3
+ "color": {
4
+ "accent": {
5
+ "$value": "#0EAFE2",
6
+ "$type": "color"
7
+ },
8
+ "neutral": {
9
+ "$value": "#7C909B",
10
+ "$type": "color"
11
+ }
12
+ },
13
+ "fontFamily": {
14
+ "bodyFont": {
15
+ "$value": "Roboto, \"Segoe UI\", Arial, Helvetica, sans-serif",
16
+ "$type": "fontFamily"
17
+ }
18
+ },
19
+ "typography": {
20
+ "baseFontSize": {
21
+ "$value": "14px",
22
+ "$type": "dimension"
23
+ },
24
+ "baseLineHeight": {
25
+ "$value": "20px",
26
+ "$type": "dimension"
27
+ }
28
+ },
29
+ "mode": {
30
+ "luminance": {
31
+ "$value": 0.23,
32
+ "$type": "number"
33
+ }
34
+ },
35
+ "style": {
36
+ "density": {
37
+ "$value": 0,
38
+ "$type": "number"
39
+ },
40
+ "borderRadius": {
41
+ "$value": 4,
42
+ "$type": "number"
43
+ },
44
+ "strokeWidth": {
45
+ "$value": 1,
46
+ "$type": "number"
47
+ }
48
+ },
49
+ "space": {
50
+ "designUnit": {
51
+ "$value": 4,
52
+ "$type": "number"
53
+ }
54
+ }
55
+ }
56
+ }
@@ -0,0 +1,2 @@
1
+ export * from './styles';
2
+ export * from './typography';
@@ -0,0 +1,30 @@
1
+ import { css } from '@microsoft/fast-element';
2
+ import { mixinCardTitle } from './typography';
3
+
4
+ export const stylesCardHeading = css`
5
+ header h1 {
6
+ ${mixinCardTitle}
7
+ }
8
+ `;
9
+
10
+ export const mixinScreen = (display: string = 'block') => `
11
+ contain: content;
12
+ display: ${display};
13
+ height: 100%;
14
+ width: 100%;
15
+ overflow-y: auto;
16
+ `;
17
+
18
+ export const mixinCardStyles = `
19
+ padding: calc(var(--design-unit) * 2px);
20
+ `;
21
+
22
+ /**
23
+ * Temp as these parts are being removed from foundation-ui
24
+ */
25
+ export const hideZeroButtonParts = `
26
+ zero-button::part(info1),
27
+ zero-button::part(info2) {
28
+ display: none;
29
+ }
30
+ `;
@@ -0,0 +1,25 @@
1
+ const mixinSegoeUI = (style = 'normal', weight = 'normal') => `
2
+ font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
3
+ font-style: ${style};
4
+ font-weight: ${weight};
5
+ `;
6
+
7
+ export const stylesFontFaces = `
8
+ @font-face {
9
+ font-family: Segoe UI;
10
+ font-weight: 300;
11
+ src: local("Segoe UI Semilight"), local("Segoe UI");
12
+ }
13
+
14
+ * {
15
+ ${mixinSegoeUI()}
16
+ }
17
+ `;
18
+
19
+ export const mixinCardTitle = mixinSegoeUI('normal', 'bold');
20
+
21
+ export const stylesHeaders = `
22
+ h1, h2, h3, h4, h5, h6 {
23
+ margin: 0;
24
+ }
25
+ `;
@@ -0,0 +1,5 @@
1
+ import { DI } from '@microsoft/fast-foundation';
2
+
3
+ export const HostENV = DI.createInterface<string>();
4
+
5
+ export const HostURL = DI.createInterface<string>();
@@ -0,0 +1 @@
1
+ export * from './logger';
@@ -0,0 +1,3 @@
1
+ import { createLogger } from '@genesislcap/foundation-logger';
2
+
3
+ export const logger = createLogger('{{rootElement}}');
@@ -0,0 +1,3 @@
1
+ # Test
2
+
3
+ See [@genesislcap/foundation-testing](https://learn.genesis.global/docs/web/testing/foundation-testing/) for more information.
@@ -0,0 +1,25 @@
1
+ import { base } from '@genesislcap/foundation-testing/e2e';
2
+ import { ProtectedPage } from './pages';
3
+
4
+ const { config: pkgConfig } = require('../../package.json');
5
+
6
+ export type FixtureConfig = {
7
+ API_HOST: string;
8
+ DEFAULT_USER: string;
9
+ DEFAULT_PASSWORD: string;
10
+ PORT: number;
11
+ };
12
+
13
+ export type Fixture = {
14
+ config: FixtureConfig;
15
+ protectedPage: ProtectedPage;
16
+ };
17
+
18
+ export const test = base.extend<Fixture>({
19
+ config: [pkgConfig, { option: true }],
20
+ protectedPage: async ({ config, page }, use) => {
21
+ const protectedPage = new ProtectedPage(config, page);
22
+ await protectedPage.goto();
23
+ await use(protectedPage);
24
+ },
25
+ });
@@ -0,0 +1,6 @@
1
+ import { expect } from '@genesislcap/foundation-testing/e2e';
2
+ import { test } from '../fixture';
3
+
4
+ test('expected page title', async ({ protectedPage, page }) => {
5
+ await expect(page).toHaveTitle(/Blank App Demo - Login - Login/);
6
+ });
@@ -0,0 +1,2 @@
1
+ export * from './fixture';
2
+ export * from './pages';
@@ -0,0 +1 @@
1
+ export * from './protected';
@@ -0,0 +1,16 @@
1
+ import type { Page } from '@genesislcap/foundation-testing/e2e';
2
+ import type { FixtureConfig } from '../fixture';
3
+
4
+ export class ProtectedPage {
5
+ config: FixtureConfig;
6
+ page: Page;
7
+
8
+ constructor(config: FixtureConfig, page: Page) {
9
+ this.config = config;
10
+ this.page = page;
11
+ }
12
+
13
+ async goto() {
14
+ await this.page.goto('/');
15
+ }
16
+ }
@@ -0,0 +1,42 @@
1
+ version: '3.3'
2
+ services:
3
+ gsf:
4
+ tty: true
5
+ container_name: gsf
6
+ build:
7
+ context: server/jvm/{{appName}}-deploy/build/docker/
8
+ dockerfile: Dockerfile
9
+ networks:
10
+ qs_network:
11
+ aliases:
12
+ - localnode
13
+ ports:
14
+ - '9064:9064'
15
+ - '1337:22'
16
+ - '5432:5432'
17
+ - '4569:4569'
18
+ nginx-proxy:
19
+ ports:
20
+ - '80:80'
21
+ - '443:443'
22
+ container_name: nginx
23
+ build:
24
+ context: server/nginx/
25
+ dockerfile: Dockerfile
26
+ networks:
27
+ - qs_network
28
+ frontend:
29
+ container_name: frontend
30
+ build:
31
+ context: client/
32
+ dockerfile: Dockerfile
33
+ volumes:
34
+ - ./client:/app/
35
+ ports:
36
+ - '6060:6060'
37
+ entrypoint: [ "/bin/bash" , "-c", "npm run dev:docker && tail -f /dev/null" ]
38
+ networks:
39
+ - qs_network
40
+ networks:
41
+ qs_network:
42
+ driver: bridge
@@ -0,0 +1,7 @@
1
+ distributionBase=GRADLE_USER_HOME
2
+ distributionPath=wrapper/dists
3
+ distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
4
+ networkTimeout=10000
5
+ validateDistributionUrl=true
6
+ zipStoreBase=GRADLE_USER_HOME
7
+ zipStorePath=wrapper/dists
@@ -0,0 +1,3 @@
1
+ kotlin.code.style=official
2
+ org.gradle.jvmargs=-Xmx6g -Xss512k -XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC -XX:+UseStringDeduplication -XX:ReservedCodeCacheSize=512m -Dkotlin.daemon.jvm.options=-Xmx2g -Dfile.encoding=UTF-8
3
+ org.gradle.caching=true