{"version":3,"sources":["../../src/app/makeProxyObject.ts"],"sourcesContent":["/* \n * this code will serve as the entry point for the applacation\n * it allows the api to have a syntax of:\n *\n * proxy\n *  .master( (master) => {\n *      console.log(master)\n *      console.log('some function')\n *  })\n *  .slave( slave => {\n *      console.log('something else', slave)\n *  }, 9090, 'someArgString')\n *  .yetAnotherMethod();\n */\n\n\n/*  this function will make the proxy object which takes a callback\n *  and returns a proxy object\n *  @param {function} callback - the callback to be called\n */\n\n// this is a promise \ntype proxyObjectCallback =  (methodCalled: string, param1: any, param2?: any, param3?: any) => void | Promise<void>;\n\nlet proxy: ProxyConstructor;\n\nconst makeProxyObject = (callback: proxyObjectCallback) => {\n    // Create a proxy object handler the given callbakcs\n    const proxyObjecHandler = makeProxyObjecHandler(callback);\n    proxy = new Proxy({}, proxyObjecHandler);\n    return proxy;\n}\n\nconst makeProxyObjecHandler = (callback: proxyObjectCallback) => ({\n    get(target: any, prop: any) {\n        // this will take\n        return (args: any, args2?: any, args3?: any) => {\n            let method = prop;\n            let param1 = args;\n            let param2 = args2;\n            let param3 = args3;\n            // if the first argument not a function or an object\n            if(typeof args !== 'function' && typeof args !== 'object')\n                throw new Error('first parameter must be a function or an object')\n            if(args2 !== undefined && typeof args2 !== 'object') \n                throw new Error('second parameter must be an object')\n            if(args3 !== undefined && typeof args3 !== 'object')\n                throw new Error('third parameter must be an object')\n            // run the passed callback\n            callback(method, param1, param2, param3);\n            // return the proxy object\n            return proxy;\n        };\n    }\n});\n\nexport default makeProxyObject;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA,IAAI;AAEJ,MAAM,kBAAkB,CAAC,aAAkC;AAEvD,QAAM,oBAAoB,sBAAsB,QAAQ;AACxD,UAAQ,IAAI,MAAM,CAAC,GAAG,iBAAiB;AACvC,SAAO;AACX;AAEA,MAAM,wBAAwB,CAAC,cAAmC;AAAA,EAC9D,IAAI,QAAa,MAAW;AAExB,WAAO,CAAC,MAAW,OAAa,UAAgB;AAC5C,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,SAAS;AACb,UAAI,SAAS;AAEb,UAAG,OAAO,SAAS,cAAc,OAAO,SAAS;AAC7C,cAAM,IAAI,MAAM,iDAAiD;AACrE,UAAG,UAAU,UAAa,OAAO,UAAU;AACvC,cAAM,IAAI,MAAM,oCAAoC;AACxD,UAAG,UAAU,UAAa,OAAO,UAAU;AACvC,cAAM,IAAI,MAAM,mCAAmC;AAEvD,eAAS,QAAQ,QAAQ,QAAQ,MAAM;AAEvC,aAAO;AAAA,IACX;AAAA,EACJ;AACJ;AAEA,IAAO,0BAAQ;","names":[]}