]> git.kaiwu.me - njs.git/commit
Added initial modules support.
authorhongzhidao <hongzhidao@gmail.com>
Sat, 2 Mar 2019 12:31:10 +0000 (20:31 +0800)
committerhongzhidao <hongzhidao@gmail.com>
Sat, 2 Mar 2019 12:31:10 +0000 (20:31 +0800)
commitf57fb7d3828cdd98107c87e879716eebfcf4a16e
tree59fa6cde028be39bbd1be47313429abf0104e35a
parent9634a15b32610931a1d69317fcd5ae7f8715d02f
Added initial modules support.

The following syntax is supported:
1) default import statements:
import lib1 from '../relative/path/lib.js';
import lib2 from '/abs/path/lib.js';
import fs from 'fs'; // built-in modules

2) default export statements:
export default {fun1, fun2, ...}; // export module object

Modules look up procedure:
1) absolute paths (start with '/') are used as is.
2) otherwise the following paths are tried:
dir + '/' + path where dir is
  a) the directory of the current file.
  b) additions paths provided with njs_vm_add_path().

This closes #91 on Github.
31 files changed:
njs/njs.c
njs/njs.h
njs/njs_builtin.c
njs/njs_core.h
njs/njs_generator.c
njs/njs_lexer.h
njs/njs_lexer_keyword.c
njs/njs_module.c
njs/njs_module.h
njs/njs_parser.c
njs/njs_parser.h
njs/njs_shell.c
njs/njs_variable.c
njs/njs_vm.c
njs/njs_vm.h
njs/test/module/empty.js [new file with mode: 0644]
njs/test/module/exception.js [new file with mode: 0644]
njs/test/module/export.js [new file with mode: 0644]
njs/test/module/export_non_default.js [new file with mode: 0644]
njs/test/module/lib1.js [new file with mode: 0644]
njs/test/module/lib2.js [new file with mode: 0644]
njs/test/module/lib3.js [new file with mode: 0644]
njs/test/module/libs/hash.js [new file with mode: 0644]
njs/test/module/loading_exception.js [new file with mode: 0644]
njs/test/module/normal.js [new file with mode: 0644]
njs/test/module/recursive.js [new file with mode: 0644]
njs/test/module/return.js [new file with mode: 0644]
njs/test/module/sub/sub1.js [new file with mode: 0644]
njs/test/module/sub/sub2.js [new file with mode: 0644]
njs/test/njs_expect_test.exp
njs/test/njs_unit_test.c