windsor-bot 0.2.12 → 0.2.14

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/bot.js CHANGED
@@ -471,6 +471,7 @@ export function createWindsorBot() {
471
471
  }
472
472
  const job = {
473
473
  lines: [textWithLinkLabels],
474
+ fontSize: 'double',
474
475
  urls,
475
476
  };
476
477
  if (config.header)
@@ -616,7 +617,7 @@ export function createWindsorBot() {
616
617
  await replySafe(message, '⁉️ This message is too long to print.');
617
618
  return;
618
619
  }
619
- const job = { lines: [text], urls };
620
+ const job = { lines: [text], fontSize: 'double', urls };
620
621
  if (config.header)
621
622
  job.header = config.header;
622
623
  if (config.footer)
@@ -24,23 +24,12 @@ function wrapText(text, width) {
24
24
  lines.push(current);
25
25
  return lines.length > 0 ? lines : [''];
26
26
  }
27
- function chooseFontForLines(totalLines) {
28
- if (totalLines <= 8) {
29
- return { fontSize: 'tall', cols: COLS_NORMAL };
30
- }
31
- else {
32
- return { fontSize: 'normal', cols: COLS_NORMAL };
33
- }
34
- }
35
- function countLayoutLines(lines) {
36
- return lines.length <= 2 ? 2 : lines.length;
37
- }
38
27
  export async function buildEscpBuffer(job) {
39
28
  const conn = new InMemory();
40
29
  const printer = await Printer.CONNECT('TM-T20', conn);
41
30
  // Reset state that may persist between direct USB/serial jobs.
42
31
  await conn.write(Buffer.from(PRINTER_INIT, 'ascii'));
43
- const { fontSize, cols } = chooseFontForLines(countLayoutLines(job.lines));
32
+ const fontSize = job.fontSize ?? 'normal';
44
33
  // Header
45
34
  if (job.header) {
46
35
  const headerLines = wrapText(job.header, COLS_DOUBLE);
@@ -74,10 +63,7 @@ export async function buildEscpBuffer(job) {
74
63
  ? Style.DoubleHeight
75
64
  : 0;
76
65
  for (const line of job.lines) {
77
- const wrapped = wrapText(line, cols);
78
- for (const l of wrapped) {
79
- await printer.writeln(l, widthStyle);
80
- }
66
+ await printer.writeln(line, widthStyle);
81
67
  }
82
68
  await printer.feed(1);
83
69
  }
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
- nvmCandidates.push(join(nvmDir, 'versions', 'node', version.name, 'bin', 'npm'));
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 nvmBin = candidate.match(/(\/\.nvm\/versions\/node\/[^/]+\/bin)\/npm$/)?.[1];
110
- const command = nvmBin
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(nvmBin, 'node'),
113
- args: [join(nvmBin, '..', 'lib', 'node_modules', 'npm', 'bin', 'npm-cli.js')],
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 (nvmBin) {
124
+ if (nvmRoot) {
122
125
  await access(command.path, constants.X_OK);
123
126
  await access(command.args[0], constants.R_OK);
124
127
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windsor-bot",
3
- "version": "0.2.12",
3
+ "version": "0.2.14",
4
4
  "description": "Self-hosted Discord bot automation for household list and todo printing",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",