Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
"use strict";

// https://github.com/keithamus/proxy-fluent-api
// https://bugzilla.mozilla.org/show_bug.cgi?id=683218
function proxyFluentApi(executor, context = null) {
  var parts = [];
  var proxy = new Proxy(function () {
    var returnVal = executor.call(context, parts);
    parts = [];
    return returnVal;
  }, {
    has() {
      return true;
    },

    get(object, prop) {
      parts.push(prop);
      return proxy;
    }

  });
  return proxy;
}

const example = proxyFluentApi(parts => parts.join('--'));
example.a.b.c.d() == 'a--b--c--d';
example.e.f.g.h() == 'e--f--g--h';

function urlBuilder(domain) {
  return proxyFluentApi(parts => `${domain}${parts.join('/')}`);
}

const google = urlBuilder('https://google.com/');
google.search.products.bacon.and.eggs() == 'https://google.com/search/products/bacon/and/eggs';