n8n-nodes-labelzoom 0.1.2 → 1.1.0

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # n8n-nodes-labelzoom
2
2
 
3
3
  An [n8n](https://n8n.io) community node for [LabelZoom](https://www.labelzoom.com) — convert
4
- barcode labels between ZPL, EPL, TSPL, DPL, PDF, images and XML/JSON, and print them to
4
+ barcode labels between ZPL, EPL, IPL, TSPL, DPL, SBPL, PDF, images and XML/JSON, and print them to
5
5
  cloud-connected thermal printers.
6
6
 
7
7
  The labels in a business rarely arrive in the format the printer wants. A WMS emits ZPL, a
@@ -52,17 +52,18 @@ you're ready to ship.
52
52
  | **Convert** | Convert a document between any supported source and target format |
53
53
  | **Convert Template** | Fill a Print Template with data and render it, without printing |
54
54
 
55
- Sources: `zpl` `epl` `tspl` `dpl` `xml` `json` `pdf` `png` `bmp` `gif` `jpeg` `jpg` `url`
56
- Targets: `zpl` `epl` `tspl` `dpl` `xml` `json` `pdf` `png` `bmp` `gif` `jpeg`
55
+ Sources: `zpl` `epl` `ipl` `tspl` `dpl` `sbpl` `xml` `json` `pdf` `png` `bmp` `gif` `jpeg` `jpg` `url`
56
+ Targets: `zpl` `epl` `ipl` `tspl` `dpl` `sbpl` `xml` `json` `pdf` `png` `bmp` `gif` `jpeg`
57
57
 
58
58
  `url` is a source only — post a link and LabelZoom fetches the document itself. `jpg` is an
59
59
  input spelling that normalizes to `jpeg`.
60
60
 
61
- The output is always a **binary field**, because five of the eleven targets are binary. A
61
+ The output is always a **binary field**, because five of the thirteen targets are binary. A
62
62
  decoded `text` field is added for `zpl`, `xml` and `json` as a convenience. It is deliberately
63
- *not* added for `epl`, `tspl` or `dpl`: those come back as `text/plain` but can inline raw
64
- bytes (EPL's `GW`, TSPL's `BITMAP`, DPL's leading `STX`), and decoding them to a string would
65
- corrupt any label carrying graphics.
63
+ *not* added for `epl`, `ipl`, `tspl`, `dpl` or `sbpl`: those come back as `text/plain` but can
64
+ inline raw bytes (EPL's `GW`, IPL's `STX`/`ETX` framing, TSPL's `BITMAP`, DPL's leading `STX`,
65
+ SBPL's `ESC`-prefixed commands), and decoding them to a string would corrupt any label carrying
66
+ graphics.
66
67
 
67
68
  Options cover the full parameter set — DPI, rotation, scaling, colour mode, darkness, label
68
69
  size in inches, position, PDF conversion mode and page number, ZPL image compression and
@@ -127,11 +128,11 @@ npm test
127
128
  n8n verification forbids runtime dependencies, so this node cannot call
128
129
  [`@labelzoom/sdk`](https://www.npmjs.com/package/@labelzoom/sdk) — it re-implements the
129
130
  LabelZoom wire contract by hand. To stop the two drifting apart, it runs the **same
130
- language-neutral conformance fixtures** the eight official SDKs run: 83 cases pinned from
131
+ language-neutral conformance fixtures** the eight official SDKs run: 87 cases pinned from
131
132
  `labelzoom-sdk` covering request shape, error mapping, retry policy and local validation.
132
133
 
133
134
  ```sh
134
- npm run sync-conformance # refresh test/conformance/ from the pinned SDK tag
135
+ npm run sync-conformance # refresh test/conformance/ from the pinned SDK ref
135
136
  node scripts/sync-conformance.mjs --check # verify it hasn't drifted (CI)
136
137
  ```
137
138
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "node": "n8n-nodes-base.labelZoom",
2
+ "node": "n8n-nodes-labelzoom.labelZoom",
3
3
  "nodeVersion": "1.0",
4
4
  "codexVersion": "1.0",
5
5
  "categories": ["Utility", "Development"],
@@ -1,5 +1,5 @@
1
- export declare const SOURCE_FORMATS: readonly ["zpl", "epl", "tspl", "dpl", "xml", "json", "pdf", "png", "bmp", "gif", "jpeg", "jpg", "url"];
2
- export declare const TARGET_FORMATS: readonly ["zpl", "epl", "tspl", "dpl", "xml", "json", "pdf", "png", "bmp", "gif", "jpeg"];
1
+ export declare const SOURCE_FORMATS: readonly ["zpl", "epl", "ipl", "tspl", "dpl", "sbpl", "xml", "json", "pdf", "png", "bmp", "gif", "jpeg", "jpg", "url"];
2
+ export declare const TARGET_FORMATS: readonly ["zpl", "epl", "ipl", "tspl", "dpl", "sbpl", "xml", "json", "pdf", "png", "bmp", "gif", "jpeg"];
3
3
  export type SourceFormat = (typeof SOURCE_FORMATS)[number];
4
4
  export type TargetFormat = (typeof TARGET_FORMATS)[number];
5
5
  export declare function sourceMediaType(format: string): string;
@@ -10,8 +10,10 @@ exports.formatOptions = formatOptions;
10
10
  exports.SOURCE_FORMATS = [
11
11
  'zpl',
12
12
  'epl',
13
+ 'ipl',
13
14
  'tspl',
14
15
  'dpl',
16
+ 'sbpl',
15
17
  'xml',
16
18
  'json',
17
19
  'pdf',
@@ -25,8 +27,10 @@ exports.SOURCE_FORMATS = [
25
27
  exports.TARGET_FORMATS = [
26
28
  'zpl',
27
29
  'epl',
30
+ 'ipl',
28
31
  'tspl',
29
32
  'dpl',
33
+ 'sbpl',
30
34
  'xml',
31
35
  'json',
32
36
  'pdf',
@@ -38,8 +42,10 @@ exports.TARGET_FORMATS = [
38
42
  const SOURCE_MEDIA_TYPES = {
39
43
  zpl: 'text/plain',
40
44
  epl: 'text/plain',
45
+ ipl: 'text/plain',
41
46
  tspl: 'text/plain',
42
47
  dpl: 'text/plain',
48
+ sbpl: 'text/plain',
43
49
  xml: 'application/xml',
44
50
  json: 'application/json',
45
51
  pdf: 'application/pdf',
@@ -53,8 +59,10 @@ const SOURCE_MEDIA_TYPES = {
53
59
  const TARGET_MEDIA_TYPES = {
54
60
  zpl: 'text/plain',
55
61
  epl: 'text/plain',
62
+ ipl: 'text/plain',
56
63
  tspl: 'text/plain',
57
64
  dpl: 'text/plain',
65
+ sbpl: 'text/plain',
58
66
  xml: 'application/xml',
59
67
  json: 'application/json',
60
68
  pdf: 'application/pdf',
@@ -66,8 +74,10 @@ const TARGET_MEDIA_TYPES = {
66
74
  const TARGET_EXTENSIONS = {
67
75
  zpl: 'zpl',
68
76
  epl: 'epl',
77
+ ipl: 'ipl',
69
78
  tspl: 'txt',
70
79
  dpl: 'dpl',
80
+ sbpl: 'sbpl',
71
81
  xml: 'xml',
72
82
  json: 'json',
73
83
  pdf: 'pdf',
@@ -96,8 +106,10 @@ function sourceWireToken(format) {
96
106
  const FORMAT_LABELS = {
97
107
  zpl: 'ZPL (Zebra)',
98
108
  epl: 'EPL (Eltron)',
109
+ ipl: 'IPL (Honeywell)',
99
110
  tspl: 'TSPL (TSC)',
100
111
  dpl: 'DPL (Datamax)',
112
+ sbpl: 'SBPL (SATO)',
101
113
  xml: 'XML (LBXML)',
102
114
  json: 'JSON (LabelZoom)',
103
115
  pdf: 'PDF',
@@ -1 +1 @@
1
- {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../../nodes/LabelZoom/shared/formats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../../../nodes/LabelZoom/shared/formats.ts"],"names":[],"mappings":"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"}
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-labelzoom",
3
- "version": "0.1.2",
3
+ "version": "1.1.0",
4
4
  "description": "n8n community node for LabelZoom \u2014 convert barcode labels between ZPL, EPL, TSPL, DPL, PDF and images, and print them to cloud-connected thermal printers",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.labelzoom.com",
@@ -29,7 +29,7 @@
29
29
  "url": "https://github.com/labelzoom/labelzoom-n8n-node/issues"
30
30
  },
31
31
  "engines": {
32
- "node": ">=20.19"
32
+ "node": ">=24.0.0"
33
33
  },
34
34
  "scripts": {
35
35
  "build": "n8n-node build",
@@ -57,12 +57,12 @@
57
57
  ]
58
58
  },
59
59
  "devDependencies": {
60
- "@n8n/node-cli": "^0.46.1",
60
+ "@n8n/node-cli": "^0.48.2",
61
61
  "@types/node": "^22.15.0",
62
62
  "eslint": "9.39.4",
63
63
  "prettier": "3.9.6",
64
64
  "typescript": "6.0.3",
65
- "vitest": "^4.1.11"
65
+ "vitest": "^5.0.0"
66
66
  },
67
67
  "peerDependencies": {
68
68
  "n8n-workflow": "*"