diff --git a/src/extras/amd.js b/src/extras/amd.js index 3730eb95..f4d70647 100644 --- a/src/extras/amd.js +++ b/src/extras/amd.js @@ -40,11 +40,12 @@ import { errMsg } from '../err-msg.js'; if (splice) amdDefineDeps.length -= splice; var amdExec = amdDefineExec; - return [amdDefineDeps, function (_export) { + return [amdDefineDeps, function (_export, _context) { _export({ default: exports, __useDefault: true }); return { setters: setters, execute: function () { + module.uri = _context.meta.url; var amdResult = amdExec.apply(exports, depModules); if (amdResult !== undefined) module.exports = amdResult; diff --git a/test/browser/amd.js b/test/browser/amd.js index 444c45e2..ca82647e 100644 --- a/test/browser/amd.js +++ b/test/browser/amd.js @@ -90,6 +90,13 @@ suite('AMD tests', function () { }); }); + test('Has access to module.uri (context meta)', function () { + return System.import('fixtures/amd-module-meta.js').then(function (m) { + assert.ok(m.default); + assert.equal(m.default.uri, baseURL+'fixtures/browser/amd-module-meta.js'); + }); + }); + test('Throws an error when define() is called incorrectly', () => { try { define("strings are invalid amd modules"); diff --git a/test/fixtures/browser/amd-module-meta.js b/test/fixtures/browser/amd-module-meta.js new file mode 100644 index 00000000..3439f39b --- /dev/null +++ b/test/fixtures/browser/amd-module-meta.js @@ -0,0 +1,5 @@ +define(["module"], function (module) { + return { + uri: module.uri, + }; +});