windsor-bot 0.2.11 → 0.2.13
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.
- package/dist/printing/escp.js +3 -2
- package/dist/server.js +10 -7
- package/package.json +1 -1
package/dist/printing/escp.js
CHANGED
|
@@ -3,6 +3,7 @@ import { SerialPort } from 'serialport';
|
|
|
3
3
|
import { Jimp, ResizeStrategy } from 'jimp';
|
|
4
4
|
const COLS_NORMAL = 48;
|
|
5
5
|
const COLS_DOUBLE = 24;
|
|
6
|
+
const PRINTER_INIT = '\x1B@\x1Bt\x02\x1BM\x00\x1DL\x00\x00\x1DW\x00\x02';
|
|
6
7
|
function wrapText(text, width) {
|
|
7
8
|
const words = text.split(' ');
|
|
8
9
|
const lines = [];
|
|
@@ -24,8 +25,6 @@ function wrapText(text, width) {
|
|
|
24
25
|
return lines.length > 0 ? lines : [''];
|
|
25
26
|
}
|
|
26
27
|
function chooseFontForLines(totalLines) {
|
|
27
|
-
// Keep short messages large without relying on the printer's
|
|
28
|
-
// double-width glyph capacity, which varies by model and font.
|
|
29
28
|
if (totalLines <= 8) {
|
|
30
29
|
return { fontSize: 'tall', cols: COLS_NORMAL };
|
|
31
30
|
}
|
|
@@ -39,6 +38,8 @@ function countLayoutLines(lines) {
|
|
|
39
38
|
export async function buildEscpBuffer(job) {
|
|
40
39
|
const conn = new InMemory();
|
|
41
40
|
const printer = await Printer.CONNECT('TM-T20', conn);
|
|
41
|
+
// Reset state that may persist between direct USB/serial jobs.
|
|
42
|
+
await conn.write(Buffer.from(PRINTER_INIT, 'ascii'));
|
|
42
43
|
const { fontSize, cols } = chooseFontForLines(countLayoutLines(job.lines));
|
|
43
44
|
// Header
|
|
44
45
|
if (job.header) {
|
package/dist/server.js
CHANGED
|
@@ -87,8 +87,11 @@ async function updateGlobalBot() {
|
|
|
87
87
|
try {
|
|
88
88
|
const nodeVersions = await readdir(join(nvmDir, 'versions', 'node'), { withFileTypes: true });
|
|
89
89
|
for (const version of nodeVersions) {
|
|
90
|
-
if (version.isDirectory())
|
|
91
|
-
|
|
90
|
+
if (version.isDirectory()) {
|
|
91
|
+
const versionRoot = join(nvmDir, 'versions', 'node', version.name);
|
|
92
|
+
nvmCandidates.push(join(versionRoot, 'bin', 'npm'));
|
|
93
|
+
nvmCandidates.push(join(versionRoot, 'lib', 'node_modules', 'npm', 'bin', 'npm-cli.js'));
|
|
94
|
+
}
|
|
92
95
|
}
|
|
93
96
|
logEvent('info', `Found ${nvmCandidates.length} nvm npm candidate(s) under ${nvmDir}`);
|
|
94
97
|
}
|
|
@@ -106,11 +109,11 @@ async function updateGlobalBot() {
|
|
|
106
109
|
logEvent('info', `Update requested; checking ${npmCandidates.length} npm candidate(s) (node=${process.execPath}, cwd=${process.cwd()})`);
|
|
107
110
|
let npmCommand;
|
|
108
111
|
for (const candidate of npmCandidates) {
|
|
109
|
-
const
|
|
110
|
-
const command =
|
|
112
|
+
const nvmRoot = candidate.match(/(\/\.nvm\/versions\/node\/[^/]+)(?:\/bin\/npm|\/lib\/node_modules\/npm\/bin\/npm-cli\.js)$/)?.[1];
|
|
113
|
+
const command = nvmRoot
|
|
111
114
|
? {
|
|
112
|
-
path: join(
|
|
113
|
-
args: [join(
|
|
115
|
+
path: join(nvmRoot, 'bin', 'node'),
|
|
116
|
+
args: [join(nvmRoot, 'lib', 'node_modules', 'npm', 'bin', 'npm-cli.js')],
|
|
114
117
|
}
|
|
115
118
|
: candidate.endsWith('.js')
|
|
116
119
|
? { path: process.execPath, args: [candidate] }
|
|
@@ -118,7 +121,7 @@ async function updateGlobalBot() {
|
|
|
118
121
|
try {
|
|
119
122
|
// Validate the script itself, not just the Node executable used to run it.
|
|
120
123
|
await access(candidate, constants.R_OK | (candidate.endsWith('.js') ? 0 : constants.X_OK));
|
|
121
|
-
if (
|
|
124
|
+
if (nvmRoot) {
|
|
122
125
|
await access(command.path, constants.X_OK);
|
|
123
126
|
await access(command.args[0], constants.R_OK);
|
|
124
127
|
}
|