@things-factory/shell 4.0.39 → 4.0.43
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/client/app/app-style.js +5 -5
- package/client/app/app.js +13 -11
- package/client/app/pages/page-404.js +35 -36
- package/client/index.js +2 -8
- package/config/config.development.js +19 -0
- package/config/config.production.js +20 -0
- package/dist-server/server-dev.js +11 -4
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/server.js +11 -4
- package/dist-server/server.js.map +1 -1
- package/package.json +14 -11
- package/server/server-dev.ts +14 -4
- package/server/server.ts +12 -4
- package/things-factory.config.js +4 -0
- package/client/actions/app.js +0 -12
- package/client/actions/index.js +0 -2
- package/client/actions/route.js +0 -101
- package/client/app/pages/page-view.js +0 -144
- package/client/reducers/app.js +0 -40
- package/client/reducers/route.js +0 -66
package/client/app/app-style.js
CHANGED
@@ -13,11 +13,11 @@ export const AppStyle = css`
|
|
13
13
|
height: 100vh;
|
14
14
|
}
|
15
15
|
|
16
|
-
header-bar {
|
16
|
+
ox-header-bar {
|
17
17
|
grid-area: header;
|
18
18
|
}
|
19
19
|
|
20
|
-
nav-bar {
|
20
|
+
ox-nav-bar {
|
21
21
|
grid-area: nav;
|
22
22
|
}
|
23
23
|
|
@@ -30,11 +30,11 @@ export const AppStyle = css`
|
|
30
30
|
flex-direction: row;
|
31
31
|
}
|
32
32
|
|
33
|
-
aside-bar {
|
33
|
+
ox-aside-bar {
|
34
34
|
grid-area: aside;
|
35
35
|
}
|
36
36
|
|
37
|
-
footer-bar {
|
37
|
+
ox-footer-bar {
|
38
38
|
grid-area: footer;
|
39
39
|
}
|
40
40
|
|
@@ -50,7 +50,7 @@ export const AppStyle = css`
|
|
50
50
|
display: none;
|
51
51
|
}
|
52
52
|
|
53
|
-
snack-bar {
|
53
|
+
ox-snack-bar {
|
54
54
|
z-index: 1000;
|
55
55
|
}
|
56
56
|
|
package/client/app/app.js
CHANGED
@@ -1,12 +1,14 @@
|
|
1
|
-
import
|
1
|
+
import '@operato/layout'
|
2
|
+
|
3
|
+
import { html, LitElement } from 'lit'
|
2
4
|
import { connect } from 'pwa-helpers/connect-mixin.js'
|
3
5
|
import { installRouter } from 'pwa-helpers/router.js'
|
4
|
-
|
5
|
-
import { navigateWithSilence, UPDATE_ACTIVE_PAGE } from '
|
6
|
-
import {
|
6
|
+
|
7
|
+
import { navigateWithSilence, store, UPDATE_ACTIVE_PAGE, UPDATE_CONTEXT_PATH, UPDATE_MODULES } from '@operato/shell'
|
8
|
+
import { ScrollbarStyles } from '@operato/styles'
|
9
|
+
import { getPathInfo } from '@operato/utils'
|
10
|
+
|
7
11
|
import { AppStyle } from './app-style'
|
8
|
-
import { ScrollbarStyles } from '@things-factory/styles'
|
9
|
-
import { getPathInfo } from '@things-factory/utils'
|
10
12
|
|
11
13
|
class ThingsApp extends connect(store)(LitElement) {
|
12
14
|
static get properties() {
|
@@ -33,17 +35,17 @@ class ThingsApp extends connect(store)(LitElement) {
|
|
33
35
|
var widebleed = (this._context && this._context.widebleed) || (params.widebleed && params.widebleed == 'Y')
|
34
36
|
|
35
37
|
return html`
|
36
|
-
<header-bar ?fullbleed=${fullbleed}></header-bar>
|
38
|
+
<ox-header-bar ?fullbleed=${fullbleed}></ox-header-bar>
|
37
39
|
|
38
|
-
<nav-bar ?fullbleed=${fullbleed || widebleed}></nav-bar>
|
40
|
+
<ox-nav-bar ?fullbleed=${fullbleed || widebleed}></ox-nav-bar>
|
39
41
|
|
40
42
|
<main></main>
|
41
43
|
|
42
|
-
<aside-bar ?fullbleed=${fullbleed || widebleed}></aside-bar>
|
44
|
+
<ox-aside-bar ?fullbleed=${fullbleed || widebleed}></ox-aside-bar>
|
43
45
|
|
44
|
-
<footer-bar ?fullbleed=${fullbleed}></footer-bar>
|
46
|
+
<ox-footer-bar ?fullbleed=${fullbleed}></ox-footer-bar>
|
45
47
|
|
46
|
-
<snack-bar></snack-bar>
|
48
|
+
<ox-snack-bar></ox-snack-bar>
|
47
49
|
`
|
48
50
|
}
|
49
51
|
|
@@ -1,44 +1,43 @@
|
|
1
|
-
import {
|
1
|
+
import { css, html } from 'lit-element'
|
2
2
|
|
3
|
-
import { PageView } from '
|
4
|
-
|
5
|
-
import { SharedStyles } from '@things-factory/styles'
|
3
|
+
import { PageView } from '@operato/shell'
|
6
4
|
|
7
5
|
class Page404 extends PageView {
|
8
6
|
static get styles() {
|
9
|
-
return
|
10
|
-
|
11
|
-
:
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
7
|
+
return css`
|
8
|
+
:host {
|
9
|
+
display: block;
|
10
|
+
box-sizing: border-box;
|
11
|
+
|
12
|
+
background-color: var(--main-section-background-color);
|
13
|
+
--padding-wide: 15%;
|
14
|
+
}
|
15
|
+
section {
|
16
|
+
padding: var(--padding-wide) 0 0 0;
|
17
|
+
text-align: center;
|
18
|
+
color: var(--secondary-color);
|
19
|
+
}
|
20
|
+
mwc-icon {
|
21
|
+
--mdc-icon-size: 120px;
|
22
|
+
color: var(--status-danger-color);
|
23
|
+
text-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);
|
24
|
+
}
|
25
|
+
h2 {
|
26
|
+
margin: 0 auto;
|
27
|
+
font-size: 2.5em;
|
28
|
+
text-transform: capitalize;
|
29
|
+
}
|
30
|
+
@media only screen and (max-width: 460px) {
|
31
|
+
mwc-icon {
|
32
|
+
padding-top: 25%;
|
33
|
+
--mdc-icon-size: 90px;
|
29
34
|
}
|
30
|
-
|
31
|
-
|
32
|
-
padding-top:25%;
|
33
|
-
--mdc-icon-size: 90px;
|
34
|
-
}
|
35
|
-
h2{
|
36
|
-
font-size:2em;
|
37
|
-
}
|
35
|
+
h2 {
|
36
|
+
font-size: 2em;
|
38
37
|
}
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
}
|
39
|
+
`
|
40
|
+
}
|
42
41
|
|
43
42
|
get context() {
|
44
43
|
return {
|
@@ -51,7 +50,7 @@ class Page404 extends PageView {
|
|
51
50
|
<section>
|
52
51
|
<mwc-icon>error_outline</mwc-icon>
|
53
52
|
<h2>page not found!</h2>
|
54
|
-
|
53
|
+
The page you requested cannot be found.
|
55
54
|
</section>
|
56
55
|
`
|
57
56
|
}
|
package/client/index.js
CHANGED
@@ -9,14 +9,8 @@ export const PROCESS = {
|
|
9
9
|
|
10
10
|
/* Export APIs */
|
11
11
|
|
12
|
-
// store
|
13
|
-
export * from '
|
14
|
-
|
15
|
-
// actions
|
16
|
-
export * from './actions'
|
17
|
-
|
18
|
-
// base class for page
|
19
|
-
export * from './app/pages/page-view'
|
12
|
+
// store, actions, page-view,
|
13
|
+
export * from '@operato/shell'
|
20
14
|
|
21
15
|
// graphql-client
|
22
16
|
export * from '@operato/graphql'
|
@@ -22,6 +22,25 @@ module.exports = {
|
|
22
22
|
level: 'silly'
|
23
23
|
}
|
24
24
|
},
|
25
|
+
/**
|
26
|
+
* requestBody configuration
|
27
|
+
* ie.
|
28
|
+
* requestBody: {
|
29
|
+
* formLimit: '100mb',
|
30
|
+
* jsonLimit: '100mb',
|
31
|
+
* textLimit: '100mb'
|
32
|
+
* }
|
33
|
+
**/
|
34
|
+
|
35
|
+
/**
|
36
|
+
* fileUpload configuration
|
37
|
+
* ie.
|
38
|
+
* fileUpload: {
|
39
|
+
* maxFileSize: '100mb',
|
40
|
+
* maxFiles: 10
|
41
|
+
* }
|
42
|
+
**/
|
43
|
+
|
25
44
|
/*
|
26
45
|
* pubsub configuration
|
27
46
|
* ie.
|
@@ -19,6 +19,26 @@ module.exports = {
|
|
19
19
|
level: 'info'
|
20
20
|
}
|
21
21
|
},
|
22
|
+
|
23
|
+
/**
|
24
|
+
* requestBody configuration
|
25
|
+
* ie.
|
26
|
+
* requestBody: {
|
27
|
+
* formLimit: '100mb',
|
28
|
+
* jsonLimit: '100mb',
|
29
|
+
* textLimit: '100mb'
|
30
|
+
* }
|
31
|
+
**/
|
32
|
+
|
33
|
+
/**
|
34
|
+
* fileUpload configuration
|
35
|
+
* ie.
|
36
|
+
* fileUpload: {
|
37
|
+
* maxFileSize: '100mb',
|
38
|
+
* maxFiles: 10
|
39
|
+
* }
|
40
|
+
**/
|
41
|
+
|
22
42
|
/*
|
23
43
|
* pubsub configuration
|
24
44
|
* ie.
|
@@ -27,6 +27,7 @@ const koa_bodyparser_1 = __importDefault(require("koa-bodyparser"));
|
|
27
27
|
const koa_static_1 = __importDefault(require("koa-static"));
|
28
28
|
const koa_webpack_1 = __importDefault(require("@hatiolab/koa-webpack"));
|
29
29
|
const schema_1 = require("./schema");
|
30
|
+
const bytes_1 = __importDefault(require("bytes"));
|
30
31
|
const debug = require('debug')('things-factory:shell:server-dev');
|
31
32
|
const args = require('args');
|
32
33
|
args.option('port', 'The port on which the app will be running', env_1.config.get('port', 3000));
|
@@ -38,10 +39,16 @@ const webpack = require('webpack');
|
|
38
39
|
const webpackConfig = require('@things-factory/builder/webpack.config.dev.js');
|
39
40
|
const compiler = webpack(webpackConfig);
|
40
41
|
const PORT = (process.env.PORT = flags.port);
|
42
|
+
const requestBody = env_1.config.get('requestBody') || {};
|
41
43
|
const bodyParserOption = {
|
42
|
-
formLimit: '10mb',
|
43
|
-
jsonLimit: '10mb',
|
44
|
-
textLimit: '10mb'
|
44
|
+
formLimit: requestBody.formLimit || '10mb',
|
45
|
+
jsonLimit: requestBody.jsonLimit || '10mb',
|
46
|
+
textLimit: requestBody.textLimit || '10mb'
|
47
|
+
};
|
48
|
+
const fileUpload = env_1.config.get('fileUpload') || {};
|
49
|
+
const fileUploadOption = {
|
50
|
+
maxFileSize: bytes_1.default.parse(fileUpload.maxFileSize) || bytes_1.default.parse('10mb'),
|
51
|
+
maxFiles: fileUpload.maxFiles || 10
|
45
52
|
};
|
46
53
|
/* bootstrap */
|
47
54
|
const bootstrap = async () => {
|
@@ -158,7 +165,7 @@ const bootstrap = async () => {
|
|
158
165
|
process.emit('client-rebuilt', app, compiler.outputFileSystem);
|
159
166
|
});
|
160
167
|
app.use((0, koa_bodyparser_1.default)(bodyParserOption));
|
161
|
-
app.use((0, graphql_upload_1.graphqlUploadKoa)(
|
168
|
+
app.use((0, graphql_upload_1.graphqlUploadKoa)(fileUploadOption));
|
162
169
|
app.use(server.getMiddleware({
|
163
170
|
path: '/graphql'
|
164
171
|
}));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../server/server-dev.ts"],"names":[],"mappings":";;;;;AAAA,mBAAmB;AACnB,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,aAAa,CAAA;AACpC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;AAC1B,iCAAiC;AAEjC,2EAAkF;AAClF,6CAAgF;AAChF,uCAA4G;AAC5G,qCAA4C;AAE5C,yDAAgD;AAChD,2DAAmF;AACnF,iEAA2D;AAC3D,8CAAqB;AACrB,4CAAmB;AACnB,8DAAiC;AACjC,qDAA4B;AAC5B,+BAAmC;AACnC,sDAA6D;AAC7D,mDAAiD;AACjD,yFAAsE;AACtE,oDAAuB;AACvB,oEAA0C;AAC1C,4DAAkC;AAClC,wEAA8C;AAC9C,qCAAiC;
|
1
|
+
{"version":3,"file":"server-dev.js","sourceRoot":"","sources":["../server/server-dev.ts"],"names":[],"mappings":"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"}
|
package/dist-server/server.js
CHANGED
@@ -23,15 +23,22 @@ const koa_ip_1 = __importDefault(require("koa-ip"));
|
|
23
23
|
const koa_bodyparser_1 = __importDefault(require("koa-bodyparser"));
|
24
24
|
const koa_static_1 = __importDefault(require("koa-static"));
|
25
25
|
const schema_1 = require("./schema");
|
26
|
+
const bytes_1 = __importDefault(require("bytes"));
|
26
27
|
const args = require('args');
|
27
28
|
args.option('port', 'The port on which the app will be running', env_1.config.get('port', 3000));
|
28
29
|
const flags = args.parse(process.argv);
|
29
30
|
const path = require('path');
|
30
31
|
const PORT = (process.env.PORT = flags.port);
|
32
|
+
const requestBody = env_1.config.get('requestBody') || {};
|
31
33
|
const bodyParserOption = {
|
32
|
-
formLimit: '10mb',
|
33
|
-
jsonLimit: '10mb',
|
34
|
-
textLimit: '10mb'
|
34
|
+
formLimit: requestBody.formLimit || '10mb',
|
35
|
+
jsonLimit: requestBody.jsonLimit || '10mb',
|
36
|
+
textLimit: requestBody.textLimit || '10mb'
|
37
|
+
};
|
38
|
+
const fileUpload = env_1.config.get('fileUpload') || {};
|
39
|
+
const fileUploadOption = {
|
40
|
+
maxFileSize: bytes_1.default.parse(fileUpload.maxFileSize) || bytes_1.default.parse('10mb'),
|
41
|
+
maxFiles: fileUpload.maxFiles || 10
|
35
42
|
};
|
36
43
|
/* bootstrap */
|
37
44
|
const bootstrap = async () => {
|
@@ -132,7 +139,7 @@ const bootstrap = async () => {
|
|
132
139
|
debug: false
|
133
140
|
});
|
134
141
|
app.use((0, koa_bodyparser_1.default)(bodyParserOption));
|
135
|
-
app.use((0, graphql_upload_1.graphqlUploadKoa)(
|
142
|
+
app.use((0, graphql_upload_1.graphqlUploadKoa)(fileUploadOption));
|
136
143
|
app.use(server.getMiddleware({
|
137
144
|
path: '/graphql'
|
138
145
|
}));
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server/server.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAA;AACnC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;AAE1B,2EAAkF;AAClF,6CAAgF;AAChF,uCAA4G;AAC5G,qCAA4C;AAE5C,yDAAgD;AAChD,iEAA2D;AAC3D,8CAAqB;AACrB,4CAAmB;AACnB,8DAAiC;AACjC,qDAA4B;AAC5B,+BAAmC;AACnC,sDAA6D;AAC7D,mDAAiD;AACjD,yFAAsE;AACtE,oDAAuB;AACvB,oEAA0C;AAC1C,4DAAkC;AAClC,qCAAiC;
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../server/server.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,GAAG,YAAY,CAAA;AACnC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;AAE1B,2EAAkF;AAClF,6CAAgF;AAChF,uCAA4G;AAC5G,qCAA4C;AAE5C,yDAAgD;AAChD,iEAA2D;AAC3D,8CAAqB;AACrB,4CAAmB;AACnB,8DAAiC;AACjC,qDAA4B;AAC5B,+BAAmC;AACnC,sDAA6D;AAC7D,mDAAiD;AACjD,yFAAsE;AACtE,oDAAuB;AACvB,oEAA0C;AAC1C,4DAAkC;AAClC,qCAAiC;AACjC,kDAA+B;AAE/B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,2CAA2C,EAAE,YAAM,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;AAE1F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAEtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AAE5C,MAAM,WAAW,GAAG,YAAM,CAAC,GAAG,CAAC,aAAa,CAAC,IAAE,EAAE,CAAA;AAEjD,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAE,WAAW,CAAC,SAAS,IAAE,MAAM;IACxC,SAAS,EAAE,WAAW,CAAC,SAAS,IAAE,MAAM;IACxC,SAAS,EAAE,WAAW,CAAC,SAAS,IAAE,MAAM;CACzC,CAAA;AAED,MAAM,UAAU,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAE,EAAE,CAAA;AAC/C,MAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,eAAW,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAE,eAAW,CAAC,KAAK,CAAC,MAAM,CAAC;IACjF,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAE,EAAE;CAClC,CAAA;AACD,eAAe;AACf,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;IAC3B,MAAM,IAAA,8BAAmB,GAAE,CAAA;IAE3B,MAAM,GAAG,GAAG,IAAI,aAAG,EAAE,CAAA;IAErB,GAAG,CAAC,GAAG,CACL,IAAA,cAAI,EAAC;QACH,MAAM,EAAE,UAAU,GAAG;YACnB,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAA;QAC1C,CAAC;QACD,aAAa,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;QAC3D,MAAM,EAAE,CAAC;QACT,WAAW,EAAE,IAAI;QACjB,6DAA6D;QAC7D,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,CAAC;KAC1D,CAAC,CACH,CAAA;IAED,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IACzC,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAEzC,IAAI,SAAS,IAAI,SAAS,EAAE;QAC1B,GAAG,CAAC,GAAG,CACL,IAAA,gBAAE,EAAC;YACD,SAAS;YACT,SAAS;YACT,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBAC3B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAA;YAClB,CAAC;SACF,CAAC,CACH,CAAA;KACF;IAED,IAAI,sBAAsB,GAAG,EAAE,CAAA;IAC/B,OAAO,CAAC,IAAI,CAAC,+BAAsC,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAA;IAEjF,MAAM,WAAW,GAAG,MAAM,IAAA,eAAM,GAAE,CAAA;IAElC,MAAM,UAAU,GAAG,IAAA,mBAAY,EAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;IAE/C,MAAM,kBAAkB,GAAG,+CAAkB,CAAC,MAAM,CAClD;QACE,MAAM,EAAE,WAAW;QACnB,qCAAqC;QACrC,OAAO,EAAP,iBAAO;QACP,SAAS,EAAT,mBAAS;QACT,KAAK,CAAC,SAAS,CAAC,gBAAwB,EAAE,SAAoB,EAAE,OAA0B;YACxF,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;YAEzB,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAA;YAC5E,IAAI,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;YACtD,gBAAgB,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,GAAG,WAAW,CAAA;YAE1D,OAAO,CAAC,OAAO,mCACV,OAAO,CAAC,OAAO,GACf,CAAC,gBAAgB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CACrD,CAAA;YAED,6EAA6E;YAC7E,IAAI,UAAU,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,EAAS,CAAC,CAAA;YAC5D,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;YAExB,IAAI,WAAW,GAAG,CAAC,GAAG,sBAAsB,CAAC,CAAA;YAC7C,MAAM,EAAE,GAAG,YAAE,CAAC,IAAI,CAAC,IAAA,qBAAO,EAAC,WAAW,CAAC,CAAC,CAAA;YAExC,MAAM,EAAE,CAAC,UAAU,CAAC,CAAA;YAEpB,OAAO,UAAU,CAAA;QACnB,CAAC;KACF,EACD;QACE,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,gBAAgB;KACvB,CACF,CAAA;IAED,MAAM,MAAM,GAAG,IAAI,gCAAY,CAAC;QAC9B,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,KAAK,CAAC,EAAE;YACnB,YAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,cAAc,EAAE,QAAQ,CAAC,EAAE;YACzB,gEAAgE;YAChE,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE;YACrC,IAAI,UAAU,EAAE;gBACd,OAAO,UAAU,CAAC,OAAO,CAAA;aAC1B;iBAAM;gBACL,OAAO,GAAG,CAAA;aACX;QACH,CAAC;QACD,OAAO,EAAE;YACP;gBACE,KAAK,CAAC,eAAe;oBACnB,OAAO;wBACL,KAAK,CAAC,WAAW;4BACf,kBAAkB,CAAC,KAAK,EAAE,CAAA;wBAC5B,CAAC;qBACF,CAAA;gBACH,CAAC;aACF;SACF;KACF,CAAC,CAAA;IAEF,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IAEpB,yCAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;IAEzC,wBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChC,MAAM,EAAE,eAAe,EAAE,GAAG,IAAA,YAAM,EAAC,IAAI,CAAC,CAAA;QACxC,eAAe,IAAI,eAAe,CAAC,GAAG,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACpD,MAAM,CAAC,GAAG,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,oBAAoB,IAAI,EAAE;QAChC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,KAAK;KACb,CAAC,CAAA;IAEF,GAAG,CAAC,GAAG,CAAC,IAAA,wBAAa,EAAC,gBAAgB,CAAC,CAAC,CAAA;IACxC,GAAG,CAAC,GAAG,CAAC,IAAA,iCAAgB,EAAC,gBAAgB,CAAC,CAAC,CAAA;IAE3C,GAAG,CAAC,GAAG,CACL,MAAM,CAAC,aAAa,CAAC;QACnB,IAAI,EAAE,UAAU;KACjB,CAAC,CACH,CAAA;IAED,aAAa;IACb,OAAO,CAAC,IAAI,CAAC,sCAA6C,EAAE,GAAG,EAAE,4BAAkB,CAAC,CAAA;IACpF,OAAO,CAAC,IAAI,CAAC,uCAA8C,EAAE,GAAG,EAAE,6BAAmB,CAAC,CAAA;IACtF,OAAO,CAAC,IAAI,CAAC,sCAA6C,EAAE,GAAG,EAAE,4BAAkB,CAAC,CAAA;IACpF,OAAO,CAAC,IAAI,CAAC,uCAA8C,EAAE,GAAG,EAAE,6BAAmB,CAAC,CAAA;IAEtF,GAAG;SACA,GAAG,CAAC,4BAAkB,CAAC,MAAM,EAAE,CAAC;SAChC,GAAG,CAAC,4BAAkB,CAAC,cAAc,EAAE,CAAC;SACxC,GAAG,CAAC,6BAAmB,CAAC,MAAM,EAAE,CAAC;SACjC,GAAG,CAAC,6BAAmB,CAAC,cAAc,EAAE,CAAC;SACzC,GAAG,CAAC,4BAAkB,CAAC,MAAM,EAAE,CAAC;SAChC,GAAG,CAAC,4BAAkB,CAAC,cAAc,EAAE,CAAC;SACxC,GAAG,CAAC,6BAAmB,CAAC,MAAM,EAAE,CAAC;SACjC,GAAG,CAAC,6BAAmB,CAAC,cAAc,EAAE,CAAC,CAAA;IAE5C,6CAA6C;IAC7C,GAAG,CAAC,GAAG,CAAC,IAAA,sDAAkB,EAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAE9C,GAAG,CAAC,GAAG,CACL,IAAA,oBAAS,EAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,EAAE;QACjD,KAAK,EAAE,YAAY;KACpB,CAAC,CACH,CAAA;IAED,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;QACrC,YAAM,CAAC,IAAI,CAAC,qCAAqC,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAA;QAC7E,YAAM,CAAC,IAAI,CAAC,0CAA0C,IAAI,GAAG,gBAAgB,EAAE,CAAC,CAAA;QAEhF,OAAO,CAAC,IAAI,CAAC,wBAA+B,EAAE,EAAE,GAAG,EAAE,MAAM,EAAN,YAAM,EAAE,WAAW,EAAE,UAAU,EAAS,CAAC,CAAA;IAChG,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,SAAS,EAAE,CAAA"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/shell",
|
3
|
-
"version": "4.0.
|
3
|
+
"version": "4.0.43",
|
4
4
|
"description": "Core module for framework",
|
5
5
|
"bin": {
|
6
6
|
"things-factory": "bin/things-factory",
|
@@ -36,7 +36,7 @@
|
|
36
36
|
"@graphql-tools/schema": "^8.2.0",
|
37
37
|
"@graphql-tools/utils": "^8.3.0",
|
38
38
|
"@hatiolab/koa-webpack": "^6.0.0",
|
39
|
-
"@hatiolab/things-scene": "^2.7.
|
39
|
+
"@hatiolab/things-scene": "^2.7.34",
|
40
40
|
"@koa/cors": "^3.1.0",
|
41
41
|
"@material/mwc-button": "^0.25.3",
|
42
42
|
"@material/mwc-fab": "^0.25.3",
|
@@ -44,13 +44,16 @@
|
|
44
44
|
"@material/mwc-icon-button": "^0.25.3",
|
45
45
|
"@material/mwc-slider": "^0.25.3",
|
46
46
|
"@material/mwc-textfield": "^0.25.3",
|
47
|
-
"@operato/board": "^0.3.
|
48
|
-
"@operato/graphql": "^0.3.
|
49
|
-
"@operato/
|
50
|
-
"@
|
51
|
-
"@
|
52
|
-
"@
|
53
|
-
"@things-factory/
|
47
|
+
"@operato/board": "^0.3.26",
|
48
|
+
"@operato/graphql": "^0.3.26",
|
49
|
+
"@operato/help": "^0.3.26",
|
50
|
+
"@operato/layout": "^0.3.26",
|
51
|
+
"@operato/shell": "^0.3.26",
|
52
|
+
"@operato/utils": "^0.3.26",
|
53
|
+
"@things-factory/ejs-remote": "^4.0.43",
|
54
|
+
"@things-factory/env": "^4.0.43",
|
55
|
+
"@things-factory/styles": "^4.0.43",
|
56
|
+
"@things-factory/utils": "^4.0.43",
|
54
57
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
55
58
|
"@webpack-contrib/schema-utils": "^1.0.0-beta.0",
|
56
59
|
"apollo-server-core": "^3.5.0",
|
@@ -94,7 +97,7 @@
|
|
94
97
|
"loader-utils": "^2.0.0",
|
95
98
|
"lodash": "^4.17.15",
|
96
99
|
"mkdirp": "^1.0.3",
|
97
|
-
"mqtt": "^4.
|
100
|
+
"mqtt": "^4.3.4",
|
98
101
|
"node-fetch": "^2.6.0",
|
99
102
|
"node-sass": "^6.0.1",
|
100
103
|
"nodemon": "^2.0.2",
|
@@ -125,5 +128,5 @@
|
|
125
128
|
"resolutions": {
|
126
129
|
"core-js": "^3.16.0"
|
127
130
|
},
|
128
|
-
"gitHead": "
|
131
|
+
"gitHead": "8f2a8008eb61b6efd266412be267186c5059fab6"
|
129
132
|
}
|
package/server/server-dev.ts
CHANGED
@@ -24,6 +24,7 @@ import koaBodyParser from 'koa-bodyparser'
|
|
24
24
|
import koaStatic from 'koa-static'
|
25
25
|
import koaWebpack from '@hatiolab/koa-webpack'
|
26
26
|
import { schema } from './schema'
|
27
|
+
import bytesFormat from 'bytes'
|
27
28
|
|
28
29
|
const debug = require('debug')('things-factory:shell:server-dev')
|
29
30
|
|
@@ -47,12 +48,21 @@ const compiler = webpack(webpackConfig)
|
|
47
48
|
|
48
49
|
const PORT = (process.env.PORT = flags.port)
|
49
50
|
|
51
|
+
const requestBody = config.get('requestBody')||{}
|
52
|
+
|
50
53
|
const bodyParserOption = {
|
51
|
-
formLimit: '10mb',
|
52
|
-
jsonLimit: '10mb',
|
53
|
-
textLimit: '10mb'
|
54
|
+
formLimit: requestBody.formLimit||'10mb',
|
55
|
+
jsonLimit: requestBody.jsonLimit||'10mb',
|
56
|
+
textLimit: requestBody.textLimit||'10mb'
|
57
|
+
}
|
58
|
+
|
59
|
+
const fileUpload = config.get('fileUpload')||{}
|
60
|
+
const fileUploadOption = {
|
61
|
+
maxFileSize: bytesFormat.parse(fileUpload.maxFileSize)||bytesFormat.parse('10mb'),
|
62
|
+
maxFiles: fileUpload.maxFiles||10
|
54
63
|
}
|
55
64
|
|
65
|
+
|
56
66
|
/* bootstrap */
|
57
67
|
const bootstrap = async () => {
|
58
68
|
await databaseInitializer()
|
@@ -199,7 +209,7 @@ const bootstrap = async () => {
|
|
199
209
|
})
|
200
210
|
|
201
211
|
app.use(koaBodyParser(bodyParserOption))
|
202
|
-
app.use(graphqlUploadKoa(
|
212
|
+
app.use(graphqlUploadKoa(fileUploadOption))
|
203
213
|
|
204
214
|
app.use(
|
205
215
|
server.getMiddleware({
|
package/server/server.ts
CHANGED
@@ -20,6 +20,7 @@ import ip from 'koa-ip'
|
|
20
20
|
import koaBodyParser from 'koa-bodyparser'
|
21
21
|
import koaStatic from 'koa-static'
|
22
22
|
import { schema } from './schema'
|
23
|
+
import bytesFormat from 'bytes'
|
23
24
|
|
24
25
|
const args = require('args')
|
25
26
|
|
@@ -31,12 +32,19 @@ const path = require('path')
|
|
31
32
|
|
32
33
|
const PORT = (process.env.PORT = flags.port)
|
33
34
|
|
35
|
+
const requestBody = config.get('requestBody')||{}
|
36
|
+
|
34
37
|
const bodyParserOption = {
|
35
|
-
formLimit: '10mb',
|
36
|
-
jsonLimit: '10mb',
|
37
|
-
textLimit: '10mb'
|
38
|
+
formLimit: requestBody.formLimit||'10mb',
|
39
|
+
jsonLimit: requestBody.jsonLimit||'10mb',
|
40
|
+
textLimit: requestBody.textLimit||'10mb'
|
38
41
|
}
|
39
42
|
|
43
|
+
const fileUpload = config.get('fileUpload')||{}
|
44
|
+
const fileUploadOption = {
|
45
|
+
maxFileSize: bytesFormat.parse(fileUpload.maxFileSize)||bytesFormat.parse('10mb'),
|
46
|
+
maxFiles: fileUpload.maxFiles||10
|
47
|
+
}
|
40
48
|
/* bootstrap */
|
41
49
|
const bootstrap = async () => {
|
42
50
|
await databaseInitializer()
|
@@ -165,7 +173,7 @@ const bootstrap = async () => {
|
|
165
173
|
})
|
166
174
|
|
167
175
|
app.use(koaBodyParser(bodyParserOption))
|
168
|
-
app.use(graphqlUploadKoa(
|
176
|
+
app.use(graphqlUploadKoa(fileUploadOption))
|
169
177
|
|
170
178
|
app.use(
|
171
179
|
server.getMiddleware({
|
package/things-factory.config.js
CHANGED
package/client/actions/app.js
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
export const UPDATE_MODULES = 'UPDATE_MODULES'
|
2
|
-
export const UPDATE_BASE_URL = 'UPDATE_BASE_URL'
|
3
|
-
export const UPDATE_CONTEXT_PATH = 'UPDATE_CONTEXT_PATH'
|
4
|
-
export const SET_DOMAINS = 'SET-DOMAINS'
|
5
|
-
|
6
|
-
export const updateDomains = (domains, domain) => (dispatch, getState) => {
|
7
|
-
dispatch({
|
8
|
-
type: SET_DOMAINS,
|
9
|
-
domains,
|
10
|
-
domain
|
11
|
-
})
|
12
|
-
}
|
package/client/actions/index.js
DELETED
package/client/actions/route.js
DELETED
@@ -1,101 +0,0 @@
|
|
1
|
-
import { store } from '../store'
|
2
|
-
import { getPathInfo } from '@things-factory/utils'
|
3
|
-
|
4
|
-
export const UPDATE_PAGE = 'UPDATE_PAGE'
|
5
|
-
export const UPDATE_CONTEXT = 'UPDATE_CONTEXT'
|
6
|
-
export const UPDATE_ACTIVE_PAGE = 'UPDATE_ACTIVE_PAGE'
|
7
|
-
|
8
|
-
export const REGISTER_NAVIGATION_CALLBACK = 'REGISTER_NAVIGATION_CALLBACK'
|
9
|
-
export const UNREGISTER_NAVIGATION_CALLBACK = 'UNREGISTER_NAVIGATION_CALLBACK'
|
10
|
-
|
11
|
-
export const HOMEPAGE = ''
|
12
|
-
|
13
|
-
/**
|
14
|
-
* 페이지를 이동하는 방법으로는 다음 두가지가 있다.
|
15
|
-
* 1. page link를 사용하는 방법 <a href='page'>goto page</a>
|
16
|
-
* 이 방법은 route(page)와 동일하다.
|
17
|
-
* 2. navigate('page')를 사용하는 방법
|
18
|
-
*
|
19
|
-
* @param string page
|
20
|
-
*/
|
21
|
-
export const navigate = (location, replace) => {
|
22
|
-
if (replace) history.replaceState(history.state, '', location)
|
23
|
-
else history.pushState({}, '', location)
|
24
|
-
|
25
|
-
window.dispatchEvent(new Event('popstate'))
|
26
|
-
}
|
27
|
-
|
28
|
-
export const navigateWithSilence = ({ pathname: path, search }) => dispatch => {
|
29
|
-
const { path: pathname } = getPathInfo(path)
|
30
|
-
|
31
|
-
const reg = /\/([^\/]+)\/*([^\/]*)/
|
32
|
-
const decodePath = decodeURIComponent(pathname)
|
33
|
-
const matchReturn = decodePath.match(reg) || []
|
34
|
-
const page = matchReturn[1] || HOMEPAGE
|
35
|
-
const id = matchReturn[2]
|
36
|
-
const searchParams = new URLSearchParams(search)
|
37
|
-
|
38
|
-
var params = {}
|
39
|
-
searchParams.forEach((value, key) => {
|
40
|
-
params[key] = value
|
41
|
-
})
|
42
|
-
|
43
|
-
// Any other info you might want to extract from the path (like page type),
|
44
|
-
// you can do here
|
45
|
-
dispatch(loadPage(page, id, params))
|
46
|
-
}
|
47
|
-
|
48
|
-
const _preLoadPage = page => {
|
49
|
-
/*
|
50
|
-
* _preLoadPage 에서는 page를 load하기 전처리를 수행한다.
|
51
|
-
* 예를 들면, page dynamic import 또는 page re-routing
|
52
|
-
*/
|
53
|
-
var state = store.getState()
|
54
|
-
|
55
|
-
/* override 기능을 위해서 dependency 관계의 역순으로 route를 실행한다. */
|
56
|
-
var modules = state.app.modules
|
57
|
-
if (modules) {
|
58
|
-
for (let i = modules.length - 1; i >= 0; i--) {
|
59
|
-
let factoryModule = modules[i]
|
60
|
-
let _page = factoryModule.route && factoryModule.route(page)
|
61
|
-
if (_page) {
|
62
|
-
return _page
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
66
|
-
}
|
67
|
-
|
68
|
-
export const loadPage = (page, id, params) => dispatch => {
|
69
|
-
var newPage = _preLoadPage(page)
|
70
|
-
|
71
|
-
if (page !== newPage && (newPage.indexOf('/') == 0)) {
|
72
|
-
dispatch(
|
73
|
-
navigateWithSilence({
|
74
|
-
pathname: newPage,
|
75
|
-
params
|
76
|
-
})
|
77
|
-
)
|
78
|
-
return
|
79
|
-
}
|
80
|
-
|
81
|
-
dispatch({
|
82
|
-
type: UPDATE_PAGE,
|
83
|
-
page: newPage,
|
84
|
-
resourceId: id,
|
85
|
-
params
|
86
|
-
})
|
87
|
-
}
|
88
|
-
|
89
|
-
export const route = url => {
|
90
|
-
/*
|
91
|
-
* Caution : This function works normally in a desktop environment,
|
92
|
-
* but it is not guaranteed in a mobile environment, so be sure to check it.
|
93
|
-
*/
|
94
|
-
const link = document.createElement('a')
|
95
|
-
|
96
|
-
link.setAttribute('href', url)
|
97
|
-
|
98
|
-
document.body.appendChild(link)
|
99
|
-
link.click()
|
100
|
-
document.body.removeChild(link)
|
101
|
-
}
|
@@ -1,144 +0,0 @@
|
|
1
|
-
import { LitElement, html } from 'lit-element'
|
2
|
-
|
3
|
-
import { store } from '../../store'
|
4
|
-
import { UPDATE_CONTEXT } from '../../actions/route'
|
5
|
-
|
6
|
-
import isEqual from 'lodash/isEqual'
|
7
|
-
|
8
|
-
function diff(after, before) {
|
9
|
-
var changed = false
|
10
|
-
var changes = {}
|
11
|
-
|
12
|
-
Object.getOwnPropertyNames(after).forEach(function(key) {
|
13
|
-
let before_val = before[key]
|
14
|
-
let after_val = after[key]
|
15
|
-
|
16
|
-
if (!isEqual(before_val, after_val)) {
|
17
|
-
changes[key] = after_val
|
18
|
-
changed = true
|
19
|
-
}
|
20
|
-
})
|
21
|
-
|
22
|
-
return changed && changes
|
23
|
-
}
|
24
|
-
|
25
|
-
export class PageView extends LitElement {
|
26
|
-
// Only render this page if it's actually visible.
|
27
|
-
shouldUpdate(changes) {
|
28
|
-
var active = String(this.active) == 'true'
|
29
|
-
var { active: oldActive = false } = this._oldLifecycleInfo$ || {}
|
30
|
-
|
31
|
-
/*
|
32
|
-
* page lifecycle
|
33
|
-
* case 1. page가 새로 activate 되었다.
|
34
|
-
* case 2. page가 active 상태에서 lifecycle 정보가 바뀌었다.
|
35
|
-
**/
|
36
|
-
if (active) {
|
37
|
-
this.pageUpdate({
|
38
|
-
active
|
39
|
-
})
|
40
|
-
} else if (oldActive) {
|
41
|
-
this.pageUpdate({
|
42
|
-
active
|
43
|
-
})
|
44
|
-
}
|
45
|
-
|
46
|
-
return active
|
47
|
-
}
|
48
|
-
|
49
|
-
static get properties() {
|
50
|
-
return {
|
51
|
-
active: Boolean,
|
52
|
-
lifecycle: Object,
|
53
|
-
contextPath: { attribute: 'context-path' }
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
/* lifecycle */
|
58
|
-
async pageUpdate(changes = {}, force = false) {
|
59
|
-
var before = this._oldLifecycleInfo$ || {}
|
60
|
-
|
61
|
-
var after = {
|
62
|
-
...before,
|
63
|
-
...this.lifecycle,
|
64
|
-
contextPath: this.contextPath,
|
65
|
-
...changes
|
66
|
-
}
|
67
|
-
|
68
|
-
if (!('initialized' in changes) && after.active && !before.initialized) {
|
69
|
-
after.initialized = true
|
70
|
-
}
|
71
|
-
|
72
|
-
if (force) {
|
73
|
-
after.updated = Date.now()
|
74
|
-
}
|
75
|
-
|
76
|
-
var changed = diff(after, before)
|
77
|
-
if (!changed) {
|
78
|
-
return
|
79
|
-
}
|
80
|
-
|
81
|
-
this._oldLifecycleInfo$ = after
|
82
|
-
|
83
|
-
/* page의 이미 초기화된 상태에서 contextPath가 바뀐다면, 무조건 page가 리셋되어야 한다. */
|
84
|
-
if (before.initialized && changed.contextPath) {
|
85
|
-
await this.pageReset()
|
86
|
-
return
|
87
|
-
}
|
88
|
-
|
89
|
-
if (changed.initialized) {
|
90
|
-
await this.pageInitialized(after)
|
91
|
-
}
|
92
|
-
|
93
|
-
if ('initialized' in changed) {
|
94
|
-
if (changed.initialized) {
|
95
|
-
/*
|
96
|
-
* 방금 초기화된 경우라면, 엘리먼트들이 만들어지지 않았을 가능성이 있으므로,
|
97
|
-
* 다음 animationFrame에서 pageUpdated 콜백을 호출한다.
|
98
|
-
*/
|
99
|
-
requestAnimationFrame(async () => {
|
100
|
-
await this.pageUpdated(changed, after, before)
|
101
|
-
/* active page인 경우에는, page Context 갱신도 필요할 것이다. */
|
102
|
-
after.active && this.updateContext()
|
103
|
-
})
|
104
|
-
} else {
|
105
|
-
await this.pageDisposed(after)
|
106
|
-
}
|
107
|
-
} else {
|
108
|
-
await this.pageUpdated(changed, after, before)
|
109
|
-
/* active page인 경우에는, page Context 갱신도 필요할 것이다. */
|
110
|
-
after.active && this.updateContext()
|
111
|
-
}
|
112
|
-
}
|
113
|
-
|
114
|
-
async pageReset() {
|
115
|
-
var { initialized } = this._oldLifecycleInfo$ || {}
|
116
|
-
|
117
|
-
if (initialized) {
|
118
|
-
await this.pageDispose()
|
119
|
-
await this.pageUpdate({}, true)
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
async pageDispose() {
|
124
|
-
await this.pageUpdate({
|
125
|
-
initialized: false
|
126
|
-
})
|
127
|
-
}
|
128
|
-
|
129
|
-
pageInitialized(pageInfo) {}
|
130
|
-
pageUpdated(changes, after, before) {}
|
131
|
-
pageDisposed(pageInfo) {}
|
132
|
-
|
133
|
-
/* context */
|
134
|
-
updateContext(override) {
|
135
|
-
store.dispatch({
|
136
|
-
type: UPDATE_CONTEXT,
|
137
|
-
context: override ? { ...this.context, ...override } : this.context
|
138
|
-
})
|
139
|
-
}
|
140
|
-
|
141
|
-
get context() {
|
142
|
-
return {}
|
143
|
-
}
|
144
|
-
}
|
package/client/reducers/app.js
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
import { UPDATE_MODULES, UPDATE_BASE_URL, UPDATE_CONTEXT_PATH, SET_DOMAINS } from '../actions/app.js'
|
2
|
-
import { getPathInfo } from '@things-factory/utils'
|
3
|
-
|
4
|
-
const INITIAL_STATE = {
|
5
|
-
baseUrl: location.origin,
|
6
|
-
contextPath: getPathInfo(location.pathname).contextPath,
|
7
|
-
domains: []
|
8
|
-
}
|
9
|
-
|
10
|
-
const app = (state = INITIAL_STATE, action) => {
|
11
|
-
switch (action.type) {
|
12
|
-
case UPDATE_MODULES:
|
13
|
-
return {
|
14
|
-
...state,
|
15
|
-
modules: action.modules
|
16
|
-
}
|
17
|
-
case UPDATE_BASE_URL:
|
18
|
-
return {
|
19
|
-
...state,
|
20
|
-
baseUrl: action.baseUrl
|
21
|
-
}
|
22
|
-
case UPDATE_CONTEXT_PATH:
|
23
|
-
return {
|
24
|
-
...state,
|
25
|
-
contextPath: action.contextPath
|
26
|
-
}
|
27
|
-
|
28
|
-
case SET_DOMAINS:
|
29
|
-
return {
|
30
|
-
...state,
|
31
|
-
domains: action.domains,
|
32
|
-
domain: action.domain
|
33
|
-
}
|
34
|
-
|
35
|
-
default:
|
36
|
-
return state
|
37
|
-
}
|
38
|
-
}
|
39
|
-
|
40
|
-
export default app
|
package/client/reducers/route.js
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
UPDATE_PAGE,
|
3
|
-
UPDATE_CONTEXT,
|
4
|
-
UPDATE_ACTIVE_PAGE,
|
5
|
-
REGISTER_NAVIGATION_CALLBACK,
|
6
|
-
UNREGISTER_NAVIGATION_CALLBACK
|
7
|
-
} from '../actions/route.js'
|
8
|
-
import { updateMetadata } from 'pwa-helpers/metadata.js'
|
9
|
-
import startCase from 'lodash/startCase'
|
10
|
-
|
11
|
-
const APP_TITLE_EL = document.querySelector('meta[name="application-name"]')
|
12
|
-
var appTitle
|
13
|
-
if (APP_TITLE_EL) appTitle = APP_TITLE_EL.content
|
14
|
-
|
15
|
-
const INITIAL_STATE = {
|
16
|
-
page: '',
|
17
|
-
resourceId: '',
|
18
|
-
params: {},
|
19
|
-
activePage: null,
|
20
|
-
context: {},
|
21
|
-
callbacks: []
|
22
|
-
}
|
23
|
-
|
24
|
-
const route = (state = INITIAL_STATE, action) => {
|
25
|
-
switch (action.type) {
|
26
|
-
case UPDATE_PAGE:
|
27
|
-
return {
|
28
|
-
...state,
|
29
|
-
page: action.page,
|
30
|
-
resourceId: action.resourceId,
|
31
|
-
params: action.params
|
32
|
-
}
|
33
|
-
case UPDATE_CONTEXT:
|
34
|
-
let title = action.context?.title
|
35
|
-
let text = typeof title === 'object' ? title.text : title
|
36
|
-
|
37
|
-
updateMetadata({
|
38
|
-
title: appTitle + (text ? ` - ${startCase(text)}` : '')
|
39
|
-
})
|
40
|
-
return {
|
41
|
-
...state,
|
42
|
-
context: action.context || (state.activePage && state.activePage.context) || {}
|
43
|
-
}
|
44
|
-
case UPDATE_ACTIVE_PAGE:
|
45
|
-
return {
|
46
|
-
...state,
|
47
|
-
activePage: action.activePage
|
48
|
-
}
|
49
|
-
|
50
|
-
case REGISTER_NAVIGATION_CALLBACK:
|
51
|
-
return {
|
52
|
-
...state,
|
53
|
-
callbacks: [...state.callbacks, action.callback]
|
54
|
-
}
|
55
|
-
case UNREGISTER_NAVIGATION_CALLBACK:
|
56
|
-
return {
|
57
|
-
...state,
|
58
|
-
callbacks: state.callbacks.filter(callback => callback !== action.callback)
|
59
|
-
}
|
60
|
-
|
61
|
-
default:
|
62
|
-
return state
|
63
|
-
}
|
64
|
-
}
|
65
|
-
|
66
|
-
export default route
|