UNPKG

nmsp

Version:

Create, manage and extend your namespaces in the browser and NodeJS.

1 lines 1.1 kB
!function(n,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports&&"string"!=typeof exports.nodeName?module.exports=t():n.nmsp=t()}(this,function(n){var t=Object.prototype.toString;function o(n){return t.call(n)===t.call({})}function c(n){return function(t,e){return n&&(e=t,t=n),Object.keys(e).forEach(function(n){o(e[n])?(t[n]=o(t[n])?t[n]:{},t[n]=t[n]||{},c(t[n])(e[n])):t[n]=e[n]}),t}}function r(n){return Array.isArray(n)?n:n.split(".")}function i(e){return function(n,t){return t=e||t,r(n).reduce(function(n,t){return n&&n[t]},t)}}function f(n){var t={};return r(n).reduce(function(n,t){return n[t]={},n[t]},t),t}function e(n){return function(e){return e=n||e,Object.keys(e).reduce(function(n,t){return n[t]=e[t],n},{})}}return(n=function(n){var r,u=Object.create({});return o(n)?u=n:void 0!==n&&(u=f(n)),r=c(u),Object.defineProperties(u,{nmsp:{value:!0},extend:{value:function(n,t){if(t){var e=i(u)(n);Array.isArray(e)?c(e)(e.concat(t)):(r(f(n)),c(i(u)(n))(t))}else r(n)}},atPath:{value:i(u)},plain:{value:e(u)}})}).extend=c(),n.atPath=i(),n.plain=e(),n.fromPath=f,n});