├── .editorconfig ├── .gitignore ├── .npmignore ├── .travis.yml ├── CHANGELOG.md ├── README.md ├── bin └── jdf ├── doc ├── a_tool_api.md ├── a_tool_build.md ├── a_tool_command.md ├── a_tool_config.md ├── a_tool_csssprite.md ├── a_tool_develop.md ├── a_tool_format.md ├── a_tool_lint.md ├── a_tool_server.md ├── core_css_optimize.md ├── core_plugin.md ├── core_smarty.md ├── core_tpl.md ├── core_vm.md ├── core_widget.md └── core_widgetoutputname.md ├── index.js ├── lib ├── VFS │ ├── VirtualFile.js │ ├── VirtualFileSystem.js │ └── fileType.js ├── base64.js ├── build.js ├── buildCss.js ├── buildES6.js ├── buildHTML.js ├── buildHTMLDeep.js ├── buildOutputWidget.js ├── buildWidget.js ├── compresser │ ├── compress.js │ ├── compressScheduler.js │ ├── compressWorker.js │ ├── minifyCss.js │ ├── minifyHtml.js │ ├── minifyImage.js │ └── minifyJs.js ├── concat.js ├── config.js ├── cssSprite.js ├── fileFormat.js ├── fileLint.js ├── htmlAst │ ├── index.js │ ├── nodeHandler.js │ └── walk.js ├── install │ ├── componentsData.js │ └── index.js ├── jdf.js ├── jsAst │ ├── index.js │ ├── seajsReplace.js │ └── typeCheck.js ├── output.js ├── pluginCore │ └── index.js ├── server │ ├── browserSyncServer.js │ ├── genPort.js │ ├── injector │ │ ├── dumpSeajsCombo.js │ │ └── index.js │ ├── middlewareLocal.js │ ├── middlewareVFS │ │ ├── envConfig.js │ │ ├── index.js │ │ ├── middlewareVFS.js │ │ ├── res.404.js │ │ ├── res.comboContent.js │ │ ├── res.dirView │ │ │ ├── dir.css.js │ │ │ ├── dir.html.js │ │ │ ├── iconfont.eot │ │ │ ├── iconfont.svg │ │ │ ├── iconfont.ttf │ │ │ ├── iconfont.woff │ │ │ ├── index.js │ │ │ └── res.dirView.js │ │ ├── res.file.js │ │ ├── tpl.footer.js │ │ └── view.js │ ├── mime.js │ └── openurl.js ├── urlReplace.js ├── vm.js └── widget.js ├── package.json ├── template ├── config.json ├── css │ └── style.scss └── html │ └── index.html └── test ├── buildOutputWidget.js ├── buildWidget.js ├── buildcss.js ├── config ├── config.json └── index.js ├── index.js ├── urlReplace ├── comboUrlPath │ ├── case01.html │ └── result01.html └── index.js └── vfs ├── files ├── QR.jpg ├── css.css ├── doc.docx ├── es6.js ├── importless.less ├── js.js ├── less.less ├── sass.scss └── text.txt └── virtual-file.js /.editorconfig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/.editorconfig -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/.gitignore -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | npm-debug.log 3 | .svn 4 | .DS_Store 5 | test 6 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/.travis.yml -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/README.md -------------------------------------------------------------------------------- /bin/jdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/bin/jdf -------------------------------------------------------------------------------- /doc/a_tool_api.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_api.md -------------------------------------------------------------------------------- /doc/a_tool_build.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_build.md -------------------------------------------------------------------------------- /doc/a_tool_command.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_command.md -------------------------------------------------------------------------------- /doc/a_tool_config.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_config.md -------------------------------------------------------------------------------- /doc/a_tool_csssprite.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_csssprite.md -------------------------------------------------------------------------------- /doc/a_tool_develop.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_develop.md -------------------------------------------------------------------------------- /doc/a_tool_format.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_format.md -------------------------------------------------------------------------------- /doc/a_tool_lint.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_lint.md -------------------------------------------------------------------------------- /doc/a_tool_server.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/a_tool_server.md -------------------------------------------------------------------------------- /doc/core_css_optimize.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_css_optimize.md -------------------------------------------------------------------------------- /doc/core_plugin.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_plugin.md -------------------------------------------------------------------------------- /doc/core_smarty.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_smarty.md -------------------------------------------------------------------------------- /doc/core_tpl.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_tpl.md -------------------------------------------------------------------------------- /doc/core_vm.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_vm.md -------------------------------------------------------------------------------- /doc/core_widget.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_widget.md -------------------------------------------------------------------------------- /doc/core_widgetoutputname.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/doc/core_widgetoutputname.md -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/index.js -------------------------------------------------------------------------------- /lib/VFS/VirtualFile.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/VFS/VirtualFile.js -------------------------------------------------------------------------------- /lib/VFS/VirtualFileSystem.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/VFS/VirtualFileSystem.js -------------------------------------------------------------------------------- /lib/VFS/fileType.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/VFS/fileType.js -------------------------------------------------------------------------------- /lib/base64.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/base64.js -------------------------------------------------------------------------------- /lib/build.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/build.js -------------------------------------------------------------------------------- /lib/buildCss.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildCss.js -------------------------------------------------------------------------------- /lib/buildES6.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildES6.js -------------------------------------------------------------------------------- /lib/buildHTML.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildHTML.js -------------------------------------------------------------------------------- /lib/buildHTMLDeep.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildHTMLDeep.js -------------------------------------------------------------------------------- /lib/buildOutputWidget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildOutputWidget.js -------------------------------------------------------------------------------- /lib/buildWidget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/buildWidget.js -------------------------------------------------------------------------------- /lib/compresser/compress.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/compress.js -------------------------------------------------------------------------------- /lib/compresser/compressScheduler.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/compressScheduler.js -------------------------------------------------------------------------------- /lib/compresser/compressWorker.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/compressWorker.js -------------------------------------------------------------------------------- /lib/compresser/minifyCss.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/minifyCss.js -------------------------------------------------------------------------------- /lib/compresser/minifyHtml.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/minifyHtml.js -------------------------------------------------------------------------------- /lib/compresser/minifyImage.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/minifyImage.js -------------------------------------------------------------------------------- /lib/compresser/minifyJs.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/compresser/minifyJs.js -------------------------------------------------------------------------------- /lib/concat.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/concat.js -------------------------------------------------------------------------------- /lib/config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/config.js -------------------------------------------------------------------------------- /lib/cssSprite.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/cssSprite.js -------------------------------------------------------------------------------- /lib/fileFormat.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/fileFormat.js -------------------------------------------------------------------------------- /lib/fileLint.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/fileLint.js -------------------------------------------------------------------------------- /lib/htmlAst/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/htmlAst/index.js -------------------------------------------------------------------------------- /lib/htmlAst/nodeHandler.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/htmlAst/nodeHandler.js -------------------------------------------------------------------------------- /lib/htmlAst/walk.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/htmlAst/walk.js -------------------------------------------------------------------------------- /lib/install/componentsData.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/install/componentsData.js -------------------------------------------------------------------------------- /lib/install/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/install/index.js -------------------------------------------------------------------------------- /lib/jdf.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/jdf.js -------------------------------------------------------------------------------- /lib/jsAst/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/jsAst/index.js -------------------------------------------------------------------------------- /lib/jsAst/seajsReplace.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/jsAst/seajsReplace.js -------------------------------------------------------------------------------- /lib/jsAst/typeCheck.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/jsAst/typeCheck.js -------------------------------------------------------------------------------- /lib/output.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/output.js -------------------------------------------------------------------------------- /lib/pluginCore/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/pluginCore/index.js -------------------------------------------------------------------------------- /lib/server/browserSyncServer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/browserSyncServer.js -------------------------------------------------------------------------------- /lib/server/genPort.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/genPort.js -------------------------------------------------------------------------------- /lib/server/injector/dumpSeajsCombo.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/injector/dumpSeajsCombo.js -------------------------------------------------------------------------------- /lib/server/injector/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/injector/index.js -------------------------------------------------------------------------------- /lib/server/middlewareLocal.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareLocal.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/envConfig.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | webRoot: '' 5 | } 6 | -------------------------------------------------------------------------------- /lib/server/middlewareVFS/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/index.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/middlewareVFS.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/middlewareVFS.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.404.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.404.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.comboContent.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.comboContent.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/dir.css.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/dir.css.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/dir.html.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/dir.html.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/iconfont.eot -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/iconfont.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/iconfont.svg -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/iconfont.ttf -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/iconfont.woff -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/index.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.dirView/res.dirView.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.dirView/res.dirView.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/res.file.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/res.file.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/tpl.footer.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/tpl.footer.js -------------------------------------------------------------------------------- /lib/server/middlewareVFS/view.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/middlewareVFS/view.js -------------------------------------------------------------------------------- /lib/server/mime.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/mime.js -------------------------------------------------------------------------------- /lib/server/openurl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/server/openurl.js -------------------------------------------------------------------------------- /lib/urlReplace.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/urlReplace.js -------------------------------------------------------------------------------- /lib/vm.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/vm.js -------------------------------------------------------------------------------- /lib/widget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/lib/widget.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/package.json -------------------------------------------------------------------------------- /template/config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/template/config.json -------------------------------------------------------------------------------- /template/css/style.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /template/html/index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/template/html/index.html -------------------------------------------------------------------------------- /test/buildOutputWidget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/buildOutputWidget.js -------------------------------------------------------------------------------- /test/buildWidget.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/buildWidget.js -------------------------------------------------------------------------------- /test/buildcss.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/buildcss.js -------------------------------------------------------------------------------- /test/config/config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/config/config.json -------------------------------------------------------------------------------- /test/config/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/config/index.js -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/index.js -------------------------------------------------------------------------------- /test/urlReplace/comboUrlPath/case01.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/urlReplace/comboUrlPath/case01.html -------------------------------------------------------------------------------- /test/urlReplace/comboUrlPath/result01.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/urlReplace/comboUrlPath/result01.html -------------------------------------------------------------------------------- /test/urlReplace/index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/urlReplace/index.js -------------------------------------------------------------------------------- /test/vfs/files/QR.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/files/QR.jpg -------------------------------------------------------------------------------- /test/vfs/files/css.css: -------------------------------------------------------------------------------- 1 | .css { 2 | display: flex; 3 | } -------------------------------------------------------------------------------- /test/vfs/files/doc.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/files/doc.docx -------------------------------------------------------------------------------- /test/vfs/files/es6.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let vars = 'convert by Babel'; 4 | -------------------------------------------------------------------------------- /test/vfs/files/importless.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/files/importless.less -------------------------------------------------------------------------------- /test/vfs/files/js.js: -------------------------------------------------------------------------------- 1 | console.log('read by VFS'); 2 | -------------------------------------------------------------------------------- /test/vfs/files/less.less: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/files/less.less -------------------------------------------------------------------------------- /test/vfs/files/sass.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/files/sass.scss -------------------------------------------------------------------------------- /test/vfs/files/text.txt: -------------------------------------------------------------------------------- 1 | 这个文件不会被VFS读取。 2 | This file will not be read by VFS. -------------------------------------------------------------------------------- /test/vfs/virtual-file.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jdf2e/jdf/HEAD/test/vfs/virtual-file.js --------------------------------------------------------------------------------