* Transforms a SourceFile into an AMD module. * * @param node The SourceFile node.
(node)
| 104435 | * @param node The SourceFile node. |
| 104436 | */ |
| 104437 | function transformAMDModule(node) { |
| 104438 | var define = factory.createIdentifier("define"); |
| 104439 | var moduleName = ts.tryGetModuleNameFromFile(factory, node, host, compilerOptions); |
| 104440 | var jsonSourceFile = ts.isJsonSourceFile(node) && node; |
| 104441 | // An AMD define function has the following shape: |
| 104442 | // |
| 104443 | // define(id?, dependencies?, factory); |
| 104444 | // |
| 104445 | // This has the shape of the following: |
| 104446 | // |
| 104447 | // define(name, ["module1", "module2"], function (module1Alias) { ... } |
| 104448 | // |
| 104449 | // The location of the alias in the parameter list in the factory function needs to |
| 104450 | // match the position of the module name in the dependency list. |
| 104451 | // |
| 104452 | // To ensure this is true in cases of modules with no aliases, e.g.: |
| 104453 | // |
| 104454 | // import "module" |
| 104455 | // |
| 104456 | // or |
| 104457 | // |
| 104458 | // /// <amd-dependency path= "a.css" /> |
| 104459 | // |
| 104460 | // we need to add modules without alias names to the end of the dependencies list |
| 104461 | var _a = collectAsynchronousDependencies(node, /*includeNonAmdDependencies*/ true), aliasedModuleNames = _a.aliasedModuleNames, unaliasedModuleNames = _a.unaliasedModuleNames, importAliasNames = _a.importAliasNames; |
| 104462 | // Create an updated SourceFile: |
| 104463 | // |
| 104464 | // define(mofactory.updateSourceFile", "module2"], function ... |
| 104465 | var updated = factory.updateSourceFile(node, ts.setTextRange(factory.createNodeArray([ |
| 104466 | factory.createExpressionStatement(factory.createCallExpression(define, |
| 104467 | /*typeArguments*/ undefined, __spreadArray(__spreadArray([], (moduleName ? [moduleName] : []), true), [ |
| 104468 | // Add the dependency array argument: |
| 104469 | // |
| 104470 | // ["require", "exports", module1", "module2", ...] |
| 104471 | factory.createArrayLiteralExpression(jsonSourceFile ? ts.emptyArray : __spreadArray(__spreadArray([ |
| 104472 | factory.createStringLiteral("require"), |
| 104473 | factory.createStringLiteral("exports") |
| 104474 | ], aliasedModuleNames, true), unaliasedModuleNames, true)), |
| 104475 | // Add the module body function argument: |
| 104476 | // |
| 104477 | // function (require, exports, module1, module2) ... |
| 104478 | jsonSourceFile ? |
| 104479 | jsonSourceFile.statements.length ? jsonSourceFile.statements[0].expression : factory.createObjectLiteralExpression() : |
| 104480 | factory.createFunctionExpression( |
| 104481 | /*modifiers*/ undefined, |
| 104482 | /*asteriskToken*/ undefined, |
| 104483 | /*name*/ undefined, |
| 104484 | /*typeParameters*/ undefined, __spreadArray([ |
| 104485 | factory.createParameterDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, /*dotDotDotToken*/ undefined, "require"), |
| 104486 | factory.createParameterDeclaration(/*decorators*/ undefined, /*modifiers*/ undefined, /*dotDotDotToken*/ undefined, "exports") |
| 104487 | ], importAliasNames, true), |
| 104488 | /*type*/ undefined, transformAsynchronousModuleBody(node)) |
| 104489 | ], false))) |
| 104490 | ]), |
| 104491 | /*location*/ node.statements)); |
| 104492 | ts.addEmitHelpers(updated, context.readEmitHelpers()); |
| 104493 | return updated; |
| 104494 | } |
nothing calls this directly
no test coverage detected