@things-factory/shell 7.0.1-alpha.9 → 7.0.1-alpha.93
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/_index.html +6 -2
- package/client/entries/public/home.js +4 -5
- package/client/index.js +1 -0
- package/client/route.js +11 -0
- package/client/themes/app-theme.css +26 -3
- package/client/themes/layout-theme.css +1 -1
- package/client/themes/material-theme.css +50 -0
- package/client/themes/md-typescale-styles.css +100 -0
- package/dist-server/server-dev.js +1 -5
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/typeorm/round-transform.js +1 -1
- package/dist-server/typeorm/round-transform.js.map +1 -1
- package/package.json +9 -8
- package/server/server-dev.ts +1 -8
- package/server/typeorm/round-transform.ts +1 -1
- package/translations/en.json +2 -1
- package/translations/ja.json +2 -1
- package/translations/ko.json +2 -1
- package/translations/ms.json +2 -1
- package/translations/zh.json +2 -1
- package/views/public/home.html +4 -2
- package/views/template.html +2 -2
- package/client/elements/index.js +0 -3
- package/client/elements/oops-note.js +0 -49
- package/client/elements/oops-progress.js +0 -81
- package/client/elements/oops-spinner.js +0 -31
package/_index.html
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<!
|
1
|
+
<!doctype html>
|
2
2
|
<html lang="en">
|
3
3
|
<head>
|
4
4
|
<meta charset="utf-8" />
|
@@ -52,6 +52,10 @@
|
|
52
52
|
<!-- Performance tip: hint to the browser to start the handshake for the fonts site -->
|
53
53
|
<link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin />
|
54
54
|
<link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
|
55
|
+
<link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
|
56
|
+
<link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
|
57
|
+
<link rel="stylesheet" href="/theme.css" />
|
58
|
+
|
55
59
|
<style>
|
56
60
|
body {
|
57
61
|
margin: 0;
|
@@ -77,7 +81,7 @@
|
|
77
81
|
}
|
78
82
|
</script>
|
79
83
|
</head>
|
80
|
-
<body>
|
84
|
+
<body class="light">
|
81
85
|
<things-app></things-app>
|
82
86
|
<noscript> Please enable JavaScript to view this website. </noscript>
|
83
87
|
<!-- Load webcomponents-loader.js to check and load any polyfills your browser needs -->
|
@@ -1,5 +1,4 @@
|
|
1
|
-
import '@material/
|
2
|
-
import '@material/mwc-button'
|
1
|
+
import '@material/web/icon/icon.js'
|
3
2
|
|
4
3
|
import { css, html, LitElement } from 'lit'
|
5
4
|
|
@@ -12,8 +11,6 @@ export class HomePage extends LitElement {
|
|
12
11
|
|
13
12
|
display: block;
|
14
13
|
position: relative;
|
15
|
-
|
16
|
-
--mdc-theme-primary: white;
|
17
14
|
}
|
18
15
|
|
19
16
|
[home] {
|
@@ -31,10 +28,12 @@ export class HomePage extends LitElement {
|
|
31
28
|
text-align: center;
|
32
29
|
font-size: 20px;
|
33
30
|
}
|
31
|
+
|
34
32
|
[message] strong {
|
35
33
|
display: block;
|
36
34
|
font-size: 2.5rem;
|
37
35
|
}
|
36
|
+
|
38
37
|
[message] img {
|
39
38
|
width: 450px;
|
40
39
|
max-width: 90%;
|
@@ -67,7 +66,7 @@ export class HomePage extends LitElement {
|
|
67
66
|
var { icon, title, description } = this.applicationMeta
|
68
67
|
|
69
68
|
return html`
|
70
|
-
<
|
69
|
+
<md-icon home icon="home" @click=${e => (window.location.href = '/')}>home</md-icon>
|
71
70
|
|
72
71
|
<div message>
|
73
72
|
<strong>${title}</strong>
|
package/client/index.js
CHANGED
package/client/route.js
CHANGED
@@ -1,3 +1,14 @@
|
|
1
|
+
/**
|
2
|
+
* This is the place where the PageElement matching from the contextPath is finally searched.
|
3
|
+
* If it has reached here, it means that the PageElement matching the path has not been found, so it returns the page name 'page404'.
|
4
|
+
* This page displays the Page404 Element implementing the tag name 'page-404'.
|
5
|
+
* Naturally, the mapping implementation for the 'page404' page can be overridden in the parent module.
|
6
|
+
*
|
7
|
+
* 여기는 contextPath로부터 매칭되는 PageElement를 과정에서 맨 마직막에 뒤져지는 곳이다.
|
8
|
+
* 여기까지 들어왔다면, path에 매핑되는 PageElement를 찾지 못한 것이므로, 페이지 이름 'page404' 를 리턴한다.
|
9
|
+
* 이 페이지는 태그네임 'page-404'를 구현한 Page404 Element를 보여주게 된다.
|
10
|
+
* 당연히 상위 모듈에서 'page404' 페이지에 대한 매핑 구현을 오버라이드 할 수 있다.
|
11
|
+
*/
|
1
12
|
export default function route(page) {
|
2
13
|
import('@operato/shell/page-404.js')
|
3
14
|
return 'page404'
|
@@ -82,18 +82,41 @@ body {
|
|
82
82
|
--mdc-button-outline-width: 1px;
|
83
83
|
--mdc-button-horizontal-padding: 16px;
|
84
84
|
|
85
|
+
--md-theme-on-primary: var(--theme-white-color);
|
86
|
+
--md-theme-primary: var(--secondary-text-color);
|
87
|
+
--md-theme-on-secondary: var(--theme-white-color);
|
88
|
+
--md-theme-secondary: var(--primary-color);
|
89
|
+
--md-button-outline-color: var(--primary-color);
|
90
|
+
--md-danger-button-primary-color: var(--status-danger-color);
|
91
|
+
--md-danger-button-outline-color: var(--status-danger-color);
|
92
|
+
--md-button-outline-width: 1px;
|
93
|
+
--md-button-horizontal-padding: 16px;
|
94
|
+
|
95
|
+
--md-theme-on-primary: var(--theme-white-color);
|
96
|
+
--md-theme-primary: var(--secondary-text-color);
|
97
|
+
--md-theme-on-secondary: var(--theme-white-color);
|
98
|
+
--md-theme-secondary: var(--primary-color);
|
99
|
+
--md-button-outline-color: var(--primary-color);
|
100
|
+
--md-danger-button-primary-color: var(--status-danger-color);
|
101
|
+
--md-danger-button-outline-color: var(--status-danger-color);
|
102
|
+
--md-button-outline-width: 1px;
|
103
|
+
--md-button-horizontal-padding: 16px;
|
104
|
+
|
85
105
|
/* button style */
|
86
106
|
--button-background-color: #fafbfc;
|
87
107
|
--button-background-focus-color: var(--primary-color);
|
88
108
|
--button-border: var(--border-dark-color);
|
89
109
|
--button-border-radius: var(--border-radius);
|
90
110
|
--button-margin: var(--margin-default) var(--margin-default) var(--margin-default) 0;
|
91
|
-
--button-padding: var(--padding-
|
111
|
+
--button-padding: calc(var(--padding-narrow) * 1.5) var(--padding-wide);
|
92
112
|
--button-color: var(--secondary-color);
|
93
|
-
--button-font:
|
113
|
+
--button-font: 600 var(--fontsize-default) var(--theme-font);
|
94
114
|
--button-text-transform: capitalize;
|
95
115
|
--button-active-box-shadow: 1px 1px 1px 0px rgba(0, 0, 0, 0.2);
|
96
116
|
--button-activ-border: 1px solid var(--primary-color);
|
117
|
+
--button-activ-background-color: var(--primary-color);
|
118
|
+
--button-activ-color: var(--theme-white-color);
|
119
|
+
--iconbtn-padding: var(--padding-narrow);
|
97
120
|
|
98
121
|
--button-primary-background-color: var(--primary-color);
|
99
122
|
--button-primary-active-background-color: var(--status-success-color);
|
@@ -124,7 +147,7 @@ body {
|
|
124
147
|
--label-color: var(--secondary-color);
|
125
148
|
--label-text-transform: capitalize;
|
126
149
|
--input-margin: var(--margin-narrow) 0;
|
127
|
-
--input-padding:
|
150
|
+
--input-padding: 6px 2px;
|
128
151
|
--input-min-width: 200px;
|
129
152
|
--input-font: normal var(--fontsize-default) var(--theme-font);
|
130
153
|
--input-hint-font: normal var(--fontsize-small) var(--theme-font);
|
@@ -55,7 +55,7 @@ body {
|
|
55
55
|
|
56
56
|
/* components - resize splitter style */
|
57
57
|
--splitter-background-color: rgba(0, 0, 0, 0.1);
|
58
|
-
--splitter-hover-background-color:
|
58
|
+
--splitter-hover-background-color: rgba(0, 0, 0, 0.1);
|
59
59
|
}
|
60
60
|
|
61
61
|
@media only screen and (max-width: 460px) {
|
@@ -0,0 +1,50 @@
|
|
1
|
+
body {
|
2
|
+
font-variation-settings: 'FILL' 1;
|
3
|
+
|
4
|
+
/* meterial theme color */
|
5
|
+
--md-sys-color-primary: var(--primary-color);
|
6
|
+
--md-sys-color-on-primary: var(--theme-white-color);
|
7
|
+
--md-sys-color-secondary: var(--secondary-color);
|
8
|
+
|
9
|
+
--md-sys-shape-corner-small: 4px;
|
10
|
+
--md-sys-shape-corner-medium: 6px;
|
11
|
+
--md-sys-shape-corner-large: 8px;
|
12
|
+
|
13
|
+
--md-sys-shape-corner-full: var(--md-sys-shape-corner-small);
|
14
|
+
|
15
|
+
--md-sys-color-surface-container-high: var(--primary-color);
|
16
|
+
--md-sys-color-surface-container-low: var(--secondary-color);
|
17
|
+
--md-sys-color-surface-container-highest: #e0e3e2;
|
18
|
+
--md-sys-color-surface-container-lowest: var(--secondary-color);
|
19
|
+
--md-sys-typescale-body-large: 400 1rem system-ui;
|
20
|
+
|
21
|
+
--md-filled-text-field-container-shape: 0px;
|
22
|
+
--md-filled-text-field-label-text-color: #3f4948;
|
23
|
+
--md-filled-text-field-input-text-color: #161d1d;
|
24
|
+
|
25
|
+
--md-outlined-text-field-container-shape: 0px;
|
26
|
+
--md-outlined-text-field-label-text-color: #3f4948;
|
27
|
+
--md-outlined-text-field-input-text-color: #161d1d;
|
28
|
+
|
29
|
+
--md-outlined-select-text-field-outline-color: #6e7979;
|
30
|
+
--md-outlined-select-text-field-container-shape: 0px;
|
31
|
+
--md-outlined-select-text-field-input-text-color: #005353;
|
32
|
+
--md-outlined-select-text-field-input-text-font: system-ui;
|
33
|
+
|
34
|
+
--md-menu-container-color: #f4f7fb;
|
35
|
+
--md-menu-container-shape: 0px;
|
36
|
+
|
37
|
+
--md-fab-container-color: var(--primary-color);
|
38
|
+
--md-fab-icon-color: var(--focus-color);
|
39
|
+
|
40
|
+
--md-checkbox-selected-container-color: var(--secondary-background-color, #6e7979);
|
41
|
+
--md-checkbox-outline-color: var(--secondary-background-color, #6e7979);
|
42
|
+
--md-checkbox-selected-icon-color: var(--focus-color);
|
43
|
+
|
44
|
+
--md-switch-handle-color: var(--secondary-background-color, #6e7979);
|
45
|
+
--md-switch-handle-shape: 9999px;
|
46
|
+
--md-switch-track-color: var(--md-sys-color-surface-container-highest);
|
47
|
+
--md-switch-track-shape: 9999px;
|
48
|
+
--md-switch-selected-handle-color: var(--md-sys-color-on-primary);
|
49
|
+
--md-switch-selected-track-color: var(--md-sys-color-primary);
|
50
|
+
}
|
@@ -0,0 +1,100 @@
|
|
1
|
+
@layer {
|
2
|
+
.md-typescale-display-small,
|
3
|
+
.md-typescale-display-small-prominent {
|
4
|
+
font: var(--md-sys-typescale-display-small-weight, var(--md-ref-typeface-weight-regular, 400))
|
5
|
+
var(--md-sys-typescale-display-small-size, 2.25rem) / var(--md-sys-typescale-display-small-line-height, 2.75rem)
|
6
|
+
var(--md-sys-typescale-display-small-font, var(--md-ref-typeface-brand, Roboto));
|
7
|
+
}
|
8
|
+
.md-typescale-display-medium,
|
9
|
+
.md-typescale-display-medium-prominent {
|
10
|
+
font: var(--md-sys-typescale-display-medium-weight, var(--md-ref-typeface-weight-regular, 400))
|
11
|
+
var(--md-sys-typescale-display-medium-size, 2.8125rem) /
|
12
|
+
var(--md-sys-typescale-display-medium-line-height, 3.25rem)
|
13
|
+
var(--md-sys-typescale-display-medium-font, var(--md-ref-typeface-brand, Roboto));
|
14
|
+
}
|
15
|
+
.md-typescale-display-large,
|
16
|
+
.md-typescale-display-large-prominent {
|
17
|
+
font: var(--md-sys-typescale-display-large-weight, var(--md-ref-typeface-weight-regular, 400))
|
18
|
+
var(--md-sys-typescale-display-large-size, 3.5625rem) / var(--md-sys-typescale-display-large-line-height, 4rem)
|
19
|
+
var(--md-sys-typescale-display-large-font, var(--md-ref-typeface-brand, Roboto));
|
20
|
+
}
|
21
|
+
.md-typescale-headline-small,
|
22
|
+
.md-typescale-headline-small-prominent {
|
23
|
+
font: var(--md-sys-typescale-headline-small-weight, var(--md-ref-typeface-weight-regular, 400))
|
24
|
+
var(--md-sys-typescale-headline-small-size, 1.5rem) / var(--md-sys-typescale-headline-small-line-height, 2rem)
|
25
|
+
var(--md-sys-typescale-headline-small-font, var(--md-ref-typeface-brand, Roboto));
|
26
|
+
}
|
27
|
+
.md-typescale-headline-medium,
|
28
|
+
.md-typescale-headline-medium-prominent {
|
29
|
+
font: var(--md-sys-typescale-headline-medium-weight, var(--md-ref-typeface-weight-regular, 400))
|
30
|
+
var(--md-sys-typescale-headline-medium-size, 1.75rem) /
|
31
|
+
var(--md-sys-typescale-headline-medium-line-height, 2.25rem)
|
32
|
+
var(--md-sys-typescale-headline-medium-font, var(--md-ref-typeface-brand, Roboto));
|
33
|
+
}
|
34
|
+
.md-typescale-headline-large,
|
35
|
+
.md-typescale-headline-large-prominent {
|
36
|
+
font: var(--md-sys-typescale-headline-large-weight, var(--md-ref-typeface-weight-regular, 400))
|
37
|
+
var(--md-sys-typescale-headline-large-size, 2rem) / var(--md-sys-typescale-headline-large-line-height, 2.5rem)
|
38
|
+
var(--md-sys-typescale-headline-large-font, var(--md-ref-typeface-brand, Roboto));
|
39
|
+
}
|
40
|
+
.md-typescale-title-small,
|
41
|
+
.md-typescale-title-small-prominent {
|
42
|
+
font: var(--md-sys-typescale-title-small-weight, var(--md-ref-typeface-weight-medium, 500))
|
43
|
+
var(--md-sys-typescale-title-small-size, 0.875rem) / var(--md-sys-typescale-title-small-line-height, 1.25rem)
|
44
|
+
var(--md-sys-typescale-title-small-font, var(--md-ref-typeface-plain, Roboto));
|
45
|
+
}
|
46
|
+
.md-typescale-title-medium,
|
47
|
+
.md-typescale-title-medium-prominent {
|
48
|
+
font: var(--md-sys-typescale-title-medium-weight, var(--md-ref-typeface-weight-medium, 500))
|
49
|
+
var(--md-sys-typescale-title-medium-size, 1rem) / var(--md-sys-typescale-title-medium-line-height, 1.5rem)
|
50
|
+
var(--md-sys-typescale-title-medium-font, var(--md-ref-typeface-plain, Roboto));
|
51
|
+
}
|
52
|
+
.md-typescale-title-large,
|
53
|
+
.md-typescale-title-large-prominent {
|
54
|
+
font: var(--md-sys-typescale-title-large-weight, var(--md-ref-typeface-weight-regular, 400))
|
55
|
+
var(--md-sys-typescale-title-large-size, 1.375rem) / var(--md-sys-typescale-title-large-line-height, 1.75rem)
|
56
|
+
var(--md-sys-typescale-title-large-font, var(--md-ref-typeface-brand, Roboto));
|
57
|
+
}
|
58
|
+
.md-typescale-body-small,
|
59
|
+
.md-typescale-body-small-prominent {
|
60
|
+
font: var(--md-sys-typescale-body-small-weight, var(--md-ref-typeface-weight-regular, 400))
|
61
|
+
var(--md-sys-typescale-body-small-size, 0.75rem) / var(--md-sys-typescale-body-small-line-height, 1rem)
|
62
|
+
var(--md-sys-typescale-body-small-font, var(--md-ref-typeface-plain, Roboto));
|
63
|
+
}
|
64
|
+
.md-typescale-body-medium,
|
65
|
+
.md-typescale-body-medium-prominent {
|
66
|
+
font: var(--md-sys-typescale-body-medium-weight, var(--md-ref-typeface-weight-regular, 400))
|
67
|
+
var(--md-sys-typescale-body-medium-size, 0.875rem) / var(--md-sys-typescale-body-medium-line-height, 1.25rem)
|
68
|
+
var(--md-sys-typescale-body-medium-font, var(--md-ref-typeface-plain, Roboto));
|
69
|
+
}
|
70
|
+
.md-typescale-body-large,
|
71
|
+
.md-typescale-body-large-prominent {
|
72
|
+
font: var(--md-sys-typescale-body-large-weight, var(--md-ref-typeface-weight-regular, 400))
|
73
|
+
var(--md-sys-typescale-body-large-size, 1rem) / var(--md-sys-typescale-body-large-line-height, 1.5rem)
|
74
|
+
var(--md-sys-typescale-body-large-font, var(--md-ref-typeface-plain, Roboto));
|
75
|
+
}
|
76
|
+
.md-typescale-label-small,
|
77
|
+
.md-typescale-label-small-prominent {
|
78
|
+
font: var(--md-sys-typescale-label-small-weight, var(--md-ref-typeface-weight-medium, 500))
|
79
|
+
var(--md-sys-typescale-label-small-size, 0.6875rem) / var(--md-sys-typescale-label-small-line-height, 1rem)
|
80
|
+
var(--md-sys-typescale-label-small-font, var(--md-ref-typeface-plain, Roboto));
|
81
|
+
}
|
82
|
+
.md-typescale-label-medium,
|
83
|
+
.md-typescale-label-medium-prominent {
|
84
|
+
font: var(--md-sys-typescale-label-medium-weight, var(--md-ref-typeface-weight-medium, 500))
|
85
|
+
var(--md-sys-typescale-label-medium-size, 0.75rem) / var(--md-sys-typescale-label-medium-line-height, 1rem)
|
86
|
+
var(--md-sys-typescale-label-medium-font, var(--md-ref-typeface-plain, Roboto));
|
87
|
+
}
|
88
|
+
.md-typescale-label-medium-prominent {
|
89
|
+
font-weight: var(--md-sys-typescale-label-medium-weight-prominent, var(--md-ref-typeface-weight-bold, 700));
|
90
|
+
}
|
91
|
+
.md-typescale-label-large,
|
92
|
+
.md-typescale-label-large-prominent {
|
93
|
+
font: var(--md-sys-typescale-label-large-weight, var(--md-ref-typeface-weight-medium, 500))
|
94
|
+
var(--md-sys-typescale-label-large-size, 0.875rem) / var(--md-sys-typescale-label-large-line-height, 1.25rem)
|
95
|
+
var(--md-sys-typescale-label-large-font, var(--md-ref-typeface-plain, Roboto));
|
96
|
+
}
|
97
|
+
.md-typescale-label-large-prominent {
|
98
|
+
font-weight: var(--md-sys-typescale-label-large-weight-prominent, var(--md-ref-typeface-weight-bold, 700));
|
99
|
+
}
|
100
|
+
} /*# sourceMappingURL=md-typescale-styles.css.map */
|
@@ -18,7 +18,6 @@ const ws_1 = require("graphql-ws/lib/use/ws");
|
|
18
18
|
const http_1 = require("http");
|
19
19
|
const koa_2 = tslib_1.__importDefault(require("koa"));
|
20
20
|
const koa_bodyparser_1 = tslib_1.__importDefault(require("koa-bodyparser"));
|
21
|
-
const koa_static_1 = tslib_1.__importDefault(require("koa-static"));
|
22
21
|
const koa_compose_1 = tslib_1.__importDefault(require("koa-compose"));
|
23
22
|
const koa2_connect_history_api_fallback_1 = require("koa2-connect-history-api-fallback");
|
24
23
|
const ws_2 = require("ws");
|
@@ -198,12 +197,9 @@ const bootstrap = async () => {
|
|
198
197
|
}));
|
199
198
|
app.use(routers_1.graphqlRouter.routes());
|
200
199
|
app.use(routers_1.graphqlRouter.allowedMethods());
|
201
|
-
/* should follow this order : history-fallback => webpack-middleware
|
200
|
+
/* should follow this order : history-fallback => webpack-middleware */
|
202
201
|
app.use((0, koa2_connect_history_api_fallback_1.historyApiFallback)({ whiteList: [] }));
|
203
202
|
app.use(middleware);
|
204
|
-
app.use((0, koa_static_1.default)(compiler.outputPath, {
|
205
|
-
index: false
|
206
|
-
}));
|
207
203
|
httpServer.listen({ port: PORT }, () => {
|
208
204
|
env_1.logger.info(`🚀 Server ready at http://0.0.0.0:${PORT}/graphql`);
|
209
205
|
env_1.logger.info(`🚀 Subscriptions ready at ws://0.0.0.0:${PORT}/graphql`);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../server/server-dev.ts"],"names":[],"mappings":"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","sourcesContent":["// ts-import-sorter: disable\n\n/* following 7 lines should be located in top of the file */\nconst OS = require('os')\nprocess.env.UV_THREADPOOL_SIZE = OS.cpus().length\n\nconsole.log('UV_THREADPOOL_SIZE', process.env.UV_THREADPOOL_SIZE)\n\nprocess.env.NODE_ENV = 'development'\nprocess.setMaxListeners(0)\n\nimport { ApolloServer } from '@apollo/server'\nimport { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'\nimport { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default'\n\nimport { koaMiddleware } from '@as-integrations/koa'\nimport bytesFormat from 'bytes'\nimport graphqlUploadKoa from 'graphql-upload/graphqlUploadKoa.js'\nimport { useServer } from 'graphql-ws/lib/use/ws'\nimport { createServer } from 'http'\nimport Koa from 'koa'\nimport koaBodyParser from 'koa-bodyparser'\nimport koaStatic from 'koa-static'\nimport compose from 'koa-compose'\nimport { historyApiFallback } from 'koa2-connect-history-api-fallback'\nimport { WebSocketServer } from 'ws'\nimport co from 'co'\nimport http from 'http'\n\nimport koaWebpack from '@hatiolab/koa-webpack'\nimport cors from '@koa/cors'\nimport { config, loader, logger, orderedModuleNames } from '@things-factory/env'\nimport { initLicense, checkValidity } from '@things-factory/operato-license-checker'\n\nimport { GraphqlLocalClient } from './graphql-local-client'\nimport { databaseInitializer } from './initializers/database'\nimport { domainPrivateRouter, domainPublicRouter, globalPrivateRouter, globalPublicRouter, graphqlRouter } from './routers'\nimport { schema } from './schema'\nimport { Domain } from './service'\nimport { EntityManager } from 'typeorm'\nimport { domainMiddleware } from './middlewares'\n\nprocess.on('uncaughtException', error => {\n logger.error('uncaughtException: ', error, error.stack)\n\n //process.exit(1)\n})\n\nconst args = require('args')\n\nargs.option('port', 'The port on which the app will be running', config.get('port', 3000))\nargs.option(\n 'inspect',\n `The address on which the inspection will be running. Used in development mode only.\n This option is just to prevent termination for reasons of not recognizing the 'inspect' option.`,\n config.get('inspect', ':9229')\n)\nargs.option('webpack', 'webpack configuration file', config.get('webpack'))\n\nconst flags = args.parse(process.argv)\n\nconst path = require('path')\nconst webpack = require('webpack')\nconst webpackConfig = require(flags.webpack || '@things-factory/builder/webpack.config.dev.js')\n\nconst compiler = webpack(webpackConfig)\n\nconst PORT = (process.env.PORT = flags.port)\n\nconst requestBody = config.get('requestBody') || {}\n\nconst bodyParserOption = {\n formLimit: requestBody.formLimit || '10mb',\n jsonLimit: requestBody.jsonLimit || '10mb',\n textLimit: requestBody.textLimit || '10mb'\n}\n\nconst fileUpload = config.get('fileUpload') || {}\nconst fileUploadOption = {\n maxFileSize: bytesFormat.parse(fileUpload.maxFileSize) || bytesFormat.parse('10mb'),\n maxFiles: fileUpload.maxFiles || 10\n}\n\ninterface ICustomAppState {\n domain: Domain\n user: any\n tx: EntityManager\n}\n\ninterface ICustomAppContext {\n t: any\n ssoMiddlewares: any[]\n}\n\ninitLicense(config.get('licenseKey'))\n\n/* bootstrap */\nconst bootstrap = async () => {\n await databaseInitializer()\n\n const app = new Koa<ICustomAppState, ICustomAppContext>() as any\n\n app.use(\n cors({\n origin: function (ctx) {\n return ctx.request.headers.origin || '*'\n },\n exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],\n maxAge: 5,\n credentials: true,\n /* allowMethods: ['GET', 'POST', 'DELETE'], -- use default */\n allowHeaders: ['Content-Type', 'Authorization', 'Accept']\n })\n )\n\n var subscriptionMiddleware = []\n process.emit('bootstrap-module-subscription' as any, app, subscriptionMiddleware)\n\n const builtSchema = await schema()\n\n const httpServer = createServer(app.callback())\n const websocketServer = new WebSocketServer({\n server: httpServer,\n path: '/graphql'\n })\n\n // Save the returned server's info so we can shut down this server later\n const serverCleanup = useServer(\n {\n schema: builtSchema,\n context: async (ctx, msg, args) => {\n return ctx['context']\n },\n onConnect: async ctx => {\n var { extra, connectionParams } = ctx\n var { request } = extra\n\n if (((connectionParams['headers'] as any) || connectionParams)?.referer) {\n var url = new URL(((connectionParams['headers'] as any) || connectionParams).referer)\n var accessToken = url.searchParams.get('access_token')\n if (accessToken) {\n connectionParams['headers']['authorization'] = accessToken\n }\n }\n\n request.headers = {\n ...request.headers,\n ...(connectionParams['headers'] || (connectionParams as any))\n }\n\n var koacontext = await app.createContext(request, new http.ServerResponse(request))\n koacontext['state'] = {}\n\n /* in case connect error(like a authentication error) just throw exception */\n var middlewares = [domainMiddleware, ...subscriptionMiddleware]\n const fn = co.wrap(compose(middlewares))\n\n await fn(koacontext)\n\n return (ctx['context'] = koacontext)\n },\n onDisconnect(ctx, code, reason) {\n console.log('Disconnected!')\n },\n onError(ctx, msg, errors) {\n console.error(msg, errors)\n }\n },\n websocketServer\n )\n\n const server = new ApolloServer({\n schema: builtSchema,\n formatError: error => {\n logger.error(error)\n return error\n },\n introspection: true,\n csrfPrevention: true,\n plugins: [\n // Proper shutdown for the HTTP server.\n ApolloServerPluginDrainHttpServer({ httpServer }),\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n }\n }\n }\n },\n // TODO make this landing page work\n ApolloServerPluginLandingPageLocalDefault({\n footer: false,\n embed: true,\n includeCookies: true\n })\n ],\n cache: 'bounded'\n })\n\n await server.start()\n\n GraphqlLocalClient.init(builtSchema, app)\n\n orderedModuleNames.forEach(name => {\n const { initMiddlewares } = loader(name)\n initMiddlewares && initMiddlewares(app)\n })\n\n const render = require('@things-factory/ejs-remote')\n render(app, {\n root: '/views',\n host: `http://127.0.0.1:${PORT}`,\n layout: false,\n viewExt: 'html',\n cache: false,\n debug: false\n })\n\n const middleware = await koaWebpack({\n compiler,\n hotClient: {},\n devMiddleware: {\n publicPath: webpackConfig.output.publicPath,\n stats: { colors: true }\n }\n })\n\n // only for development mode. triggered after webpack compilation is done.\n compiler.hooks.done.tap({ name: 'server-dev' }, stats => {\n process.emit('client-rebuilt' as any, app, compiler.outputFileSystem)\n })\n\n app.use(koaBodyParser(bodyParserOption))\n\n /* routers */\n const ssoMiddlewares = []\n process.emit('bootstrap-collect-sso-middleware' as any, null, ssoMiddlewares)\n app.ssoMiddlewares = ssoMiddlewares\n\n process.emit('bootstrap-module-global-public-route' as any, app, globalPublicRouter)\n process.emit('bootstrap-module-global-private-route' as any, app, globalPrivateRouter)\n process.emit('bootstrap-module-domain-public-route' as any, app, domainPublicRouter)\n process.emit('bootstrap-module-domain-private-route' as any, app, domainPrivateRouter)\n\n app.use(checkValidity) /* Check the license after most of the context has been built */\n\n app\n .use(globalPublicRouter.routes())\n .use(globalPublicRouter.allowedMethods())\n .use(globalPrivateRouter.routes())\n .use(globalPrivateRouter.allowedMethods())\n .use(domainPublicRouter.routes())\n .use(domainPublicRouter.allowedMethods())\n .use(domainPrivateRouter.routes())\n .use(domainPrivateRouter.allowedMethods())\n\n /* Graphql Upload's multipart/form-data handling affects the restful file upload feature, so it should be placed after the routers configuration. */\n app.use(graphqlUploadKoa(fileUploadOption))\n\n graphqlRouter.post(\n '/graphql',\n koaMiddleware(server, {\n context: async ({ ctx }) => ctx\n })\n )\n app.use(graphqlRouter.routes())\n app.use(graphqlRouter.allowedMethods())\n\n /* should follow this order : history-fallback => webpack-middleware => koaStatic */\n app.use(historyApiFallback({ whiteList: [] }))\n\n app.use(middleware)\n\n app.use(\n koaStatic(compiler.outputPath, {\n index: false\n })\n )\n\n httpServer.listen({ port: PORT }, () => {\n logger.info(`🚀 Server ready at http://0.0.0.0:${PORT}/graphql`)\n logger.info(`🚀 Subscriptions ready at ws://0.0.0.0:${PORT}/graphql`)\n\n process.emit('bootstrap-module-start' as any, { app, config, builtSchema, httpServer } as any)\n })\n}\n\nbootstrap()\n"]}
|
1
|
+
{"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../server/server-dev.ts"],"names":[],"mappings":"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","sourcesContent":["// ts-import-sorter: disable\n\n/* following 7 lines should be located in top of the file */\nconst OS = require('os')\nprocess.env.UV_THREADPOOL_SIZE = OS.cpus().length\n\nconsole.log('UV_THREADPOOL_SIZE', process.env.UV_THREADPOOL_SIZE)\n\nprocess.env.NODE_ENV = 'development'\nprocess.setMaxListeners(0)\n\nimport { ApolloServer } from '@apollo/server'\nimport { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer'\nimport { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default'\n\nimport { koaMiddleware } from '@as-integrations/koa'\nimport bytesFormat from 'bytes'\nimport graphqlUploadKoa from 'graphql-upload/graphqlUploadKoa.js'\nimport { useServer } from 'graphql-ws/lib/use/ws'\nimport { createServer } from 'http'\nimport Koa from 'koa'\nimport koaBodyParser from 'koa-bodyparser'\nimport compose from 'koa-compose'\nimport { historyApiFallback } from 'koa2-connect-history-api-fallback'\nimport { WebSocketServer } from 'ws'\nimport co from 'co'\nimport http from 'http'\n\nimport koaWebpack from '@hatiolab/koa-webpack'\nimport cors from '@koa/cors'\nimport { config, loader, logger, orderedModuleNames } from '@things-factory/env'\nimport { initLicense, checkValidity } from '@things-factory/operato-license-checker'\n\nimport { GraphqlLocalClient } from './graphql-local-client'\nimport { databaseInitializer } from './initializers/database'\nimport { domainPrivateRouter, domainPublicRouter, globalPrivateRouter, globalPublicRouter, graphqlRouter } from './routers'\nimport { schema } from './schema'\nimport { Domain } from './service'\nimport { EntityManager } from 'typeorm'\nimport { domainMiddleware } from './middlewares'\n\nprocess.on('uncaughtException', error => {\n logger.error('uncaughtException: ', error, error.stack)\n\n //process.exit(1)\n})\n\nconst args = require('args')\n\nargs.option('port', 'The port on which the app will be running', config.get('port', 3000))\nargs.option(\n 'inspect',\n `The address on which the inspection will be running. Used in development mode only.\n This option is just to prevent termination for reasons of not recognizing the 'inspect' option.`,\n config.get('inspect', ':9229')\n)\nargs.option('webpack', 'webpack configuration file', config.get('webpack'))\n\nconst flags = args.parse(process.argv)\n\nconst path = require('path')\nconst webpack = require('webpack')\nconst webpackConfig = require(flags.webpack || '@things-factory/builder/webpack.config.dev.js')\n\nconst compiler = webpack(webpackConfig)\n\nconst PORT = (process.env.PORT = flags.port)\n\nconst requestBody = config.get('requestBody') || {}\n\nconst bodyParserOption = {\n formLimit: requestBody.formLimit || '10mb',\n jsonLimit: requestBody.jsonLimit || '10mb',\n textLimit: requestBody.textLimit || '10mb'\n}\n\nconst fileUpload = config.get('fileUpload') || {}\nconst fileUploadOption = {\n maxFileSize: bytesFormat.parse(fileUpload.maxFileSize) || bytesFormat.parse('10mb'),\n maxFiles: fileUpload.maxFiles || 10\n}\n\ninterface ICustomAppState {\n domain: Domain\n user: any\n tx: EntityManager\n}\n\ninterface ICustomAppContext {\n t: any\n ssoMiddlewares: any[]\n}\n\ninitLicense(config.get('licenseKey'))\n\n/* bootstrap */\nconst bootstrap = async () => {\n await databaseInitializer()\n\n const app = new Koa<ICustomAppState, ICustomAppContext>() as any\n\n app.use(\n cors({\n origin: function (ctx) {\n return ctx.request.headers.origin || '*'\n },\n exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'],\n maxAge: 5,\n credentials: true,\n /* allowMethods: ['GET', 'POST', 'DELETE'], -- use default */\n allowHeaders: ['Content-Type', 'Authorization', 'Accept']\n })\n )\n\n var subscriptionMiddleware = []\n process.emit('bootstrap-module-subscription' as any, app, subscriptionMiddleware)\n\n const builtSchema = await schema()\n\n const httpServer = createServer(app.callback())\n const websocketServer = new WebSocketServer({\n server: httpServer,\n path: '/graphql'\n })\n\n // Save the returned server's info so we can shut down this server later\n const serverCleanup = useServer(\n {\n schema: builtSchema,\n context: async (ctx, msg, args) => {\n return ctx['context']\n },\n onConnect: async ctx => {\n var { extra, connectionParams } = ctx\n var { request } = extra\n\n if (((connectionParams['headers'] as any) || connectionParams)?.referer) {\n var url = new URL(((connectionParams['headers'] as any) || connectionParams).referer)\n var accessToken = url.searchParams.get('access_token')\n if (accessToken) {\n connectionParams['headers']['authorization'] = accessToken\n }\n }\n\n request.headers = {\n ...request.headers,\n ...(connectionParams['headers'] || (connectionParams as any))\n }\n\n var koacontext = await app.createContext(request, new http.ServerResponse(request))\n koacontext['state'] = {}\n\n /* in case connect error(like a authentication error) just throw exception */\n var middlewares = [domainMiddleware, ...subscriptionMiddleware]\n const fn = co.wrap(compose(middlewares))\n\n await fn(koacontext)\n\n return (ctx['context'] = koacontext)\n },\n onDisconnect(ctx, code, reason) {\n console.log('Disconnected!')\n },\n onError(ctx, msg, errors) {\n console.error(msg, errors)\n }\n },\n websocketServer\n )\n\n const server = new ApolloServer({\n schema: builtSchema,\n formatError: error => {\n logger.error(error)\n return error\n },\n introspection: true,\n csrfPrevention: true,\n plugins: [\n // Proper shutdown for the HTTP server.\n ApolloServerPluginDrainHttpServer({ httpServer }),\n // Proper shutdown for the WebSocket server.\n {\n async serverWillStart() {\n return {\n async drainServer() {\n await serverCleanup.dispose()\n }\n }\n }\n },\n // TODO make this landing page work\n ApolloServerPluginLandingPageLocalDefault({\n footer: false,\n embed: true,\n includeCookies: true\n })\n ],\n cache: 'bounded'\n })\n\n await server.start()\n\n GraphqlLocalClient.init(builtSchema, app)\n\n orderedModuleNames.forEach(name => {\n const { initMiddlewares } = loader(name)\n initMiddlewares && initMiddlewares(app)\n })\n\n const render = require('@things-factory/ejs-remote')\n render(app, {\n root: '/views',\n host: `http://127.0.0.1:${PORT}`,\n layout: false,\n viewExt: 'html',\n cache: false,\n debug: false\n })\n\n const middleware = await koaWebpack({\n compiler,\n hotClient: {},\n devMiddleware: {\n publicPath: webpackConfig.output.publicPath,\n stats: { colors: true }\n }\n })\n\n // only for development mode. triggered after webpack compilation is done.\n compiler.hooks.done.tap({ name: 'server-dev' }, stats => {\n process.emit('client-rebuilt' as any, app, compiler.outputFileSystem)\n })\n\n app.use(koaBodyParser(bodyParserOption))\n\n /* routers */\n const ssoMiddlewares = []\n process.emit('bootstrap-collect-sso-middleware' as any, null, ssoMiddlewares)\n app.ssoMiddlewares = ssoMiddlewares\n\n process.emit('bootstrap-module-global-public-route' as any, app, globalPublicRouter)\n process.emit('bootstrap-module-global-private-route' as any, app, globalPrivateRouter)\n process.emit('bootstrap-module-domain-public-route' as any, app, domainPublicRouter)\n process.emit('bootstrap-module-domain-private-route' as any, app, domainPrivateRouter)\n\n app.use(checkValidity) /* Check the license after most of the context has been built */\n\n app\n .use(globalPublicRouter.routes())\n .use(globalPublicRouter.allowedMethods())\n .use(globalPrivateRouter.routes())\n .use(globalPrivateRouter.allowedMethods())\n .use(domainPublicRouter.routes())\n .use(domainPublicRouter.allowedMethods())\n .use(domainPrivateRouter.routes())\n .use(domainPrivateRouter.allowedMethods())\n\n /* Graphql Upload's multipart/form-data handling affects the restful file upload feature, so it should be placed after the routers configuration. */\n app.use(graphqlUploadKoa(fileUploadOption))\n\n graphqlRouter.post(\n '/graphql',\n koaMiddleware(server, {\n context: async ({ ctx }) => ctx\n })\n )\n app.use(graphqlRouter.routes())\n app.use(graphqlRouter.allowedMethods())\n\n /* should follow this order : history-fallback => webpack-middleware */\n app.use(historyApiFallback({ whiteList: [] }))\n\n app.use(middleware)\n\n httpServer.listen({ port: PORT }, () => {\n logger.info(`🚀 Server ready at http://0.0.0.0:${PORT}/graphql`)\n logger.info(`🚀 Subscriptions ready at ws://0.0.0.0:${PORT}/graphql`)\n\n process.emit('bootstrap-module-start' as any, { app, config, builtSchema, httpServer } as any)\n })\n}\n\nbootstrap()\n"]}
|