@things-factory/board-service 7.0.1-beta.0 → 7.0.1-beta.10

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 (137) hide show
  1. package/dist-server/constants/error-code.d.ts +2 -0
  2. package/dist-server/controllers/analyzer/analyze-integration.d.ts +5 -0
  3. package/dist-server/controllers/analyzer/analyze-integration.js.map +1 -1
  4. package/dist-server/controllers/fonts.d.ts +9 -0
  5. package/dist-server/controllers/fonts.js.map +1 -1
  6. package/dist-server/controllers/headless-model.d.ts +6 -0
  7. package/dist-server/controllers/headless-model.js.map +1 -1
  8. package/dist-server/controllers/headless-playlist.d.ts +5 -0
  9. package/dist-server/controllers/headless-playlist.js.map +1 -1
  10. package/dist-server/controllers/headless-pool-for-board.d.ts +1 -0
  11. package/dist-server/controllers/headless-pool-for-board.js.map +1 -1
  12. package/dist-server/controllers/headless-pool-for-label.d.ts +1 -0
  13. package/dist-server/controllers/headless-pool-for-label.js +3 -8
  14. package/dist-server/controllers/headless-pool-for-label.js.map +1 -1
  15. package/dist-server/controllers/index.d.ts +26 -0
  16. package/dist-server/controllers/label-command.d.ts +19 -0
  17. package/dist-server/controllers/label-command.js.map +1 -1
  18. package/dist-server/controllers/pdf.d.ts +9 -0
  19. package/dist-server/controllers/pdf.js.map +1 -1
  20. package/dist-server/controllers/print.d.ts +21 -0
  21. package/dist-server/controllers/print.js.map +1 -1
  22. package/dist-server/controllers/screenshot.d.ts +11 -0
  23. package/dist-server/controllers/screenshot.js.map +1 -1
  24. package/dist-server/controllers/thumbnail.d.ts +7 -0
  25. package/dist-server/errors/index.d.ts +1 -0
  26. package/dist-server/errors/license-error.d.ts +11 -0
  27. package/dist-server/index.d.ts +5 -0
  28. package/dist-server/index.js.map +1 -1
  29. package/dist-server/migrations/1556862253000-SeedGroup.d.ts +5 -0
  30. package/dist-server/migrations/1556862253000-SeedGroup.js.map +1 -1
  31. package/dist-server/migrations/index.d.ts +1 -0
  32. package/dist-server/routers/board-print-router.d.ts +1 -0
  33. package/dist-server/routers/internal-board-view-router.d.ts +1 -0
  34. package/dist-server/routers/internal-board-view-router.js.map +1 -1
  35. package/dist-server/routers/standalone-board-service-router.d.ts +1 -0
  36. package/dist-server/routers/standalone-board-service-router.js.map +1 -1
  37. package/dist-server/routes.d.ts +1 -0
  38. package/dist-server/routes.js.map +1 -1
  39. package/dist-server/service/analysis/analysis-query.d.ts +3 -0
  40. package/dist-server/service/analysis/analysis-query.js +2 -2
  41. package/dist-server/service/analysis/analysis-query.js.map +1 -1
  42. package/dist-server/service/analysis/index.d.ts +2 -0
  43. package/dist-server/service/board/board-history.d.ts +28 -0
  44. package/dist-server/service/board/board-history.js +2 -2
  45. package/dist-server/service/board/board-history.js.map +1 -1
  46. package/dist-server/service/board/board-mutation.d.ts +12 -0
  47. package/dist-server/service/board/board-mutation.js +2 -2
  48. package/dist-server/service/board/board-mutation.js.map +1 -1
  49. package/dist-server/service/board/board-query.d.ts +20 -0
  50. package/dist-server/service/board/board-query.js +2 -2
  51. package/dist-server/service/board/board-query.js.map +1 -1
  52. package/dist-server/service/board/board-subscription.d.ts +6 -0
  53. package/dist-server/service/board/board-subscription.js +2 -2
  54. package/dist-server/service/board/board-subscription.js.map +1 -1
  55. package/dist-server/service/board/board-type.d.ts +24 -0
  56. package/dist-server/service/board/board-type.js +8 -8
  57. package/dist-server/service/board/board-type.js.map +1 -1
  58. package/dist-server/service/board/board.d.ts +25 -0
  59. package/dist-server/service/board/board.js +2 -2
  60. package/dist-server/service/board/board.js.map +1 -1
  61. package/dist-server/service/board/event-subscriber.d.ts +15 -0
  62. package/dist-server/service/board/event-subscriber.js +4 -4
  63. package/dist-server/service/board/event-subscriber.js.map +1 -1
  64. package/dist-server/service/board/index.d.ts +9 -0
  65. package/dist-server/service/board-favorite/board-favorite-query.d.ts +5 -0
  66. package/dist-server/service/board-favorite/board-favorite-query.js +2 -2
  67. package/dist-server/service/board-favorite/board-favorite-query.js.map +1 -1
  68. package/dist-server/service/board-favorite/board-favorite-type.d.ts +8 -0
  69. package/dist-server/service/board-favorite/board-favorite-type.js +4 -4
  70. package/dist-server/service/board-favorite/board-favorite-type.js.map +1 -1
  71. package/dist-server/service/board-favorite/index.d.ts +3 -0
  72. package/dist-server/service/board-template/board-template-mutation.d.ts +8 -0
  73. package/dist-server/service/board-template/board-template-mutation.js +2 -2
  74. package/dist-server/service/board-template/board-template-mutation.js.map +1 -1
  75. package/dist-server/service/board-template/board-template-query.d.ts +13 -0
  76. package/dist-server/service/board-template/board-template-query.js +2 -2
  77. package/dist-server/service/board-template/board-template-query.js.map +1 -1
  78. package/dist-server/service/board-template/board-template-type.d.ts +21 -0
  79. package/dist-server/service/board-template/board-template-type.js +6 -6
  80. package/dist-server/service/board-template/board-template-type.js.map +1 -1
  81. package/dist-server/service/board-template/board-template.d.ts +23 -0
  82. package/dist-server/service/board-template/board-template.js +3 -3
  83. package/dist-server/service/board-template/board-template.js.map +1 -1
  84. package/dist-server/service/board-template/index.d.ts +6 -0
  85. package/dist-server/service/group/group-mutation.d.ts +8 -0
  86. package/dist-server/service/group/group-mutation.js +2 -2
  87. package/dist-server/service/group/group-mutation.js.map +1 -1
  88. package/dist-server/service/group/group-query.d.ts +13 -0
  89. package/dist-server/service/group/group-query.js +2 -2
  90. package/dist-server/service/group/group-query.js.map +1 -1
  91. package/dist-server/service/group/group-type.d.ts +13 -0
  92. package/dist-server/service/group/group-type.js +6 -6
  93. package/dist-server/service/group/group-type.js.map +1 -1
  94. package/dist-server/service/group/group.d.ts +17 -0
  95. package/dist-server/service/group/group.js +2 -2
  96. package/dist-server/service/group/group.js.map +1 -1
  97. package/dist-server/service/group/index.d.ts +5 -0
  98. package/dist-server/service/index.d.ts +10 -0
  99. package/dist-server/service/permission/domain-permission-subscriber.d.ts +9 -0
  100. package/dist-server/service/permission/domain-permission-subscriber.js +2 -2
  101. package/dist-server/service/permission/domain-permission-subscriber.js.map +1 -1
  102. package/dist-server/service/permission/index.d.ts +2 -0
  103. package/dist-server/service/play-group/event-subscriber.d.ts +6 -0
  104. package/dist-server/service/play-group/event-subscriber.js +2 -2
  105. package/dist-server/service/play-group/event-subscriber.js.map +1 -1
  106. package/dist-server/service/play-group/index.d.ts +8 -0
  107. package/dist-server/service/play-group/play-group-mutation.d.ts +10 -0
  108. package/dist-server/service/play-group/play-group-mutation.js +2 -2
  109. package/dist-server/service/play-group/play-group-mutation.js.map +1 -1
  110. package/dist-server/service/play-group/play-group-query.d.ts +14 -0
  111. package/dist-server/service/play-group/play-group-query.js +2 -2
  112. package/dist-server/service/play-group/play-group-query.js.map +1 -1
  113. package/dist-server/service/play-group/play-group-subscription.d.ts +6 -0
  114. package/dist-server/service/play-group/play-group-subscription.js +2 -2
  115. package/dist-server/service/play-group/play-group-subscription.js.map +1 -1
  116. package/dist-server/service/play-group/play-group-type.d.ts +13 -0
  117. package/dist-server/service/play-group/play-group-type.js +6 -6
  118. package/dist-server/service/play-group/play-group-type.js.map +1 -1
  119. package/dist-server/service/play-group/play-group.d.ts +18 -0
  120. package/dist-server/service/play-group/play-group.js +2 -2
  121. package/dist-server/service/play-group/play-group.js.map +1 -1
  122. package/dist-server/service/theme/index.d.ts +6 -0
  123. package/dist-server/service/theme/theme-mutation.d.ts +10 -0
  124. package/dist-server/service/theme/theme-mutation.js +2 -2
  125. package/dist-server/service/theme/theme-mutation.js.map +1 -1
  126. package/dist-server/service/theme/theme-query.d.ts +11 -0
  127. package/dist-server/service/theme/theme-query.js +2 -2
  128. package/dist-server/service/theme/theme-query.js.map +1 -1
  129. package/dist-server/service/theme/theme-type.d.ts +21 -0
  130. package/dist-server/service/theme/theme-type.js +6 -6
  131. package/dist-server/service/theme/theme-type.js.map +1 -1
  132. package/dist-server/service/theme/theme.d.ts +25 -0
  133. package/dist-server/service/theme/theme.js +2 -2
  134. package/dist-server/service/theme/theme.js.map +1 -1
  135. package/dist-server/tsconfig.tsbuildinfo +1 -1
  136. package/package.json +7 -7
  137. package/server/controllers/fonts.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"standalone-board-service-router.js","sourceRoot":"","sources":["../../server/routers/standalone-board-service-router.ts"],"names":[],"mappings":"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","sourcesContent":["import contentDisposition from 'content-disposition'\nimport Router from 'koa-router'\n\nimport { User, setAccessTokenCookie } from '@things-factory/auth-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport { fonts } from '../controllers/fonts'\nimport { headlessModel } from '../controllers/headless-model'\nimport { headlessPlaylist } from '../controllers/headless-playlist'\nimport { labelcommand } from '../controllers/label-command'\nimport { pdf } from '../controllers/pdf'\nimport { screenshot } from '../controllers/screenshot'\nimport { Board } from '../service/board/board'\nimport { BoardTemplate } from '../service/board-template/board-template'\n\nexport const standaloneBoardServiceRouter = new Router()\n\nfunction parseQuery(query) {\n for (const key in query) {\n if (query.hasOwnProperty(key)) {\n try {\n query[key] = JSON.parse(query[key])\n } catch (error) {\n // do nothing\n }\n }\n }\n\n return query\n}\n\n// for board headless-full\nstandaloneBoardServiceRouter.get('/headless-full/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, base } = await headlessModel({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-full-feature-view', { id, model, data, base })\n})\n\n// for board headless-full-by-name\nstandaloneBoardServiceRouter.get('/headless-full-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { model, base, board } = await headlessModel({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-full-feature-view', { id: board?.id, model, data, base })\n})\n\n// for board headless\nstandaloneBoardServiceRouter.get('/headless/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, base } = await headlessModel({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-service-view', { id, model, data, base })\n})\n\n// for board headless by name\nstandaloneBoardServiceRouter.get('/headless-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { model, base, board } = await headlessModel({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-service-view', { id: board?.id, model, data, base })\n})\n\n// for board player\nstandaloneBoardServiceRouter.get('/headless-player/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { playGroup, base } = await headlessPlaylist({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-player-view', {\n id,\n model: {\n boards: playGroup?.boards,\n fonts: fontsToUse,\n fontStyles: fontStyles\n },\n data,\n base\n })\n})\n\n// for board player by name\nstandaloneBoardServiceRouter.get('/headless-player-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { playGroup, base } = await headlessPlaylist({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-player-view', {\n id: playGroup?.id,\n model: {\n boards: playGroup?.boards,\n fonts: fontsToUse,\n fontStyles: fontStyles\n },\n data,\n base\n })\n})\n\n// for board thumbnail\nstandaloneBoardServiceRouter.get('/thumbnail/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { name, thumbnail } = (await getRepository(Board).findOneBy({ domain: { id: domain.id }, id })) || {}\n\n if (thumbnail) {\n const index = thumbnail.indexOf(';base64,')\n const base64 = thumbnail.substring(index + 8)\n const buffer = Buffer.from(base64, 'base64')\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`thumbnail-${name}.png`))\n context.body = buffer\n } else {\n context.throw(404, 'thumbnail not found')\n }\n})\n\n// for board-template thumbnail\nstandaloneBoardServiceRouter.get('/board-template-thumbnail/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board-template', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { name, thumbnail } = (await getRepository(BoardTemplate).findOneBy({ domain: { id: domain.id }, id })) || {}\n\n if (thumbnail) {\n const index = thumbnail.indexOf(';base64,')\n const base64 = thumbnail.substring(index + 8)\n const buffer = Buffer.from(base64, 'base64')\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`thumbnail-${name}.png`))\n context.body = buffer\n } else {\n context.throw(404, 'thumbnail not found')\n }\n})\n\n// for webpage scrap\nstandaloneBoardServiceRouter.get('/screenshot/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, board } = await headlessModel({ domain, id })\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`${board.name}.png`))\n context.body = await screenshot({ id, model, data, options: { encoding: 'binary', type: 'png' }, context })\n})\n\n// for webpage scrap\nstandaloneBoardServiceRouter.get('/board/pdf/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, board } = await headlessModel({ domain, id })\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n const result = await pdf({\n id,\n model,\n data,\n options: {\n format: 'A4'\n },\n context\n })\n\n context.type = 'application/pdf'\n context.set('Content-Disposition', contentDisposition(`${board.name}.pdf`))\n context.body = result\n})\n\n// for webpage scrap => zpl image print(grf format) command for released version board\nstandaloneBoardServiceRouter.get('/label-command/:id', async (context, next) => {\n const { id } = context.params\n\n const data = context.query\n delete data.access_token\n\n const orientation = data && data.orientation\n const mirror = data && data.mirror\n const upsideDown = data && data.upsideDown\n\n context.type = 'text/plain'\n context.body = await labelcommand({ id, data, orientation, mirror, upsideDown, context } as any)\n})\n\n// for webpage scrap => zpl image print(grf format) command for draft version board\nstandaloneBoardServiceRouter.get('/label-command-draft/:id', async (context, next) => {\n const { id } = context.params\n\n const data = context.query\n delete data.access_token\n\n const orientation = data && data.orientation\n const mirror = data && data.mirror\n const upsideDown = data && data.upsideDown\n\n context.type = 'text/plain'\n context.body = await labelcommand({ id, data, orientation, mirror, upsideDown, context, draft: true } as any)\n})\n"]}
1
+ {"version":3,"file":"standalone-board-service-router.js","sourceRoot":"","sources":["../../server/routers/standalone-board-service-router.ts"],"names":[],"mappings":"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","sourcesContent":["import contentDisposition from 'content-disposition'\nimport Router from 'koa-router'\n\nimport { User, setAccessTokenCookie } from '@things-factory/auth-base'\nimport { getRepository } from '@things-factory/shell'\n\nimport { fonts } from '../controllers/fonts'\nimport { headlessModel } from '../controllers/headless-model'\nimport { headlessPlaylist } from '../controllers/headless-playlist'\nimport { labelcommand } from '../controllers/label-command'\nimport { pdf } from '../controllers/pdf'\nimport { screenshot } from '../controllers/screenshot'\nimport { Board } from '../service/board/board'\nimport { BoardTemplate } from '../service/board-template/board-template'\n\nexport const standaloneBoardServiceRouter = new Router()\n\nfunction parseQuery(query) {\n for (const key in query) {\n if (query.hasOwnProperty(key)) {\n try {\n query[key] = JSON.parse(query[key])\n } catch (error) {\n // do nothing\n }\n }\n }\n\n return query\n}\n\n// for board headless-full\nstandaloneBoardServiceRouter.get('/headless-full/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, base } = await headlessModel({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-full-feature-view', { id, model, data, base })\n})\n\n// for board headless-full-by-name\nstandaloneBoardServiceRouter.get('/headless-full-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { model, base, board } = await headlessModel({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-full-feature-view', { id: board?.id, model, data, base })\n})\n\n// for board headless\nstandaloneBoardServiceRouter.get('/headless/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, base } = await headlessModel({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-service-view', { id, model, data, base })\n})\n\n// for board headless by name\nstandaloneBoardServiceRouter.get('/headless-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { model, base, board } = await headlessModel({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n model.fonts = fontsToUse\n model.fontStyles = fontStyles\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-service-view', { id: board?.id, model, data, base })\n})\n\n// for board player\nstandaloneBoardServiceRouter.get('/headless-player/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { playGroup, base } = await headlessPlaylist({ domain, id })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-player-view', {\n id,\n model: {\n boards: playGroup?.boards,\n fonts: fontsToUse,\n fontStyles: fontStyles\n },\n data,\n base\n })\n})\n\n// for board player by name\nstandaloneBoardServiceRouter.get('/headless-player-by-name/:name', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { name } = context.params\n\n const { playGroup, base } = await headlessPlaylist({ domain, name })\n const [fontsToUse, fontStyles] = await fonts(domain)\n\n setAccessTokenCookie(context, await user.sign({ domain }))\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n await context.render('internal-board-player-view', {\n id: playGroup?.id,\n model: {\n boards: playGroup?.boards,\n fonts: fontsToUse,\n fontStyles: fontStyles\n },\n data,\n base\n })\n})\n\n// for board thumbnail\nstandaloneBoardServiceRouter.get('/thumbnail/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { name, thumbnail } = (await getRepository(Board).findOneBy({ domain: { id: domain.id }, id })) || {}\n\n if (thumbnail) {\n const index = thumbnail.indexOf(';base64,')\n const base64 = thumbnail.substring(index + 8)\n const buffer = Buffer.from(base64, 'base64')\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`thumbnail-${name}.png`))\n context.body = buffer\n } else {\n context.throw(404, 'thumbnail not found')\n }\n})\n\n// for board-template thumbnail\nstandaloneBoardServiceRouter.get('/board-template-thumbnail/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board-template', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { name, thumbnail } = (await getRepository(BoardTemplate).findOneBy({ domain: { id: domain.id }, id })) || {}\n\n if (thumbnail) {\n const index = thumbnail.indexOf(';base64,')\n const base64 = thumbnail.substring(index + 8)\n const buffer = Buffer.from(base64, 'base64')\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`thumbnail-${name}.png`))\n context.body = buffer\n } else {\n context.throw(404, 'thumbnail not found')\n }\n})\n\n// for webpage scrap\nstandaloneBoardServiceRouter.get('/screenshot/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, board } = await headlessModel({ domain, id })\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n context.type = 'image/png'\n context.set('Content-Disposition', contentDisposition(`${board.name}.png`))\n context.body = await screenshot({ id, model, data, options: { encoding: 'binary', type: 'png' }, context })\n})\n\n// for webpage scrap\nstandaloneBoardServiceRouter.get('/board/pdf/:id', async (context, next) => {\n const { domain, user } = context.state\n\n if (!(await User.hasPrivilege('query', 'board', domain, user))) {\n context.status = 403\n return\n }\n\n const { id } = context.params\n\n const { model, board } = await headlessModel({ domain, id })\n\n const data = parseQuery({ ...context.query })\n delete data.access_token\n\n const result = await pdf({\n id,\n model,\n data,\n options: {\n format: 'A4'\n },\n context\n })\n\n context.type = 'application/pdf'\n context.set('Content-Disposition', contentDisposition(`${board.name}.pdf`))\n context.body = result\n})\n\n// for webpage scrap => zpl image print(grf format) command for released version board\nstandaloneBoardServiceRouter.get('/label-command/:id', async (context, next) => {\n const { id } = context.params\n\n const data = context.query\n delete data.access_token\n\n const orientation = data && data.orientation\n const mirror = data && data.mirror\n const upsideDown = data && data.upsideDown\n\n context.type = 'text/plain'\n context.body = await labelcommand({ id, data, orientation, mirror, upsideDown, context } as any)\n})\n\n// for webpage scrap => zpl image print(grf format) command for draft version board\nstandaloneBoardServiceRouter.get('/label-command-draft/:id', async (context, next) => {\n const { id } = context.params\n\n const data = context.query\n delete data.access_token\n\n const orientation = data && data.orientation\n const mirror = data && data.mirror\n const upsideDown = data && data.upsideDown\n\n context.type = 'text/plain'\n context.body = await labelcommand({ id, data, orientation, mirror, upsideDown, context, draft: true } as any)\n})\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qEAA+D;AAC/D,6CAA4C;AAC5C,mFAAkG;AAClG,mFAAkG;AAClG,qFAA8E;AAC9E,+FAAwF;AAExF,MAAM,gBAAgB,GAAG,CAAC,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,YAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;AAE7F,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,wBAAwB,EAAE,EAAE;IAC1F,IAAA,yCAAuB,GAAE,CAAA;IACzB,IAAA,yCAAuB,GAAE,CAAA;IACzB,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,oDAAuB,CAAC,MAAM,EAAE,EAAE,oDAAuB,CAAC,cAAc,EAAE,CAAC,CAAA;AAC9G,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF,IAAI,gBAAgB,EAAE;QACpB,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,EAAE,qCAAgB,CAAC,MAAM,EAAE,EAAE,qCAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACxG,mBAAmB,CAAC,GAAG,CACrB,iBAAiB,EACjB,8DAA4B,CAAC,MAAM,EAAE,EACrC,8DAA4B,CAAC,cAAc,EAAE,CAC9C,CAAA;KACF;SAAM;QACL,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,qCAAgB,CAAC,MAAM,EAAE,EAAE,qCAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACzF,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,8DAA4B,CAAC,MAAM,EAAE,EAAE,8DAA4B,CAAC,cAAc,EAAE,CAAC,CAAA;KAClH;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { boardPrintRouter } from './routers/board-print-router'\nimport { config } from '@things-factory/env'\nimport { getHeadlessPool as getHeadlessPoolForBoard } from './controllers/headless-pool-for-board'\nimport { getHeadlessPool as getHeadlessPoolForLabel } from './controllers/headless-pool-for-label'\nimport { internalBoardViewRouter } from './routers/internal-board-view-router'\nimport { standaloneBoardServiceRouter } from './routers/standalone-board-service-router'\n\nconst isPathBaseDomain = !config.get('subdomain') && !config.get('useVirtualHostBasedDomain')\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, domainGlobalPublicRouter) => {\n getHeadlessPoolForLabel()\n getHeadlessPoolForBoard()\n domainGlobalPublicRouter.use('', internalBoardViewRouter.routes(), internalBoardViewRouter.allowedMethods())\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n if (isPathBaseDomain) {\n domainPrivateRouter.use('/domain/:domain', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())\n domainPrivateRouter.use(\n '/domain/:domain',\n standaloneBoardServiceRouter.routes(),\n standaloneBoardServiceRouter.allowedMethods()\n )\n } else {\n domainPrivateRouter.use('', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())\n domainPrivateRouter.use('', standaloneBoardServiceRouter.routes(), standaloneBoardServiceRouter.allowedMethods())\n }\n})\n"]}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../server/routes.ts"],"names":[],"mappings":";;AAAA,qEAA+D;AAC/D,6CAA4C;AAC5C,mFAAkG;AAClG,mFAAkG;AAClG,qFAA8E;AAC9E,+FAAwF;AAExF,MAAM,gBAAgB,GAAG,CAAC,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,YAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;AAE7F,OAAO,CAAC,EAAE,CAAC,sCAA6C,EAAE,CAAC,GAAG,EAAE,wBAAwB,EAAE,EAAE;IAC1F,IAAA,yCAAuB,GAAE,CAAA;IACzB,IAAA,yCAAuB,GAAE,CAAA;IACzB,wBAAwB,CAAC,GAAG,CAAC,EAAE,EAAE,oDAAuB,CAAC,MAAM,EAAE,EAAE,oDAAuB,CAAC,cAAc,EAAE,CAAC,CAAA;AAC9G,CAAC,CAAC,CAAA;AAEF,OAAO,CAAC,EAAE,CAAC,uCAA8C,EAAE,CAAC,GAAG,EAAE,mBAAmB,EAAE,EAAE;IACtF,IAAI,gBAAgB,EAAE,CAAC;QACrB,mBAAmB,CAAC,GAAG,CAAC,iBAAiB,EAAE,qCAAgB,CAAC,MAAM,EAAE,EAAE,qCAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACxG,mBAAmB,CAAC,GAAG,CACrB,iBAAiB,EACjB,8DAA4B,CAAC,MAAM,EAAE,EACrC,8DAA4B,CAAC,cAAc,EAAE,CAC9C,CAAA;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,qCAAgB,CAAC,MAAM,EAAE,EAAE,qCAAgB,CAAC,cAAc,EAAE,CAAC,CAAA;QACzF,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,8DAA4B,CAAC,MAAM,EAAE,EAAE,8DAA4B,CAAC,cAAc,EAAE,CAAC,CAAA;IACnH,CAAC;AACH,CAAC,CAAC,CAAA","sourcesContent":["import { boardPrintRouter } from './routers/board-print-router'\nimport { config } from '@things-factory/env'\nimport { getHeadlessPool as getHeadlessPoolForBoard } from './controllers/headless-pool-for-board'\nimport { getHeadlessPool as getHeadlessPoolForLabel } from './controllers/headless-pool-for-label'\nimport { internalBoardViewRouter } from './routers/internal-board-view-router'\nimport { standaloneBoardServiceRouter } from './routers/standalone-board-service-router'\n\nconst isPathBaseDomain = !config.get('subdomain') && !config.get('useVirtualHostBasedDomain')\n\nprocess.on('bootstrap-module-global-public-route' as any, (app, domainGlobalPublicRouter) => {\n getHeadlessPoolForLabel()\n getHeadlessPoolForBoard()\n domainGlobalPublicRouter.use('', internalBoardViewRouter.routes(), internalBoardViewRouter.allowedMethods())\n})\n\nprocess.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {\n if (isPathBaseDomain) {\n domainPrivateRouter.use('/domain/:domain', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())\n domainPrivateRouter.use(\n '/domain/:domain',\n standaloneBoardServiceRouter.routes(),\n standaloneBoardServiceRouter.allowedMethods()\n )\n } else {\n domainPrivateRouter.use('', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())\n domainPrivateRouter.use('', standaloneBoardServiceRouter.routes(), standaloneBoardServiceRouter.allowedMethods())\n }\n})\n"]}
@@ -0,0 +1,3 @@
1
+ export declare class IntegrationAnalysisQuery {
2
+ integrationAnalysis(context: ResolverContext): Promise<any>;
3
+ }
@@ -11,6 +11,7 @@ let IntegrationAnalysisQuery = class IntegrationAnalysisQuery {
11
11
  return await (0, analyze_integration_1.analyzeBoardIntegration)(domain);
12
12
  }
13
13
  };
14
+ exports.IntegrationAnalysisQuery = IntegrationAnalysisQuery;
14
15
  tslib_1.__decorate([
15
16
  (0, type_graphql_1.Query)(returns => shell_1.ScalarObject, { description: 'To fetch integration Analyses' }),
16
17
  tslib_1.__param(0, (0, type_graphql_1.Ctx)()),
@@ -18,8 +19,7 @@ tslib_1.__decorate([
18
19
  tslib_1.__metadata("design:paramtypes", [Object]),
19
20
  tslib_1.__metadata("design:returntype", Promise)
20
21
  ], IntegrationAnalysisQuery.prototype, "integrationAnalysis", null);
21
- IntegrationAnalysisQuery = tslib_1.__decorate([
22
+ exports.IntegrationAnalysisQuery = IntegrationAnalysisQuery = tslib_1.__decorate([
22
23
  (0, type_graphql_1.Resolver)()
23
24
  ], IntegrationAnalysisQuery);
24
- exports.IntegrationAnalysisQuery = IntegrationAnalysisQuery;
25
25
  //# sourceMappingURL=analysis-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis-query.js","sourceRoot":"","sources":["../../../server/service/analysis/analysis-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmD;AACnD,iDAAoD;AACpD,wFAAwF;AAGjF,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE7B,AAAN,KAAK,CAAC,mBAAmB,CAAQ,OAAwB;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,6CAAuB,EAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;CACF,CAAA;AALO;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACtD,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;mEAI/B;AANU,wBAAwB;IADpC,IAAA,uBAAQ,GAAE;GACE,wBAAwB,CAOpC;AAPY,4DAAwB","sourcesContent":["import { Resolver, Query, Ctx } from 'type-graphql'\nimport { ScalarObject } from '@things-factory/shell'\nimport { analyzeBoardIntegration } from '../../controllers/analyzer/analyze-integration'\n\n@Resolver()\nexport class IntegrationAnalysisQuery {\n @Query(returns => ScalarObject, { description: 'To fetch integration Analyses' })\n async integrationAnalysis(@Ctx() context: ResolverContext): Promise<any> {\n const { domain } = context.state\n\n return await analyzeBoardIntegration(domain)\n }\n}\n"]}
1
+ {"version":3,"file":"analysis-query.js","sourceRoot":"","sources":["../../../server/service/analysis/analysis-query.ts"],"names":[],"mappings":";;;;AAAA,+CAAmD;AACnD,iDAAoD;AACpD,wFAAwF;AAGjF,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE7B,AAAN,KAAK,CAAC,mBAAmB,CAAQ,OAAwB;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;QAEhC,OAAO,MAAM,IAAA,6CAAuB,EAAC,MAAM,CAAC,CAAA;IAC9C,CAAC;CACF,CAAA;AAPY,4DAAwB;AAE7B;IADL,IAAA,oBAAK,EAAC,OAAO,CAAC,EAAE,CAAC,oBAAY,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;IACtD,mBAAA,IAAA,kBAAG,GAAE,CAAA;;;;mEAI/B;mCANU,wBAAwB;IADpC,IAAA,uBAAQ,GAAE;GACE,wBAAwB,CAOpC","sourcesContent":["import { Resolver, Query, Ctx } from 'type-graphql'\nimport { ScalarObject } from '@things-factory/shell'\nimport { analyzeBoardIntegration } from '../../controllers/analyzer/analyze-integration'\n\n@Resolver()\nexport class IntegrationAnalysisQuery {\n @Query(returns => ScalarObject, { description: 'To fetch integration Analyses' })\n async integrationAnalysis(@Ctx() context: ResolverContext): Promise<any> {\n const { domain } = context.state\n\n return await analyzeBoardIntegration(domain)\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import { IntegrationAnalysisQuery } from './analysis-query';
2
+ export declare const resolvers: (typeof IntegrationAnalysisQuery)[];
@@ -0,0 +1,28 @@
1
+ import { HistoryActionType, HistoryEntityInterface } from '@operato/typeorm-history';
2
+ import { User } from '@things-factory/auth-base';
3
+ import { Domain } from '@things-factory/shell';
4
+ import { Board } from './board';
5
+ import { Group } from '../group/group';
6
+ import { PlayGroup } from '../play-group/play-group';
7
+ export declare class BoardHistory implements HistoryEntityInterface<Board> {
8
+ readonly id: string;
9
+ version?: number;
10
+ domain?: Domain;
11
+ domainId?: string;
12
+ name?: string;
13
+ description?: string;
14
+ model?: string;
15
+ thumbnail?: string;
16
+ group?: Group;
17
+ groupId?: string;
18
+ playGroups?: PlayGroup[];
19
+ createdAt?: Date;
20
+ updatedAt?: Date;
21
+ creator?: User;
22
+ creatorId?: string;
23
+ updater?: User;
24
+ updaterId?: string;
25
+ deletedAt?: Date;
26
+ originalId: string;
27
+ action: HistoryActionType;
28
+ }
@@ -17,6 +17,7 @@ let BoardHistory = class BoardHistory {
17
17
  this.version = 1;
18
18
  }
19
19
  };
20
+ exports.BoardHistory = BoardHistory;
20
21
  tslib_1.__decorate([
21
22
  (0, typeorm_1.PrimaryGeneratedColumn)('uuid'),
22
23
  (0, type_graphql_1.Field)(type => type_graphql_1.ID),
@@ -133,12 +134,11 @@ tslib_1.__decorate([
133
134
  }),
134
135
  tslib_1.__metadata("design:type", String)
135
136
  ], BoardHistory.prototype, "action", void 0);
136
- BoardHistory = tslib_1.__decorate([
137
+ exports.BoardHistory = BoardHistory = tslib_1.__decorate([
137
138
  (0, typeorm_1.Entity)(),
138
139
  (0, typeorm_1.Index)('ix_board_history_0', (boardHistory) => [boardHistory.originalId, boardHistory.version], {
139
140
  unique: true
140
141
  }),
141
142
  (0, type_graphql_1.ObjectType)({ description: 'History Entity of Board' })
142
143
  ], BoardHistory);
143
- exports.BoardHistory = BoardHistory;
144
144
  //# sourceMappingURL=board-history.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-history.js","sourceRoot":"","sources":["../../../server/service/board/board-history.ts"],"names":[],"mappings":";;;;AAAA,+CAAoD;AACpD,qCAA0G;AAE1G,8DAKiC;AACjC,yDAAgD;AAChD,iDAA8C;AAC9C,6CAA4C;AAG5C,0CAAsC;AACtC,yDAAoD;AAEpD,MAAM,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,CAAA;AAO7B,IAAM,YAAY,GAAlB,MAAM,YAAY;IAAlB;QAOL,YAAO,GAAY,CAAC,CAAA;IA4FtB,CAAC;CAAA,CAAA;AAlGC;IAAC,IAAA,gCAAsB,EAAC,MAAM,CAAC;IAC9B,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,iBAAE,CAAC;;wCACC;AAEnB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACtC,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;6CACN;AAEpB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,CAAC;IACzB,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,cAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACjC,cAAM;4CAAA;AAEf;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;;8CAC1B;AAEjB;IAAC,IAAA,gBAAM,GAAE;IACR,IAAA,oBAAK,GAAE;;0CACK;AAEb;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;iDACN;AAEpB;IAAC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;QACd,IAAI,EACF,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,SAAS;YACpD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,aAAa,IAAI,QAAQ;gBAC3B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,SAAS;KAChB,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACZ;AAEd;IAAC,IAAA,gBAAM,EAAC;QACN,QAAQ,EAAE,IAAI;QACd,IAAI,EACF,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,SAAS;YACpD,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,aAAa,IAAI,QAAQ;gBAC3B,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,SAAS;KAChB,CAAC;IACD,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACR;AAElB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,aAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC/C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,aAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACjC,aAAK;2CAAA;AAEb;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;;6CAC1B;AAEhB;IAAC,IAAA,oBAAU,EAAC,IAAI,CAAC,EAAE,CAAC,sBAAS,EAAE,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;IAC5D,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,sBAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACvB;AAExB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;+CAAA;AAEhB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;+CAAA;AAEhB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;6CAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;+CAC1B;AAElB;IAAC,IAAA,mBAAS,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAA,oBAAK,EAAC,IAAI,CAAC,EAAE,CAAC,gBAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCAC9B,gBAAI;6CAAA;AAEd;IAAC,IAAA,oBAAU,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;;+CAC1B;AAElB;IAAC,IAAA,gBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC1B,IAAA,oBAAK,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;sCACd,IAAI;+CAAA;AAEhB;IAAC,IAAA,yCAAuB,GAAE;;gDACA;AAE1B;IAAC,IAAA,qCAAmB,EAAC;QACnB,QAAQ,EAAE,KAAK;QACf,IAAI,EACF,aAAa,IAAI,UAAU,IAAI,aAAa,IAAI,OAAO,IAAI,aAAa,IAAI,SAAS;YACnF,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,aAAa,IAAI,QAAQ;gBAC3B,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,UAAU;QAChB,IAAI,EAAE,mCAAiB;KACxB,CAAC;;4CAC+B;AAlGtB,YAAY;IALxB,IAAA,gBAAM,GAAE;IACR,IAAA,eAAK,EAAC,oBAAoB,EAAE,CAAC,YAA0B,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EAAE;QAC5G,MAAM,EAAE,IAAI;KACb,CAAC;IACD,IAAA,yBAAU,EAAC,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;GAC1C,YAAY,CAmGxB;AAnGY,oCAAY","sourcesContent":["import { Field, ID, ObjectType } from 'type-graphql'\nimport { Column, Entity, Index, ManyToOne, ManyToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\nimport { config } from '@things-factory/env'\n\nimport { Board } from './board'\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Entity()\n@Index('ix_board_history_0', (boardHistory: BoardHistory) => [boardHistory.originalId, boardHistory.version], {\n unique: true\n})\n@ObjectType({ description: 'History Entity of Board' })\nexport class BoardHistory implements HistoryEntityInterface<Board> {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column({ nullable: true, default: 1 })\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((board: Board) => board.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n model?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n thumbnail?: string\n\n @ManyToOne(type => Group, group => group.boards)\n @Field(type => Group, { nullable: true })\n group?: Group\n\n @RelationId((board: Board) => board.group)\n groupId?: string\n\n @ManyToMany(type => PlayGroup, playGroup => playGroup.boards)\n @Field(type => [PlayGroup], { nullable: true })\n playGroups?: PlayGroup[]\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n createdAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((board: Board) => board.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((board: Board) => board.updater)\n updaterId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n deletedAt?: Date\n\n @HistoryOriginalIdColumn()\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : 'smallint',\n enum: HistoryActionType\n })\n public action!: HistoryActionType\n}\n"]}
1
+ {"version":3,"file":"board-history.js","sourceRoot":"","sources":["../../../server/service/board/board-history.ts"],"names":[],"mappings":"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","sourcesContent":["import { Field, ID, ObjectType } from 'type-graphql'\nimport { Column, Entity, Index, ManyToOne, ManyToMany, PrimaryGeneratedColumn, RelationId } from 'typeorm'\n\nimport {\n HistoryActionColumn,\n HistoryActionType,\n HistoryEntityInterface,\n HistoryOriginalIdColumn\n} from '@operato/typeorm-history'\nimport { User } from '@things-factory/auth-base'\nimport { Domain } from '@things-factory/shell'\nimport { config } from '@things-factory/env'\n\nimport { Board } from './board'\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\n\nconst ORMCONFIG = config.get('ormconfig', {})\nconst DATABASE_TYPE = ORMCONFIG.type\n\n@Entity()\n@Index('ix_board_history_0', (boardHistory: BoardHistory) => [boardHistory.originalId, boardHistory.version], {\n unique: true\n})\n@ObjectType({ description: 'History Entity of Board' })\nexport class BoardHistory implements HistoryEntityInterface<Board> {\n @PrimaryGeneratedColumn('uuid')\n @Field(type => ID)\n readonly id: string\n\n @Column({ nullable: true, default: 1 })\n @Field({ nullable: true })\n version?: number = 1\n\n @ManyToOne(type => Domain)\n @Field(type => Domain, { nullable: true })\n domain?: Domain\n\n @RelationId((board: Board) => board.domain)\n domainId?: string\n\n @Column()\n @Field()\n name?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n description?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n model?: string\n\n @Column({\n nullable: true,\n type:\n DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'longtext'\n : DATABASE_TYPE == 'oracle'\n ? 'clob'\n : 'varchar'\n })\n @Field({ nullable: true })\n thumbnail?: string\n\n @ManyToOne(type => Group, group => group.boards)\n @Field(type => Group, { nullable: true })\n group?: Group\n\n @RelationId((board: Board) => board.group)\n groupId?: string\n\n @ManyToMany(type => PlayGroup, playGroup => playGroup.boards)\n @Field(type => [PlayGroup], { nullable: true })\n playGroups?: PlayGroup[]\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n createdAt?: Date\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n updatedAt?: Date\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n creator?: User\n\n @RelationId((board: Board) => board.creator)\n creatorId?: string\n\n @ManyToOne(type => User, { nullable: true })\n @Field(type => User, { nullable: true })\n updater?: User\n\n @RelationId((board: Board) => board.updater)\n updaterId?: string\n\n @Column({ nullable: true })\n @Field({ nullable: true })\n deletedAt?: Date\n\n @HistoryOriginalIdColumn()\n public originalId!: string\n\n @HistoryActionColumn({\n nullable: false,\n type:\n DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'\n ? 'enum'\n : DATABASE_TYPE == 'oracle'\n ? 'varchar2'\n : 'smallint',\n enum: HistoryActionType\n })\n public action!: HistoryActionType\n}\n"]}
@@ -0,0 +1,12 @@
1
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js';
2
+ import { Board } from './board';
3
+ import { BoardPatch, NewBoard } from './board-type';
4
+ export declare class BoardMutation {
5
+ createBoard(board: NewBoard, context: ResolverContext): Promise<Board>;
6
+ cloneBoard(id: string, patch: BoardPatch, targetSubdomain: string, targetGroupId: string, context: ResolverContext): Promise<Board>;
7
+ updateBoard(id: string, patch: BoardPatch, context: ResolverContext): Promise<Board>;
8
+ releaseBoard(id: string, context: ResolverContext): Promise<Board>;
9
+ revertBoardVersion(id: string, version: number, context: ResolverContext): Promise<Board>;
10
+ deleteBoard(id: string, context: ResolverContext): Promise<boolean>;
11
+ importBoards(groupId: string, files: FileUpload[], overwrite: boolean, context: ResolverContext): Promise<Board[]>;
12
+ }
@@ -293,6 +293,7 @@ let BoardMutation = class BoardMutation {
293
293
  return boards;
294
294
  }
295
295
  };
296
+ exports.BoardMutation = BoardMutation;
296
297
  tslib_1.__decorate([
297
298
  (0, type_graphql_1.Directive)('@transaction'),
298
299
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "mutation", domainOwnerGranted: true)'),
@@ -370,8 +371,7 @@ tslib_1.__decorate([
370
371
  tslib_1.__metadata("design:paramtypes", [String, Array, Boolean, Object]),
371
372
  tslib_1.__metadata("design:returntype", Promise)
372
373
  ], BoardMutation.prototype, "importBoards", null);
373
- BoardMutation = tslib_1.__decorate([
374
+ exports.BoardMutation = BoardMutation = tslib_1.__decorate([
374
375
  (0, type_graphql_1.Resolver)(board_1.Board)
375
376
  ], BoardMutation);
376
- exports.BoardMutation = 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'\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"]}
@@ -0,0 +1,20 @@
1
+ import { User } from '@things-factory/auth-base';
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';
8
+ export declare class BoardQuery {
9
+ board(id: string, context: ResolverContext): Promise<Board>;
10
+ boardByName(name: string, context: ResolverContext): Promise<Board>;
11
+ boardsCreatedByMe(params: ListParam, context: ResolverContext): Promise<BoardList>;
12
+ boardVersions(id: string, context: ResolverContext): Promise<BoardHistory[]>;
13
+ boardPublished(id: string, context: ResolverContext): Promise<BoardHistory>;
14
+ boards(params: ListParam, context: ResolverContext): Promise<BoardList>;
15
+ group(board: Board): Promise<Group>;
16
+ playGroups(board: Board): Promise<PlayGroup[]>;
17
+ domain(board: Board): Promise<Domain>;
18
+ updater(board: Board): Promise<User>;
19
+ creator(board: Board): Promise<User>;
20
+ }
@@ -125,6 +125,7 @@ let BoardQuery = class BoardQuery {
125
125
  })));
126
126
  }
127
127
  };
128
+ exports.BoardQuery = BoardQuery;
128
129
  tslib_1.__decorate([
129
130
  (0, type_graphql_1.Directive)('@privilege(category: "board", privilege: "query", domainOwnerGranted: true)'),
130
131
  (0, type_graphql_1.Query)(returns => board_1.Board, { description: 'To fetch a board' }),
@@ -213,8 +214,7 @@ tslib_1.__decorate([
213
214
  tslib_1.__metadata("design:paramtypes", [board_1.Board]),
214
215
  tslib_1.__metadata("design:returntype", Promise)
215
216
  ], BoardQuery.prototype, "creator", null);
216
- BoardQuery = tslib_1.__decorate([
217
+ exports.BoardQuery = BoardQuery = tslib_1.__decorate([
217
218
  (0, type_graphql_1.Resolver)(board_1.Board)
218
219
  ], BoardQuery);
219
- exports.BoardQuery = BoardQuery;
220
220
  //# sourceMappingURL=board-query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-query.js","sourceRoot":"","sources":["../../../server/service/board/board-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\nimport { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { checkTarget, checkDomain, getPermission } from '@things-factory/operato-license-checker'\n\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\nimport { Board } from './board'\nimport { BoardList } from './board-type'\nimport { BoardHistory } from './board-history'\n\nimport { LicenseError } from '../../errors/license-error'\n@Resolver(Board)\nexport class BoardQuery {\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }\n })\n\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count = await getRepository(Domain)\n .manager.createQueryBuilder()\n .select('id')\n .from(Domain, 'domain')\n .getCount()\n\n if (!checkDomain(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count = await getRepository(Board)\n .manager.createQueryBuilder()\n .select('id')\n .from(Board, 'board')\n .where('\"domain_id\" = :domainId', { domainId: domain.id })\n .getCount()\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n return board\n }\n\n @Query(returns => Board, { nullable: true, description: 'To fetch a Board Model by name' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n return await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch Boards created by me' })\n async boardsCreatedByMe(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain, user } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n alias: 'board',\n searchables: ['name', 'description']\n }).andWhere('board.creator = :user', { user: user.id })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => [BoardHistory], { description: 'To fetch a Board Versions' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardVersions(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory[]> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).find({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n relations: ['updater'],\n order: { version: 'DESC' },\n take: 10\n })\n }\n\n @Query(returns => BoardHistory, { description: 'To fetch the latest Board published' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardPublished(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n order: { version: 'DESC' }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch multiple Boards' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Group)\n async group(@Root() board: Board) {\n return (\n board.groupId &&\n (await getRepository(Group).findOneBy({\n id: board.groupId\n }))\n )\n }\n\n @FieldResolver(type => [PlayGroup])\n async playGroups(@Root() board: Board) {\n return (\n await getRepository(Board).findOne({\n where: { id: board.id },\n relations: ['playGroups']\n })\n )?.playGroups\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() board: Board) {\n return (\n board.domainId &&\n (await getRepository(Domain).findOneBy({\n id: board.domainId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async updater(@Root() board: Board): Promise<User> {\n return (\n board.updaterId &&\n (await getRepository(User).findOneBy({\n id: board.updaterId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async creator(@Root() board: Board): Promise<User> {\n return (\n board.creatorId &&\n (await getRepository(User).findOneBy({\n id: board.creatorId\n }))\n )\n }\n}\n"]}
1
+ {"version":3,"file":"board-query.js","sourceRoot":"","sources":["../../../server/service/board/board-query.ts"],"names":[],"mappings":"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","sourcesContent":["import { In } from 'typeorm'\nimport { Arg, Args, Ctx, FieldResolver, Query, Resolver, Root, Directive } from 'type-graphql'\n\nimport { User } from '@things-factory/auth-base'\nimport { Domain, getQueryBuilderFromListParams, getRepository, ListParam } from '@things-factory/shell'\nimport { checkTarget, checkDomain, getPermission } from '@things-factory/operato-license-checker'\n\nimport { Group } from '../group/group'\nimport { PlayGroup } from '../play-group/play-group'\nimport { Board } from './board'\nimport { BoardList } from './board-type'\nimport { BoardHistory } from './board-history'\n\nimport { LicenseError } from '../../errors/license-error'\n@Resolver(Board)\nexport class BoardQuery {\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n @Query(returns => Board, { description: 'To fetch a board' })\n async board(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n var board = await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id }\n })\n\n if (domain) {\n // 1. check domainSecret is over limit quantity or not\n var count = await getRepository(Domain)\n .manager.createQueryBuilder()\n .select('id')\n .from(Domain, 'domain')\n .getCount()\n\n if (!checkDomain(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n if (board) {\n // 1. check boardSecret is over limit quantity or not\n var count = await getRepository(Board)\n .manager.createQueryBuilder()\n .select('id')\n .from(Board, 'board')\n .where('\"domain_id\" = :domainId', { domainId: domain.id })\n .getCount()\n\n if (!checkTarget(count)) {\n throw new LicenseError({\n errorCode: context.t(LicenseError.ERROR_CODES.OVER_LIMIT)\n })\n }\n }\n\n return board\n }\n\n @Query(returns => Board, { nullable: true, description: 'To fetch a Board Model by name' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardByName(@Arg('name') name: string, @Ctx() context: ResolverContext): Promise<Board> {\n const { domain } = context.state\n\n return await getRepository(Board).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, name }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch Boards created by me' })\n async boardsCreatedByMe(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain, user } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n alias: 'board',\n searchables: ['name', 'description']\n }).andWhere('board.creator = :user', { user: user.id })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @Query(returns => [BoardHistory], { description: 'To fetch a Board Versions' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardVersions(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory[]> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).find({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n relations: ['updater'],\n order: { version: 'DESC' },\n take: 10\n })\n }\n\n @Query(returns => BoardHistory, { description: 'To fetch the latest Board published' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boardPublished(@Arg('id') id: string, @Ctx() context: ResolverContext): Promise<BoardHistory> {\n const { domain } = context.state\n\n return await getRepository(BoardHistory).findOne({\n where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, originalId: id },\n order: { version: 'DESC' }\n })\n }\n\n @Query(returns => BoardList, { description: 'To fetch multiple Boards' })\n @Directive('@privilege(category: \"board\", privilege: \"query\", domainOwnerGranted: true)')\n async boards(@Args() params: ListParam, @Ctx() context: ResolverContext): Promise<BoardList> {\n const { domain } = context.state\n\n const queryBuilder = getQueryBuilderFromListParams({\n repository: getRepository(Board),\n params,\n domain,\n searchables: ['name', 'description']\n })\n\n const [items, total] = await queryBuilder.getManyAndCount()\n\n return { items, total }\n }\n\n @FieldResolver(type => Group)\n async group(@Root() board: Board) {\n return (\n board.groupId &&\n (await getRepository(Group).findOneBy({\n id: board.groupId\n }))\n )\n }\n\n @FieldResolver(type => [PlayGroup])\n async playGroups(@Root() board: Board) {\n return (\n await getRepository(Board).findOne({\n where: { id: board.id },\n relations: ['playGroups']\n })\n )?.playGroups\n }\n\n @FieldResolver(type => Domain)\n async domain(@Root() board: Board) {\n return (\n board.domainId &&\n (await getRepository(Domain).findOneBy({\n id: board.domainId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async updater(@Root() board: Board): Promise<User> {\n return (\n board.updaterId &&\n (await getRepository(User).findOneBy({\n id: board.updaterId\n }))\n )\n }\n\n @FieldResolver(type => User)\n async creator(@Root() board: Board): Promise<User> {\n return (\n board.creatorId &&\n (await getRepository(User).findOneBy({\n id: board.creatorId\n }))\n )\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { Board } from './board';
2
+ export declare class BoardSubscription {
3
+ board(payload: {
4
+ board: Board;
5
+ }, id: string): Board;
6
+ }
@@ -11,6 +11,7 @@ let BoardSubscription = class BoardSubscription {
11
11
  return payload.board;
12
12
  }
13
13
  };
14
+ exports.BoardSubscription = BoardSubscription;
14
15
  tslib_1.__decorate([
15
16
  (0, type_graphql_1.Subscription)({
16
17
  subscribe: ({ args, context, info }) => {
@@ -42,8 +43,7 @@ tslib_1.__decorate([
42
43
  tslib_1.__metadata("design:paramtypes", [Object, String]),
43
44
  tslib_1.__metadata("design:returntype", board_1.Board)
44
45
  ], BoardSubscription.prototype, "board", null);
45
- BoardSubscription = tslib_1.__decorate([
46
+ exports.BoardSubscription = BoardSubscription = tslib_1.__decorate([
46
47
  (0, type_graphql_1.Resolver)(board_1.Board)
47
48
  ], BoardSubscription);
48
- exports.BoardSubscription = BoardSubscription;
49
49
  //# sourceMappingURL=board-subscription.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"board-subscription.js","sourceRoot":"","sources":["../../../server/service/board/board-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+CAA2C;AAC3C,iDAA8C;AAC9C,mCAA+B;AAGxB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAiC5B,KAAK,CAAS,OAAyB,EAAa,EAAU;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAA;IACtB,CAAC;CACF,CAAA;AAnCC;IAAC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;YACnB,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;aACnC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE;gBAClG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;aAChF;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EACzB,IAAA,qBAAM,EAAC,CAAC,OAAyB,EAAE,EAAE;gBACnC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;gBAE/C,IAAI,QAAQ,KAAK,MAAM,CAAC,EAAE,EAAE;oBAC1B,OAAO,KAAK,CAAA;iBACb;gBAED,IAAI,EAAE,KAAK,OAAO,EAAE;oBAClB,OAAO,KAAK,CAAA;iBACb;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACK,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAA6B,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;;;4CAAc,aAAK;8CAErE;AAnCU,iBAAiB;IAD7B,IAAA,uBAAQ,EAAC,aAAK,CAAC;GACH,iBAAiB,CAoC7B;AApCY,8CAAiB","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { filter, pipe } from 'graphql-yoga'\nimport { pubsub } from '@things-factory/shell'\nimport { Board } from './board'\n\n@Resolver(Board)\nexport class BoardSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { id } = args\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('board'),\n filter((payload: { board: Board }) => {\n const { domainId, id: boardId } = payload.board\n\n if (domainId !== domain.id) {\n return false\n }\n\n if (id !== boardId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n board(@Root() payload: { board: Board }, @Arg('id') id: string): Board {\n return payload.board\n }\n}\n"]}
1
+ {"version":3,"file":"board-subscription.js","sourceRoot":"","sources":["../../../server/service/board/board-subscription.ts"],"names":[],"mappings":";;;;AAAA,+CAAgE;AAChE,+CAA2C;AAC3C,iDAA8C;AAC9C,mCAA+B;AAGxB,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAiC5B,KAAK,CAAS,OAAyB,EAAa,EAAU;QAC5D,OAAO,OAAO,CAAC,KAAK,CAAA;IACtB,CAAC;CACF,CAAA;AApCY,8CAAiB;AAiC5B;IAhCC,IAAA,2BAAY,EAAC;QACZ,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;;YACrC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;YACtC,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAA;YACnB,MAAM,SAAS,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAA;YAEnC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAA;YACpC,CAAC;YAED,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAA,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;gBACnG,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,6BAA6B,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;YACjF,CAAC;YAED,OAAO,IAAA,mBAAI,EACT,cAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EACzB,IAAA,qBAAM,EAAC,CAAC,OAAyB,EAAE,EAAE;gBACnC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;gBAE/C,IAAI,QAAQ,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;oBAC3B,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;oBACnB,OAAO,KAAK,CAAA;gBACd,CAAC;gBAED,OAAO,IAAI,CAAA;YACb,CAAC,CAAC,CACH,CAAA;QACH,CAAC;KACF,CAAC;IACK,mBAAA,IAAA,mBAAI,GAAE,CAAA;IAA6B,mBAAA,IAAA,kBAAG,EAAC,IAAI,CAAC,CAAA;;;4CAAc,aAAK;8CAErE;4BAnCU,iBAAiB;IAD7B,IAAA,uBAAQ,EAAC,aAAK,CAAC;GACH,iBAAiB,CAoC7B","sourcesContent":["import { Resolver, Subscription, Root, Arg } from 'type-graphql'\nimport { filter, pipe } from 'graphql-yoga'\nimport { pubsub } from '@things-factory/shell'\nimport { Board } from './board'\n\n@Resolver(Board)\nexport class BoardSubscription {\n @Subscription({\n subscribe: ({ args, context, info }) => {\n const { domain, user } = context.state\n const { id } = args\n const subdomain = domain?.subdomain\n\n if (!domain) {\n throw new Error('domain required')\n }\n\n if (!user.domains?.find(d => d.subdomain === subdomain) && !process.superUserGranted(domain, user)) {\n throw new Error(`domain(${subdomain}) is not working for user(${user.email}).`)\n }\n\n return pipe(\n pubsub.subscribe('board'),\n filter((payload: { board: Board }) => {\n const { domainId, id: boardId } = payload.board\n\n if (domainId !== domain.id) {\n return false\n }\n\n if (id !== boardId) {\n return false\n }\n\n return true\n })\n )\n }\n })\n board(@Root() payload: { board: Board }, @Arg('id') id: string): Board {\n return payload.board\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { Board } from './board';
2
+ import { BoardHistory } from './board-history';
3
+ export declare class NewBoard {
4
+ name: string;
5
+ description?: string;
6
+ model: string;
7
+ groupId?: string;
8
+ thumbnail?: string;
9
+ }
10
+ export declare class BoardPatch {
11
+ name?: string;
12
+ description?: string;
13
+ model?: string;
14
+ groupId?: string;
15
+ thumbnail?: string;
16
+ }
17
+ export declare class BoardList {
18
+ items: Board[];
19
+ total: number;
20
+ }
21
+ export declare class BoardHistoryList {
22
+ items: BoardHistory[];
23
+ total: number;
24
+ }