@niledatabase/server 2.3.1 → 2.3.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("dotenv/config");var t=require("jose"),e=require("pg");function n(){n=function(){return e};var t,e={},r=Object.prototype,o=r.hasOwnProperty,a=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function f(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,n){return t[e]=n}}function p(t,e,n,r){var o=Object.create((e&&e.prototype instanceof y?e:y).prototype),i=new T(r||[]);return a(o,"_invoke",{value:_(t,n,i)}),o}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var d="suspendedStart",h="suspendedYield",v="executing",g="completed",b={};function y(){}function w(){}function m(){}var I={};f(I,s,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(R([])));x&&x!==r&&o.call(x,s)&&(I=x);var E=m.prototype=y.prototype=Object.create(I);function N(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function U(t,e){function n(r,a,i,s){var u=l(t[r],t,a);if("throw"!==u.type){var c=u.arg,f=c.value;return f&&"object"==typeof f&&o.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,i,s)}),(function(t){n("throw",t,i,s)})):e.resolve(f).then((function(t){c.value=t,i(c)}),(function(t){return n("throw",t,i,s)}))}s(u.arg)}var r;a(this,"_invoke",{value:function(t,o){function a(){return new e((function(e,r){n(t,o,e,r)}))}return r=r?r.then(a,a):a()}})}function _(e,n,r){var o=d;return function(a,i){if(o===v)throw Error("Generator is already running");if(o===g){if("throw"===a)throw i;return{value:t,done:!0}}for(r.method=a,r.arg=i;;){var s=r.delegate;if(s){var u=L(s,r);if(u){if(u===b)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===d)throw o=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=v;var c=l(e,n,r);if("normal"===c.type){if(o=r.done?g:h,c.arg===b)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=g,r.method="throw",r.arg=c.arg)}}}function L(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,L(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),b;var a=l(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,b):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function R(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(o.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return w.prototype=m,a(E,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:w,configurable:!0}),w.displayName=f(m,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,f(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},N(U.prototype),f(U.prototype,u,(function(){return this})),e.AsyncIterator=U,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new U(p(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},N(E),f(E,c,"Generator"),f(E,s,(function(){return this})),f(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=R,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(O),!e)for(var n in this)"t"===n.charAt(0)&&o.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=o.call(i,"catchLoc"),c=o.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),O(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),b}},e}function r(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function o(t,e,n,r,o,a,i){try{var s=t[a](i),u=s.value}catch(t){return void n(t)}s.done?e(u):Promise.resolve(u).then(r,o)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var i=t.apply(e,n);function s(t){o(i,r,a,s,u,"next",t)}function u(t){o(i,r,a,s,u,"throw",t)}s(void 0)}))}}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,r(o.key),o)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function u(){return u=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u.apply(this,arguments)}function c(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,f(t,e)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function p(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)e.indexOf(n=a[r])>=0||(o[n]=t[n]);return o}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function d(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return{info:function(){if(null!=t&&t.debug){for(var e,r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];(e=console).info.apply(e,["[niledb]"].concat(n,o))}},warn:function(){if(null!=t&&t.debug){for(var e,r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];(e=console).warn.apply(e,["[niledb]"].concat(n,o))}},error:function(){for(var t,e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];(t=console).error.apply(t,["[niledb]","[ERROR]"].concat(n,r))}}}var v=function(t){var e=t.config,n=t.logger,r=h(e,"[username]").info;return null!=e&&e.user?(n&&r(n,"config",e.user),String(null==e?void 0:e.user)):(n&&r(n,".env",process.env.NILEDB_USER),process.env.NILEDB_USER)},g=function(t){var e=t.config;return h(e,"[password]"),null!=e&&e.password?String(e.password):process.env.NILEDB_PASSWORD},b=function(t){var e,n,r,o=t.config,a=t.logger,i=h(o,"[token]").info;return null!=o&&null!=(e=o.api)&&e.token?(a&&i(a,"config",null==(n=o.api)?void 0:n.token),String(null==(r=o.api)?void 0:r.token)):process.env.NILEDB_TOKEN?(a&&i(a,".env",process.env.NILEDB_TOKEN),process.env.NILEDB_TOKEN):void 0},y=function(t){var e=t.config,n=t.logger,r=h(e,"[databaseName]").info;return null!=e&&e.databaseName?(n&&r(n,"config",e.databaseName),String(e.databaseName)):process.env.NILEDB_NAME?(n&&r(n,"config",process.env.NILEDB_NAME),process.env.NILEDB_NAME):null},w=function(t){var e,n,r=t.config,o=t.logger,a=h(r,"[basePath]").info,i=null==r||null==(e=r.api)?void 0:e.basePath;return i?(o&&a(o,"config",null==r||null==(n=r.api)?void 0:n.basePath),i):process.env.NILEDB_API?(o&&a(o,".env",process.env.NILEDB_API),"https://"+process.env.NILEDB_API):(o&&a(o,"default",process.env.NILEDB_API),"https://api.thenile.dev")};function m(t){var e=t.config,n=t.logger,r=h(e,"[db.host]").info;return null!=e&&e.db&&e.db.host?(n&&r(n,"config",null==e?void 0:e.db.host),e.db.host):process.env.NILEDB_HOST?(n&&r(n,".env",process.env.NILEDB_HOST),process.env.NILEDB_HOST):(n&&r(n,"default","db.thenile.dev"),"db.thenile.dev")}function I(t){var e,n,r=t.config,o=t.logger,a=h(r,"[db.port]").info;return null!=r&&null!=(e=r.db)&&e.port&&null!=r.db.port?(o&&a(o,"config",null==r?void 0:r.db.port),Number(null==(n=r.db)?void 0:n.port)):process.env.NILEDB_PORT?(o&&a(o,"config",process.env.NILEDB_PORT),Number(process.env.NILEDB_PORT)):(o&&a(o,"default",5432),5432)}var k,x=["host","port"],E=["host","port"],N=function(){return s((function(t){var e=t.basePath,n=t.cookieKey,r=t.token;this.cookieKey=void 0,this.basePath=void 0,this._token=void 0,this.basePath=e,this.cookieKey=n,this._token=r}),[{key:"token",get:function(){return this._token},set:function(t){this._token=t}}])}(),U=function(){return s((function(t){var e,r,o,i=this;this.user=void 0,this.password=void 0,this.databaseId=void 0,this.databaseName=void 0,this.debug=void 0,this.db=void 0,this.api=void 0,this._tenantId=void 0,this._userId=void 0,this.configure=function(){var t=a(n().mark((function t(e){var r,o,a,s,c,f,l,d,k,E,U,_,L,P,O,T,R,S,j,D,B,A,C,H,q,K,M;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(s=h(e,"[init]"),c=s.info,f=s.error,l={config:e},d=null!=(r=e.db)?r:{},k=d.host,E=d.port,U=p(d,x),_=null!=k?k:m(l),L=null!=E?E:I(l),!(_&&i.databaseName&&i.databaseId)){t.next=8;break}return c("Alreaady configured, aborting fetch"),t.abrupt("return",i);case 8:return P=w(l),O=y({config:e,logger:"getInfo"}),T=new URL(P+"/databases/configure"),O&&T.searchParams.set("databaseName",O),c(T.href),t.next=15,fetch(T,{headers:{Authorization:"Bearer "+(n={config:e},v(n)+":"+g(n))}});case 15:return j=(R=t.sent).clone(),t.prev=17,t.next=20,R.json();case 20:D=t.sent,404===R.status&&c("is the configured databaseName correct?"),S=D.status&&"READY"!==D.status?{message:"Database is not ready yet"}:D,t.next=32;break;case 25:return t.prev=25,t.t0=t.catch(17),t.next=29,j.text();case 29:f(B=t.sent),S={message:B};case 32:if(c("[fetched database]",S),!("message"in S)){t.next=41;break}if(!("statusCode"in S)){t.next=40;break}throw f(S),new Error("HTTP error has occured");case 40:throw new Error("Unable to auto-configure. Please set or remove NILEDB_API, NILEDB_NAME, and NILEDB_HOST in your .env file.");case 41:"object"==typeof S&&(C=(A=S).apiHost,H=A.dbHost,q=A.name,i.databaseId=A.id,i.databaseName=q,K=new URL(H),M=new URL(C),_=K.host,P=M.origin);case 42:return i.api=new N({basePath:P,cookieKey:null!=(o=null==e||null==(a=e.api)?void 0:a.cookieKey)?o:"token",token:b({config:e})}),i.db=u({user:i.user,password:i.password,host:_,port:L,database:i.databaseName},U),c("[config set]",i),t.abrupt("return",i);case 46:case"end":return t.stop()}var n}),t,null,[[17,25]])})));return function(e){return t.apply(this,arguments)}}();var s,c,f,l,d={config:t};this.databaseId=(f=(s=d).logger,l=h(c=s.config,"[databaseId]").info,null!=c&&c.databaseId?(f&&l(f,"config",c.databaseId),String(null==c?void 0:c.databaseId)):(f&&l(f,"env",process.env.NILEDB_ID),process.env.NILEDB_ID)),this.user=v(d),this.password=g(d),this.databaseName=y(d),this._tenantId=function(t){var e=t.config,n=t.logger,r=h(e,"[tenantId]").info;return null!=e&&e.tenantId?(n&&r(n,"config",e.tenantId),e.tenantId):process.env.NILEDB_TENANT?(n&&r(n,".env",process.env.NILEDB_TENANT),process.env.NILEDB_TENANT):null}(d),this.debug=Boolean(null==t?void 0:t.debug),this._userId=null==t?void 0:t.userId;var k=w(d),U=null!=(e=null==t?void 0:t.db)?e:{},_=U.host,L=U.port,P=p(U,E),O=null!=_?_:m(d),T=null!=L?L:I(d);this.api=new N({basePath:k,cookieKey:null!=(r=null==t||null==(o=t.api)?void 0:o.cookieKey)?r:"token",token:b({config:t})}),this.db=u({user:this.user,password:this.password,host:O,port:T},P),this.databaseName&&(this.db.database=this.databaseName)}),[{key:"tenantId",get:function(){return this._tenantId},set:function(t){this._tenantId=t}},{key:"userId",get:function(){return this._userId},set:function(t){this._userId=t}}])}(),_=function(t,e){this.response=void 0,this.response=new Response(t,e)};!function(t){t.User="userId",t.Tenant="tenantId",t.Token="token",t.EvictPool="EvictPool"}(k||(k={}));var L=new(function(){function t(){this.events=void 0,this.events={}}var e=t.prototype;return e.publish=function(t,e){var n=this.events[t];if(n)for(var r,o=d(n);!(r=o()).done;)(0,r.value)(e)},e.subscribe=function(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)},t}()),P=function(t){L.publish(k.Tenant,t)},O=function(t){L.publish(k.User,t)},T=function(t){L.publish(k.Token,t)},R="x-nile-tenantId",S="x-nile-userId";function j(t,e){var n,r=null==(n=t.get("cookie"))?void 0:n.split("; "),o={};if(r)for(var a,i=d(r);!(a=i()).done;){var s=a.value.split("="),u=s.slice(1).join("=");o[s[0]]=u}if(r)for(var c,f=d(r);!(c=f()).done;){var p=c.value.split("="),l=p.slice(1).join("=");o[p[0]]=l}return e?o[e]:null}function D(t,e){var n,r=j(t,"tenantId");return null!=(n=null!=r?r:null==t?void 0:t.get(R))?n:e.tenantId}function B(e,n){var r,o=j(e,n.api.cookieKey);return o?t.decodeJwt(o).sub:null!=(r=null==e?void 0:e.get(S))?r:n.userId}function A(t,e,n){return C.apply(this,arguments)}function C(){return(C=a(n().mark((function t(e,r,o){var a,i,s,c,f,p,l,d,v,g,y,w,m,I,k,x,E,N,U,L;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=h(e,"[server]"),f=c.info,p=c.error,l=""+(null==(a=e.api)?void 0:a.basePath)+r,d=null==(i=e.api)?void 0:i.cookieKey,v=new Headers(null==o?void 0:o.headers),(g=new Headers).set("content-type","application/json; charset=utf-8"),v.get("Authorization")||((y=j(v,d))?g.set("Authorization","Bearer "+y):b({config:e})&&g.set("Authorization","Bearer "+b({config:e}))),w=D(v,e),P(w),m=B(v,e),O(m),!l.includes("{tenantId}")||w){t.next=14;break}return t.abrupt("return",new _("tenantId is not set for request",{status:400}));case 14:return I=l.replace("{tenantId}",encodeURIComponent(String(w))).replace("{userId}",encodeURIComponent(String(m))),f("[fetch]",I),t.next=18,fetch(I,u({},o,{headers:g})).catch((function(t){p("[fetch]","[response]",t)}));case 18:if(!((k=t.sent)&&k.status>=200&&k.status<300)){t.next=27;break}if("function"!=typeof k.clone){t.next=26;break}return t.t0=f,t.next=24,k.clone().json();case 24:t.t1=t.sent,(0,t.t0)("[fetch]","[response]",t.t1);case 26:return t.abrupt("return",k);case 27:return E="function"==typeof(null==k?void 0:k.clone)?k.clone():null,N="",t.prev=29,t.next=32,null==k?void 0:k.json();case 32:x=t.sent,t.next=43;break;case 35:if(t.prev=35,t.t2=t.catch(29),!E){t.next=42;break}return t.next=40,E.text();case 40:(N=t.sent)&&p("[fetch]","[response]","[status: "+E.status+"]",N);case 42:N||p("[fetch]","[response]",t.t2);case 43:if(!N){t.next=45;break}return t.abrupt("return",new _(N,{status:null==E?void 0:E.status}));case 45:if(!x||!("message"in x)){t.next=49;break}return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]",U=x.message),t.abrupt("return",new _(U,{status:400}));case 49:if(!x||!("errors"in x)){t.next=53;break}return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]",L=x.errors[0]),t.abrupt("return",new _(L,{status:400}));case 53:return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]","UNHANDLED ERROR"),t.abrupt("return",new _(null,{status:null!=(s=null==k?void 0:k.status)?s:500}));case 55:case"end":return t.stop()}}),t,null,[[29,35]])})))).apply(this,arguments)}var H=function(t){function e(e){var r;return(r=t.call(this,e)||this).post=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("POST",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.get=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("GET",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.put=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("PUT",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r}c(e,t);var r=e.prototype;return r.rawRequest=function(){var t=a(n().mark((function t(e,r,o,a){var i,s;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=u({},o,{body:a,method:e}),t.next=3,A(this,r,i);case 3:if(!((s=t.sent)instanceof _)){t.next=6;break}return t.abrupt("return",s.response);case 6:return t.abrupt("return",s);case 7:case"end":return t.stop()}}),t,this)})));return function(e,n,r,o){return t.apply(this,arguments)}}(),r.request=function(){var t=a(n().mark((function t(e,r,o,a){var i,s,c,f,p,l,d,h;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new Headers(a?null==a?void 0:a.headers:{}),o instanceof Headers?(s=o.get(R),c=o.get("cookie"),s&&i.set(R,s),c&&i.set("cookie",c)):o instanceof Request&&(f=new Headers(null==o?void 0:o.headers),p=f.get(R),l=f.get("cookie"),p&&i.set(R,p),l&&i.set("cookie",l)),d=JSON.stringify(o),"GET"!==e){t.next=7;break}d=void 0,t.next=14;break;case 7:if(!(o instanceof Request)){t.next=13;break}return t.next=10,new Response(o.body).text();case 10:d=t.sent,t.next=14;break;case 13:(o instanceof Headers||"{}"===JSON.stringify(o)||o&&"object"==typeof o&&0===Object.values(o).length)&&(d=void 0);case 14:return h=u({},a,{headers:i}),t.next=17,this.rawRequest(e,r,h,d);case 17:return t.abrupt("return",t.sent);case 18:case"end":return t.stop()}}),t,this)})));return function(e,n,r,o){return t.apply(this,arguments)}}(),e}(U),q=function(t){function e(e){var r;return(r=t.call(this,e)||this).login=function(){var t=a(n().mark((function t(e,o){var a,i,s,u,c,f,p,l,d,h,v;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=new Headers({"content-type":"application/json"}),i=new H(r),"true"!==(e instanceof Request?new URL(e.url).searchParams:new URLSearchParams).get("sso")){t.next=18;break}return t.next=7,r.listProviders(e.clone(),o);case 7:if(!((s=t.sent)&&s.status>=200&&s.status<300)){t.next=18;break}return t.next=11,new Response(s.body).json();case 11:if(!((u=t.sent).length>0)){t.next=18;break}if(!(u.length>1)){t.next=15;break}return t.abrupt("return",new Response(JSON.stringify(u),{status:200}));case 15:return a.set(R,u[0].tenantId),a.append("set-cookie","tenantId="+u[0].tenantId+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify({redirectURI:""+r.api.basePath+r.loginSSOUrl("okta")}),{status:200}));case 18:return t.next=20,i.post(e,r.loginUrl,o).catch((function(t){return console.error(t),t}));case 20:if(!((c=t.sent)instanceof _)){t.next=23;break}return t.abrupt("return",c.response);case 23:if(!(c&&c.status>=200&&c.status<300)){t.next=36;break}return t.next=26,c.json();case 26:return l=(null==(f=r.api)?void 0:f.cookieKey)+"="+(p=t.sent).token.jwt+"; path=/; samesite=lax; httponly;",a.append("set-cookie",l),h=null==(d=p.tenants)?void 0:d.values(),v=null==h?void 0:h.next().value,a.set(R,v),a.append("set-cookie","tenantId="+v+"; path=/; httponly;"),T(p.token.jwt),t.abrupt("return",new Response(JSON.stringify(p),{status:200,headers:a}));case 36:return t.next=38,c.text();case 38:return t.abrupt("return",new Response(t.sent,{status:c.status}));case 40:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.loginSSO=function(t){var e=function(){var e=a(n().mark((function e(o){var a,i,s,u,c,f;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new Headers,e.next=3,o.formData();case 3:return s=e.sent,e.next=6,s.get("access_token");case 6:return u=e.sent,e.next=9,s.get("tenantId");case 9:return c=e.sent,f=(null==(a=r.api)?void 0:a.cookieKey)+"="+u+"; path=/; samesite=lax; httponly;",T(u),i.append("set-cookie",f),i.set(R,c),i.append("set-cookie","tenantId="+c+"; path=/; httponly;"),i.set("Location",t),e.abrupt("return",new Response(null,{headers:i,status:303}));case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return e},r.loginSSOUrl=function(t){var e;return"/databases/"+encodeURIComponent(r.databaseId)+"/tenants/"+(null!=(e=r.tenantId)?e:"{tenantId}")+"/auth/oidc/providers/"+t+"/login"},r.signUp=function(){var t=a(n().mark((function t(e,o){var a,i,s,u,c,f,p,l,d;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new Headers,i=new H(r),t.next=4,i.post(e,r.signUpUrl,o).catch((function(t){return console.error(t),t}));case 4:if(!((s=t.sent)instanceof _)){t.next=7;break}return t.abrupt("return",s.response);case 7:if(!(s&&s.status>=200&&s.status<300)){t.next=19;break}return t.next=10,s.json();case 10:return l=(null==(u=r.api)?void 0:u.cookieKey)+"="+(null==(c=(p=t.sent).token)?void 0:c.jwt)+"; path=/; samesite=lax; httponly;",a.append("set-cookie",l),d=p.id,T(null==(f=p.token)?void 0:f.jwt),O(d),a.set(S,d),a.append("set-cookie","userId="+d+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify(p),{status:201,headers:a}));case 19:return t.next=21,s.text();case 21:return t.abrupt("return",new Response(t.sent,{status:s.status}));case 23:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listTenantProviders=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.get(e,r.listTenantProvidersUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.createProvider=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.post(e,r.updateProviderUrl("okta"),o));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.updateProvider=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.put(e,r.updateProviderUrl("okta"),o));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listProviders=function(){var t=a(n().mark((function t(e,o){var a,i,s;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new H(r),!e||!("body"in e)){t.next=5;break}return t.next=4,new Response(e.body).json();case 4:s=t.sent;case 5:return t.abrupt("return",i.get(e,r.providerUrl(null==(a=s)?void 0:a.email),o));case 6:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.getSSOCallbackUrl=function(t){var e;return"string"==typeof e?e=t:t instanceof Headers&&(e=D(t,r)),"/databases/"+r.databaseId+"/tenants/"+e+"/auth/oidc/callback"},r}c(e,t);var r=e.prototype;return r.updateProviderUrl=function(t){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers/"+encodeURIComponent(t)},r.providerUrl=function(t){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/auth/oidc/providers"+(t?"?email="+encodeURIComponent(t):"")},s(e,[{key:"loginUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users/login"}},{key:"signUpUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users"}},{key:"listTenantProvidersUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers"}}])}(U),K=function(t){function e(e){var r;return(r=t.call(this,e)||this).createTenantUser=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.post(e,r.tenantUsersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listUsers=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.usersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.updateUser=function(){var t=a(n().mark((function t(e,o,a){var i;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=new H(r),t.next=3,i.put(o,r.usersUrl+"/"+e,a);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.listTenantUsers=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.tenantUsersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.me=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.meUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r}return c(e,t),s(e,[{key:"baseUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)}},{key:"usersUrl",get:function(){return this.baseUrl+"/users"}},{key:"tenantUsersUrl",get:function(){var t;return this.baseUrl+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")+"/users"}},{key:"meUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users/me"}}])}(U),M=function(t){function e(e){var r;return(r=t.call(this,e)||this).createTenant=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.post(e,r.tenantsUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.getTenant=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.get(e,r.tenantUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r}return c(e,t),s(e,[{key:"tenantsUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants"}},{key:"tenantUrl",get:function(){var t;return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")}}])}(U),G=["afterCreate"],J=function(){function t(t,r){var o=this;this.pool=void 0,this.tenantId=void 0,this.userId=void 0,this.id=void 0,this.config=void 0,this.timer=void 0;var i=h(t,"[NileInstance]"),s=i.warn,c=i.info;this.id=r;var f=u({min:0,max:10,idleTimeoutMillis:3e4},t.db),l=f.afterCreate,d=p(f,G);t.db=f,this.config=t,c(this.config),this.pool=function(t,e){var n=h(e,"[pool]"),r=n.info,o=n.error;return new Proxy(t,{get:function(t,n){if("query"===n){e.db.connectionString||(e.user&&e.password?e.db.database||o("Database name is missing from the config. Call `nile.init()` or set NILEDB_ID in your .env"):o("Cannot connect to the database. User and/or password are missing. Generate them at https://console.thenile.dev"));var a=t[n];return function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return r.apply(void 0,e),a.apply(this,e)}}return t[n]}})}(new e.Pool(d),this.config),"function"==typeof l&&s("Providing an pool configuration will stop automatic tenant context setting."),this.startTimeout(),this.pool.on("connect",function(){var e=a(n().mark((function e(r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:c("pool connected"),z(t)(r,(function(t,e){t&&e.release()})),o.startTimeout();case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this.pool.on("error",function(){var t=a(n().mark((function t(e){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:c("pool failed",e);case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())}return t.prototype.startTimeout=function(){var t=this;this.timer&&clearTimeout(this.timer),this.timer=setTimeout(a(n().mark((function e(){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.pool.end();case 2:L.publish(k.EvictPool,t.id);case 3:case"end":return e.stop()}}),e)}))),this.config.db.idleTimeoutMillis)},t}();function z(t){var e=h(t,"[afterCreate]"),n=e.warn,r=e.info;return function(e,o){if(e.on("error",(function(t){n("Connection was terminated by server",t),o(t,e)})),t.tenantId){var a=["SET nile.tenant_id = '"+t.tenantId+"'"];t.userId&&(t.tenantId||n("A user id cannot be set in context without a tenant id"),a.push("SET nile.user_id = '"+t.userId+"'")),e.query(a.join(";"),(function(n){t.tenantId&&r("[tenant id]",t.tenantId),t.userId&&r("[user id]",t.userId),o(n,e)}))}o(null,e)}}var F=function(){function t(t){var e=this;this.connections=void 0;var n=h(t,"[DBManager]").info;this.connections=new Map;var r,o=this.makeId();n("constructor",o),this.connections.set(o,new J(new U(t),o)),r=function(t){t&&e.connections.has(t)&&e.connections.delete(t)},L.subscribe(k.EvictPool,r)}var e=t.prototype;return e.makeId=function(t,e){return t&&e?t+":"+e:t?""+t:"base"},e.getConnection=function(t){var e=h(t,"[DBManager]").info,n=this.makeId(t.tenantId,t.userId),r=this.connections.get(n);if(e("# of instances:",this.connections.size),r)return e("returning existing",n),r.pool;var o=new J(new U(t),n);return this.connections.set(n,o),e("created new",n),e("# of instances:",this.connections.size),o.pool},t}(),Y=function(t){return Buffer.from(JSON.stringify(t),"base64").toString()},W=function(t){return{auth:new q(t),users:new K(t),tenants:new M(t)}},$=function(){function t(t){var e=this;this.config=void 0,this.api=void 0,this.manager=void 0,this.servers=void 0,this.config=new U(t),this.servers=new Map,this.api=W(this.config),this.manager=new F(this.config),L.subscribe(k.Tenant,(function(t){e.tenantId=t})),L.subscribe(k.User,(function(t){e.userId=t})),L.subscribe(k.Token,(function(t){e.token=t}))}var e=t.prototype;return e.setConfig=function(t){this.config=new U(t)},e.init=function(){var t=a(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.config.configure(u({},this.config,e));case 2:return this.setConfig(r=t.sent),this.manager=new F(this.config),this.api=W(r),t.abrupt("return",this);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getInstance=function(e){var n=u({},this.config,e),r=function(t){var e=new U(t);return Y(e)}(n);if(r===Y(this.config))return this;var o=this.servers.get(r);if(o){var a=new U(n);return o.setConfig(a),o.tenantId=a.tenantId,o.userId=a.userId,o.token=a.api.token,o.databaseId=a.databaseId,o}return this.servers.set(r,new t(n)),this.servers.get(r)},s(t,[{key:"databaseId",set:function(t){t&&(this.config.databaseId=t,this.api.auth.databaseId=t,this.api.users.databaseId=t,this.api.tenants.databaseId=t)}},{key:"userId",get:function(){return this.config.userId},set:function(t){this.databaseId=this.config.databaseId,this.config.userId=t,this.api&&(this.api.auth.userId=this.config.userId,this.api.users.userId=this.config.userId,this.api.tenants.userId=this.config.userId)}},{key:"tenantId",get:function(){return this.config.tenantId},set:function(t){this.databaseId=this.config.databaseId,this.config.tenantId=t,this.api&&(this.api.auth.tenantId=t,this.api.users.tenantId=t,this.api.tenants.tenantId=t)}},{key:"token",get:function(){var t;return null==(t=this.config)||null==(t=t.api)?void 0:t.token},set:function(t){t&&(this.config.api.token=t,this.api&&(this.api.auth.api.token=t,this.api.users.api.token=t,this.api.tenants.api.token=t))}},{key:"db",get:function(){return this.manager.getConnection(this.config)}}])}();function Q(t){return V.apply(this,arguments)}function V(){return(V=a(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=new $(e),t.next=3,r.init();case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}module.exports=Q,exports.Server=$,exports.default=Q;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),require("dotenv/config");var t=require("jose"),e=require("pg");function n(){n=function(){return e};var t,e={},r=Object.prototype,o=r.hasOwnProperty,a=Object.defineProperty||function(t,e,n){t[e]=n.value},i="function"==typeof Symbol?Symbol:{},s=i.iterator||"@@iterator",u=i.asyncIterator||"@@asyncIterator",c=i.toStringTag||"@@toStringTag";function f(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{f({},"")}catch(t){f=function(t,e,n){return t[e]=n}}function p(t,e,n,r){var o=Object.create((e&&e.prototype instanceof y?e:y).prototype),i=new T(r||[]);return a(o,"_invoke",{value:_(t,n,i)}),o}function l(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=p;var d="suspendedStart",h="suspendedYield",v="executing",g="completed",b={};function y(){}function w(){}function m(){}var I={};f(I,s,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(R([])));x&&x!==r&&o.call(x,s)&&(I=x);var E=m.prototype=y.prototype=Object.create(I);function N(t){["next","throw","return"].forEach((function(e){f(t,e,(function(t){return this._invoke(e,t)}))}))}function U(t,e){function n(r,a,i,s){var u=l(t[r],t,a);if("throw"!==u.type){var c=u.arg,f=c.value;return f&&"object"==typeof f&&o.call(f,"__await")?e.resolve(f.__await).then((function(t){n("next",t,i,s)}),(function(t){n("throw",t,i,s)})):e.resolve(f).then((function(t){c.value=t,i(c)}),(function(t){return n("throw",t,i,s)}))}s(u.arg)}var r;a(this,"_invoke",{value:function(t,o){function a(){return new e((function(e,r){n(t,o,e,r)}))}return r=r?r.then(a,a):a()}})}function _(e,n,r){var o=d;return function(a,i){if(o===v)throw Error("Generator is already running");if(o===g){if("throw"===a)throw i;return{value:t,done:!0}}for(r.method=a,r.arg=i;;){var s=r.delegate;if(s){var u=L(s,r);if(u){if(u===b)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(o===d)throw o=g,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=v;var c=l(e,n,r);if("normal"===c.type){if(o=r.done?g:h,c.arg===b)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=g,r.method="throw",r.arg=c.arg)}}}function L(e,n){var r=n.method,o=e.iterator[r];if(o===t)return n.delegate=null,"throw"===r&&e.iterator.return&&(n.method="return",n.arg=t,L(e,n),"throw"===n.method)||"return"!==r&&(n.method="throw",n.arg=new TypeError("The iterator does not provide a '"+r+"' method")),b;var a=l(o,e.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,b;var i=a.arg;return i?i.done?(n[e.resultName]=i.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,b):i:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,b)}function P(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function T(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(P,this),this.reset(!0)}function R(e){if(e||""===e){var n=e[s];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,a=function n(){for(;++r<e.length;)if(o.call(e,r))return n.value=e[r],n.done=!1,n;return n.value=t,n.done=!0,n};return a.next=a}}throw new TypeError(typeof e+" is not iterable")}return w.prototype=m,a(E,"constructor",{value:m,configurable:!0}),a(m,"constructor",{value:w,configurable:!0}),w.displayName=f(m,c,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===w||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,m):(t.__proto__=m,f(t,c,"GeneratorFunction")),t.prototype=Object.create(E),t},e.awrap=function(t){return{__await:t}},N(U.prototype),f(U.prototype,u,(function(){return this})),e.AsyncIterator=U,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new U(p(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},N(E),f(E,c,"Generator"),f(E,s,(function(){return this})),f(E,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),n=[];for(var r in e)n.push(r);return n.reverse(),function t(){for(;n.length;){var r=n.pop();if(r in e)return t.value=r,t.done=!1,t}return t.done=!0,t}},e.values=R,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(O),!e)for(var n in this)"t"===n.charAt(0)&&o.call(this,n)&&!isNaN(+n.slice(1))&&(this[n]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var n=this;function r(r,o){return s.type="throw",s.arg=e,n.next=r,o&&(n.method="next",n.arg=t),!!o}for(var a=this.tryEntries.length-1;a>=0;--a){var i=this.tryEntries[a],s=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var u=o.call(i,"catchLoc"),c=o.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!c)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&o.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var a=r;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,b):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),b},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.finallyLoc===t)return this.complete(n.completion,n.afterLoc),O(n),b}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var n=this.tryEntries[e];if(n.tryLoc===t){var r=n.completion;if("throw"===r.type){var o=r.arg;O(n)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:R(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),b}},e}function r(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==typeof e?e:e+""}function o(t,e,n,r,o,a,i){try{var s=t[a](i),u=s.value}catch(t){return void n(t)}s.done?e(u):Promise.resolve(u).then(r,o)}function a(t){return function(){var e=this,n=arguments;return new Promise((function(r,a){var i=t.apply(e,n);function s(t){o(i,r,a,s,u,"next",t)}function u(t){o(i,r,a,s,u,"throw",t)}s(void 0)}))}}function i(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(t,r(o.key),o)}}function s(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function u(){return u=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},u.apply(this,arguments)}function c(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,f(t,e)}function f(t,e){return f=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},f(t,e)}function p(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)e.indexOf(n=a[r])>=0||(o[n]=t[n]);return o}function l(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function d(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(n)return(n=n.call(t)).next.bind(n);if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return l(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?l(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0;return function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function h(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return{info:function(){if(null!=t&&t.debug){for(var e,r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];(e=console).info.apply(e,["[niledb]"].concat(n,o))}},warn:function(){if(null!=t&&t.debug){for(var e,r=arguments.length,o=new Array(r),a=0;a<r;a++)o[a]=arguments[a];(e=console).warn.apply(e,["[niledb]"].concat(n,o))}},error:function(){for(var t,e=arguments.length,r=new Array(e),o=0;o<e;o++)r[o]=arguments[o];(t=console).error.apply(t,["[niledb]","[ERROR]"].concat(n,r))}}}var v=function(t){var e=t.config,n=t.logger,r=h(e,"[username]").info;return null!=e&&e.user?(n&&r(n,"config",e.user),String(null==e?void 0:e.user)):(n&&r(n,".env",process.env.NILEDB_USER),process.env.NILEDB_USER)},g=function(t){var e=t.config;return h(e,"[password]"),null!=e&&e.password?String(e.password):process.env.NILEDB_PASSWORD},b=function(t){var e,n,r,o=t.config,a=t.logger,i=h(o,"[token]").info;return null!=o&&null!=(e=o.api)&&e.token?(a&&i(a,"config",null==(n=o.api)?void 0:n.token),String(null==(r=o.api)?void 0:r.token)):process.env.NILEDB_TOKEN?(a&&i(a,".env",process.env.NILEDB_TOKEN),process.env.NILEDB_TOKEN):void 0},y=function(t){var e=t.config,n=t.logger,r=h(e,"[databaseName]").info;return null!=e&&e.databaseName?(n&&r(n,"config",e.databaseName),String(e.databaseName)):process.env.NILEDB_NAME?(n&&r(n,"config",process.env.NILEDB_NAME),process.env.NILEDB_NAME):null},w=function(t){var e,n,r=t.config,o=t.logger,a=h(r,"[basePath]").info,i=null==r||null==(e=r.api)?void 0:e.basePath;return i?(o&&a(o,"config",null==r||null==(n=r.api)?void 0:n.basePath),i):process.env.NILEDB_API?(o&&a(o,".env",process.env.NILEDB_API),"https://"+process.env.NILEDB_API):(o&&a(o,"default",process.env.NILEDB_API),"https://api.thenile.dev")};function m(t){var e=t.config,n=t.logger,r=h(e,"[db.host]").info;return null!=e&&e.db&&e.db.host?(n&&r(n,"config",null==e?void 0:e.db.host),e.db.host):process.env.NILEDB_HOST?(n&&r(n,".env",process.env.NILEDB_HOST),process.env.NILEDB_HOST):(n&&r(n,"default","db.thenile.dev"),"db.thenile.dev")}function I(t){var e,n,r=t.config,o=t.logger,a=h(r,"[db.port]").info;return null!=r&&null!=(e=r.db)&&e.port&&null!=r.db.port?(o&&a(o,"config",null==r?void 0:r.db.port),Number(null==(n=r.db)?void 0:n.port)):process.env.NILEDB_PORT?(o&&a(o,"config",process.env.NILEDB_PORT),Number(process.env.NILEDB_PORT)):(o&&a(o,"default",5432),5432)}var k,x=["host","port"],E=["host","port"],N=function(){return s((function(t){var e=t.basePath,n=t.cookieKey,r=t.token;this.cookieKey=void 0,this.basePath=void 0,this._token=void 0,this.basePath=e,this.cookieKey=n,this._token=r}),[{key:"token",get:function(){return this._token},set:function(t){this._token=t}}])}(),U=function(){return s((function(t){var e,r,o,i=this;this.user=void 0,this.password=void 0,this.databaseId=void 0,this.databaseName=void 0,this.debug=void 0,this.db=void 0,this.api=void 0,this._tenantId=void 0,this._userId=void 0,this.configure=function(){var t=a(n().mark((function t(e){var r,o,a,s,c,f,l,d,k,E,U,_,L,P,O,T,R,S,j,D,B,A,C,H,q,K,M;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(s=h(e,"[init]"),c=s.info,f=s.error,l={config:e},d=null!=(r=e.db)?r:{},k=d.host,E=d.port,U=p(d,x),_=null!=k?k:m(l),L=null!=E?E:I(l),!(_&&i.databaseName&&i.databaseId)){t.next=8;break}return c("Alreaady configured, aborting fetch"),t.abrupt("return",i);case 8:return P=w(l),O=y({config:e,logger:"getInfo"}),T=new URL(P+"/databases/configure"),O&&T.searchParams.set("databaseName",O),c(T.href),t.next=15,fetch(T,{headers:{Authorization:"Bearer "+(n={config:e},v(n)+":"+g(n))}});case 15:return j=(R=t.sent).clone(),t.prev=17,t.next=20,R.json();case 20:D=t.sent,404===R.status&&c("is the configured databaseName correct?"),S=D.status&&"READY"!==D.status?{message:"Database is not ready yet"}:D,t.next=32;break;case 25:return t.prev=25,t.t0=t.catch(17),t.next=29,j.text();case 29:f(B=t.sent),S={message:B};case 32:if(c("[fetched database]",S),!("message"in S)){t.next=41;break}if(!("statusCode"in S)){t.next=40;break}throw f(S),new Error("HTTP error has occured");case 40:throw new Error("Unable to auto-configure. Please set or remove NILEDB_API, NILEDB_NAME, and NILEDB_HOST in your .env file.");case 41:"object"==typeof S&&(C=(A=S).apiHost,H=A.dbHost,q=A.name,i.databaseId=A.id,i.databaseName=q,K=new URL(H),M=new URL(C),_=K.host,P=M.origin);case 42:return i.api=new N({basePath:P,cookieKey:null!=(o=null==e||null==(a=e.api)?void 0:a.cookieKey)?o:"token",token:b({config:e})}),i.db=u({user:i.user,password:i.password,host:_,port:L,database:i.databaseName},U),c("[config set]",i),t.abrupt("return",i);case 46:case"end":return t.stop()}var n}),t,null,[[17,25]])})));return function(e){return t.apply(this,arguments)}}();var s,c,f,l,d={config:t};this.databaseId=(f=(s=d).logger,l=h(c=s.config,"[databaseId]").info,null!=c&&c.databaseId?(f&&l(f,"config",c.databaseId),String(null==c?void 0:c.databaseId)):(f&&l(f,"env",process.env.NILEDB_ID),process.env.NILEDB_ID)),this.user=v(d),this.password=g(d),this.databaseName=y(d),this._tenantId=function(t){var e=t.config,n=t.logger,r=h(e,"[tenantId]").info;return null!=e&&e.tenantId?(n&&r(n,"config",e.tenantId),e.tenantId):process.env.NILEDB_TENANT?(n&&r(n,".env",process.env.NILEDB_TENANT),process.env.NILEDB_TENANT):null}(d),this.debug=Boolean(null==t?void 0:t.debug),this._userId=null==t?void 0:t.userId;var k=w(d),U=null!=(e=null==t?void 0:t.db)?e:{},_=U.host,L=U.port,P=p(U,E),O=null!=_?_:m(d),T=null!=L?L:I(d);this.api=new N({basePath:k,cookieKey:null!=(r=null==t||null==(o=t.api)?void 0:o.cookieKey)?r:"token",token:b({config:t})}),this.db=u({user:this.user,password:this.password,host:O,port:T},P),this.databaseName&&(this.db.database=this.databaseName)}),[{key:"tenantId",get:function(){return this._tenantId},set:function(t){this._tenantId=t}},{key:"userId",get:function(){return this._userId},set:function(t){this._userId=t}}])}(),_=function(t,e){this.response=void 0,this.response=new Response(t,e)};!function(t){t.User="userId",t.Tenant="tenantId",t.Token="token",t.EvictPool="EvictPool"}(k||(k={}));var L=new(function(){function t(){this.events=void 0,this.events={}}var e=t.prototype;return e.publish=function(t,e){var n=this.events[t];if(n)for(var r,o=d(n);!(r=o()).done;)(0,r.value)(e)},e.subscribe=function(t,e){this.events[t]||(this.events[t]=[]),this.events[t].push(e)},t}()),P=function(t){L.publish(k.Tenant,t)},O=function(t){L.publish(k.User,t)},T=function(t){L.publish(k.Token,t)},R="x-nile-tenantId",S="x-nile-userId";function j(t,e){var n,r=null==(n=t.get("cookie"))?void 0:n.split("; "),o={};if(r)for(var a,i=d(r);!(a=i()).done;){var s=a.value.split("="),u=s.slice(1).join("=");o[s[0]]=u}if(r)for(var c,f=d(r);!(c=f()).done;){var p=c.value.split("="),l=p.slice(1).join("=");o[p[0]]=l}return e?o[e]:null}function D(t,e){var n,r=j(t,"tenantId");return null!=(n=null!=r?r:null==t?void 0:t.get(R))?n:e.tenantId}function B(e,n){var r,o=j(e,n.api.cookieKey);return o?t.decodeJwt(o).sub:null!=(r=null==e?void 0:e.get(S))?r:n.userId}function A(t,e,n){return C.apply(this,arguments)}function C(){return(C=a(n().mark((function t(e,r,o){var a,i,s,c,f,p,l,d,v,g,y,w,m,I,k,x,E,N,U,L;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(c=h(e,"[server]"),f=c.info,p=c.error,l=""+(null==(a=e.api)?void 0:a.basePath)+r,d=null==(i=e.api)?void 0:i.cookieKey,v=new Headers(null==o?void 0:o.headers),(g=new Headers).set("content-type","application/json; charset=utf-8"),v.get("Authorization")||((y=j(v,d))?g.set("Authorization","Bearer "+y):b({config:e})&&g.set("Authorization","Bearer "+b({config:e}))),w=D(v,e),P(w),m=B(v,e),O(m),!l.includes("{tenantId}")||w){t.next=14;break}return t.abrupt("return",new _("tenantId is not set for request",{status:400}));case 14:return I=l.replace("{tenantId}",encodeURIComponent(String(w))).replace("{userId}",encodeURIComponent(String(m))),f("[fetch]",I),t.next=18,fetch(I,u({},o,{headers:g})).catch((function(t){p("[fetch]","[response]",t)}));case 18:if(!((k=t.sent)&&k.status>=200&&k.status<300)){t.next=27;break}if("function"!=typeof k.clone){t.next=26;break}return t.t0=f,t.next=24,k.clone().json();case 24:t.t1=t.sent,(0,t.t0)("[fetch]","[response]",t.t1);case 26:return t.abrupt("return",k);case 27:return E="function"==typeof(null==k?void 0:k.clone)?k.clone():null,N="",t.prev=29,t.next=32,null==k?void 0:k.json();case 32:x=t.sent,t.next=43;break;case 35:if(t.prev=35,t.t2=t.catch(29),!E){t.next=42;break}return t.next=40,E.text();case 40:(N=t.sent)&&p("[fetch]","[response]","[status: "+E.status+"]",N);case 42:N||p("[fetch]","[response]",t.t2);case 43:if(!N){t.next=45;break}return t.abrupt("return",new _(N,{status:null==E?void 0:E.status}));case 45:if(!x||!("message"in x)){t.next=49;break}return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]",U=x.message),t.abrupt("return",new _(U,{status:400}));case 49:if(!x||!("errors"in x)){t.next=53;break}return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]",L=x.errors[0]),t.abrupt("return",new _(L,{status:400}));case 53:return p("[fetch]","[response]","[status: "+(null==E?void 0:E.status)+"]","UNHANDLED ERROR"),t.abrupt("return",new _(null,{status:null!=(s=null==k?void 0:k.status)?s:500}));case 55:case"end":return t.stop()}}),t,null,[[29,35]])})))).apply(this,arguments)}var H=function(t){function e(e){var r;return(r=t.call(this,e)||this).post=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("POST",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.get=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("GET",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.put=function(){var t=a(n().mark((function t(e,o,a){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,r.request("PUT",o,e,a);case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r}c(e,t);var r=e.prototype;return r.rawRequest=function(){var t=a(n().mark((function t(e,r,o,a){var i,s;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=u({},o,{body:a,method:e}),t.next=3,A(this,r,i);case 3:if(!((s=t.sent)instanceof _)){t.next=6;break}return t.abrupt("return",s.response);case 6:return t.abrupt("return",s);case 7:case"end":return t.stop()}}),t,this)})));return function(e,n,r,o){return t.apply(this,arguments)}}(),r.request=function(){var t=a(n().mark((function t(e,r,o,a){var i,s,c,f,p,l,d,h;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new Headers(a?null==a?void 0:a.headers:{}),o instanceof Headers?(s=o.get(R),c=o.get("cookie"),s&&i.set(R,s),c&&i.set("cookie",c)):o instanceof Request&&(f=new Headers(null==o?void 0:o.headers),p=f.get(R),l=f.get("cookie"),p&&i.set(R,p),l&&i.set("cookie",l)),d=JSON.stringify(o),"GET"!==e){t.next=7;break}d=void 0,t.next=14;break;case 7:if(!(o instanceof Request)){t.next=13;break}return t.next=10,new Response(o.body).text();case 10:d=t.sent,t.next=14;break;case 13:(o instanceof Headers||"{}"===JSON.stringify(o)||o&&"object"==typeof o&&0===Object.values(o).length)&&(d=void 0);case 14:return h=u({},a,{headers:i}),t.next=17,this.rawRequest(e,r,h,d);case 17:return t.abrupt("return",t.sent);case 18:case"end":return t.stop()}}),t,this)})));return function(e,n,r,o){return t.apply(this,arguments)}}(),e}(U),q=function(t){function e(e){var r;return(r=t.call(this,e)||this).login=function(){var t=a(n().mark((function t(e,o){var a,i,s,u,c,f,p,l,d,h,v;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(a=new Headers({"content-type":"application/json"}),i=new H(r),"true"!==(e instanceof Request?new URL(e.url).searchParams:new URLSearchParams).get("sso")){t.next=18;break}return t.next=7,r.listProviders(e.clone(),o);case 7:if(!((s=t.sent)&&s.status>=200&&s.status<300)){t.next=18;break}return t.next=11,new Response(s.body).json();case 11:if(!((u=t.sent).length>0)){t.next=18;break}if(!(u.length>1)){t.next=15;break}return t.abrupt("return",new Response(JSON.stringify(u),{status:200}));case 15:return a.set(R,u[0].tenantId),a.append("set-cookie","tenantId="+u[0].tenantId+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify({redirectURI:""+r.api.basePath+r.loginSSOUrl("okta")}),{status:200}));case 18:return t.next=20,i.post(e,r.loginUrl,o).catch((function(t){return console.error(t),t}));case 20:if(!((c=t.sent)instanceof _)){t.next=23;break}return t.abrupt("return",c.response);case 23:if(!(c&&c.status>=200&&c.status<300)){t.next=36;break}return t.next=26,c.json();case 26:return l=(null==(f=r.api)?void 0:f.cookieKey)+"="+(p=t.sent).token.jwt+"; path=/; samesite=lax; httponly;",a.append("set-cookie",l),h=null==(d=p.tenants)?void 0:d.values(),v=null==h?void 0:h.next().value,a.set(R,v),a.append("set-cookie","tenantId="+v+"; path=/; httponly;"),T(p.token.jwt),t.abrupt("return",new Response(JSON.stringify(p),{status:200,headers:a}));case 36:return t.next=38,c.text();case 38:return t.abrupt("return",new Response(t.sent,{status:c.status}));case 40:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.loginSSO=function(t){var e=function(){var e=a(n().mark((function e(o){var a,i,s,u,c,f;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new Headers,e.next=3,o.formData();case 3:return s=e.sent,e.next=6,s.get("access_token");case 6:return u=e.sent,e.next=9,s.get("tenantId");case 9:return c=e.sent,f=(null==(a=r.api)?void 0:a.cookieKey)+"="+u+"; path=/; samesite=lax; httponly;",T(u),i.append("set-cookie",f),i.set(R,c),i.append("set-cookie","tenantId="+c+"; path=/; httponly;"),i.set("Location",t),e.abrupt("return",new Response(null,{headers:i,status:303}));case 17:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return e},r.loginSSOUrl=function(t){var e;return"/databases/"+encodeURIComponent(r.databaseId)+"/tenants/"+(null!=(e=r.tenantId)?e:"{tenantId}")+"/auth/oidc/providers/"+t+"/login"},r.signUp=function(){var t=a(n().mark((function t(e,o){var a,i,s,u,c,f,p,l,d;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new Headers,i=new H(r),t.next=4,i.post(e,r.signUpUrl,o).catch((function(t){return console.error(t),t}));case 4:if(!((s=t.sent)instanceof _)){t.next=7;break}return t.abrupt("return",s.response);case 7:if(!(s&&s.status>=200&&s.status<300)){t.next=19;break}return t.next=10,s.json();case 10:return l=(null==(u=r.api)?void 0:u.cookieKey)+"="+(null==(c=(p=t.sent).token)?void 0:c.jwt)+"; path=/; samesite=lax; httponly;",a.append("set-cookie",l),d=p.id,T(null==(f=p.token)?void 0:f.jwt),O(d),a.set(S,d),a.append("set-cookie","userId="+d+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify(p),{status:201,headers:a}));case 19:return t.next=21,s.text();case 21:return t.abrupt("return",new Response(t.sent,{status:s.status}));case 23:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listTenantProviders=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.get(e,r.listTenantProvidersUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.createProvider=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.post(e,r.updateProviderUrl("okta"),o));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.updateProvider=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.put(e,r.updateProviderUrl("okta"),o));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listProviders=function(){var t=a(n().mark((function t(e,o){var a,i,s;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new H(r),!e||!("body"in e)){t.next=5;break}return t.next=4,new Response(e.body).json();case 4:s=t.sent;case 5:return t.abrupt("return",i.get(e,r.providerUrl(null==(a=s)?void 0:a.email),o));case 6:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.getSSOCallbackUrl=function(t){var e;return"string"==typeof e?e=t:t instanceof Headers&&(e=D(t,r)),"/databases/"+r.databaseId+"/tenants/"+e+"/auth/oidc/callback"},r}c(e,t);var r=e.prototype;return r.updateProviderUrl=function(t){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers/"+encodeURIComponent(t)},r.providerUrl=function(t){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/auth/oidc/providers"+(t?"?email="+encodeURIComponent(t):"")},s(e,[{key:"loginUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users/login"}},{key:"signUpUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users"}},{key:"listTenantProvidersUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers"}}])}(U),K=function(t){function e(e){var r;return(r=t.call(this,e)||this).createTenantUser=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.post(e,r.tenantUsersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.listUsers=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.usersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.updateUser=function(){var t=a(n().mark((function t(e,o,a){var i;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=new H(r),t.next=3,i.put(o,r.usersUrl+"/"+e,a);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n,r){return t.apply(this,arguments)}}(),r.listTenantUsers=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.tenantUsersUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.me=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.next=3,a.get(e,r.meUrl,o);case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r}return c(e,t),s(e,[{key:"baseUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)}},{key:"usersUrl",get:function(){return this.baseUrl+"/users"}},{key:"tenantUsersUrl",get:function(){var t;return this.baseUrl+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")+"/users"}},{key:"meUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/users/me"}}])}(U),M=function(t){function e(e){var r;return(r=t.call(this,e)||this).createTenant=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.post(e,r.tenantsUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r.getTenant=function(){var t=a(n().mark((function t(e,o){var a;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return a=new H(r),t.abrupt("return",a.get(e,r.tenantUrl,o));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),r}return c(e,t),s(e,[{key:"tenantsUrl",get:function(){return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants"}},{key:"tenantUrl",get:function(){var t;return"/databases/"+encodeURIComponent(this.databaseId)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")}}])}(U),G=["afterCreate"],J=function(){function t(t,r){var o=this;this.pool=void 0,this.tenantId=void 0,this.userId=void 0,this.id=void 0,this.config=void 0,this.timer=void 0;var i=h(t,"[NileInstance]"),s=i.warn,c=i.info;this.id=r;var f=u({min:0,max:10,idleTimeoutMillis:3e4},t.db),l=f.afterCreate,d=p(f,G);t.db=f,this.config=t,c(this.config),this.pool=function(t,e){var n=h(e,"[pool]"),r=n.info,o=n.error;return new Proxy(t,{get:function(t,n){if("query"===n){e.db.connectionString||(e.user&&e.password?e.db.database||o("Database name is missing from the config. Call `nile.init()` or set NILEDB_ID in your .env"):o("Cannot connect to the database. User and/or password are missing. Generate them at https://console.thenile.dev"));var a=t[n];return function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return r.apply(void 0,e),a.apply(this,e)}}return t[n]}})}(new e.Pool(d),this.config),"function"==typeof l&&s("Providing an pool configuration will stop automatic tenant context setting."),this.startTimeout(),this.pool.on("connect",function(){var e=a(n().mark((function e(r){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:c("pool connected"),z(t)(r,(function(t,e){t&&e.release()})),o.startTimeout();case 4:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),this.pool.on("error",function(){var t=a(n().mark((function t(e){return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:c("pool failed",e);case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}())}return t.prototype.startTimeout=function(){var t=this;this.timer&&clearTimeout(this.timer),this.timer=setTimeout(a(n().mark((function e(){return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t.pool.end();case 2:L.publish(k.EvictPool,t.id);case 3:case"end":return e.stop()}}),e)}))),this.config.db.idleTimeoutMillis)},t}();function z(t){var e=h(t,"[afterCreate]"),n=e.warn,r=e.info;return function(e,o){if(e.on("error",(function(t){n("Connection was terminated by server",t),o(t,e)})),t.tenantId){var a=["SET nile.tenant_id = '"+t.tenantId+"'"];t.userId&&(t.tenantId||n("A user id cannot be set in context without a tenant id"),a.push("SET nile.user_id = '"+t.userId+"'")),e.query(a.join(";"),(function(n){t.tenantId&&r("[tenant id]",t.tenantId),t.userId&&r("[user id]",t.userId),o(n,e)}))}o(null,e)}}var F=function(){function t(t){var e=this;this.connections=void 0;var n=h(t,"[DBManager]").info;this.connections=new Map;var r,o=this.makeId();n("constructor",o),this.connections.set(o,new J(new U(t),o)),r=function(t){t&&e.connections.has(t)&&e.connections.delete(t)},L.subscribe(k.EvictPool,r)}var e=t.prototype;return e.makeId=function(t,e){return t&&e?t+":"+e:t?""+t:"base"},e.getConnection=function(t){var e=h(t,"[DBManager]").info,n=this.makeId(t.tenantId,t.userId),r=this.connections.get(n);if(e("# of instances:",this.connections.size),r)return e("returning existing",n),r.pool;var o=new J(new U(t),n);return this.connections.set(n,o),e("created new",n),e("# of instances:",this.connections.size),o.pool},t}(),Y=function(t){return Buffer.from(JSON.stringify(t),"base64").toString()},W=function(t){return{auth:new q(t),users:new K(t),tenants:new M(t)}},$=function(){function t(t){var e=this;this.config=void 0,this.api=void 0,this.manager=void 0,this.servers=void 0,this.config=new U(t),this.servers=new Map,this.api=W(this.config),this.manager=new F(this.config),L.subscribe(k.Tenant,(function(t){e.tenantId=t})),L.subscribe(k.User,(function(t){e.userId=t})),L.subscribe(k.Token,(function(t){e.token=t}))}var e=t.prototype;return e.setConfig=function(t){this.config=new U(t)},e.init=function(){var t=a(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,this.config.configure(u({},this.config,e));case 2:return this.setConfig(r=t.sent),this.manager=new F(this.config),this.api=W(r),t.abrupt("return",this);case 7:case"end":return t.stop()}}),t,this)})));return function(e){return t.apply(this,arguments)}}(),e.getInstance=function(e){var n=u({},this.config,e),r=function(t){var e=new U(t);return Y(e)}(n);if(r===Y(this.config))return this;var o=this.servers.get(r);if(o){var a=new U(n);return o.setConfig(a),o.tenantId=a.tenantId,o.userId=a.userId,o.token=a.api.token,o.databaseId=a.databaseId,o}return this.servers.set(r,new t(n)),this.servers.get(r)},s(t,[{key:"databaseId",set:function(t){t&&(this.config.databaseId=t,this.api.auth.databaseId=t,this.api.users.databaseId=t,this.api.tenants.databaseId=t)}},{key:"userId",get:function(){return this.config.userId},set:function(t){this.databaseId=this.config.databaseId,this.config.userId=t,this.api&&(this.api.auth.userId=this.config.userId,this.api.users.userId=this.config.userId,this.api.tenants.userId=this.config.userId)}},{key:"tenantId",get:function(){return this.config.tenantId},set:function(t){this.databaseId=this.config.databaseId,this.config.tenantId=t,this.api&&(this.api.auth.tenantId=t,this.api.users.tenantId=t,this.api.tenants.tenantId=t)}},{key:"token",get:function(){var t;return null==(t=this.config)||null==(t=t.api)?void 0:t.token},set:function(t){t&&(this.config.api.token=t,this.api&&(this.api.auth.api.token=t,this.api.users.api.token=t,this.api.tenants.api.token=t))}},{key:"db",get:function(){return this.manager.getConnection(this.config)}}])}();function Q(){return(Q=a(n().mark((function t(e){var r;return n().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return r=new $(e),t.next=3,r.init();case 3:return t.abrupt("return",t.sent);case 4:case"end":return t.stop()}}),t)})))).apply(this,arguments)}exports.Server=$,exports.default=function(t){return Q.apply(this,arguments)};
|
|
2
2
|
//# sourceMappingURL=server.cjs.production.min.js.map
|