From 1f76d7d3497074ac752d1d9c2ee9c2978a851908 Mon Sep 17 00:00:00 2001 From: Jack Westbrook Date: Sat, 27 Apr 2024 23:59:31 +0200 Subject: [PATCH] Feat: Support module.uri in AMD extra (#2485) * feat(amd): support module.uri * test(amd-extra): add test case for passing context meta url as module.uri --- src/extras/amd.js | 3 ++- test/browser/amd.js | 7 +++++++ test/fixtures/browser/amd-module-meta.js | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 test/fixtures/browser/amd-module-meta.js 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, + }; +});