]> git.kaiwu.me - njs.git/commit
Refactoring of user modules importing.
authorDmitry Volyntsev <xeioex@nginx.com>
Mon, 21 Feb 2022 14:49:38 +0000 (14:49 +0000)
committerDmitry Volyntsev <xeioex@nginx.com>
Mon, 21 Feb 2022 14:49:38 +0000 (14:49 +0000)
commit2ff8b264830da18528d6655b0e0654414cae9272
tree8fbad7ff30015b8e2270ec7b580eb6b1be0b0df6
parent2ce56247844c0964b0db927b64234fdc0fb9aa38
Refactoring of user modules importing.

Previously, user modules were compiled as as anonymous functions in a
global scope.  This is incorrect, because modules should be compiled
in their own scope.

In addition, this patch introduces HostResolveImportedModule support.
When vm->options.ops->module_loader is provided, a module lookup
and compilation is delegated to this callback.

This closes #443 issue on Github.
43 files changed:
external/njs_crypto_module.c
external/njs_fs_module.c
external/njs_query_string_module.c
nginx/ngx_http_js_module.c
nginx/ngx_stream_js_module.c
src/njs.h
src/njs_buffer.c
src/njs_builtin.c
src/njs_disassembler.c
src/njs_function.c
src/njs_generator.c
src/njs_generator.h
src/njs_module.c
src/njs_module.h
src/njs_parser.c
src/njs_parser.h
src/njs_shell.c
src/njs_variable.c
src/njs_vm.c
src/njs_vm.h
src/njs_vmcode.c
src/njs_vmcode.h
test/js/import_cyclic.t.js [new file with mode: 0644]
test/js/import_expression.t.js
test/js/import_global_ref.t.js [new file with mode: 0644]
test/js/import_global_ref_var.t.js [new file with mode: 0644]
test/js/import_order.t.js [new file with mode: 0644]
test/js/import_recursive.t.js
test/js/import_recursive_early_access.t.js [new file with mode: 0644]
test/js/import_recursive_relative.t.js [new file with mode: 0644]
test/js/import_sinking_export_default.t.js [new file with mode: 0644]
test/js/module/cyclic_a.js [new file with mode: 0644]
test/js/module/cyclic_b.js [new file with mode: 0644]
test/js/module/export_global_a.js [new file with mode: 0644]
test/js/module/http.js [new file with mode: 0644]
test/js/module/jwt.js [new file with mode: 0644]
test/js/module/lib1.js
test/js/module/order.js [new file with mode: 0644]
test/js/module/order2.js [new file with mode: 0644]
test/js/module/recursive.js [new file with mode: 0644]
test/js/module/recursive_early_access.js [new file with mode: 0644]
test/js/module/recursive_relative.js [new file with mode: 0644]
test/js/module/sinking_export_default.js [new file with mode: 0644]