mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
fix(Code Node): Install python modules always in a user-writable folder (#6568)
* upgrade pyodide * install pyodide modules to a custom user-writable path * in `augmentObject` `newData` is never undefined
This commit is contained in:
committed by
GitHub
parent
071e56f7fd
commit
bf351243df
@@ -133,7 +133,11 @@ export function augmentObject<T extends object>(data: T): T {
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
has(target, key) {
|
||||
if (deletedProperties.indexOf(key) !== -1) return false;
|
||||
const newKeys = Object.keys(newData);
|
||||
return Reflect.has(newKeys.length ? newData : target, key);
|
||||
},
|
||||
ownKeys(target) {
|
||||
const originalKeys = Reflect.ownKeys(target);
|
||||
const newKeys = Object.keys(newData);
|
||||
|
||||
@@ -671,6 +671,7 @@ interface JsonHelperFunctions {
|
||||
|
||||
export interface FileSystemHelperFunctions {
|
||||
createReadStream(path: PathLike): Promise<Readable>;
|
||||
getStoragePath(): string;
|
||||
}
|
||||
|
||||
export interface BinaryHelperFunctions {
|
||||
|
||||
@@ -51,6 +51,9 @@ export function create(
|
||||
get(target, name, receiver) {
|
||||
return Reflect.get(target, name, receiver);
|
||||
},
|
||||
has(target, key) {
|
||||
return Reflect.has(target, key);
|
||||
},
|
||||
set(target, name, value) {
|
||||
if (parent === undefined) {
|
||||
// If no parent is given mark current data as changed
|
||||
|
||||
@@ -146,6 +146,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
if (Reflect.ownKeys(target).length === 0) {
|
||||
// Target object did not get set yet
|
||||
@@ -178,6 +179,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return Reflect.ownKeys(target);
|
||||
},
|
||||
@@ -202,6 +204,7 @@ export class WorkflowDataProxy {
|
||||
const node = this.workflow.nodes[nodeName];
|
||||
|
||||
return new Proxy(node.parameters, {
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return Reflect.ownKeys(target);
|
||||
},
|
||||
@@ -384,6 +387,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{ binary: undefined, data: undefined, json: undefined },
|
||||
{
|
||||
has: () => true,
|
||||
get(target, name, receiver) {
|
||||
if (name === 'isProxy') return true;
|
||||
name = name.toString();
|
||||
@@ -461,6 +465,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
get(target, name, receiver) {
|
||||
if (name === 'isProxy') return true;
|
||||
|
||||
@@ -491,6 +496,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return allowedValues;
|
||||
},
|
||||
@@ -538,6 +544,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return allowedValues;
|
||||
},
|
||||
@@ -580,6 +587,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
get(target, name, receiver) {
|
||||
if (name === 'isProxy') return true;
|
||||
|
||||
@@ -950,6 +958,7 @@ export class WorkflowDataProxy {
|
||||
return new Proxy(
|
||||
{},
|
||||
{
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return [
|
||||
'pairedItem',
|
||||
@@ -1073,6 +1082,7 @@ export class WorkflowDataProxy {
|
||||
},
|
||||
|
||||
$input: new Proxy({} as ProxyInput, {
|
||||
has: () => true,
|
||||
ownKeys(target) {
|
||||
return ['all', 'context', 'first', 'item', 'last', 'params'];
|
||||
},
|
||||
@@ -1238,6 +1248,7 @@ export class WorkflowDataProxy {
|
||||
};
|
||||
|
||||
return new Proxy(base, {
|
||||
has: () => true,
|
||||
get(target, name, receiver) {
|
||||
if (name === 'isProxy') return true;
|
||||
|
||||
|
||||
@@ -557,5 +557,19 @@ describe('AugmentObject', () => {
|
||||
writable: true,
|
||||
});
|
||||
});
|
||||
|
||||
test('should return valid values on `has` calls', () => {
|
||||
const originalObject = {
|
||||
x: {
|
||||
y: {},
|
||||
},
|
||||
};
|
||||
const augmentedObject = augmentObject(originalObject);
|
||||
expect('y' in augmentedObject.x).toBe(true);
|
||||
expect('z' in augmentedObject.x).toBe(false);
|
||||
|
||||
augmentedObject.x.z = 5;
|
||||
expect('z' in augmentedObject.x).toBe(true);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user