@niledatabase/server 1.0.0-alpha.199 → 1.0.0-alpha.200
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.
- package/dist/server.cjs.development.js +28 -6
- package/dist/server.cjs.development.js.map +1 -1
- package/dist/server.cjs.production.min.js +1 -1
- package/dist/server.cjs.production.min.js.map +1 -1
- package/dist/server.esm.js +28 -6
- package/dist/server.esm.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/utils/Config.d.ts +2 -4
- package/package.json +3 -3
|
@@ -1373,9 +1373,12 @@ var Tenants = /*#__PURE__*/function (_Config) {
|
|
|
1373
1373
|
var NileDatabase = /*#__PURE__*/function () {
|
|
1374
1374
|
function NileDatabase(config, id) {
|
|
1375
1375
|
var _config$db$connection,
|
|
1376
|
+
_config$db$connection2,
|
|
1376
1377
|
_this = this;
|
|
1377
1378
|
this.id = id;
|
|
1378
|
-
var poolConfig = {
|
|
1379
|
+
var poolConfig = _extends({
|
|
1380
|
+
min: 0
|
|
1381
|
+
}, config.db.pool);
|
|
1379
1382
|
var afterCreate = function afterCreate(conn, done) {
|
|
1380
1383
|
var query = ["SET nile.tenant_id = '" + config.tenantId + "'"];
|
|
1381
1384
|
if (config.userId) {
|
|
@@ -1408,7 +1411,7 @@ var NileDatabase = /*#__PURE__*/function () {
|
|
|
1408
1411
|
this.config = _extends({}, config, {
|
|
1409
1412
|
db: _extends({}, config.db, {
|
|
1410
1413
|
connection: _extends({}, config.db.connection, {
|
|
1411
|
-
database: (_config$db$connection = config.db.connection.database) != null ? _config$db$connection : config.database
|
|
1414
|
+
database: (_config$db$connection = (_config$db$connection2 = config.db.connection) == null ? void 0 : _config$db$connection2.database) != null ? _config$db$connection : config.database
|
|
1412
1415
|
}),
|
|
1413
1416
|
pool: poolConfig
|
|
1414
1417
|
})
|
|
@@ -1430,10 +1433,20 @@ var NileDatabase = /*#__PURE__*/function () {
|
|
|
1430
1433
|
if (this.timer) {
|
|
1431
1434
|
clearTimeout(this.timer);
|
|
1432
1435
|
}
|
|
1433
|
-
this.timer = setTimeout(function () {
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1436
|
+
this.timer = setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
1437
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
1438
|
+
while (1) switch (_context.prev = _context.next) {
|
|
1439
|
+
case 0:
|
|
1440
|
+
_context.next = 2;
|
|
1441
|
+
return _this2.knex.destroy();
|
|
1442
|
+
case 2:
|
|
1443
|
+
evictPool(_this2.id);
|
|
1444
|
+
case 3:
|
|
1445
|
+
case "end":
|
|
1446
|
+
return _context.stop();
|
|
1447
|
+
}
|
|
1448
|
+
}, _callee);
|
|
1449
|
+
})), (_this$config$db$pool$ = this.config.db.pool.idleTimeoutMillis) != null ? _this$config$db$pool$ : 30000);
|
|
1437
1450
|
};
|
|
1438
1451
|
return NileDatabase;
|
|
1439
1452
|
}();
|
|
@@ -1528,6 +1541,15 @@ var Server = /*#__PURE__*/function () {
|
|
|
1528
1541
|
}
|
|
1529
1542
|
var existing = this.servers.get(serverId);
|
|
1530
1543
|
if (existing) {
|
|
1544
|
+
// be sure the config is up to date
|
|
1545
|
+
var updatedConfig = new Config(_config);
|
|
1546
|
+
existing.setConfig(updatedConfig);
|
|
1547
|
+
// propagage special config items
|
|
1548
|
+
existing.tenantId = updatedConfig.tenantId;
|
|
1549
|
+
existing.userId = updatedConfig.userId;
|
|
1550
|
+
existing.token = updatedConfig.api.token;
|
|
1551
|
+
existing.workspace = updatedConfig.workspace;
|
|
1552
|
+
existing.database = updatedConfig.database;
|
|
1531
1553
|
return existing;
|
|
1532
1554
|
}
|
|
1533
1555
|
this.servers.set(serverId, new Server(_config));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Config.ts","../src/utils/ResponseError.ts","../src/utils/Event/index.ts","../src/utils/fetch.ts","../src/utils/Requester/index.ts","../src/auth/index.ts","../src/users/index.ts","../src/tenants/index.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/Server.ts","../src/index.ts"],"sourcesContent":["import { PgConnectionConfig, ServerConfig } from '../types';\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nconst niledatabase_url = 'thenile.dev';\n\ntype DBConfig = {\n connection: PgConnectionConfig;\n // eslint-disable-next-line @typescript-eslint/ban-types\n pool?: undefined | { afterCreate?: Function };\n};\nexport class Config {\n database: string;\n workspace: string;\n\n db: DBConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined | null;\n private _userId?: string | undefined | null;\n\n public get tenantId(): string | undefined | null {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined | null) {\n this._tenantId = value;\n }\n\n public get userId(): string | undefined | null {\n return this._userId;\n }\n\n public set userId(value: string | undefined | null) {\n this._userId = value;\n }\n\n constructor(_config?: ServerConfig) {\n // always provided\n this.database = String(_config?.database);\n this.workspace = String(_config?.workspace);\n\n // set the context\n this._tenantId = _config?.tenantId;\n this._userId = _config?.userId;\n\n // api config\n this.api = new ApiConfig({\n basePath: _config?.api?.basePath ?? `https://api.${niledatabase_url}`,\n cookieKey: _config?.api?.cookieKey ?? 'token',\n token: _config?.api?.token,\n });\n\n // db config\n const host: string =\n _config?.db &&\n _config.db.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'host' in _config.db.connection\n ? String(_config.db.connection.host)\n : `db.${niledatabase_url}`;\n\n const port: number =\n _config?.db?.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'port' in _config.db.connection\n ? Number(_config.db?.connection?.port)\n : 5432;\n\n const connection = {\n host,\n port,\n database: _config?.database,\n ...(typeof _config?.db?.connection === 'object'\n ? _config.db.connection\n : {}),\n } as PgConnectionConfig;\n\n this.db = {\n ..._config?.db,\n connection,\n };\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","type BusValues = undefined | null | string;\ntype EventFn = (params: BusValues) => void;\nenum Events {\n User = 'userId',\n Tenant = 'tenantId',\n Token = 'token',\n EvictPool = 'EvictPool',\n}\nclass Eventer {\n events: { [key: string]: EventFn[] };\n constructor() {\n this.events = {};\n }\n publish(eventName: string, value: BusValues) {\n // Get all the callback functions of the current event\n const callbackList = this.events[eventName];\n\n // execute each callback function\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n // initialize this event\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n\n // store the callback function of the subscriber\n this.events[eventName].push(callback);\n }\n}\n\n// tenantId manager\nconst eventer = new Eventer();\n\nexport const updateTenantId = (tenantId: BusValues) => {\n eventer.publish(Events.Tenant, tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n eventer.subscribe(Events.Tenant, cb);\n\nexport const updateUserId = (userId: BusValues) => {\n eventer.publish(Events.User, userId);\n};\n\nexport const watchUserId = (cb: EventFn) => eventer.subscribe(Events.User, cb);\n\nexport const updateToken = (val: BusValues) => {\n eventer.publish(Events.Token, val);\n};\n\nexport const watchToken = (cb: EventFn) => eventer.subscribe(Events.Token, cb);\n\nexport const watchEvictPool = (cb: EventFn) =>\n eventer.subscribe(Events.EvictPool, cb);\nexport const evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\n};\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\n\nexport const X_NILE_TENANT = 'x-nile-tenantId';\nexport const X_NILE_USER_ID = 'x-nile-userId';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config: Config) {\n const cookieTenant = getTokenFromCookie(headers, 'tenantId');\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers();\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (config.api?.token) {\n basicHeaders.set('Authorization', `Bearer ${config.api?.token}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n return response;\n }\n\n let res;\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n /* do the default */\n }\n if (res && 'message' in res) {\n const { message } = res;\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n return new ResponseError(message, { status: 400 });\n }\n\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three optios here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n isEmpty(req) ||\n (isObject(req) && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n post = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('POST', url, req, init);\n };\n\n get = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('GET', url, req, init);\n };\n\n put = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('PUT', url, req, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\nimport { ResponseError } from '../utils/ResponseError';\nimport {\n X_NILE_TENANT,\n X_NILE_USER_ID,\n getTenantFromHttp,\n} from '../utils/fetch';\nimport { updateToken, updateUserId } from '../utils/Event';\n\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/login`;\n }\n\n login = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers({ 'content-type': 'application/json' });\n const _requester = new Requester(this);\n\n const params =\n req instanceof Request\n ? new URL(req.url).searchParams\n : new URLSearchParams();\n\n const sso = params.get('sso');\n\n if (sso === 'true') {\n const providerRes = await this.listProviders(\n (req as Request).clone(),\n init\n );\n // if you have a provider, log them in\n if (\n providerRes &&\n providerRes.status >= 200 &&\n providerRes.status < 300\n ) {\n const providers = await new Response(providerRes.body).json();\n if (providers.length > 0) {\n if (providers.length > 1) {\n return new Response(JSON.stringify(providers), { status: 200 });\n // a user has to make a choice\n }\n\n // is there a way to do this? probably not.\n headers.set(X_NILE_TENANT, providers[0].tenantId);\n headers.append(\n 'set-cookie',\n `tenantId=${providers[0].tenantId}; path=/; httponly;`\n );\n // const ssoResp = await this.loginSSO(req);\n return new Response(\n JSON.stringify({\n redirectURI: `${this.api.basePath}${this.loginSSOUrl('okta')}`,\n }),\n { status: 200 }\n );\n // make it a client side redirect, because of the headers\n // if there is no provider, require a password.\n }\n }\n }\n\n const res = await _requester.post(req, this.loginUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { tenants } = token;\n const tenant = tenants?.values();\n const tenantId = tenant?.next().value;\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n updateToken(token.token.jwt);\n\n return new Response(JSON.stringify(token), { status: 200, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n loginSSO = (redirectUrl: string) => {\n const ssoLogin = async (\n req: NileRequest<unknown>\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const headers = new Headers();\n const body = await (req as Request).formData();\n const accessToken = (await body.get('access_token')) as string;\n const tenantId = (await body.get('tenantId')) as string;\n const cookie = `${this.api?.cookieKey}=${accessToken}; path=/; samesite=lax; httponly;`;\n updateToken(accessToken);\n headers.append('set-cookie', cookie);\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n headers.set('Location', redirectUrl);\n return new Response(null, {\n headers,\n status: 303,\n });\n };\n return ssoLogin;\n };\n\n loginSSOUrl = (provider: string) => {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users`;\n }\n\n signUp = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers();\n const _requester = new Requester(this);\n const res = await _requester.post(req, this.signUpUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token?.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { id } = token;\n updateToken(token.token?.jwt);\n updateUserId(id);\n headers.set(X_NILE_USER_ID, id);\n headers.append('set-cookie', `userId=${id}; path=/; httponly;`);\n return new Response(JSON.stringify(token), { status: 201, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n updateProviderUrl(providerName: string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers`;\n }\n\n listTenantProviders = async (\n req: NileRequest<void | Headers>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.post(req, this.updateProviderUrl(providerName), init);\n };\n\n updateProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.put(req, this.updateProviderUrl(providerName), init);\n };\n\n providerUrl(email?: undefined | string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(\n this.database\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n let body: { email: string } | undefined;\n // this is a get. Get the email from the response body so the request is filtered.\n if (req && 'body' in req) {\n body = await new Response(req.body as BodyInit).json();\n }\n return _requester.get(req, this.providerUrl(body?.email), init);\n };\n\n getSSOCallbackUrl = (param: Headers | string) => {\n let tenantId;\n if (typeof tenantId === 'string') {\n tenantId = param;\n } else if (param instanceof Headers) {\n tenantId = getTenantFromHttp(param, this);\n }\n\n return `${this.api.basePath}/workspaces/${this.workspace}/databases/${this.database}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantUsersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<RestModels.User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants`;\n }\n get tenantUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.post(req, this.tenantsUrl, init);\n };\n\n getTenant = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport knex, { Knex } from 'knex';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\n\n// doing this now, to provide flexibility later\nclass NileDatabase {\n knex: Knex;\n // db: Knex;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: any;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n this.id = id;\n let poolConfig = {};\n const afterCreate = (\n conn: {\n on: any;\n query: (query: string, cb: (err: unknown) => void) => void;\n },\n done: (err: unknown, conn: unknown) => void\n ) => {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n // eslint-disable-next-line no-console\n console.warn(\n 'A user id cannot be set in context without a tenant id'\n );\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: unknown) {\n done(err, conn);\n });\n };\n if (config.tenantId) {\n if (config.db.pool?.afterCreate) {\n // eslint-disable-next-line no-console\n console.log(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n } else if (config.db.pool) {\n poolConfig = {\n ...config.db.pool,\n afterCreate,\n };\n } else if (!config.db.pool) {\n poolConfig = {\n afterCreate,\n };\n }\n }\n\n this.config = {\n ...config,\n db: {\n ...config.db,\n connection: {\n ...config.db.connection,\n database: config.db.connection.database ?? config.database,\n },\n pool: poolConfig,\n },\n };\n const knexConfig = { ...this.config.db, client: 'pg' };\n\n // start the timer for cleanup\n this.startTimeout();\n\n this.knex = knex(knexConfig);\n this.knex.on('query', () => {\n this.startTimeout();\n });\n }\n\n startTimeout() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n this.knex.destroy();\n evictPool(this.id);\n }, this.config.db.pool.idleTimeoutMillis ?? 30000);\n }\n}\n\nexport type NileDatabaseI = (table?: string) => Knex;\nexport default NileDatabase;\n","import { Config } from '../utils/Config';\nimport { watchEvictPool } from '../utils/Event';\n\nimport NileDatabase, { NileDatabaseI } from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n\n private makeId(\n tenantId?: string | undefined | null,\n userId?: string | undefined | null\n ) {\n if (tenantId && userId) {\n return `${tenantId}:${userId}`;\n }\n if (tenantId) {\n return `${tenantId}`;\n }\n return 'base';\n }\n constructor(config: Config) {\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n this.connections.set(id, new NileDatabase(new Config(config), id));\n watchEvictPool((id) => {\n if (id && this.connections.has(id)) {\n this.connections.delete(id);\n }\n });\n }\n\n getConnection(config: Config): NileDatabaseI {\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n if (existing) {\n return existing as unknown as NileDatabaseI;\n }\n this.connections.set(id, new NileDatabase(new Config(config), id));\n return this.connections.get(id) as unknown as NileDatabaseI;\n }\n}\n","import { ServerConfig } from '../../types';\nimport { Config } from '../Config';\n\nexport const getServerId = (config: ServerConfig) => {\n const cfg = new Config(config);\n return makeServerId(cfg);\n};\nexport const makeServerId = (config: Config) => {\n return Buffer.from(JSON.stringify(config), 'base64').toString();\n};\n","import { InstanceConfig, ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport Auth from './auth';\nimport Users from './users';\nimport Tenants from './tenants';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager, { NileDatabaseI } from './db';\nimport DBManager from './db/DBManager';\nimport { getServerId, makeServerId } from './utils/Server';\n\ntype Api = {\n auth: Auth;\n users: Users;\n tenants: Tenants;\n};\n\nconst init = (config: Config): [Api] => {\n const auth = new Auth(config);\n const users = new Users(config);\n const tenants = new Tenants(config);\n return [\n {\n auth,\n users,\n tenants,\n },\n ];\n};\n\nclass Server {\n config: Config;\n api: Api;\n private manager: DbManager;\n private servers: Map<string, Server>;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config);\n this.servers = new Map();\n const [api] = init(this.config);\n this.api = api;\n this.manager = new DBManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n watchUserId((userId) => {\n this.userId = userId;\n });\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n set database(val: string | void) {\n if (val) {\n this.config.database = val;\n this.config.db.connection.database = val;\n this.api.auth.database = val;\n this.api.users.database = val;\n this.api.tenants.database = val;\n }\n }\n\n set workspace(val: string | void) {\n if (val) {\n this.config.workspace = val;\n this.api.auth.workspace = val;\n this.api.users.workspace = val;\n this.api.tenants.workspace = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.database = this.config.database;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.auth.userId = this.config.userId;\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.database = this.config.database;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.auth.tenantId = tenantId;\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.auth.api.token = token;\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): NileDatabaseI {\n // only need to interact with the knex object\n //@ts-expect-error - because that's where it is in the proxy\n return this.manager.getConnection(this.config).knex;\n }\n\n /**\n * A utility function if you want to manage different NileDB instances yourself\n * returns the global Server object, an existing server that's already been configured,\n * or a new one if the config isn't in the cache\n */\n\n getInstance(config: InstanceConfig): Server {\n const _config = { ...this.config, ...config };\n const serverId = getServerId(_config);\n const currentServerId = makeServerId(this.config);\n if (serverId === currentServerId) {\n return this;\n }\n const existing = this.servers.get(serverId);\n if (existing) {\n return existing;\n }\n this.servers.set(serverId, new Server(_config));\n return this.servers.get(serverId) as unknown as Server;\n }\n}\n\n// export default Server;\nexport default function Nile(config: ServerConfig) {\n const server = new Server(config);\n server.setConfig(new Config(config as ServerConfig));\n return server;\n}\n","import { default as Server } from './Server';\n\nmodule.exports = Server;\nexport default Server;\n"],"names":["ApiConfig","_ref","basePath","cookieKey","token","_token","_createClass","key","get","set","value","niledatabase_url","Config","_config","database","String","workspace","_tenantId","tenantId","_userId","userId","api","_config$api$basePath","_config$api","_config$api$cookieKey","_config$api2","_config$api3","host","db","connection","_config$db","port","_config$db2","_config$db3","Number","_config$db4","_extends","_config$db5","ResponseError","body","init","response","Response","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","updateToken","val","Token","watchToken","watchEvictPool","EvictPool","evictPool","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","headers","cookie","_headers$get","split","_cookies","parts","cookieParts","_cookie","slice","join","name","_iterator2","_step2","getTenantFromHttp","config","cookieTenant","getUserFromHttp","jwt","decodeJwt","sub","_headers$get2","_fetch","_x","_x2","_x3","_fetch2","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","opts","_response$status","url","basicHeaders","authHeader","_config$api4","useableUrl","res","_res","message","_res2","_res2$errors","_message","wrap","_callee$","_context","prev","next","Headers","includes","abrupt","status","replace","encodeURIComponent","fetch","e","console","log","sent","json","t0","errors","stop","Requester","_Config","_inheritsLoose","_this","call","req","request","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6","_ref3","_callee3","_callee3$","_context3","_x7","_x8","_x9","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","undefined","text","isEmpty","isObject","Object","values","length","_x14","_x15","_x16","_x17","Auth","_requester","params","sso","providerRes","providers","_this$api","tenants","tenant","_assertThisInitialized","URL","searchParams","URLSearchParams","listProviders","clone","append","redirectURI","loginSSOUrl","post","loginUrl","error","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","_this$api3","_token$token","_token$token2","id","signUpUrl","_ref4","listTenantProvidersUrl","_ref5","providerName","updateProviderUrl","_ref6","_callee6","_callee6$","_context6","put","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","param","Users","tenantUsersUrl","meUrl","Tenants","tenantsUrl","tenantUrl","NileDatabase","poolConfig","afterCreate","conn","query","warn","err","_config$db$pool","pool","_config$db$connection","knexConfig","client","startTimeout","knex","on","timer","clearTimeout","setTimeout","_this2","destroy","_this$config$db$pool$","idleTimeoutMillis","DBManager","connections","Map","makeId","has","getConnection","existing","getServerId","cfg","makeServerId","Buffer","from","toString","auth","users","Server","servers","manager","setConfig","getInstance","serverId","currentServerId","_this$config","Nile","server","module","exports"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Config.ts","../src/utils/ResponseError.ts","../src/utils/Event/index.ts","../src/utils/fetch.ts","../src/utils/Requester/index.ts","../src/auth/index.ts","../src/users/index.ts","../src/tenants/index.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/Server.ts","../src/index.ts"],"sourcesContent":["import { PgConnectionConfig, PoolConfig, ServerConfig } from '../types';\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nconst niledatabase_url = 'thenile.dev';\ntype DBConfig = {\n connection: PgConnectionConfig;\n pool?: PoolConfig;\n};\nexport class Config {\n database: string;\n workspace: string;\n\n db: DBConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined | null;\n private _userId?: string | undefined | null;\n\n public get tenantId(): string | undefined | null {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined | null) {\n this._tenantId = value;\n }\n\n public get userId(): string | undefined | null {\n return this._userId;\n }\n\n public set userId(value: string | undefined | null) {\n this._userId = value;\n }\n\n constructor(_config?: ServerConfig) {\n // always provided\n this.database = String(_config?.database);\n this.workspace = String(_config?.workspace);\n\n // set the context\n this._tenantId = _config?.tenantId;\n this._userId = _config?.userId;\n\n // api config\n this.api = new ApiConfig({\n basePath: _config?.api?.basePath ?? `https://api.${niledatabase_url}`,\n cookieKey: _config?.api?.cookieKey ?? 'token',\n token: _config?.api?.token,\n });\n\n // db config\n const host: string =\n _config?.db &&\n _config.db.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'host' in _config.db.connection\n ? String(_config.db.connection.host)\n : `db.${niledatabase_url}`;\n\n const port: number =\n _config?.db?.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'port' in _config.db.connection\n ? Number(_config.db?.connection?.port)\n : 5432;\n\n const connection = {\n host,\n port,\n database: _config?.database,\n ...(typeof _config?.db?.connection === 'object'\n ? _config.db.connection\n : {}),\n } as PgConnectionConfig;\n\n this.db = {\n ..._config?.db,\n connection,\n };\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","type BusValues = undefined | null | string;\ntype EventFn = (params: BusValues) => void;\nenum Events {\n User = 'userId',\n Tenant = 'tenantId',\n Token = 'token',\n EvictPool = 'EvictPool',\n}\nclass Eventer {\n events: { [key: string]: EventFn[] };\n constructor() {\n this.events = {};\n }\n publish(eventName: string, value: BusValues) {\n // Get all the callback functions of the current event\n const callbackList = this.events[eventName];\n\n // execute each callback function\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n // initialize this event\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n\n // store the callback function of the subscriber\n this.events[eventName].push(callback);\n }\n}\n\n// tenantId manager\nconst eventer = new Eventer();\n\nexport const updateTenantId = (tenantId: BusValues) => {\n eventer.publish(Events.Tenant, tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n eventer.subscribe(Events.Tenant, cb);\n\nexport const updateUserId = (userId: BusValues) => {\n eventer.publish(Events.User, userId);\n};\n\nexport const watchUserId = (cb: EventFn) => eventer.subscribe(Events.User, cb);\n\nexport const updateToken = (val: BusValues) => {\n eventer.publish(Events.Token, val);\n};\n\nexport const watchToken = (cb: EventFn) => eventer.subscribe(Events.Token, cb);\n\nexport const watchEvictPool = (cb: EventFn) =>\n eventer.subscribe(Events.EvictPool, cb);\nexport const evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\n};\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\n\nexport const X_NILE_TENANT = 'x-nile-tenantId';\nexport const X_NILE_USER_ID = 'x-nile-userId';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config: Config) {\n const cookieTenant = getTokenFromCookie(headers, 'tenantId');\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers();\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (config.api?.token) {\n basicHeaders.set('Authorization', `Bearer ${config.api?.token}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n return response;\n }\n\n let res;\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n /* do the default */\n }\n if (res && 'message' in res) {\n const { message } = res;\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n return new ResponseError(message, { status: 400 });\n }\n\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three optios here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n isEmpty(req) ||\n (isObject(req) && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n post = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('POST', url, req, init);\n };\n\n get = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('GET', url, req, init);\n };\n\n put = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('PUT', url, req, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\nimport { ResponseError } from '../utils/ResponseError';\nimport {\n X_NILE_TENANT,\n X_NILE_USER_ID,\n getTenantFromHttp,\n} from '../utils/fetch';\nimport { updateToken, updateUserId } from '../utils/Event';\n\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/login`;\n }\n\n login = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers({ 'content-type': 'application/json' });\n const _requester = new Requester(this);\n\n const params =\n req instanceof Request\n ? new URL(req.url).searchParams\n : new URLSearchParams();\n\n const sso = params.get('sso');\n\n if (sso === 'true') {\n const providerRes = await this.listProviders(\n (req as Request).clone(),\n init\n );\n // if you have a provider, log them in\n if (\n providerRes &&\n providerRes.status >= 200 &&\n providerRes.status < 300\n ) {\n const providers = await new Response(providerRes.body).json();\n if (providers.length > 0) {\n if (providers.length > 1) {\n return new Response(JSON.stringify(providers), { status: 200 });\n // a user has to make a choice\n }\n\n // is there a way to do this? probably not.\n headers.set(X_NILE_TENANT, providers[0].tenantId);\n headers.append(\n 'set-cookie',\n `tenantId=${providers[0].tenantId}; path=/; httponly;`\n );\n // const ssoResp = await this.loginSSO(req);\n return new Response(\n JSON.stringify({\n redirectURI: `${this.api.basePath}${this.loginSSOUrl('okta')}`,\n }),\n { status: 200 }\n );\n // make it a client side redirect, because of the headers\n // if there is no provider, require a password.\n }\n }\n }\n\n const res = await _requester.post(req, this.loginUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { tenants } = token;\n const tenant = tenants?.values();\n const tenantId = tenant?.next().value;\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n updateToken(token.token.jwt);\n\n return new Response(JSON.stringify(token), { status: 200, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n loginSSO = (redirectUrl: string) => {\n const ssoLogin = async (\n req: NileRequest<unknown>\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const headers = new Headers();\n const body = await (req as Request).formData();\n const accessToken = (await body.get('access_token')) as string;\n const tenantId = (await body.get('tenantId')) as string;\n const cookie = `${this.api?.cookieKey}=${accessToken}; path=/; samesite=lax; httponly;`;\n updateToken(accessToken);\n headers.append('set-cookie', cookie);\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n headers.set('Location', redirectUrl);\n return new Response(null, {\n headers,\n status: 303,\n });\n };\n return ssoLogin;\n };\n\n loginSSOUrl = (provider: string) => {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users`;\n }\n\n signUp = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers();\n const _requester = new Requester(this);\n const res = await _requester.post(req, this.signUpUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token?.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { id } = token;\n updateToken(token.token?.jwt);\n updateUserId(id);\n headers.set(X_NILE_USER_ID, id);\n headers.append('set-cookie', `userId=${id}; path=/; httponly;`);\n return new Response(JSON.stringify(token), { status: 201, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n updateProviderUrl(providerName: string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers`;\n }\n\n listTenantProviders = async (\n req: NileRequest<void | Headers>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.post(req, this.updateProviderUrl(providerName), init);\n };\n\n updateProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.put(req, this.updateProviderUrl(providerName), init);\n };\n\n providerUrl(email?: undefined | string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(\n this.database\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n let body: { email: string } | undefined;\n // this is a get. Get the email from the response body so the request is filtered.\n if (req && 'body' in req) {\n body = await new Response(req.body as BodyInit).json();\n }\n return _requester.get(req, this.providerUrl(body?.email), init);\n };\n\n getSSOCallbackUrl = (param: Headers | string) => {\n let tenantId;\n if (typeof tenantId === 'string') {\n tenantId = param;\n } else if (param instanceof Headers) {\n tenantId = getTenantFromHttp(param, this);\n }\n\n return `${this.api.basePath}/workspaces/${this.workspace}/databases/${this.database}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantUsersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<RestModels.User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants`;\n }\n get tenantUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.post(req, this.tenantsUrl, init);\n };\n\n getTenant = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport knex, { Knex } from 'knex';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\nimport { AfterCreate, PgConnectionConfig, PoolConfig } from '../types';\n\n// doing this now, to provide flexibility later\nclass NileDatabase {\n knex: Knex;\n // db: Knex;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: any;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n this.id = id;\n let poolConfig: PoolConfig = {\n min: 0,\n ...config.db.pool,\n };\n const afterCreate: AfterCreate = (conn, done) => {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n // eslint-disable-next-line no-console\n console.warn(\n 'A user id cannot be set in context without a tenant id'\n );\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: unknown) {\n done(err, conn);\n });\n };\n if (config.tenantId) {\n if (config.db.pool?.afterCreate) {\n // eslint-disable-next-line no-console\n console.log(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n } else if (config.db.pool) {\n poolConfig = {\n ...config.db.pool,\n afterCreate,\n };\n } else if (!config.db.pool) {\n poolConfig = {\n afterCreate,\n };\n }\n }\n\n this.config = {\n ...config,\n db: {\n ...config.db,\n connection: {\n ...(config.db.connection as PgConnectionConfig),\n database:\n (config.db.connection as PgConnectionConfig)?.database ??\n config.database,\n },\n pool: poolConfig,\n },\n };\n const knexConfig = { ...this.config.db, client: 'pg' };\n\n // start the timer for cleanup\n this.startTimeout();\n\n this.knex = knex(knexConfig);\n this.knex.on('query', () => {\n this.startTimeout();\n });\n }\n\n startTimeout() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(async () => {\n await this.knex.destroy();\n evictPool(this.id);\n }, this.config.db.pool.idleTimeoutMillis ?? 30000);\n }\n}\n\nexport type NileDatabaseI = (table?: string) => Knex;\nexport default NileDatabase;\n","import { Config } from '../utils/Config';\nimport { watchEvictPool } from '../utils/Event';\n\nimport NileDatabase, { NileDatabaseI } from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n\n private makeId(\n tenantId?: string | undefined | null,\n userId?: string | undefined | null\n ) {\n if (tenantId && userId) {\n return `${tenantId}:${userId}`;\n }\n if (tenantId) {\n return `${tenantId}`;\n }\n return 'base';\n }\n constructor(config: Config) {\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n this.connections.set(id, new NileDatabase(new Config(config), id));\n watchEvictPool((id) => {\n if (id && this.connections.has(id)) {\n this.connections.delete(id);\n }\n });\n }\n\n getConnection(config: Config): NileDatabaseI {\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n if (existing) {\n return existing as unknown as NileDatabaseI;\n }\n this.connections.set(id, new NileDatabase(new Config(config), id));\n return this.connections.get(id) as unknown as NileDatabaseI;\n }\n}\n","import { ServerConfig } from '../../types';\nimport { Config } from '../Config';\n\nexport const getServerId = (config: ServerConfig) => {\n const cfg = new Config(config);\n return makeServerId(cfg);\n};\nexport const makeServerId = (config: Config) => {\n return Buffer.from(JSON.stringify(config), 'base64').toString();\n};\n","import { InstanceConfig, PgConnectionConfig, ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport Auth from './auth';\nimport Users from './users';\nimport Tenants from './tenants';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager, { NileDatabaseI } from './db';\nimport DBManager from './db/DBManager';\nimport { getServerId, makeServerId } from './utils/Server';\n\ntype Api = {\n auth: Auth;\n users: Users;\n tenants: Tenants;\n};\n\nconst init = (config: Config): [Api] => {\n const auth = new Auth(config);\n const users = new Users(config);\n const tenants = new Tenants(config);\n return [\n {\n auth,\n users,\n tenants,\n },\n ];\n};\n\nclass Server {\n config: Config;\n api: Api;\n private manager: DbManager;\n private servers: Map<string, Server>;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config);\n this.servers = new Map();\n const [api] = init(this.config);\n this.api = api;\n this.manager = new DBManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n watchUserId((userId) => {\n this.userId = userId;\n });\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n set database(val: string | void) {\n if (val) {\n this.config.database = val;\n (this.config.db.connection as PgConnectionConfig).database = val;\n this.api.auth.database = val;\n this.api.users.database = val;\n this.api.tenants.database = val;\n }\n }\n\n set workspace(val: string | void) {\n if (val) {\n this.config.workspace = val;\n this.api.auth.workspace = val;\n this.api.users.workspace = val;\n this.api.tenants.workspace = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.database = this.config.database;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.auth.userId = this.config.userId;\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.database = this.config.database;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.auth.tenantId = tenantId;\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.auth.api.token = token;\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): NileDatabaseI {\n // only need to interact with the knex object\n //@ts-expect-error - because that's where it is in the proxy\n return this.manager.getConnection(this.config).knex;\n }\n\n /**\n * A utility function if you want to manage different NileDB instances yourself\n * returns the global Server object, an existing server that's already been configured,\n * or a new one if the config isn't in the cache\n */\n\n getInstance(config: InstanceConfig): Server {\n const _config = { ...this.config, ...config };\n const serverId = getServerId(_config);\n const currentServerId = makeServerId(this.config);\n if (serverId === currentServerId) {\n return this;\n }\n const existing = this.servers.get(serverId);\n\n if (existing) {\n // be sure the config is up to date\n const updatedConfig = new Config(_config);\n existing.setConfig(updatedConfig);\n // propagage special config items\n existing.tenantId = updatedConfig.tenantId;\n existing.userId = updatedConfig.userId;\n existing.token = updatedConfig.api.token;\n existing.workspace = updatedConfig.workspace;\n existing.database = updatedConfig.database;\n return existing;\n }\n\n this.servers.set(serverId, new Server(_config));\n return this.servers.get(serverId) as unknown as Server;\n }\n}\n\n// export default Server;\nexport default function Nile(config: ServerConfig) {\n const server = new Server(config);\n server.setConfig(new Config(config as ServerConfig));\n return server;\n}\n","import { default as Server } from './Server';\n\nmodule.exports = Server;\nexport default Server;\n"],"names":["ApiConfig","_ref","basePath","cookieKey","token","_token","_createClass","key","get","set","value","niledatabase_url","Config","_config","database","String","workspace","_tenantId","tenantId","_userId","userId","api","_config$api$basePath","_config$api","_config$api$cookieKey","_config$api2","_config$api3","host","db","connection","_config$db","port","_config$db2","_config$db3","Number","_config$db4","_extends","_config$db5","ResponseError","body","init","response","Response","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","updateToken","val","Token","watchToken","watchEvictPool","EvictPool","evictPool","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","headers","cookie","_headers$get","split","_cookies","parts","cookieParts","_cookie","slice","join","name","_iterator2","_step2","getTenantFromHttp","config","cookieTenant","getUserFromHttp","jwt","decodeJwt","sub","_headers$get2","_fetch","_x","_x2","_x3","_fetch2","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","opts","_response$status","url","basicHeaders","authHeader","_config$api4","useableUrl","res","_res","message","_res2","_res2$errors","_message","wrap","_callee$","_context","prev","next","Headers","includes","abrupt","status","replace","encodeURIComponent","fetch","e","console","log","sent","json","t0","errors","stop","Requester","_Config","_inheritsLoose","_this","call","req","request","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6","_ref3","_callee3","_callee3$","_context3","_x7","_x8","_x9","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","undefined","text","isEmpty","isObject","Object","values","length","_x14","_x15","_x16","_x17","Auth","_requester","params","sso","providerRes","providers","_this$api","tenants","tenant","_assertThisInitialized","URL","searchParams","URLSearchParams","listProviders","clone","append","redirectURI","loginSSOUrl","post","loginUrl","error","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","_this$api3","_token$token","_token$token2","id","signUpUrl","_ref4","listTenantProvidersUrl","_ref5","providerName","updateProviderUrl","_ref6","_callee6","_callee6$","_context6","put","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","param","Users","tenantUsersUrl","meUrl","Tenants","tenantsUrl","tenantUrl","NileDatabase","poolConfig","min","pool","afterCreate","conn","query","warn","err","_config$db$pool","_config$db$connection","_config$db$connection2","knexConfig","client","startTimeout","knex","on","timer","clearTimeout","setTimeout","_this2","destroy","_this$config$db$pool$","idleTimeoutMillis","DBManager","connections","Map","makeId","has","getConnection","existing","getServerId","cfg","makeServerId","Buffer","from","toString","auth","users","Server","servers","manager","setConfig","getInstance","serverId","currentServerId","updatedConfig","_this$config","Nile","server","module","exports"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("lodash/isEmpty")),n=t(require("lodash/isObject")),r=require("jose"),o=t(require("knex"));function a(){a=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=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 p(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{p({},"")}catch(t){p=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var a=Object.create((e&&e.prototype instanceof y?e:y).prototype),i=new C(r||[]);return o(a,"_invoke",{value:R(t,n,i)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var h="suspendedStart",d="executing",v="completed",b={};function y(){}function w(){}function g(){}var k={};p(k,s,(function(){return this}));var m=Object.getPrototypeOf,x=m&&m(m(E([])));x&&x!==n&&r.call(x,s)&&(k=x);var I=g.prototype=y.prototype=Object.create(k);function U(t){["next","throw","return"].forEach((function(e){p(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function n(o,a,i,s){var u=f(t[o],t,a);if("throw"!==u.type){var c=u.arg,p=c.value;return p&&"object"==typeof p&&r.call(p,"__await")?e.resolve(p.__await).then((function(t){n("next",t,i,s)}),(function(t){n("throw",t,i,s)})):e.resolve(p).then((function(t){c.value=t,i(c)}),(function(t){return n("throw",t,i,s)}))}s(u.arg)}var a;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return a=a?a.then(o,o):o()}})}function R(e,n,r){var o=h;return function(a,i){if(o===d)throw new Error("Generator is already running");if(o===v){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=P(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===h)throw o=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=d;var c=f(e,n,r);if("normal"===c.type){if(o=r.done?v:"suspendedYield",c.arg===b)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=v,r.method="throw",r.arg=c.arg)}}}function P(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,P(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=f(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 O(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 S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function E(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 o=-1,a=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],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=g,o(I,"constructor",{value:g,configurable:!0}),o(g,"constructor",{value:w,configurable:!0}),w.displayName=p(g,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,g):(t.__proto__=g,p(t,c,"GeneratorFunction")),t.prototype=Object.create(I),t},e.awrap=function(t){return{__await:t}},U(j.prototype),p(j.prototype,u,(function(){return this})),e.AsyncIterator=j,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new j(l(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},U(I),p(I,c,"Generator"),p(I,s,(function(){return this})),p(I,"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=E,C.prototype={constructor:C,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(S),!e)for(var n in this)"t"===n.charAt(0)&&r.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 o(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 o("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;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),S(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;S(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:E(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),b}},e}function i(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 s(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function s(t){i(a,r,o,s,u,"next",t)}function u(t){i(a,r,o,s,u,"throw",t)}s(void 0)}))}}function u(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,"symbol"==typeof(o=function(t,e){if("object"!=typeof t||null===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)}(r.key))?o:String(o),r)}var o}function c(t,e,n){return e&&u(t.prototype,e),n&&u(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function p(){return(p=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}).apply(this,arguments)}function l(t,e){var n,r;t.prototype=Object.create(e.prototype),t.prototype.constructor=t,n=t,r=e,(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(n,r)}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function h(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 h(t,void 0);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)?h(t,void 0):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.")}var v,b=function(){function t(t){var e=t.cookieKey,n=t.token;this.basePath=t.basePath,this.cookieKey=e,this._token=n}return c(t,[{key:"token",get:function(){return this._token},set:function(t){this._token=t}}]),t}(),y=function(){function t(t){var e,n,r,o,a,i,s,u,c,l;this.database=String(null==t?void 0:t.database),this.workspace=String(null==t?void 0:t.workspace),this._tenantId=null==t?void 0:t.tenantId,this._userId=null==t?void 0:t.userId,this.api=new b({basePath:null!=(e=null==t||null==(n=t.api)?void 0:n.basePath)?e:"https://api.thenile.dev",cookieKey:null!=(r=null==t||null==(o=t.api)?void 0:o.cookieKey)?r:"token",token:null==t||null==(a=t.api)?void 0:a.token});var f=p({host:null!=t&&t.db&&t.db.connection&&"string"!=typeof(null==(i=t.db)?void 0:i.connection)&&"host"in t.db.connection?String(t.db.connection.host):"db.thenile.dev",port:null!=t&&null!=(s=t.db)&&s.connection&&"string"!=typeof(null==(u=t.db)?void 0:u.connection)&&"port"in t.db.connection?Number(null==(c=t.db)||null==(c=c.connection)?void 0:c.port):5432,database:null==t?void 0:t.database},"object"==typeof(null==t||null==(l=t.db)?void 0:l.connection)?t.db.connection:{});this.db=p({},null==t?void 0:t.db,{connection:f})}return c(t,[{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}}]),t}(),w=function(t,e){this.response=new Response(t,e)};!function(t){t.User="userId",t.Tenant="tenantId",t.Token="token",t.EvictPool="EvictPool"}(v||(v={}));var g=new(function(){function t(){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}()),k=function(t){g.publish(v.Tenant,t)},m=function(t){g.publish(v.User,t)},x=function(t){g.publish(v.Token,t)};function I(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,p=d(r);!(c=p()).done;){var l=c.value.split("="),f=l.slice(1).join("=");o[l[0]]=f}return e?o[e]:null}function U(t,e){var n,r=I(t,"tenantId");return null!=(n=null!=r?r:null==t?void 0:t.get("x-nile-tenantId"))?n:e.tenantId}function j(t,e){var n,o=I(t,e.api.cookieKey);return o?r.decodeJwt(o).sub:null!=(n=null==t?void 0:t.get("x-nile-userId"))?n:e.userId}function R(t,e,n){return P.apply(this,arguments)}function P(){return(P=s(a().mark((function t(e,n,r){var o,i,s,u,c,l,f,h,d,v,b,y,g,x,R;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=""+(null==(o=e.api)?void 0:o.basePath)+n,c=null==(i=e.api)?void 0:i.cookieKey,l=new Headers(null==r?void 0:r.headers),(f=new Headers).set("content-type","application/json; charset=utf-8"),l.get("Authorization")||((d=I(l,c))?f.set("Authorization","Bearer "+d):null!=(h=e.api)&&h.token&&f.set("Authorization","Bearer "+(null==(v=e.api)?void 0:v.token))),b=U(l,e),k(b),y=j(l,e),m(y),!u.includes("{tenantId}")||b){t.next=13;break}return t.abrupt("return",new w("tenantId is not set for request",{status:400}));case 13:return g=u.replace("{tenantId}",encodeURIComponent(String(b))).replace("{userId}",encodeURIComponent(String(y))),t.next=16,fetch(g,p({},r,{headers:f})).catch((function(t){console.log(t)}));case 16:if(!((x=t.sent)&&x.status>=200&&x.status<300)){t.next=19;break}return t.abrupt("return",x);case 19:return t.prev=19,t.next=22,null==x?void 0:x.json();case 22:R=t.sent,t.next=27;break;case 25:t.prev=25,t.t0=t.catch(19);case 27:if(!R||!("message"in R)){t.next=30;break}return t.abrupt("return",new w(R.message,{status:400}));case 30:if(!R||!("errors"in R)){t.next=33;break}return t.abrupt("return",new w(R.errors[0],{status:400}));case 33:return t.abrupt("return",new w(null,{status:null!=(s=null==x?void 0:x.status)?s:500}));case 34:case"end":return t.stop()}}),t,null,[[19,25]])})))).apply(this,arguments)}var O=function(t){function r(e){var n;return(n=t.call(this,e)||this).post=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("POST",r,e,o);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)}}(),n.get=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("GET",r,e,o);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)}}(),n.put=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("PUT",r,e,o);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)}}(),n}l(r,t);var o=r.prototype;return o.rawRequest=function(){var t=s(a().mark((function t(e,n,r,o){var i,s;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=p({},r,{body:o,method:e}),t.next=3,R(this,n,i);case 3:if(!((s=t.sent)instanceof w)){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)}}(),o.request=function(){var t=s(a().mark((function t(r,o,i,s){var u,c,l,f,h,d,v,b;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=new Headers(s?null==s?void 0:s.headers:{}),i instanceof Headers?(c=i.get("x-nile-tenantId"),l=i.get("cookie"),c&&u.set("x-nile-tenantId",c),l&&u.set("cookie",l)):i instanceof Request&&(f=new Headers(null==i?void 0:i.headers),h=f.get("x-nile-tenantId"),d=f.get("cookie"),h&&u.set("x-nile-tenantId",h),d&&u.set("cookie",d)),v=JSON.stringify(i),"GET"!==r){t.next=7;break}v=void 0,t.next=14;break;case 7:if(!(i instanceof Request)){t.next=13;break}return t.next=10,new Response(i.body).text();case 10:v=t.sent,t.next=14;break;case 13:(i instanceof Headers||e(i)||n(i)&&0===Object.values(i).length)&&(v=void 0);case 14:return b=p({},s,{headers:u}),t.next=17,this.rawRequest(r,o,b,v);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)}}(),r}(y),S=function(t){function e(e){var n;return(n=t.call(this,e)||this).login=function(){var t=s(a().mark((function t(e,r){var o,i,s,u,c,p,l,h,d,v,b;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=new Headers({"content-type":"application/json"}),i=new O(f(n)),"true"!==(e instanceof Request?new URL(e.url).searchParams:new URLSearchParams).get("sso")){t.next=18;break}return t.next=7,n.listProviders(e.clone(),r);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 o.set("x-nile-tenantId",u[0].tenantId),o.append("set-cookie","tenantId="+u[0].tenantId+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify({redirectURI:""+n.api.basePath+n.loginSSOUrl("okta")}),{status:200}));case 18:return t.next=20,i.post(e,n.loginUrl,r).catch((function(t){return console.error(t),t}));case 20:if(!((c=t.sent)instanceof w)){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 h=(null==(p=n.api)?void 0:p.cookieKey)+"="+(l=t.sent).token.jwt+"; path=/; samesite=lax; httponly;",o.append("set-cookie",h),v=null==(d=l.tenants)?void 0:d.values(),b=null==v?void 0:v.next().value,o.set("x-nile-tenantId",b),o.append("set-cookie","tenantId="+b+"; path=/; httponly;"),x(l.token.jwt),t.abrupt("return",new Response(JSON.stringify(l),{status:200,headers:o}));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)}}(),n.loginSSO=function(t){return function(){var e=s(a().mark((function e(r){var o,i,s,u,c,p;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new Headers,e.next=3,r.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,p=(null==(o=n.api)?void 0:o.cookieKey)+"="+u+"; path=/; samesite=lax; httponly;",x(u),i.append("set-cookie",p),i.set("x-nile-tenantId",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)}}()},n.loginSSOUrl=function(t){var e;return"/workspaces/"+encodeURIComponent(n.workspace)+"/databases/"+encodeURIComponent(n.database)+"/tenants/"+(null!=(e=n.tenantId)?e:"{tenantId}")+"/auth/oidc/providers/"+t+"/login"},n.signUp=function(){var t=s(a().mark((function t(e,r){var o,i,s,u,c,p,l,h,d;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new Headers,i=new O(f(n)),t.next=4,i.post(e,n.signUpUrl,r).catch((function(t){return console.error(t),t}));case 4:if(!((s=t.sent)instanceof w)){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 h=(null==(u=n.api)?void 0:u.cookieKey)+"="+(null==(c=(l=t.sent).token)?void 0:c.jwt)+"; path=/; samesite=lax; httponly;",o.append("set-cookie",h),d=l.id,x(null==(p=l.token)?void 0:p.jwt),m(d),o.set("x-nile-userId",d),o.append("set-cookie","userId="+d+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify(l),{status:201,headers:o}));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)}}(),n.listTenantProviders=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.get(e,n.listTenantProvidersUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.createProvider=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.post(e,n.updateProviderUrl("okta"),r));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.updateProvider=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.put(e,n.updateProviderUrl("okta"),r));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.listProviders=function(){var t=s(a().mark((function t(e,r){var o,i,s;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new O(f(n)),!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,n.providerUrl(null==(o=s)?void 0:o.email),r));case 6:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.getSSOCallbackUrl=function(t){var e;return"string"==typeof e?e=t:t instanceof Headers&&(e=U(t,f(n))),n.api.basePath+"/workspaces/"+n.workspace+"/databases/"+n.database+"/tenants/"+e+"/auth/oidc/callback"},n}l(e,t);var n=e.prototype;return n.updateProviderUrl=function(t){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers/"+encodeURIComponent(t)},n.providerUrl=function(t){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/auth/oidc/providers"+(t?"?email="+encodeURIComponent(t):"")},c(e,[{key:"loginUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users/login"}},{key:"signUpUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users"}},{key:"listTenantProvidersUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers"}}]),e}(y),C=function(t){function e(e){var n;return(n=t.call(this,e)||this).createTenantUser=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.post(e,n.tenantUsersUrl,r);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)}}(),n.listTenantUsers=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.get(e,n.tenantUsersUrl,r);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)}}(),n.me=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.get(e,n.meUrl,r);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)}}(),n}return l(e,t),c(e,[{key:"tenantUsersUrl",get:function(){var t;return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")+"/users"}},{key:"meUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users/me"}}]),e}(y),E=function(t){function e(e){var n;return(n=t.call(this,e)||this).createTenant=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.post(e,n.tenantsUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.getTenant=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.get(e,n.tenantUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n}return l(e,t),c(e,[{key:"tenantsUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants"}},{key:"tenantUrl",get:function(){var t;return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")}}]),e}(y),T=function(){function t(t,e){var n,r=this;this.id=e;var a,i={},s=function(e,n){var r=["SET nile.tenant_id = '"+t.tenantId+"'"];t.userId&&(t.tenantId||console.warn("A user id cannot be set in context without a tenant id"),r.push("SET nile.user_id = '"+t.userId+"'")),e.query(r.join(";"),(function(t){n(t,e)}))};t.tenantId&&(null!=(a=t.db.pool)&&a.afterCreate?console.log("Providing an pool configuration will stop automatic tenant context setting."):t.db.pool?i=p({},t.db.pool,{afterCreate:s}):t.db.pool||(i={afterCreate:s})),this.config=p({},t,{db:p({},t.db,{connection:p({},t.db.connection,{database:null!=(n=t.db.connection.database)?n:t.database}),pool:i})});var u=p({},this.config.db,{client:"pg"});this.startTimeout(),this.knex=o(u),this.knex.on("query",(function(){r.startTimeout()}))}return t.prototype.startTimeout=function(){var t,e=this;this.timer&&clearTimeout(this.timer),this.timer=setTimeout((function(){e.knex.destroy(),g.publish(v.EvictPool,e.id)}),null!=(t=this.config.db.pool.idleTimeoutMillis)?t:3e4)},t}(),_=function(){function t(t){var e=this;this.connections=new Map;var n=this.makeId();this.connections.set(n,new T(new y(t),n)),g.subscribe(v.EvictPool,(function(t){t&&e.connections.has(t)&&e.connections.delete(t)}))}var e=t.prototype;return e.makeId=function(t,e){return t&&e?t+":"+e:t?""+t:"base"},e.getConnection=function(t){var e=this.makeId(t.tenantId,t.userId);return this.connections.get(e)||(this.connections.set(e,new T(new y(t),e)),this.connections.get(e))},t}(),L=function(t){return Buffer.from(JSON.stringify(t),"base64").toString()},q=function(){function t(t){var e=this;this.config=new y(t),this.servers=new Map;var n=function(t){return[{auth:new S(t),users:new C(t),tenants:new E(t)}]}(this.config);this.api=n[0],this.manager=new _(this.config),g.subscribe(v.Tenant,(function(t){e.tenantId=t})),g.subscribe(v.User,(function(t){e.userId=t})),g.subscribe(v.Token,(function(t){e.token=t}))}var e=t.prototype;return e.setConfig=function(t){this.config=new y(t)},e.getInstance=function(e){var n=p({},this.config,e),r=function(t){var e=new y(t);return L(e)}(n);return r===L(this.config)?this:this.servers.get(r)||(this.servers.set(r,new t(n)),this.servers.get(r))},c(t,[{key:"database",set:function(t){t&&(this.config.database=t,this.config.db.connection.database=t,this.api.auth.database=t,this.api.users.database=t,this.api.tenants.database=t)}},{key:"workspace",set:function(t){t&&(this.config.workspace=t,this.api.auth.workspace=t,this.api.users.workspace=t,this.api.tenants.workspace=t)}},{key:"userId",get:function(){return this.config.userId},set:function(t){this.database=this.config.database,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.database=this.config.database,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).knex}}]),t}();function N(t){var e=new q(t);return e.setConfig(new y(t)),e}module.exports=N,exports.default=N;
|
|
1
|
+
"use strict";function t(t){return t&&"object"==typeof t&&"default"in t?t.default:t}Object.defineProperty(exports,"__esModule",{value:!0});var e=t(require("lodash/isEmpty")),n=t(require("lodash/isObject")),r=require("jose"),o=t(require("knex"));function a(){a=function(){return e};var t,e={},n=Object.prototype,r=n.hasOwnProperty,o=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 p(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{p({},"")}catch(t){p=function(t,e,n){return t[e]=n}}function l(t,e,n,r){var a=Object.create((e&&e.prototype instanceof y?e:y).prototype),i=new C(r||[]);return o(a,"_invoke",{value:R(t,n,i)}),a}function f(t,e,n){try{return{type:"normal",arg:t.call(e,n)}}catch(t){return{type:"throw",arg:t}}}e.wrap=l;var d="suspendedStart",h="executing",v="completed",b={};function y(){}function w(){}function g(){}var k={};p(k,s,(function(){return this}));var m=Object.getPrototypeOf,x=m&&m(m(E([])));x&&x!==n&&r.call(x,s)&&(k=x);var I=g.prototype=y.prototype=Object.create(k);function U(t){["next","throw","return"].forEach((function(e){p(t,e,(function(t){return this._invoke(e,t)}))}))}function j(t,e){function n(o,a,i,s){var u=f(t[o],t,a);if("throw"!==u.type){var c=u.arg,p=c.value;return p&&"object"==typeof p&&r.call(p,"__await")?e.resolve(p.__await).then((function(t){n("next",t,i,s)}),(function(t){n("throw",t,i,s)})):e.resolve(p).then((function(t){c.value=t,i(c)}),(function(t){return n("throw",t,i,s)}))}s(u.arg)}var a;o(this,"_invoke",{value:function(t,r){function o(){return new e((function(e,o){n(t,r,e,o)}))}return a=a?a.then(o,o):o()}})}function R(e,n,r){var o=d;return function(a,i){if(o===h)throw new Error("Generator is already running");if(o===v){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=P(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=v,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);o=h;var c=f(e,n,r);if("normal"===c.type){if(o=r.done?v:"suspendedYield",c.arg===b)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(o=v,r.method="throw",r.arg=c.arg)}}}function P(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,P(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=f(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 O(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 S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function C(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(O,this),this.reset(!0)}function E(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 o=-1,a=function n(){for(;++o<e.length;)if(r.call(e,o))return n.value=e[o],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=g,o(I,"constructor",{value:g,configurable:!0}),o(g,"constructor",{value:w,configurable:!0}),w.displayName=p(g,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,g):(t.__proto__=g,p(t,c,"GeneratorFunction")),t.prototype=Object.create(I),t},e.awrap=function(t){return{__await:t}},U(j.prototype),p(j.prototype,u,(function(){return this})),e.AsyncIterator=j,e.async=function(t,n,r,o,a){void 0===a&&(a=Promise);var i=new j(l(t,n,r,o),a);return e.isGeneratorFunction(n)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},U(I),p(I,c,"Generator"),p(I,s,(function(){return this})),p(I,"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=E,C.prototype={constructor:C,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(S),!e)for(var n in this)"t"===n.charAt(0)&&r.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 o(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 o("end");if(i.tryLoc<=this.prev){var u=r.call(i,"catchLoc"),c=r.call(i,"finallyLoc");if(u&&c){if(this.prev<i.catchLoc)return o(i.catchLoc,!0);if(this.prev<i.finallyLoc)return o(i.finallyLoc)}else if(u){if(this.prev<i.catchLoc)return o(i.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return o(i.finallyLoc)}}}},abrupt:function(t,e){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;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),S(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;S(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,r){return this.delegate={iterator:E(e),resultName:n,nextLoc:r},"next"===this.method&&(this.arg=t),b}},e}function i(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 s(t){return function(){var e=this,n=arguments;return new Promise((function(r,o){var a=t.apply(e,n);function s(t){i(a,r,o,s,u,"next",t)}function u(t){i(a,r,o,s,u,"throw",t)}s(void 0)}))}}function u(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,"symbol"==typeof(o=function(t,e){if("object"!=typeof t||null===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)}(r.key))?o:String(o),r)}var o}function c(t,e,n){return e&&u(t.prototype,e),n&&u(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function p(){return(p=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}).apply(this,arguments)}function l(t,e){var n,r;t.prototype=Object.create(e.prototype),t.prototype.constructor=t,n=t,r=e,(Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t})(n,r)}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function d(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 h(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 d(t,void 0);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)?d(t,void 0):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.")}var v,b=function(){function t(t){var e=t.cookieKey,n=t.token;this.basePath=t.basePath,this.cookieKey=e,this._token=n}return c(t,[{key:"token",get:function(){return this._token},set:function(t){this._token=t}}]),t}(),y=function(){function t(t){var e,n,r,o,a,i,s,u,c,l;this.database=String(null==t?void 0:t.database),this.workspace=String(null==t?void 0:t.workspace),this._tenantId=null==t?void 0:t.tenantId,this._userId=null==t?void 0:t.userId,this.api=new b({basePath:null!=(e=null==t||null==(n=t.api)?void 0:n.basePath)?e:"https://api.thenile.dev",cookieKey:null!=(r=null==t||null==(o=t.api)?void 0:o.cookieKey)?r:"token",token:null==t||null==(a=t.api)?void 0:a.token});var f=p({host:null!=t&&t.db&&t.db.connection&&"string"!=typeof(null==(i=t.db)?void 0:i.connection)&&"host"in t.db.connection?String(t.db.connection.host):"db.thenile.dev",port:null!=t&&null!=(s=t.db)&&s.connection&&"string"!=typeof(null==(u=t.db)?void 0:u.connection)&&"port"in t.db.connection?Number(null==(c=t.db)||null==(c=c.connection)?void 0:c.port):5432,database:null==t?void 0:t.database},"object"==typeof(null==t||null==(l=t.db)?void 0:l.connection)?t.db.connection:{});this.db=p({},null==t?void 0:t.db,{connection:f})}return c(t,[{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}}]),t}(),w=function(t,e){this.response=new Response(t,e)};!function(t){t.User="userId",t.Tenant="tenantId",t.Token="token",t.EvictPool="EvictPool"}(v||(v={}));var g=new(function(){function t(){this.events={}}var e=t.prototype;return e.publish=function(t,e){var n=this.events[t];if(n)for(var r,o=h(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}()),k=function(t){g.publish(v.Tenant,t)},m=function(t){g.publish(v.User,t)},x=function(t){g.publish(v.Token,t)};function I(t,e){var n,r=null==(n=t.get("cookie"))?void 0:n.split("; "),o={};if(r)for(var a,i=h(r);!(a=i()).done;){var s=a.value.split("="),u=s.slice(1).join("=");o[s[0]]=u}if(r)for(var c,p=h(r);!(c=p()).done;){var l=c.value.split("="),f=l.slice(1).join("=");o[l[0]]=f}return e?o[e]:null}function U(t,e){var n,r=I(t,"tenantId");return null!=(n=null!=r?r:null==t?void 0:t.get("x-nile-tenantId"))?n:e.tenantId}function j(t,e){var n,o=I(t,e.api.cookieKey);return o?r.decodeJwt(o).sub:null!=(n=null==t?void 0:t.get("x-nile-userId"))?n:e.userId}function R(t,e,n){return P.apply(this,arguments)}function P(){return(P=s(a().mark((function t(e,n,r){var o,i,s,u,c,l,f,d,h,v,b,y,g,x,R;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=""+(null==(o=e.api)?void 0:o.basePath)+n,c=null==(i=e.api)?void 0:i.cookieKey,l=new Headers(null==r?void 0:r.headers),(f=new Headers).set("content-type","application/json; charset=utf-8"),l.get("Authorization")||((h=I(l,c))?f.set("Authorization","Bearer "+h):null!=(d=e.api)&&d.token&&f.set("Authorization","Bearer "+(null==(v=e.api)?void 0:v.token))),b=U(l,e),k(b),y=j(l,e),m(y),!u.includes("{tenantId}")||b){t.next=13;break}return t.abrupt("return",new w("tenantId is not set for request",{status:400}));case 13:return g=u.replace("{tenantId}",encodeURIComponent(String(b))).replace("{userId}",encodeURIComponent(String(y))),t.next=16,fetch(g,p({},r,{headers:f})).catch((function(t){console.log(t)}));case 16:if(!((x=t.sent)&&x.status>=200&&x.status<300)){t.next=19;break}return t.abrupt("return",x);case 19:return t.prev=19,t.next=22,null==x?void 0:x.json();case 22:R=t.sent,t.next=27;break;case 25:t.prev=25,t.t0=t.catch(19);case 27:if(!R||!("message"in R)){t.next=30;break}return t.abrupt("return",new w(R.message,{status:400}));case 30:if(!R||!("errors"in R)){t.next=33;break}return t.abrupt("return",new w(R.errors[0],{status:400}));case 33:return t.abrupt("return",new w(null,{status:null!=(s=null==x?void 0:x.status)?s:500}));case 34:case"end":return t.stop()}}),t,null,[[19,25]])})))).apply(this,arguments)}var O=function(t){function r(e){var n;return(n=t.call(this,e)||this).post=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("POST",r,e,o);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)}}(),n.get=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("GET",r,e,o);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)}}(),n.put=function(){var t=s(a().mark((function t(e,r,o){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,n.request("PUT",r,e,o);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)}}(),n}l(r,t);var o=r.prototype;return o.rawRequest=function(){var t=s(a().mark((function t(e,n,r,o){var i,s;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return i=p({},r,{body:o,method:e}),t.next=3,R(this,n,i);case 3:if(!((s=t.sent)instanceof w)){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)}}(),o.request=function(){var t=s(a().mark((function t(r,o,i,s){var u,c,l,f,d,h,v,b;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(u=new Headers(s?null==s?void 0:s.headers:{}),i instanceof Headers?(c=i.get("x-nile-tenantId"),l=i.get("cookie"),c&&u.set("x-nile-tenantId",c),l&&u.set("cookie",l)):i instanceof Request&&(f=new Headers(null==i?void 0:i.headers),d=f.get("x-nile-tenantId"),h=f.get("cookie"),d&&u.set("x-nile-tenantId",d),h&&u.set("cookie",h)),v=JSON.stringify(i),"GET"!==r){t.next=7;break}v=void 0,t.next=14;break;case 7:if(!(i instanceof Request)){t.next=13;break}return t.next=10,new Response(i.body).text();case 10:v=t.sent,t.next=14;break;case 13:(i instanceof Headers||e(i)||n(i)&&0===Object.values(i).length)&&(v=void 0);case 14:return b=p({},s,{headers:u}),t.next=17,this.rawRequest(r,o,b,v);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)}}(),r}(y),S=function(t){function e(e){var n;return(n=t.call(this,e)||this).login=function(){var t=s(a().mark((function t(e,r){var o,i,s,u,c,p,l,d,h,v,b;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(o=new Headers({"content-type":"application/json"}),i=new O(f(n)),"true"!==(e instanceof Request?new URL(e.url).searchParams:new URLSearchParams).get("sso")){t.next=18;break}return t.next=7,n.listProviders(e.clone(),r);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 o.set("x-nile-tenantId",u[0].tenantId),o.append("set-cookie","tenantId="+u[0].tenantId+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify({redirectURI:""+n.api.basePath+n.loginSSOUrl("okta")}),{status:200}));case 18:return t.next=20,i.post(e,n.loginUrl,r).catch((function(t){return console.error(t),t}));case 20:if(!((c=t.sent)instanceof w)){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 d=(null==(p=n.api)?void 0:p.cookieKey)+"="+(l=t.sent).token.jwt+"; path=/; samesite=lax; httponly;",o.append("set-cookie",d),v=null==(h=l.tenants)?void 0:h.values(),b=null==v?void 0:v.next().value,o.set("x-nile-tenantId",b),o.append("set-cookie","tenantId="+b+"; path=/; httponly;"),x(l.token.jwt),t.abrupt("return",new Response(JSON.stringify(l),{status:200,headers:o}));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)}}(),n.loginSSO=function(t){return function(){var e=s(a().mark((function e(r){var o,i,s,u,c,p;return a().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=new Headers,e.next=3,r.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,p=(null==(o=n.api)?void 0:o.cookieKey)+"="+u+"; path=/; samesite=lax; httponly;",x(u),i.append("set-cookie",p),i.set("x-nile-tenantId",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)}}()},n.loginSSOUrl=function(t){var e;return"/workspaces/"+encodeURIComponent(n.workspace)+"/databases/"+encodeURIComponent(n.database)+"/tenants/"+(null!=(e=n.tenantId)?e:"{tenantId}")+"/auth/oidc/providers/"+t+"/login"},n.signUp=function(){var t=s(a().mark((function t(e,r){var o,i,s,u,c,p,l,d,h;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new Headers,i=new O(f(n)),t.next=4,i.post(e,n.signUpUrl,r).catch((function(t){return console.error(t),t}));case 4:if(!((s=t.sent)instanceof w)){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 d=(null==(u=n.api)?void 0:u.cookieKey)+"="+(null==(c=(l=t.sent).token)?void 0:c.jwt)+"; path=/; samesite=lax; httponly;",o.append("set-cookie",d),h=l.id,x(null==(p=l.token)?void 0:p.jwt),m(h),o.set("x-nile-userId",h),o.append("set-cookie","userId="+h+"; path=/; httponly;"),t.abrupt("return",new Response(JSON.stringify(l),{status:201,headers:o}));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)}}(),n.listTenantProviders=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.get(e,n.listTenantProvidersUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.createProvider=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.post(e,n.updateProviderUrl("okta"),r));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.updateProvider=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.put(e,n.updateProviderUrl("okta"),r));case 3:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.listProviders=function(){var t=s(a().mark((function t(e,r){var o,i,s;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(i=new O(f(n)),!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,n.providerUrl(null==(o=s)?void 0:o.email),r));case 6:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.getSSOCallbackUrl=function(t){var e;return"string"==typeof e?e=t:t instanceof Headers&&(e=U(t,f(n))),n.api.basePath+"/workspaces/"+n.workspace+"/databases/"+n.database+"/tenants/"+e+"/auth/oidc/callback"},n}l(e,t);var n=e.prototype;return n.updateProviderUrl=function(t){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers/"+encodeURIComponent(t)},n.providerUrl=function(t){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/auth/oidc/providers"+(t?"?email="+encodeURIComponent(t):"")},c(e,[{key:"loginUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users/login"}},{key:"signUpUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users"}},{key:"listTenantProvidersUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(this.tenantId?encodeURIComponent(this.tenantId):"{tenantId}")+"/auth/oidc/providers"}}]),e}(y),C=function(t){function e(e){var n;return(n=t.call(this,e)||this).createTenantUser=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.post(e,n.tenantUsersUrl,r);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)}}(),n.listTenantUsers=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.get(e,n.tenantUsersUrl,r);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)}}(),n.me=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.next=3,o.get(e,n.meUrl,r);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)}}(),n}return l(e,t),c(e,[{key:"tenantUsersUrl",get:function(){var t;return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")+"/users"}},{key:"meUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/users/me"}}]),e}(y),E=function(t){function e(e){var n;return(n=t.call(this,e)||this).createTenant=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.post(e,n.tenantsUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n.getTenant=function(){var t=s(a().mark((function t(e,r){var o;return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return o=new O(f(n)),t.abrupt("return",o.get(e,n.tenantUrl,r));case 2:case"end":return t.stop()}}),t)})));return function(e,n){return t.apply(this,arguments)}}(),n}return l(e,t),c(e,[{key:"tenantsUrl",get:function(){return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants"}},{key:"tenantUrl",get:function(){var t;return"/workspaces/"+encodeURIComponent(this.workspace)+"/databases/"+encodeURIComponent(this.database)+"/tenants/"+(null!=(t=this.tenantId)?t:"{tenantId}")}}]),e}(y),T=function(){function t(t,e){var n,r,a=this;this.id=e;var i,s=p({min:0},t.db.pool),u=function(e,n){var r=["SET nile.tenant_id = '"+t.tenantId+"'"];t.userId&&(t.tenantId||console.warn("A user id cannot be set in context without a tenant id"),r.push("SET nile.user_id = '"+t.userId+"'")),e.query(r.join(";"),(function(t){n(t,e)}))};t.tenantId&&(null!=(i=t.db.pool)&&i.afterCreate?console.log("Providing an pool configuration will stop automatic tenant context setting."):t.db.pool?s=p({},t.db.pool,{afterCreate:u}):t.db.pool||(s={afterCreate:u})),this.config=p({},t,{db:p({},t.db,{connection:p({},t.db.connection,{database:null!=(n=null==(r=t.db.connection)?void 0:r.database)?n:t.database}),pool:s})});var c=p({},this.config.db,{client:"pg"});this.startTimeout(),this.knex=o(c),this.knex.on("query",(function(){a.startTimeout()}))}return t.prototype.startTimeout=function(){var t,e=this;this.timer&&clearTimeout(this.timer),this.timer=setTimeout(s(a().mark((function t(){return a().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,e.knex.destroy();case 2:g.publish(v.EvictPool,e.id);case 3:case"end":return t.stop()}}),t)}))),null!=(t=this.config.db.pool.idleTimeoutMillis)?t:3e4)},t}(),_=function(){function t(t){var e=this;this.connections=new Map;var n=this.makeId();this.connections.set(n,new T(new y(t),n)),g.subscribe(v.EvictPool,(function(t){t&&e.connections.has(t)&&e.connections.delete(t)}))}var e=t.prototype;return e.makeId=function(t,e){return t&&e?t+":"+e:t?""+t:"base"},e.getConnection=function(t){var e=this.makeId(t.tenantId,t.userId);return this.connections.get(e)||(this.connections.set(e,new T(new y(t),e)),this.connections.get(e))},t}(),L=function(t){return Buffer.from(JSON.stringify(t),"base64").toString()},q=function(){function t(t){var e=this;this.config=new y(t),this.servers=new Map;var n=function(t){return[{auth:new S(t),users:new C(t),tenants:new E(t)}]}(this.config);this.api=n[0],this.manager=new _(this.config),g.subscribe(v.Tenant,(function(t){e.tenantId=t})),g.subscribe(v.User,(function(t){e.userId=t})),g.subscribe(v.Token,(function(t){e.token=t}))}var e=t.prototype;return e.setConfig=function(t){this.config=new y(t)},e.getInstance=function(e){var n=p({},this.config,e),r=function(t){var e=new y(t);return L(e)}(n);if(r===L(this.config))return this;var o=this.servers.get(r);if(o){var a=new y(n);return o.setConfig(a),o.tenantId=a.tenantId,o.userId=a.userId,o.token=a.api.token,o.workspace=a.workspace,o.database=a.database,o}return this.servers.set(r,new t(n)),this.servers.get(r)},c(t,[{key:"database",set:function(t){t&&(this.config.database=t,this.config.db.connection.database=t,this.api.auth.database=t,this.api.users.database=t,this.api.tenants.database=t)}},{key:"workspace",set:function(t){t&&(this.config.workspace=t,this.api.auth.workspace=t,this.api.users.workspace=t,this.api.tenants.workspace=t)}},{key:"userId",get:function(){return this.config.userId},set:function(t){this.database=this.config.database,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.database=this.config.database,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).knex}}]),t}();function N(t){var e=new q(t);return e.setConfig(new y(t)),e}module.exports=N,exports.default=N;
|
|
2
2
|
//# sourceMappingURL=server.cjs.production.min.js.map
|