summaryrefslogtreecommitdiff
path: root/deno_typescript/amd_runtime.js
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-09-02 17:07:11 -0400
committerGitHub <noreply@github.com>2019-09-02 17:07:11 -0400
commitd43b43ca781b025b9a6a54827ea3ef193972ef24 (patch)
tree84173b6a653802a41c23145dd3b2048d9075e2a4 /deno_typescript/amd_runtime.js
parent56508f113d9fe61ffcce4cbbb85e3d6961888e1d (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.js39
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);
+ };
+})();