@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
@@ -50,7 +50,7 @@ async function doModePrompt() {
50
50
  process.env.NODE_ENV = answers.mode == 'development' ? 'development' : 'production'
51
51
  const { config } = require('@things-factory/env')
52
52
 
53
- var ormconfig = require('@things-factory/shell/ormconfig')
53
+ var ormconfig = require('@things-factory/shell/dist-server/initializers/ormconfig.js')
54
54
 
55
55
  if (ormconfig.host) {
56
56
  await confirmHost(ormconfig.host)
@@ -86,7 +86,10 @@ async function migrate(ormconfig, connectionConfig) {
86
86
 
87
87
  debug('Database connection established')
88
88
 
89
- if ((connectionConfig.type == 'sqlite' || connectionConfig.type == 'better-sqlite3') && connectionConfig.synchronize == false) {
89
+ if (
90
+ (connectionConfig.type == 'sqlite' || connectionConfig.type == 'better-sqlite3') &&
91
+ connectionConfig.synchronize == false
92
+ ) {
90
93
  await connection.query('PRAGMA foreign_keys=OFF')
91
94
  await connection.synchronize()
92
95
  await connection.query('PRAGMA foreign_keys=ON')
@@ -103,7 +106,7 @@ async function migrate(ormconfig, connectionConfig) {
103
106
 
104
107
  await connection.close()
105
108
  debug('Database Migration Done.')
106
- } catch(error) {
109
+ } catch (error) {
107
110
  console.error(error)
108
111
  }
109
112
  }
@@ -9,7 +9,8 @@ body {
9
9
  /* monthly layout */
10
10
  --calendar-monthly-ol-margin: var(--margin-default) 0;
11
11
  --calendar-monthly-ol-top-border: 2px solid var(--md-sys-color-secondary);
12
- --calendar-current-monty-background-color: var(--md-sys-color-surface-variant);
12
+ --calendar-current-month-background-color: var(--md-sys-color-surface-variant);
13
+ --calendar-current-month-color: var(--md-sys-color-on-surface);
13
14
  --calendar-monthly-label-align: left;
14
15
  --calendar-monthly-label-padding: var(--padding-narrow) 0;
15
16
  --calendar-monthly-label-color: var(--md-sys-color-secondary);
@@ -35,6 +36,7 @@ body {
35
36
  --calendar-weekly-ol-margin: var(--margin-default) 0;
36
37
  --calendar-weekly-ol-top-border: 2px solid var(--md-sys-color-secondary);
37
38
  --calendar-current-week-background-color: var(--md-sys-color-surface-variant);
39
+ --calendar-current-week-color: var(--md-sys-color-on-surface);
38
40
  --calendar-weekly-label-align: center;
39
41
  --calendar-weekly-label-padding: var(--padding-narrow) 0;
40
42
  --calendar-weekly-label-color: var(--md-sys-color-secondary);
@@ -1,9 +1,10 @@
1
+ html,
1
2
  body {
2
3
  margin: 0;
3
4
  padding: 0;
4
5
  overflow: hidden;
5
6
 
6
- overscroll-behavior-y: none;
7
+ overscroll-behavior: none;
7
8
 
8
9
  /* This is a font-stack that tries to use the system-default sans-serifs first */
9
10
  font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
@@ -1,12 +1,12 @@
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
- export * from './typeorm/encrypt-transform';
11
- export * from './typeorm/json5-transform';
12
- export * from './typeorm/round-transform';
1
+ export * from './migrations/index.js';
2
+ export * from './initializers/naming-strategy.js';
3
+ export * from './initializers/database.js';
4
+ export * from './utils/index.js';
5
+ export * from './pubsub.js';
6
+ export * from './pubsub-log-transport.js';
7
+ export * from './middlewares/index.js';
8
+ export * from './graphql-local-client.js';
9
+ export * from './service/index.js';
10
+ export * from './typeorm/encrypt-transform.js';
11
+ export * from './typeorm/json5-transform.js';
12
+ export * from './typeorm/round-transform.js';
@@ -1,16 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./migrations"), exports);
5
- tslib_1.__exportStar(require("./initializers/naming-strategy"), exports);
6
- tslib_1.__exportStar(require("./initializers/database"), exports);
7
- tslib_1.__exportStar(require("./utils"), exports);
8
- tslib_1.__exportStar(require("./pubsub"), exports);
9
- tslib_1.__exportStar(require("./pubsub-log-transport"), exports);
10
- tslib_1.__exportStar(require("./middlewares"), exports);
11
- tslib_1.__exportStar(require("./graphql-local-client"), exports);
12
- tslib_1.__exportStar(require("./service"), exports);
13
- tslib_1.__exportStar(require("./typeorm/encrypt-transform"), exports);
14
- tslib_1.__exportStar(require("./typeorm/json5-transform"), exports);
15
- tslib_1.__exportStar(require("./typeorm/round-transform"), exports);
4
+ tslib_1.__exportStar(require("./migrations/index.js"), exports);
5
+ tslib_1.__exportStar(require("./initializers/naming-strategy.js"), exports);
6
+ tslib_1.__exportStar(require("./initializers/database.js"), exports);
7
+ tslib_1.__exportStar(require("./utils/index.js"), exports);
8
+ tslib_1.__exportStar(require("./pubsub.js"), exports);
9
+ tslib_1.__exportStar(require("./pubsub-log-transport.js"), exports);
10
+ tslib_1.__exportStar(require("./middlewares/index.js"), exports);
11
+ tslib_1.__exportStar(require("./graphql-local-client.js"), exports);
12
+ tslib_1.__exportStar(require("./service/index.js"), exports);
13
+ tslib_1.__exportStar(require("./typeorm/encrypt-transform.js"), exports);
14
+ tslib_1.__exportStar(require("./typeorm/json5-transform.js"), exports);
15
+ tslib_1.__exportStar(require("./typeorm/round-transform.js"), exports);
16
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,uDAA4B;AAC5B,yEAA8C;AAC9C,kEAAuC;AACvC,kDAAuB;AACvB,mDAAwB;AACxB,iEAAsC;AACtC,wDAA6B;AAC7B,iEAAsC;AACtC,oDAAyB;AAEzB,sEAA2C;AAC3C,oEAAyC;AACzC,oEAAyC","sourcesContent":["export * from './migrations'\nexport * from './initializers/naming-strategy'\nexport * from './initializers/database'\nexport * from './utils'\nexport * from './pubsub'\nexport * from './pubsub-log-transport'\nexport * from './middlewares'\nexport * from './graphql-local-client'\nexport * from './service'\n\nexport * from './typeorm/encrypt-transform'\nexport * from './typeorm/json5-transform'\nexport * from './typeorm/round-transform'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../server/index.ts"],"names":[],"mappings":";;;AAAA,gEAAqC;AACrC,4EAAiD;AACjD,qEAA0C;AAC1C,2DAAgC;AAChC,sDAA2B;AAC3B,oEAAyC;AACzC,iEAAsC;AACtC,oEAAyC;AACzC,6DAAkC;AAElC,yEAA8C;AAC9C,uEAA4C;AAC5C,uEAA4C","sourcesContent":["export * from './migrations/index.js'\nexport * from './initializers/naming-strategy.js'\nexport * from './initializers/database.js'\nexport * from './utils/index.js'\nexport * from './pubsub.js'\nexport * from './pubsub-log-transport.js'\nexport * from './middlewares/index.js'\nexport * from './graphql-local-client.js'\nexport * from './service/index.js'\n\nexport * from './typeorm/encrypt-transform.js'\nexport * from './typeorm/json5-transform.js'\nexport * from './typeorm/round-transform.js'\n"]}
@@ -6,16 +6,10 @@ exports.addDataSource = addDataSource;
6
6
  exports.removeDataSource = removeDataSource;
7
7
  exports.getDataSourceNames = getDataSourceNames;
8
8
  exports.getRepository = getRepository;
9
+ const tslib_1 = require("tslib");
9
10
  const typeorm_1 = require("typeorm");
10
11
  const env_1 = require("@things-factory/env");
11
- const path = require('path');
12
- var ormconfig;
13
- try {
14
- ormconfig = require(path.resolve(env_1.appRootPath, 'ormconfig'));
15
- }
16
- catch (e) {
17
- ormconfig = require('@things-factory/shell/ormconfig');
18
- }
12
+ const ormconfig_js_1 = tslib_1.__importDefault(require("./ormconfig.js"));
19
13
  const dataSources = {};
20
14
  /**
21
15
  * Returns the specified DataSource by name.
@@ -61,7 +55,7 @@ function getRepository(target, tx) {
61
55
  const databaseInitializer = async () => {
62
56
  try {
63
57
  const readConnectionConfig = env_1.config.get('ormconfig');
64
- const dataSource = await (0, typeorm_1.createConnection)(Object.assign(Object.assign({}, ormconfig), readConnectionConfig));
58
+ const dataSource = await (0, typeorm_1.createConnection)(Object.assign(Object.assign({}, ormconfig_js_1.default), readConnectionConfig));
65
59
  addDataSource('default', dataSource);
66
60
  env_1.logger.info('Default DataSource established');
67
61
  if (readConnectionConfig.type == 'sqlite' && readConnectionConfig.synchronize == false) {
@@ -70,7 +64,7 @@ const databaseInitializer = async () => {
70
64
  await dataSource.query('PRAGMA foreign_keys=ON');
71
65
  }
72
66
  if (env_1.config.get('ormconfig4Tx')) {
73
- const dataSource4Tx = new typeorm_1.DataSource(Object.assign(Object.assign({}, ormconfig), env_1.config.get('ormconfig4Tx')));
67
+ const dataSource4Tx = new typeorm_1.DataSource(Object.assign(Object.assign({}, ormconfig_js_1.default), env_1.config.get('ormconfig4Tx')));
74
68
  await dataSource4Tx.initialize();
75
69
  addDataSource('tx', dataSource4Tx);
76
70
  env_1.logger.info('Transaction DataSource established');
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../server/initializers/database.ts"],"names":[],"mappings":";;;AAoBA,sCAEC;AAOD,sCAEC;AAMD,4CAEC;AAMD,gDAEC;AAOD,sCAEC;AAxDD,qCAA+F;AAE/F,6CAAiE;AAEjE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAE5B,IAAI,SAAS,CAAA;AACb,IAAI,CAAC;IACH,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAC7D,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,SAAS,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,WAAW,GAAmC,EAAE,CAAA;AAEtD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAa;IACzC,OAAO,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,UAAsB;IAChE,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAI,MAAuB,EAAE,EAAkB;IAC1E,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAI,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa,CAAI,MAAM,CAAC,CAAA;AAC7F,CAAC;AAED;;GAEG;AACI,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,oBAAoB,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpD,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAgB,kCACpC,SAAS,GACT,oBAAoB,EACvB,CAAA;QAEF,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAEpC,YAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAE7C,IAAI,oBAAoB,CAAC,IAAI,IAAI,QAAQ,IAAI,oBAAoB,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC;YACvF,MAAM,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;YACjD,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;YAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,oBAAU,iCAC/B,SAAS,GACT,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAC7B,CAAA;YACF,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;YAChC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;YAElC,YAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAlCY,QAAA,mBAAmB,uBAkC/B","sourcesContent":["import { createConnection, DataSource, EntityManager, EntityTarget, Repository } from 'typeorm'\n\nimport { appRootPath, config, logger } from '@things-factory/env'\n\nconst path = require('path')\n\nvar ormconfig\ntry {\n ormconfig = require(path.resolve(appRootPath, 'ormconfig'))\n} catch (e) {\n ormconfig = require('@things-factory/shell/ormconfig')\n}\n\nconst dataSources: { [name: string]: DataSource } = {}\n\n/**\n * Returns the specified DataSource by name.\n * @param {string} name - The name of the DataSource.\n * @returns {DataSource} - The DataSource with the specified name.\n */\nexport function getDataSource(name?: string): DataSource {\n return dataSources[name || 'default']\n}\n\n/**\n * Adds a new DataSource with the specified name.\n * @param {string} name - The name of the DataSource to add.\n * @param {DataSource} dataSource - The DataSource to add.\n */\nexport function addDataSource(name: string, dataSource: DataSource) {\n dataSources[name] = dataSource\n}\n\n/**\n * Removes a DataSource with the specified name.\n * @param {string} name - The name of the DataSource to remove.\n */\nexport function removeDataSource(name: string) {\n delete dataSources[name]\n}\n\n/**\n * Returns an array of all registered DataSource names.\n * @returns {string[]} - An array of DataSource names.\n */\nexport function getDataSourceNames() {\n return Object.keys(dataSources)\n}\n\n/**\n * Returns a repository for the specified entity.\n * @param {EntityTarget<X>} target - The target entity for which to get the repository.\n * @returns {Repository<X>} - The repository for the specified entity.\n */\nexport function getRepository<X>(target: EntityTarget<X>, tx?: EntityManager): Repository<X> {\n return tx ? tx.getRepository<X>(target) : getDataSource('default').getRepository<X>(target)\n}\n\n/**\n * Initializes the database connections and data sources.\n */\nexport const databaseInitializer = async () => {\n try {\n const readConnectionConfig = config.get('ormconfig')\n\n const dataSource = await createConnection({\n ...ormconfig,\n ...readConnectionConfig\n })\n\n addDataSource('default', dataSource)\n\n logger.info('Default DataSource established')\n\n if (readConnectionConfig.type == 'sqlite' && readConnectionConfig.synchronize == false) {\n await dataSource.query('PRAGMA foreign_keys=OFF')\n await dataSource.synchronize()\n await dataSource.query('PRAGMA foreign_keys=ON')\n }\n\n if (config.get('ormconfig4Tx')) {\n const dataSource4Tx = new DataSource({\n ...ormconfig,\n ...config.get('ormconfig4Tx')\n })\n await dataSource4Tx.initialize()\n addDataSource('tx', dataSource4Tx)\n\n logger.info('Transaction DataSource established')\n } else {\n addDataSource('tx', dataSource)\n }\n } catch (e) {\n logger.error(e)\n }\n}\n"]}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../server/initializers/database.ts"],"names":[],"mappings":";;;AAYA,sCAEC;AAOD,sCAEC;AAMD,4CAEC;AAMD,gDAEC;AAOD,sCAEC;;AAhDD,qCAA+F;AAE/F,6CAAoD;AACpD,0EAAsC;AAEtC,MAAM,WAAW,GAAmC,EAAE,CAAA;AAEtD;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAa;IACzC,OAAO,WAAW,CAAC,IAAI,IAAI,SAAS,CAAC,CAAA;AACvC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,IAAY,EAAE,UAAsB;IAChE,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAA;AAChC,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY;IAC3C,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;AACjC,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAI,MAAuB,EAAE,EAAkB;IAC1E,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAI,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,aAAa,CAAI,MAAM,CAAC,CAAA;AAC7F,CAAC;AAED;;GAEG;AACI,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;IAC5C,IAAI,CAAC;QACH,MAAM,oBAAoB,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEpD,MAAM,UAAU,GAAG,MAAM,IAAA,0BAAgB,kCACpC,sBAAS,GACT,oBAAoB,EACvB,CAAA;QAEF,aAAa,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;QAEpC,YAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;QAE7C,IAAI,oBAAoB,CAAC,IAAI,IAAI,QAAQ,IAAI,oBAAoB,CAAC,WAAW,IAAI,KAAK,EAAE,CAAC;YACvF,MAAM,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;YACjD,MAAM,UAAU,CAAC,WAAW,EAAE,CAAA;YAC9B,MAAM,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,IAAI,oBAAU,iCAC/B,sBAAS,GACT,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,EAC7B,CAAA;YACF,MAAM,aAAa,CAAC,UAAU,EAAE,CAAA;YAChC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAA;YAElC,YAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAA;QACnD,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAA;QACjC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,YAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;AACH,CAAC,CAAA;AAlCY,QAAA,mBAAmB,uBAkC/B","sourcesContent":["import { createConnection, DataSource, EntityManager, EntityTarget, Repository } from 'typeorm'\n\nimport { config, logger } from '@things-factory/env'\nimport ormconfig from './ormconfig.js'\n\nconst dataSources: { [name: string]: DataSource } = {}\n\n/**\n * Returns the specified DataSource by name.\n * @param {string} name - The name of the DataSource.\n * @returns {DataSource} - The DataSource with the specified name.\n */\nexport function getDataSource(name?: string): DataSource {\n return dataSources[name || 'default']\n}\n\n/**\n * Adds a new DataSource with the specified name.\n * @param {string} name - The name of the DataSource to add.\n * @param {DataSource} dataSource - The DataSource to add.\n */\nexport function addDataSource(name: string, dataSource: DataSource) {\n dataSources[name] = dataSource\n}\n\n/**\n * Removes a DataSource with the specified name.\n * @param {string} name - The name of the DataSource to remove.\n */\nexport function removeDataSource(name: string) {\n delete dataSources[name]\n}\n\n/**\n * Returns an array of all registered DataSource names.\n * @returns {string[]} - An array of DataSource names.\n */\nexport function getDataSourceNames() {\n return Object.keys(dataSources)\n}\n\n/**\n * Returns a repository for the specified entity.\n * @param {EntityTarget<X>} target - The target entity for which to get the repository.\n * @returns {Repository<X>} - The repository for the specified entity.\n */\nexport function getRepository<X>(target: EntityTarget<X>, tx?: EntityManager): Repository<X> {\n return tx ? tx.getRepository<X>(target) : getDataSource('default').getRepository<X>(target)\n}\n\n/**\n * Initializes the database connections and data sources.\n */\nexport const databaseInitializer = async () => {\n try {\n const readConnectionConfig = config.get('ormconfig')\n\n const dataSource = await createConnection({\n ...ormconfig,\n ...readConnectionConfig\n })\n\n addDataSource('default', dataSource)\n\n logger.info('Default DataSource established')\n\n if (readConnectionConfig.type == 'sqlite' && readConnectionConfig.synchronize == false) {\n await dataSource.query('PRAGMA foreign_keys=OFF')\n await dataSource.synchronize()\n await dataSource.query('PRAGMA foreign_keys=ON')\n }\n\n if (config.get('ormconfig4Tx')) {\n const dataSource4Tx = new DataSource({\n ...ormconfig,\n ...config.get('ormconfig4Tx')\n })\n await dataSource4Tx.initialize()\n addDataSource('tx', dataSource4Tx)\n\n logger.info('Transaction DataSource established')\n } else {\n addDataSource('tx', dataSource)\n }\n } catch (e) {\n logger.error(e)\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const env_1 = require("@things-factory/env");
5
+ const naming_strategy_js_1 = require("./naming-strategy.js");
6
+ const debug_1 = tslib_1.__importDefault(require("debug"));
7
+ const debugLogger = (0, debug_1.default)('things-factory:shell:ormconfig');
8
+ function flattenDeep(arr) {
9
+ return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), []);
10
+ }
11
+ /*
12
+ dependencies list를 받아서, entities, migrations, subscribers 폴더 어레이를 빌드한다.
13
+ */
14
+ var entities = env_1.orderedModuleNames.map(dep => (0, env_1.loader)(dep).entities).filter(entity => entity && entity.length > 0);
15
+ entities = flattenDeep(entities);
16
+ var migrations = env_1.orderedModuleNames.map(dep => (0, env_1.loader)(dep).migrations).filter(entity => entity && entity.length > 0);
17
+ migrations = flattenDeep(migrations);
18
+ var subscribers = env_1.orderedModuleNames.map(dep => (0, env_1.loader)(dep).subscribers).filter(entity => entity && entity.length > 0);
19
+ subscribers = flattenDeep(subscribers);
20
+ debugLogger('entities', entities);
21
+ debugLogger('migrations', migrations);
22
+ debugLogger('subscribers', subscribers);
23
+ module.exports = {
24
+ namingStrategy: new naming_strategy_js_1.NamingStrategy(),
25
+ entities,
26
+ migrations,
27
+ subscribers
28
+ };
29
+ exports.default = module.exports;
30
+ //# sourceMappingURL=ormconfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ormconfig.js","sourceRoot":"","sources":["../../server/initializers/ormconfig.ts"],"names":[],"mappings":";;;AAAA,6CAAgE;AAChE,6DAAqD;AACrD,0DAAyB;AAEzB,MAAM,WAAW,GAAG,IAAA,eAAK,EAAC,gCAAgC,CAAC,CAAA;AAE3D,SAAS,WAAW,CAAC,GAAG;IACtB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAC5G,CAAC;AAED;;EAEE;AACF,IAAI,QAAQ,GAAG,wBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,YAAM,EAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAChH,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;AAEhC,IAAI,UAAU,GAAG,wBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,YAAM,EAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACpH,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAA;AAEpC,IAAI,WAAW,GAAG,wBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,YAAM,EAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AACtH,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC,CAAA;AAEtC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AACjC,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AACrC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,CAAA;AAEvC,MAAM,CAAC,OAAO,GAAG;IACf,cAAc,EAAE,IAAI,mCAAc,EAAE;IACpC,QAAQ;IACR,UAAU;IACV,WAAW;CACZ,CAAA;AAED,kBAAe,MAAM,CAAC,OAAO,CAAA","sourcesContent":["import { orderedModuleNames, loader } from '@things-factory/env'\nimport { NamingStrategy } from './naming-strategy.js'\nimport debug from 'debug'\n\nconst debugLogger = debug('things-factory:shell:ormconfig')\n\nfunction flattenDeep(arr) {\n return arr.reduce((acc, val) => (Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val)), [])\n}\n\n/*\n dependencies list를 받아서, entities, migrations, subscribers 폴더 어레이를 빌드한다.\n*/\nvar entities = orderedModuleNames.map(dep => loader(dep).entities).filter(entity => entity && entity.length > 0)\nentities = flattenDeep(entities)\n\nvar migrations = orderedModuleNames.map(dep => loader(dep).migrations).filter(entity => entity && entity.length > 0)\nmigrations = flattenDeep(migrations)\n\nvar subscribers = orderedModuleNames.map(dep => loader(dep).subscribers).filter(entity => entity && entity.length > 0)\nsubscribers = flattenDeep(subscribers)\n\ndebugLogger('entities', entities)\ndebugLogger('migrations', migrations)\ndebugLogger('subscribers', subscribers)\n\nmodule.exports = {\n namingStrategy: new NamingStrategy(),\n entities,\n migrations,\n subscribers\n}\n\nexport default module.exports\n"]}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.domainMiddleware = domainMiddleware;
4
4
  const tslib_1 = require("tslib");
5
5
  const request_ip_1 = tslib_1.__importDefault(require("request-ip"));
6
- const utils_1 = require("../utils");
6
+ const get_domain_js_1 = require("../utils/get-domain.js");
7
7
  async function domainMiddleware(context, next) {
8
8
  var { domain } = context.state;
9
9
  if (!domain) {
@@ -12,7 +12,7 @@ async function domainMiddleware(context, next) {
12
12
  * For purposes such as API calls, the target domainType may be different from the system domainType.
13
13
  * So, we don't check domainType here.
14
14
  */
15
- domain = await (0, utils_1.getDomainFromURL)(context);
15
+ domain = await (0, get_domain_js_1.getDomainFromURL)(context);
16
16
  }
17
17
  if (domain) {
18
18
  const ip = request_ip_1.default.getClientIp(context.req);
@@ -1 +1 @@
1
- {"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":";;AAGA,4CAwDC;;AA3DD,oEAAkC;AAClC,oCAA2C;AAEpC,KAAK,UAAU,gBAAgB,CAAC,OAAY,EAAE,IAAS;IAC5D,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ;;;;WAIG;QACH,MAAM,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,kBAAkB;YAClB,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAA;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE7B,OAAO,IAAI,EAAE,CAAA;AACf,CAAC","sourcesContent":["import requestIp from 'request-ip'\nimport { getDomainFromURL } from '../utils'\n\nexport async function domainMiddleware(context: any, next: any) {\n var { domain } = context.state\n if (!domain) {\n /*\n * The domainType should be checked only when signin and checkin.\n * For purposes such as API calls, the target domainType may be different from the system domainType.\n * So, we don't check domainType here.\n */\n domain = await getDomainFromURL(context)\n }\n\n if (domain) {\n const ip = requestIp.getClientIp(context.req)\n const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}\n\n if (Array.isArray(whitelist) && whitelist.length > 0) {\n /* whitelist 우선 */\n const whitelisted =\n Array.isArray(whitelist) &&\n whitelist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (!whitelisted) {\n context.status = 403\n return\n }\n } else {\n const blacklisted =\n Array.isArray(blacklist) &&\n blacklist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (blacklisted) {\n context.status = 403\n return\n }\n }\n\n if (Array.isArray(protectedlist) && protectedlist.length > 0) {\n const safe = protectedlist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n context.state.unsafeIP = !safe\n\n if (!safe) {\n context.state.prohibitedPrivileges = privileges\n }\n }\n }\n\n context.state.domain = domain\n\n return next()\n}\n"]}
1
+ {"version":3,"file":"domain-middleware.js","sourceRoot":"","sources":["../../server/middlewares/domain-middleware.ts"],"names":[],"mappings":";;AAGA,4CAwDC;;AA3DD,oEAAkC;AAClC,0DAAyD;AAElD,KAAK,UAAU,gBAAgB,CAAC,OAAY,EAAE,IAAS;IAC5D,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAC9B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ;;;;WAIG;QACH,MAAM,GAAG,MAAM,IAAA,gCAAgB,EAAC,OAAO,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC7C,MAAM,EAAE,SAAS,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;QAEnG,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,kBAAkB;YAClB,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GACf,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;gBACxB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACpB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,CAAC,CAAC,CAAA;YAEJ,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO,CAAC,MAAM,GAAG,GAAG,CAAA;gBACpB,OAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAClC,CAAC,CAAC,CAAA;YAEF,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAA;YAE9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,oBAAoB,GAAG,UAAU,CAAA;YACjD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;IAE7B,OAAO,IAAI,EAAE,CAAA;AACf,CAAC","sourcesContent":["import requestIp from 'request-ip'\nimport { getDomainFromURL } from '../utils/get-domain.js'\n\nexport async function domainMiddleware(context: any, next: any) {\n var { domain } = context.state\n if (!domain) {\n /*\n * The domainType should be checked only when signin and checkin.\n * For purposes such as API calls, the target domainType may be different from the system domainType.\n * So, we don't check domainType here.\n */\n domain = await getDomainFromURL(context)\n }\n\n if (domain) {\n const ip = requestIp.getClientIp(context.req)\n const { whitelist = [], blacklist = [], protectedlist = [], privileges = [] } = domain.iplist || {}\n\n if (Array.isArray(whitelist) && whitelist.length > 0) {\n /* whitelist 우선 */\n const whitelisted =\n Array.isArray(whitelist) &&\n whitelist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (!whitelisted) {\n context.status = 403\n return\n }\n } else {\n const blacklisted =\n Array.isArray(blacklist) &&\n blacklist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n if (blacklisted) {\n context.status = 403\n return\n }\n }\n\n if (Array.isArray(protectedlist) && protectedlist.length > 0) {\n const safe = protectedlist.some(item => {\n return new RegExp(item).test(ip)\n })\n\n context.state.unsafeIP = !safe\n\n if (!safe) {\n context.state.prohibitedPrivileges = privileges\n }\n }\n }\n\n context.state.domain = domain\n\n return next()\n}\n"]}
@@ -1,2 +1,2 @@
1
1
  export declare function initMiddlewares(app: any): void;
2
- export * from './domain-middleware';
2
+ export * from './domain-middleware.js';
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initMiddlewares = initMiddlewares;
4
4
  const tslib_1 = require("tslib");
5
5
  const env_1 = require("@things-factory/env");
6
- const domain_middleware_1 = require("./domain-middleware");
6
+ const domain_middleware_js_1 = require("./domain-middleware.js");
7
7
  function initMiddlewares(app) {
8
8
  app.subdomainOffset = env_1.config.get('subdomainOffset', 2);
9
9
  app.on('error', (err, context) => {
@@ -31,10 +31,10 @@ function initMiddlewares(app) {
31
31
  app.use(async (context, next) => {
32
32
  const { method, path } = context;
33
33
  if (method == 'POST' && path.startsWith('/graphql')) {
34
- return await (0, domain_middleware_1.domainMiddleware)(context, next);
34
+ return await (0, domain_middleware_js_1.domainMiddleware)(context, next);
35
35
  }
36
36
  await next();
37
37
  });
38
38
  }
39
- tslib_1.__exportStar(require("./domain-middleware"), exports);
39
+ tslib_1.__exportStar(require("./domain-middleware.js"), exports);
40
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":";;AAIA,0CAoCC;;AAxCD,6CAAoD;AAEpD,2DAAsD;AAEtD,SAAgB,eAAe,CAAC,GAAG;IACjC,GAAG,CAAC,eAAe,GAAG,YAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;IAEtD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAC/B,YAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,GAAG,CAAA;YACnC,OAAO,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA;YAE3B,yCAAyC;YACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhC,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,IAAA,oCAAgB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,8DAAmC","sourcesContent":["import { config, logger } from '@things-factory/env'\n\nimport { domainMiddleware } from './domain-middleware'\n\nexport function initMiddlewares(app) {\n app.subdomainOffset = config.get('subdomainOffset', 2)\n\n app.on('error', (err, context) => {\n logger.error(err)\n })\n\n /*\n * Catching downstream errors\n * - recommend to use context.throw, context.assert\n */\n app.use(async (context, next) => {\n try {\n await next()\n } catch (err) {\n context.status = err?.status || 500\n context.body = err?.message\n\n // emitting error to app.on('error', ...)\n context.app.emit('error', err, context)\n }\n })\n\n /*\n * post:graphql 에 대해서는 domain을 확인한다.\n * graphql app을 router에 적용하지 못하기 때문임.\n */\n app.use(async (context, next) => {\n const { method, path } = context\n\n if (method == 'POST' && path.startsWith('/graphql')) {\n return await domainMiddleware(context, next)\n }\n\n await next()\n })\n}\n\nexport * from './domain-middleware'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/middlewares/index.ts"],"names":[],"mappings":";;AAIA,0CAoCC;;AAxCD,6CAAoD;AAEpD,iEAAyD;AAEzD,SAAgB,eAAe,CAAC,GAAG;IACjC,GAAG,CAAC,eAAe,GAAG,YAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAA;IAEtD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE;QAC/B,YAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,EAAE,CAAA;QACd,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,CAAA,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,KAAI,GAAG,CAAA;YACnC,OAAO,CAAC,IAAI,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,CAAA;YAE3B,yCAAyC;YACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;QACzC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF;;;OAGG;IACH,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC9B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;QAEhC,IAAI,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpD,OAAO,MAAM,IAAA,uCAAgB,EAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC9C,CAAC;QAED,MAAM,IAAI,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,iEAAsC","sourcesContent":["import { config, logger } from '@things-factory/env'\n\nimport { domainMiddleware } from './domain-middleware.js'\n\nexport function initMiddlewares(app) {\n app.subdomainOffset = config.get('subdomainOffset', 2)\n\n app.on('error', (err, context) => {\n logger.error(err)\n })\n\n /*\n * Catching downstream errors\n * - recommend to use context.throw, context.assert\n */\n app.use(async (context, next) => {\n try {\n await next()\n } catch (err) {\n context.status = err?.status || 500\n context.body = err?.message\n\n // emitting error to app.on('error', ...)\n context.app.emit('error', err, context)\n }\n })\n\n /*\n * post:graphql 에 대해서는 domain을 확인한다.\n * graphql app을 router에 적용하지 못하기 때문임.\n */\n app.use(async (context, next) => {\n const { method, path } = context\n\n if (method == 'POST' && path.startsWith('/graphql')) {\n return await domainMiddleware(context, next)\n }\n\n await next()\n })\n}\n\nexport * from './domain-middleware.js'\n"]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SeedDomain1000000000000 = void 0;
4
- const database_1 = require("../initializers/database");
5
- const domain_1 = require("../service/domain/domain");
4
+ const database_js_1 = require("../initializers/database.js");
5
+ const domain_js_1 = require("../service/domain/domain.js");
6
6
  const SEED_DOMAINS = [
7
7
  {
8
8
  name: 'SYSTEM',
@@ -12,13 +12,13 @@ const SEED_DOMAINS = [
12
12
  ];
13
13
  class SeedDomain1000000000000 {
14
14
  async up(queryRunner) {
15
- const repository = (0, database_1.getRepository)(domain_1.Domain);
15
+ const repository = (0, database_js_1.getRepository)(domain_js_1.Domain);
16
16
  return await Promise.all(SEED_DOMAINS.map(async (domain) => {
17
17
  await repository.save(Object.assign({}, domain));
18
18
  }));
19
19
  }
20
20
  async down(queryRunner) {
21
- const repository = (0, database_1.getRepository)(domain_1.Domain);
21
+ const repository = (0, database_js_1.getRepository)(domain_js_1.Domain);
22
22
  return await Promise.all(SEED_DOMAINS.reverse().map(async (domain) => {
23
23
  let recode = await repository.findOneBy({ subdomain: domain.subdomain });
24
24
  await repository.remove(recode);
@@ -1 +1 @@
1
- {"version":3,"file":"1000000000000-SeedDomain.js","sourceRoot":"","sources":["../../server/migrations/1000000000000-SeedDomain.ts"],"names":[],"mappings":";;;AAEA,uDAAwD;AACxD,qDAAiD;AAEjD,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,IAAI;KACjB;CACF,CAAA;AAED,MAAa,uBAAuB;IAC3B,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,UAAU,GAAG,IAAA,wBAAa,EAAC,eAAM,CAAC,CAAA;QAExC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YAC9B,MAAM,UAAU,CAAC,IAAI,mBAChB,MAAM,EACT,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,UAAU,GAAG,IAAA,wBAAa,EAAC,eAAM,CAAC,CAAA;QAExC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACxC,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;YACxE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAvBD,0DAuBC","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\n\nimport { getRepository } from '../initializers/database'\nimport { Domain } from '../service/domain/domain'\n\nconst SEED_DOMAINS = [\n {\n name: 'SYSTEM',\n subdomain: 'system',\n systemFlag: true\n }\n]\n\nexport class SeedDomain1000000000000 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Domain)\n\n return await Promise.all(\n SEED_DOMAINS.map(async domain => {\n await repository.save({\n ...domain\n })\n })\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Domain)\n\n return await Promise.all(\n SEED_DOMAINS.reverse().map(async domain => {\n let recode = await repository.findOneBy({ subdomain: domain.subdomain })\n await repository.remove(recode)\n })\n )\n }\n}\n"]}
1
+ {"version":3,"file":"1000000000000-SeedDomain.js","sourceRoot":"","sources":["../../server/migrations/1000000000000-SeedDomain.ts"],"names":[],"mappings":";;;AAEA,6DAA2D;AAC3D,2DAAoD;AAEpD,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,IAAI;KACjB;CACF,CAAA;AAED,MAAa,uBAAuB;IAC3B,KAAK,CAAC,EAAE,CAAC,WAAwB;QACtC,MAAM,UAAU,GAAG,IAAA,2BAAa,EAAC,kBAAM,CAAC,CAAA;QAExC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YAC9B,MAAM,UAAU,CAAC,IAAI,mBAChB,MAAM,EACT,CAAA;QACJ,CAAC,CAAC,CACH,CAAA;IACH,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,WAAwB;QACxC,MAAM,UAAU,GAAG,IAAA,2BAAa,EAAC,kBAAM,CAAC,CAAA;QAExC,OAAO,MAAM,OAAO,CAAC,GAAG,CACtB,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,MAAM,EAAC,EAAE;YACxC,IAAI,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;YACxE,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACjC,CAAC,CAAC,CACH,CAAA;IACH,CAAC;CACF;AAvBD,0DAuBC","sourcesContent":["import { MigrationInterface, QueryRunner } from 'typeorm'\n\nimport { getRepository } from '../initializers/database.js'\nimport { Domain } from '../service/domain/domain.js'\n\nconst SEED_DOMAINS = [\n {\n name: 'SYSTEM',\n subdomain: 'system',\n systemFlag: true\n }\n]\n\nexport class SeedDomain1000000000000 implements MigrationInterface {\n public async up(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Domain)\n\n return await Promise.all(\n SEED_DOMAINS.map(async domain => {\n await repository.save({\n ...domain\n })\n })\n )\n }\n\n public async down(queryRunner: QueryRunner): Promise<any> {\n const repository = getRepository(Domain)\n\n return await Promise.all(\n SEED_DOMAINS.reverse().map(async domain => {\n let recode = await repository.findOneBy({ subdomain: domain.subdomain })\n await repository.remove(recode)\n })\n )\n }\n}\n"]}
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.migrations = void 0;
4
- const glob = require('glob');
5
- const path = require('path');
4
+ const tslib_1 = require("tslib");
5
+ const glob_1 = tslib_1.__importDefault(require("glob"));
6
+ const path_1 = tslib_1.__importDefault(require("path"));
6
7
  exports.migrations = [];
7
- glob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {
8
+ glob_1.default.sync(path_1.default.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {
8
9
  if (file.indexOf('index.js') !== -1)
9
10
  return;
10
- exports.migrations = exports.migrations.concat(Object.values(require(path.resolve(file))) || []);
11
+ exports.migrations = exports.migrations.concat(Object.values(require(path_1.default.resolve(file))) || []);
11
12
  });
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;AAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAEjB,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAS,IAAI;IACzE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["const glob = require('glob')\nconst path = require('path')\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function(file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/migrations/index.ts"],"names":[],"mappings":";;;;AAAA,wDAAuB;AACvB,wDAAuB;AAEZ,QAAA,UAAU,GAAG,EAAE,CAAA;AAE1B,cAAI,CAAC,IAAI,CAAC,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;IAC1E,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAAE,OAAM;IAC3C,kBAAU,GAAG,kBAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAClF,CAAC,CAAC,CAAA","sourcesContent":["import glob from 'glob'\nimport path from 'path'\n\nexport var migrations = []\n\nglob.sync(path.resolve(__dirname, '.', '**', '*.js')).forEach(function (file) {\n if (file.indexOf('index.js') !== -1) return\n migrations = migrations.concat(Object.values(require(path.resolve(file))) || [])\n})\n"]}
@@ -0,0 +1 @@
1
+ export declare function setupProcessExitHandlers(): void;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setupProcessExitHandlers = setupProcessExitHandlers;
4
+ const tslib_1 = require("tslib");
5
+ const fs = tslib_1.__importStar(require("fs"));
6
+ const path = tslib_1.__importStar(require("path"));
7
+ const os = tslib_1.__importStar(require("os"));
8
+ const child_process_1 = require("child_process");
9
+ const TEMP_DIR = os.tmpdir(); // OS별 임시 디렉토리 사용
10
+ const PID_FILE = path.join(TEMP_DIR, `puppeteer-${process.pid}.pid`);
11
+ // 🛠 **이전에 실행된 유령 프로세스 정리**
12
+ function cleanupZombieProcesses() {
13
+ if (fs.existsSync(PID_FILE)) {
14
+ const pid = fs.readFileSync(PID_FILE, 'utf8').trim();
15
+ if (pid) {
16
+ console.log(`Cleaning up old Puppeteer process with PID: ${pid}`);
17
+ if (os.platform() === 'win32') {
18
+ (0, child_process_1.exec)(`taskkill /F /PID ${pid}`, (err, stdout, stderr) => {
19
+ if (err)
20
+ console.error(`Failed to kill process ${pid} on Windows:`, err);
21
+ else
22
+ console.log(`Process ${pid} killed on Windows.`);
23
+ });
24
+ }
25
+ else {
26
+ try {
27
+ process.kill(Number(pid), 'SIGKILL');
28
+ console.log(`Process ${pid} killed on Unix-like OS.`);
29
+ }
30
+ catch (err) {
31
+ console.error(`Failed to kill process ${pid}:`, err);
32
+ }
33
+ }
34
+ }
35
+ fs.unlinkSync(PID_FILE); // 프로세스 종료 후 PID 파일 삭제
36
+ }
37
+ }
38
+ // **애플리케이션 시작 시 이전 프로세스 정리**
39
+ cleanupZombieProcesses();
40
+ // **현재 프로세스의 PID 저장**
41
+ fs.writeFileSync(PID_FILE, process.pid.toString(), { flag: 'w' });
42
+ async function cleanup() {
43
+ try {
44
+ if (fs.existsSync(PID_FILE)) {
45
+ fs.unlinkSync(PID_FILE); // 종료 시 PID 파일 삭제
46
+ }
47
+ console.log('Cleaning up resources...');
48
+ // **프로세스가 존재하는지 확인 후 종료 시도**
49
+ try {
50
+ process.kill(-process.pid, 'SIGTERM'); // 프로세스 그룹 전체 종료
51
+ console.log(`Successfully killed process group (-${process.pid})`);
52
+ }
53
+ catch (err) {
54
+ if (err.code === 'ESRCH') {
55
+ console.warn(`Warning: Process group (-${process.pid}) already terminated.`);
56
+ }
57
+ else {
58
+ console.error('Cleanup error:', err);
59
+ }
60
+ }
61
+ }
62
+ catch (err) {
63
+ console.error('Cleanup error:', err);
64
+ }
65
+ }
66
+ function setupProcessExitHandlers() {
67
+ process.once('exit', async () => {
68
+ console.log('Parent process is exiting, killing all child processes...');
69
+ await cleanup();
70
+ });
71
+ process.once('SIGINT', async () => {
72
+ console.log('\nReceived SIGINT, cleaning up...');
73
+ await cleanup();
74
+ process.exit(0);
75
+ });
76
+ process.once('SIGTERM', async () => {
77
+ console.log('\nReceived SIGTERM, cleaning up...');
78
+ await cleanup();
79
+ process.exit(0);
80
+ });
81
+ process.once('uncaughtException', async (err) => {
82
+ console.error('\nUncaught Exception:', err);
83
+ await cleanup();
84
+ process.exit(1);
85
+ });
86
+ process.once('unhandledRejection', async (reason) => {
87
+ console.error('\nUnhandled Rejection:', reason);
88
+ await cleanup();
89
+ process.exit(1);
90
+ });
91
+ }
92
+ //# sourceMappingURL=process-cleaner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-cleaner.js","sourceRoot":"","sources":["../server/process-cleaner.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs'\nimport * as path from 'path'\nimport * as os from 'os'\nimport { exec } from 'child_process'\n\nconst TEMP_DIR = os.tmpdir() // OS별 임시 디렉토리 사용\nconst PID_FILE = path.join(TEMP_DIR, `puppeteer-${process.pid}.pid`)\n\n// 🛠 **이전에 실행된 유령 프로세스 정리**\nfunction cleanupZombieProcesses() {\n if (fs.existsSync(PID_FILE)) {\n const pid = fs.readFileSync(PID_FILE, 'utf8').trim()\n\n if (pid) {\n console.log(`Cleaning up old Puppeteer process with PID: ${pid}`)\n\n if (os.platform() === 'win32') {\n exec(`taskkill /F /PID ${pid}`, (err, stdout, stderr) => {\n if (err) console.error(`Failed to kill process ${pid} on Windows:`, err)\n else console.log(`Process ${pid} killed on Windows.`)\n })\n } else {\n try {\n process.kill(Number(pid), 'SIGKILL')\n console.log(`Process ${pid} killed on Unix-like OS.`)\n } catch (err) {\n console.error(`Failed to kill process ${pid}:`, err)\n }\n }\n }\n\n fs.unlinkSync(PID_FILE) // 프로세스 종료 후 PID 파일 삭제\n }\n}\n\n// **애플리케이션 시작 시 이전 프로세스 정리**\ncleanupZombieProcesses()\n\n// **현재 프로세스의 PID 저장**\nfs.writeFileSync(PID_FILE, process.pid.toString(), { flag: 'w' })\n\nasync function cleanup() {\n try {\n if (fs.existsSync(PID_FILE)) {\n fs.unlinkSync(PID_FILE) // 종료 시 PID 파일 삭제\n }\n\n console.log('Cleaning up resources...')\n\n // **프로세스가 존재하는지 확인 후 종료 시도**\n try {\n process.kill(-process.pid, 'SIGTERM') // 프로세스 그룹 전체 종료\n console.log(`Successfully killed process group (-${process.pid})`)\n } catch (err: any) {\n if (err.code === 'ESRCH') {\n console.warn(`Warning: Process group (-${process.pid}) already terminated.`)\n } else {\n console.error('Cleanup error:', err)\n }\n }\n } catch (err) {\n console.error('Cleanup error:', err)\n }\n}\n\nexport function setupProcessExitHandlers() {\n process.once('exit', async () => {\n console.log('Parent process is exiting, killing all child processes...')\n await cleanup()\n })\n\n process.once('SIGINT', async () => {\n console.log('\\nReceived SIGINT, cleaning up...')\n await cleanup()\n process.exit(0)\n })\n\n process.once('SIGTERM', async () => {\n console.log('\\nReceived SIGTERM, cleaning up...')\n await cleanup()\n process.exit(0)\n })\n\n process.once('uncaughtException', async err => {\n console.error('\\nUncaught Exception:', err)\n await cleanup()\n process.exit(1)\n })\n\n process.once('unhandledRejection', async reason => {\n console.error('\\nUnhandled Rejection:', reason)\n await cleanup()\n process.exit(1)\n })\n}\n"]}
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.domainPrivateRouter = exports.domainPublicRouter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
- const domain_middleware_1 = require("../middlewares/domain-middleware");
6
+ const domain_middleware_js_1 = require("../middlewares/domain-middleware.js");
7
7
  exports.domainPublicRouter = new koa_router_1.default();
8
8
  exports.domainPublicRouter.use(async (context, next) => {
9
9
  await next();
10
- }, domain_middleware_1.domainMiddleware);
10
+ }, domain_middleware_js_1.domainMiddleware);
11
11
  exports.domainPrivateRouter = new koa_router_1.default();
12
12
  exports.domainPrivateRouter.use(async (context, next) => {
13
13
  await next();
14
- }, domain_middleware_1.domainMiddleware);
14
+ }, domain_middleware_js_1.domainMiddleware);
15
15
  //# sourceMappingURL=domain-router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain-router.js","sourceRoot":"","sources":["../../server/routers/domain-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,wEAAmE;AAEtD,QAAA,kBAAkB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAC9C,0BAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC7C,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,EAAE,oCAAgB,CAAC,CAAA;AAEP,QAAA,mBAAmB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAC/C,2BAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9C,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,EAAE,oCAAgB,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { domainMiddleware } from '../middlewares/domain-middleware'\n\nexport const domainPublicRouter = new Router()\ndomainPublicRouter.use(async (context, next) => {\n await next()\n}, domainMiddleware)\n\nexport const domainPrivateRouter = new Router()\ndomainPrivateRouter.use(async (context, next) => {\n await next()\n}, domainMiddleware)\n"]}
1
+ {"version":3,"file":"domain-router.js","sourceRoot":"","sources":["../../server/routers/domain-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAE/B,8EAAsE;AAEzD,QAAA,kBAAkB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAC9C,0BAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC7C,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,EAAE,uCAAgB,CAAC,CAAA;AAEP,QAAA,mBAAmB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAC/C,2BAAmB,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9C,MAAM,IAAI,EAAE,CAAA;AACd,CAAC,EAAE,uCAAgB,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\n\nimport { domainMiddleware } from '../middlewares/domain-middleware.js'\n\nexport const domainPublicRouter = new Router()\ndomainPublicRouter.use(async (context, next) => {\n await next()\n}, domainMiddleware)\n\nexport const domainPrivateRouter = new Router()\ndomainPrivateRouter.use(async (context, next) => {\n await next()\n}, domainMiddleware)\n"]}
@@ -4,13 +4,14 @@ exports.globalPrivateRouter = exports.globalPublicRouter = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
6
  const request_ip_1 = tslib_1.__importDefault(require("request-ip"));
7
+ const npm_license_crawler_1 = tslib_1.__importDefault(require("npm-license-crawler"));
8
+ const env_1 = require("@things-factory/env");
7
9
  const operato_license_checker_1 = require("@things-factory/operato-license-checker");
8
- const domain_middleware_1 = require("../middlewares/domain-middleware");
9
- var crawler = require('npm-license-crawler');
10
+ const domain_middleware_js_1 = require("../middlewares/domain-middleware.js");
10
11
  exports.globalPublicRouter = new koa_router_1.default();
11
12
  exports.globalPrivateRouter = new koa_router_1.default();
12
13
  /* even though global private router, catch domain for information */
13
- exports.globalPrivateRouter.use(domain_middleware_1.domainMiddleware);
14
+ exports.globalPrivateRouter.use(domain_middleware_js_1.domainMiddleware);
14
15
  if (process.env.NODE_ENV != 'production') {
15
16
  exports.globalPublicRouter.get('/graphql', async (context, next) => {
16
17
  const initialEndpoint = context.request.href;
@@ -18,8 +19,7 @@ if (process.env.NODE_ENV != 'production') {
18
19
  });
19
20
  }
20
21
  exports.globalPublicRouter.get('/dependencies', async (context, next) => {
21
- const { dependencyGraph } = require('@things-factory/env');
22
- await context.render('dependencies-view-graphviz', { model: dependencyGraph });
22
+ await context.render('dependencies-view-graphviz', { model: env_1.dependencyGraph });
23
23
  });
24
24
  exports.globalPublicRouter.get('/license-info', (context, next) => {
25
25
  context.type = 'application/json';
@@ -34,7 +34,7 @@ exports.globalPublicRouter.get('/opensource-licenses', (context, next) => {
34
34
  production: true,
35
35
  unknown: false
36
36
  };
37
- crawler.dumpLicenses(options, function (error, res) {
37
+ npm_license_crawler_1.default.dumpLicenses(options, function (error, res) {
38
38
  if (error) {
39
39
  console.error('get:/opensource-licenses', error);
40
40
  reject(error);
@@ -1 +1 @@
1
- {"version":3,"file":"global-router.js","sourceRoot":"","sources":["../../server/routers/global-router.ts"],"names":[],"mappings":";;;;AAAA,oEAA+B;AAC/B,oEAAkC;AAElC,qFAAwE;AACxE,wEAAmE;AAEnE,IAAI,OAAO,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAE/B,QAAA,kBAAkB,GAAG,IAAI,oBAAM,EAAE,CAAA;AACjC,QAAA,mBAAmB,GAAG,IAAI,oBAAM,EAAE,CAAA;AAE/C,qEAAqE;AACrE,2BAAmB,CAAC,GAAG,CAAC,oCAAgB,CAAC,CAAA;AAEzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY,EAAE,CAAC;IACzC,0BAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACzD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAA;QAE5C,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,eAAe,EAAE,CAAC,CAAA;IACtD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,0BAAkB,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IAC9D,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAE1D,MAAM,OAAO,CAAC,MAAM,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;AAChF,CAAC,CAAC,CAAA;AAEF,0BAAkB,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IACxD,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAA;IACjC,OAAO,CAAC,IAAI,GAAG,IAAA,wCAAc,GAAE,CAAA;AACjC,CAAC,CAAC,CAAA;AAEF,0BAAkB,CAAC,GAAG,CAAC,sBAAsB,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;IAC/D,OAAO,IAAI,OAAO,CAAC,UAAU,OAAO,EAAE,MAAM;QAC1C,IAAI,OAAO,GAAG;YACZ,KAAK,EAAE,CAAC,GAAG,CAAC;YACZ,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE,KAAK;SACf,CAAA;QAED,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,KAAK,EAAE,GAAG;YAChD,IAAI,KAAK,EAAE,CAAC;gBACV,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;gBAChD,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAAA;gBACjC,OAAO,CAAC,IAAI,GAAG,GAAG,CAAA;gBAClB,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,0BAAkB,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,EAAE;IAChD,OAAO,CAAC,IAAI,GAAG;qCACoB,oBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;;sCAEjC,OAAO,CAAC,EAAE;4CACJ,OAAO,CAAC,QAAQ;wCACpB,OAAO,CAAC,IAAI;;2CAET,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;6CAChC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;4CACrC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;4CACnC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC;GAC5E,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,2EAA2E;AAC3E,0BAAkB,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAA;IACxB,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC,CAAC,CAAA","sourcesContent":["import Router from 'koa-router'\nimport requestIp from 'request-ip'\n\nimport { getLicenseInfo } from '@things-factory/operato-license-checker'\nimport { domainMiddleware } from '../middlewares/domain-middleware'\n\nvar crawler = require('npm-license-crawler')\n\nexport const globalPublicRouter = new Router()\nexport const globalPrivateRouter = new Router()\n\n/* even though global private router, catch domain for information */\nglobalPrivateRouter.use(domainMiddleware)\n\nif (process.env.NODE_ENV != 'production') {\n globalPublicRouter.get('/graphql', async (context, next) => {\n const initialEndpoint = context.request.href\n\n await context.render('graphql', { initialEndpoint })\n })\n}\n\nglobalPublicRouter.get('/dependencies', async (context, next) => {\n const { dependencyGraph } = require('@things-factory/env')\n\n await context.render('dependencies-view-graphviz', { model: dependencyGraph })\n})\n\nglobalPublicRouter.get('/license-info', (context, next) => {\n context.type = 'application/json'\n context.body = getLicenseInfo()\n})\n\nglobalPublicRouter.get('/opensource-licenses', (context, next) => {\n return new Promise(function (resolve, reject) {\n var options = {\n start: ['.'],\n exclude: [],\n noColor: true,\n production: true,\n unknown: false\n }\n\n crawler.dumpLicenses(options, function (error, res) {\n if (error) {\n console.error('get:/opensource-licenses', error)\n reject(error)\n } else {\n context.type = 'application/json'\n context.body = res\n resolve(res)\n }\n })\n })\n})\n\nglobalPublicRouter.get('/request-info', context => {\n context.body = `\n Client info. from \"requestIp\": ${requestIp.getClientIp(context.req)}\n\n Client info. from \"context.ip\": ${context.ip}\n Client info. from \"context.protocol\": ${context.protocol}\n Client info. from \"context.host\": ${context.host}\n\n Client info. from \"x-forwarded-for\": ${context.headers['x-forwarded-for']}\n Client info. from \"x-forwarded-proto\": ${context.headers['x-forwarded-proto']}\n Client info. from \"x-forwarded-host\": ${context.headers['x-forwarded-host']}\n Client info. from \"x-forwarded-port\": ${context.headers['x-forwarded-port']}\n `\n})\n\n/* Paths starting with /public are assumed to use the koa-view renderer. */\nglobalPublicRouter.get('/public/(.[^.]*)', async (context, next) => {\n const { path } = context\n await context.render(path.substr(1))\n})\n"]}
1
+ {"version":3,"file":"global-router.js","sourceRoot":"","sources":["../../server/routers/global-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\nimport requestIp from 'request-ip'\nimport crawler from 'npm-license-crawler'\n\nimport { dependencyGraph } from '@things-factory/env'\nimport { getLicenseInfo } from '@things-factory/operato-license-checker'\n\nimport { domainMiddleware } from '../middlewares/domain-middleware.js'\n\nexport const globalPublicRouter = new Router()\nexport const globalPrivateRouter = new Router()\n\n/* even though global private router, catch domain for information */\nglobalPrivateRouter.use(domainMiddleware)\n\nif (process.env.NODE_ENV != 'production') {\n globalPublicRouter.get('/graphql', async (context, next) => {\n const initialEndpoint = context.request.href\n\n await context.render('graphql', { initialEndpoint })\n })\n}\n\nglobalPublicRouter.get('/dependencies', async (context, next) => {\n await context.render('dependencies-view-graphviz', { model: dependencyGraph })\n})\n\nglobalPublicRouter.get('/license-info', (context, next) => {\n context.type = 'application/json'\n context.body = getLicenseInfo()\n})\n\nglobalPublicRouter.get('/opensource-licenses', (context, next) => {\n return new Promise(function (resolve, reject) {\n var options = {\n start: ['.'],\n exclude: [],\n noColor: true,\n production: true,\n unknown: false\n }\n\n crawler.dumpLicenses(options, function (error, res) {\n if (error) {\n console.error('get:/opensource-licenses', error)\n reject(error)\n } else {\n context.type = 'application/json'\n context.body = res\n resolve(res)\n }\n })\n })\n})\n\nglobalPublicRouter.get('/request-info', context => {\n context.body = `\n Client info. from \"requestIp\": ${requestIp.getClientIp(context.req)}\n\n Client info. from \"context.ip\": ${context.ip}\n Client info. from \"context.protocol\": ${context.protocol}\n Client info. from \"context.host\": ${context.host}\n\n Client info. from \"x-forwarded-for\": ${context.headers['x-forwarded-for']}\n Client info. from \"x-forwarded-proto\": ${context.headers['x-forwarded-proto']}\n Client info. from \"x-forwarded-host\": ${context.headers['x-forwarded-host']}\n Client info. from \"x-forwarded-port\": ${context.headers['x-forwarded-port']}\n `\n})\n\n/* Paths starting with /public are assumed to use the koa-view renderer. */\nglobalPublicRouter.get('/public/(.[^.]*)', async (context, next) => {\n const { path } = context\n await context.render(path.substr(1))\n})\n"]}
@@ -1,3 +1,3 @@
1
- export * from './global-router';
2
- export * from './domain-router';
3
- export * from './graphql-router';
1
+ export * from './global-router.js';
2
+ export * from './domain-router.js';
3
+ export * from './graphql-router.js';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./global-router"), exports);
5
- tslib_1.__exportStar(require("./domain-router"), exports);
6
- tslib_1.__exportStar(require("./graphql-router"), exports);
4
+ tslib_1.__exportStar(require("./global-router.js"), exports);
5
+ tslib_1.__exportStar(require("./domain-router.js"), exports);
6
+ tslib_1.__exportStar(require("./graphql-router.js"), exports);
7
7
  //# sourceMappingURL=index.js.map