@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.
- package/.genx/.genxrc.js +9 -0
- package/.genx/configure.js +15 -0
- package/.genx/details.js +23 -0
- package/.genx/package.json +48 -0
- package/.genx/prompts/api.js +48 -0
- package/.genx/prompts/server.js +28 -0
- package/.genx/prompts/validators.js +10 -0
- package/.genx/prompts.js +22 -0
- package/.genx/scripts/health-check.sh +23 -0
- package/.genx/scripts/init-gradle.sh +21 -0
- package/.genx/scripts/update-versions.js +36 -0
- package/.genx/tests/fixtures/testapp/client/src/routes/home/home.template.ts +6 -0
- package/.genx/tests/fixtures/testapp/docker-compose.yml +20 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-fields-dictionary.kts +20 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-processes.xml +36 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-service-definitions.xml +16 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-config/src/main/resources/cfg/testapp-tables-dictionary.kts +26 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-dataserver.kts +13 -0
- package/.genx/tests/fixtures/testapp/server/jvm/testapp-script-config/src/main/resources/scripts/testapp-eventhandler.kts +21 -0
- package/.genx/versions.json +5 -0
- package/.vscode/settings.json +1 -0
- package/CHANGELOG.md +42 -0
- package/LICENSE +54 -0
- package/README.md +67 -0
- package/build.gradle.kts +15 -0
- package/client/.prettierignore +14 -0
- package/client/Dockerfile +12 -0
- package/client/README.md +88 -0
- package/client/build.gradle.kts +100 -0
- package/client/docs/images/lsp_jetbrains_one.png +0 -0
- package/client/docs/images/lsp_jetbrains_two.png +0 -0
- package/client/docs/images/lsp_vscode_one.png +0 -0
- package/client/docs/images/lsp_vscode_two.png +0 -0
- package/client/index.html +24 -0
- package/client/package.json +106 -0
- package/client/playwright.config.ts +1 -0
- package/client/public/favicon.ico +0 -0
- package/client/public/initSSO.js +49 -0
- package/client/settings.gradle.kts +1 -0
- package/client/src/components/components.ts +57 -0
- package/client/src/components/index.ts +1 -0
- package/client/src/index.federated.ts +1 -0
- package/client/src/index.ts +1 -0
- package/client/src/layouts/default.ts +135 -0
- package/client/src/layouts/index.ts +1 -0
- package/client/src/main/index.ts +2 -0
- package/client/src/main/main.css +17 -0
- package/client/src/main/main.styles.ts +21 -0
- package/client/src/main/main.template.ts +21 -0
- package/client/src/main/main.ts +95 -0
- package/client/src/routes/config.ts +142 -0
- package/client/src/routes/home/home.styles.ts +7 -0
- package/client/src/routes/home/home.template.ts +6 -0
- package/client/src/routes/home/home.ts +14 -0
- package/client/src/routes/index.ts +1 -0
- package/client/src/routes/not-found/not-found.styles.ts +11 -0
- package/client/src/routes/not-found/not-found.template.ts +6 -0
- package/client/src/routes/not-found/not-found.ts +16 -0
- package/client/src/styles/design-tokens.json +56 -0
- package/client/src/styles/index.ts +2 -0
- package/client/src/styles/styles.ts +30 -0
- package/client/src/styles/typography.ts +25 -0
- package/client/src/types.ts +5 -0
- package/client/src/utils/index.ts +1 -0
- package/client/src/utils/logger.ts +3 -0
- package/client/test/README.md +3 -0
- package/client/test/e2e/fixture.ts +25 -0
- package/client/test/e2e/flows/001-protected.e2e.ts +6 -0
- package/client/test/e2e/index.ts +2 -0
- package/client/test/e2e/pages/index.ts +1 -0
- package/client/test/e2e/pages/protected.ts +16 -0
- package/docker-compose.yml +42 -0
- package/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/gradle.properties +3 -0
- package/gradlew +249 -0
- package/gradlew.bat +92 -0
- package/package.json +23 -0
- package/server/jvm/README.md +27 -0
- package/server/jvm/build.gradle.kts +100 -0
- package/server/jvm/docker-scripts/configureDB.sh +12 -0
- package/server/jvm/docker-scripts/docker-entrypoint.sh +7 -0
- package/server/jvm/docker-scripts/genesisInstall.sh +5 -0
- package/server/jvm/docker-scripts/remap.sh +23 -0
- package/server/jvm/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/server/jvm/gradle/wrapper/gradle-wrapper.properties +7 -0
- package/server/jvm/gradle.properties +10 -0
- package/server/jvm/gradlew +249 -0
- package/server/jvm/gradlew.bat +92 -0
- package/server/jvm/settings.gradle.kts +60 -0
- package/server/jvm/{{appName}}-config/build.gradle.kts +8 -0
- package/server/jvm/{{appName}}-config/src/main/kotlin/donotdelete.txt +1 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-fields-dictionary.kts +14 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-processes.xml +15 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-service-definitions.xml +15 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-system-definition.kts +20 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-tables-dictionary.kts +14 -0
- package/server/jvm/{{appName}}-config/src/main/resources/cfg/{{appName}}-view-dictionary.kts +13 -0
- package/server/jvm/{{appName}}-deploy/build.gradle.kts +35 -0
- package/server/jvm/{{appName}}-dictionary-cache/build.gradle.kts +13 -0
- package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-dao/build.gradle.kts +1 -0
- package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-fields/build.gradle.kts +1 -0
- package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-hft/build.gradle.kts +1 -0
- package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-sysdef/build.gradle.kts +1 -0
- package/server/jvm/{{appName}}-dictionary-cache/{{appName}}-generated-view/build.gradle.kts +1 -0
- package/server/jvm/{{appName}}-distribution/build.gradle.kts +97 -0
- package/server/jvm/{{appName}}-eventhandler/build.gradle.kts +13 -0
- package/server/jvm/{{appName}}-eventhandler/src/test/resources/GenesisHome/donotdelete.txt +0 -0
- package/server/jvm/{{appName}}-messages/build.gradle.kts +6 -0
- package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/common/readme.md +1 -0
- package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/event/readme.md +1 -0
- package/server/jvm/{{appName}}-messages/src/main/kotlin/global/genesis/message/request/readme.md +1 -0
- package/server/jvm/{{appName}}-messages/src/main/resources/META-INF/global/genesis/message/product-info +1 -0
- package/server/jvm/{{appName}}-script-config/build.gradle.kts +16 -0
- package/server/jvm/{{appName}}-script-config/src/main/kotlin/donotdelete.txt +1 -0
- package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-dataserver.kts +13 -0
- package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-eventhandler.kts +13 -0
- package/server/jvm/{{appName}}-script-config/src/main/resources/scripts/{{appName}}-reqrep.kts +13 -0
- package/server/jvm/{{appName}}-script-config/src/test/kotlin/GenesisTestSupportTest.kt +23 -0
- package/server/jvm/{{appName}}-script-config/src/test/resources/GenesisHome/donotdelete.txt +0 -0
- package/server/jvm/{{appName}}-site-specific/README.md +3 -0
- package/server/jvm/{{appName}}-site-specific/build.gradle.kts +114 -0
- package/server/jvm/{{appName}}-site-specific/src/main/kotlin/donotdelete.txt +1 -0
- package/server/jvm/{{appName}}-site-specific/src/main/resources/cfg/genesis-system-definition.kts +52 -0
- package/server/jvm/{{appName}}-site-specific/src/main/resources/data/user.csv +2 -0
- package/server/nginx/Dockerfile +5 -0
- package/server/nginx/cert.crt +20 -0
- package/server/nginx/cert.key +27 -0
- package/server/nginx/default.conf +40 -0
- 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,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,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,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 @@
|
|
|
1
|
+
export * from './logger';
|
|
@@ -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 @@
|
|
|
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
|
|
Binary file
|