summaryrefslogtreecommitdiff
path: root/deno_typescript/amd_runtime.js
diff options
context:
space:
mode:
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);
+ };
+})();