@things-factory/board-service 8.0.0-alpha.3 → 8.0.0-alpha.30

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 (43) hide show
  1. package/dist-server/controllers/headless-pdf-to-image.js +7 -2
  2. package/dist-server/controllers/headless-pdf-to-image.js.map +1 -1
  3. package/dist-server/controllers/headless-pool-for-board.js +1 -1
  4. package/dist-server/controllers/headless-pool-for-board.js.map +1 -1
  5. package/dist-server/controllers/headless-pool-for-label.js +10 -2
  6. package/dist-server/controllers/headless-pool-for-label.js.map +1 -1
  7. package/dist-server/controllers/index.d.ts +0 -5
  8. package/dist-server/controllers/index.js +1 -6
  9. package/dist-server/controllers/index.js.map +1 -1
  10. package/dist-server/controllers/pdf.js +9 -1
  11. package/dist-server/controllers/pdf.js.map +1 -1
  12. package/dist-server/controllers/screenshot.js +9 -1
  13. package/dist-server/controllers/screenshot.js.map +1 -1
  14. package/dist-server/routes.js +0 -3
  15. package/dist-server/routes.js.map +1 -1
  16. package/dist-server/service/board/board-history.js +15 -4
  17. package/dist-server/service/board/board-history.js.map +1 -1
  18. package/dist-server/service/board/board.js +8 -2
  19. package/dist-server/service/board/board.js.map +1 -1
  20. package/dist-server/service/board-template/board-template.js +8 -2
  21. package/dist-server/service/board-template/board-template.js.map +1 -1
  22. package/dist-server/tsconfig.tsbuildinfo +1 -1
  23. package/package.json +9 -12
  24. package/server/controllers/headless-pdf-to-image.ts +7 -2
  25. package/server/controllers/headless-pool-for-board.ts +1 -1
  26. package/server/controllers/headless-pool-for-label.ts +13 -2
  27. package/server/controllers/index.ts +0 -6
  28. package/server/controllers/pdf.ts +11 -1
  29. package/server/controllers/screenshot.ts +11 -1
  30. package/server/routes.ts +0 -3
  31. package/server/service/board/board-history.ts +19 -7
  32. package/server/service/board/board.ts +10 -4
  33. package/server/service/board-template/board-template.ts +8 -2
  34. package/views/internal-board-full-feature-view.html +2 -1
  35. package/views/internal-board-player-view.html +20 -6
  36. package/dist-server/controllers/print.d.ts +0 -21
  37. package/dist-server/controllers/print.js +0 -57
  38. package/dist-server/controllers/print.js.map +0 -1
  39. package/dist-server/routers/board-print-router.d.ts +0 -1
  40. package/dist-server/routers/board-print-router.js +0 -48
  41. package/dist-server/routers/board-print-router.js.map +0 -1
  42. package/server/controllers/print.ts +0 -54
  43. package/server/routers/board-print-router.ts +0 -55
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/board-service",
3
- "version": "8.0.0-alpha.3",
3
+ "version": "8.0.0-alpha.30",
4
4
  "main": "dist-server/index.js",
5
5
  "things-factory": true,
6
6
  "author": "",
@@ -23,18 +23,15 @@
23
23
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
24
24
  },
25
25
  "dependencies": {
26
- "@things-factory/auth-base": "^8.0.0-alpha.2",
27
- "@things-factory/env": "^8.0.0-alpha.0",
28
- "@things-factory/fav-base": "^8.0.0-alpha.2",
29
- "@things-factory/font-base": "^8.0.0-alpha.3",
30
- "@things-factory/integration-base": "^8.0.0-alpha.2",
26
+ "@things-factory/auth-base": "^8.0.0-alpha.29",
27
+ "@things-factory/env": "^8.0.0-alpha.8",
28
+ "@things-factory/fav-base": "^8.0.0-alpha.29",
29
+ "@things-factory/font-base": "^8.0.0-alpha.29",
30
+ "@things-factory/integration-base": "^8.0.0-alpha.30",
31
31
  "@things-factory/operato-license-checker": "^4.0.4",
32
32
  "content-disposition": "^0.5.3",
33
- "generic-pool": "^3.8.2"
33
+ "generic-pool": "^3.8.2",
34
+ "puppeteer": "^23.0.0"
34
35
  },
35
- "optionalDependencies": {
36
- "@thiagoelg/node-printer": "0.6.2",
37
- "puppeteer": "22.12.1"
38
- },
39
- "gitHead": "610cf58f02e8d6ec5f988500ab5c4fd601fca8d8"
36
+ "gitHead": "f01fac46630cf06e1697edc185dfb4cddcd61365"
40
37
  }
@@ -1,3 +1,5 @@
1
+ import crypto from 'crypto'
2
+
1
3
  const puppeteer = require('puppeteer')
2
4
  const { Readable } = require('stream')
3
5
  const ejs = require('ejs')
@@ -21,7 +23,10 @@ export const pdfToImage = async ({ pdfPath, fileName, extension = 'png', quality
21
23
  const pdfUrl = `${protocol}://${host}:${port}${pdfPath}`
22
24
 
23
25
  const page = await browser.newPage()
24
- const html = await ejs.render(getPdfHtmlTemplate(), { data: { pdfUrl, quality } })
26
+ const html = await ejs.render(getPdfHtmlTemplate(), {
27
+ data: { pdfUrl, quality },
28
+ nonce: crypto.randomBytes(16).toString('hex')
29
+ })
25
30
 
26
31
  // 페이지 로딩시 까지 기다리고 스크린샷
27
32
  await page.setContent(html, { waitUntil: 'networkidle0' })
@@ -59,7 +64,7 @@ function getPdfHtmlTemplate() {
59
64
  <head>
60
65
  <meta charset="UTF-8" />
61
66
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
62
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
67
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
63
68
 
64
69
  <style nonce="<%= nonce %>">
65
70
  body {
@@ -15,7 +15,7 @@ export function getHeadlessPool() {
15
15
  headlessPool = genericPool.createPool(
16
16
  {
17
17
  create() {
18
- console.log('headless-pool-for-board about to create')
18
+ console.log('headless instance in headless-pool-for-board about to create')
19
19
  return initializeChromium()
20
20
  },
21
21
  validate(browser) {
@@ -18,7 +18,7 @@ export function getHeadlessPool() {
18
18
  headlessPool = genericPool.createPool(
19
19
  {
20
20
  create() {
21
- console.log('headless-pool-for-label about to create')
21
+ console.log('headless instance in headless-pool-for-label about to create')
22
22
  return initializeScenePage()
23
23
  },
24
24
  validate({ browser, page }) {
@@ -99,8 +99,19 @@ async function initializeScenePage() {
99
99
  const [fontsToUse, fontStyles] = await fonts()
100
100
 
101
101
  await page.setRequestInterception(true)
102
+
102
103
  page.on('console', async msg => {
103
- console.log(`[browser ${msg.type()}] ${msg.text()}`)
104
+ console.log(`[headless ${msg.type()}] ${msg.text()}`)
105
+ })
106
+
107
+ page.on('pageerror', error => {
108
+ console.log(`[headless pageerror] ${error.message}`)
109
+ console.log(error.stack)
110
+ })
111
+
112
+ page.on('error', error => {
113
+ console.log(`[headless fault] ${error}`)
114
+ console.log(error.stack)
104
115
  })
105
116
 
106
117
  page.on('requestfailed', request => {
@@ -1,14 +1,8 @@
1
- import { printDirect, getPrinters } from './print'
2
1
  import { labelcommand as boardToZpl } from './label-command'
3
2
  import { pdf as boardToPdf } from './pdf'
4
3
  import { headlessModel } from './headless-model'
5
4
  import { fonts } from './fonts'
6
5
 
7
- export const Printer = {
8
- printDirect,
9
- getPrinters
10
- }
11
-
12
6
  export const BoardFunc = {
13
7
  boardToZpl,
14
8
  boardToPdf,
@@ -56,7 +56,17 @@ export const pdf = async ({
56
56
  await page.setRequestInterception(true)
57
57
 
58
58
  page.on('console', async msg => {
59
- console.log(`[browser ${msg.type()}] ${msg.text()}`)
59
+ console.log(`[headless ${msg.type()}] ${msg.text()}`)
60
+ })
61
+
62
+ page.on('pageerror', error => {
63
+ console.log(`[headless pageerror] ${error.message}`)
64
+ console.log(error.stack)
65
+ })
66
+
67
+ page.on('error', error => {
68
+ console.log(`[headless fault] ${error}`)
69
+ console.log(error.stack)
60
70
  })
61
71
 
62
72
  page.on('requestfailed', request => {
@@ -55,7 +55,17 @@ export const screenshot = async ({
55
55
  await page.setDefaultTimeout(10000)
56
56
 
57
57
  page.on('console', async msg => {
58
- console.log(`[browser ${msg.type()}] ${msg.text()}`)
58
+ console.log(`[headless ${msg.type()}] ${msg.text()}`)
59
+ })
60
+
61
+ page.on('pageerror', error => {
62
+ console.log(`[headless pageerror] ${error.message}`)
63
+ console.log(error.stack)
64
+ })
65
+
66
+ page.on('error', error => {
67
+ console.log(`[headless fault] ${error}`)
68
+ console.log(error.stack)
59
69
  })
60
70
 
61
71
  page.on('requestfailed', request => {
package/server/routes.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { boardPrintRouter } from './routers/board-print-router'
2
1
  import { config } from '@things-factory/env'
3
2
  import { getHeadlessPool as getHeadlessPoolForBoard } from './controllers/headless-pool-for-board'
4
3
  import { getHeadlessPool as getHeadlessPoolForLabel } from './controllers/headless-pool-for-label'
@@ -15,14 +14,12 @@ process.on('bootstrap-module-global-public-route' as any, (app, domainGlobalPubl
15
14
 
16
15
  process.on('bootstrap-module-domain-private-route' as any, (app, domainPrivateRouter) => {
17
16
  if (isPathBaseDomain) {
18
- domainPrivateRouter.use('/domain/:domain', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())
19
17
  domainPrivateRouter.use(
20
18
  '/domain/:domain',
21
19
  standaloneBoardServiceRouter.routes(),
22
20
  standaloneBoardServiceRouter.allowedMethods()
23
21
  )
24
22
  } else {
25
- domainPrivateRouter.use('', boardPrintRouter.routes(), boardPrintRouter.allowedMethods())
26
23
  domainPrivateRouter.use('', standaloneBoardServiceRouter.routes(), standaloneBoardServiceRouter.allowedMethods())
27
24
  }
28
25
  })
@@ -53,8 +53,11 @@ export class BoardHistory implements HistoryEntityInterface<Board> {
53
53
  DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
54
54
  ? 'longtext'
55
55
  : DATABASE_TYPE == 'oracle'
56
- ? 'clob'
57
- : 'varchar'
56
+ ? 'clob'
57
+ : DATABASE_TYPE == 'mssql'
58
+ ? 'nvarchar'
59
+ : 'varchar',
60
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
58
61
  })
59
62
  @Field({ nullable: true })
60
63
  model?: string
@@ -65,8 +68,11 @@ export class BoardHistory implements HistoryEntityInterface<Board> {
65
68
  DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
66
69
  ? 'longtext'
67
70
  : DATABASE_TYPE == 'oracle'
68
- ? 'clob'
69
- : 'varchar'
71
+ ? 'clob'
72
+ : DATABASE_TYPE == 'mssql'
73
+ ? 'nvarchar'
74
+ : 'varchar',
75
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
70
76
  })
71
77
  @Field({ nullable: true })
72
78
  thumbnail?: string
@@ -117,9 +123,15 @@ export class BoardHistory implements HistoryEntityInterface<Board> {
117
123
  DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
118
124
  ? 'enum'
119
125
  : DATABASE_TYPE == 'oracle'
120
- ? 'varchar2'
121
- : 'smallint',
122
- enum: HistoryActionType
126
+ ? 'varchar2'
127
+ : DATABASE_TYPE == 'mssql'
128
+ ? 'nvarchar'
129
+ : 'varchar',
130
+ enum:
131
+ DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
132
+ ? HistoryActionType
133
+ : undefined,
134
+ length: DATABASE_TYPE == 'postgres' || DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb' ? undefined : 10
123
135
  })
124
136
  public action!: HistoryActionType
125
137
  }
@@ -62,8 +62,11 @@ export class Board {
62
62
  DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
63
63
  ? 'longtext'
64
64
  : DATABASE_TYPE == 'oracle'
65
- ? 'clob'
66
- : 'varchar'
65
+ ? 'clob'
66
+ : DATABASE_TYPE == 'mssql'
67
+ ? 'nvarchar'
68
+ : 'varchar',
69
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
67
70
  })
68
71
  @Field({ nullable: true })
69
72
  model?: string
@@ -74,8 +77,11 @@ export class Board {
74
77
  DATABASE_TYPE == 'mysql' || DATABASE_TYPE == 'mariadb'
75
78
  ? 'longtext'
76
79
  : DATABASE_TYPE == 'oracle'
77
- ? 'clob'
78
- : 'varchar'
80
+ ? 'clob'
81
+ : DATABASE_TYPE == 'mssql'
82
+ ? 'nvarchar'
83
+ : 'varchar',
84
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
79
85
  })
80
86
  @Field({ nullable: true })
81
87
  thumbnail?: string
@@ -67,7 +67,10 @@ export class BoardTemplate {
67
67
  ? 'longtext'
68
68
  : DATABASE_TYPE == 'oracle'
69
69
  ? 'clob'
70
- : 'varchar'
70
+ : DATABASE_TYPE == 'mssql'
71
+ ? 'nvarchar'
72
+ : 'varchar',
73
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
71
74
  })
72
75
  @Field({ nullable: true })
73
76
  model?: string
@@ -79,7 +82,10 @@ export class BoardTemplate {
79
82
  ? 'longtext'
80
83
  : DATABASE_TYPE == 'oracle'
81
84
  ? 'clob'
82
- : 'varchar'
85
+ : DATABASE_TYPE == 'mssql'
86
+ ? 'nvarchar'
87
+ : 'varchar',
88
+ length: DATABASE_TYPE == 'mssql' ? 'MAX' : undefined
83
89
  })
84
90
  @Field({ nullable: true })
85
91
  thumbnail?: string
@@ -69,12 +69,13 @@
69
69
  const startSubscribingForAutoRefresh = window.startSubscribingForAutoRefresh
70
70
 
71
71
  const board = {
72
- id: '---',
72
+ id: (new URL(window.location.href)).pathname.split('/').at(-1),
73
73
  model
74
74
  }
75
75
 
76
76
  const container = document.querySelector('#scene')
77
77
  const viewer = document.createElement('ox-board-viewer')
78
+ viewer.history = true
78
79
  viewer.board = board
79
80
  viewer.provider = provider
80
81
  data && (viewer.data = data)
@@ -70,16 +70,30 @@
70
70
  const startSubscribingForAutoRefresh = window.startSubscribingForAutoRefresh
71
71
 
72
72
  const container = document.querySelector('#scene')
73
- const player = document.createElement('ox-board-player')
74
- player.provider = provider
75
- player.boards = boards
76
- data && (player.data = data)
77
73
 
78
- container.appendChild(player)
74
+ function stop() {
75
+ let player = document.querySelector('ox-board-player')
76
+ if(player) {
77
+ player.stop()
78
+ container.removeChild(player)
79
+ player = null
80
+ }
81
+ }
79
82
 
80
- startSubscribingForAutoRefresh(id, ({id, boards}) => {
83
+ function start(boards, data) {
84
+ let player = document.createElement('ox-board-player')
85
+ player.provider = provider
81
86
  player.boards = boards
82
87
  data && (player.data = data)
88
+
89
+ container.appendChild(player)
90
+ }
91
+
92
+ start(boards, data)
93
+
94
+ startSubscribingForAutoRefresh(id, ({id, boards}) => {
95
+ stop()
96
+ start(boards, data)
83
97
  })
84
98
  </script>
85
99
  </body>
@@ -1,21 +0,0 @@
1
- /**
2
- * shoot raw data to printer
3
- *
4
- * @param printer Printer ID
5
- * @param command Raw command
6
- */
7
- export declare function printDirect(printer: any, command: any): Promise<void>;
8
- /**
9
- * get all installed printers
10
- */
11
- export declare function getPrinters(): any;
12
- /**
13
- * get specific printer by name
14
- * @param printerName printer name
15
- */
16
- export declare function getPrinter(printerName: any): any;
17
- /**
18
- * get default printer name
19
- */
20
- export declare function getDefaultPrinterName(): any;
21
- export declare function getSupportedPrintFormats(): any;
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.printDirect = printDirect;
4
- exports.getPrinters = getPrinters;
5
- exports.getPrinter = getPrinter;
6
- exports.getDefaultPrinterName = getDefaultPrinterName;
7
- exports.getSupportedPrintFormats = getSupportedPrintFormats;
8
- const env_1 = require("@things-factory/env");
9
- try {
10
- var print = require('@thiagoelg/node-printer');
11
- }
12
- catch (e) {
13
- env_1.logger.error(e);
14
- }
15
- /**
16
- * shoot raw data to printer
17
- *
18
- * @param printer Printer ID
19
- * @param command Raw command
20
- */
21
- async function printDirect(printer, command) {
22
- print &&
23
- (await print.printDirect({
24
- data: command,
25
- printer,
26
- docname: 'RAW print',
27
- success: function (jobId) {
28
- console.log(`Job ID: ${jobId}`);
29
- },
30
- error: function (error) {
31
- env_1.logger.error(error);
32
- }
33
- }));
34
- }
35
- /**
36
- * get all installed printers
37
- */
38
- function getPrinters() {
39
- return (print === null || print === void 0 ? void 0 : print.getPrinters()) || [];
40
- }
41
- /**
42
- * get specific printer by name
43
- * @param printerName printer name
44
- */
45
- function getPrinter(printerName) {
46
- return print === null || print === void 0 ? void 0 : print.getPrinter(printerName);
47
- }
48
- /**
49
- * get default printer name
50
- */
51
- function getDefaultPrinterName() {
52
- return print === null || print === void 0 ? void 0 : print.getDefaultPrinterName();
53
- }
54
- function getSupportedPrintFormats() {
55
- return print === null || print === void 0 ? void 0 : print.getSupportedPrintFormats();
56
- }
57
- //# sourceMappingURL=print.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"print.js","sourceRoot":"","sources":["../../server/controllers/print.ts"],"names":[],"mappings":";;AAcA,kCAaC;AAKD,kCAEC;AAMD,gCAEC;AAKD,sDAEC;AAED,4DAEC;AArDD,6CAA4C;AAE5C,IAAI,CAAC;IACH,IAAI,KAAK,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAA;AAChD,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,YAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;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,YAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;SACF,CAAC,CAAC,CAAA;AACP,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,WAAW,EAAE,KAAI,EAAE,CAAA;AACnC,CAAC;AAED;;;GAGG;AACH,SAAgB,UAAU,CAAC,WAAW;IACpC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,CAAC,WAAW,CAAC,CAAA;AACvC,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB;IACnC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,qBAAqB,EAAE,CAAA;AACvC,CAAC;AAED,SAAgB,wBAAwB;IACtC,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,wBAAwB,EAAE,CAAA;AAC1C,CAAC","sourcesContent":["import { logger } from '@things-factory/env'\n\ntry {\n var print = require('@thiagoelg/node-printer')\n} catch (e) {\n logger.error(e)\n}\n\n/**\n * shoot raw data to printer\n *\n * @param printer Printer ID\n * @param command Raw command\n */\nexport async function printDirect(printer, command) {\n print &&\n (await print.printDirect({\n data: command,\n printer,\n docname: 'RAW print',\n success: function (jobId) {\n console.log(`Job ID: ${jobId}`)\n },\n error: function (error) {\n logger.error(error)\n }\n }))\n}\n\n/**\n * get all installed printers\n */\nexport function getPrinters() {\n return print?.getPrinters() || []\n}\n\n/**\n * get specific printer by name\n * @param printerName printer name\n */\nexport function getPrinter(printerName) {\n return print?.getPrinter(printerName)\n}\n\n/**\n * get default printer name\n */\nexport function getDefaultPrinterName() {\n return print?.getDefaultPrinterName()\n}\n\nexport function getSupportedPrintFormats() {\n return print?.getSupportedPrintFormats()\n}\n"]}
@@ -1 +0,0 @@
1
- export declare const boardPrintRouter: any;
@@ -1,48 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.boardPrintRouter = void 0;
4
- const tslib_1 = require("tslib");
5
- const koa_router_1 = tslib_1.__importDefault(require("koa-router"));
6
- const label_command_1 = require("../controllers/label-command");
7
- const print_1 = require("../controllers/print");
8
- exports.boardPrintRouter = new koa_router_1.default();
9
- /**
10
- * ?printerId=printer_id&data=grf_string
11
- */
12
- exports.boardPrintRouter.get('/print', async (context, next) => {
13
- let data = Object.keys(context.query).length ? context.query : null;
14
- context.body = await (0, print_1.printDirect)(data.printerId, data.data);
15
- });
16
- /**
17
- * { printerId: 'printer driver ID', data: 'grf string' }
18
- */
19
- exports.boardPrintRouter.post('/print', async (context, next) => {
20
- let params = context.request.body;
21
- context.type = 'text/plain';
22
- context.body = await (0, print_1.printDirect)(params.printerId, params.data);
23
- });
24
- // for webpage scrap => zpl image print(grf format) command for released version board
25
- exports.boardPrintRouter.get('/print-label/:id', async (context, next) => {
26
- const { id } = context.params;
27
- let data = Object.keys(context.query).length ? context.query : null;
28
- let orientation = data && data.orientation;
29
- let mirror = data && data.mirror;
30
- let upsideDown = data && data.upsideDown;
31
- let grf = await (0, label_command_1.labelcommand)({ id, data, orientation, mirror, upsideDown, context });
32
- context.type = 'text/plain';
33
- // TODO: 동기화
34
- context.body = (0, print_1.printDirect)(data.printerId, grf);
35
- });
36
- // for webpage scrap => zpl image print(grf format) command for draft version board
37
- exports.boardPrintRouter.get('/print-label-draft/:id', async (context, next) => {
38
- const { id } = context.params;
39
- let data = Object.keys(context.query).length ? context.query : null;
40
- let orientation = data && data.orientation;
41
- let mirror = data && data.mirror;
42
- let upsideDown = data && data.upsideDown;
43
- let grf = await (0, label_command_1.labelcommand)({ id, data, orientation, mirror, upsideDown, context, draft: true });
44
- context.type = 'text/plain';
45
- // TODO: 동기화
46
- context.body = (0, print_1.printDirect)(data.printerId, grf);
47
- });
48
- //# sourceMappingURL=board-print-router.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"board-print-router.js","sourceRoot":"","sources":["../../server/routers/board-print-router.ts"],"names":[],"mappings":"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","sourcesContent":["import Router from 'koa-router'\n\nimport { labelcommand } from '../controllers/label-command'\nimport { printDirect } from '../controllers/print'\n\nexport const boardPrintRouter = new Router()\n\n/**\n * ?printerId=printer_id&data=grf_string\n */\nboardPrintRouter.get('/print', async (context, next) => {\n let data = Object.keys(context.query).length ? context.query : null\n\n context.body = await printDirect(data.printerId, data.data)\n})\n\n/**\n * { printerId: 'printer driver ID', data: 'grf string' }\n */\nboardPrintRouter.post('/print', async (context, next) => {\n let params = context.request.body\n\n context.type = 'text/plain'\n context.body = await printDirect(params.printerId, params.data)\n})\n\n// for webpage scrap => zpl image print(grf format) command for released version board\nboardPrintRouter.get('/print-label/:id', async (context, next) => {\n const { id } = context.params\n let data = Object.keys(context.query).length ? context.query : null\n\n let orientation = data && data.orientation\n let mirror = data && data.mirror\n let upsideDown = data && data.upsideDown\n let grf = await labelcommand({ id, data, orientation, mirror, upsideDown, context } as any)\n\n context.type = 'text/plain'\n // TODO: 동기화\n context.body = printDirect(data.printerId, grf)\n})\n\n// for webpage scrap => zpl image print(grf format) command for draft version board\nboardPrintRouter.get('/print-label-draft/:id', async (context, next) => {\n const { id } = context.params\n let data = Object.keys(context.query).length ? context.query : null\n\n let orientation = data && data.orientation\n let mirror = data && data.mirror\n let upsideDown = data && data.upsideDown\n let grf = await labelcommand({ id, data, orientation, mirror, upsideDown, context, draft: true } as any)\n\n context.type = 'text/plain'\n // TODO: 동기화\n context.body = printDirect(data.printerId, grf)\n})\n"]}
@@ -1,54 +0,0 @@
1
- import { logger } from '@things-factory/env'
2
-
3
- try {
4
- var print = require('@thiagoelg/node-printer')
5
- } catch (e) {
6
- logger.error(e)
7
- }
8
-
9
- /**
10
- * shoot raw data to printer
11
- *
12
- * @param printer Printer ID
13
- * @param command Raw command
14
- */
15
- export async function printDirect(printer, command) {
16
- print &&
17
- (await print.printDirect({
18
- data: command,
19
- printer,
20
- docname: 'RAW print',
21
- success: function (jobId) {
22
- console.log(`Job ID: ${jobId}`)
23
- },
24
- error: function (error) {
25
- logger.error(error)
26
- }
27
- }))
28
- }
29
-
30
- /**
31
- * get all installed printers
32
- */
33
- export function getPrinters() {
34
- return print?.getPrinters() || []
35
- }
36
-
37
- /**
38
- * get specific printer by name
39
- * @param printerName printer name
40
- */
41
- export function getPrinter(printerName) {
42
- return print?.getPrinter(printerName)
43
- }
44
-
45
- /**
46
- * get default printer name
47
- */
48
- export function getDefaultPrinterName() {
49
- return print?.getDefaultPrinterName()
50
- }
51
-
52
- export function getSupportedPrintFormats() {
53
- return print?.getSupportedPrintFormats()
54
- }
@@ -1,55 +0,0 @@
1
- import Router from 'koa-router'
2
-
3
- import { labelcommand } from '../controllers/label-command'
4
- import { printDirect } from '../controllers/print'
5
-
6
- export const boardPrintRouter = new Router()
7
-
8
- /**
9
- * ?printerId=printer_id&data=grf_string
10
- */
11
- boardPrintRouter.get('/print', async (context, next) => {
12
- let data = Object.keys(context.query).length ? context.query : null
13
-
14
- context.body = await printDirect(data.printerId, data.data)
15
- })
16
-
17
- /**
18
- * { printerId: 'printer driver ID', data: 'grf string' }
19
- */
20
- boardPrintRouter.post('/print', async (context, next) => {
21
- let params = context.request.body
22
-
23
- context.type = 'text/plain'
24
- context.body = await printDirect(params.printerId, params.data)
25
- })
26
-
27
- // for webpage scrap => zpl image print(grf format) command for released version board
28
- boardPrintRouter.get('/print-label/:id', async (context, next) => {
29
- const { id } = context.params
30
- let data = Object.keys(context.query).length ? context.query : null
31
-
32
- let orientation = data && data.orientation
33
- let mirror = data && data.mirror
34
- let upsideDown = data && data.upsideDown
35
- let grf = await labelcommand({ id, data, orientation, mirror, upsideDown, context } as any)
36
-
37
- context.type = 'text/plain'
38
- // TODO: 동기화
39
- context.body = printDirect(data.printerId, grf)
40
- })
41
-
42
- // for webpage scrap => zpl image print(grf format) command for draft version board
43
- boardPrintRouter.get('/print-label-draft/:id', async (context, next) => {
44
- const { id } = context.params
45
- let data = Object.keys(context.query).length ? context.query : null
46
-
47
- let orientation = data && data.orientation
48
- let mirror = data && data.mirror
49
- let upsideDown = data && data.upsideDown
50
- let grf = await labelcommand({ id, data, orientation, mirror, upsideDown, context, draft: true } as any)
51
-
52
- context.type = 'text/plain'
53
- // TODO: 동기화
54
- context.body = printDirect(data.printerId, grf)
55
- })