n8n-nodes-resolve-mac-address 0.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 ADDED
@@ -0,0 +1,12 @@
1
+ # n8n-nodes-resolve-mac-address
2
+
3
+ Resolve a local-network hostname or IPv4 address to a MAC address from n8n.
4
+
5
+ ## Parameters
6
+
7
+ - **Host**: Hostname or IPv4 address to resolve.
8
+ - **Probe Host**: Sends one ping before reading the neighbor table. This can populate the ARP cache.
9
+ - **Probe Timeout**: Milliseconds to wait for the probe command.
10
+ - **Not Found Behavior**: Choose whether missing MAC addresses throw an error or return a `notFound` status.
11
+
12
+ This node depends on the operating system neighbor table. It works for hosts visible on the same local network segment and doesn't resolve MAC addresses across routers.
@@ -0,0 +1,5 @@
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class ResolveMacAddress implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ResolveMacAddress = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ const promises_1 = require("node:dns/promises");
6
+ const node_net_1 = require("node:net");
7
+ const n8n_workflow_1 = require("n8n-workflow");
8
+ const macAddressPattern = /\b(?:[0-9a-f]{2}[:-]){5}[0-9a-f]{2}\b/i;
9
+ function normalizeMacAddress(macAddress) {
10
+ return macAddress.replace(/-/g, ':').toUpperCase();
11
+ }
12
+ function parseMacAddress(output) {
13
+ const match = output.match(macAddressPattern);
14
+ return match ? normalizeMacAddress(match[0]) : undefined;
15
+ }
16
+ function runCommand(command, args, timeoutMs) {
17
+ return new Promise((resolve, reject) => {
18
+ (0, node_child_process_1.execFile)(command, args, {
19
+ timeout: timeoutMs,
20
+ windowsHide: true,
21
+ }, (error, stdout, stderr) => {
22
+ if (error) {
23
+ reject(error);
24
+ return;
25
+ }
26
+ resolve({ stdout, stderr });
27
+ });
28
+ });
29
+ }
30
+ async function resolveIpv4Address(host) {
31
+ const trimmedHost = host.trim();
32
+ if ((0, node_net_1.isIP)(trimmedHost) === 4) {
33
+ return trimmedHost;
34
+ }
35
+ const result = await (0, promises_1.lookup)(trimmedHost, { family: 4 });
36
+ return result.address;
37
+ }
38
+ async function probeHost(ipAddress, timeoutMs) {
39
+ const timeoutSeconds = Math.max(1, Math.ceil(timeoutMs / 1000));
40
+ if (process.platform === 'win32') {
41
+ await runCommand('ping', ['-n', '1', '-w', String(timeoutMs), ipAddress], timeoutMs + 1000);
42
+ return;
43
+ }
44
+ await runCommand('ping', ['-c', '1', '-W', String(timeoutSeconds), ipAddress], timeoutMs + 1000);
45
+ }
46
+ async function readNeighborTable(ipAddress, timeoutMs) {
47
+ const outputs = [];
48
+ if (process.platform === 'win32') {
49
+ const result = await runCommand('arp', ['-a', ipAddress], timeoutMs);
50
+ return `${result.stdout}\n${result.stderr}`;
51
+ }
52
+ if (process.platform === 'linux') {
53
+ try {
54
+ const result = await runCommand('ip', ['neigh', 'show', ipAddress], timeoutMs);
55
+ outputs.push(result.stdout, result.stderr);
56
+ }
57
+ catch {
58
+ // Fall back to arp below.
59
+ }
60
+ }
61
+ try {
62
+ const result = await runCommand('arp', ['-n', ipAddress], timeoutMs);
63
+ outputs.push(result.stdout, result.stderr);
64
+ }
65
+ catch {
66
+ if (outputs.length === 0) {
67
+ throw new Error('Unable to read the OS neighbor table with ip neigh or arp.');
68
+ }
69
+ }
70
+ return outputs.join('\n');
71
+ }
72
+ class ResolveMacAddress {
73
+ description = {
74
+ displayName: 'Resolve MAC Address',
75
+ name: 'resolveMacAddress',
76
+ icon: 'file:resolveMacAddress.svg',
77
+ group: ['transform'],
78
+ version: 1,
79
+ subtitle: '={{$parameter["host"]}}',
80
+ description: 'Resolve a local-network hostname or IPv4 address to a MAC address',
81
+ defaults: {
82
+ name: 'Resolve MAC Address',
83
+ },
84
+ inputs: [n8n_workflow_1.NodeConnectionTypes.Main],
85
+ outputs: [n8n_workflow_1.NodeConnectionTypes.Main],
86
+ usableAsTool: true,
87
+ properties: [
88
+ {
89
+ displayName: 'Host',
90
+ name: 'host',
91
+ type: 'string',
92
+ default: '',
93
+ placeholder: 'server.local or 192.168.1.20',
94
+ required: true,
95
+ description: 'Hostname or IPv4 address to resolve',
96
+ },
97
+ {
98
+ displayName: 'Probe Host',
99
+ name: 'probeHost',
100
+ type: 'boolean',
101
+ default: true,
102
+ description: 'Whether to send one ping before reading the neighbor table',
103
+ },
104
+ {
105
+ displayName: 'Probe Timeout',
106
+ name: 'probeTimeoutMs',
107
+ type: 'number',
108
+ default: 1000,
109
+ typeOptions: {
110
+ minValue: 100,
111
+ maxValue: 60000,
112
+ },
113
+ description: 'Milliseconds to wait for the probe command',
114
+ },
115
+ {
116
+ displayName: 'Not Found Behavior',
117
+ name: 'notFoundBehavior',
118
+ type: 'options',
119
+ options: [
120
+ {
121
+ name: 'Throw Error',
122
+ value: 'throw',
123
+ },
124
+ {
125
+ name: 'Return Not Found Status',
126
+ value: 'returnStatus',
127
+ },
128
+ ],
129
+ default: 'throw',
130
+ description: 'What to do when the MAC address is not found in the neighbor table',
131
+ },
132
+ ],
133
+ };
134
+ async execute() {
135
+ const items = this.getInputData();
136
+ const returnData = [];
137
+ for (let itemIndex = 0; itemIndex < items.length; itemIndex += 1) {
138
+ const host = this.getNodeParameter('host', itemIndex);
139
+ const shouldProbeHost = this.getNodeParameter('probeHost', itemIndex);
140
+ const probeTimeoutMs = this.getNodeParameter('probeTimeoutMs', itemIndex);
141
+ const notFoundBehavior = this.getNodeParameter('notFoundBehavior', itemIndex);
142
+ try {
143
+ const ipAddress = await resolveIpv4Address(host);
144
+ let probeError;
145
+ if (shouldProbeHost) {
146
+ try {
147
+ await probeHost(ipAddress, probeTimeoutMs);
148
+ }
149
+ catch (error) {
150
+ probeError = error instanceof Error ? error.message : String(error);
151
+ }
152
+ }
153
+ const neighborTable = await readNeighborTable(ipAddress, probeTimeoutMs);
154
+ const macAddress = parseMacAddress(neighborTable);
155
+ if (!macAddress && notFoundBehavior === 'throw') {
156
+ throw new Error(`No MAC address found for ${host} (${ipAddress}). The host must be visible on the same local network.`);
157
+ }
158
+ returnData.push({
159
+ json: {
160
+ ...items[itemIndex].json,
161
+ resolveMacAddress: {
162
+ host,
163
+ ipAddress,
164
+ macAddress,
165
+ status: macAddress ? 'resolved' : 'notFound',
166
+ probeError,
167
+ },
168
+ },
169
+ pairedItem: {
170
+ item: itemIndex,
171
+ },
172
+ });
173
+ }
174
+ catch (error) {
175
+ if (this.continueOnFail()) {
176
+ returnData.push({
177
+ json: {
178
+ ...items[itemIndex].json,
179
+ error: error instanceof Error ? error.message : String(error),
180
+ },
181
+ pairedItem: {
182
+ item: itemIndex,
183
+ },
184
+ });
185
+ continue;
186
+ }
187
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex });
188
+ }
189
+ }
190
+ return [returnData];
191
+ }
192
+ }
193
+ exports.ResolveMacAddress = ResolveMacAddress;
194
+ //# sourceMappingURL=ResolveMacAddress.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResolveMacAddress.node.js","sourceRoot":"","sources":["../../../nodes/ResolveMacAddress/ResolveMacAddress.node.ts"],"names":[],"mappings":";;;AAAA,2DAA8C;AAC9C,gDAA2C;AAC3C,uCAAgC;AAOhC,+CAAuE;AAOvE,MAAM,iBAAiB,GAAG,wCAAwC,CAAC;AAEnE,SAAS,mBAAmB,CAAC,UAAkB;IAC7C,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,MAAc;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAE9C,OAAO,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,SAAiB;IACpE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAA,6BAAQ,EACN,OAAO,EACP,IAAI,EACJ;YACE,OAAO,EAAE,SAAS;YAClB,WAAW,EAAE,IAAI;SAClB,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YAED,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAAY;IAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAEhC,IAAI,IAAA,eAAI,EAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAM,EAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAExD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,SAAiB,EAAE,SAAiB;IAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IAED,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,SAAiB;IACnE,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QACrE,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAa,iBAAiB;IAC5B,WAAW,GAAyB;QAClC,WAAW,EAAE,qBAAqB;QAClC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,4BAA4B;QAClC,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,mEAAmE;QAChF,QAAQ,EAAE;YACR,IAAI,EAAE,qBAAqB;SAC5B;QACD,MAAM,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QAClC,OAAO,EAAE,CAAC,kCAAmB,CAAC,IAAI,CAAC;QACnC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE;YACV;gBACE,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,8BAA8B;gBAC3C,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,qCAAqC;aACnD;YACD;gBACE,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,4DAA4D;aAC1E;YACD;gBACE,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE;oBACX,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE,KAAK;iBAChB;gBACD,WAAW,EAAE,4CAA4C;aAC1D;YACD;gBACE,WAAW,EAAE,oBAAoB;gBACjC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE,OAAO;qBACf;oBACD;wBACE,IAAI,EAAE,yBAAyB;wBAC/B,KAAK,EAAE,cAAc;qBACtB;iBACF;gBACD,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,oEAAoE;aAClF;SACF;KACF,CAAC;IAEF,KAAK,CAAC,OAAO;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,UAAU,GAAyB,EAAE,CAAC;QAE5C,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAW,CAAC;YAChE,MAAM,eAAe,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,SAAS,CAAY,CAAC;YACjF,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,SAAS,CAAW,CAAC;YACpF,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,SAAS,CAAW,CAAC;YAExF,IAAI,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACjD,IAAI,UAA8B,CAAC;gBAEnC,IAAI,eAAe,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACH,MAAM,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;oBAC7C,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,UAAU,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;gBAED,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBACzE,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;gBAElD,IAAI,CAAC,UAAU,IAAI,gBAAgB,KAAK,OAAO,EAAE,CAAC;oBAChD,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,KAAK,SAAS,wDAAwD,CACvG,CAAC;gBACJ,CAAC;gBAED,UAAU,CAAC,IAAI,CAAC;oBACd,IAAI,EAAE;wBACJ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI;wBACxB,iBAAiB,EAAE;4BACjB,IAAI;4BACJ,SAAS;4BACT,UAAU;4BACV,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;4BAC5C,UAAU;yBACX;qBACF;oBACD,UAAU,EAAE;wBACV,IAAI,EAAE,SAAS;qBAChB;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC1B,UAAU,CAAC,IAAI,CAAC;wBACd,IAAI,EAAE;4BACJ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI;4BACxB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;yBAC9D;wBACD,UAAU,EAAE;4BACV,IAAI,EAAE,SAAS;yBAChB;qBACF,CAAC,CAAC;oBACH,SAAS;gBACX,CAAC;gBAED,MAAM,IAAI,iCAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAc,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;CACF;AAjID,8CAiIC"}
@@ -0,0 +1,15 @@
1
+ {
2
+ "node": "n8n-nodes-base.resolveMacAddress",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": [
6
+ "Utility"
7
+ ],
8
+ "resources": {
9
+ "primaryDocumentation": [
10
+ {
11
+ "url": "https://github.com/Sygmei/n8n-nodes/tree/main/packages/resolve-mac-address"
12
+ }
13
+ ]
14
+ }
15
+ }
@@ -0,0 +1,29 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" role="img" aria-labelledby="title">
2
+ <title id="title">Resolve MAC Address</title>
3
+ <rect width="100" height="100" rx="18" fill="#1f6feb"/>
4
+ <path
5
+ d="M18 24h64a6 6 0 0 1 6 6v29a6 6 0 0 1-6 6H59v10H41V65H18a6 6 0 0 1-6-6V30a6 6 0 0 1 6-6z"
6
+ fill="#ffffff"
7
+ />
8
+ <path
9
+ d="M27 39h7M43 39h7M59 39h7M35 50h7M51 50h7M67 50h7"
10
+ fill="none"
11
+ stroke="#1f6feb"
12
+ stroke-width="5"
13
+ stroke-linecap="round"
14
+ />
15
+ <path
16
+ d="M33 82h34"
17
+ fill="none"
18
+ stroke="#ffffff"
19
+ stroke-width="7"
20
+ stroke-linecap="round"
21
+ />
22
+ <path
23
+ d="M72 20v-8M78 20v-8M84 20v-8"
24
+ fill="none"
25
+ stroke="#ffffff"
26
+ stroke-width="4"
27
+ stroke-linecap="square"
28
+ />
29
+ </svg>
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "n8n-nodes-resolve-mac-address",
3
+ "version": "0.1.0",
4
+ "description": "n8n community node to resolve local-network hosts to MAC addresses.",
5
+ "license": "MIT",
6
+ "author": {
7
+ "name": "Sygmei"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+ssh://git@github.com/Sygmei/n8n-nodes.git",
12
+ "directory": "packages/resolve-mac-address"
13
+ },
14
+ "homepage": "https://github.com/Sygmei/n8n-nodes/tree/main/packages/resolve-mac-address",
15
+ "bugs": {
16
+ "url": "https://github.com/Sygmei/n8n-nodes/issues"
17
+ },
18
+ "keywords": [
19
+ "n8n-community-node-package",
20
+ "n8n",
21
+ "arp",
22
+ "mac-address",
23
+ "network"
24
+ ],
25
+ "main": "dist/nodes/ResolveMacAddress/ResolveMacAddress.node.js",
26
+ "types": "dist/nodes/ResolveMacAddress/ResolveMacAddress.node.d.ts",
27
+ "files": [
28
+ "dist",
29
+ "README.md"
30
+ ],
31
+ "scripts": {
32
+ "build": "node ../../scripts/clean-dist.mjs && tsc -p tsconfig.json && node ../../scripts/copy-node-assets.mjs",
33
+ "check": "tsc -p tsconfig.json --noEmit",
34
+ "prepack": "npm run build"
35
+ },
36
+ "n8n": {
37
+ "n8nNodesApiVersion": 1,
38
+ "credentials": [],
39
+ "nodes": [
40
+ "dist/nodes/ResolveMacAddress/ResolveMacAddress.node.js"
41
+ ]
42
+ },
43
+ "devDependencies": {
44
+ "@types/node": "^24.10.1",
45
+ "n8n-workflow": "^1.101.0",
46
+ "typescript": "^5.9.3"
47
+ },
48
+ "peerDependencies": {
49
+ "n8n-workflow": "^1.101.0"
50
+ }
51
+ }