diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2019-09-02 17:07:11 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-02 17:07:11 -0400 |
commit | d43b43ca781b025b9a6a54827ea3ef193972ef24 (patch) | |
tree | 84173b6a653802a41c23145dd3b2048d9075e2a4 /deno_typescript/amd_runtime.js | |
parent | 56508f113d9fe61ffcce4cbbb85e3d6961888e1d (diff) |
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.
Diffstat (limited to 'deno_typescript/amd_runtime.js')
-rw-r--r-- | deno_typescript/amd_runtime.js | 39 |
1 files changed, 39 insertions, 0 deletions
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); + }; +})(); |