Skip to content

Commit c4d1f70

Browse files
committed
Define simplified
1 parent 2dcbb43 commit c4d1f70

File tree

1 file changed

+75
-54
lines changed

1 file changed

+75
-54
lines changed

umd/src/Define.ts

Lines changed: 75 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -17,74 +17,95 @@ var define: IDefine = (
1717

1818
const loader = AmdLoader.instance;
1919

20-
function bindFactory(module: Module, requireList: string[], fx: IAnyFunction) {
21-
if (module.factory) {
22-
return;
23-
}
24-
module.dependencies = [];
25-
let requires: string[] = requireList;
26-
requires = requireList;
27-
28-
const args: any[] = [];
29-
for (const s of requires) {
30-
if (s === "require") {
31-
args.push(module.require);
32-
continue;
33-
}
34-
if (s === "exports") {
35-
args.push(module.emptyExports);
36-
continue;
37-
}
38-
if (/^global/.test(s)) {
39-
args.push(loader.get(s).exports);
40-
}
41-
const name: string = loader.resolveRelativePath(s, module.name);
42-
const child: Module = loader.get(name);
43-
module.addDependency(child);
44-
}
45-
module.factory = () => {
46-
return fx.apply(module, args);
47-
};
48-
}
20+
const { currentScript } = document;
4921

50-
if (nested) {
51-
// this means this was executed as packed modules..
52-
// first parameter is name, second is array and third is factory...
22+
let module: Module;
5323

54-
const name = requiresOrFactory as unknown as string;
55-
const rList = factory as unknown as string[];
56-
const f = nested as unknown as () => void;
24+
if (currentScript) {
5725

58-
const module = AmdLoader.instance.get(name);
26+
module = currentScript[currentModuleSymbol];
27+
if (module) {
28+
AmdLoader.current = module;
29+
}
30+
}
5931

60-
bindFactory(module, rList, f);
32+
if (!module) {
33+
factory();
6134
return;
6235
}
6336

64-
AmdLoader.instance.define = () => {
37+
if (module.factory) {
38+
return;
39+
}
40+
module.dependencies = [];
6541

66-
if (!AmdLoader.current) {
67-
// dynamic loader
68-
const amdModule = document.currentScript?.[currentModuleSymbol];
42+
let requires = [];
6943

70-
if (amdModule) {
71-
AmdLoader.current = amdModule;
72-
}
73-
}
44+
if (typeof requiresOrFactory !== "function") {
45+
requires = requiresOrFactory;
46+
} else {
47+
factory = requiresOrFactory;
48+
}
7449

75-
const current: Module = AmdLoader.current;
76-
if (!current) {
77-
return;
50+
const args: any[] = [];
51+
for (const s of requires) {
52+
if (s === "require") {
53+
args.push(module.require);
54+
continue;
7855
}
79-
if (current.factory) {
80-
return;
56+
if (s === "exports") {
57+
args.push(module.emptyExports);
58+
continue;
8159
}
82-
if (typeof requiresOrFactory === "function") {
83-
bindFactory(current, [], requiresOrFactory);
84-
} else {
85-
bindFactory(current, requiresOrFactory, factory);
60+
if (/^global/.test(s)) {
61+
args.push(loader.get(s).exports);
8662
}
63+
const name: string = loader.resolveRelativePath(s, module.name);
64+
const child: Module = loader.get(name);
65+
module.addDependency(child);
66+
}
67+
module.factory = () => {
68+
return factory.apply(module, args);
8769
};
70+
71+
// if (nested) {
72+
// // this means this was executed as packed modules..
73+
// // first parameter is name, second is array and third is factory...
74+
75+
// const name = requiresOrFactory as unknown as string;
76+
// const rList = factory as unknown as string[];
77+
// const f = nested as unknown as () => void;
78+
79+
// const module = AmdLoader.instance.get(name);
80+
81+
// bindFactory(module, rList, f);
82+
// return;
83+
// }
84+
85+
// AmdLoader.instance.define = () => {
86+
87+
// if (!AmdLoader.current) {
88+
// // dynamic loader
89+
// const amdModule = document.currentScript?.[currentModuleSymbol];
90+
91+
// if (amdModule) {
92+
// AmdLoader.current = amdModule;
93+
// }
94+
// }
95+
96+
// const current: Module = AmdLoader.current;
97+
// if (!current) {
98+
// return;
99+
// }
100+
// if (current.factory) {
101+
// return;
102+
// }
103+
// if (typeof requiresOrFactory === "function") {
104+
// bindFactory(current, [], requiresOrFactory);
105+
// } else {
106+
// bindFactory(current, requiresOrFactory, factory);
107+
// }
108+
// };
88109
};
89110

90111
define.amd = {};

0 commit comments

Comments
 (0)