Component.js
exports.index = (foo, bar) => { /* ... */ }
exports.aProp = {}
ComponentInterface.js
module.exports = {
index: {
type: 'function',
args: [ 'foo', 'bar' ],
// By default, for function validation, nyce will only check the number
// of arguments present with no regard to naming. If you would like to
// fail validation if the names of the function arguments don't match the names
// of the the interface arguments set this to true
enforceArgNaming: true
},
aProp: {
type: 'object'
}
}
Elsewhere
const nyce = require('nyce')()
const impl = require('./Component')
const interface = require('./ComponentInterface')
nyce
.define('resource', interface)
.then(nyce.assertImplements('resource', impl))
.then(() => {
console.log('yay!')
})
.catch((e) => {
console.log('oh no!')
})