diff --git a/packages/oc-external-dependencies-handler/index.js b/packages/oc-external-dependencies-handler/index.js index 354c68e8..138a37d5 100644 --- a/packages/oc-external-dependencies-handler/index.js +++ b/packages/oc-external-dependencies-handler/index.js @@ -12,6 +12,11 @@ const coreModules = require('builtin-modules'); const strings = require('oc-templates-messages'); const _ = require('lodash'); +function getPosition(string, subString, index) { + return string.split(subString, index).join(subString).length; +} + + module.exports = dependencies => { const deps = dependencies || {}; @@ -30,6 +35,12 @@ module.exports = dependencies => { dependencyName.indexOf('/') ); } + if (/^(@).*\//g.test(dependencyName)) { + dependencyName = dependencyName.substring( + 0, + getPosition(dependencyName, "/", 2) + ); + } if (missingExternalDependency(dependencyName, deps)) { return callback( new Error( diff --git a/packages/oc-external-dependencies-handler/test/oc-external-dependencies-handler.test.js b/packages/oc-external-dependencies-handler/test/oc-external-dependencies-handler.test.js index 5670613f..4a30376f 100644 --- a/packages/oc-external-dependencies-handler/test/oc-external-dependencies-handler.test.js +++ b/packages/oc-external-dependencies-handler/test/oc-external-dependencies-handler.test.js @@ -55,6 +55,16 @@ test('The handler matcher should correctly match aganinst valid modules', () => expect(handlerMatcher.test('@org/module/path')).toBe(true); }); +test('The handler function should detect valid scoped modules that import paths', (done) => { + const handler = externalDependenciesHandler({ lodash: '4.17.4', "@org/module": '1.0.0' }); + const handlerFunction = handler[0]; + + handlerFunction({ request: '@org/module/path' }, err => { + expect(err).toBeUndefined(); + done(); + }); +}); + test('The handler matcher should correctly match aganinst not valid modules', () => { const handler = externalDependenciesHandler({ lodash: '4.17.4' }); const handlerMatcher = handler[1];