@steedos/service-pages 2.5.11-beta.8 → 2.5.11
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/main/default/objectTranslations/pages.en/pages.en.objectTranslation.yml +4 -0
- package/main/default/objectTranslations/pages.zh-CN/pages.zh-CN.objectTranslation.yml +4 -0
- package/main/default/objects/pages/buttons/viewPage.button.js +22 -0
- package/main/default/objects/pages/buttons/viewPage.button.yml +6 -0
- package/main/default/objects/pages/fields/allow_anonymous.field.yml +5 -0
- package/main/default/routes/page_view.ejs +197 -0
- package/main/default/routes/page_view.router.js +140 -0
- package/package.json +2 -2
- package/package.service.js +54 -5
|
@@ -80,6 +80,8 @@ fields:
|
|
|
80
80
|
label: Version Number
|
|
81
81
|
help:
|
|
82
82
|
description:
|
|
83
|
+
allow_anonymous:
|
|
84
|
+
label: Allow anonymous access
|
|
83
85
|
listviews:
|
|
84
86
|
all:
|
|
85
87
|
label: All Pages
|
|
@@ -98,3 +100,5 @@ actions:
|
|
|
98
100
|
label: Reset Schema
|
|
99
101
|
showDesign:
|
|
100
102
|
label: Show Design
|
|
103
|
+
viewPage:
|
|
104
|
+
label: View
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutaon@hotoa.com
|
|
3
|
+
* @Date: 2022-03-29 20:33:44
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2023-08-02 16:29:54
|
|
6
|
+
* @Description:
|
|
7
|
+
*/
|
|
8
|
+
module.exports = {
|
|
9
|
+
viewPage: function (object_name, record_id) {
|
|
10
|
+
console.log(`viewPaga`, this)
|
|
11
|
+
const { record } = this.record;
|
|
12
|
+
if(record.allow_anonymous){
|
|
13
|
+
window.open(`/api/page/public/${record_id}`)
|
|
14
|
+
}else{
|
|
15
|
+
window.open(`/api/page/view/${record_id}`)
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
viewPageVisible: function (object_name, record_id, permission, data) {
|
|
19
|
+
var record = data && data.record;
|
|
20
|
+
return record && record.type === 'app';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
* @Author: baozhoutao@steedos.com
|
|
3
|
+
* @Date: 2023-08-01 17:47:18
|
|
4
|
+
* @LastEditors: baozhoutao@steedos.com
|
|
5
|
+
* @LastEditTime: 2023-08-02 16:54:35
|
|
6
|
+
* @Description:
|
|
7
|
+
-->
|
|
8
|
+
<html>
|
|
9
|
+
<head>
|
|
10
|
+
<style>
|
|
11
|
+
body { background-color: #fff; }
|
|
12
|
+
html {
|
|
13
|
+
background-color: #fff;
|
|
14
|
+
background: #fff !important;
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
17
|
+
<meta charset="utf-8">
|
|
18
|
+
<title><%=Title%></title>
|
|
19
|
+
|
|
20
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
|
21
|
+
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
|
|
22
|
+
<meta name="mobile-web-app-capable" content="yes">
|
|
23
|
+
<meta name="theme-color" content="#000">
|
|
24
|
+
<meta name="application-name">
|
|
25
|
+
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
26
|
+
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
|
|
27
|
+
<meta name="apple-mobile-web-app-title">
|
|
28
|
+
|
|
29
|
+
<link rel="stylesheet" href="/tailwind/tailwind-base.css" />
|
|
30
|
+
|
|
31
|
+
<script>
|
|
32
|
+
window.Creator = {};
|
|
33
|
+
window.Steedos = {
|
|
34
|
+
isMobile: ()=>{
|
|
35
|
+
return window.innerWidth <= 768;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
window.__meteor_runtime_config__ = <%- JSON.stringify(__meteor_runtime_config__) %>
|
|
39
|
+
window.Meteor = {
|
|
40
|
+
isCordova: false
|
|
41
|
+
}
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<script src="/lib/jquery/jquery-1.11.2.min.js"></script>
|
|
46
|
+
|
|
47
|
+
<!-- lodash,低代码编辑器的依赖 -->
|
|
48
|
+
<script src="<%=STEEDOS_UNPKG_URL%>/lodash@4.17.21/lodash.min.js"></script>
|
|
49
|
+
<script src="<%=STEEDOS_UNPKG_URL%>/marked@4.0.17/marked.min.js"></script>
|
|
50
|
+
|
|
51
|
+
<script src="<%=STEEDOS_UNPKG_URL%>/crypto-js@4.1.1/crypto-js.js"></script>
|
|
52
|
+
|
|
53
|
+
<!-- Steedos Builder -->
|
|
54
|
+
<script src="<%=STEEDOS_UNPKG_URL%>/@steedos-builder/sdk@0.2.36/dist/index.umd.js"></script>
|
|
55
|
+
|
|
56
|
+
<script src="<%=STEEDOS_AMIS_URL%>/sdk/sdk.js"></script>
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
<link rel="stylesheet" type="text/css" href="<%=STEEDOS_UNPKG_URL%>/@salesforce-ux/design-system@2.19.0/assets/styles/salesforce-lightning-design-system.min.css">
|
|
61
|
+
<link rel="stylesheet" href="<%=STEEDOS_AMIS_URL%>/lib/themes/antd.css" />
|
|
62
|
+
<link rel="stylesheet" href="<%=STEEDOS_AMIS_URL%>/lib/helper.css" />
|
|
63
|
+
<link rel="stylesheet" href="<%=STEEDOS_AMIS_URL%>/sdk/iconfont.css" />
|
|
64
|
+
<link rel="stylesheet" href="<%=STEEDOS_UNPKG_URL%>/@fortawesome/fontawesome-free@6.2.0/css/all.min.css" />
|
|
65
|
+
|
|
66
|
+
<link rel="stylesheet" href="<%=ROOT_URL%>/tailwind/tailwind-steedos.css" />
|
|
67
|
+
<link rel="stylesheet" href="<%=ROOT_URL%>/amis/amis.css" />
|
|
68
|
+
</head>
|
|
69
|
+
|
|
70
|
+
<body>
|
|
71
|
+
|
|
72
|
+
<div class="page-template-root"></div>
|
|
73
|
+
|
|
74
|
+
<script>
|
|
75
|
+
window.lodash = _;
|
|
76
|
+
window.MonacoEnvironment = {};
|
|
77
|
+
window.t = (k)=>{
|
|
78
|
+
console.log(`not support window.t`);
|
|
79
|
+
return k;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
window.FlowRouter = {
|
|
83
|
+
current: ()=>{
|
|
84
|
+
return {
|
|
85
|
+
path: location.pathname,
|
|
86
|
+
queryParams: {}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
</script>
|
|
92
|
+
|
|
93
|
+
<script src="/pages/js/builder.client.js"></script>
|
|
94
|
+
<script src="/pages/js/page.render.client.js"></script>
|
|
95
|
+
<script src="/pages/js/builder.client.js"></script>
|
|
96
|
+
|
|
97
|
+
<script src="/amis-pages/js/amis.render.client.js"></script>
|
|
98
|
+
<script src="/amis-pages/js/amis.util.client.js"></script>
|
|
99
|
+
<script src="/amis-pages/js/creator.function.client.js"></script>
|
|
100
|
+
<script src="/amis-pages/js/onWindowMessage.client.js"></script>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
<script >
|
|
104
|
+
window.Creator.USER_CONTEXT = <%- JSON.stringify(USER_CONTEXT) %>
|
|
105
|
+
window.Builder = BuilderSDK.Builder;
|
|
106
|
+
window.builder = BuilderSDK.builder;
|
|
107
|
+
window.builder.init('steedos');
|
|
108
|
+
|
|
109
|
+
let searchParams = new URLSearchParams(location.search);
|
|
110
|
+
if (searchParams.get('assetUrls')) {
|
|
111
|
+
sessionStorage.setItem('assetUrls', searchParams.get('assetUrls'))
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
let assetUrls = "<%=STEEDOS_PUBLIC_PAGE_ASSETURLS%>"
|
|
115
|
+
if(_.isString(assetUrls)){
|
|
116
|
+
assetUrls = assetUrls.split(',');
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
const getBrowserLocale = function() {
|
|
120
|
+
var l, locale;
|
|
121
|
+
l = window.navigator.userLanguage || window.navigator.language || 'en';
|
|
122
|
+
if (l.indexOf("zh") >= 0) {
|
|
123
|
+
locale = "zh-cn";
|
|
124
|
+
} else {
|
|
125
|
+
locale = "en-us";
|
|
126
|
+
}
|
|
127
|
+
return locale;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
Builder.set({
|
|
132
|
+
nodeEnv: "<%=NODE_ENV%>",
|
|
133
|
+
rootUrl: "<%=ROOT_URL%>",
|
|
134
|
+
unpkgUrl: "<%=STEEDOS_UNPKG_URL%>",
|
|
135
|
+
steedosVersion: "<%=STEEDOS_VERSION%>",
|
|
136
|
+
assetUrls: assetUrls,
|
|
137
|
+
steedosAmisVersion: "<%=STEEDOS_AMIS_VERSION%>",
|
|
138
|
+
locale: "<%=STEEDOS_LOCALE%>" || getBrowserLocale()
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
window.axios = amisRequire('axios');
|
|
142
|
+
window.moment = amisRequire('moment');
|
|
143
|
+
window.React = amisRequire('react');
|
|
144
|
+
window.ReactDOM = amisRequire('react-dom');
|
|
145
|
+
|
|
146
|
+
window.addEventListener('message', function (event) {
|
|
147
|
+
const { data } = event;
|
|
148
|
+
if (data.type === 'Builder.loaded') {
|
|
149
|
+
Builder.registerRemoteAssets(Builder.settings.assetUrls);
|
|
150
|
+
}
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
if ("<%=STEEDOS_PUBLIC_SCRIPT_VCONSOLE%>") {
|
|
154
|
+
let scriptTag = document.createElement("script");
|
|
155
|
+
scriptTag.setAttribute("src", "<%=STEEDOS_PUBLIC_SCRIPT_VCONSOLE%>");
|
|
156
|
+
document.getElementsByTagName("head")[0].appendChild(scriptTag);
|
|
157
|
+
scriptTag.onload = function(script){
|
|
158
|
+
window.vConsole = new window.VConsole();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if ("<%=STEEDOS_PUBLIC_SCRIPT_PLUGINS%>") {
|
|
163
|
+
"<%=STEEDOS_PUBLIC_SCRIPT_PLUGINS%>".split(',').forEach(function (src) {
|
|
164
|
+
let scriptTag = document.createElement("script");
|
|
165
|
+
scriptTag.setAttribute("src", src);
|
|
166
|
+
document.getElementsByTagName("head")[0].appendChild(scriptTag);
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
if ("<%=STEEDOS_PUBLIC_STYLE_PLUGINS%>") {
|
|
171
|
+
"<%=STEEDOS_PUBLIC_STYLE_PLUGINS%>".split(',').forEach(function (src) {
|
|
172
|
+
let styleTag = document.createElement("link");
|
|
173
|
+
styleTag.setAttribute("rel", "stylesheet");
|
|
174
|
+
styleTag.setAttribute("type", "text/css");
|
|
175
|
+
styleTag.setAttribute("href", src);
|
|
176
|
+
document.getElementsByTagName("head")[0].appendChild(styleTag);
|
|
177
|
+
})
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
const appId = 'admin';
|
|
182
|
+
|
|
183
|
+
const page = {
|
|
184
|
+
render_engine: 'amis',
|
|
185
|
+
name: "<%=pageApiName%>",
|
|
186
|
+
schema: <%- JSON.stringify(pageSchema) %>
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
const container = $(".page-template-root")[0];
|
|
190
|
+
|
|
191
|
+
Steedos.Page.render(container, page, Object.assign({}, {
|
|
192
|
+
appId: appId
|
|
193
|
+
}));
|
|
194
|
+
|
|
195
|
+
</script>
|
|
196
|
+
</body>
|
|
197
|
+
</html>
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* @Author: baozhoutao@steedos.com
|
|
3
|
+
* @Date: 2022-04-04 16:34:28
|
|
4
|
+
* @Description:
|
|
5
|
+
*/
|
|
6
|
+
const express = require('express');
|
|
7
|
+
const router = express.Router();
|
|
8
|
+
const auth = require('@steedos/auth');
|
|
9
|
+
const ejs = require('ejs');
|
|
10
|
+
const fs = require('fs');
|
|
11
|
+
const _ = require('lodash');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
const objectql = require('@steedos/objectql');
|
|
14
|
+
|
|
15
|
+
router.get('/api/page/view/:pageId', auth.authentication, async function (req, res) {
|
|
16
|
+
try {
|
|
17
|
+
res.set('Content-Type', 'text/html');
|
|
18
|
+
const userSession = req.user;
|
|
19
|
+
const { pageId } = req.params;
|
|
20
|
+
const page = await objectql.getObject('pages').findOne(pageId)
|
|
21
|
+
const pageVersion = await objectql.broker.call(`page.getLatestPageVersion`, {pageId: pageId});
|
|
22
|
+
if(!pageVersion){
|
|
23
|
+
return res.status(404).send({ message: 'Page not found' });
|
|
24
|
+
}else if(page.type != 'app'){
|
|
25
|
+
// 如果不是app类型的page,则返回错误信息
|
|
26
|
+
return res.status(404).send({ message: 'Must be App page.' });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// 如果当前用户未登录,且页面不允许匿名访问,则跳转到登录页面
|
|
30
|
+
if(!userSession && !page.allow_anonymous){
|
|
31
|
+
return res.redirect(`/accounts/a/#/login?redirect_uri=${encodeURIComponent(`/api/page/view/${pageId}`)}`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
let assetUrls = req.query.assetUrls;
|
|
35
|
+
|
|
36
|
+
let locale = "zh-CN";
|
|
37
|
+
if (req.query.locale == "en-us") {
|
|
38
|
+
locale = "en-US";
|
|
39
|
+
} else if (req.query.locale == "zh-cn") {
|
|
40
|
+
locale = "zh-CN";
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const filename = __dirname+'/page_view.ejs';
|
|
44
|
+
const data = {
|
|
45
|
+
Title: page.label,
|
|
46
|
+
pageApiName: page.name,
|
|
47
|
+
STEEDOS_UNPKG_URL: process.env.STEEDOS_UNPKG_URL,
|
|
48
|
+
STEEDOS_AMIS_URL: process.env.STEEDOS_AMIS_URL,
|
|
49
|
+
STEEDOS_PUBLIC_PAGE_ASSETURLS: assetUrls || process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS,
|
|
50
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
51
|
+
ROOT_URL: __meteor_runtime_config__.ROOT_URL,
|
|
52
|
+
STEEDOS_VERSION: process.env.STEEDOS_VERSION,
|
|
53
|
+
STEEDOS_AMIS_VERSION: process.env.STEEDOS_AMIS_VERSION,
|
|
54
|
+
STEEDOS_PUBLIC_SCRIPT_VCONSOLE: process.env.STEEDOS_PUBLIC_SCRIPT_VCONSOLE,
|
|
55
|
+
STEEDOS_PUBLIC_SCRIPT_PLUGINS: process.env.STEEDOS_PUBLIC_SCRIPT_PLUGINS,
|
|
56
|
+
STEEDOS_PUBLIC_STYLE_PLUGINS: process.env.STEEDOS_PUBLIC_STYLE_PLUGINS,
|
|
57
|
+
STEEDOS_LOCALE: locale,
|
|
58
|
+
USER_CONTEXT: {
|
|
59
|
+
user: userSession,
|
|
60
|
+
userId: userSession.userId,
|
|
61
|
+
spaceId: userSession.spaceId
|
|
62
|
+
},
|
|
63
|
+
pageSchema: _.isString(pageVersion.schema) ? JSON.parse(pageVersion.schema) : pageVersion.schema,
|
|
64
|
+
__meteor_runtime_config__: __meteor_runtime_config__
|
|
65
|
+
}
|
|
66
|
+
const options = {}
|
|
67
|
+
ejs.renderFile(filename, data, options, function(err, str){
|
|
68
|
+
// str => Rendered HTML string
|
|
69
|
+
if(err){
|
|
70
|
+
console.log(`err`, err)
|
|
71
|
+
}
|
|
72
|
+
res.send(str);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
} catch (error) {
|
|
76
|
+
res.status(500).send({ message: error.message });
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
router.get('/api/page/public/:pageId', async function (req, res) {
|
|
82
|
+
try {
|
|
83
|
+
res.set('Content-Type', 'text/html');
|
|
84
|
+
const { pageId } = req.params;
|
|
85
|
+
const page = await objectql.getObject('pages').findOne(pageId)
|
|
86
|
+
const pageVersion = await objectql.broker.call(`page.getLatestPageVersion`, {pageId: pageId});
|
|
87
|
+
if(!pageVersion){
|
|
88
|
+
return res.status(404).send({ message: 'Page not found' });
|
|
89
|
+
}else if(page.type != 'app'){
|
|
90
|
+
// 如果不是app类型的page,则返回错误信息
|
|
91
|
+
return res.status(404).send({ message: 'Must be App page.' });
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
let assetUrls = req.query.assetUrls;
|
|
95
|
+
|
|
96
|
+
let locale = "zh-CN";
|
|
97
|
+
if (req.query.locale == "en-us") {
|
|
98
|
+
locale = "en-US";
|
|
99
|
+
} else if (req.query.locale == "zh-cn") {
|
|
100
|
+
locale = "zh-CN";
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const filename = __dirname+'/page_view.ejs';
|
|
104
|
+
const data = {
|
|
105
|
+
Title: page.label,
|
|
106
|
+
pageApiName: page.name,
|
|
107
|
+
STEEDOS_UNPKG_URL: process.env.STEEDOS_UNPKG_URL,
|
|
108
|
+
STEEDOS_AMIS_URL: process.env.STEEDOS_AMIS_URL,
|
|
109
|
+
STEEDOS_PUBLIC_PAGE_ASSETURLS: assetUrls || process.env.STEEDOS_PUBLIC_PAGE_ASSETURLS,
|
|
110
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
111
|
+
ROOT_URL: __meteor_runtime_config__.ROOT_URL,
|
|
112
|
+
STEEDOS_VERSION: process.env.STEEDOS_VERSION,
|
|
113
|
+
STEEDOS_AMIS_VERSION: process.env.STEEDOS_AMIS_VERSION,
|
|
114
|
+
STEEDOS_PUBLIC_SCRIPT_VCONSOLE: process.env.STEEDOS_PUBLIC_SCRIPT_VCONSOLE,
|
|
115
|
+
STEEDOS_PUBLIC_SCRIPT_PLUGINS: process.env.STEEDOS_PUBLIC_SCRIPT_PLUGINS,
|
|
116
|
+
STEEDOS_PUBLIC_STYLE_PLUGINS: process.env.STEEDOS_PUBLIC_STYLE_PLUGINS,
|
|
117
|
+
STEEDOS_LOCALE: locale,
|
|
118
|
+
USER_CONTEXT: {
|
|
119
|
+
user: {},
|
|
120
|
+
userId: "",
|
|
121
|
+
spaceId: ""
|
|
122
|
+
},
|
|
123
|
+
pageSchema: _.isString(pageVersion.schema) ? JSON.parse(pageVersion.schema) : pageVersion.schema,
|
|
124
|
+
__meteor_runtime_config__: __meteor_runtime_config__
|
|
125
|
+
}
|
|
126
|
+
const options = {}
|
|
127
|
+
ejs.renderFile(filename, data, options, function(err, str){
|
|
128
|
+
// str => Rendered HTML string
|
|
129
|
+
if(err){
|
|
130
|
+
console.log(`err`, err)
|
|
131
|
+
}
|
|
132
|
+
res.send(str);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
} catch (error) {
|
|
136
|
+
res.status(500).send({ message: error.message });
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
});
|
|
140
|
+
exports.default = router;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-pages",
|
|
3
|
-
"version": "2.5.11
|
|
3
|
+
"version": "2.5.11",
|
|
4
4
|
"main": "package.service.js",
|
|
5
5
|
"scripts": {},
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"publishConfig": {
|
|
9
9
|
"access": "public"
|
|
10
10
|
},
|
|
11
|
-
"gitHead": "
|
|
11
|
+
"gitHead": "fa315255231ac336e95125366f6c4362a1a3200e",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"ejs": "^3.1.8"
|
|
14
14
|
}
|
package/package.service.js
CHANGED
|
@@ -4,7 +4,8 @@ const packageName = project.name;
|
|
|
4
4
|
const packageLoader = require('@steedos/service-package-loader');
|
|
5
5
|
const objectql = require('@steedos/objectql');
|
|
6
6
|
const _ = require(`lodash`);
|
|
7
|
-
|
|
7
|
+
const path = require('path');
|
|
8
|
+
const fs = require("fs");
|
|
8
9
|
const getCharts = async(apiName)=>{
|
|
9
10
|
const charts = await objectql.getObject('charts').find({ filters: [['name', '=', apiName]] });
|
|
10
11
|
if(charts.length > 0){
|
|
@@ -35,7 +36,8 @@ module.exports = {
|
|
|
35
36
|
path: __dirname,
|
|
36
37
|
name: this.name,
|
|
37
38
|
isPackage: false
|
|
38
|
-
}
|
|
39
|
+
},
|
|
40
|
+
loadedPublicClientJS: false,
|
|
39
41
|
},
|
|
40
42
|
|
|
41
43
|
/**
|
|
@@ -144,14 +146,59 @@ module.exports = {
|
|
|
144
146
|
* Events
|
|
145
147
|
*/
|
|
146
148
|
events: {
|
|
147
|
-
|
|
149
|
+
"steedos-server.started": {
|
|
150
|
+
async handler() {
|
|
151
|
+
await this.publicClientJS();
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
"space.initialized": {
|
|
155
|
+
async handler() {
|
|
156
|
+
await this.publicClientJS();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
148
159
|
},
|
|
149
160
|
|
|
150
161
|
/**
|
|
151
162
|
* Methods
|
|
152
163
|
*/
|
|
153
164
|
methods: {
|
|
154
|
-
|
|
165
|
+
publicClientJS: {
|
|
166
|
+
handler() {
|
|
167
|
+
let packageInfo = this.settings.packageInfo;
|
|
168
|
+
if (!packageInfo) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const { path : packagePath } = packageInfo;
|
|
172
|
+
let publicPath = path.join(packagePath, 'main', 'default', 'client');
|
|
173
|
+
try {
|
|
174
|
+
if (!fs.existsSync(publicPath) || this.settings.loadedPublicClientJS || typeof WebApp == 'undefined') {
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
} catch (error) {
|
|
178
|
+
return
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
try {
|
|
182
|
+
const express = require('express');
|
|
183
|
+
this.settings.loadedPublicClientJS = true;
|
|
184
|
+
try {
|
|
185
|
+
const router = require('@steedos/router').staticRouter();
|
|
186
|
+
let routerPath = "";
|
|
187
|
+
if (__meteor_runtime_config__.ROOT_URL_PATH_PREFIX) {
|
|
188
|
+
routerPath = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX;
|
|
189
|
+
}
|
|
190
|
+
const cacheTime = 86400000 * 1; // one day
|
|
191
|
+
router.use(`${routerPath}/pages/js`, express.static(publicPath, { maxAge: cacheTime }));
|
|
192
|
+
// WebApp.connectHandlers.use(router);
|
|
193
|
+
} catch (error) {
|
|
194
|
+
console.error(error)
|
|
195
|
+
this.settings.loadedPublicClientJS = false;
|
|
196
|
+
}
|
|
197
|
+
} catch (error) {
|
|
198
|
+
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
},
|
|
155
202
|
},
|
|
156
203
|
|
|
157
204
|
/**
|
|
@@ -165,7 +212,9 @@ module.exports = {
|
|
|
165
212
|
* Service started lifecycle event handler
|
|
166
213
|
*/
|
|
167
214
|
async started() {
|
|
168
|
-
|
|
215
|
+
this.broker.waitForServices("steedos-server").then(async () => {
|
|
216
|
+
await this.publicClientJS()
|
|
217
|
+
});
|
|
169
218
|
},
|
|
170
219
|
|
|
171
220
|
/**
|