senecajs / seneca

A microservices toolkit for Node.js.
http://senecajs.org
MIT License
3.95k stars 314 forks source link

validate init_action is function #809

Closed github-actions[bot] closed 4 years ago

github-actions[bot] commented 4 years ago

validate init_action is function

https://github.com/senecajs/seneca/blob/fe2e1ef30f6dd7d153aeb1106fcefe98c8582724/lib/use.js#L293

            //var delegate = make_delegate(seneca, plugin)
            // Adjust Seneca API to be plugin specific.
            var delegate = seneca.delegate({
                plugin$: {
                    name: plugin.name,
                    tag: plugin.tag,
                },
                fatal$: true,
            });
            delegate.private$ = Object.create(seneca.private$);
            delegate.private$.ge = delegate.private$.ge.gate();
            delegate.die = Common.makedie(delegate, {
                type: 'plugin',
                plugin: plugin.name,
            });
            var actdeflist = [];
            delegate.add = function () {
                var argsarr = new Array(arguments.length);
                for (var l = 0; l < argsarr.length; ++l) {
                    argsarr[l] = arguments[l];
                }
                var actdef = argsarr[argsarr.length - 1] || {};
                if ('function' === typeof actdef) {
                    actdef = {};
                    argsarr.push(actdef);
                }
                actdef.plugin_name = plugin.name || '-';
                actdef.plugin_tag = plugin.tag || '-';
                actdef.plugin_fullname = plugin.fullname;
                // TODO: is this necessary?
                actdef.log = delegate.log;
                actdeflist.push(actdef);
                seneca.add.apply(delegate, argsarr);
                // FIX: should be this
                return delegate;
            };
            delegate.__update_plugin__ = function (plugin) {
                delegate.context.name = plugin.name || '-';
                delegate.context.tag = plugin.tag || '-';
                delegate.context.full = plugin.fullname || '-';
                actdeflist.forEach(function (actdef) {
                    actdef.plugin_name = plugin.name || actdef.plugin_name || '-';
                    actdef.plugin_tag = plugin.tag || actdef.plugin_tag || '-';
                    actdef.plugin_fullname = plugin.fullname || actdef.plugin_fullname || '-';
                });
            };
            delegate.init = function (init) {
                // TODO: validate init_action is function
                var pat = {
                    role: 'seneca',
                    plugin: 'init',
                    init: plugin.name,
                };
                if (null != plugin.tag && '-' != plugin.tag) {
                    pat.tag = plugin.tag;
                }
                delegate.add(pat, function (_, reply) {
                    init.call(this, reply);
                });
            };
            delegate.context.plugin = plugin;
            delegate.context.plugin.mark = Math.random();
            return {
                op: 'merge',
                out: {
github-actions[bot] commented 4 years ago

Closed in fe2e1ef30f6dd7d153aeb1106fcefe98c8582724