@things-factory/board-service 9.0.0-beta.7 → 9.0.0-beta.71

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 (147) hide show
  1. package/dist-server/controllers/analyzer/analyze-integration.js +2 -2
  2. package/dist-server/controllers/analyzer/analyze-integration.js.map +1 -1
  3. package/dist-server/controllers/headless-model.d.ts +1 -1
  4. package/dist-server/controllers/headless-model.js +6 -6
  5. package/dist-server/controllers/headless-model.js.map +1 -1
  6. package/dist-server/controllers/headless-playlist.d.ts +1 -1
  7. package/dist-server/controllers/headless-playlist.js +5 -5
  8. package/dist-server/controllers/headless-playlist.js.map +1 -1
  9. package/dist-server/controllers/headless-pool-for-label.js +2 -2
  10. package/dist-server/controllers/headless-pool-for-label.js.map +1 -1
  11. package/dist-server/controllers/index.d.ts +1 -1
  12. package/dist-server/controllers/index.js +8 -8
  13. package/dist-server/controllers/index.js.map +1 -1
  14. package/dist-server/controllers/label-command.js +5 -5
  15. package/dist-server/controllers/label-command.js.map +1 -1
  16. package/dist-server/controllers/pdf.d.ts +9 -1
  17. package/dist-server/controllers/pdf.js +7 -7
  18. package/dist-server/controllers/pdf.js.map +1 -1
  19. package/dist-server/controllers/screenshot.js +7 -7
  20. package/dist-server/controllers/screenshot.js.map +1 -1
  21. package/dist-server/controllers/thumbnail.js +2 -2
  22. package/dist-server/controllers/thumbnail.js.map +1 -1
  23. package/dist-server/errors/index.d.ts +1 -1
  24. package/dist-server/errors/index.js +1 -1
  25. package/dist-server/errors/index.js.map +1 -1
  26. package/dist-server/errors/license-error.js +1 -1
  27. package/dist-server/errors/license-error.js.map +1 -1
  28. package/dist-server/index.d.ts +4 -4
  29. package/dist-server/index.js +4 -4
  30. package/dist-server/index.js.map +1 -1
  31. package/dist-server/migrations/1556862253000-SeedGroup.js +3 -3
  32. package/dist-server/migrations/1556862253000-SeedGroup.js.map +1 -1
  33. package/dist-server/routers/standalone-board-service-router.js +28 -28
  34. package/dist-server/routers/standalone-board-service-router.js.map +1 -1
  35. package/dist-server/routes.js +12 -10
  36. package/dist-server/routes.js.map +1 -1
  37. package/dist-server/service/analysis/analysis-query.js +2 -2
  38. package/dist-server/service/analysis/analysis-query.js.map +1 -1
  39. package/dist-server/service/analysis/index.d.ts +1 -1
  40. package/dist-server/service/analysis/index.js +2 -2
  41. package/dist-server/service/analysis/index.js.map +1 -1
  42. package/dist-server/service/board/board-history.d.ts +3 -3
  43. package/dist-server/service/board/board-history.js +7 -7
  44. package/dist-server/service/board/board-history.js.map +1 -1
  45. package/dist-server/service/board/board-mutation.d.ts +2 -2
  46. package/dist-server/service/board/board-mutation.js +39 -39
  47. package/dist-server/service/board/board-mutation.js.map +1 -1
  48. package/dist-server/service/board/board-query.d.ts +5 -5
  49. package/dist-server/service/board/board-query.js +34 -34
  50. package/dist-server/service/board/board-query.js.map +1 -1
  51. package/dist-server/service/board/board-subscription.d.ts +1 -1
  52. package/dist-server/service/board/board-subscription.js +3 -3
  53. package/dist-server/service/board/board-subscription.js.map +1 -1
  54. package/dist-server/service/board/board-type.d.ts +2 -2
  55. package/dist-server/service/board/board-type.js +4 -4
  56. package/dist-server/service/board/board-type.js.map +1 -1
  57. package/dist-server/service/board/board.d.ts +2 -2
  58. package/dist-server/service/board/board.js +7 -7
  59. package/dist-server/service/board/board.js.map +1 -1
  60. package/dist-server/service/board/event-subscriber.d.ts +5 -5
  61. package/dist-server/service/board/event-subscriber.js +8 -8
  62. package/dist-server/service/board/event-subscriber.js.map +1 -1
  63. package/dist-server/service/board/index.d.ts +6 -6
  64. package/dist-server/service/board/index.js +9 -9
  65. package/dist-server/service/board/index.js.map +1 -1
  66. package/dist-server/service/board-favorite/board-favorite-query.d.ts +1 -1
  67. package/dist-server/service/board-favorite/board-favorite-query.js +5 -5
  68. package/dist-server/service/board-favorite/board-favorite-query.js.map +1 -1
  69. package/dist-server/service/board-favorite/board-favorite-type.d.ts +1 -1
  70. package/dist-server/service/board-favorite/board-favorite-type.js +2 -2
  71. package/dist-server/service/board-favorite/board-favorite-type.js.map +1 -1
  72. package/dist-server/service/board-favorite/index.d.ts +1 -1
  73. package/dist-server/service/board-favorite/index.js +2 -2
  74. package/dist-server/service/board-favorite/index.js.map +1 -1
  75. package/dist-server/service/board-template/board-template-mutation.d.ts +2 -2
  76. package/dist-server/service/board-template/board-template-mutation.js +19 -19
  77. package/dist-server/service/board-template/board-template-mutation.js.map +1 -1
  78. package/dist-server/service/board-template/board-template-query.d.ts +2 -2
  79. package/dist-server/service/board-template/board-template-query.js +13 -13
  80. package/dist-server/service/board-template/board-template-query.js.map +1 -1
  81. package/dist-server/service/board-template/board-template-type.d.ts +1 -1
  82. package/dist-server/service/board-template/board-template-type.js +2 -2
  83. package/dist-server/service/board-template/board-template-type.js.map +1 -1
  84. package/dist-server/service/board-template/index.d.ts +3 -3
  85. package/dist-server/service/board-template/index.js +5 -5
  86. package/dist-server/service/board-template/index.js.map +1 -1
  87. package/dist-server/service/group/group-mutation.d.ts +2 -2
  88. package/dist-server/service/group/group-mutation.js +14 -14
  89. package/dist-server/service/group/group-mutation.js.map +1 -1
  90. package/dist-server/service/group/group-query.d.ts +3 -3
  91. package/dist-server/service/group/group-query.js +14 -14
  92. package/dist-server/service/group/group-query.js.map +1 -1
  93. package/dist-server/service/group/group-type.d.ts +1 -1
  94. package/dist-server/service/group/group-type.js +2 -2
  95. package/dist-server/service/group/group-type.js.map +1 -1
  96. package/dist-server/service/group/group.d.ts +1 -1
  97. package/dist-server/service/group/group.js +3 -3
  98. package/dist-server/service/group/group.js.map +1 -1
  99. package/dist-server/service/group/index.d.ts +3 -3
  100. package/dist-server/service/group/index.js +5 -5
  101. package/dist-server/service/group/index.js.map +1 -1
  102. package/dist-server/service/index.d.ts +6 -6
  103. package/dist-server/service/index.js +31 -31
  104. package/dist-server/service/index.js.map +1 -1
  105. package/dist-server/service/permission/domain-permission-subscriber.js +3 -3
  106. package/dist-server/service/permission/domain-permission-subscriber.js.map +1 -1
  107. package/dist-server/service/permission/index.d.ts +1 -1
  108. package/dist-server/service/permission/index.js +2 -2
  109. package/dist-server/service/permission/index.js.map +1 -1
  110. package/dist-server/service/play-group/event-subscriber.d.ts +1 -1
  111. package/dist-server/service/play-group/event-subscriber.js +3 -3
  112. package/dist-server/service/play-group/event-subscriber.js.map +1 -1
  113. package/dist-server/service/play-group/index.d.ts +5 -5
  114. package/dist-server/service/play-group/index.js +8 -8
  115. package/dist-server/service/play-group/index.js.map +1 -1
  116. package/dist-server/service/play-group/play-group-mutation.d.ts +2 -2
  117. package/dist-server/service/play-group/play-group-mutation.js +19 -19
  118. package/dist-server/service/play-group/play-group-mutation.js.map +1 -1
  119. package/dist-server/service/play-group/play-group-query.d.ts +3 -3
  120. package/dist-server/service/play-group/play-group-query.js +15 -15
  121. package/dist-server/service/play-group/play-group-query.js.map +1 -1
  122. package/dist-server/service/play-group/play-group-subscription.d.ts +1 -1
  123. package/dist-server/service/play-group/play-group-subscription.js +3 -3
  124. package/dist-server/service/play-group/play-group-subscription.js.map +1 -1
  125. package/dist-server/service/play-group/play-group-type.d.ts +1 -1
  126. package/dist-server/service/play-group/play-group-type.js +2 -2
  127. package/dist-server/service/play-group/play-group-type.js.map +1 -1
  128. package/dist-server/service/play-group/play-group.d.ts +1 -1
  129. package/dist-server/service/play-group/play-group.js +3 -3
  130. package/dist-server/service/play-group/play-group.js.map +1 -1
  131. package/dist-server/service/theme/index.d.ts +3 -3
  132. package/dist-server/service/theme/index.js +5 -5
  133. package/dist-server/service/theme/index.js.map +1 -1
  134. package/dist-server/service/theme/theme-mutation.d.ts +2 -2
  135. package/dist-server/service/theme/theme-mutation.js +16 -16
  136. package/dist-server/service/theme/theme-mutation.js.map +1 -1
  137. package/dist-server/service/theme/theme-query.d.ts +2 -2
  138. package/dist-server/service/theme/theme-query.js +10 -10
  139. package/dist-server/service/theme/theme-query.js.map +1 -1
  140. package/dist-server/service/theme/theme-type.d.ts +1 -1
  141. package/dist-server/service/theme/theme-type.js +2 -2
  142. package/dist-server/service/theme/theme-type.js.map +1 -1
  143. package/dist-server/tsconfig.tsbuildinfo +1 -1
  144. package/package.json +9 -8
  145. package/views/internal-board-full-feature-view.html +0 -1
  146. package/views/internal-board-player-view.html +0 -1
  147. package/views/internal-board-service-view.html +0 -1
@@ -6,11 +6,11 @@ const type_graphql_1 = require("type-graphql");
6
6
  const typeorm_1 = require("typeorm");
7
7
  const GraphQLUpload_js_1 = tslib_1.__importDefault(require("graphql-upload/GraphQLUpload.js"));
8
8
  const shell_1 = require("@things-factory/shell");
9
- const thumbnail_1 = require("../../controllers/thumbnail");
10
- const group_1 = require("../group/group");
11
- const board_1 = require("./board");
12
- const board_history_1 = require("./board-history");
13
- const board_type_1 = require("./board-type");
9
+ const thumbnail_js_1 = require("../../controllers/thumbnail.js");
10
+ const group_js_1 = require("../group/group.js");
11
+ const board_js_1 = require("./board.js");
12
+ const board_history_js_1 = require("./board-history.js");
13
+ const board_type_js_1 = require("./board-type.js");
14
14
  async function parseJSONFile(uploadedFile) {
15
15
  var { createReadStream } = await uploadedFile;
16
16
  return new Promise((resolve, reject) => {
@@ -37,8 +37,8 @@ async function parseJSONFile(uploadedFile) {
37
37
  let BoardMutation = class BoardMutation {
38
38
  async createBoard(board, context) {
39
39
  const { domain, user, notify, tx } = context.state;
40
- const repository = tx.getRepository(board_1.Board);
41
- const groupRepository = tx.getRepository(group_1.Group);
40
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
41
+ const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
42
42
  const oldBoard = await repository.findOneBy({
43
43
  name: board.name,
44
44
  domain: { id: domain.id }
@@ -59,14 +59,14 @@ let BoardMutation = class BoardMutation {
59
59
  mode: 'in-app',
60
60
  title: `Board '${created.name}' created`,
61
61
  body: `Board '${created.name}' created by ${user.name}\n${created.description}`,
62
- url: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/board-viewer/${created.id}`)
62
+ url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${created.id}`)
63
63
  });
64
64
  return created;
65
65
  }
66
66
  async cloneBoard(id, patch, targetSubdomain, targetGroupId, context) {
67
67
  const { domain, user, notify, tx } = context.state;
68
68
  const { t } = context;
69
- const repository = tx.getRepository(board_1.Board);
69
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
70
70
  const board = await repository.findOneBy({ domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id });
71
71
  if (!patch.name || (patch.name == board.name && targetSubdomain == domain.subdomain)) {
72
72
  throw t('error.name must be unique from the original board', { name: patch.name });
@@ -78,14 +78,14 @@ let BoardMutation = class BoardMutation {
78
78
  }
79
79
  var targetDomain = domain;
80
80
  if (targetDomain && domain.subdomain != targetSubdomain) {
81
- targetDomain = await tx.getRepository(shell_1.Domain).findOneBy({ subdomain: targetSubdomain });
81
+ targetDomain = await (0, shell_1.getRepository)(shell_1.Domain, tx).findOneBy({ subdomain: targetSubdomain });
82
82
  if (!targetDomain) {
83
83
  throw `given subdomain(${targetSubdomain}) not found`;
84
84
  }
85
85
  }
86
86
  var targetGroup = null;
87
87
  if (targetGroupId) {
88
- targetGroup = await tx.getRepository(group_1.Group).findOneBy({ domain: { id: targetDomain.id }, id: targetGroupId });
88
+ targetGroup = await (0, shell_1.getRepository)(group_js_1.Group, tx).findOneBy({ domain: { id: targetDomain.id }, id: targetGroupId });
89
89
  if (!targetGroup) {
90
90
  throw `given group(${targetGroupId}) in domain(${targetSubdomain}) not found`;
91
91
  }
@@ -97,20 +97,20 @@ let BoardMutation = class BoardMutation {
97
97
  mode: 'in-app',
98
98
  title: `Board '${cloned.name}' cloned`,
99
99
  body: `Board '${cloned.name}' cloned by ${user.name}\n${cloned.description}`,
100
- image: (0, shell_1.getRedirectSubdomainPath)(context, targetSubdomain, `/thumbnail/${cloned.id}`),
101
- url: (0, shell_1.getRedirectSubdomainPath)(context, targetSubdomain, `/board-viewer/${cloned.id}`)
100
+ image: (0, shell_1.getRedirectSubdomainPath)(context, targetDomain, `/thumbnail/${cloned.id}`),
101
+ url: (0, shell_1.getRedirectSubdomainPath)(context, targetDomain, `/board-viewer/${cloned.id}`)
102
102
  });
103
103
  return cloned;
104
104
  }
105
105
  async updateBoard(id, patch, context) {
106
106
  const { domain, user, notify, tx } = context.state;
107
- const repository = tx.getRepository(board_1.Board);
107
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
108
108
  const board = await repository.findOne({
109
109
  where: { domain: { id: domain.id }, id },
110
110
  relations: ['creator']
111
111
  });
112
112
  if (patch.model) {
113
- const thumbnailPromise = (0, thumbnail_1.thumbnail)({
113
+ const thumbnailPromise = (0, thumbnail_js_1.thumbnail)({
114
114
  model: patch.model,
115
115
  context
116
116
  });
@@ -133,7 +133,7 @@ let BoardMutation = class BoardMutation {
133
133
  .then(async (thumbnailBase64) => {
134
134
  /* use new resource manager */
135
135
  await (0, shell_1.getDataSource)().transaction(async (tx) => {
136
- await tx.getRepository(board_1.Board).save({
136
+ await (0, shell_1.getRepository)(board_js_1.Board, tx).save({
137
137
  id: updated.id,
138
138
  thumbnail: 'data:image/png;base64,' + thumbnailBase64.toString('base64')
139
139
  });
@@ -146,7 +146,7 @@ let BoardMutation = class BoardMutation {
146
146
  }
147
147
  const { groupId } = patch, patched = tslib_1.__rest(patch, ["groupId"]);
148
148
  if (groupId !== undefined) {
149
- const groupRepository = tx.getRepository(group_1.Group);
149
+ const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
150
150
  board.group = groupId
151
151
  ? (await groupRepository.findOneBy({
152
152
  domain: { id: domain.id },
@@ -160,14 +160,14 @@ let BoardMutation = class BoardMutation {
160
160
  mode: 'in-app',
161
161
  title: `Board '${updated.name}' updated`,
162
162
  body: `Board '${updated.name}' updated by ${user.name}\n${updated.description}`,
163
- image: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/thumbnail/${updated.id}`),
164
- url: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/board-viewer/${updated.id}`)
163
+ image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
164
+ url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
165
165
  });
166
166
  return updated;
167
167
  }
168
168
  async releaseBoard(id, context) {
169
169
  const { domain, user, notify, tx } = context.state;
170
- const repository = tx.getRepository(board_1.Board);
170
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
171
171
  const board = await repository.findOne({
172
172
  where: { domain: { id: domain.id }, id },
173
173
  relations: ['creator']
@@ -184,14 +184,14 @@ let BoardMutation = class BoardMutation {
184
184
  mode: 'in-app',
185
185
  title: `Board '${updated.name}' released`,
186
186
  body: `Board '${updated.name}' released by ${user.name}\n${updated.description}`,
187
- image: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/thumbnail/${updated.id}`),
188
- url: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/board-viewer/${updated.id}`)
187
+ image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
188
+ url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
189
189
  });
190
190
  return updated;
191
191
  }
192
192
  async revertBoardVersion(id, version, context) {
193
193
  const { domain, user, notify, tx } = context.state;
194
- const repository = tx.getRepository(board_1.Board);
194
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
195
195
  const board = await repository.findOne({
196
196
  where: { domain: { id: domain.id }, id },
197
197
  relations: ['creator']
@@ -199,7 +199,7 @@ let BoardMutation = class BoardMutation {
199
199
  if (!board) {
200
200
  throw `Board with id(${id}) is not found`;
201
201
  }
202
- const historyRepository = tx.getRepository(board_history_1.BoardHistory);
202
+ const historyRepository = (0, shell_1.getRepository)(board_history_js_1.BoardHistory, tx);
203
203
  const boardHistory = await historyRepository.findOne({
204
204
  where: { domain: { id: domain.id }, originalId: id, version },
205
205
  order: { version: 'DESC' }
@@ -213,14 +213,14 @@ let BoardMutation = class BoardMutation {
213
213
  mode: 'in-app',
214
214
  title: `Board '${updated.name}' updated`,
215
215
  body: `Board '${updated.name}' updated by ${user.name}\n${updated.description}`,
216
- image: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/thumbnail/${updated.id}`),
217
- url: (0, shell_1.getRedirectSubdomainPath)(context, domain.subdomain, `/board-viewer/${updated.id}`)
216
+ image: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/thumbnail/${updated.id}`),
217
+ url: (0, shell_1.getRedirectSubdomainPath)(context, domain, `/board-viewer/${updated.id}`)
218
218
  });
219
219
  return updated;
220
220
  }
221
221
  async deleteBoard(id, context) {
222
222
  const { domain, user, notify, tx } = context.state;
223
- const repository = tx.getRepository(board_1.Board);
223
+ const repository = (0, shell_1.getRepository)(board_js_1.Board, tx);
224
224
  const board = await repository.findOneBy({ domain: { id: domain.id }, id });
225
225
  const deleted = await repository.softDelete(id);
226
226
  notify &&
@@ -233,8 +233,8 @@ let BoardMutation = class BoardMutation {
233
233
  }
234
234
  async importBoards(groupId, files, overwrite, context) {
235
235
  const { domain, user, notify, tx } = context.state;
236
- const groupRepository = tx.getRepository(group_1.Group);
237
- const boardRepository = tx.getRepository(board_1.Board);
236
+ const groupRepository = (0, shell_1.getRepository)(group_js_1.Group, tx);
237
+ const boardRepository = (0, shell_1.getRepository)(board_js_1.Board, tx);
238
238
  const group = await groupRepository.findOneBy({ domain: { id: domain.id }, id: groupId });
239
239
  if (!group) {
240
240
  throw `Group with id(${groupId}) is not found`;
@@ -297,41 +297,41 @@ exports.BoardMutation = BoardMutation;
297
297
  tslib_1.__decorate([
298
298
  (0, type_graphql_1.Directive)('@transaction'),
299
299
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
300
- (0, type_graphql_1.Mutation)(returns => board_1.Board, { description: 'To create new Board' }),
300
+ (0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To create new Board' }),
301
301
  tslib_1.__param(0, (0, type_graphql_1.Arg)('board')),
302
302
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
303
303
  tslib_1.__metadata("design:type", Function),
304
- tslib_1.__metadata("design:paramtypes", [board_type_1.NewBoard, Object]),
304
+ tslib_1.__metadata("design:paramtypes", [board_type_js_1.NewBoard, Object]),
305
305
  tslib_1.__metadata("design:returntype", Promise)
306
306
  ], BoardMutation.prototype, "createBoard", null);
307
307
  tslib_1.__decorate([
308
308
  (0, type_graphql_1.Directive)('@transaction'),
309
309
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
310
- (0, type_graphql_1.Mutation)(returns => board_1.Board, { description: 'To clone a Board from existing Board' }),
310
+ (0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To clone a Board from existing Board' }),
311
311
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
312
312
  tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
313
313
  tslib_1.__param(2, (0, type_graphql_1.Arg)('targetSubdomain')),
314
314
  tslib_1.__param(3, (0, type_graphql_1.Arg)('targetGroupId', { nullable: true })),
315
315
  tslib_1.__param(4, (0, type_graphql_1.Ctx)()),
316
316
  tslib_1.__metadata("design:type", Function),
317
- tslib_1.__metadata("design:paramtypes", [String, board_type_1.BoardPatch, String, String, Object]),
317
+ tslib_1.__metadata("design:paramtypes", [String, board_type_js_1.BoardPatch, String, String, Object]),
318
318
  tslib_1.__metadata("design:returntype", Promise)
319
319
  ], BoardMutation.prototype, "cloneBoard", null);
320
320
  tslib_1.__decorate([
321
321
  (0, type_graphql_1.Directive)('@transaction'),
322
322
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
323
- (0, type_graphql_1.Mutation)(returns => board_1.Board, { description: 'To modify Board information' }),
323
+ (0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To modify Board information' }),
324
324
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
325
325
  tslib_1.__param(1, (0, type_graphql_1.Arg)('patch')),
326
326
  tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
327
327
  tslib_1.__metadata("design:type", Function),
328
- tslib_1.__metadata("design:paramtypes", [String, board_type_1.BoardPatch, Object]),
328
+ tslib_1.__metadata("design:paramtypes", [String, board_type_js_1.BoardPatch, Object]),
329
329
  tslib_1.__metadata("design:returntype", Promise)
330
330
  ], BoardMutation.prototype, "updateBoard", null);
331
331
  tslib_1.__decorate([
332
332
  (0, type_graphql_1.Directive)('@transaction'),
333
333
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
334
- (0, type_graphql_1.Mutation)(returns => board_1.Board, { description: 'To release a Board' }),
334
+ (0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To release a Board' }),
335
335
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
336
336
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
337
337
  tslib_1.__metadata("design:type", Function),
@@ -341,7 +341,7 @@ tslib_1.__decorate([
341
341
  tslib_1.__decorate([
342
342
  (0, type_graphql_1.Directive)('@transaction'),
343
343
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
344
- (0, type_graphql_1.Mutation)(returns => board_1.Board, { description: 'To revert Board version' }),
344
+ (0, type_graphql_1.Mutation)(returns => board_js_1.Board, { description: 'To revert Board version' }),
345
345
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
346
346
  tslib_1.__param(1, (0, type_graphql_1.Arg)('version')),
347
347
  tslib_1.__param(2, (0, type_graphql_1.Ctx)()),
@@ -362,7 +362,7 @@ tslib_1.__decorate([
362
362
  tslib_1.__decorate([
363
363
  (0, type_graphql_1.Directive)('@transaction'),
364
364
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
365
- (0, type_graphql_1.Mutation)(returns => [board_1.Board], { description: 'To import some Boards' }),
365
+ (0, type_graphql_1.Mutation)(returns => [board_js_1.Board], { description: 'To import some Boards' }),
366
366
  tslib_1.__param(0, (0, type_graphql_1.Arg)('groupId')),
367
367
  tslib_1.__param(1, (0, type_graphql_1.Arg)('files', () => [GraphQLUpload_js_1.default])),
368
368
  tslib_1.__param(2, (0, type_graphql_1.Arg)('overwrite')),
@@ -372,6 +372,6 @@ tslib_1.__decorate([
372
372
  tslib_1.__metadata("design:returntype", Promise)
373
373
  ], BoardMutation.prototype, "importBoards", null);
374
374
  exports.BoardMutation = BoardMutation = tslib_1.__decorate([
375
- (0, type_graphql_1.Resolver)(board_1.Board)
375
+ (0, type_graphql_1.Resolver)(board_js_1.Board)
376
376
  ], BoardMutation);
377
377
  //# sourceMappingURL=board-mutation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-mutation.js","sourceRoot":"","sources":["../../../server/service/board/board-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Resolver, Directive } from 'type-graphql'\nimport { EntityManager, In } from 'typeorm'\nimport type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Domain, getDataSource, getRedirectSubdomainPath, getRepository } from '@things-factory/shell'\n\nimport { thumbnail } from '../../controllers/thumbnail'\nimport { Group } from '../group/group'\nimport { Board } from './board'\nimport { BoardHistory } from './board-history'\nimport { BoardPatch, NewBoard } from './board-type'\n\nasync function parseJSONFile(uploadedFile: FileUpload): Promise<any> {\n var { createReadStream } = await uploadedFile\n\n return new Promise((resolve, reject) => {\n const chunks: Uint8Array[] = []\n\n createReadStream()\n .on('data', (chunk: Uint8Array) => {\n chunks.push(chunk)\n })\n .on('end', () => {\n try {\n const fileContents = Buffer.concat(chunks).toString('utf-8')\n const jsonData = JSON.parse(fileContents)\n resolve(jsonData)\n } catch (error) {\n reject(error)\n }\n })\n .on('error', (error: Error) => {\n reject(error)\n })\n })\n}\n\n@Resolver(Board)\nexport class BoardMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To create new Board' })\n async createBoard(@Arg('board') board: NewBoard, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const groupRepository = tx.getRepository(Group)\n\n const oldBoard: Board = await repository.findOneBy({\n name: board.name,\n domain: { id: domain.id }\n })\n\n if (oldBoard) {\n throw new Error(context.t('error.board name is already taken', { name: board.name }))\n }\n\n const newBoard: Board = {\n ...board\n }\n\n newBoard.thumbnail ||=\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* empty thumbnail */\n\n if (board.groupId) {\n newBoard.group = await groupRepository.findOneBy({\n id: board.groupId\n })\n }\n\n const created = await repository.save({\n domain,\n ...newBoard,\n state: 'draft',\n creator: user,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${created.name}' created`,\n body: `Board '${created.name}' created by ${user.name}\\n${created.description}`,\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${created.id}`)\n })\n\n return created\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To clone a Board from existing Board' })\n async cloneBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Arg('targetSubdomain') targetSubdomain: string,\n @Arg('targetGroupId', { nullable: true }) targetGroupId: string,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const { t } = context\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOneBy({ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id })\n\n if (!patch.name || (patch.name == board.name && targetSubdomain == domain.subdomain)) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n\n if (targetSubdomain != domain.subdomain) {\n if ((await repository.count({ where: { domain: { subdomain: targetSubdomain }, name: patch.name } })) > 0) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n }\n\n var targetDomain = domain\n if (targetDomain && domain.subdomain != targetSubdomain) {\n targetDomain = await tx.getRepository(Domain).findOneBy({ subdomain: targetSubdomain })\n if (!targetDomain) {\n throw `given subdomain(${targetSubdomain}) not found`\n }\n }\n\n var targetGroup = null\n if (targetGroupId) {\n targetGroup = await tx.getRepository(Group).findOneBy({ domain: { id: targetDomain.id }, id: targetGroupId })\n if (!targetGroup) {\n throw `given group(${targetGroupId}) in domain(${targetSubdomain}) not found`\n }\n }\n\n const { id: excluded, ...clone } = board\n\n const cloned = await repository.save({\n domain: targetDomain,\n ...clone,\n ...patch,\n group: targetGroup,\n version: 0,\n state: 'draft',\n updater: user,\n creator: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${cloned.name}' cloned`,\n body: `Board '${cloned.name}' cloned by ${user.name}\\n${cloned.description}`,\n image: getRedirectSubdomainPath(context, targetSubdomain, `/thumbnail/${cloned.id}`),\n url: getRedirectSubdomainPath(context, targetSubdomain, `/board-viewer/${cloned.id}`)\n })\n\n return cloned\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To modify Board information' })\n async updateBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (patch.model) {\n const thumbnailPromise = thumbnail({\n model: patch.model,\n context\n })\n\n try {\n const thumbnailBase64 = await Promise.race([\n thumbnailPromise,\n new Promise((_, reject) => setTimeout(() => reject(new Error('5 seconds timeout')), 5000))\n ])\n\n patch.thumbnail = 'data:image/png;base64,' + thumbnailBase64.toString('base64')\n } catch (e) {\n console.warn(`Failed to get thumbnail for '${board.name}' in first 5 seconds`)\n // 5초 안에 썸네일이 생성되지 않았으므로 모델만 저장합니다.\n patch.thumbnail =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* empty thumbnail */\n\n Promise.race([\n thumbnailPromise,\n new Promise((_, reject) => setTimeout(() => reject(new Error('Thumbnail extended timeout')), 5000))\n ])\n .then(async thumbnailBase64 => {\n /* use new resource manager */\n await getDataSource().transaction(async (tx: EntityManager) => {\n await tx.getRepository(Board).save({\n id: updated.id,\n thumbnail: 'data:image/png;base64,' + thumbnailBase64.toString('base64')\n })\n })\n })\n .catch(error => {\n console.error(`Failed to save thumbnail for '${board.name}' even after extended time:`, error)\n })\n }\n }\n\n const { groupId, ...patched } = patch\n\n if (groupId !== undefined) {\n const groupRepository = tx.getRepository(Group)\n board.group = groupId\n ? (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: groupId\n })) || null\n : null\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n ...patched,\n state: 'draft',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To release a Board' })\n async releaseBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (!board) {\n throw `Board given id(${id}) is not found`\n }\n\n if (board.state == 'released') {\n throw `Board given id(${id}) is already released`\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n version: (board.version || 0) + 1,\n state: 'released',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' released`,\n body: `Board '${updated.name}' released by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To revert Board version' })\n async revertBoardVersion(\n @Arg('id') id: string,\n @Arg('version') version: number,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (!board) {\n throw `Board with id(${id}) is not found`\n }\n\n const historyRepository = tx.getRepository(BoardHistory)\n\n const boardHistory = await historyRepository.findOne({\n where: { domain: { id: domain.id }, originalId: id, version },\n order: { version: 'DESC' }\n })\n\n if (!boardHistory) {\n throw `Board with id:version(${id}:${version}) is not found`\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n model: boardHistory.model,\n thumbnail: boardHistory.thumbnail,\n state: 'draft',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain.subdomain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain.subdomain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Board' })\n async deleteBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, user, notify, tx } = context.state\n const repository = tx.getRepository(Board)\n const board = await repository.findOneBy({ domain: { id: domain.id }, id })\n\n const deleted = await repository.softDelete(id)\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${board.name}' deleted`,\n body: `Board '${board.name}' deleted by ${user.name}\\n${board.description}`\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [Board], { description: 'To import some Boards' })\n async importBoards(\n @Arg('groupId') groupId: string,\n @Arg('files', () => [GraphQLUpload]) files: FileUpload[],\n @Arg('overwrite') overwrite: boolean,\n @Ctx() context: ResolverContext\n ): Promise<Board[]> {\n const { domain, user, notify, tx } = context.state\n const groupRepository = tx.getRepository(Group)\n const boardRepository = tx.getRepository(Board)\n const group = await groupRepository.findOneBy({ domain: { id: domain.id }, id: groupId })\n\n if (!group) {\n throw `Group with id(${groupId}) is not found`\n }\n\n const boards = []\n\n for (const file of files) {\n const { id, name, description, model, thumbnail } = await parseJSONFile(file)\n\n var sameNameBoard = await boardRepository.findOneBy({ domain: { id: domain.id }, name })\n var sameIdBoard = await boardRepository.findOneBy({ id })\n\n if (overwrite) {\n var board = {} as any\n\n if (sameIdBoard) {\n if (overwrite && sameIdBoard.domainId != domain.id) {\n throw `Board with id(${id}) is already taken in another domain`\n }\n\n board = {\n ...sameIdBoard,\n name\n }\n\n if (sameNameBoard && sameIdBoard.id != sameNameBoard.id) {\n /* 이름 충돌 회피 */\n board.name = `${board.name}(${Date.now()})`\n }\n } else {\n board = {\n id,\n name: sameNameBoard ? `${name}(${Date.now()})` : name,\n version: 0,\n creator: user\n }\n }\n } else {\n board = {\n name,\n version: 0,\n creator: user\n }\n\n /* ID가 없으면, 사용해도 됨 */\n if (!sameIdBoard) {\n board.id = id\n }\n\n /* 이름 충돌 회피 */\n if (sameNameBoard) {\n board.name = `${board.name}(${Date.now()})`\n }\n }\n\n boards.push(\n await boardRepository.save({\n ...board,\n domain,\n description,\n model: typeof model != 'string' ? JSON.stringify(model) : model,\n thumbnail,\n group,\n state: 'draft',\n updater: user\n })\n )\n }\n\n notify &&\n notify({\n mode: 'in-app',\n title: `${boards.length} Board(s) are imported`,\n body: `${boards.length} Board(s) are imported into group ${group.name} by ${user.name}`\n })\n\n return boards\n }\n}\n"]}
1
+ {"version":3,"file":"board-mutation.js","sourceRoot":"","sources":["../../../server/service/board/board-mutation.ts"],"names":[],"mappings":"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","sourcesContent":["import { Arg, Ctx, Mutation, Resolver, Directive } from 'type-graphql'\nimport { EntityManager, In } from 'typeorm'\nimport type { FileUpload } from 'graphql-upload/GraphQLUpload.js'\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.js'\nimport { Domain, getDataSource, getRedirectSubdomainPath, getRepository } from '@things-factory/shell'\n\nimport { thumbnail } from '../../controllers/thumbnail.js'\nimport { Group } from '../group/group.js'\nimport { Board } from './board.js'\nimport { BoardHistory } from './board-history.js'\nimport { BoardPatch, NewBoard } from './board-type.js'\n\nasync function parseJSONFile(uploadedFile: FileUpload): Promise<any> {\n var { createReadStream } = await uploadedFile\n\n return new Promise((resolve, reject) => {\n const chunks: Uint8Array[] = []\n\n createReadStream()\n .on('data', (chunk: Uint8Array) => {\n chunks.push(chunk)\n })\n .on('end', () => {\n try {\n const fileContents = Buffer.concat(chunks).toString('utf-8')\n const jsonData = JSON.parse(fileContents)\n resolve(jsonData)\n } catch (error) {\n reject(error)\n }\n })\n .on('error', (error: Error) => {\n reject(error)\n })\n })\n}\n\n@Resolver(Board)\nexport class BoardMutation {\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To create new Board' })\n async createBoard(@Arg('board') board: NewBoard, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = getRepository(Board, tx)\n const groupRepository = getRepository(Group, tx)\n\n const oldBoard: Board = await repository.findOneBy({\n name: board.name,\n domain: { id: domain.id }\n })\n\n if (oldBoard) {\n throw new Error(context.t('error.board name is already taken', { name: board.name }))\n }\n\n const newBoard: Board = {\n ...board\n }\n\n newBoard.thumbnail ||=\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* empty thumbnail */\n\n if (board.groupId) {\n newBoard.group = await groupRepository.findOneBy({\n id: board.groupId\n })\n }\n\n const created = await repository.save({\n domain,\n ...newBoard,\n state: 'draft',\n creator: user,\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${created.name}' created`,\n body: `Board '${created.name}' created by ${user.name}\\n${created.description}`,\n url: getRedirectSubdomainPath(context, domain, `/board-viewer/${created.id}`)\n })\n\n return created\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To clone a Board from existing Board' })\n async cloneBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Arg('targetSubdomain') targetSubdomain: string,\n @Arg('targetGroupId', { nullable: true }) targetGroupId: string,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const { t } = context\n const repository = getRepository(Board, tx)\n\n const board = await repository.findOneBy({ domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id })\n\n if (!patch.name || (patch.name == board.name && targetSubdomain == domain.subdomain)) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n\n if (targetSubdomain != domain.subdomain) {\n if ((await repository.count({ where: { domain: { subdomain: targetSubdomain }, name: patch.name } })) > 0) {\n throw t('error.name must be unique from the original board', { name: patch.name })\n }\n }\n\n var targetDomain = domain\n if (targetDomain && domain.subdomain != targetSubdomain) {\n targetDomain = await getRepository(Domain, tx).findOneBy({ subdomain: targetSubdomain })\n if (!targetDomain) {\n throw `given subdomain(${targetSubdomain}) not found`\n }\n }\n\n var targetGroup = null\n if (targetGroupId) {\n targetGroup = await getRepository(Group, tx).findOneBy({ domain: { id: targetDomain.id }, id: targetGroupId })\n if (!targetGroup) {\n throw `given group(${targetGroupId}) in domain(${targetSubdomain}) not found`\n }\n }\n\n const { id: excluded, ...clone } = board\n\n const cloned = await repository.save({\n domain: targetDomain,\n ...clone,\n ...patch,\n group: targetGroup,\n version: 0,\n state: 'draft',\n updater: user,\n creator: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${cloned.name}' cloned`,\n body: `Board '${cloned.name}' cloned by ${user.name}\\n${cloned.description}`,\n image: getRedirectSubdomainPath(context, targetDomain, `/thumbnail/${cloned.id}`),\n url: getRedirectSubdomainPath(context, targetDomain, `/board-viewer/${cloned.id}`)\n })\n\n return cloned\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To modify Board information' })\n async updateBoard(\n @Arg('id') id: string,\n @Arg('patch') patch: BoardPatch,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = getRepository(Board, tx)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (patch.model) {\n const thumbnailPromise = thumbnail({\n model: patch.model,\n context\n })\n\n try {\n const thumbnailBase64 = await Promise.race([\n thumbnailPromise,\n new Promise((_, reject) => setTimeout(() => reject(new Error('5 seconds timeout')), 5000))\n ])\n\n patch.thumbnail = 'data:image/png;base64,' + thumbnailBase64.toString('base64')\n } catch (e) {\n console.warn(`Failed to get thumbnail for '${board.name}' in first 5 seconds`)\n // 5초 안에 썸네일이 생성되지 않았으므로 모델만 저장합니다.\n patch.thumbnail =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==' /* empty thumbnail */\n\n Promise.race([\n thumbnailPromise,\n new Promise((_, reject) => setTimeout(() => reject(new Error('Thumbnail extended timeout')), 5000))\n ])\n .then(async thumbnailBase64 => {\n /* use new resource manager */\n await getDataSource().transaction(async (tx: EntityManager) => {\n await getRepository(Board, tx).save({\n id: updated.id,\n thumbnail: 'data:image/png;base64,' + thumbnailBase64.toString('base64')\n })\n })\n })\n .catch(error => {\n console.error(`Failed to save thumbnail for '${board.name}' even after extended time:`, error)\n })\n }\n }\n\n const { groupId, ...patched } = patch\n\n if (groupId !== undefined) {\n const groupRepository = getRepository(Group, tx)\n board.group = groupId\n ? (await groupRepository.findOneBy({\n domain: { id: domain.id },\n id: groupId\n })) || null\n : null\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n ...patched,\n state: 'draft',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To release a Board' })\n async releaseBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = getRepository(Board, tx)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (!board) {\n throw `Board given id(${id}) is not found`\n }\n\n if (board.state == 'released') {\n throw `Board given id(${id}) is already released`\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n version: (board.version || 0) + 1,\n state: 'released',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' released`,\n body: `Board '${updated.name}' released by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Board, { description: 'To revert Board version' })\n async revertBoardVersion(\n @Arg('id') id: string,\n @Arg('version') version: number,\n @Ctx() context: ResolverContext\n ): Promise<Board> {\n const { domain, user, notify, tx } = context.state\n const repository = getRepository(Board, tx)\n\n const board = await repository.findOne({\n where: { domain: { id: domain.id }, id },\n relations: ['creator']\n })\n\n if (!board) {\n throw `Board with id(${id}) is not found`\n }\n\n const historyRepository = getRepository(BoardHistory, tx)\n\n const boardHistory = await historyRepository.findOne({\n where: { domain: { id: domain.id }, originalId: id, version },\n order: { version: 'DESC' }\n })\n\n if (!boardHistory) {\n throw `Board with id:version(${id}:${version}) is not found`\n }\n\n const updated = await repository.save({\n domain,\n ...board,\n model: boardHistory.model,\n thumbnail: boardHistory.thumbnail,\n state: 'draft',\n updater: user\n })\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${updated.name}' updated`,\n body: `Board '${updated.name}' updated by ${user.name}\\n${updated.description}`,\n image: getRedirectSubdomainPath(context, domain, `/thumbnail/${updated.id}`),\n url: getRedirectSubdomainPath(context, domain, `/board-viewer/${updated.id}`)\n })\n\n return updated\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => Boolean, { description: 'To delete Board' })\n async deleteBoard(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<boolean> {\n const { domain, user, notify, tx } = context.state\n const repository = getRepository(Board, tx)\n const board = await repository.findOneBy({ domain: { id: domain.id }, id })\n\n const deleted = await repository.softDelete(id)\n\n notify &&\n notify({\n mode: 'in-app',\n title: `Board '${board.name}' deleted`,\n body: `Board '${board.name}' deleted by ${user.name}\\n${board.description}`\n })\n\n return true\n }\n\n @Directive('@transaction')\n @Directive('@privilege(category: \"board\", privilege: \"mutation\", domainOwnerGranted: true)')\n @Mutation(returns => [Board], { description: 'To import some Boards' })\n async importBoards(\n @Arg('groupId') groupId: string,\n @Arg('files', () => [GraphQLUpload]) files: FileUpload[],\n @Arg('overwrite') overwrite: boolean,\n @Ctx() context: ResolverContext\n ): Promise<Board[]> {\n const { domain, user, notify, tx } = context.state\n const groupRepository = getRepository(Group, tx)\n const boardRepository = getRepository(Board, tx)\n const group = await groupRepository.findOneBy({ domain: { id: domain.id }, id: groupId })\n\n if (!group) {\n throw `Group with id(${groupId}) is not found`\n }\n\n const boards = []\n\n for (const file of files) {\n const { id, name, description, model, thumbnail } = await parseJSONFile(file)\n\n var sameNameBoard = await boardRepository.findOneBy({ domain: { id: domain.id }, name })\n var sameIdBoard = await boardRepository.findOneBy({ id })\n\n if (overwrite) {\n var board = {} as any\n\n if (sameIdBoard) {\n if (overwrite && sameIdBoard.domainId != domain.id) {\n throw `Board with id(${id}) is already taken in another domain`\n }\n\n board = {\n ...sameIdBoard,\n name\n }\n\n if (sameNameBoard && sameIdBoard.id != sameNameBoard.id) {\n /* 이름 충돌 회피 */\n board.name = `${board.name}(${Date.now()})`\n }\n } else {\n board = {\n id,\n name: sameNameBoard ? `${name}(${Date.now()})` : name,\n version: 0,\n creator: user\n }\n }\n } else {\n board = {\n name,\n version: 0,\n creator: user\n }\n\n /* ID가 없으면, 사용해도 됨 */\n if (!sameIdBoard) {\n board.id = id\n }\n\n /* 이름 충돌 회피 */\n if (sameNameBoard) {\n board.name = `${board.name}(${Date.now()})`\n }\n }\n\n boards.push(\n await boardRepository.save({\n ...board,\n domain,\n description,\n model: typeof model != 'string' ? JSON.stringify(model) : model,\n thumbnail,\n group,\n state: 'draft',\n updater: user\n })\n )\n }\n\n notify &&\n notify({\n mode: 'in-app',\n title: `${boards.length} Board(s) are imported`,\n body: `${boards.length} Board(s) are imported into group ${group.name} by ${user.name}`\n })\n\n return boards\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
1
  import { User } from '@things-factory/auth-base';
2
2
  import { Domain, ListParam } from '@things-factory/shell';
3
- import { Group } from '../group/group';
4
- import { PlayGroup } from '../play-group/play-group';
5
- import { Board } from './board';
6
- import { BoardList } from './board-type';
7
- import { BoardHistory } from './board-history';
3
+ import { Group } from '../group/group.js';
4
+ import { PlayGroup } from '../play-group/play-group.js';
5
+ import { Board } from './board.js';
6
+ import { BoardList } from './board-type.js';
7
+ import { BoardHistory } from './board-history.js';
8
8
  export declare class BoardQuery {
9
9
  board(id: string, context: ResolverContext): Promise<Board>;
10
10
  boardByName(name: string, context: ResolverContext): Promise<Board>;
@@ -7,16 +7,16 @@ const type_graphql_1 = require("type-graphql");
7
7
  const auth_base_1 = require("@things-factory/auth-base");
8
8
  const shell_1 = require("@things-factory/shell");
9
9
  const operato_license_checker_1 = require("@things-factory/operato-license-checker");
10
- const group_1 = require("../group/group");
11
- const play_group_1 = require("../play-group/play-group");
12
- const board_1 = require("./board");
13
- const board_type_1 = require("./board-type");
14
- const board_history_1 = require("./board-history");
15
- const license_error_1 = require("../../errors/license-error");
10
+ const group_js_1 = require("../group/group.js");
11
+ const play_group_js_1 = require("../play-group/play-group.js");
12
+ const board_js_1 = require("./board.js");
13
+ const board_type_js_1 = require("./board-type.js");
14
+ const board_history_js_1 = require("./board-history.js");
15
+ const license_error_js_1 = require("../../errors/license-error.js");
16
16
  let BoardQuery = class BoardQuery {
17
17
  async board(id, context) {
18
18
  const { domain } = context.state;
19
- var board = await (0, shell_1.getRepository)(board_1.Board).findOne({
19
+ var board = await (0, shell_1.getRepository)(board_js_1.Board).findOne({
20
20
  where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, id }
21
21
  });
22
22
  if (domain) {
@@ -27,22 +27,22 @@ let BoardQuery = class BoardQuery {
27
27
  .from(shell_1.Domain, 'domain')
28
28
  .getCount();
29
29
  if (!(0, operato_license_checker_1.checkDomain)(count)) {
30
- throw new license_error_1.LicenseError({
31
- errorCode: context.t(license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT)
30
+ throw new license_error_js_1.LicenseError({
31
+ errorCode: context.t(license_error_js_1.LicenseError.ERROR_CODES.OVER_LIMIT)
32
32
  });
33
33
  }
34
34
  }
35
35
  if (board) {
36
36
  // 1. check boardSecret is over limit quantity or not
37
- var count = await (0, shell_1.getRepository)(board_1.Board)
37
+ var count = await (0, shell_1.getRepository)(board_js_1.Board)
38
38
  .manager.createQueryBuilder()
39
39
  .select('id')
40
- .from(board_1.Board, 'board')
40
+ .from(board_js_1.Board, 'board')
41
41
  .where('"domain_id" = :domainId', { domainId: domain.id })
42
42
  .getCount();
43
43
  if (!(0, operato_license_checker_1.checkTarget)(count)) {
44
- throw new license_error_1.LicenseError({
45
- errorCode: context.t(license_error_1.LicenseError.ERROR_CODES.OVER_LIMIT)
44
+ throw new license_error_js_1.LicenseError({
45
+ errorCode: context.t(license_error_js_1.LicenseError.ERROR_CODES.OVER_LIMIT)
46
46
  });
47
47
  }
48
48
  }
@@ -50,14 +50,14 @@ let BoardQuery = class BoardQuery {
50
50
  }
51
51
  async boardByName(name, context) {
52
52
  const { domain } = context.state;
53
- return await (0, shell_1.getRepository)(board_1.Board).findOne({
53
+ return await (0, shell_1.getRepository)(board_js_1.Board).findOne({
54
54
  where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, name }
55
55
  });
56
56
  }
57
57
  async boardsCreatedByMe(params, context) {
58
58
  const { domain, user } = context.state;
59
59
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
60
- repository: (0, shell_1.getRepository)(board_1.Board),
60
+ repository: (0, shell_1.getRepository)(board_js_1.Board),
61
61
  params,
62
62
  domain,
63
63
  alias: 'board',
@@ -68,7 +68,7 @@ let BoardQuery = class BoardQuery {
68
68
  }
69
69
  async boardVersions(id, context) {
70
70
  const { domain } = context.state;
71
- return await (0, shell_1.getRepository)(board_history_1.BoardHistory).find({
71
+ return await (0, shell_1.getRepository)(board_history_js_1.BoardHistory).find({
72
72
  where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },
73
73
  relations: ['updater'],
74
74
  order: { version: 'DESC' },
@@ -77,7 +77,7 @@ let BoardQuery = class BoardQuery {
77
77
  }
78
78
  async boardPublished(id, context) {
79
79
  const { domain } = context.state;
80
- return await (0, shell_1.getRepository)(board_history_1.BoardHistory).findOne({
80
+ return await (0, shell_1.getRepository)(board_history_js_1.BoardHistory).findOne({
81
81
  where: { domain: { id: (0, typeorm_1.In)([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },
82
82
  order: { version: 'DESC' }
83
83
  });
@@ -85,7 +85,7 @@ let BoardQuery = class BoardQuery {
85
85
  async boards(params, context) {
86
86
  const { domain } = context.state;
87
87
  const queryBuilder = (0, shell_1.getQueryBuilderFromListParams)({
88
- repository: (0, shell_1.getRepository)(board_1.Board),
88
+ repository: (0, shell_1.getRepository)(board_js_1.Board),
89
89
  params,
90
90
  domain,
91
91
  searchables: ['name', 'description']
@@ -95,13 +95,13 @@ let BoardQuery = class BoardQuery {
95
95
  }
96
96
  async group(board) {
97
97
  return (board.groupId &&
98
- (await (0, shell_1.getRepository)(group_1.Group).findOneBy({
98
+ (await (0, shell_1.getRepository)(group_js_1.Group).findOneBy({
99
99
  id: board.groupId
100
100
  })));
101
101
  }
102
102
  async playGroups(board) {
103
103
  var _a;
104
- return (_a = (await (0, shell_1.getRepository)(board_1.Board).findOne({
104
+ return (_a = (await (0, shell_1.getRepository)(board_js_1.Board).findOne({
105
105
  where: { id: board.id },
106
106
  relations: ['playGroups']
107
107
  }))) === null || _a === void 0 ? void 0 : _a.playGroups;
@@ -128,7 +128,7 @@ let BoardQuery = class BoardQuery {
128
128
  exports.BoardQuery = BoardQuery;
129
129
  tslib_1.__decorate([
130
130
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
131
- (0, type_graphql_1.Query)(returns => board_1.Board, { description: 'To fetch a board' }),
131
+ (0, type_graphql_1.Query)(returns => board_js_1.Board, { description: 'To fetch a board' }),
132
132
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
133
133
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
134
134
  tslib_1.__metadata("design:type", Function),
@@ -136,7 +136,7 @@ tslib_1.__decorate([
136
136
  tslib_1.__metadata("design:returntype", Promise)
137
137
  ], BoardQuery.prototype, "board", null);
138
138
  tslib_1.__decorate([
139
- (0, type_graphql_1.Query)(returns => board_1.Board, { nullable: true, description: 'To fetch a Board Model by name' }),
139
+ (0, type_graphql_1.Query)(returns => board_js_1.Board, { nullable: true, description: 'To fetch a Board Model by name' }),
140
140
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
141
141
  tslib_1.__param(0, (0, type_graphql_1.Arg)('name')),
142
142
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -145,7 +145,7 @@ tslib_1.__decorate([
145
145
  tslib_1.__metadata("design:returntype", Promise)
146
146
  ], BoardQuery.prototype, "boardByName", null);
147
147
  tslib_1.__decorate([
148
- (0, type_graphql_1.Query)(returns => board_type_1.BoardList, { description: 'To fetch Boards created by me' }),
148
+ (0, type_graphql_1.Query)(returns => board_type_js_1.BoardList, { description: 'To fetch Boards created by me' }),
149
149
  tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
150
150
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
151
151
  tslib_1.__metadata("design:type", Function),
@@ -153,7 +153,7 @@ tslib_1.__decorate([
153
153
  tslib_1.__metadata("design:returntype", Promise)
154
154
  ], BoardQuery.prototype, "boardsCreatedByMe", null);
155
155
  tslib_1.__decorate([
156
- (0, type_graphql_1.Query)(returns => [board_history_1.BoardHistory], { description: 'To fetch a Board Versions' }),
156
+ (0, type_graphql_1.Query)(returns => [board_history_js_1.BoardHistory], { description: 'To fetch a Board Versions' }),
157
157
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
158
158
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
159
159
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -162,7 +162,7 @@ tslib_1.__decorate([
162
162
  tslib_1.__metadata("design:returntype", Promise)
163
163
  ], BoardQuery.prototype, "boardVersions", null);
164
164
  tslib_1.__decorate([
165
- (0, type_graphql_1.Query)(returns => board_history_1.BoardHistory, { description: 'To fetch the latest Board published' }),
165
+ (0, type_graphql_1.Query)(returns => board_history_js_1.BoardHistory, { description: 'To fetch the latest Board published' }),
166
166
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
167
167
  tslib_1.__param(0, (0, type_graphql_1.Arg)('id')),
168
168
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -171,7 +171,7 @@ tslib_1.__decorate([
171
171
  tslib_1.__metadata("design:returntype", Promise)
172
172
  ], BoardQuery.prototype, "boardPublished", null);
173
173
  tslib_1.__decorate([
174
- (0, type_graphql_1.Query)(returns => board_type_1.BoardList, { description: 'To fetch multiple Boards' }),
174
+ (0, type_graphql_1.Query)(returns => board_type_js_1.BoardList, { description: 'To fetch multiple Boards' }),
175
175
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
176
176
  tslib_1.__param(0, (0, type_graphql_1.Args)(type => shell_1.ListParam)),
177
177
  tslib_1.__param(1, (0, type_graphql_1.Ctx)()),
@@ -180,41 +180,41 @@ tslib_1.__decorate([
180
180
  tslib_1.__metadata("design:returntype", Promise)
181
181
  ], BoardQuery.prototype, "boards", null);
182
182
  tslib_1.__decorate([
183
- (0, type_graphql_1.FieldResolver)(type => group_1.Group),
183
+ (0, type_graphql_1.FieldResolver)(type => group_js_1.Group),
184
184
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
185
185
  tslib_1.__metadata("design:type", Function),
186
- tslib_1.__metadata("design:paramtypes", [board_1.Board]),
186
+ tslib_1.__metadata("design:paramtypes", [board_js_1.Board]),
187
187
  tslib_1.__metadata("design:returntype", Promise)
188
188
  ], BoardQuery.prototype, "group", null);
189
189
  tslib_1.__decorate([
190
- (0, type_graphql_1.FieldResolver)(type => [play_group_1.PlayGroup]),
190
+ (0, type_graphql_1.FieldResolver)(type => [play_group_js_1.PlayGroup]),
191
191
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
192
192
  tslib_1.__metadata("design:type", Function),
193
- tslib_1.__metadata("design:paramtypes", [board_1.Board]),
193
+ tslib_1.__metadata("design:paramtypes", [board_js_1.Board]),
194
194
  tslib_1.__metadata("design:returntype", Promise)
195
195
  ], BoardQuery.prototype, "playGroups", null);
196
196
  tslib_1.__decorate([
197
197
  (0, type_graphql_1.FieldResolver)(type => shell_1.Domain),
198
198
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
199
199
  tslib_1.__metadata("design:type", Function),
200
- tslib_1.__metadata("design:paramtypes", [board_1.Board]),
200
+ tslib_1.__metadata("design:paramtypes", [board_js_1.Board]),
201
201
  tslib_1.__metadata("design:returntype", Promise)
202
202
  ], BoardQuery.prototype, "domain", null);
203
203
  tslib_1.__decorate([
204
204
  (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
205
205
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
206
206
  tslib_1.__metadata("design:type", Function),
207
- tslib_1.__metadata("design:paramtypes", [board_1.Board]),
207
+ tslib_1.__metadata("design:paramtypes", [board_js_1.Board]),
208
208
  tslib_1.__metadata("design:returntype", Promise)
209
209
  ], BoardQuery.prototype, "updater", null);
210
210
  tslib_1.__decorate([
211
211
  (0, type_graphql_1.FieldResolver)(type => auth_base_1.User),
212
212
  tslib_1.__param(0, (0, type_graphql_1.Root)()),
213
213
  tslib_1.__metadata("design:type", Function),
214
- tslib_1.__metadata("design:paramtypes", [board_1.Board]),
214
+ tslib_1.__metadata("design:paramtypes", [board_js_1.Board]),
215
215
  tslib_1.__metadata("design:returntype", Promise)
216
216
  ], BoardQuery.prototype, "creator", null);
217
217
  exports.BoardQuery = BoardQuery = tslib_1.__decorate([
218
- (0, type_graphql_1.Resolver)(board_1.Board)
218
+ (0, type_graphql_1.Resolver)(board_js_1.Board)
219
219
  ], BoardQuery);
220
220
  //# sourceMappingURL=board-query.js.map