blob: dac8b46fb0c3819c5659b155af2f384e96d96296 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
// A very very basic AMD preamble to support the output of TypeScript outFile
// bundles.
/**
* @type {(name: string) => any}
*/
let require;
/**
* @type {(name: string, deps: ReadonlyArray<string>, factory: (...deps: any[]) => void) => void}
*/
let define;
(function() {
/**
* @type {Map<string, { name: string, exports: any }>}
*/
const modules = new Map();
/**
* @param {string} name
*/
function createOrLoadModule(name) {
let m = modules.get(name);
if (!m) {
m = { name, exports: {} };
modules.set(name, m);
}
return m;
}
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);
};
})();
|