@things-factory/shell 8.0.0 → 9.0.0-beta.5

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.
Files changed (175) hide show
  1. package/bin/things-factory-migration +6 -3
  2. package/client/themes/calendar-theme.css +3 -1
  3. package/client/themes/index.css +2 -1
  4. package/dist-server/index.d.ts +12 -12
  5. package/dist-server/index.js +12 -12
  6. package/dist-server/index.js.map +1 -1
  7. package/dist-server/initializers/database.js +4 -10
  8. package/dist-server/initializers/database.js.map +1 -1
  9. package/dist-server/initializers/ormconfig.d.ts +2 -0
  10. package/dist-server/initializers/ormconfig.js +30 -0
  11. package/dist-server/initializers/ormconfig.js.map +1 -0
  12. package/dist-server/middlewares/domain-middleware.js +2 -2
  13. package/dist-server/middlewares/domain-middleware.js.map +1 -1
  14. package/dist-server/middlewares/index.d.ts +1 -1
  15. package/dist-server/middlewares/index.js +3 -3
  16. package/dist-server/middlewares/index.js.map +1 -1
  17. package/dist-server/migrations/1000000000000-SeedDomain.js +4 -4
  18. package/dist-server/migrations/1000000000000-SeedDomain.js.map +1 -1
  19. package/dist-server/migrations/index.js +5 -4
  20. package/dist-server/migrations/index.js.map +1 -1
  21. package/dist-server/process-cleaner.d.ts +1 -0
  22. package/dist-server/process-cleaner.js +92 -0
  23. package/dist-server/process-cleaner.js.map +1 -0
  24. package/dist-server/routers/domain-router.js +3 -3
  25. package/dist-server/routers/domain-router.js.map +1 -1
  26. package/dist-server/routers/global-router.js +6 -6
  27. package/dist-server/routers/global-router.js.map +1 -1
  28. package/dist-server/routers/index.d.ts +3 -3
  29. package/dist-server/routers/index.js +3 -3
  30. package/dist-server/routers/index.js.map +1 -1
  31. package/dist-server/schema.js +5 -4
  32. package/dist-server/schema.js.map +1 -1
  33. package/dist-server/server-dev.js +37 -39
  34. package/dist-server/server-dev.js.map +1 -1
  35. package/dist-server/server.js +33 -35
  36. package/dist-server/server.js.map +1 -1
  37. package/dist-server/service/attribute-set/attribute-set-item-type.js +3 -3
  38. package/dist-server/service/attribute-set/attribute-set-item-type.js.map +1 -1
  39. package/dist-server/service/attribute-set/attribute-set-mutation.d.ts +2 -2
  40. package/dist-server/service/attribute-set/attribute-set-mutation.js +16 -16
  41. package/dist-server/service/attribute-set/attribute-set-mutation.js.map +1 -1
  42. package/dist-server/service/attribute-set/attribute-set-query.d.ts +3 -3
  43. package/dist-server/service/attribute-set/attribute-set-query.js +15 -15
  44. package/dist-server/service/attribute-set/attribute-set-query.js.map +1 -1
  45. package/dist-server/service/attribute-set/attribute-set-type.d.ts +2 -2
  46. package/dist-server/service/attribute-set/attribute-set-type.js +5 -5
  47. package/dist-server/service/attribute-set/attribute-set-type.js.map +1 -1
  48. package/dist-server/service/attribute-set/attribute-set.d.ts +1 -1
  49. package/dist-server/service/attribute-set/attribute-set.js +2 -2
  50. package/dist-server/service/attribute-set/attribute-set.js.map +1 -1
  51. package/dist-server/service/attribute-set/index.d.ts +3 -3
  52. package/dist-server/service/attribute-set/index.js +5 -5
  53. package/dist-server/service/attribute-set/index.js.map +1 -1
  54. package/dist-server/service/common-types/index.d.ts +6 -6
  55. package/dist-server/service/common-types/index.js +6 -6
  56. package/dist-server/service/common-types/index.js.map +1 -1
  57. package/dist-server/service/common-types/list-param.js +2 -2
  58. package/dist-server/service/common-types/list-param.js.map +1 -1
  59. package/dist-server/service/common-types/log.js +2 -2
  60. package/dist-server/service/common-types/log.js.map +1 -1
  61. package/dist-server/service/common-types/scalar-object.d.ts +2 -1
  62. package/dist-server/service/common-types/scalar-object.js +2 -2
  63. package/dist-server/service/common-types/scalar-object.js.map +1 -1
  64. package/dist-server/service/directive-transaction/index.d.ts +1 -1
  65. package/dist-server/service/directive-transaction/index.js +1 -1
  66. package/dist-server/service/directive-transaction/index.js.map +1 -1
  67. package/dist-server/service/directive-transaction/transaction.js +2 -2
  68. package/dist-server/service/directive-transaction/transaction.js.map +1 -1
  69. package/dist-server/service/domain/domain-mutation.d.ts +2 -2
  70. package/dist-server/service/domain/domain-mutation.js +21 -21
  71. package/dist-server/service/domain/domain-mutation.js.map +1 -1
  72. package/dist-server/service/domain/domain-query.d.ts +3 -3
  73. package/dist-server/service/domain/domain-query.js +18 -18
  74. package/dist-server/service/domain/domain-query.js.map +1 -1
  75. package/dist-server/service/domain/domain-types.d.ts +2 -2
  76. package/dist-server/service/domain/domain-types.js +6 -6
  77. package/dist-server/service/domain/domain-types.js.map +1 -1
  78. package/dist-server/service/domain/domain.js +3 -3
  79. package/dist-server/service/domain/domain.js.map +1 -1
  80. package/dist-server/service/domain/index.d.ts +3 -3
  81. package/dist-server/service/domain/index.js +5 -5
  82. package/dist-server/service/domain/index.js.map +1 -1
  83. package/dist-server/service/index.d.ts +7 -7
  84. package/dist-server/service/index.js +16 -16
  85. package/dist-server/service/index.js.map +1 -1
  86. package/dist-server/service/subscription-data/data-resolver.d.ts +1 -1
  87. package/dist-server/service/subscription-data/data-resolver.js +4 -4
  88. package/dist-server/service/subscription-data/data-resolver.js.map +1 -1
  89. package/dist-server/service/subscription-data/data-types.d.ts +1 -1
  90. package/dist-server/service/subscription-data/data-types.js +5 -5
  91. package/dist-server/service/subscription-data/data-types.js.map +1 -1
  92. package/dist-server/service/subscription-data/index.d.ts +1 -1
  93. package/dist-server/service/subscription-data/index.js +2 -2
  94. package/dist-server/service/subscription-data/index.js.map +1 -1
  95. package/dist-server/tsconfig.tsbuildinfo +1 -1
  96. package/dist-server/typeorm/encrypt-transform.js +3 -3
  97. package/dist-server/typeorm/encrypt-transform.js.map +1 -1
  98. package/dist-server/typeorm/json5-transform.js +2 -2
  99. package/dist-server/typeorm/json5-transform.js.map +1 -1
  100. package/dist-server/utils/get-query-builder-from-list-params.d.ts +2 -2
  101. package/dist-server/utils/get-query-builder-from-list-params.js +5 -5
  102. package/dist-server/utils/get-query-builder-from-list-params.js.map +1 -1
  103. package/dist-server/utils/index.d.ts +8 -8
  104. package/dist-server/utils/index.js +8 -8
  105. package/dist-server/utils/index.js.map +1 -1
  106. package/dist-server/utils/list-param-adjuster.d.ts +1 -1
  107. package/dist-server/utils/list-param-adjuster.js.map +1 -1
  108. package/dist-server/utils/list-params-converter.d.ts +2 -2
  109. package/dist-server/utils/list-params-converter.js +2 -2
  110. package/dist-server/utils/list-params-converter.js.map +1 -1
  111. package/dist-server/utils/list-query-builder.d.ts +1 -1
  112. package/dist-server/utils/list-query-builder.js +7 -7
  113. package/dist-server/utils/list-query-builder.js.map +1 -1
  114. package/dist-server/utils/publish-progress.js +2 -2
  115. package/dist-server/utils/publish-progress.js.map +1 -1
  116. package/package.json +14 -16
  117. package/client/hot-client/hot.js +0 -140
  118. package/client/hot-client/index.js +0 -103
  119. package/client/hot-client/log.js +0 -44
  120. package/client/hot-client/socket.js +0 -63
  121. package/ormconfig.js +0 -31
  122. package/server/graphql-local-client.ts +0 -59
  123. package/server/index.ts +0 -13
  124. package/server/initializers/database.ts +0 -96
  125. package/server/initializers/naming-strategy.ts +0 -14
  126. package/server/middlewares/domain-middleware.ts +0 -60
  127. package/server/middlewares/index.ts +0 -43
  128. package/server/migrations/1000000000000-SeedDomain.ts +0 -37
  129. package/server/migrations/index.ts +0 -9
  130. package/server/pubsub-log-transport.ts +0 -59
  131. package/server/pubsub.ts +0 -84
  132. package/server/routers/domain-router.ts +0 -13
  133. package/server/routers/global-router.ts +0 -76
  134. package/server/routers/graphql-router.ts +0 -3
  135. package/server/routers/index.ts +0 -3
  136. package/server/schema.ts +0 -163
  137. package/server/server-dev.ts +0 -305
  138. package/server/server.ts +0 -296
  139. package/server/service/attribute-set/attribute-set-item-type.ts +0 -65
  140. package/server/service/attribute-set/attribute-set-mutation.ts +0 -125
  141. package/server/service/attribute-set/attribute-set-query.ts +0 -36
  142. package/server/service/attribute-set/attribute-set-type.ts +0 -46
  143. package/server/service/attribute-set/attribute-set.ts +0 -35
  144. package/server/service/attribute-set/index.ts +0 -6
  145. package/server/service/common-types/index.ts +0 -6
  146. package/server/service/common-types/list-param.ts +0 -61
  147. package/server/service/common-types/log.ts +0 -17
  148. package/server/service/common-types/object-ref.ts +0 -13
  149. package/server/service/common-types/scalar-any.ts +0 -44
  150. package/server/service/common-types/scalar-date.ts +0 -22
  151. package/server/service/common-types/scalar-object.ts +0 -15
  152. package/server/service/directive-transaction/index.ts +0 -1
  153. package/server/service/directive-transaction/transaction.ts +0 -40
  154. package/server/service/domain/domain-mutation.ts +0 -120
  155. package/server/service/domain/domain-query.ts +0 -48
  156. package/server/service/domain/domain-types.ts +0 -63
  157. package/server/service/domain/domain.ts +0 -147
  158. package/server/service/domain/index.ts +0 -6
  159. package/server/service/index.ts +0 -32
  160. package/server/service/subscription-data/data-resolver.ts +0 -37
  161. package/server/service/subscription-data/data-types.ts +0 -16
  162. package/server/service/subscription-data/index.ts +0 -4
  163. package/server/typeorm/encrypt-transform.ts +0 -70
  164. package/server/typeorm/get-data-encryption-key.ts +0 -13
  165. package/server/typeorm/json5-transform.ts +0 -26
  166. package/server/typeorm/round-transform.ts +0 -20
  167. package/server/utils/condition-builder.ts +0 -145
  168. package/server/utils/get-domain.ts +0 -226
  169. package/server/utils/get-query-builder-from-list-params.ts +0 -469
  170. package/server/utils/get-times-for-period.ts +0 -60
  171. package/server/utils/index.ts +0 -8
  172. package/server/utils/list-param-adjuster.ts +0 -21
  173. package/server/utils/list-params-converter.ts +0 -200
  174. package/server/utils/list-query-builder.ts +0 -120
  175. package/server/utils/publish-progress.ts +0 -23
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/shell",
3
- "version": "8.0.0",
3
+ "version": "9.0.0-beta.5",
4
4
  "description": "Core module for framework",
5
5
  "bin": {
6
6
  "things-factory": "bin/things-factory",
@@ -43,7 +43,7 @@
43
43
  "@graphql-tools/schema": "^8.5.0",
44
44
  "@graphql-tools/utils": "^10.1.2",
45
45
  "@graphql-yoga/redis-event-target": "^3.0.1",
46
- "@hatiolab/things-scene": "^3.2.0",
46
+ "@hatiolab/things-scene": "^9.0.0-beta",
47
47
  "@koa/cors": "^5.0.0",
48
48
  "@material-design-icons/font": "^0.14.9",
49
49
  "@material/mwc-button": "^0.27.0",
@@ -53,19 +53,19 @@
53
53
  "@material/mwc-textfield": "^0.27.0",
54
54
  "@material/web": "^2.0.0",
55
55
  "@open-wc/scoped-elements": "^2.1.3",
56
- "@operato/board": "^8.0.0",
57
- "@operato/graphql": "^8.0.0",
58
- "@operato/help": "^8.0.0",
59
- "@operato/layout": "^8.0.0",
60
- "@operato/shell": "^8.0.0",
61
- "@operato/typeorm-history": "^8.0.0",
62
- "@operato/utils": "^8.0.0",
56
+ "@operato/board": "^9.0.0-beta",
57
+ "@operato/graphql": "^9.0.0-beta",
58
+ "@operato/help": "^9.0.0-beta",
59
+ "@operato/layout": "^9.0.0-beta",
60
+ "@operato/shell": "^9.0.0-beta",
61
+ "@operato/typeorm-history": "^9.0.0-beta",
62
+ "@operato/utils": "^9.0.0-beta",
63
63
  "@reduxjs/toolkit": "^2.2.5",
64
- "@things-factory/ejs-remote": "^8.0.0",
65
- "@things-factory/env": "^8.0.0",
64
+ "@things-factory/ejs-remote": "^9.0.0-beta.5",
65
+ "@things-factory/env": "^9.0.0-beta.5",
66
66
  "@things-factory/operato-license-checker": "^4.0.4",
67
- "@things-factory/styles": "^8.0.0",
68
- "@things-factory/utils": "^8.0.0",
67
+ "@things-factory/styles": "^9.0.0-beta.1",
68
+ "@things-factory/utils": "^9.0.0-beta.0",
69
69
  "@webcomponents/scoped-custom-element-registry": "^0.0.9",
70
70
  "@webcomponents/webcomponentsjs": "^2.6.0",
71
71
  "args": "^5.0.0",
@@ -75,7 +75,6 @@
75
75
  "core-js": "^3.26.0",
76
76
  "debug": "^4.1.1",
77
77
  "firebase": "^9.14.0",
78
- "fs-extra": "^9.0.1",
79
78
  "glob": "^7.1.6",
80
79
  "graphql": "^16.5.0",
81
80
  "graphql-scalars": "^1.22.4",
@@ -98,7 +97,6 @@
98
97
  "koa-static": "^5.0.0",
99
98
  "koa2-connect-history-api-fallback": "^0.1.2",
100
99
  "lit": "^3.1.2",
101
- "loader-utils": "^2.0.0",
102
100
  "lodash": "^4.17.21",
103
101
  "lodash-es": "^4.17.21",
104
102
  "material-symbols": "^0.17.2",
@@ -133,5 +131,5 @@
133
131
  "pg": "^8.7.3",
134
132
  "sqlite3": "^5.0.8"
135
133
  },
136
- "gitHead": "07ef27d272dd9a067a9648ac7013748510556a18"
134
+ "gitHead": "f075f1bd00a9b902a677d44f1844bcbd9c85ea97"
137
135
  }
@@ -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
- })();
@@ -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
- };
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'
@@ -1,96 +0,0 @@
1
- import { createConnection, DataSource, EntityManager, EntityTarget, Repository } from 'typeorm'
2
-
3
- import { appRootPath, config, logger } from '@things-factory/env'
4
-
5
- const path = require('path')
6
-
7
- var ormconfig
8
- try {
9
- ormconfig = require(path.resolve(appRootPath, 'ormconfig'))
10
- } catch (e) {
11
- ormconfig = require('@things-factory/shell/ormconfig')
12
- }
13
-
14
- const dataSources: { [name: string]: DataSource } = {}
15
-
16
- /**
17
- * Returns the specified DataSource by name.
18
- * @param {string} name - The name of the DataSource.
19
- * @returns {DataSource} - The DataSource with the specified name.
20
- */
21
- export function getDataSource(name?: string): DataSource {
22
- return dataSources[name || 'default']
23
- }
24
-
25
- /**
26
- * Adds a new DataSource with the specified name.
27
- * @param {string} name - The name of the DataSource to add.
28
- * @param {DataSource} dataSource - The DataSource to add.
29
- */
30
- export function addDataSource(name: string, dataSource: DataSource) {
31
- dataSources[name] = dataSource
32
- }
33
-
34
- /**
35
- * Removes a DataSource with the specified name.
36
- * @param {string} name - The name of the DataSource to remove.
37
- */
38
- export function removeDataSource(name: string) {
39
- delete dataSources[name]
40
- }
41
-
42
- /**
43
- * Returns an array of all registered DataSource names.
44
- * @returns {string[]} - An array of DataSource names.
45
- */
46
- export function getDataSourceNames() {
47
- return Object.keys(dataSources)
48
- }
49
-
50
- /**
51
- * Returns a repository for the specified entity.
52
- * @param {EntityTarget<X>} target - The target entity for which to get the repository.
53
- * @returns {Repository<X>} - The repository for the specified entity.
54
- */
55
- export function getRepository<X>(target: EntityTarget<X>, tx?: EntityManager): Repository<X> {
56
- return tx ? tx.getRepository<X>(target) : getDataSource('default').getRepository<X>(target)
57
- }
58
-
59
- /**
60
- * Initializes the database connections and data sources.
61
- */
62
- export const databaseInitializer = async () => {
63
- try {
64
- const readConnectionConfig = config.get('ormconfig')
65
-
66
- const dataSource = await createConnection({
67
- ...ormconfig,
68
- ...readConnectionConfig
69
- })
70
-
71
- addDataSource('default', dataSource)
72
-
73
- logger.info('Default DataSource established')
74
-
75
- if (readConnectionConfig.type == 'sqlite' && readConnectionConfig.synchronize == false) {
76
- await dataSource.query('PRAGMA foreign_keys=OFF')
77
- await dataSource.synchronize()
78
- await dataSource.query('PRAGMA foreign_keys=ON')
79
- }
80
-
81
- if (config.get('ormconfig4Tx')) {
82
- const dataSource4Tx = new DataSource({
83
- ...ormconfig,
84
- ...config.get('ormconfig4Tx')
85
- })
86
- await dataSource4Tx.initialize()
87
- addDataSource('tx', dataSource4Tx)
88
-
89
- logger.info('Transaction DataSource established')
90
- } else {
91
- addDataSource('tx', dataSource)
92
- }
93
- } catch (e) {
94
- logger.error(e)
95
- }
96
- }
@@ -1,14 +0,0 @@
1
- import { NamingStrategyInterface } from 'typeorm'
2
- import { DefaultNamingStrategy } from 'typeorm'
3
- import pluralize from 'pluralize'
4
- import _ from 'lodash'
5
-
6
- export class NamingStrategy extends DefaultNamingStrategy implements NamingStrategyInterface {
7
- tableName(targetName: string, userSpecifiedName: string): string {
8
- return userSpecifiedName || pluralize(_.snakeCase(targetName))
9
- }
10
-
11
- columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string {
12
- return _.snakeCase(embeddedPrefixes.concat(customName || propertyName).join('_'))
13
- }
14
- }
@@ -1,60 +0,0 @@
1
- import requestIp from 'request-ip'
2
- import { getDomainFromURL } from '../utils'
3
-
4
- export async function domainMiddleware(context: any, next: any) {
5
- var { domain } = context.state
6
- if (!domain) {
7
- /*
8
- * The domainType should be checked only when signin and checkin.
9
- * For purposes such as API calls, the target domainType may be different from the system domainType.
10
- * So, we don't check domainType here.
11
- */
12
- domain = await getDomainFromURL(context)
13
- }
14
-
15
- if (domain) {
16
- const ip = requestIp.getClientIp(context.req)
17
- const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}
18
-
19
- if (Array.isArray(whitelist) && whitelist.length > 0) {
20
- /* whitelist 우선 */
21
- const whitelisted =
22
- Array.isArray(whitelist) &&
23
- whitelist.some(item => {
24
- return new RegExp(item).test(ip)
25
- })
26
-
27
- if (!whitelisted) {
28
- context.status = 403
29
- return
30
- }
31
- } else {
32
- const blacklisted =
33
- Array.isArray(blacklist) &&
34
- blacklist.some(item => {
35
- return new RegExp(item).test(ip)
36
- })
37
-
38
- if (blacklisted) {
39
- context.status = 403
40
- return
41
- }
42
- }
43
-
44
- if (Array.isArray(protectedlist) && protectedlist.length > 0) {
45
- const safe = protectedlist.some(item => {
46
- return new RegExp(item).test(ip)
47
- })
48
-
49
- context.state.unsafeIP = !safe
50
-
51
- if (!safe) {
52
- context.state.prohibitedPrivileges = privileges
53
- }
54
- }
55
- }
56
-
57
- context.state.domain = domain
58
-
59
- return next()
60
- }