From d43b43ca781b025b9a6a54827ea3ef193972ef24 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 2 Sep 2019 17:07:11 -0400 Subject: Refactor snapshot build (#2825) Instead of using core/snapshot_creator.rs, instead two crates are introduced which allow building the snapshot during build.rs. Rollup is removed and replaced with our own bundler. This removes the Node build dependency. Modules in //js now use Deno-style imports with file extensions, rather than Node style extensionless imports. This improves incremental build time when changes are made to //js files by about 40 seconds. --- deno_typescript/amd_runtime.js | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 deno_typescript/amd_runtime.js (limited to 'deno_typescript/amd_runtime.js') diff --git a/deno_typescript/amd_runtime.js b/deno_typescript/amd_runtime.js new file mode 100644 index 000000000..fda850c5c --- /dev/null +++ b/deno_typescript/amd_runtime.js @@ -0,0 +1,39 @@ +// A very very basic AMD preamble to support the output of TypeScript outFile +// bundles. +let require, define; + +(function() { + const modules = new Map(); + + function println(first, ...s) { + Deno.core.print(first + " " + s.map(JSON.stringify).join(" ") + "\n"); + } + + function createOrLoadModule(name) { + if (!modules.has(name)) { + const m = { name, exports: {} }; + modules.set(name, m); + } + return modules.get(name); + } + + require = name => { + return createOrLoadModule(name).exports; + }; + + define = (name, deps, factory) => { + const currentModule = createOrLoadModule(name); + const localExports = currentModule.exports; + const args = deps.map(dep => { + if (dep === "require") { + return require; + } else if (dep === "exports") { + return localExports; + } else { + const depModule = createOrLoadModule(dep); + return depModule.exports; + } + }); + factory(...args); + }; +})(); -- cgit v1.2.3