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:
कारतोफ्फेलस्क्रिप्ट™
2023-07-07 16:43:45 +02:00
committed by GitHub
parent 071e56f7fd
commit bf351243df
15 changed files with 98 additions and 77 deletions

View File

@@ -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);

View File

@@ -671,6 +671,7 @@ interface JsonHelperFunctions {
export interface FileSystemHelperFunctions {
createReadStream(path: PathLike): Promise<Readable>;
getStoragePath(): string;
}
export interface BinaryHelperFunctions {

View File

@@ -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

View File

@@ -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;

View File

@@ -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);
});
});
});