mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 02:33:53 -06:00
Merge pull request #4980 from csnover/fix-4952
Put AMD dependency list inline with define call in UMD modules
This commit is contained in:
commit
b046c3a570
@ -6406,19 +6406,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||
write("});");
|
||||
}
|
||||
|
||||
function emitAMDDependencies(node: SourceFile, includeNonAmdDependencies: boolean) {
|
||||
// An AMD define function has the following shape:
|
||||
// define(id?, dependencies?, factory);
|
||||
//
|
||||
// This has the shape of
|
||||
// define(name, ["module1", "module2"], function (module1Alias) {
|
||||
// The location of the alias in the parameter list in the factory function needs to
|
||||
// match the position of the module name in the dependency list.
|
||||
//
|
||||
// To ensure this is true in cases of modules with no aliases, e.g.:
|
||||
// `import "module"` or `<amd-dependency path= "a.css" />`
|
||||
// we need to add modules without alias names to the end of the dependencies list
|
||||
interface AMDDependencyNames {
|
||||
aliasedModuleNames: string[];
|
||||
unaliasedModuleNames: string[];
|
||||
importAliasNames: string[];
|
||||
}
|
||||
|
||||
function getAMDDependencyNames(node: SourceFile, includeNonAmdDependencies: boolean): AMDDependencyNames {
|
||||
// names of modules with corresponding parameter in the factory function
|
||||
let aliasedModuleNames: string[] = [];
|
||||
// names of modules with no corresponding parameters in factory function
|
||||
@ -6453,6 +6447,29 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||
}
|
||||
}
|
||||
|
||||
return { aliasedModuleNames, unaliasedModuleNames, importAliasNames };
|
||||
}
|
||||
|
||||
function emitAMDDependencies(node: SourceFile, includeNonAmdDependencies: boolean) {
|
||||
// An AMD define function has the following shape:
|
||||
// define(id?, dependencies?, factory);
|
||||
//
|
||||
// This has the shape of
|
||||
// define(name, ["module1", "module2"], function (module1Alias) {
|
||||
// The location of the alias in the parameter list in the factory function needs to
|
||||
// match the position of the module name in the dependency list.
|
||||
//
|
||||
// To ensure this is true in cases of modules with no aliases, e.g.:
|
||||
// `import "module"` or `<amd-dependency path= "a.css" />`
|
||||
// we need to add modules without alias names to the end of the dependencies list
|
||||
|
||||
let dependencyNames = getAMDDependencyNames(node, includeNonAmdDependencies);
|
||||
emitAMDDependencyList(dependencyNames);
|
||||
write(", ");
|
||||
emitAMDFactoryHeader(dependencyNames);
|
||||
}
|
||||
|
||||
function emitAMDDependencyList({ aliasedModuleNames, unaliasedModuleNames }: AMDDependencyNames) {
|
||||
write("[\"require\", \"exports\"");
|
||||
if (aliasedModuleNames.length) {
|
||||
write(", ");
|
||||
@ -6462,11 +6479,16 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||
write(", ");
|
||||
write(unaliasedModuleNames.join(", "));
|
||||
}
|
||||
write("], function (require, exports");
|
||||
write("]");
|
||||
}
|
||||
|
||||
function emitAMDFactoryHeader({ importAliasNames }: AMDDependencyNames) {
|
||||
write("function (require, exports");
|
||||
if (importAliasNames.length) {
|
||||
write(", ");
|
||||
write(importAliasNames.join(", "));
|
||||
}
|
||||
write(") {");
|
||||
}
|
||||
|
||||
function emitAMDModule(node: SourceFile, startIndex: number) {
|
||||
@ -6479,7 +6501,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||
write("\"" + node.moduleName + "\", ");
|
||||
}
|
||||
emitAMDDependencies(node, /*includeNonAmdDependencies*/ true);
|
||||
write(") {");
|
||||
increaseIndent();
|
||||
emitExportStarHelper();
|
||||
emitCaptureThisForNodeIfNecessary(node);
|
||||
@ -6505,17 +6526,20 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, Promi
|
||||
emitEmitHelpers(node);
|
||||
collectExternalModuleInfo(node);
|
||||
|
||||
let dependencyNames = getAMDDependencyNames(node, /*includeNonAmdDependencies*/ false);
|
||||
|
||||
// Module is detected first to support Browserify users that load into a browser with an AMD loader
|
||||
writeLines(`(function (deps, factory) {
|
||||
writeLines(`(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
}
|
||||
define(`);
|
||||
emitAMDDependencyList(dependencyNames);
|
||||
write(", factory);");
|
||||
writeLines(` }
|
||||
})(`);
|
||||
emitAMDDependencies(node, false);
|
||||
write(") {");
|
||||
emitAMDFactoryHeader(dependencyNames);
|
||||
increaseIndent();
|
||||
emitExportStarHelper();
|
||||
emitCaptureThisForNodeIfNecessary(node);
|
||||
|
||||
@ -15,14 +15,14 @@ export class A
|
||||
|
||||
|
||||
//// [es5-umd2.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
|
||||
@ -15,14 +15,14 @@ export default class A
|
||||
|
||||
|
||||
//// [es5-umd3.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
|
||||
@ -17,14 +17,14 @@ export = A;
|
||||
|
||||
|
||||
//// [es5-umd4.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
|
||||
@ -14,14 +14,14 @@ export class A
|
||||
}
|
||||
|
||||
//// [es6-umd2.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
class A {
|
||||
constructor() {
|
||||
}
|
||||
|
||||
@ -35,14 +35,14 @@ export let h1: D = new D;
|
||||
|
||||
|
||||
//// [exportNonInitializedVariablesUMD.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
var ;
|
||||
let;
|
||||
var ;
|
||||
|
||||
@ -5,13 +5,13 @@ run(1);
|
||||
|
||||
|
||||
//// [isolatedModulesPlainFile-UMD.js]
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports"], factory);
|
||||
}
|
||||
})(["require", "exports"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
run(1);
|
||||
});
|
||||
|
||||
@ -7,14 +7,14 @@ m1.f();
|
||||
|
||||
//// [umdDependencyComment2.js]
|
||||
///<amd-dependency path='bar'/>
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports", "bar", "m2"], factory);
|
||||
}
|
||||
})(["require", "exports", "bar", "m2"], function (require, exports) {
|
||||
})(function (require, exports) {
|
||||
var m1 = require("m2");
|
||||
m1.f();
|
||||
});
|
||||
|
||||
@ -7,14 +7,14 @@ m1.f();
|
||||
|
||||
//// [umdDependencyCommentName1.js]
|
||||
///<amd-dependency path='bar' name='b'/>
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports", "bar", "m2"], factory);
|
||||
}
|
||||
})(["require", "exports", "bar", "m2"], function (require, exports, b) {
|
||||
})(function (require, exports, b) {
|
||||
var m1 = require("m2");
|
||||
m1.f();
|
||||
});
|
||||
|
||||
@ -11,14 +11,14 @@ m1.f();
|
||||
///<amd-dependency path='bar' name='b'/>
|
||||
///<amd-dependency path='foo'/>
|
||||
///<amd-dependency path='goo' name='c'/>
|
||||
(function (deps, factory) {
|
||||
(function (factory) {
|
||||
if (typeof module === 'object' && typeof module.exports === 'object') {
|
||||
var v = factory(require, exports); if (v !== undefined) module.exports = v;
|
||||
}
|
||||
else if (typeof define === 'function' && define.amd) {
|
||||
define(deps, factory);
|
||||
define(["require", "exports", "bar", "goo", "foo", "m2"], factory);
|
||||
}
|
||||
})(["require", "exports", "bar", "goo", "foo", "m2"], function (require, exports, b, c) {
|
||||
})(function (require, exports, b, c) {
|
||||
var m1 = require("m2");
|
||||
m1.f();
|
||||
});
|
||||
|
||||
@ -202,14 +202,14 @@ var x = 0;`,
|
||||
`declare function use(a: any);\n` +
|
||||
`use(foo);`
|
||||
let output =
|
||||
`(function (deps, factory) {\n` +
|
||||
`(function (factory) {\n` +
|
||||
` if (typeof module === 'object' && typeof module.exports === 'object') {\n` +
|
||||
` var v = factory(require, exports); if (v !== undefined) module.exports = v;\n` +
|
||||
` }\n` +
|
||||
` else if (typeof define === 'function' && define.amd) {\n` +
|
||||
` define(deps, factory);\n` +
|
||||
` define(["require", "exports", "SomeOtherName"], factory);\n` +
|
||||
` }\n` +
|
||||
`})(["require", "exports", "SomeOtherName"], function (require, exports) {\n` +
|
||||
`})(function (require, exports) {\n` +
|
||||
` var SomeName_1 = require("SomeOtherName");\n` +
|
||||
` use(SomeName_1.foo);\n` +
|
||||
`});\n`;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user