MCPcopy Index your code
hub / github.com/nodejs/node / transformAMDModule

Function transformAMDModule

test/fixtures/snapshot/typescript.js:104437–104494  ·  view source on GitHub ↗

* Transforms a SourceFile into an AMD module. * * @param node The SourceFile node.

(node)

Source from the content-addressed store, hash-verified

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 }

Callers

nothing calls this directly

Tested by

no test coverage detected