Skip to content

Commit

Permalink
feat(module): support src as a function in addModule (#4956)
Browse files Browse the repository at this point in the history
  • Loading branch information
ricardogobbosouza authored and pi0 committed Feb 5, 2019
1 parent 9308954 commit 1e9eb4b
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 2 deletions.
9 changes: 7 additions & 2 deletions packages/core/src/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ export default class ModuleContainer {
let options
let handler

// Type 1: String
if (typeof moduleOpts === 'string') {
// Type 1: String or Function
if (typeof moduleOpts === 'string' || typeof moduleOpts === 'function') {
src = moduleOpts
} else if (Array.isArray(moduleOpts)) {
// Type 2: Babel style array
Expand All @@ -126,6 +126,11 @@ export default class ModuleContainer {
({ src, options, handler } = moduleOpts)
}

// Define handler if src is a function
if (typeof src === 'function') {
handler = src
}

// Resolve handler
if (!handler) {
handler = this.nuxt.resolver.requireModule(src)
Expand Down
25 changes: 25 additions & 0 deletions packages/core/test/module.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,31 @@ describe('core: module', () => {
expect(result).toEqual({ src: 'moduleTest', options: {} })
})

test('should add function module', async () => {
const module = new ModuleContainer({
resolver: { requireModule },
options: {}
})

const functionModule = function (options) {
return Promise.resolve(options)
}

functionModule.meta = { name: 'moduleTest' }

const result = await module.addModule(functionModule)

expect(requireModule).not.toBeCalled()
expect(module.requiredModules).toEqual({
moduleTest: {
handler: expect.any(Function),
options: undefined,
src: functionModule
}
})
expect(result).toEqual({ })
})

test('should add array module', async () => {
const module = new ModuleContainer({
resolver: { requireModule },
Expand Down

0 comments on commit 1e9eb4b

Please sign in to comment.