@niledatabase/server 2.4.1 → 2.4.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db/DBManager.d.ts +4 -1
- package/dist/server.cjs.development.js +90 -39
- 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 +90 -39
- package/dist/server.esm.js.map +1 -1
- package/dist/utils/Event/index.d.ts +1 -0
- package/package.json +2 -2
package/dist/server.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.esm.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.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/PoolProxy.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/Server.ts"],"sourcesContent":["import { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nexport default function Logger(\n config: void | Config | ServerConfig,\n ...params: unknown[]\n) {\n return {\n info(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.info('[niledb]', ...params, ...args);\n }\n },\n warn(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.warn('[niledb]', ...params, ...args);\n }\n },\n error(...args: unknown[]) {\n // eslint-disable-next-line no-console\n console.error('[niledb]', '[ERROR]', ...params, ...args);\n },\n };\n}\n","import 'dotenv/config';\nimport { ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nexport type EnvConfig = {\n logger?: string;\n config?: ServerConfig;\n};\n\nexport const getDatbaseId = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[databaseId]');\n if (config?.databaseId) {\n logger && info(logger, 'config', config.databaseId);\n return String(config?.databaseId);\n }\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n return pgUrl.pathname.substring(1);\n }\n logger && info(logger, 'env', process.env.NILEDB_ID);\n return process.env.NILEDB_ID;\n};\nexport const getUsername = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[username]');\n if (config?.user) {\n logger && info(logger, 'config', config.user);\n return String(config?.user);\n }\n logger && info(logger, 'NILEDB_USER', process.env.NILEDB_USER);\n return process.env.NILEDB_USER;\n};\n\nexport const getPassword = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const log = logProtector(logger);\n const { info } = Logger(config, '[password]');\n if (config?.password) {\n log && info(logger, 'config', config.password);\n\n return String(config.password);\n }\n\n log && info(logger, 'NILEDB_PASSWORD', process.env.NILEDB_PASSWORD);\n return process.env.NILEDB_PASSWORD;\n};\n\nexport const getInfoBearer = (cfg: EnvConfig) => {\n return `${getUsername(cfg)}:${getPassword(cfg)}`;\n};\n\nexport const getToken = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[token]');\n if (config?.api?.token) {\n logger && info(logger, 'config', config.api?.token);\n return String(config.api?.token);\n }\n if (process.env.NILEDB_TOKEN) {\n logger && info(logger, 'NILEDB_TOKEN', process.env.NILEDB_TOKEN);\n return process.env.NILEDB_TOKEN;\n }\n return undefined;\n};\n\nexport const getDatabaseName = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[databaseName]');\n if (config?.databaseName) {\n logger && info(logger, 'config', config.databaseName);\n return String(config.databaseName);\n }\n if (process.env.NILEDB_NAME) {\n logger && info(logger, 'NILEDB_NAME', process.env.NILEDB_NAME);\n return process.env.NILEDB_NAME;\n }\n return null;\n};\n\nexport const getTenantId = (cfg: EnvConfig): string | null => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[tenantId]');\n if (config?.tenantId) {\n logger && info(logger, 'config', config.tenantId);\n return config.tenantId;\n }\n\n if (process.env.NILEDB_TENANT) {\n logger && info(logger, 'NILEDB_TENANT', process.env.NILEDB_TENANT);\n return process.env.NILEDB_TENANT;\n }\n\n return null;\n};\n\nexport const getBasePath = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n if (basePath) {\n logger && info(logger, 'config', config?.api?.basePath);\n return basePath;\n }\n\n if (process.env.NILEDB_API_URL) {\n logger && info(logger, 'NILEDB_API_URL', process.env.NILEDB_API_URL);\n const apiUrl = new URL(process.env.NILEDB_API_URL);\n return apiUrl.origin;\n }\n\n logger && info(logger, 'default', 'https://api.thenile.dev');\n return 'https://api.thenile.dev';\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (process.env.NILEDB_CONFIGURE) {\n logger && info(logger, 'NILEDB_CONFIGURE', process.env.NILEDB_CONFIGURE);\n return `https://${process.env.NILEDB_CONFIGURE}`;\n }\n\n logger && info(logger, 'default', process.env.NILEDB_CONFIGURE);\n return 'https://api.thenile.dev';\n};\n\nexport function getDbHost(cfg: EnvConfig) {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.host]');\n\n if (config?.db && config.db.host) {\n logger && info(logger, 'config', config?.db.host);\n return config.db.host;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n logger && info(logger, 'NILEDB_POSTGRES_URL', pgUrl.host);\n return pgUrl.host;\n }\n\n if (process.env.NILEDB_HOST) {\n logger && info(logger, 'NILEDB_HOST', process.env.NILEDB_HOST);\n return process.env.NILEDB_HOST;\n }\n\n logger && info(logger, 'default', 'db.thenile.dev');\n return 'db.thenile.dev';\n}\n\nexport function getDbPort(cfg: EnvConfig): number {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.port]');\n if (config?.db?.port && config.db.port != null) {\n logger && info(logger, 'config', config?.db.port);\n return Number(config.db?.port);\n }\n\n if (process.env.NILEDB_PORT) {\n logger && info(logger, 'config', process.env.NILEDB_PORT);\n return Number(process.env.NILEDB_PORT);\n }\n logger && info(logger, 'default', 5432);\n return 5432;\n}\n\n// don't let people accidentally log secrets to production\nconst logProtector = (logger?: string) => {\n return process.env.NODE_ENV === 'development' ||\n process.env.NODE_ENV === 'test'\n ? logger\n : null;\n};\n","import { NilePoolConfig, ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nimport {\n EnvConfig,\n getBasePath,\n getControlPlane,\n getDatabaseName,\n getDatbaseId,\n getDbHost,\n getDbPort,\n getInfoBearer,\n getPassword,\n getTenantId,\n getToken,\n getUsername,\n} from './envVars';\n\ntype Database = {\n name: string;\n apiHost: string;\n dbHost: string;\n id: string;\n message?: string; // is actually an error\n status: 'READY' | string;\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\nexport class Config {\n user: string;\n password: string;\n databaseId: string;\n databaseName: string;\n\n debug: boolean;\n\n db: NilePoolConfig;\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, logger?: string) {\n const envVarConfig: EnvConfig = { config, logger };\n\n this.databaseId = getDatbaseId(envVarConfig) as string;\n this.user = getUsername(envVarConfig) as string;\n this.password = getPassword(envVarConfig) as string;\n this.databaseName = getDatabaseName(envVarConfig) as string;\n this._tenantId = getTenantId(envVarConfig);\n this.debug = Boolean(config?.debug);\n this._userId = config?.userId;\n\n const basePath = getBasePath(envVarConfig);\n const { host, port, ...dbConfig } = config?.db ?? {};\n const configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n ...dbConfig,\n };\n if (this.databaseName) {\n this.db.database = this.databaseName;\n }\n }\n\n configure = async (config: ServerConfig): Promise<Config> => {\n const { info, error } = Logger(config, '[init]');\n\n const envVarConfig: EnvConfig = {\n config,\n };\n\n const { host, port, ...dbConfig } = config.db ?? {};\n let configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId) {\n info('Alreaady configured, aborting fetch');\n return this;\n }\n\n let basePath = getBasePath(envVarConfig);\n const cp = getControlPlane(envVarConfig);\n\n const databaseName = getDatabaseName({ config, logger: 'getInfo' });\n const url = new URL(`${cp}/databases/configure`);\n if (databaseName) {\n url.searchParams.set('databaseName', databaseName);\n }\n info(url.href);\n const res = await fetch(url, {\n headers: {\n Authorization: `Bearer ${getInfoBearer({ config })}`,\n },\n });\n let database: Database;\n const possibleError = res.clone();\n try {\n const json: Database = await res.json();\n if (res.status === 404) {\n info('is the configured databaseName correct?');\n }\n if (json.status && json.status !== 'READY') {\n database = { message: 'Database is not ready yet' } as Database;\n } else {\n database = json;\n }\n } catch (e) {\n const message = await possibleError.text();\n error(message);\n database = { message } as Database;\n }\n info('[fetched database]', database);\n if (process.env.NODE_ENV !== 'TEST') {\n if ('message' in database) {\n if ('statusCode' in database) {\n error(database);\n throw new Error('HTTP error has occured');\n } else {\n throw new Error(\n 'Unable to auto-configure. Please set or remove NILEDB_API, NILEDB_NAME, and NILEDB_HOST in your .env file.'\n );\n }\n }\n if (typeof database === 'object') {\n const { apiHost, dbHost, name, id } = database;\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n const apiurl = new URL(apiHost);\n configuredHost = dburl.host;\n basePath = apiurl.origin;\n }\n }\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n database: this.databaseName,\n ...dbConfig,\n };\n info('[config set]', this);\n return this;\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';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\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 { info, error } = Logger(config, '[server]');\n\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 (getToken({ config })) {\n basicHeaders.set('Authorization', `Bearer ${getToken({ config })}`);\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\n info('[fetch]', useableUrl);\n\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n error('[fetch]', '[response]', e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n if (typeof response.clone === 'function') {\n info('[fetch]', '[response]', await response.clone().json());\n }\n return response;\n }\n\n let res;\n const errorHandler =\n typeof response?.clone === 'function' ? response.clone() : null;\n let msg = '';\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n if (errorHandler) {\n msg = await errorHandler.text();\n if (msg) {\n error('[fetch]', '[response]', `[status: ${errorHandler.status}]`, msg);\n }\n }\n if (!msg) {\n error('[fetch]', '[response]', e);\n }\n }\n if (msg) {\n return new ResponseError(msg, { status: errorHandler?.status });\n }\n\n if (res && 'message' in res) {\n const { message } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n 'UNHANDLED ERROR'\n );\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import { 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 JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && 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 { 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';\nimport { CreateBasicUserRequest, LoginUserResponse } from '../users';\n\nexport interface TenantSSORegistration {\n configUrl: string;\n clientId: string;\n clientSecret: string;\n redirectURI: string;\n emailDomains: Array<string>;\n enabled?: boolean;\n}\n\nexport interface SSOProvider {\n readonly id?: string;\n tenantId?: string;\n provider?: string;\n configUrl: string;\n clientSecret?: string;\n clientId: string;\n redirectURI: string;\n emailDomains?: Array<string>;\n enabled?: boolean;\n}\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users/login`;\n }\n\n login = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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: 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<Response> => {\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 `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users`;\n }\n\n signUp = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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: 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 `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/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<TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<SSOProvider>,\n init?: RequestInit\n ): NileResponse<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<SSOProvider>,\n init?: RequestInit\n ): NileResponse<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 `/databases/${encodeURIComponent(\n this.databaseId\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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 `/databases/${this.databaseId}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n get baseUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}`;\n }\n\n get usersUrl() {\n return `${this.baseUrl}/users`;\n }\n\n get tenantUsersUrl() {\n return `${this.baseUrl}/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.usersUrl, init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): NileResponse<User> => {\n const _requester = new Requester(this);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/tenants`;\n }\n get tenantUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<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<Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","import { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AllowAny = any;\n\nexport function createProxyForPool(pool: Pool, config: Config): Pool {\n const { info, error } = Logger(config, '[pool]');\n return new Proxy<Pool>(pool, {\n get(target: AllowAny, property) {\n if (property === 'query') {\n // give connection string a pass for these problems\n if (!config.db.connectionString) {\n if (!config.user || !config.password) {\n error(\n 'Cannot connect to the database. User and/or password are missing. Generate them at https://console.thenile.dev'\n );\n } else if (!config.db.database) {\n error(\n 'Database name is missing from the config. Call `nile.init()` or set NILEDB_ID in your .env'\n );\n }\n }\n const caller = target[property];\n return function query(...args: AllowAny) {\n info(...args);\n // @ts-expect-error - not mine\n const called = caller.apply(this, args);\n return called;\n };\n }\n return target[property];\n },\n }) as Pool;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\nimport { AfterCreate } from '../types';\nimport Logger from '../utils/Logger';\n\nimport { createProxyForPool } from './PoolProxy';\n\nclass NileDatabase {\n pool: Pool;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: Config;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n const { warn, info } = Logger(config, '[NileInstance]');\n this.id = id;\n const poolConfig = {\n min: 0,\n max: 10,\n idleTimeoutMillis: 30000,\n ...config.db,\n };\n const { afterCreate, ...remaining } = poolConfig;\n\n config.db = poolConfig;\n this.config = config;\n info(this.config);\n\n this.pool = createProxyForPool(new Pool(remaining), this.config);\n\n if (typeof afterCreate === 'function') {\n warn(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n }\n\n // start the timer for cleanup\n this.startTimeout();\n this.pool.on('connect', async (client) => {\n info('pool connected');\n const afterCreate: AfterCreate = makeAfterCreate(config);\n afterCreate(client, (err, _client) => {\n if (err) {\n _client.release();\n }\n });\n this.startTimeout();\n });\n this.pool.on('error', async (e) => {\n info('pool failed', e);\n });\n }\n\n startTimeout() {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(async () => {\n await this.pool.end();\n evictPool(this.id);\n }, this.config.db.idleTimeoutMillis);\n }\n}\n\nexport default NileDatabase;\n\nfunction makeAfterCreate(config: Config): AfterCreate {\n const { warn, info } = Logger(config, '[afterCreate]');\n return (conn, done) => {\n conn.on('error', function errorHandler(error: Error) {\n warn('Connection was terminated by server', error);\n done(error, conn);\n });\n\n if (config.tenantId) {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n warn('A user id cannot be set in context without a tenant id');\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: Error) {\n if (config.tenantId) {\n info('[tenant id]', config.tenantId);\n }\n if (config.userId) {\n info('[user id]', config.userId);\n }\n done(err, conn);\n });\n }\n done(null, conn);\n };\n}\n","import { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport { watchEvictPool } from '../utils/Event';\nimport Logger from '../utils/Logger';\nimport { ServerConfig } from '../types';\n\nimport NileDatabase 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: ServerConfig) {\n const { info } = Logger(config, '[DBManager]');\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n info('constructor', id);\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: ServerConfig): Pool {\n const { info } = Logger(config, '[DBManager]');\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n info('# of instances:', this.connections.size);\n if (existing) {\n info('returning existing', id);\n return existing.pool;\n }\n const newOne = new NileDatabase(new Config(config), id);\n this.connections.set(id, newOne);\n info('created new', id);\n info('# of instances:', this.connections.size);\n return newOne.pool;\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 { Pool } from 'pg';\n\nimport { 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 from './db';\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 auth,\n users,\n tenants,\n };\n};\n\nexport class 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 as ServerConfig, '[initial config]');\n this.servers = new Map();\n this.api = init(this.config);\n this.manager = new DbManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n\n watchUserId((userId) => {\n this.userId = userId;\n });\n\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n async init(cfg?: Config) {\n const updatedConfig = await this.config.configure({\n ...this.config,\n ...cfg,\n });\n this.setConfig(updatedConfig);\n this.manager = new DbManager(this.config);\n this.api = init(updatedConfig);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.databaseId = val;\n this.api.auth.databaseId = val;\n this.api.users.databaseId = val;\n this.api.tenants.databaseId = 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.databaseId = this.config.databaseId;\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.databaseId = this.config.databaseId;\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(): Pool {\n // only need to interact with the knex object\n return this.manager.getConnection(this.config);\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: ServerConfig): 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.databaseId = updatedConfig.databaseId;\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\nexport async function create(config?: ServerConfig): Promise<Server> {\n const server = new Server(config);\n return await server.init();\n}\n\nexport default create;\n"],"names":["Logger","config","_len","arguments","length","params","Array","_key","info","debug","_console","_len2","args","_key2","console","apply","concat","warn","_console2","_len3","_key3","error","_console3","_len4","_key4","getDatbaseId","cfg","logger","_Logger","databaseId","String","process","env","NILEDB_POSTGRES_URL","pgUrl","URL","pathname","substring","NILEDB_ID","getUsername","_Logger2","user","NILEDB_USER","getPassword","log","logProtector","_Logger3","password","NILEDB_PASSWORD","getInfoBearer","getToken","_config$api","_Logger4","api","token","_config$api2","_config$api3","NILEDB_TOKEN","undefined","getDatabaseName","_Logger5","databaseName","NILEDB_NAME","getTenantId","_Logger6","tenantId","NILEDB_TENANT","getBasePath","_config$api4","_Logger7","basePath","_config$api5","NILEDB_API_URL","apiUrl","origin","getControlPlane","_Logger8","NILEDB_CONFIGURE","getDbHost","_Logger9","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger10","port","_config$db2","Number","NILEDB_PORT","NODE_ENV","ApiConfig","_ref","cookieKey","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey2","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","dburl","apiurl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","href","fetch","headers","Authorization","sent","clone","status","t0","text","Error","_extends","stop","_x","Boolean","userId","_ref4","_excluded2","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$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","join","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_x2","_x3","_fetch2","path","opts","_response$status","basicHeaders","authHeader","useableUrl","errorHandler","msg","_res","_res2","_res2$errors","_message","Headers","includes","replace","encodeURIComponent","e","t1","t2","errors","Requester","_Config","call","post","req","request","_callee2","_callee2$","_context2","_x4","_x5","_x6","put","_callee3","_callee3$","_context3","_x7","_x8","_x9","_inheritsLoose","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","Object","values","_x14","_x15","_x16","_x17","Auth","login","_requester","sso","providerRes","providers","_this$api","tenants","tenant","URLSearchParams","listProviders","append","redirectURI","loginSSOUrl","loginUrl","loginSSO","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","signUp","_this$api3","_token$token","_token$token2","signUpUrl","listTenantProviders","listTenantProvidersUrl","createProvider","_ref5","providerName","updateProviderUrl","updateProvider","_ref6","_callee6","_callee6$","_context6","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","getSSOCallbackUrl","param","Users","createTenantUser","tenantUsersUrl","listUsers","usersUrl","updateUser","listTenantUsers","me","meUrl","baseUrl","Tenants","createTenant","tenantsUrl","getTenant","tenantUrl","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","called","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","_client","release","_this2","clearTimeout","setTimeout","end","conn","DBManager","connections","Map","makeId","has","getConnection","existing","size","newOne","getServerId","makeServerId","Buffer","from","toString","auth","users","Server","manager","servers","DbManager","setConfig","_init2","updatedConfig","getInstance","_config","serverId","currentServerId","_this$config","create","_create","server"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.esm.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.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/PoolProxy.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/Server.ts"],"sourcesContent":["import { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nexport default function Logger(\n config: void | Config | ServerConfig,\n ...params: unknown[]\n) {\n return {\n info(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.info('[niledb]', ...params, ...args);\n }\n },\n warn(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.warn('[niledb]', ...params, ...args);\n }\n },\n error(...args: unknown[]) {\n // eslint-disable-next-line no-console\n console.error('[niledb]', '[ERROR]', ...params, ...args);\n },\n };\n}\n","import 'dotenv/config';\nimport { ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nexport type EnvConfig = {\n logger?: string;\n config?: ServerConfig;\n};\n\nexport const getDatbaseId = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[databaseId]');\n if (config?.databaseId) {\n logger && info(logger, 'config', config.databaseId);\n return String(config?.databaseId);\n }\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n return pgUrl.pathname.substring(1);\n }\n logger && info(logger, 'env', process.env.NILEDB_ID);\n return process.env.NILEDB_ID;\n};\nexport const getUsername = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[username]');\n if (config?.user) {\n logger && info(logger, 'config', config.user);\n return String(config?.user);\n }\n logger && info(logger, 'NILEDB_USER', process.env.NILEDB_USER);\n return process.env.NILEDB_USER;\n};\n\nexport const getPassword = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const log = logProtector(logger);\n const { info } = Logger(config, '[password]');\n if (config?.password) {\n log && info(logger, 'config', config.password);\n\n return String(config.password);\n }\n\n log && info(logger, 'NILEDB_PASSWORD', process.env.NILEDB_PASSWORD);\n return process.env.NILEDB_PASSWORD;\n};\n\nexport const getInfoBearer = (cfg: EnvConfig) => {\n return `${getUsername(cfg)}:${getPassword(cfg)}`;\n};\n\nexport const getToken = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[token]');\n if (config?.api?.token) {\n logger && info(logger, 'config', config.api?.token);\n return String(config.api?.token);\n }\n if (process.env.NILEDB_TOKEN) {\n logger && info(logger, 'NILEDB_TOKEN', process.env.NILEDB_TOKEN);\n return process.env.NILEDB_TOKEN;\n }\n return undefined;\n};\n\nexport const getDatabaseName = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[databaseName]');\n if (config?.databaseName) {\n logger && info(logger, 'config', config.databaseName);\n return String(config.databaseName);\n }\n if (process.env.NILEDB_NAME) {\n logger && info(logger, 'NILEDB_NAME', process.env.NILEDB_NAME);\n return process.env.NILEDB_NAME;\n }\n return null;\n};\n\nexport const getTenantId = (cfg: EnvConfig): string | null => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[tenantId]');\n if (config?.tenantId) {\n logger && info(logger, 'config', config.tenantId);\n return config.tenantId;\n }\n\n if (process.env.NILEDB_TENANT) {\n logger && info(logger, 'NILEDB_TENANT', process.env.NILEDB_TENANT);\n return process.env.NILEDB_TENANT;\n }\n\n return null;\n};\n\nexport const getBasePath = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n if (basePath) {\n logger && info(logger, 'config', config?.api?.basePath);\n return basePath;\n }\n\n if (process.env.NILEDB_API_URL) {\n logger && info(logger, 'NILEDB_API_URL', process.env.NILEDB_API_URL);\n const apiUrl = new URL(process.env.NILEDB_API_URL);\n return apiUrl.origin;\n }\n\n logger && info(logger, 'default', 'https://api.thenile.dev');\n return 'https://api.thenile.dev';\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (process.env.NILEDB_CONFIGURE) {\n logger && info(logger, 'NILEDB_CONFIGURE', process.env.NILEDB_CONFIGURE);\n return `https://${process.env.NILEDB_CONFIGURE}`;\n }\n\n logger && info(logger, 'default', process.env.NILEDB_CONFIGURE);\n return 'https://api.thenile.dev';\n};\n\nexport function getDbHost(cfg: EnvConfig) {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.host]');\n\n if (config?.db && config.db.host) {\n logger && info(logger, 'config', config?.db.host);\n return config.db.host;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n logger && info(logger, 'NILEDB_POSTGRES_URL', pgUrl.host);\n return pgUrl.host;\n }\n\n if (process.env.NILEDB_HOST) {\n logger && info(logger, 'NILEDB_HOST', process.env.NILEDB_HOST);\n return process.env.NILEDB_HOST;\n }\n\n logger && info(logger, 'default', 'db.thenile.dev');\n return 'db.thenile.dev';\n}\n\nexport function getDbPort(cfg: EnvConfig): number {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.port]');\n if (config?.db?.port && config.db.port != null) {\n logger && info(logger, 'config', config?.db.port);\n return Number(config.db?.port);\n }\n\n if (process.env.NILEDB_PORT) {\n logger && info(logger, 'config', process.env.NILEDB_PORT);\n return Number(process.env.NILEDB_PORT);\n }\n logger && info(logger, 'default', 5432);\n return 5432;\n}\n\n// don't let people accidentally log secrets to production\nconst logProtector = (logger?: string) => {\n return process.env.NODE_ENV === 'development' ||\n process.env.NODE_ENV === 'test'\n ? logger\n : null;\n};\n","import { NilePoolConfig, ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nimport {\n EnvConfig,\n getBasePath,\n getControlPlane,\n getDatabaseName,\n getDatbaseId,\n getDbHost,\n getDbPort,\n getInfoBearer,\n getPassword,\n getTenantId,\n getToken,\n getUsername,\n} from './envVars';\n\ntype Database = {\n name: string;\n apiHost: string;\n dbHost: string;\n id: string;\n message?: string; // is actually an error\n status: 'READY' | string;\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\nexport class Config {\n user: string;\n password: string;\n databaseId: string;\n databaseName: string;\n\n debug: boolean;\n\n db: NilePoolConfig;\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, logger?: string) {\n const envVarConfig: EnvConfig = { config, logger };\n\n this.user = getUsername(envVarConfig) as string;\n this.password = getPassword(envVarConfig) as string;\n if (process.env.NODE_ENV !== 'TEST') {\n if (!this.user) {\n throw new Error(\n 'User is required. Set NILEDB_USER as an environment variable or set `user` in the config options.'\n );\n }\n if (!this.password) {\n throw new Error(\n 'Password is required. Set NILEDB_PASSWORD as an environment variable or set `password` in the config options.'\n );\n }\n }\n\n this.databaseId = getDatbaseId(envVarConfig) as string;\n this.databaseName = getDatabaseName(envVarConfig) as string;\n this._tenantId = getTenantId(envVarConfig);\n this.debug = Boolean(config?.debug);\n this._userId = config?.userId;\n\n const basePath = getBasePath(envVarConfig);\n const { host, port, ...dbConfig } = config?.db ?? {};\n const configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n ...dbConfig,\n };\n if (this.databaseName) {\n this.db.database = this.databaseName;\n }\n }\n\n configure = async (config: ServerConfig): Promise<Config> => {\n const { info, error } = Logger(config, '[init]');\n\n const envVarConfig: EnvConfig = {\n config,\n };\n\n const { host, port, ...dbConfig } = config.db ?? {};\n let configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId) {\n info('Alreaady configured, aborting fetch');\n return this;\n }\n\n let basePath = getBasePath(envVarConfig);\n const cp = getControlPlane(envVarConfig);\n\n const databaseName = getDatabaseName({ config, logger: 'getInfo' });\n const url = new URL(`${cp}/databases/configure`);\n if (databaseName) {\n url.searchParams.set('databaseName', databaseName);\n }\n info(url.href);\n const res = await fetch(url, {\n headers: {\n Authorization: `Bearer ${getInfoBearer({ config })}`,\n },\n });\n let database: Database;\n const possibleError = res.clone();\n try {\n const json: Database = await res.json();\n if (res.status === 404) {\n info('is the configured databaseName correct?');\n }\n if (json.status && json.status !== 'READY') {\n database = { message: 'Database is not ready yet' } as Database;\n } else {\n database = json;\n }\n } catch (e) {\n const message = await possibleError.text();\n error(message);\n database = { message } as Database;\n }\n info('[fetched database]', database);\n if (process.env.NODE_ENV !== 'TEST') {\n if ('message' in database) {\n if ('statusCode' in database) {\n error(database);\n throw new Error('HTTP error has occured');\n } else {\n throw new Error(\n 'Unable to auto-configure. Please remove NILEDB_NAME, NILEDB_API_URL, NILEDB_POSTGRES_URL, and/or NILEDB_HOST from your environment variables.'\n );\n }\n }\n if (typeof database === 'object') {\n const { apiHost, dbHost, name, id } = database;\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n const apiurl = new URL(apiHost);\n configuredHost = dburl.host;\n basePath = apiurl.origin;\n }\n }\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n database: this.databaseName,\n ...dbConfig,\n };\n info('[config set]', this);\n return this;\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 unsubscribe(eventName: string, callback: EventFn) {\n const toRemove = this.events[eventName].findIndex((cb) => cb === callback);\n if (toRemove !== -1) {\n this.events[eventName].splice(toRemove, 1);\n }\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);\n\nexport const closeEvictPool = (cb: EventFn) =>\n eventer.unsubscribe(Events.EvictPool, cb);\n\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';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\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 { info, error } = Logger(config, '[server]');\n\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 (getToken({ config })) {\n basicHeaders.set('Authorization', `Bearer ${getToken({ config })}`);\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\n info('[fetch]', useableUrl);\n\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n error('[fetch]', '[response]', e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n if (typeof response.clone === 'function') {\n info('[fetch]', '[response]', await response.clone().json());\n }\n return response;\n }\n\n let res;\n const errorHandler =\n typeof response?.clone === 'function' ? response.clone() : null;\n let msg = '';\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n if (errorHandler) {\n msg = await errorHandler.text();\n if (msg) {\n error('[fetch]', '[response]', `[status: ${errorHandler.status}]`, msg);\n }\n }\n if (!msg) {\n error('[fetch]', '[response]', e);\n }\n }\n if (msg) {\n return new ResponseError(msg, { status: errorHandler?.status });\n }\n\n if (res && 'message' in res) {\n const { message } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n 'UNHANDLED ERROR'\n );\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import { 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 JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && 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 { 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';\nimport { CreateBasicUserRequest, LoginUserResponse } from '../users';\n\nexport interface TenantSSORegistration {\n configUrl: string;\n clientId: string;\n clientSecret: string;\n redirectURI: string;\n emailDomains: Array<string>;\n enabled?: boolean;\n}\n\nexport interface SSOProvider {\n readonly id?: string;\n tenantId?: string;\n provider?: string;\n configUrl: string;\n clientSecret?: string;\n clientId: string;\n redirectURI: string;\n emailDomains?: Array<string>;\n enabled?: boolean;\n}\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users/login`;\n }\n\n login = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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: 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<Response> => {\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 `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users`;\n }\n\n signUp = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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: 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 `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/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<TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<SSOProvider>,\n init?: RequestInit\n ): NileResponse<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<SSOProvider>,\n init?: RequestInit\n ): NileResponse<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 `/databases/${encodeURIComponent(\n this.databaseId\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<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 `/databases/${this.databaseId}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n get baseUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}`;\n }\n\n get usersUrl() {\n return `${this.baseUrl}/users`;\n }\n\n get tenantUsersUrl() {\n return `${this.baseUrl}/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.usersUrl, init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): NileResponse<User> => {\n const _requester = new Requester(this);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/tenants`;\n }\n get tenantUrl() {\n return `/databases/${encodeURIComponent(this.databaseId)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<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<Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","import { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AllowAny = any;\n\nexport function createProxyForPool(pool: Pool, config: Config): Pool {\n const { info, error } = Logger(config, '[pool]');\n return new Proxy<Pool>(pool, {\n get(target: AllowAny, property) {\n if (property === 'query') {\n // give connection string a pass for these problems\n if (!config.db.connectionString) {\n if (!config.user || !config.password) {\n error(\n 'Cannot connect to the database. User and/or password are missing. Generate them at https://console.thenile.dev'\n );\n } else if (!config.db.database) {\n error(\n 'Database name is missing from the config. Call `nile.init()` or set NILEDB_ID in your .env'\n );\n }\n }\n const caller = target[property];\n return function query(...args: AllowAny) {\n info(...args);\n // @ts-expect-error - not mine\n const called = caller.apply(this, args);\n return called;\n };\n }\n return target[property];\n },\n }) as Pool;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\nimport { AfterCreate } from '../types';\nimport Logger from '../utils/Logger';\n\nimport { createProxyForPool } from './PoolProxy';\n\nclass NileDatabase {\n pool: Pool;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: Config;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n const { warn, info } = Logger(config, '[NileInstance]');\n this.id = id;\n const poolConfig = {\n min: 0,\n max: 10,\n idleTimeoutMillis: 30000,\n ...config.db,\n };\n const { afterCreate, ...remaining } = poolConfig;\n\n config.db = poolConfig;\n this.config = config;\n info(this.config);\n\n this.pool = createProxyForPool(new Pool(remaining), this.config);\n\n if (typeof afterCreate === 'function') {\n warn(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n }\n\n // start the timer for cleanup\n this.startTimeout();\n this.pool.on('connect', async (client) => {\n info('pool connected');\n const afterCreate: AfterCreate = makeAfterCreate(config);\n afterCreate(client, (err, _client) => {\n if (err) {\n _client.release();\n }\n });\n\n this.startTimeout();\n });\n this.pool.on('error', async (e) => {\n info('pool failed', e);\n if (this.timer) {\n clearTimeout(this.timer);\n }\n evictPool(this.id);\n });\n }\n\n startTimeout() {\n const { info } = Logger(this.config, '[NileInstance]');\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(async () => {\n info(\n 'Pool reached idleTimeoutMillis.',\n this.id,\n 'evicted after',\n this.config.db.idleTimeoutMillis,\n 'ms'\n );\n await this.pool.end(() => {\n // something odd going on here. Without the callback, pool.end() is flakey\n });\n evictPool(this.id);\n }, this.config.db.idleTimeoutMillis);\n }\n}\n\nexport default NileDatabase;\n\nfunction makeAfterCreate(config: Config): AfterCreate {\n const { warn, info } = Logger(config, '[afterCreate]');\n return (conn, done) => {\n conn.on('error', function errorHandler(error: Error) {\n warn('Connection was terminated by server', error);\n done(error, conn);\n });\n\n if (config.tenantId) {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n warn('A user id cannot be set in context without a tenant id');\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: Error) {\n if (config.tenantId) {\n info('[tenant id]', config.tenantId);\n }\n if (config.userId) {\n info('[user id]', config.userId);\n }\n done(err, conn);\n });\n }\n done(null, conn);\n };\n}\n","import { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport { closeEvictPool, watchEvictPool } from '../utils/Event';\nimport Logger from '../utils/Logger';\nimport { ServerConfig } from '../types';\n\nimport NileDatabase from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n cleared: boolean;\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: ServerConfig) {\n const { info } = Logger(config, '[DBManager]');\n this.cleared = false;\n this.connections = new Map();\n // add the base one, so you can at least query\n const id = this.makeId();\n info('constructor', id);\n this.connections.set(id, new NileDatabase(new Config(config), id));\n watchEvictPool(this.poolWatcher(config));\n }\n poolWatcher = (config: ServerConfig) => (id: undefined | null | string) => {\n const { info } = Logger(config, '[DBManager]');\n if (id && this.connections.has(id)) {\n info('Removing', id, 'from db connection pool.');\n this.connections.delete(id);\n }\n };\n\n getConnection = (config: ServerConfig): Pool => {\n const { info } = Logger(config, '[DBManager]');\n const id = this.makeId(config.tenantId, config.userId);\n const existing = this.connections.get(id);\n info('# of instances:', this.connections.size);\n if (existing) {\n info('returning existing', id);\n existing.startTimeout();\n return existing.pool;\n }\n const newOne = new NileDatabase(new Config(config), id);\n this.connections.set(id, newOne);\n info('created new', id);\n info('# of instances:', this.connections.size);\n // resume listening to the evict pool if a connection is requested.\n if (this.cleared) {\n this.cleared = false;\n watchEvictPool(this.poolWatcher(config));\n }\n return newOne.pool;\n };\n\n clear = (config: ServerConfig) => {\n const { info } = Logger(config, '[DBManager]');\n info('Clearing all connections', this.connections.size);\n closeEvictPool(this.poolWatcher(config));\n this.cleared = true;\n this.connections.clear();\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 { Pool } from 'pg';\n\nimport { 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 from './db';\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 auth,\n users,\n tenants,\n };\n};\n\nexport class 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 as ServerConfig, '[initial config]');\n this.servers = new Map();\n this.api = init(this.config);\n this.manager = new DbManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n\n watchUserId((userId) => {\n this.userId = userId;\n });\n\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n async init(cfg?: Config) {\n const updatedConfig = await this.config.configure({\n ...this.config,\n ...cfg,\n });\n this.setConfig(updatedConfig);\n\n this.manager.clear(this.config);\n this.manager = new DbManager(this.config);\n this.api = init(this.config);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.databaseId = val;\n this.api.auth.databaseId = val;\n this.api.users.databaseId = val;\n this.api.tenants.databaseId = 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.databaseId = this.config.databaseId;\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.databaseId = this.config.databaseId;\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(): Pool {\n // only need to interact with the knex object\n return this.manager.getConnection(this.config);\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: ServerConfig): 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.databaseId = updatedConfig.databaseId;\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\nexport async function create(config?: ServerConfig): Promise<Server> {\n const server = new Server(config);\n return await server.init();\n}\n\nexport default create;\n"],"names":["Logger","config","_len","arguments","length","params","Array","_key","info","debug","_console","_len2","args","_key2","console","apply","concat","warn","_console2","_len3","_key3","error","_console3","_len4","_key4","getDatbaseId","cfg","logger","_Logger","databaseId","String","process","env","NILEDB_POSTGRES_URL","pgUrl","URL","pathname","substring","NILEDB_ID","getUsername","_Logger2","user","NILEDB_USER","getPassword","log","logProtector","_Logger3","password","NILEDB_PASSWORD","getInfoBearer","getToken","_config$api","_Logger4","api","token","_config$api2","_config$api3","NILEDB_TOKEN","undefined","getDatabaseName","_Logger5","databaseName","NILEDB_NAME","getTenantId","_Logger6","tenantId","NILEDB_TENANT","getBasePath","_config$api4","_Logger7","basePath","_config$api5","NILEDB_API_URL","apiUrl","origin","getControlPlane","_Logger8","NILEDB_CONFIGURE","getDbHost","_Logger9","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger10","port","_config$db2","Number","NILEDB_PORT","NODE_ENV","ApiConfig","_ref","cookieKey","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey2","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","dburl","apiurl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","href","fetch","headers","Authorization","sent","clone","status","t0","text","Error","_extends","stop","_x","Boolean","userId","_ref4","_excluded2","ResponseError","body","init","response","Response","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","unsubscribe","toRemove","findIndex","cb","splice","eventer","updateTenantId","Tenant","watchTenantId","updateUserId","User","watchUserId","updateToken","val","Token","watchToken","watchEvictPool","EvictPool","closeEvictPool","evictPool","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","_headers$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","join","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_x2","_x3","_fetch2","path","opts","_response$status","basicHeaders","authHeader","useableUrl","errorHandler","msg","_res","_res2","_res2$errors","_message","Headers","includes","replace","encodeURIComponent","e","t1","t2","errors","Requester","_Config","call","post","req","request","_callee2","_callee2$","_context2","_x4","_x5","_x6","put","_callee3","_callee3$","_context3","_x7","_x8","_x9","_inheritsLoose","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","Object","values","_x14","_x15","_x16","_x17","Auth","login","_requester","sso","providerRes","providers","_this$api","tenants","tenant","URLSearchParams","listProviders","append","redirectURI","loginSSOUrl","loginUrl","loginSSO","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","signUp","_this$api3","_token$token","_token$token2","signUpUrl","listTenantProviders","listTenantProvidersUrl","createProvider","_ref5","providerName","updateProviderUrl","updateProvider","_ref6","_callee6","_callee6$","_context6","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","getSSOCallbackUrl","param","Users","createTenantUser","tenantUsersUrl","listUsers","usersUrl","updateUser","listTenantUsers","me","meUrl","baseUrl","Tenants","createTenant","tenantsUrl","getTenant","tenantUrl","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","called","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","_client","release","clearTimeout","_this2","setTimeout","end","conn","DBManager","connections","cleared","poolWatcher","has","getConnection","makeId","existing","size","newOne","clear","Map","getServerId","makeServerId","Buffer","from","toString","auth","users","Server","manager","servers","DbManager","setConfig","_init2","updatedConfig","getInstance","_config","serverId","currentServerId","_this$config","create","_create","server"],"mappings":"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"}
|