@things-factory/shell 8.0.38 → 9.0.0-9.0.0-beta.59.0
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 +0 -1
- package/bin/things-factory-migration +6 -3
- package/client/themes/calendar-theme.css +3 -1
- package/client/themes/index.css +2 -1
- package/dist-server/index.d.ts +12 -12
- package/dist-server/index.js +12 -12
- package/dist-server/index.js.map +1 -1
- package/dist-server/initializers/database.js +4 -10
- package/dist-server/initializers/database.js.map +1 -1
- package/dist-server/initializers/ormconfig.d.ts +2 -0
- package/dist-server/initializers/ormconfig.js +30 -0
- package/dist-server/initializers/ormconfig.js.map +1 -0
- package/dist-server/middlewares/domain-middleware.js +2 -2
- package/dist-server/middlewares/domain-middleware.js.map +1 -1
- package/dist-server/middlewares/index.d.ts +1 -1
- package/dist-server/middlewares/index.js +3 -3
- package/dist-server/middlewares/index.js.map +1 -1
- package/dist-server/migrations/1000000000000-SeedDomain.js +4 -4
- package/dist-server/migrations/1000000000000-SeedDomain.js.map +1 -1
- package/dist-server/migrations/index.js.map +1 -1
- package/dist-server/process-cleaner.d.ts +1 -0
- package/dist-server/process-cleaner.js +92 -0
- package/dist-server/process-cleaner.js.map +1 -0
- package/dist-server/routers/domain-router.js +3 -3
- package/dist-server/routers/domain-router.js.map +1 -1
- package/dist-server/routers/global-router.js +6 -6
- package/dist-server/routers/global-router.js.map +1 -1
- package/dist-server/routers/index.d.ts +3 -3
- package/dist-server/routers/index.js +3 -3
- package/dist-server/routers/index.js.map +1 -1
- package/dist-server/schema.js +5 -4
- package/dist-server/schema.js.map +1 -1
- package/dist-server/server-dev.js +37 -39
- package/dist-server/server-dev.js.map +1 -1
- package/dist-server/server.js +34 -36
- package/dist-server/server.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-item-type.js +3 -3
- package/dist-server/service/attribute-set/attribute-set-item-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-mutation.d.ts +2 -2
- package/dist-server/service/attribute-set/attribute-set-mutation.js +16 -16
- package/dist-server/service/attribute-set/attribute-set-mutation.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-query.d.ts +3 -3
- package/dist-server/service/attribute-set/attribute-set-query.js +15 -15
- package/dist-server/service/attribute-set/attribute-set-query.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set-type.d.ts +2 -2
- package/dist-server/service/attribute-set/attribute-set-type.js +5 -5
- package/dist-server/service/attribute-set/attribute-set-type.js.map +1 -1
- package/dist-server/service/attribute-set/attribute-set.d.ts +1 -1
- package/dist-server/service/attribute-set/attribute-set.js +2 -2
- package/dist-server/service/attribute-set/attribute-set.js.map +1 -1
- package/dist-server/service/attribute-set/index.d.ts +3 -3
- package/dist-server/service/attribute-set/index.js +5 -5
- package/dist-server/service/attribute-set/index.js.map +1 -1
- package/dist-server/service/common-types/index.d.ts +6 -6
- package/dist-server/service/common-types/index.js +6 -6
- package/dist-server/service/common-types/index.js.map +1 -1
- package/dist-server/service/common-types/list-param.js +2 -2
- package/dist-server/service/common-types/list-param.js.map +1 -1
- package/dist-server/service/common-types/log.js +2 -2
- package/dist-server/service/common-types/log.js.map +1 -1
- package/dist-server/service/common-types/scalar-object.d.ts +2 -1
- package/dist-server/service/common-types/scalar-object.js +2 -2
- package/dist-server/service/common-types/scalar-object.js.map +1 -1
- package/dist-server/service/directive-transaction/index.d.ts +1 -1
- package/dist-server/service/directive-transaction/index.js +1 -1
- package/dist-server/service/directive-transaction/index.js.map +1 -1
- package/dist-server/service/directive-transaction/transaction.js +2 -2
- package/dist-server/service/directive-transaction/transaction.js.map +1 -1
- package/dist-server/service/domain/domain-mutation.d.ts +2 -2
- package/dist-server/service/domain/domain-mutation.js +21 -21
- package/dist-server/service/domain/domain-mutation.js.map +1 -1
- package/dist-server/service/domain/domain-query.js +6 -6
- package/dist-server/service/domain/domain-query.js.map +1 -1
- package/dist-server/service/domain/domain-types.d.ts +2 -2
- package/dist-server/service/domain/domain-types.js +6 -6
- package/dist-server/service/domain/domain-types.js.map +1 -1
- package/dist-server/service/domain/index.d.ts +3 -3
- package/dist-server/service/domain/index.js +5 -5
- package/dist-server/service/domain/index.js.map +1 -1
- package/dist-server/service/index.d.ts +7 -7
- package/dist-server/service/index.js +16 -16
- package/dist-server/service/index.js.map +1 -1
- package/dist-server/service/subscription-data/data-resolver.d.ts +1 -1
- package/dist-server/service/subscription-data/data-resolver.js +4 -4
- package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
- package/dist-server/service/subscription-data/data-types.d.ts +1 -1
- package/dist-server/service/subscription-data/data-types.js +5 -5
- package/dist-server/service/subscription-data/data-types.js.map +1 -1
- package/dist-server/service/subscription-data/index.d.ts +1 -1
- package/dist-server/service/subscription-data/index.js +2 -2
- package/dist-server/service/subscription-data/index.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/dist-server/typeorm/encrypt-transform.js +3 -3
- package/dist-server/typeorm/encrypt-transform.js.map +1 -1
- package/dist-server/utils/get-times-for-period.d.ts +24 -4
- package/dist-server/utils/get-times-for-period.js +42 -5
- package/dist-server/utils/get-times-for-period.js.map +1 -1
- package/dist-server/utils/index.d.ts +8 -8
- package/dist-server/utils/index.js +8 -8
- package/dist-server/utils/index.js.map +1 -1
- package/dist-server/utils/list-param-adjuster.d.ts +1 -1
- package/dist-server/utils/list-param-adjuster.js.map +1 -1
- package/dist-server/utils/list-params-converter.d.ts +2 -2
- package/dist-server/utils/list-params-converter.js +2 -2
- package/dist-server/utils/list-params-converter.js.map +1 -1
- package/dist-server/utils/list-query-builder.d.ts +1 -1
- package/dist-server/utils/list-query-builder.js +7 -7
- package/dist-server/utils/list-query-builder.js.map +1 -1
- package/dist-server/utils/publish-progress.js +2 -2
- package/dist-server/utils/publish-progress.js.map +1 -1
- package/package.json +14 -19
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +2 -1
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/views/public/home.html +0 -1
- package/client/hot-client/hot.js +0 -140
- package/client/hot-client/index.js +0 -103
- package/client/hot-client/log.js +0 -44
- package/client/hot-client/socket.js +0 -63
- package/client/scene/scene-components.js +0 -3
- package/client/scene/scene-player.js +0 -103
- package/client/scene/scene-viewer.js +0 -106
- package/client/scene/things-scene-components.import +0 -1
- package/ormconfig.js +0 -31
- package/server/graphql-local-client.ts +0 -59
- package/server/index.ts +0 -13
- package/server/initializers/database.ts +0 -96
- package/server/initializers/naming-strategy.ts +0 -14
- package/server/middlewares/domain-middleware.ts +0 -60
- package/server/middlewares/index.ts +0 -43
- package/server/migrations/1000000000000-SeedDomain.ts +0 -37
- package/server/migrations/index.ts +0 -9
- package/server/pubsub-log-transport.ts +0 -59
- package/server/pubsub.ts +0 -84
- package/server/routers/domain-router.ts +0 -13
- package/server/routers/global-router.ts +0 -76
- package/server/routers/graphql-router.ts +0 -3
- package/server/routers/index.ts +0 -3
- package/server/schema.ts +0 -163
- package/server/server-dev.ts +0 -305
- package/server/server.ts +0 -296
- package/server/service/attribute-set/attribute-set-item-type.ts +0 -65
- package/server/service/attribute-set/attribute-set-mutation.ts +0 -125
- package/server/service/attribute-set/attribute-set-query.ts +0 -36
- package/server/service/attribute-set/attribute-set-type.ts +0 -46
- package/server/service/attribute-set/attribute-set.ts +0 -35
- package/server/service/attribute-set/index.ts +0 -6
- package/server/service/common-types/index.ts +0 -6
- package/server/service/common-types/list-param.ts +0 -61
- package/server/service/common-types/log.ts +0 -17
- package/server/service/common-types/object-ref.ts +0 -13
- package/server/service/common-types/scalar-any.ts +0 -44
- package/server/service/common-types/scalar-date.ts +0 -22
- package/server/service/common-types/scalar-object.ts +0 -15
- package/server/service/directive-transaction/index.ts +0 -1
- package/server/service/directive-transaction/transaction.ts +0 -40
- package/server/service/domain/domain-mutation.ts +0 -120
- package/server/service/domain/domain-query.ts +0 -55
- package/server/service/domain/domain-types.ts +0 -69
- package/server/service/domain/domain.ts +0 -112
- package/server/service/domain/index.ts +0 -6
- package/server/service/index.ts +0 -32
- package/server/service/subscription-data/data-resolver.ts +0 -37
- package/server/service/subscription-data/data-types.ts +0 -16
- package/server/service/subscription-data/index.ts +0 -4
- package/server/typeorm/encrypt-transform.ts +0 -70
- package/server/typeorm/get-data-encryption-key.ts +0 -13
- package/server/typeorm/json5-transform.ts +0 -26
- package/server/typeorm/round-transform.ts +0 -20
- package/server/utils/condition-builder.ts +0 -145
- package/server/utils/get-domain.ts +0 -228
- package/server/utils/get-query-builder-from-list-params.ts +0 -469
- package/server/utils/get-times-for-period.ts +0 -60
- package/server/utils/index.ts +0 -8
- package/server/utils/list-param-adjuster.ts +0 -21
- package/server/utils/list-params-converter.ts +0 -200
- package/server/utils/list-query-builder.ts +0 -120
- package/server/utils/publish-progress.ts +0 -23
package/translations/ms.json
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
"field.theme": "tema",
|
26
26
|
"prompt.sure to navigate away?": "Anda mempunyai perubahan yang belum disimpan. Adakah anda pasti mahu berpindah?",
|
27
27
|
"text.are_you_sure": "adakah anda pasti?",
|
28
|
+
"text.data_created_successfully": "data berjaya dicipta",
|
28
29
|
"text.data_deleted_successfully": "data telah berjaya dipadam",
|
29
30
|
"text.data_updated_successfully": "data berjaya dikemaskini",
|
30
31
|
"text.data_uploaded_successfully": "data uploaded successfully",
|
package/translations/zh.json
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
"field.theme": "主题",
|
26
26
|
"prompt.sure to navigate away?": "更改未保存。您确定要离开吗?",
|
27
27
|
"text.are_you_sure": "您确定要进行吗?",
|
28
|
+
"text.data_created_successfully": "数据创建成功。",
|
28
29
|
"text.data_updated_successfully": "数据更新成功。",
|
29
30
|
"text.data_uploaded_successfully": "数据上传成功。",
|
30
31
|
"text.data_deleted_successfully": "数据删除成功。",
|
package/views/public/home.html
CHANGED
@@ -51,7 +51,6 @@
|
|
51
51
|
|
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
|
-
<link href="/node_modules/@material-design-icons/font/index.css" rel="stylesheet" />
|
55
54
|
<link href="/node_modules/material-symbols/index.css" rel="stylesheet" />
|
56
55
|
<link href="/node_modules/@fontsource/roboto/index.css" rel="stylesheet" />
|
57
56
|
<link rel="stylesheet" href="/theme.css" />
|
package/client/hot-client/hot.js
DELETED
@@ -1,140 +0,0 @@
|
|
1
|
-
const log = require('./log');
|
2
|
-
|
3
|
-
const refresh = 'Please refresh the page.';
|
4
|
-
const hotOptions = {
|
5
|
-
ignoreUnaccepted: true,
|
6
|
-
ignoreDeclined: true,
|
7
|
-
ignoreErrored: true,
|
8
|
-
onUnaccepted(data) {
|
9
|
-
const chain = [].concat(data.chain);
|
10
|
-
const last = chain[chain.length - 1];
|
11
|
-
|
12
|
-
if (last === 0) {
|
13
|
-
chain.pop();
|
14
|
-
}
|
15
|
-
|
16
|
-
log.warn(`Ignored an update to unaccepted module ${chain.join(' ➭ ')}`);
|
17
|
-
},
|
18
|
-
onDeclined(data) {
|
19
|
-
log.warn(`Ignored an update to declined module ${data.chain.join(' ➭ ')}`);
|
20
|
-
},
|
21
|
-
onErrored(data) {
|
22
|
-
log.warn(`Ignored an error while updating module ${data.moduleId} <${data.type}>`);
|
23
|
-
log.warn(data.error);
|
24
|
-
}
|
25
|
-
};
|
26
|
-
|
27
|
-
let lastHash;
|
28
|
-
|
29
|
-
function upToDate() {
|
30
|
-
return lastHash.indexOf(__webpack_hash__) >= 0;
|
31
|
-
}
|
32
|
-
|
33
|
-
function result(modules, appliedModules) {
|
34
|
-
const unaccepted = modules.filter(
|
35
|
-
(moduleId) => appliedModules && appliedModules.indexOf(moduleId) < 0
|
36
|
-
);
|
37
|
-
|
38
|
-
if (unaccepted.length > 0) {
|
39
|
-
let message = 'The following modules could not be updated:';
|
40
|
-
|
41
|
-
for (const moduleId of unaccepted) {
|
42
|
-
message += `\n ⦻ ${moduleId}`;
|
43
|
-
}
|
44
|
-
log.warn(message);
|
45
|
-
}
|
46
|
-
|
47
|
-
if (!(appliedModules || []).length) {
|
48
|
-
log.info('No Modules Updated.');
|
49
|
-
} else {
|
50
|
-
const message = ['The following modules were updated:'];
|
51
|
-
|
52
|
-
for (const moduleId of appliedModules) {
|
53
|
-
message.push(` ↻ ${moduleId}`);
|
54
|
-
}
|
55
|
-
|
56
|
-
log.info(message.join('\n'));
|
57
|
-
|
58
|
-
const numberIds = appliedModules.every((moduleId) => typeof moduleId === 'number');
|
59
|
-
if (numberIds) {
|
60
|
-
log.info('Please consider using the NamedModulesPlugin for module names.');
|
61
|
-
}
|
62
|
-
}
|
63
|
-
}
|
64
|
-
|
65
|
-
function check(options) {
|
66
|
-
module.hot
|
67
|
-
.check()
|
68
|
-
.then((modules) => {
|
69
|
-
if (!modules) {
|
70
|
-
log.warn(`Cannot find update. The server may have been restarted. ${refresh}`);
|
71
|
-
if (options.reload) {
|
72
|
-
window.location.reload();
|
73
|
-
}
|
74
|
-
return null;
|
75
|
-
}
|
76
|
-
|
77
|
-
const hotOpts = options.reload ? {} : hotOptions;
|
78
|
-
|
79
|
-
return module.hot
|
80
|
-
.apply(hotOpts)
|
81
|
-
.then((appliedModules) => {
|
82
|
-
if (!upToDate()) {
|
83
|
-
check(options);
|
84
|
-
}
|
85
|
-
|
86
|
-
result(modules, appliedModules);
|
87
|
-
|
88
|
-
if (upToDate()) {
|
89
|
-
log.info('App is up to date.');
|
90
|
-
}
|
91
|
-
})
|
92
|
-
.catch((err) => {
|
93
|
-
const status = module.hot.status();
|
94
|
-
if (['abort', 'fail'].indexOf(status) >= 0) {
|
95
|
-
log.warn(`Cannot apply update. ${refresh}`);
|
96
|
-
log.warn(err.stack || err.message);
|
97
|
-
if (options.reload) {
|
98
|
-
window.location.reload();
|
99
|
-
}
|
100
|
-
} else {
|
101
|
-
log.warn(`Update failed: ${err.stack}` || err.message);
|
102
|
-
}
|
103
|
-
});
|
104
|
-
})
|
105
|
-
.catch((err) => {
|
106
|
-
const status = module.hot.status();
|
107
|
-
if (['abort', 'fail'].indexOf(status) >= 0) {
|
108
|
-
log.warn(`Cannot check for update. ${refresh}`);
|
109
|
-
log.warn(err.stack || err.message);
|
110
|
-
if (options.reload) {
|
111
|
-
window.location.reload();
|
112
|
-
}
|
113
|
-
} else {
|
114
|
-
log.warn(`Update check failed: ${err.stack}` || err.message);
|
115
|
-
}
|
116
|
-
});
|
117
|
-
}
|
118
|
-
|
119
|
-
if (module.hot) {
|
120
|
-
log.info('Hot Module Replacement Enabled. Waiting for signal.');
|
121
|
-
} else {
|
122
|
-
log.error('Hot Module Replacement is disabled.');
|
123
|
-
}
|
124
|
-
|
125
|
-
module.exports = function update(currentHash, options) {
|
126
|
-
lastHash = currentHash;
|
127
|
-
if (!upToDate()) {
|
128
|
-
const status = module.hot.status();
|
129
|
-
|
130
|
-
if (status === 'idle') {
|
131
|
-
log.info('Checking for updates to the bundle.');
|
132
|
-
check(options);
|
133
|
-
} else if (['abort', 'fail'].indexOf(status) >= 0) {
|
134
|
-
log.warn(`Cannot apply update. A previous update ${status}ed. ${refresh}`);
|
135
|
-
if (options.reload) {
|
136
|
-
window.location.reload();
|
137
|
-
}
|
138
|
-
}
|
139
|
-
}
|
140
|
-
};
|
@@ -1,103 +0,0 @@
|
|
1
|
-
/* eslint-disable global-require, consistent-return */
|
2
|
-
|
3
|
-
(function hotClientEntry() {
|
4
|
-
// eslint-disable-next-line no-underscore-dangle
|
5
|
-
if (window.__webpackHotClient__) {
|
6
|
-
return;
|
7
|
-
}
|
8
|
-
|
9
|
-
// eslint-disable-next-line no-underscore-dangle
|
10
|
-
window.__webpackHotClient__ = {};
|
11
|
-
|
12
|
-
// this is piped in at runtime build via DefinePlugin in /lib/plugins.js
|
13
|
-
// eslint-disable-next-line no-unused-vars, no-undef
|
14
|
-
const options = __hotClientOptions__;
|
15
|
-
|
16
|
-
const log = require('./log'); // eslint-disable-line import/order
|
17
|
-
|
18
|
-
log.level = options.logLevel;
|
19
|
-
|
20
|
-
const update = require('./hot');
|
21
|
-
const socket = require('./socket');
|
22
|
-
|
23
|
-
if (!options) {
|
24
|
-
throw new Error(
|
25
|
-
'Something went awry and __hotClientOptions__ is undefined. Possible bad build. HMR cannot be enabled.'
|
26
|
-
);
|
27
|
-
}
|
28
|
-
|
29
|
-
let currentHash;
|
30
|
-
let initial = true;
|
31
|
-
let isUnloading;
|
32
|
-
|
33
|
-
window.addEventListener('beforeunload', () => {
|
34
|
-
isUnloading = true;
|
35
|
-
});
|
36
|
-
|
37
|
-
function reload() {
|
38
|
-
if (isUnloading) {
|
39
|
-
return;
|
40
|
-
}
|
41
|
-
|
42
|
-
if (options.hmr) {
|
43
|
-
log.info('App Updated, Reloading Modules');
|
44
|
-
update(currentHash, options);
|
45
|
-
} else if (options.reload) {
|
46
|
-
log.info('Refreshing Page');
|
47
|
-
window.location.reload();
|
48
|
-
} else {
|
49
|
-
log.warn('Please refresh the page manually.');
|
50
|
-
log.info('The `hot` and `reload` options are set to false.');
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
socket(options, {
|
55
|
-
compile({ compilerName }) {
|
56
|
-
log.info(`webpack: Compiling (${compilerName})`);
|
57
|
-
},
|
58
|
-
|
59
|
-
errors({ errors }) {
|
60
|
-
log.error('webpack: Encountered errors while compiling. Reload prevented.');
|
61
|
-
|
62
|
-
for (let i = 0; i < errors.length; i++) {
|
63
|
-
log.error(errors[i]);
|
64
|
-
}
|
65
|
-
},
|
66
|
-
|
67
|
-
hash({ hash }) {
|
68
|
-
currentHash = hash;
|
69
|
-
},
|
70
|
-
|
71
|
-
invalid({ fileName }) {
|
72
|
-
log.info(`App updated. Recompiling ${fileName}`);
|
73
|
-
},
|
74
|
-
|
75
|
-
ok() {
|
76
|
-
if (initial) {
|
77
|
-
initial = false;
|
78
|
-
return initial;
|
79
|
-
}
|
80
|
-
|
81
|
-
reload();
|
82
|
-
},
|
83
|
-
|
84
|
-
'window-reload': () => {
|
85
|
-
window.location.reload();
|
86
|
-
},
|
87
|
-
|
88
|
-
warnings({ warnings }) {
|
89
|
-
log.warn('Warnings while compiling.');
|
90
|
-
|
91
|
-
for (let i = 0; i < warnings.length; i++) {
|
92
|
-
log.warn(warnings[i]);
|
93
|
-
}
|
94
|
-
|
95
|
-
if (initial) {
|
96
|
-
initial = false;
|
97
|
-
return initial;
|
98
|
-
}
|
99
|
-
|
100
|
-
reload();
|
101
|
-
}
|
102
|
-
});
|
103
|
-
})();
|
package/client/hot-client/log.js
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
// eslint-disable-next-line import/no-extraneous-dependencies
|
2
|
-
const loglevel = require('loglevelnext/dist/loglevelnext');
|
3
|
-
|
4
|
-
const { MethodFactory } = loglevel.factories;
|
5
|
-
const css = {
|
6
|
-
prefix:
|
7
|
-
'color: #999; padding: 0 0 0 20px; line-height: 16px; background: url(https://webpack.js.org/6bc5d8cf78d442a984e70195db059b69.svg) no-repeat; background-size: 16px 16px; background-position: 0 -2px;',
|
8
|
-
reset: 'color: #444'
|
9
|
-
};
|
10
|
-
const log = loglevel.getLogger({ name: 'hot', id: 'hot-middleware/client' });
|
11
|
-
|
12
|
-
function IconFactory(logger) {
|
13
|
-
MethodFactory.call(this, logger);
|
14
|
-
}
|
15
|
-
|
16
|
-
IconFactory.prototype = Object.create(MethodFactory.prototype);
|
17
|
-
IconFactory.prototype.constructor = IconFactory;
|
18
|
-
|
19
|
-
IconFactory.prototype.make = function make(methodName) {
|
20
|
-
const og = MethodFactory.prototype.make.call(this, methodName);
|
21
|
-
|
22
|
-
return function _(...params) {
|
23
|
-
const args = [].concat(params);
|
24
|
-
const prefix = '%c「hot」 %c';
|
25
|
-
const [first] = args;
|
26
|
-
|
27
|
-
if (typeof first === 'string') {
|
28
|
-
args[0] = prefix + first;
|
29
|
-
} else {
|
30
|
-
args.unshift(prefix);
|
31
|
-
}
|
32
|
-
|
33
|
-
args.splice(1, 0, css.prefix, css.reset);
|
34
|
-
og(...args);
|
35
|
-
};
|
36
|
-
};
|
37
|
-
|
38
|
-
log.factory = new IconFactory(log, {});
|
39
|
-
|
40
|
-
log.group = console.group; // eslint-disable-line no-console
|
41
|
-
log.groupCollapsed = console.groupCollapsed; // eslint-disable-line no-console
|
42
|
-
log.groupEnd = console.groupEnd; // eslint-disable-line no-console
|
43
|
-
|
44
|
-
module.exports = log;
|
@@ -1,63 +0,0 @@
|
|
1
|
-
const url = require('url');
|
2
|
-
|
3
|
-
const log = require('./log');
|
4
|
-
|
5
|
-
const maxRetries = 10;
|
6
|
-
let retry = maxRetries;
|
7
|
-
|
8
|
-
module.exports = function connect(options, handler) {
|
9
|
-
const { host } = options.webSocket;
|
10
|
-
const socketUrl = url.format({
|
11
|
-
protocol: options.https ? 'wss' : 'ws',
|
12
|
-
hostname: host === '*' ? window.location.hostname : host,
|
13
|
-
port: options.webSocket.port,
|
14
|
-
slashes: true
|
15
|
-
});
|
16
|
-
|
17
|
-
let open = false;
|
18
|
-
let socket = new WebSocket(socketUrl);
|
19
|
-
|
20
|
-
socket.addEventListener('open', () => {
|
21
|
-
open = true;
|
22
|
-
retry = maxRetries;
|
23
|
-
log.info('WebSocket connected');
|
24
|
-
});
|
25
|
-
|
26
|
-
socket.addEventListener('close', () => {
|
27
|
-
log.warn('WebSocket closed');
|
28
|
-
|
29
|
-
open = false;
|
30
|
-
socket = null;
|
31
|
-
|
32
|
-
// exponentation operator ** isn't supported by IE at all
|
33
|
-
const timeout =
|
34
|
-
// eslint-disable-next-line no-restricted-properties
|
35
|
-
1000 * Math.pow(maxRetries - retry, 2) + Math.random() * 100;
|
36
|
-
|
37
|
-
if (open || retry <= 0) {
|
38
|
-
log.warn(`WebSocket: ending reconnect after ${maxRetries} attempts`);
|
39
|
-
return;
|
40
|
-
}
|
41
|
-
|
42
|
-
log.info(`WebSocket: attempting reconnect in ${parseInt(timeout / 1000, 10)}s`);
|
43
|
-
|
44
|
-
setTimeout(() => {
|
45
|
-
retry -= 1;
|
46
|
-
|
47
|
-
connect(
|
48
|
-
options,
|
49
|
-
handler
|
50
|
-
);
|
51
|
-
}, timeout);
|
52
|
-
});
|
53
|
-
|
54
|
-
socket.addEventListener('message', (event) => {
|
55
|
-
log.debug('WebSocket: message:', event.data);
|
56
|
-
|
57
|
-
const message = JSON.parse(event.data);
|
58
|
-
|
59
|
-
if (handler[message.type]) {
|
60
|
-
handler[message.type](message.data);
|
61
|
-
}
|
62
|
-
});
|
63
|
-
};
|
@@ -1,103 +0,0 @@
|
|
1
|
-
import './scene-components'
|
2
|
-
import gql from 'graphql-tag'
|
3
|
-
|
4
|
-
import { ReferenceMap, create, error } from '@hatiolab/things-scene'
|
5
|
-
|
6
|
-
export { BoardViewer, BoardPlayer } from '@operato/board'
|
7
|
-
import { client, gqlContext, subscribe } from '@operato/graphql'
|
8
|
-
|
9
|
-
export const provider = new ReferenceMap(
|
10
|
-
async (boardId, resolve, reject) => {
|
11
|
-
try {
|
12
|
-
const response = await client.query({
|
13
|
-
query: gql`
|
14
|
-
query FetchBoardById($id: String!) {
|
15
|
-
board(id: $id) {
|
16
|
-
model
|
17
|
-
}
|
18
|
-
}
|
19
|
-
`,
|
20
|
-
variables: { id: boardId },
|
21
|
-
context: gqlContext()
|
22
|
-
})
|
23
|
-
|
24
|
-
const board = response.data.board
|
25
|
-
|
26
|
-
var model = JSON.parse(board.model)
|
27
|
-
|
28
|
-
var scene
|
29
|
-
|
30
|
-
try {
|
31
|
-
scene = await provider.get(boardId)
|
32
|
-
console.warn('Board fetched more than twice.', boardId)
|
33
|
-
} catch (e) {
|
34
|
-
scene = create({
|
35
|
-
model,
|
36
|
-
mode: 0,
|
37
|
-
refProvider: provider
|
38
|
-
})
|
39
|
-
|
40
|
-
// s.app.baseUrl = undefined;
|
41
|
-
}
|
42
|
-
|
43
|
-
resolve(scene)
|
44
|
-
} catch (e) {
|
45
|
-
error(e)
|
46
|
-
reject(e)
|
47
|
-
}
|
48
|
-
},
|
49
|
-
async (id, ref) => {
|
50
|
-
ref.dispose()
|
51
|
-
}
|
52
|
-
)
|
53
|
-
|
54
|
-
var subscriptionForAutoRefresh
|
55
|
-
|
56
|
-
export const startSubscribingForAutoRefresh = async (playGroupId, callback) => {
|
57
|
-
if (!playGroupId) {
|
58
|
-
return
|
59
|
-
}
|
60
|
-
|
61
|
-
await stopSubscribing()
|
62
|
-
|
63
|
-
subscriptionForAutoRefresh = await subscribe(
|
64
|
-
{
|
65
|
-
query: gql`
|
66
|
-
subscription ($id: String!) {
|
67
|
-
playGroup(id: $id) {
|
68
|
-
id
|
69
|
-
boards {
|
70
|
-
id
|
71
|
-
model
|
72
|
-
}
|
73
|
-
}
|
74
|
-
}
|
75
|
-
`,
|
76
|
-
variables: {
|
77
|
-
id: playGroupId
|
78
|
-
}
|
79
|
-
},
|
80
|
-
{
|
81
|
-
next: async ({ data }) => {
|
82
|
-
const { id, boards = '{}' } = data.playGroup
|
83
|
-
|
84
|
-
if (data) {
|
85
|
-
callback &&
|
86
|
-
(await callback({
|
87
|
-
id,
|
88
|
-
boards
|
89
|
-
}))
|
90
|
-
}
|
91
|
-
}
|
92
|
-
}
|
93
|
-
)
|
94
|
-
}
|
95
|
-
|
96
|
-
export const stopSubscribing = async () => {
|
97
|
-
await subscriptionForAutoRefresh?.unsubscribe()
|
98
|
-
subscriptionForAutoRefresh = null
|
99
|
-
}
|
100
|
-
|
101
|
-
window['headlessSceneProvider'] = provider
|
102
|
-
window['startSubscribingForAutoRefresh'] = startSubscribingForAutoRefresh
|
103
|
-
window['stopSubscribing'] = stopSubscribing
|
@@ -1,106 +0,0 @@
|
|
1
|
-
import './scene-components'
|
2
|
-
|
3
|
-
import { ReferenceMap, create, error } from '@hatiolab/things-scene'
|
4
|
-
import { client, gqlContext, subscribe } from '@operato/graphql'
|
5
|
-
|
6
|
-
import gql from 'graphql-tag'
|
7
|
-
|
8
|
-
export { BoardViewer } from '@operato/board'
|
9
|
-
|
10
|
-
export const provider = new ReferenceMap(
|
11
|
-
async (boardId, resolve, reject) => {
|
12
|
-
try {
|
13
|
-
const response = await client.query({
|
14
|
-
query: gql`
|
15
|
-
query FetchBoardById($id: String!) {
|
16
|
-
board(id: $id) {
|
17
|
-
model
|
18
|
-
}
|
19
|
-
}
|
20
|
-
`,
|
21
|
-
variables: { id: boardId },
|
22
|
-
context: gqlContext()
|
23
|
-
})
|
24
|
-
|
25
|
-
const board = response.data.board
|
26
|
-
|
27
|
-
var model = JSON.parse(board.model)
|
28
|
-
|
29
|
-
var scene
|
30
|
-
|
31
|
-
try {
|
32
|
-
scene = await provider.get(boardId)
|
33
|
-
console.warn('Board fetched more than twice.', boardId)
|
34
|
-
} catch (e) {
|
35
|
-
scene = create({
|
36
|
-
model,
|
37
|
-
mode: 0,
|
38
|
-
refProvider: provider
|
39
|
-
})
|
40
|
-
|
41
|
-
// s.app.baseUrl = undefined;
|
42
|
-
}
|
43
|
-
|
44
|
-
resolve(scene)
|
45
|
-
|
46
|
-
// resolve(scene, {
|
47
|
-
// ...board,
|
48
|
-
// model
|
49
|
-
// })
|
50
|
-
} catch (e) {
|
51
|
-
error(e)
|
52
|
-
reject(e)
|
53
|
-
}
|
54
|
-
},
|
55
|
-
async (id, ref) => {
|
56
|
-
ref.dispose()
|
57
|
-
}
|
58
|
-
)
|
59
|
-
|
60
|
-
var subscriptionForAutoRefresh
|
61
|
-
|
62
|
-
export const startSubscribingForAutoRefresh = async (boardId, callback) => {
|
63
|
-
if (!boardId) {
|
64
|
-
return
|
65
|
-
}
|
66
|
-
|
67
|
-
await stopSubscribing()
|
68
|
-
|
69
|
-
subscriptionForAutoRefresh = await subscribe(
|
70
|
-
{
|
71
|
-
query: gql`
|
72
|
-
subscription ($id: String!) {
|
73
|
-
board(id: $id) {
|
74
|
-
id
|
75
|
-
model
|
76
|
-
}
|
77
|
-
}
|
78
|
-
`,
|
79
|
-
variables: {
|
80
|
-
id: boardId
|
81
|
-
}
|
82
|
-
},
|
83
|
-
{
|
84
|
-
next: async ({ data }) => {
|
85
|
-
const { id, model = '{}' } = data.board
|
86
|
-
|
87
|
-
if (data) {
|
88
|
-
callback &&
|
89
|
-
(await callback({
|
90
|
-
id,
|
91
|
-
model: JSON.parse(model)
|
92
|
-
}))
|
93
|
-
}
|
94
|
-
}
|
95
|
-
}
|
96
|
-
)
|
97
|
-
}
|
98
|
-
|
99
|
-
export const stopSubscribing = async () => {
|
100
|
-
await subscriptionForAutoRefresh?.unsubscribe()
|
101
|
-
subscriptionForAutoRefresh = null
|
102
|
-
}
|
103
|
-
|
104
|
-
window['headlessSceneProvider'] = provider
|
105
|
-
window['startSubscribingForAutoRefresh'] = startSubscribingForAutoRefresh
|
106
|
-
window['stopSubscribing'] = stopSubscribing
|
@@ -1 +0,0 @@
|
|
1
|
-
/* 이 파일은 node_modules/@things-scene 아래에 설치된 컴포넌트들의 리스트를 스캔해서 자동으로 import 하기위해 things-scene-webpack-loader 에 의해 로드되는 파일이다. */
|
package/ormconfig.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
const { orderedModuleNames, loader } = require('@things-factory/env')
|
2
|
-
const { NamingStrategy } = require('@things-factory/shell')
|
3
|
-
|
4
|
-
const debug = require('debug')('things-factory:shell:ormconfig')
|
5
|
-
|
6
|
-
function flattenDeep(arr) {
|
7
|
-
return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), [])
|
8
|
-
}
|
9
|
-
|
10
|
-
/*
|
11
|
-
dependencies list를 받아서, entities, migrations, subscribers 폴더 어레이를 빌드한다.
|
12
|
-
*/
|
13
|
-
var entities = orderedModuleNames.map(dep => loader(dep).entities).filter(entity => entity && entity.length > 0)
|
14
|
-
entities = flattenDeep(entities)
|
15
|
-
|
16
|
-
var migrations = orderedModuleNames.map(dep => loader(dep).migrations).filter(entity => entity && entity.length > 0)
|
17
|
-
migrations = flattenDeep(migrations)
|
18
|
-
|
19
|
-
var subscribers = orderedModuleNames.map(dep => loader(dep).subscribers).filter(entity => entity && entity.length > 0)
|
20
|
-
subscribers = flattenDeep(subscribers)
|
21
|
-
|
22
|
-
debug('entities', entities)
|
23
|
-
debug('migrations', migrations)
|
24
|
-
debug('subscribers', subscribers)
|
25
|
-
|
26
|
-
module.exports = {
|
27
|
-
namingStrategy: new NamingStrategy(),
|
28
|
-
entities,
|
29
|
-
migrations,
|
30
|
-
subscribers
|
31
|
-
}
|
@@ -1,59 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* Apollo Client configuration for a local GraphQL schema.
|
3
|
-
* This class provides a static method `init` to initialize the client with a schema and an app context.
|
4
|
-
*/
|
5
|
-
import { ApolloClient, InMemoryCache, NormalizedCacheObject } from '@apollo/client'
|
6
|
-
import { SchemaLink } from '@apollo/client/link/schema'
|
7
|
-
|
8
|
-
const defaultOptions: any = {
|
9
|
-
watchQuery: {
|
10
|
-
fetchPolicy: 'no-cache',
|
11
|
-
errorPolicy: 'ignore'
|
12
|
-
},
|
13
|
-
query: {
|
14
|
-
fetchPolicy: 'no-cache',
|
15
|
-
errorPolicy: 'all'
|
16
|
-
},
|
17
|
-
mutate: {
|
18
|
-
errorPolicy: 'all'
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
/**
|
23
|
-
* GraphqlLocalClient is a utility class for initializing an Apollo Client for a local GraphQL schema.
|
24
|
-
* It provides a static `init` method for setting up the client with a schema and an app context.
|
25
|
-
*/
|
26
|
-
export class GraphqlLocalClient {
|
27
|
-
/**
|
28
|
-
* Apollo Client instance for local GraphQL schema.
|
29
|
-
* @static
|
30
|
-
* @type {ApolloClient<NormalizedCacheObject>}
|
31
|
-
*/
|
32
|
-
static client: ApolloClient<NormalizedCacheObject>
|
33
|
-
|
34
|
-
/**
|
35
|
-
* Initializes the Apollo Client for a local GraphQL schema.
|
36
|
-
* @static
|
37
|
-
* @param {object} schema - The GraphQL schema to use.
|
38
|
-
* @param {object} app - The application context to be passed in as part of the execution context.
|
39
|
-
*/
|
40
|
-
static init(schema, app) {
|
41
|
-
const cache = new InMemoryCache({
|
42
|
-
addTypename: false
|
43
|
-
})
|
44
|
-
|
45
|
-
GraphqlLocalClient.client = new ApolloClient({
|
46
|
-
defaultOptions,
|
47
|
-
cache,
|
48
|
-
link: new SchemaLink({
|
49
|
-
schema,
|
50
|
-
context: (obj, args, context, info) => {
|
51
|
-
return {
|
52
|
-
...obj.getContext(),
|
53
|
-
app
|
54
|
-
}
|
55
|
-
}
|
56
|
-
})
|
57
|
-
})
|
58
|
-
}
|
59
|
-
}
|
package/server/index.ts
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
export * from './migrations'
|
2
|
-
export * from './initializers/naming-strategy'
|
3
|
-
export * from './initializers/database'
|
4
|
-
export * from './utils'
|
5
|
-
export * from './pubsub'
|
6
|
-
export * from './pubsub-log-transport'
|
7
|
-
export * from './middlewares'
|
8
|
-
export * from './graphql-local-client'
|
9
|
-
export * from './service'
|
10
|
-
|
11
|
-
export * from './typeorm/encrypt-transform'
|
12
|
-
export * from './typeorm/json5-transform'
|
13
|
-
export * from './typeorm/round-transform'
|