Vm2: рдПрдХ рд╕рд░рдгреА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЕрдЬреАрдм рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИред [рдиреЛрдб.рдЬреЗрдПрд╕ 10.xx]

рдХреЛ рдирд┐рд░реНрдорд┐рдд 7 рдЕрдкреНрд░реИрд▓ 2019  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: patriksimek/vm2

рдЗрд╕ рддрд░рд╣ рдХреЛрдб:

const { VM } = require('vm2')
const vm = new VM()
const res = vm.run('[1, 2, 3]')
console.log(res)

рдкреНрд░рд┐рдВрдЯ:
[ 1, 2, 3, '0': 1, '1': 2, '2': 3 ]
рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдмрдЧ рдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ?

VM рд░рд┐рдЯрд░реНрди рдореЗрдВ NodeJS рдХрд╛ рдирд┐рд░реНрдорд╛рдг:
[1, 2, 3]
рдЬреИрд╕рд╛ рд╕реЛрдЪрд╛ рдерд╛ред

bug confirmed help wanted wontfix

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рд╣рд╛рдп @patriksimek , рдореИрдВ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИред рдпрд╣ VM рдФрд░ NodeVM рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, NodeVM рдХреЗ рдЕрдВрджрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ - рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛- рдпрд╣ рдХрд░рддрд╛ рд╣реИ:

const array = [];
array.push({a: 1, b: 2});
console.log(array);

рдФрд░ рдкреНрд░рд┐рдВрдЯ:

[{a: 1, b: 2}, '0': {a: 1, b: 2}]

NodeVM рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ inherit ред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рд╣реИ рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рд╕рднреА 10 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рд╣рд╛рдп @patriksimek , рдореИрдВ рдЖрдкрдХреЛ рдореБрдЦреНрдп рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд░рддрд╛ рд╣реВрдВред рдореЗрд░реЗ рдкрд╛рд╕ рднреА рдпрд╣ рдореБрджреНрджрд╛ рд╣реИред рдпрд╣ VM рдФрд░ NodeVM рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, NodeVM рдХреЗ рдЕрдВрджрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдирд┐рдкреЗрдЯ рд╣реИ - рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛- рдпрд╣ рдХрд░рддрд╛ рд╣реИ:

const array = [];
array.push({a: 1, b: 2});
console.log(array);

рдФрд░ рдкреНрд░рд┐рдВрдЯ:

[{a: 1, b: 2}, '0': {a: 1, b: 2}]

NodeVM рд╕реЗрдЯрдЕрдк рдореЗрдВ рдХрдВрд╕реЛрд▓ inherit ред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрд░рд╛рдЧ рд╣реИ рдЬреЛ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред

рдпрд╣ рд╡рд╕реНрддреБ рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдирд┐рдХрд▓реАред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ Decontextify.instance рдореЗрдВ рдХрд╣реАрдВ рдЧрд▓рдд рд╡рд╕реНрддреБ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред

рдиреЛрдб v8.9.3 рдФрд░ рдиреЛрдб v8.10.0 рдХреЗ рддрд╣рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдиреЛрдб v10.14.2 . рдХреЗ рддрд╣рдд рд╕рдорд╕реНрдпрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рд╣реИ

рдЗрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЗрд╕ рдмрдЧ рдХреЛ рдиреАрдЪреЗ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реИ, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдерд╛ред рдЕрдВрддрддрдГ рдПрдХ рдмрд╣реБрдд рд╣реА рдиреНрдпреВрдирддрдо рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рджреЗрдЦреЛ, vm2 рдЕрдкрд░рд╛рдзреА рдерд╛ред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ for of рд▓реВрдк рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд╡рд┐рд╖рдо рдЪреАрдЬреЗрдВ рднреА рдХрд░рддрд╛ рд╣реИред

рдиреЛрдб v8.9.3 рдФрд░ рдиреЛрдб v8.10.0 рдХреЗ рддрд╣рдд рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред
рдиреЛрдб v10.14.2 . рдХреЗ рддрд╣рдд рд╕рдорд╕реНрдпрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ рд╣реИ

рдореИрдВ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ v.8.10.0 рдФрд░ v10.14.2 рдореЗрдВ рдбреАрдмрдЧрд░ рдЪрд▓рд╛рдПрдВ рдФрд░ рдХреЛрдб рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдвреВрдВрдвреЗрдВ рдЬрд╣рд╛рдВ рдЖрдЙрдЯрдкреБрдЯ рдЕрд▓рдЧ рд╣реЛред

рдпрд╣ рдПрдХ Proxy.handler.ownKeys() рдЯреНрд░реИрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реБрдЖ рдерд╛ред рдпрд╣ рдиреЛрдб рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдереА рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ v12.

рдХреНрдпрд╛ рдЖрдк рдиреЛрдб рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдлреЙрд▓рдмреИрдХ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ?

рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдиреЛрдб 10 рдкрд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА рдФрд░ рдХреЙрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдиреЛрдб 10 рдкрд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдХреЙрд▓рд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рд╣реЛрдЧреА рдФрд░ рдХреЙрд▓рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕ рдЬреЗрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдпрд╛ рд╕реАрдПрд▓рдЖрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд╛рдВрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдб рдмрд╣реБрдд рдХрдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореИрдВ console рдХреЛ vm._context рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ
vm._context.console = console
vm.run("console.log([1,2,3])")
рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ!

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

CapacitorSet picture CapacitorSet  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ozsay picture ozsay  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vshymanskyy picture vshymanskyy  ┬╖  8рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

XmiliaH picture XmiliaH  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

somebody1234 picture somebody1234  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ