mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 04:04:06 -08:00
⚡ Minor improvements to MoveBinaryData encoding
This commit is contained in:
parent
c3496845bf
commit
3db1cdbe84
|
@ -13,23 +13,32 @@ import {
|
||||||
IBinaryData,
|
IBinaryData,
|
||||||
IDataObject,
|
IDataObject,
|
||||||
INodeExecutionData,
|
INodeExecutionData,
|
||||||
|
INodePropertyOptions,
|
||||||
INodeType,
|
INodeType,
|
||||||
INodeTypeDescription,
|
INodeTypeDescription,
|
||||||
} from 'n8n-workflow';
|
} from 'n8n-workflow';
|
||||||
|
|
||||||
import * as iconv from 'iconv-lite';
|
import * as iconv from 'iconv-lite';
|
||||||
iconv.encodingExists('utf8');
|
iconv.encodingExists('utf8');
|
||||||
|
|
||||||
|
// Create options for bomAware and encoding
|
||||||
const bomAware: string[] = [];
|
const bomAware: string[] = [];
|
||||||
const encodeDecodeOptions: INodePropertyOptions[] = [];
|
const encodeDecodeOptions: INodePropertyOptions[] = [];
|
||||||
Object.keys((iconv as any).encodings).forEach(encoding => {
|
Object.keys((iconv as any).encodings).forEach(encoding => {
|
||||||
if(!(encoding.startsWith('_') || typeof (iconv as any).encodings[encoding] == 'string')) { // only encodings without direct alias or internals
|
if (!(encoding.startsWith('_') || typeof (iconv as any).encodings[encoding] == 'string')) { // only encodings without direct alias or internals
|
||||||
if((iconv as any).encodings[encoding].bomAware) {
|
if ((iconv as any).encodings[encoding].bomAware) {
|
||||||
bomAware.push(encoding);
|
bomAware.push(encoding);
|
||||||
}
|
}
|
||||||
encodeDecodeOptions.push({ name: encoding, value: encoding});
|
encodeDecodeOptions.push({ name: encoding, value: encoding });
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
encodeDecodeOptions.sort((a, b) => {
|
||||||
|
if (a.name < b.name) { return -1; }
|
||||||
|
if (a.name > b.name) { return 1; }
|
||||||
|
return 0;
|
||||||
|
});
|
||||||
|
|
||||||
export class MoveBinaryData implements INodeType {
|
export class MoveBinaryData implements INodeType {
|
||||||
description: INodeTypeDescription = {
|
description: INodeTypeDescription = {
|
||||||
displayName: 'Move Binary Data',
|
displayName: 'Move Binary Data',
|
||||||
|
@ -387,14 +396,14 @@ export class MoveBinaryData implements INodeType {
|
||||||
|
|
||||||
if (setAllData === true) {
|
if (setAllData === true) {
|
||||||
// Set the full data
|
// Set the full data
|
||||||
convertedValue = iconv.decode(Buffer.from(convertedValue, BINARY_ENCODING), encoding, {stripBOM: options.stripBOM as boolean});
|
convertedValue = iconv.decode(Buffer.from(convertedValue, BINARY_ENCODING), encoding, { stripBOM: options.stripBOM as boolean });
|
||||||
newItem.json = JSON.parse(convertedValue);
|
newItem.json = JSON.parse(convertedValue);
|
||||||
} else {
|
} else {
|
||||||
// Does get added to existing data so copy it first
|
// Does get added to existing data so copy it first
|
||||||
newItem.json = JSON.parse(JSON.stringify(item.json));
|
newItem.json = JSON.parse(JSON.stringify(item.json));
|
||||||
|
|
||||||
if (options.keepAsBase64 !== true) {
|
if (options.keepAsBase64 !== true) {
|
||||||
convertedValue = iconv.decode(Buffer.from(convertedValue, BINARY_ENCODING), encoding, {stripBOM: options.stripBOM as boolean});
|
convertedValue = iconv.decode(Buffer.from(convertedValue, BINARY_ENCODING), encoding, { stripBOM: options.stripBOM as boolean });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.jsonParse) {
|
if (options.jsonParse) {
|
||||||
|
@ -443,7 +452,7 @@ export class MoveBinaryData implements INodeType {
|
||||||
value = JSON.stringify(value);
|
value = JSON.stringify(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
value = iconv.encode(value as string, encoding, {addBOM: options.addBOM as boolean}).toString(BINARY_ENCODING);
|
value = iconv.encode(value as string, encoding, { addBOM: options.addBOM as boolean }).toString(BINARY_ENCODING);
|
||||||
}
|
}
|
||||||
|
|
||||||
const convertedValue: IBinaryData = {
|
const convertedValue: IBinaryData = {
|
||||||
|
@ -484,4 +493,4 @@ export class MoveBinaryData implements INodeType {
|
||||||
|
|
||||||
return [returnData];
|
return [returnData];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue