@things-factory/board-service 4.3.671 → 4.3.672

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 (67) hide show
  1. package/dist-server/controllers/fonts.js +11 -0
  2. package/dist-server/controllers/fonts.js.map +1 -0
  3. package/dist-server/controllers/headless-model.js +32 -0
  4. package/dist-server/controllers/headless-model.js.map +1 -0
  5. package/dist-server/controllers/headless-pool-for-board.js +86 -0
  6. package/dist-server/controllers/headless-pool-for-board.js.map +1 -0
  7. package/dist-server/controllers/headless-pool-for-label.js +157 -0
  8. package/dist-server/controllers/headless-pool-for-label.js.map +1 -0
  9. package/dist-server/controllers/index.js +19 -0
  10. package/dist-server/controllers/index.js.map +1 -0
  11. package/dist-server/controllers/label-command.js +52 -0
  12. package/dist-server/controllers/label-command.js.map +1 -0
  13. package/dist-server/controllers/pdf.js +92 -0
  14. package/dist-server/controllers/pdf.js.map +1 -0
  15. package/dist-server/controllers/print.js +57 -0
  16. package/dist-server/controllers/print.js.map +1 -0
  17. package/dist-server/controllers/screenshot.js +90 -0
  18. package/dist-server/controllers/screenshot.js.map +1 -0
  19. package/dist-server/controllers/thumbnail.js +16 -0
  20. package/dist-server/controllers/thumbnail.js.map +1 -0
  21. package/dist-server/index.js +21 -0
  22. package/dist-server/index.js.map +1 -0
  23. package/dist-server/migrations/1556862253000-SeedGroup.js +43 -0
  24. package/dist-server/migrations/1556862253000-SeedGroup.js.map +1 -0
  25. package/dist-server/migrations/index.js +12 -0
  26. package/dist-server/migrations/index.js.map +1 -0
  27. package/dist-server/routers/board-print-router.js +40 -0
  28. package/dist-server/routers/board-print-router.js.map +1 -0
  29. package/dist-server/routers/internal-board-view-router.js +19 -0
  30. package/dist-server/routers/internal-board-view-router.js.map +1 -0
  31. package/dist-server/routers/standalone-board-service-router.js +92 -0
  32. package/dist-server/routers/standalone-board-service-router.js.map +1 -0
  33. package/dist-server/routes.js +25 -0
  34. package/dist-server/routes.js.map +1 -0
  35. package/dist-server/service/board/board-mutation.js +133 -0
  36. package/dist-server/service/board/board-mutation.js.map +1 -0
  37. package/dist-server/service/board/board-query.js +121 -0
  38. package/dist-server/service/board/board-query.js.map +1 -0
  39. package/dist-server/service/board/board-type.js +81 -0
  40. package/dist-server/service/board/board-type.js.map +1 -0
  41. package/dist-server/service/board/board.js +128 -0
  42. package/dist-server/service/board/board.js.map +1 -0
  43. package/dist-server/service/board/index.js +9 -0
  44. package/dist-server/service/board/index.js.map +1 -0
  45. package/dist-server/service/group/group-mutation.js +96 -0
  46. package/dist-server/service/group/group-mutation.js.map +1 -0
  47. package/dist-server/service/group/group-query.js +100 -0
  48. package/dist-server/service/group/group-query.js.map +1 -0
  49. package/dist-server/service/group/group-type.js +57 -0
  50. package/dist-server/service/group/group-type.js.map +1 -0
  51. package/dist-server/service/group/group.js +90 -0
  52. package/dist-server/service/group/group.js.map +1 -0
  53. package/dist-server/service/group/index.js +9 -0
  54. package/dist-server/service/group/index.js.map +1 -0
  55. package/dist-server/service/index.js +40 -0
  56. package/dist-server/service/index.js.map +1 -0
  57. package/dist-server/service/play-group/index.js +9 -0
  58. package/dist-server/service/play-group/index.js.map +1 -0
  59. package/dist-server/service/play-group/play-group-mutation.js +119 -0
  60. package/dist-server/service/play-group/play-group-mutation.js.map +1 -0
  61. package/dist-server/service/play-group/play-group-query.js +99 -0
  62. package/dist-server/service/play-group/play-group-query.js.map +1 -0
  63. package/dist-server/service/play-group/play-group-type.js +57 -0
  64. package/dist-server/service/play-group/play-group-type.js.map +1 -0
  65. package/dist-server/service/play-group/play-group.js +91 -0
  66. package/dist-server/service/play-group/play-group.js.map +1 -0
  67. package/package.json +4 -4
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fonts = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const font_base_1 = require("@things-factory/font-base");
6
+ const fonts = async () => {
7
+ const qb = await (0, typeorm_1.getRepository)(font_base_1.Font).createQueryBuilder('FONT');
8
+ return (await qb.select('name').distinct(true).where({ active: true }).getRawMany()).map((f) => f.name);
9
+ };
10
+ exports.fonts = fonts;
11
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../server/controllers/fonts.ts"],"names":[],"mappings":";;;AAAA,qCAA2D;AAE3D,yDAAgD;AAEzC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;IAC9B,MAAM,EAAE,GAA6B,MAAM,IAAA,uBAAa,EAAC,gBAAI,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACzF,OAAO,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,GAAG,CACtF,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAChC,CAAA;AACH,CAAC,CAAA;AALY,QAAA,KAAK,SAKjB"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.headlessModel = void 0;
4
+ const typeorm_1 = require("typeorm");
5
+ const board_1 = require("../service/board/board");
6
+ const shell_1 = require("@things-factory/shell");
7
+ const headlessModel = async (target) => {
8
+ var { domain, id, model } = target || {};
9
+ if (model) {
10
+ if (typeof model == 'string') {
11
+ model = JSON.parse(model);
12
+ }
13
+ else if (typeof model !== 'object') {
14
+ throw 'model should be a string or object';
15
+ }
16
+ }
17
+ else if (id) {
18
+ const repository = (0, typeorm_1.getRepository)(board_1.Board);
19
+ var board = await repository.findOne({ id });
20
+ model = JSON.parse(board.model);
21
+ }
22
+ else {
23
+ throw 'parameter model or id mandatory';
24
+ }
25
+ return {
26
+ base: (0, shell_1.getContextPath)(domain === null || domain === void 0 ? void 0 : domain.subdomain),
27
+ model,
28
+ board
29
+ };
30
+ };
31
+ exports.headlessModel = headlessModel;
32
+ //# sourceMappingURL=headless-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-model.js","sourceRoot":"","sources":["../../server/controllers/headless-model.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AACvC,kDAA8C;AAC9C,iDAAsD;AAE/C,MAAM,aAAa,GAAG,KAAK,EAAC,MAAM,EAAC,EAAE;IAC1C,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAExC,IAAI,KAAK,EAAE;QACT,IAAI,OAAO,KAAK,IAAI,QAAQ,EAAE;YAC5B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SAC1B;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACpC,MAAM,oCAAoC,CAAA;SAC3C;KACF;SAAM,IAAI,EAAE,EAAE;QACb,MAAM,UAAU,GAAG,IAAA,uBAAa,EAAC,aAAK,CAAC,CAAA;QACvC,IAAI,KAAK,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC5C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;KAChC;SAAM;QACL,MAAM,iCAAiC,CAAA;KACxC;IAED,OAAO;QACL,IAAI,EAAE,IAAA,sBAAc,EAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC;QACvC,KAAK;QACL,KAAK;KACN,CAAA;AACH,CAAC,CAAA;AAtBY,QAAA,aAAa,iBAsBzB"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.getHeadlessPool = void 0;
27
+ const genericPool = __importStar(require("generic-pool"));
28
+ const env_1 = require("@things-factory/env");
29
+ try {
30
+ var puppeteer = require('puppeteer');
31
+ }
32
+ catch (err) {
33
+ console.error(err);
34
+ }
35
+ var headlessPool;
36
+ function getHeadlessPool() {
37
+ if (!headlessPool) {
38
+ headlessPool = genericPool.createPool({
39
+ create() {
40
+ console.log('headless-pool-for-board about to create');
41
+ return initializeChromium();
42
+ },
43
+ validate(browser) {
44
+ return Promise.race([
45
+ new Promise(res => setTimeout(() => res(false), 1500)),
46
+ browser
47
+ //@ts-ignore
48
+ .version()
49
+ .then(_ => true)
50
+ .catch(_ => false)
51
+ ]);
52
+ },
53
+ destroy(browser) {
54
+ //@ts-ignore
55
+ return browser.close();
56
+ }
57
+ }, {
58
+ min: 2,
59
+ max: 10,
60
+ testOnBorrow: true,
61
+ acquireTimeoutMillis: 15000
62
+ });
63
+ }
64
+ return headlessPool;
65
+ }
66
+ exports.getHeadlessPool = getHeadlessPool;
67
+ const CHROMIUM_PATH = env_1.config.get('CHROMIUM_PATH');
68
+ async function initializeChromium() {
69
+ try {
70
+ if (!puppeteer) {
71
+ return;
72
+ }
73
+ var launchSetting = {
74
+ args: ['--hide-scrollbars', '--mute-audio', '--no-sandbox']
75
+ };
76
+ if (CHROMIUM_PATH) {
77
+ launchSetting['executablePath'] = CHROMIUM_PATH;
78
+ }
79
+ const browser = await puppeteer.launch(launchSetting);
80
+ return browser;
81
+ }
82
+ catch (err) {
83
+ console.error(err);
84
+ }
85
+ }
86
+ //# sourceMappingURL=headless-pool-for-board.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-pool-for-board.js","sourceRoot":"","sources":["../../server/controllers/headless-pool-for-board.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAE3C,6CAA4C;AAE5C,IAAI;IACF,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;CACrC;AAAC,OAAO,GAAG,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;CACnB;AAED,IAAI,YAAY,CAAA;AAEhB,SAAgB,eAAe;IAC7B,IAAI,CAAC,YAAY,EAAE;QACjB,YAAY,GAAG,WAAW,CAAC,UAAU,CACnC;YACE,MAAM;gBACJ,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAA;gBACtD,OAAO,kBAAkB,EAAE,CAAA;YAC7B,CAAC;YACD,QAAQ,CAAC,OAAO;gBACd,OAAO,OAAO,CAAC,IAAI,CAAC;oBAClB,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;oBACtD,OAAO;wBACL,YAAY;yBACX,OAAO,EAAE;yBACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;yBACf,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;iBACrB,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,CAAC,OAAO;gBACb,YAAY;gBACZ,OAAO,OAAO,CAAC,KAAK,EAAE,CAAA;YACxB,CAAC;SACF,EACD;YACE,GAAG,EAAE,CAAC;YACN,GAAG,EAAE,EAAE;YACP,YAAY,EAAE,IAAI;YAClB,oBAAoB,EAAE,KAAK;SAC5B,CACF,CAAA;KACF;IAED,OAAO,YAAY,CAAA;AACrB,CAAC;AAjCD,0CAiCC;AAED,MAAM,aAAa,GAAG,YAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAEjD,KAAK,UAAU,kBAAkB;IAC/B,IAAI;QACF,IAAI,CAAC,SAAS,EAAE;YACd,OAAM;SACP;QAED,IAAI,aAAa,GAAG;YAClB,IAAI,EAAE,CAAC,mBAAmB,EAAE,cAAc,EAAE,cAAc,CAAC;SAC5D,CAAA;QAED,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,gBAAgB,CAAC,GAAG,aAAa,CAAA;SAChD;QAED,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAErD,OAAO,OAAO,CAAA;KACf;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KACnB;AACH,CAAC"}
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
26
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
27
+ var m = o[Symbol.asyncIterator], i;
28
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
29
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
30
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
31
+ };
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.getHeadlessPool = void 0;
34
+ const genericPool = __importStar(require("generic-pool"));
35
+ const env_1 = require("@things-factory/env");
36
+ const shell_1 = require("@things-factory/shell");
37
+ const fonts_1 = require("./fonts");
38
+ try {
39
+ var puppeteer = require('puppeteer');
40
+ }
41
+ catch (err) {
42
+ console.error(err);
43
+ }
44
+ var headlessPool;
45
+ function getHeadlessPool() {
46
+ if (!headlessPool) {
47
+ headlessPool = genericPool.createPool({
48
+ create() {
49
+ console.log('headless-pool-for-label about to create');
50
+ return initializeScenePage();
51
+ },
52
+ validate({ browser, page }) {
53
+ return Promise.race([
54
+ new Promise(res => setTimeout(() => res(false), 1500)),
55
+ browser
56
+ //@ts-ignore
57
+ .version()
58
+ .then(_ => true)
59
+ .catch(_ => false)
60
+ ]);
61
+ },
62
+ destroy({ browser, page }) {
63
+ //@ts-ignore
64
+ return browser.close();
65
+ }
66
+ }, {
67
+ min: 2,
68
+ max: 10,
69
+ testOnBorrow: true,
70
+ acquireTimeoutMillis: 15000
71
+ });
72
+ setTimeout(async () => {
73
+ var _a, e_1, _b, _c;
74
+ const it = shell_1.pubsub.asyncIterator('notify-font-changed');
75
+ try {
76
+ for (var _d = true, it_1 = __asyncValues(it), it_1_1; it_1_1 = await it_1.next(), _a = it_1_1.done, !_a;) {
77
+ _c = it_1_1.value;
78
+ _d = false;
79
+ try {
80
+ const data = _c;
81
+ headlessPool.clear();
82
+ }
83
+ finally {
84
+ _d = true;
85
+ }
86
+ }
87
+ }
88
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
89
+ finally {
90
+ try {
91
+ if (!_d && !_a && (_b = it_1.return)) await _b.call(it_1);
92
+ }
93
+ finally { if (e_1) throw e_1.error; }
94
+ }
95
+ });
96
+ }
97
+ return headlessPool;
98
+ }
99
+ exports.getHeadlessPool = getHeadlessPool;
100
+ const CHROMIUM_PATH = env_1.config.get('CHROMIUM_PATH');
101
+ async function initializeChromium() {
102
+ try {
103
+ if (!puppeteer) {
104
+ return;
105
+ }
106
+ var launchSetting = {
107
+ args: ['--hide-scrollbars', '--mute-audio', '--no-sandbox']
108
+ };
109
+ if (CHROMIUM_PATH) {
110
+ launchSetting['executablePath'] = CHROMIUM_PATH;
111
+ }
112
+ const browser = await puppeteer.launch(launchSetting);
113
+ return browser;
114
+ }
115
+ catch (err) {
116
+ console.error(err);
117
+ }
118
+ }
119
+ async function initializeScenePage() {
120
+ /* get brand new browser for every request */
121
+ const browser = await initializeChromium();
122
+ if (!browser) {
123
+ return;
124
+ }
125
+ const protocol = 'http';
126
+ const host = 'localhost';
127
+ const path = '/internal-label-command-view';
128
+ const port = process.env.PORT;
129
+ const url = `${protocol}://${host}:${port}${path}`;
130
+ const page = await browser.newPage();
131
+ const fontsToUse = await (0, fonts_1.fonts)();
132
+ await page.setRequestInterception(true);
133
+ page.on('console', msg => {
134
+ console.log(`[browser ${msg._type}] ${msg._text}`);
135
+ for (let i = 0; i < msg.args().length; ++i)
136
+ console.log(`${i}: ${msg.args()[i]}`);
137
+ });
138
+ page.on('request', request => {
139
+ if (request.url() === url) {
140
+ request.continue({
141
+ method: 'POST',
142
+ headers: {
143
+ 'Content-Type': 'application/json'
144
+ },
145
+ postData: JSON.stringify({
146
+ fonts: fontsToUse
147
+ })
148
+ });
149
+ }
150
+ else {
151
+ request.continue();
152
+ }
153
+ });
154
+ await page.goto(url, { timeout: 0 });
155
+ return { browser, page };
156
+ }
157
+ //# sourceMappingURL=headless-pool-for-label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headless-pool-for-label.js","sourceRoot":"","sources":["../../server/controllers/headless-pool-for-label.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pdf = exports.headlessModel = exports.BoardFunc = exports.Printer = void 0;
4
+ const print_1 = require("./print");
5
+ const label_command_1 = require("./label-command");
6
+ const pdf_1 = require("./pdf");
7
+ exports.Printer = {
8
+ printDirect: print_1.printDirect,
9
+ getPrinters: print_1.getPrinters
10
+ };
11
+ exports.BoardFunc = {
12
+ boardToZpl: label_command_1.labelcommand,
13
+ boardToPdf: pdf_1.pdf
14
+ };
15
+ var headless_model_1 = require("./headless-model");
16
+ Object.defineProperty(exports, "headlessModel", { enumerable: true, get: function () { return headless_model_1.headlessModel; } });
17
+ var pdf_2 = require("./pdf");
18
+ Object.defineProperty(exports, "pdf", { enumerable: true, get: function () { return pdf_2.pdf; } });
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../server/controllers/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkD;AAClD,mDAA4D;AAC5D,+BAAyC;AAE5B,QAAA,OAAO,GAAG;IACrB,WAAW,EAAX,mBAAW;IACX,WAAW,EAAX,mBAAW;CACZ,CAAA;AAEY,QAAA,SAAS,GAAG;IACvB,UAAU,EAAV,4BAAU;IACV,UAAU,EAAV,SAAU;CACX,CAAA;AAED,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,6BAA2B;AAAlB,0FAAA,GAAG,OAAA"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ /*
3
+ * Copyright © HatioLab Inc. All rights reserved.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.labelcommand = void 0;
7
+ const headless_pool_for_label_1 = require("./headless-pool-for-label");
8
+ const headless_model_1 = require("./headless-model");
9
+ /**
10
+ * 라벨 출력
11
+ *
12
+ * @param {String} id 모델 ID
13
+ * @param {Object} data 매핑할 데이터
14
+ * @param {String} orientation (시계방향) N: 0, R: 90, I: 180, B: 270
15
+ * @param {boolean} mirror 좌우반전
16
+ * @param {boolean} upsideDown 상하반전
17
+ */
18
+ const labelcommand = async ({ id, model, data, orientation, mirror = false, upsideDown = false, context }) => {
19
+ const { domain } = context.state;
20
+ const resource = (await (0, headless_pool_for_label_1.getHeadlessPool)().acquire());
21
+ if (!resource) {
22
+ return;
23
+ }
24
+ const { page } = resource;
25
+ var { model } = await (0, headless_model_1.headlessModel)({ domain, model, id });
26
+ const grf = await page.evaluate(async (model, data, orientation, mirror, upsideDown) => {
27
+ //@ts-ignore
28
+ let s = createScene(model);
29
+ if (data) {
30
+ s.data = data;
31
+ }
32
+ return new Promise(resolve => {
33
+ // @ts-ignore
34
+ requestAnimationFrame(() => {
35
+ // @ts-ignore
36
+ let grf = imageDataToGrf(s, model, orientation, mirror, upsideDown);
37
+ resolve(grf);
38
+ // @ts-ignore
39
+ sceneContainer.removeChild(s.target);
40
+ s.dispose();
41
+ });
42
+ });
43
+ }, model, data, orientation, mirror, upsideDown);
44
+ (0, headless_pool_for_label_1.getHeadlessPool)().release(resource);
45
+ return `
46
+ ^XA
47
+ ^GFA,${grf}
48
+ ^FS
49
+ ^XZ`;
50
+ };
51
+ exports.labelcommand = labelcommand;
52
+ //# sourceMappingURL=label-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label-command.js","sourceRoot":"","sources":["../../server/controllers/label-command.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,uEAA2D;AAC3D,qDAAgD;AAEhD;;;;;;;;GAQG;AACI,MAAM,YAAY,GAAG,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;IAClH,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEhC,MAAM,QAAQ,GAAG,CAAC,MAAM,IAAA,yCAAe,GAAE,CAAC,OAAO,EAAE,CAAQ,CAAA;IAC3D,IAAI,CAAC,QAAQ,EAAE;QACb,OAAM;KACP;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;IAEzB,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAA;IAE1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAC7B,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;QACrD,YAAY;QACZ,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,IAAI,EAAE;YACR,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;SACd;QACD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,aAAa;YACb,qBAAqB,CAAC,GAAG,EAAE;gBACzB,aAAa;gBACb,IAAI,GAAG,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;gBACnE,OAAO,CAAC,GAAG,CAAC,CAAA;gBACZ,aAAa;gBACb,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBACpC,CAAC,CAAC,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,KAAK,EACL,IAAI,EACJ,WAAW,EACX,MAAM,EACN,UAAU,CACX,CAAA;IAED,IAAA,yCAAe,GAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;IAEnC,OAAO;;OAEF,GAAG;;IAEN,CAAA;AACJ,CAAC,CAAA;AA7CY,QAAA,YAAY,gBA6CxB"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pdf = void 0;
4
+ const fonts_1 = require("./fonts");
5
+ const headless_pool_for_board_1 = require("./headless-pool-for-board");
6
+ const headless_model_1 = require("./headless-model");
7
+ const protocol = 'http';
8
+ const host = 'localhost';
9
+ const path = '/internal-board-service-view';
10
+ const pdf = async ({ id = '', model = null, data = null, width: w = 0, height: h = 0, options = {}, context = {} } = {}) => {
11
+ const browser = (await (0, headless_pool_for_board_1.getHeadlessPool)().acquire());
12
+ if (!browser) {
13
+ return;
14
+ }
15
+ const { domain, user } = context.state;
16
+ var { model, base } = await (0, headless_model_1.headlessModel)({ domain, id, model });
17
+ model.fonts = await (0, fonts_1.fonts)();
18
+ let { width, height } = model;
19
+ width = Number(width);
20
+ height = Number(height);
21
+ if (!w) {
22
+ w = width;
23
+ }
24
+ if (!h) {
25
+ h = height;
26
+ }
27
+ let ratio = Math.min(w / width, h / height);
28
+ width = Math.floor(width * ratio);
29
+ height = Math.floor(height * ratio);
30
+ const port = process.env.PORT ? `:${process.env.PORT}` : '';
31
+ const url = `${protocol}://${host}${port}${path}`;
32
+ const page = await browser.newPage();
33
+ let pdfResult;
34
+ try {
35
+ /* @remember-me width, height should be a integer */
36
+ await page.setViewport({ width, height });
37
+ await page.setRequestInterception(true);
38
+ page.on('console', msg => {
39
+ console.log(`[browser ${msg._type}] ${msg._text}`);
40
+ for (let i = 0; i < msg.args().length; ++i)
41
+ console.log(`${i}: ${msg.args()[i]}`);
42
+ });
43
+ const token = await (user === null || user === void 0 ? void 0 : user.sign()); // TODO improve performance
44
+ page.on('request', request => {
45
+ if (request.url() === url) {
46
+ request.continue({
47
+ method: 'POST',
48
+ headers: {
49
+ 'Content-Type': 'application/json',
50
+ 'x-things-factory-domain': domain === null || domain === void 0 ? void 0 : domain.subdomain,
51
+ Authorization: 'Bearer ' + token
52
+ },
53
+ postData: JSON.stringify({
54
+ model,
55
+ base
56
+ })
57
+ });
58
+ }
59
+ else if (request.url().startsWith(`${protocol}://${host}${port}`)) {
60
+ request.continue({
61
+ headers: Object.assign(Object.assign({}, request.headers()), { 'x-things-factory-domain': domain === null || domain === void 0 ? void 0 : domain.subdomain, Authorization: 'Bearer ' + token })
62
+ });
63
+ }
64
+ else {
65
+ request.continue();
66
+ }
67
+ });
68
+ await page.goto(url);
69
+ await page.evaluate(async (data) => {
70
+ if (data) {
71
+ // @ts-ignore
72
+ s.data = data;
73
+ }
74
+ // data 주입 후 강제 지연시킴.
75
+ return new Promise(resolve => {
76
+ // @ts-ignore
77
+ requestAnimationFrame(() => resolve());
78
+ });
79
+ }, data);
80
+ pdfResult = await page.pdf(Object.assign({ format: 'A4' }, options));
81
+ }
82
+ catch (error) {
83
+ console.log(error);
84
+ }
85
+ finally {
86
+ page.close();
87
+ (0, headless_pool_for_board_1.getHeadlessPool)().release(browser);
88
+ }
89
+ return pdfResult;
90
+ };
91
+ exports.pdf = pdf;
92
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../server/controllers/pdf.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,uEAA2D;AAC3D,qDAAgD;AAEhD,MAAM,QAAQ,GAAG,MAAM,CAAA;AACvB,MAAM,IAAI,GAAG,WAAW,CAAA;AACxB,MAAM,IAAI,GAAG,8BAA8B,CAAA;AAEpC,MAAM,GAAG,GAAG,KAAK,EAAE,EACxB,EAAE,GAAG,EAAE,EACP,KAAK,GAAG,IAAI,EACZ,IAAI,GAAG,IAAI,EACX,KAAK,EAAE,CAAC,GAAG,CAAC,EACZ,MAAM,EAAE,CAAC,GAAG,CAAC,EACb,OAAO,GAAG,EAAS,EACnB,OAAO,GAAG,EAAS,KACjB,EAAE,EAAE,EAAE;IACR,MAAM,OAAO,GAAG,CAAC,MAAM,IAAA,yCAAe,GAAE,CAAC,OAAO,EAAE,CAAQ,CAAA;IAE1D,IAAI,CAAC,OAAO,EAAE;QACZ,OAAM;KACP;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEtC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAChE,KAAK,CAAC,KAAK,GAAG,MAAM,IAAA,aAAK,GAAE,CAAA;IAE3B,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAE7B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAEvB,IAAI,CAAC,CAAC,EAAE;QACN,CAAC,GAAG,KAAK,CAAA;KACV;IACD,IAAI,CAAC,CAAC,EAAE;QACN,CAAC,GAAG,MAAM,CAAA;KACX;IAED,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAA;IAE3C,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAA;IACjC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAA;IAEnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3D,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAA;IACjD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IAEpC,IAAI,SAAS,CAAA;IAEb,IAAI;QACF,oDAAoD;QACpD,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QAEvC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAA,CAAA,CAAC,2BAA2B;QAE5D,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE;gBACzB,OAAO,CAAC,QAAQ,CAAC;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,yBAAyB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS;wBAC5C,aAAa,EAAE,SAAS,GAAG,KAAK;qBACjC;oBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;wBACvB,KAAK;wBACL,IAAI;qBACL,CAAC;iBACH,CAAC,CAAA;aACH;iBAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE;gBACnE,OAAO,CAAC,QAAQ,CAAC;oBACf,OAAO,kCACF,OAAO,CAAC,OAAO,EAAE,KACpB,yBAAyB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAC5C,aAAa,EAAE,SAAS,GAAG,KAAK,GACjC;iBACF,CAAC,CAAA;aACH;iBAAM;gBACL,OAAO,CAAC,QAAQ,EAAE,CAAA;aACnB;QACH,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEpB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC/B,IAAI,IAAI,EAAE;gBACR,aAAa;gBACb,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;aACd;YAED,qBAAqB;YACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,aAAa;gBACb,qBAAqB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YACxC,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,IAAI,CAAC,CAAA;QAER,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,iBACxB,MAAM,EAAE,IAAI,IACT,OAAO,EACV,CAAA;KACH;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACnB;YAAS;QACR,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAA,yCAAe,GAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;KACnC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AA7GY,QAAA,GAAG,OA6Gf"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSupportedPrintFormats = exports.getDefaultPrinterName = exports.getPrinter = exports.getPrinters = exports.printDirect = void 0;
4
+ try {
5
+ var print = require('@thiagoelg/node-printer');
6
+ }
7
+ catch (e) {
8
+ console.error(e);
9
+ }
10
+ /**
11
+ * shoot raw data to printer
12
+ *
13
+ * @param printer Printer ID
14
+ * @param command Raw command
15
+ */
16
+ async function printDirect(printer, command) {
17
+ print &&
18
+ (await print.printDirect({
19
+ data: command,
20
+ printer,
21
+ docname: 'RAW print',
22
+ success: function (jobId) {
23
+ console.log(`Job ID: ${jobId}`);
24
+ },
25
+ error: function (error) {
26
+ console.error(error);
27
+ }
28
+ }));
29
+ }
30
+ exports.printDirect = printDirect;
31
+ /**
32
+ * get all installed printers
33
+ */
34
+ function getPrinters() {
35
+ return (print === null || print === void 0 ? void 0 : print.getPrinters()) || [];
36
+ }
37
+ exports.getPrinters = getPrinters;
38
+ /**
39
+ * get specific printer by name
40
+ * @param printerName printer name
41
+ */
42
+ function getPrinter(printerName) {
43
+ return print === null || print === void 0 ? void 0 : print.getPrinter(printerName);
44
+ }
45
+ exports.getPrinter = getPrinter;
46
+ /**
47
+ * get default printer name
48
+ */
49
+ function getDefaultPrinterName() {
50
+ return print === null || print === void 0 ? void 0 : print.getDefaultPrinterName();
51
+ }
52
+ exports.getDefaultPrinterName = getDefaultPrinterName;
53
+ function getSupportedPrintFormats() {
54
+ return print === null || print === void 0 ? void 0 : print.getSupportedPrintFormats();
55
+ }
56
+ exports.getSupportedPrintFormats = getSupportedPrintFormats;
57
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../server/controllers/print.ts"],"names":[],"mappings":";;;AAAA,IAAI;IACF,IAAI,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;CAC/C;AAAC,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;CACjB;AAED;;;;;GAKG;AACI,KAAK,UAAU,WAAW,CAAC,OAAO,EAAE,OAAO;IAChD,KAAK;QACH,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,OAAO;YACP,OAAO,EAAE,WAAW;YACpB,OAAO,EAAE,UAAU,KAAK;gBACtB,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,EAAE,CAAC,CAAA;YACjC,CAAC;YACD,KAAK,EAAE,UAAU,KAAK;gBACpB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;SACF,CAAC,CAAC,CAAA;AACP,CAAC;AAbD,kCAaC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,KAAI,EAAE,CAAA;AACnC,CAAC;AAFD,kCAEC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,WAAW;IACpC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,WAAW,CAAC,CAAA;AACvC,CAAC;AAFD,gCAEC;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACnC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAE,CAAA;AACvC,CAAC;AAFD,sDAEC;AAED,SAAgB,wBAAwB;IACtC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,wBAAwB,EAAE,CAAA;AAC1C,CAAC;AAFD,4DAEC"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.screenshot = void 0;
4
+ const fonts_1 = require("./fonts");
5
+ const headless_pool_for_board_1 = require("./headless-pool-for-board");
6
+ const headless_model_1 = require("./headless-model");
7
+ const protocol = 'http';
8
+ const host = 'localhost';
9
+ const path = '/internal-board-service-view';
10
+ const screenshot = async ({ id = '', model = null, data = null, width: w = 0, height: h = 0, options = { encoding: 'base64' }, isThumbnail = false, context = {} } = {}) => {
11
+ const browser = (await (0, headless_pool_for_board_1.getHeadlessPool)().acquire());
12
+ var screenshot = null;
13
+ if (!browser) {
14
+ return;
15
+ }
16
+ const { domain, user } = context.state;
17
+ var { model, base } = await (0, headless_model_1.headlessModel)({ domain, id, model });
18
+ model.fonts = await (0, fonts_1.fonts)();
19
+ var { width, height } = model;
20
+ if (isThumbnail) {
21
+ var widthRatio = 400 / width, heightRatio = 300 / height;
22
+ var ratio = widthRatio < heightRatio ? widthRatio : heightRatio;
23
+ width = width * ratio;
24
+ height = height * ratio;
25
+ }
26
+ width = Math.floor(w || Number(width));
27
+ height = Math.floor(h || Number(height));
28
+ const port = process.env.PORT ? `:${process.env.PORT}` : '';
29
+ const url = `${protocol}://${host}${port}${path}`;
30
+ var page = await browser.newPage();
31
+ try {
32
+ /* @remember-me width, height should be a integer */
33
+ await page.setViewport({ width, height });
34
+ await page.setRequestInterception(true);
35
+ await page.setDefaultTimeout(5000);
36
+ page.on('console', msg => {
37
+ console.log(`[browser ${msg._type}] ${msg._text}`);
38
+ for (let i = 0; i < msg.args().length; ++i)
39
+ console.log(`${i}: ${msg.args()[i]}`);
40
+ });
41
+ const token = await (user === null || user === void 0 ? void 0 : user.sign()); // TODO improve performance
42
+ page.on('request', request => {
43
+ if (request.url() === url) {
44
+ request.continue({
45
+ method: 'POST',
46
+ headers: {
47
+ 'Content-Type': 'application/json',
48
+ 'x-things-factory-domain': domain === null || domain === void 0 ? void 0 : domain.subdomain,
49
+ Authorization: 'Bearer ' + token
50
+ },
51
+ postData: JSON.stringify({
52
+ model,
53
+ base
54
+ })
55
+ });
56
+ }
57
+ else if (request.url().startsWith(`${protocol}://${host}${port}`)) {
58
+ request.continue({
59
+ headers: Object.assign(Object.assign({}, request.headers()), { 'x-things-factory-domain': domain === null || domain === void 0 ? void 0 : domain.subdomain, Authorization: 'Bearer ' + token })
60
+ });
61
+ }
62
+ else {
63
+ request.continue();
64
+ }
65
+ });
66
+ await page.goto(url);
67
+ await page.evaluate(async (data) => {
68
+ if (data) {
69
+ // @ts-ignore
70
+ s.data = data;
71
+ }
72
+ // data 주입 후 강제 지연시킴.
73
+ return new Promise(resolve => {
74
+ // @ts-ignore
75
+ requestAnimationFrame(() => resolve());
76
+ });
77
+ }, data);
78
+ screenshot = await page.screenshot(options);
79
+ }
80
+ catch (error) {
81
+ console.log(error);
82
+ }
83
+ finally {
84
+ page.close();
85
+ (0, headless_pool_for_board_1.getHeadlessPool)().release(browser);
86
+ }
87
+ return screenshot;
88
+ };
89
+ exports.screenshot = screenshot;
90
+ //# sourceMappingURL=screenshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../server/controllers/screenshot.ts"],"names":[],"mappings":";;;AAAA,mCAA+B;AAC/B,uEAA2D;AAC3D,qDAAgD;AAEhD,MAAM,QAAQ,GAAG,MAAM,CAAA;AACvB,MAAM,IAAI,GAAG,WAAW,CAAA;AACxB,MAAM,IAAI,GAAG,8BAA8B,CAAA;AAEpC,MAAM,UAAU,GAAG,KAAK,EAAE,EAC/B,EAAE,GAAG,EAAE,EACP,KAAK,GAAG,IAAI,EACZ,IAAI,GAAG,IAAI,EACX,KAAK,EAAE,CAAC,GAAG,CAAC,EACZ,MAAM,EAAE,CAAC,GAAG,CAAC,EACb,OAAO,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAS,EACvC,WAAW,GAAG,KAAK,EACnB,OAAO,GAAG,EAAS,KACjB,EAAE,EAAE,EAAE;IACR,MAAM,OAAO,GAAG,CAAC,MAAM,IAAA,yCAAe,GAAE,CAAC,OAAO,EAAE,CAAQ,CAAA;IAC1D,IAAI,UAAU,GAAG,IAAI,CAAA;IAErB,IAAI,CAAC,OAAO,EAAE;QACZ,OAAM;KACP;IACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;IAEtC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAA,8BAAa,EAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;IAChE,KAAK,CAAC,KAAK,GAAG,MAAM,IAAA,aAAK,GAAE,CAAA;IAE3B,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAE7B,IAAI,WAAW,EAAE;QACf,IAAI,UAAU,GAAG,GAAG,GAAG,KAAK,EAC1B,WAAW,GAAG,GAAG,GAAG,MAAM,CAAA;QAC5B,IAAI,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAA;QAC/D,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;QACrB,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;KACxB;IACD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACtC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IAExC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3D,MAAM,GAAG,GAAG,GAAG,QAAQ,MAAM,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAA;IAEjD,IAAI,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA;IAElC,IAAI;QACF,oDAAoD;QACpD,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;QACzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAA;QAElC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;YACvB,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC,CAAA;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,MAAM,KAAK,GAAG,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,EAAE,CAAA,CAAA,CAAC,2BAA2B;QAE5D,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;YAC3B,IAAI,OAAO,CAAC,GAAG,EAAE,KAAK,GAAG,EAAE;gBACzB,OAAO,CAAC,QAAQ,CAAC;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,yBAAyB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS;wBAC5C,aAAa,EAAE,SAAS,GAAG,KAAK;qBACjC;oBACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;wBACvB,KAAK;wBACL,IAAI;qBACL,CAAC;iBACH,CAAC,CAAA;aACH;iBAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,QAAQ,MAAM,IAAI,GAAG,IAAI,EAAE,CAAC,EAAE;gBACnE,OAAO,CAAC,QAAQ,CAAC;oBACf,OAAO,kCACF,OAAO,CAAC,OAAO,EAAE,KACpB,yBAAyB,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,EAC5C,aAAa,EAAE,SAAS,GAAG,KAAK,GACjC;iBACF,CAAC,CAAA;aACH;iBAAM;gBACL,OAAO,CAAC,QAAQ,EAAE,CAAA;aACnB;QACH,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAEpB,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAC,IAAI,EAAC,EAAE;YAC/B,IAAI,IAAI,EAAE;gBACR,aAAa;gBACb,CAAC,CAAC,IAAI,GAAG,IAAI,CAAA;aACd;YAED,qBAAqB;YACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;gBAC3B,aAAa;gBACb,qBAAqB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;YACxC,CAAC,CAAC,CAAA;QACJ,CAAC,EAAE,IAAI,CAAC,CAAA;QAER,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;KAC5C;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACnB;YAAS;QACR,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,IAAA,yCAAe,GAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;KACnC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC,CAAA;AArGY,QAAA,UAAU,cAqGtB"}