@niledatabase/server 3.0.0-alpha.2 → 3.0.0-alpha.21

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.
Files changed (43) hide show
  1. package/dist/Api.d.ts +22 -0
  2. package/dist/Server.d.ts +2 -25
  3. package/dist/api/routes/auth/callback.d.ts +2 -1
  4. package/dist/api/routes/auth/csrf.d.ts +2 -1
  5. package/dist/api/routes/auth/error.d.ts +2 -1
  6. package/dist/api/routes/auth/providers.d.ts +2 -1
  7. package/dist/api/routes/auth/signin.d.ts +2 -1
  8. package/dist/api/routes/auth/signout.d.ts +2 -1
  9. package/dist/api/routes/tenants/GET.d.ts +3 -2
  10. package/dist/api/routes/tenants/POST.d.ts +3 -3
  11. package/dist/api/routes/tenants/[tenantId]/DELETE.d.ts +3 -3
  12. package/dist/api/routes/tenants/[tenantId]/GET.d.ts +37 -0
  13. package/dist/api/routes/tenants/[tenantId]/PUT.d.ts +38 -0
  14. package/dist/api/routes/tenants/[tenantId]/users/GET.d.ts +3 -3
  15. package/dist/api/routes/tenants/[tenantId]/users/POST.d.ts +3 -2
  16. package/dist/api/routes/tenants/[tenantId]/users/PUT.d.ts +4 -5
  17. package/dist/api/routes/tenants/[tenantId]/users/[userId]/DELETE.d.ts +5 -5
  18. package/dist/api/routes/users/GET.d.ts +3 -2
  19. package/dist/api/routes/users/POST.d.ts +3 -3
  20. package/dist/api/routes/users/[userId]/PUT.d.ts +3 -2
  21. package/dist/api/utils/request.d.ts +1 -1
  22. package/dist/api/utils/routes/apiRoutes.d.ts +2 -1
  23. package/dist/api/utils/routes/makeRestUrl.d.ts +2 -1
  24. package/dist/api/utils/routes/proxyRoutes.d.ts +2 -1
  25. package/dist/db/DBManager.d.ts +1 -0
  26. package/dist/db/NileInstance.d.ts +1 -1
  27. package/dist/server.cjs.development.js +2790 -2485
  28. package/dist/server.cjs.development.js.map +1 -1
  29. package/dist/server.cjs.production.min.js +1 -1
  30. package/dist/server.cjs.production.min.js.map +1 -1
  31. package/dist/server.esm.js +2791 -2486
  32. package/dist/server.esm.js.map +1 -1
  33. package/dist/tenants/index.d.ts +7 -3
  34. package/dist/types.d.ts +8 -0
  35. package/dist/users/index.d.ts +7 -7
  36. package/dist/utils/Config/envVars.d.ts +1 -2
  37. package/dist/utils/Config/index.d.ts +8 -8
  38. package/dist/utils/Event/index.d.ts +0 -1
  39. package/dist/utils/Logger.d.ts +5 -4
  40. package/dist/utils/Requester/index.d.ts +5 -5
  41. package/dist/utils/Requester/types.d.ts +1 -1
  42. package/package.json +2 -2
  43. package/dist/utils/Server/index.d.ts +0 -4
@@ -1 +1 @@
1
- {"version":3,"file":"server.cjs.development.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/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/auth/index.ts","../src/api/utils/routes/defaultRoutes.ts","../src/api/utils/routes/makeRestUrl.ts","../src/api/utils/routes/apiRoutes.ts","../src/api/utils/routes/urlMatches.ts","../src/api/utils/request.ts","../src/api/routes/me/index.ts","../src/api/utils/auth.ts","../src/api/routes/users/POST.ts","../src/api/routes/users/GET.ts","../src/api/routes/users/[userId]/PUT.ts","../src/api/routes/users/index.ts","../src/api/routes/tenants/[tenantId]/users/GET.ts","../src/api/routes/tenants/[tenantId]/users/POST.ts","../src/api/routes/tenants/[tenantId]/users/[userId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/users/PUT.ts","../src/api/routes/tenants/[tenantId]/users/index.ts","../src/api/routes/tenants/GET.ts","../src/api/routes/tenants/[tenantId]/DELETE.ts","../src/api/routes/tenants/POST.ts","../src/api/routes/tenants/index.ts","../src/api/utils/routes/proxyRoutes.ts","../src/api/routes/auth/signin.ts","../src/api/routes/auth/session.ts","../src/api/routes/auth/providers.ts","../src/api/routes/auth/csrf.ts","../src/api/routes/auth/callback.ts","../src/api/routes/auth/signout.ts","../src/api/routes/auth/error.ts","../src/api/handlers/GET.ts","../src/api/handlers/POST.ts","../src/api/handlers/DELETE.ts","../src/api/handlers/PUT.ts","../src/api/handlers/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 getDatabaseId = (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 getLocal = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n if (process.env.NILEDB_LOCAL) {\n const { info } = Logger(config, '[local]');\n logger && info(logger, 'NILEDB_LOCAL', process.env.NILEDB_LOCAL);\n const apiUrl = new URL(process.env.NILEDB_LOCAL);\n return apiUrl.href;\n }\n return 'http://localhost:3000';\n};\n/**\n * @param cfg various overrides\n * @returns the url for REST to use\n */\nexport const getBasePath = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n let version = '';\n if (!/\\/v\\d\\//.test(String(basePath))) {\n version =\n config?.api?.version === 1 ? '' : `/v${config?.api?.version ?? 2}`;\n }\n if (basePath) {\n logger && info(logger, 'config', basePath);\n return `${basePath}${version}`;\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.href;\n }\n\n throw new Error('NILEDB_API_URL is missing.');\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 process.env.NILEDB_CONFIGURE;\n }\n\n logger && info(logger, 'default', process.env.NILEDB_CONFIGURE);\n return 'https://global.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 { Database, NilePoolConfig, ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nimport {\n EnvConfig,\n getBasePath,\n getControlPlane,\n getDatabaseName,\n getDatabaseId,\n getDbHost,\n getDbPort,\n getInfoBearer,\n getPassword,\n getTenantId,\n getToken,\n getUsername,\n getLocal,\n} from './envVars';\n\nexport type ConfigRoutes = {\n SIGNIN?: string;\n SESSION?: string;\n PROVIDERS?: string;\n CSRF?: string;\n CALLBACK?: string;\n SIGNOUT?: string;\n ME?: string;\n ERROR?: string;\n};\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n public version?: number;\n public localPath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n version,\n localPath,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n version: number;\n localPath: string;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this.version = version;\n this._token = token;\n this.localPath = localPath ?? 'http://localhost:3000';\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 routePrefix?: string;\n routes?: ConfigRoutes;\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 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 = getDatabaseId(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 version: config?.api?.version ?? 2,\n localPath: getLocal(envVarConfig),\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('Already 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('configuring from', 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 occurred');\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 const duckApiHost = getBasePath(envVarConfig) || apiHost; // this needs changed in the control plane response\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n configuredHost = dburl.host;\n basePath = duckApiHost;\n }\n }\n delete envVarConfig.config?.api?.basePath;\n basePath = getBasePath(envVarConfig);\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n version: config?.api?.version ?? 2,\n localPath: getLocal(envVarConfig),\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 = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\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, X_NILE_TENANT);\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(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const creds = Buffer.from(\n `${process.env.NILEDB_USER}:${process.env.NILEDB_PASSWORD}`,\n 'utf8'\n ).toString('base64');\n\n basicHeaders.set('niledb-creds', creds);\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 try {\n info('[fetch]', '[response]', await response.clone().json());\n } catch (e) {\n info('[fetch]', '[response]', await response.clone().text());\n }\n }\n return response;\n }\n if (response?.status === 401) {\n return new ResponseError('Unauthorized', { status: 401 });\n }\n if (response?.status === 405) {\n return new ResponseError('Method not allowed', { status: 405 });\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 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 = 'DELETE' | '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 delete = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('DELETE', url, req, init);\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 headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<LoginUserResponse> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(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 const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): NileResponse<User[]> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<User> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\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 headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<Tenant> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\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 const _init = this.handleHeaders(init);\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.db);\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) => {\n const { error } = Logger(config, '[after create callback]');\n if (err) {\n error('after create failed', err);\n evictPool(this.id);\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 info('Pool end called');\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 { Config } from '../utils/Config';\n\n/**\n * a helper function to log in server side.\n */\nexport default function serverAuth(\n config: Config,\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n }\n) {\n return async function login({\n email,\n password,\n }: {\n email: string;\n password: string;\n }) {\n const sessionUrl = new URL(`${config.api.localPath}/api/auth/providers`);\n const sessionReq = new Request(sessionUrl, {\n method: 'GET',\n headers: new Headers({\n host: sessionUrl.host,\n }),\n });\n const sessionRes = await handlers.POST(sessionReq);\n const providers = await sessionRes?.json();\n\n const csrf = new URL(`${config.api.localPath}/api/auth/csrf`);\n const csrfReq = new Request(csrf, {\n method: 'GET',\n headers: new Headers({\n host: sessionUrl.host,\n }),\n });\n const csrfRes = await handlers.POST(csrfReq);\n\n const { csrfToken } = (await csrfRes?.json()) ?? {};\n const { credentials } = providers;\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n expect(csrfCookie).toContain('nile.csrf-token=');\n\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('unable to authenticate REST');\n }\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n 'content-type': 'application/json',\n cookie: csrfCookie,\n }),\n body: JSON.stringify({\n email,\n password,\n csrfToken,\n callbackUrl: credentials.callbackUrl,\n }),\n });\n const loginRes = await handlers.POST(postReq);\n const authCookie = loginRes?.headers.get('set-cookie');\n if (!authCookie) {\n throw new Error('authentication failed');\n }\n expect(authCookie).toContain('nile.session-token=');\n const [, token] = /(nile\\.session-token=.+?);/.exec(authCookie) ?? [];\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n });\n };\n}\n","import { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","const NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(path: string, qp?: Record<string, string>) {\n if (!NILEDB_API_URL) {\n throw new Error('An API url is required. Set it via NILEDB_API_URL.');\n }\n const params = new URLSearchParams(qp);\n return `${[NILEDB_API_URL, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = {\n ME: makeRestUrl('/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl('/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(`/users/${userId}`),\n TENANTS: makeRestUrl('/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(`/tenants/${tenantId}`),\n SIGNUP: makeRestUrl('/signup'),\n TENANT_USERS: (tenantId: string) => makeRestUrl(`/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(`/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) => makeRestUrl(`/users/${userId}/tenants`),\n};\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","const { log } = console;\nimport { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config?: Config\n) {\n const { info, error } = Logger(\n { ...config, debug: config?.debug },\n '[REQUEST]',\n `[${url}]`\n );\n const { request, ...init } = _init;\n const requestUrl = new URL(request.url);\n const updatedHeaders = new Headers(request.headers);\n\n updatedHeaders.set('host', requestUrl.host);\n updatedHeaders.set('niledb-origin', requestUrl.origin);\n updatedHeaders.set(\n 'niledb-creds',\n Buffer.from(\n `${process.env.NILEDB_USER}:${process.env.NILEDB_PASSWORD}`\n ).toString('base64')\n );\n const params = { ...init, headers: updatedHeaders };\n if (params.method === 'POST' || params.method === 'PUT') {\n params.body = init.body ?? request.body;\n // @ts-expect-error - its there\n params.duplex = 'half';\n }\n\n log(`[${params.method ?? 'GET'}]`, url);\n const res = await fetch(url, { ...params }).catch((e) => {\n error('An error has occurred in the fetch', e);\n return new Response(\n 'An unexpected (most likely configuration) problem has occurred',\n { status: 500 }\n );\n });\n const loggingRes = typeof res?.clone === 'function' ? res?.clone() : null;\n info('[Response]', res?.status, res?.statusText, await loggingRes?.text());\n return res;\n}\n","import Logger from '../../../utils/Logger';\nimport { Routes } from '../../types';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\nimport request from '../../utils/request';\n\nconst key = 'ME';\nconst url = apiRoutes[key];\n\n/**\n * @swagger\n * /api/me:\n * get:\n * summary: Identify the principal\n * description: Returns information about the principal associated with the session\n * provided\n * operationId: me\n * responses:\n * \"200\":\n * description: Identified user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nasync function GET(\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n log('[GET]', url);\n const res = await request(url, init);\n return res;\n}\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n\n switch (request.method) {\n case 'GET':\n return await GET({ request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nimport request from './request';\n\nexport type ActiveSession = {\n id: string;\n email: string;\n expires: Date;\n user?: {\n id: string;\n name: string;\n image: string;\n email: string;\n emailVerified: void | Date;\n };\n};\nexport default async function auth(\n req: Request,\n config: Config\n): Promise<void | ActiveSession> {\n const { info } = Logger({ ...config, debug: config.debug }, '[nileauth]');\n info('checking auth');\n\n const sessionUrl = `${config.api.basePath}/auth/session`;\n info('using session', sessionUrl);\n // handle the pass through with posts\n req.headers.delete('content-length');\n\n const res = await request(sessionUrl, { request: req });\n if (!res) {\n info('no session found');\n return undefined;\n }\n info('session active');\n return await new Response(res.body).json();\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n/**\n * @swagger\n * /api/users:\n * post:\n * tags:\n * - users\n * summary: Creates a user\n * description: Creates a user in the database\n * operationId: createUser\n * parameters:\n * - name: tenantId\n * description: A tenant id to add the user to when they are created\n * in: query\n * schema:\n * type: string\n * - name: newTenantName\n * description: A tenant name to create, then the user to when they are created\n * in: query\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * The `newTenant` is optional; if provided, it is used as the name of a new tenant record associated with the newly created user.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * Create User Request with Tenant:\n * summary: Creates a user and a new tenant for that user\n * description: Create User Request with Tenant\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * newTenant: My Sandbox\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: \"#/components/schemas/User\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function POST(\n session: void | ActiveSession,\n init: RequestInit & { request: Request },\n log?: (...args: string[]) => void\n) {\n if (!session) {\n return new Response(null, { status: 401 });\n }\n init.body = init.request.body;\n init.method = 'POST';\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n const url = apiRoutes.USERS(tenant ? tenant : undefined);\n log && log('[POST]', url);\n\n return await request(url, init);\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/users:\n * get:\n * tags:\n * - users\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided. You can also pass the a `niledb-tenant-id` in the header or in a cookie.\n * operationId: listUsers\n * parameters:\n * - name: tenantId\n * in: query\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/TenantUser'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n if (!tenant) {\n log('[GET]', '[ERROR]', 'No tenant id provided.');\n return new Response(null, { status: 404 });\n }\n const url = apiRoutes.TENANT_USERS(tenant);\n log('[GET]', url);\n init.method = 'GET';\n return await request(url, init);\n}\n","import { apiRoutes } from '../../../utils/routes/apiRoutes';\nimport fetch from '../../../utils/request';\nimport { ActiveSession } from '../../../utils/auth';\n\n/**\n * @swagger\n * /api/users/{userid}:\n * put:\n * tags:\n * - users\n * summary: update a user\n * description: updates a user within the tenant\n * operationId: updateUser\n * parameters:\n * - name: userid\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * Update a user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/UpdateUserRequest'\n * responses:\n * \"200\":\n * description: An updated user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function PUT(\n session: void | ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n if (!session) {\n return new Response(null, { status: 401 });\n }\n init.body = init.request.body;\n init.method = 'PUT';\n\n // update the user\n\n const [userId] = new URL(init.request.url).pathname.split('/').reverse();\n\n const url = apiRoutes.USER(userId);\n\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { Routes } from '../../types';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport auth from '../../utils/auth';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nimport { POST } from './POST';\nimport { GET } from './GET';\nimport { PUT } from './[userId]/PUT';\n\nconst key = 'USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n switch (request.method) {\n case 'GET':\n return await GET({ request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'PUT':\n return await PUT(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport { ActiveSession } from '../../../../utils/auth';\nimport request from '../../../../utils/request';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * get:\n * tags:\n * - users\n * summary: List tenant users\n * description: Lists users that are associated with the specified tenant.\n * operationId: listTenantUsers\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: Users found\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/User'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function GET(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n const url = `${apiRoutes.TENANT_USERS(tenantId)}`;\n log('[GET]', '[TENANT_USERS]', url);\n return await request(url, init);\n}\n","import { ActiveSession } from '../../../../utils/auth';\nimport fetch from '../../../../utils/request';\nimport { apiRoutes } from '../../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * post:\n * tags:\n * - users\n * summary: Create a user in a tenant\n * description: Creates a new user and associates that user with the specified\n * tenant.\n * operationId: createTenantUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n */\nexport async function POST(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n init.body = JSON.stringify({ email: session.email });\n init.method = 'PUT';\n const url = apiRoutes.TENANT_USERS(tenantId);\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { apiRoutes } from '../../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../../utils/request';\nimport { ActiveSession } from '../../../../../utils/auth';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users/{userId}:\n * delete:\n * tags:\n * - tenants\n * summary: removes a user from a tenant\n * description: removes an associated user from a specified\n * tenant.\n * operationId: unlinkUser \n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * - name: userId \n * in: path\n * required: true\n * schema:\n * type: string\n \n * responses:\n * \"204\":\n * description: User removed\n */\n\nexport async function DELETE(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [userId, _, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'DELETE';\n const url = `${apiRoutes.TENANT_USER(tenantId, userId)}`;\n log('[DELETE]', url);\n\n return await fetch(url, init);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../utils/request';\nimport { ActiveSession } from '../../../../utils/auth';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * put:\n * tags:\n * - tenants\n * summary: associates an existing user with the tenant\n * operationId: linkUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/AssociateUserRequest'\n * responses:\n * \"201\":\n * description: add user to tenant\n */\n\nexport async function PUT(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'PUT';\n const url = `${apiRoutes.TENANT_USERS(tenantId)}`;\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { Config } from '../../../../../utils/Config';\nimport urlMatches from '../../../../utils/routes/urlMatches';\nimport { Routes } from '../../../../types';\nimport auth from '../../../../utils/auth';\nimport Logger from '../../../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { POST } from './POST';\nimport { DELETE } from './[userId]/DELETE';\nimport { PUT } from './PUT';\n\nconst key = 'TENANT_USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n\n switch (request.method) {\n case 'GET':\n return await GET(session, { request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'PUT':\n return await PUT(session, { request }, info);\n case 'DELETE':\n return await DELETE(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n const url = new URL(request.url);\n const [userId, possibleTenantId, tenantId] = url.pathname\n .split('/')\n .reverse();\n let route = configRoutes[key]\n .replace('{tenantId}', tenantId)\n .replace('{userId}', userId);\n if (userId === 'users') {\n route = configRoutes[key].replace('{tenantId}', possibleTenantId);\n }\n return urlMatches(request.url, route);\n}\n","import { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * get:\n * tags:\n * - tenants\n * summary: list tenants by user\n * description: Creates a user in the database\n * operationId: listTenants\n * responses:\n * \"200\":\n * description: a list of tenants\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: \"#/components/schemas/Tenant\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n let url = `${apiRoutes.USER_TENANTS(session.id)}`;\n if (typeof session === 'object' && 'user' in session && session.user) {\n url = `${apiRoutes.USER_TENANTS(session.user.id)}`;\n }\n log('[GET]', url);\n\n const res = await request(url, init);\n return res;\n}\n","import { ActiveSession } from '../../../utils/auth';\nimport fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * delete:\n * tags:\n * - tenants\n * summary: Deletes a tenant.\n * operationId: deleteTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"204\":\n * description: Tenant deleted\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function DELETE(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'DELETE';\n const url = `${apiRoutes.TENANT(tenantId)}`;\n log('[DELETE]', url);\n\n return await fetch(url, init);\n}\n","import { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * post:\n * tags:\n * - tenants\n * summary: Create a tenant\n * description: Creates a new tenant in a database.\n * operationId: createTenant\n * requestBody:\n * description: A wrapper for the tenant name.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateTenantRequest'\n * examples:\n * Create Tenant Request:\n * summary: Creates a named tenant\n * description: Create Tenant Request\n * value:\n * name: My Sandbox\n * responses:\n * \"201\":\n * description: Tenant created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Database not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function POST(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const url = `${apiRoutes.TENANTS}`;\n log('[POST]', url);\n\n return await request(url, init);\n}\n","import { Config } from '../../../utils/Config';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport auth from '../../utils/auth';\nimport Logger from '../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { DELETE } from './[tenantId]/DELETE';\nimport { POST } from './POST';\n\nconst key = 'TENANTS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n\n switch (request.method) {\n case 'GET':\n return await GET(session, { request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'DELETE':\n return await DELETE(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { makeRestUrl } from './makeRestUrl';\n\nexport const proxyRoutes = {\n SIGNIN: makeRestUrl('/auth/signin'),\n PROVIDERS: makeRestUrl('/auth/providers'),\n SESSION: makeRestUrl('/auth/session'),\n CSRF: makeRestUrl('/auth/csrf'),\n CALLBACK: makeRestUrl('/auth/callback'),\n SIGNOUT: makeRestUrl('/auth/signout'),\n ERROR: makeRestUrl('/auth/error'),\n};\n\ntype ProxyKeys = keyof typeof proxyRoutes;\n\nexport type ProxyPaths = (typeof proxyRoutes)[ProxyKeys];\n","/**\n * @swagger\n * /api/auth/signin:\n * get:\n * tags:\n * - authentication\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided\n * operationId: signin\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nimport { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNIN';\n\nexport default async function route(req: Request) {\n let url = proxyRoutes[key];\n\n const init: RequestInit = {\n method: req.method,\n headers: req.headers,\n };\n if (req.method === 'POST') {\n if (typeof req.clone === 'function') {\n init.body = req.clone().body;\n }\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n\n url = `${proxyRoutes[key]}/${provider}`;\n }\n\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n\n url = `${url}${params.toString() !== '' ? `?${params.toString()}` : ''}`;\n\n const res = await request(url, { ...init, request: req });\n\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes.SESSION,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.SESSION);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nexport default async function route(req: Request) {\n return request(proxyRoutes.PROVIDERS, {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.PROVIDERS);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nexport default async function route(req: Request) {\n return request(proxyRoutes.CSRF, {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CSRF);\n}\n","import { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\n\nconst { log, error } = console;\nexport default async function route(request: Request) {\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(request.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes.CALLBACK}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await fetch(url, {\n request,\n method: request.method,\n }).catch((e) => {\n error('an error has occurred in callback');\n log(e);\n });\n\n const location = res?.headers.get('location');\n if (location) {\n return new Response(res?.body, {\n status: 302,\n headers: res?.headers,\n });\n }\n return new Response(res?.body, {\n status: res?.status,\n headers: res?.headers,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CALLBACK);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNOUT';\nexport default async function route(request: Request) {\n let url = proxyRoutes[key];\n\n const init: RequestInit = {\n method: request.method,\n };\n if (request.method === 'POST') {\n init.body = request.body;\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n url = `${proxyRoutes[key]}/${provider}`;\n }\n\n const res = await fetch(url, { ...init, request });\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'ERROR';\nexport default async function route(req: Request) {\n return request(proxyRoutes[key], {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import me, { matches as matchesMe } from '../routes/me';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport { Routes } from '../types';\nimport * as authRoutes from '../routes/auth';\nimport { Config } from '../../utils/Config';\n\nexport default function GETTER(configRoutes: Routes, config: Config) {\n return async function GET(req: Request) {\n if (matchesMe(configRoutes, req)) {\n return me(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n return authRoutes.handleSignIn(req);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n return authRoutes.handleError(req);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\nimport * as authRoutes from '../routes/auth';\n\nexport default function POSTER(configRoutes: Routes, config: Config) {\n return async function POST(req: Request) {\n // order matters for tenantUsers\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n return authRoutes.handleSignIn(req);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantsUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function DELETER(configRoutes: Routes, config: Config) {\n return async function DELETE(req: Request) {\n if (matchesTenantsUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function PUTER(configRoutes: Routes, config: Config) {\n return async function PUT(req: Request) {\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import { Config } from '../../utils/Config';\nimport { Routes } from '../types';\n\nimport getter from './GET';\nimport poster from './POST';\nimport deleter from './DELETE';\nimport puter from './PUT';\n\nexport default function Handlers(configRoutes: Routes, config: Config) {\n const GET = getter(configRoutes, config);\n const POST = poster(configRoutes, config);\n const DELETE = deleter(configRoutes, config);\n const PUT = puter(configRoutes, config);\n return {\n GET,\n POST,\n DELETE,\n PUT,\n };\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\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';\nimport serverAuth from './auth';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport Handlers from './api/handlers';\nimport { Routes } from './api/types';\n\nclass Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\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 = new Api(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 = new Api(this.config);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.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.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.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.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 // propagate 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","getDatabaseId","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","getLocal","NILEDB_LOCAL","_Logger7","apiUrl","href","getBasePath","_config$api4","_Logger8","basePath","version","test","_config$api5","_config$api$version","_config$api6","NILEDB_API_URL","Error","getControlPlane","_Logger9","NILEDB_CONFIGURE","getDbHost","_Logger10","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger11","port","_config$db2","Number","NILEDB_PORT","ApiConfig","_ref","cookieKey","localPath","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey2","_config$api$version2","routePrefix","routes","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_envVarConfig$config","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","duckApiHost","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","_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","watchToken","Token","watchEvictPool","EvictPool","closeEvictPool","evictPool","val","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","creds","authHeader","useableUrl","errorHandler","msg","_res","_res2","_res2$errors","_message","Headers","Buffer","from","toString","includes","replace","encodeURIComponent","e","t1","t2","t3","t4","t5","errors","Requester","_Config","call","post","req","request","_callee2","_callee2$","_context2","_x4","_x5","_x6","put","_callee3","_callee3$","_context3","_x7","_x8","_x9","_callee4","_callee4$","_context4","_x10","_x11","_x12","_inheritsLoose","rawRequest","_rawRequest","_callee5","method","_init","_callee5$","_context5","_x13","_x14","_x15","_x16","_request","_callee6","_headers","_callee6$","_context6","Request","JSON","stringify","Object","values","_x17","_x18","_x19","_x20","Users","createUser","_requester","handleHeaders","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","_this$tenantId","getUserId","_ref5","unlinkUser","_ref6","me","_ref7","_callee7","_callee7$","_context7","meUrl","_init2","_this$tenantId2","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","clearTimeout","_this2","setTimeout","end","conn","DBManager","connections","cleared","poolWatcher","has","getConnection","makeId","existing","size","newOne","clear","Map","getServerId","makeServerId","serverAuth","handlers","_login","_yield$csrfRes$json","_exec","email","sessionUrl","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","POST","expect","toContain","callbackUrl","exec","login","appRoutes","prefix","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","ME","USERS","TENANTS","TENANT_USER","TENANT_USERS","SIGNUP","makeRestUrl","qp","URLSearchParams","apiRoutes","USER","TENANT","USER_TENANTS","urlMatches","requestUrl","route","startsWith","_params$method","updatedHeaders","_init$body","loggingRes","origin","duplex","statusText","GET","_GET","_route","matches","configRoutes","auth","_auth","_POST","session","yurl","tenant","PUT","_PUT","_URL$pathname$split$r","reverse","_yurl$pathname$split$","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","proxyRoutes","provider","passThroughUrl","search","location","GETTER","matchesMe","matchesUsers","users","matchesTenantUsers","tenantUsers","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","Api","payload","Server","manager","servers","DbManager","_proto2","setConfig","updatedConfig","getInstance","_config","serverId","currentServerId","_this$config","create","_create","server"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.ts","../src/utils/Event/index.ts","../src/db/PoolProxy.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/api/utils/routes/makeRestUrl.ts","../src/api/utils/routes/apiRoutes.ts","../src/api/utils/routes/urlMatches.ts","../src/api/utils/request.ts","../src/api/routes/me/index.ts","../src/api/utils/auth.ts","../src/utils/ResponseError.ts","../src/utils/fetch.ts","../src/api/routes/users/POST.ts","../src/api/routes/users/GET.ts","../src/api/routes/users/[userId]/PUT.ts","../src/api/routes/users/index.ts","../src/api/routes/tenants/[tenantId]/users/GET.ts","../src/api/routes/tenants/[tenantId]/users/POST.ts","../src/api/routes/tenants/[tenantId]/users/[userId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/users/PUT.ts","../src/api/routes/tenants/[tenantId]/users/index.ts","../src/api/routes/tenants/GET.ts","../src/api/routes/tenants/[tenantId]/GET.ts","../src/api/routes/tenants/[tenantId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/PUT.ts","../src/api/routes/tenants/POST.ts","../src/api/routes/tenants/index.ts","../src/api/utils/routes/proxyRoutes.ts","../src/api/routes/auth/signin.ts","../src/api/routes/auth/session.ts","../src/api/routes/auth/providers.ts","../src/api/routes/auth/csrf.ts","../src/api/routes/auth/callback.ts","../src/api/routes/auth/signout.ts","../src/api/routes/auth/error.ts","../src/api/handlers/GET.ts","../src/api/handlers/POST.ts","../src/api/handlers/DELETE.ts","../src/api/handlers/PUT.ts","../src/api/handlers/index.ts","../src/api/utils/routes/defaultRoutes.ts","../src/auth/index.ts","../src/utils/Requester/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nconst red = '\\x1b[31m';\nconst yellow = '\\x1b[33m';\nconst reset = '\\x1b[0m';\n\nconst baseLogger = (config: void | ServerConfig, ...params: unknown[]) => ({\n info(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.info(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n debug(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.debug(\n `[niledb][DEBUG]${params.join('')} ${message}`,\n meta ? `\\n${JSON.stringify(meta, null, 2)}` : ''\n );\n }\n },\n warn(message: string | unknown, meta?: Record<string, unknown>) {\n if (config?.debug) {\n console.warn(\n `${yellow}[niledb][WARN]${reset}${params.join('')} ${message}`,\n JSON.stringify(meta, null, 2)\n );\n }\n },\n error(message: string | unknown, meta?: Record<string, unknown>) {\n console.error(\n `${red}[niledb][ERROR]${reset}${params.join('')} ${message}`,\n meta\n );\n },\n});\n\nexport default function Logger(\n config?: Config | ServerConfig,\n ...params: unknown[]\n) {\n const base = baseLogger(config, params);\n const info = config?.logger?.info ?? base.info;\n const debug = config?.logger?.debug ?? base.debug;\n const warn = config?.logger?.warn ?? base.warn;\n const error = config?.logger?.error ?? base.error;\n return { info, warn, error, debug };\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 getDatabaseId = (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}[NILEDB_ID] ${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 logger && 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\n/**\n * @param cfg various overrides\n * @returns the url for REST to use\n */\nexport const getBasePath = (cfg: EnvConfig): undefined | string => {\n const { config, logger } = cfg;\n const { warn, info } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n if (basePath) {\n logger && info(`${logger}[config] ${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.href;\n }\n\n warn('not set. Must run auto-configuration');\n return undefined;\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (config?.configureUrl) {\n logger && info(`${logger}[config] ${config.configureUrl}`);\n return config.configureUrl;\n }\n\n if (process.env.NILEDB_CONFIGURE) {\n logger &&\n info(`${logger}[NILEDB_CONFIGURE] ${process.env.NILEDB_CONFIGURE}`);\n // backwards compatible, but not really\n if (!process.env.NILEDB_CONFIGURE.startsWith('http')) {\n return `https://${process.env.NILEDB_CONFIGURE}`;\n }\n return process.env.NILEDB_CONFIGURE;\n }\n\n logger && info(`${logger}[default] https://global.thenile.dev`);\n return 'https://global.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}[NILEDB_PORT] ${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 {\n Database,\n LoggerType,\n NilePoolConfig,\n ServerConfig,\n} from '../../types';\nimport Logger from '../Logger';\n\nimport {\n EnvConfig,\n getBasePath,\n getControlPlane,\n getDatabaseName,\n getDatabaseId,\n getDbHost,\n getDbPort,\n getInfoBearer,\n getPassword,\n getTenantId,\n getToken,\n getUsername,\n} from './envVars';\n\nexport type ConfigRoutes = {\n SIGNIN?: string;\n SESSION?: string;\n PROVIDERS?: string;\n CSRF?: string;\n CALLBACK?: string;\n SIGNOUT?: string;\n ME?: string;\n ERROR?: string;\n TENANTS?: string;\n TENANT_USERS?: string;\n USERS?: string;\n};\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string | undefined;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath?: string | undefined;\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 routePrefix?: string;\n routes?: ConfigRoutes;\n logger?: LoggerType;\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 this.user = getUsername(envVarConfig) as string;\n this.logger = config?.logger;\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 = getDatabaseId(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, debug } = 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 let basePath = getBasePath(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId && basePath) {\n info('Already configured, aborting fetch');\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]', { db: this.db, api: this.api });\n return this;\n }\n\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(`configuring from ${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 debug('Unable to auto-configure');\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 occurred');\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 basePath = basePath || apiHost;\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n configuredHost = dburl.host;\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]', { db: this.db, api: this.api });\n return this;\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 private events: { [key: string]: EventFn[] } = {};\n\n // Publish event and notify all subscribers\n publish(eventName: string, value: BusValues) {\n const callbackList = this.events[eventName];\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n this.events[eventName].push(callback);\n }\n\n // Unsubscribe from an event\n unsubscribe(eventName: string, callback: EventFn) {\n const callbackList = this.events[eventName];\n\n if (!callbackList) {\n return; // Early exit if no event exists\n }\n\n const index = callbackList.indexOf(callback);\n if (index !== -1) {\n callbackList.splice(index, 1); // Remove the callback\n }\n\n // If there are no more listeners, clean up the event\n if (callbackList.length === 0) {\n delete this.events[eventName];\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 evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\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('query', ...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, debug } = 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 debug(JSON.stringify(this.config.db));\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 debug('pool connected');\n this.startTimeout();\n const afterCreate: AfterCreate = makeAfterCreate(\n config,\n `${this.id}-${this.timer}`\n );\n afterCreate(client, (err) => {\n const { error } = Logger(config, '[after create callback]');\n if (err) {\n clearTimeout(this.timer);\n error('after create failed', {\n message: err.message,\n stack: err.stack,\n });\n evictPool(this.id);\n }\n });\n });\n this.pool.on('error', (err) => {\n clearTimeout(this.timer);\n info(`pool ${this.id} failed`, {\n message: err.message,\n stack: err.stack,\n });\n evictPool(this.id);\n });\n }\n\n startTimeout() {\n const { debug } = Logger(this.config, '[NileInstance]');\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n debug(\n `Pool reached idleTimeoutMillis. ${this.id} evicted after ${\n Number(this.config.db.idleTimeoutMillis) ?? 30000\n }ms`\n );\n this.pool.end(() => {\n clearTimeout(this.timer);\n evictPool(this.id);\n });\n }, Number(this.config.db.idleTimeoutMillis) ?? 30000);\n }\n shutdown() {\n const { debug } = Logger(this.config, '[NileInstance]');\n debug(`attempting to shut down ${this.id}`);\n clearTimeout(this.timer);\n this.pool.end(() => {\n debug(`${this.id} has been shut down`);\n });\n }\n}\n\nexport default NileDatabase;\n\nfunction makeAfterCreate(config: Config, id: string): AfterCreate {\n const { error, warn, debug } = Logger(config, '[afterCreate]');\n return (conn, done) => {\n conn.on('error', function errorHandler(e: Error) {\n error(`Connection ${id} was terminated by server`, {\n message: e.message,\n stack: e.stack,\n });\n done(e, 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 (query.length === 1) {\n debug(`connection context set: tenantId=${config.tenantId}`);\n }\n if (query.length === 2) {\n debug(\n `connection context set: tenantId=${config.tenantId} userId=${config.userId}`\n );\n }\n if (err) {\n error('query connection failed', {\n cause: err.cause,\n stack: err.stack,\n message: err.message,\n name: err.name,\n id,\n });\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 cleared: boolean;\n private poolWatcherFn: (id: undefined | null | string) => void;\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 this.cleared = false;\n this.connections = new Map();\n this.poolWatcherFn = this.poolWatcher(config);\n watchEvictPool(this.poolWatcherFn);\n }\n poolWatcher = (config: ServerConfig) => (id: undefined | null | string) => {\n const { info, warn } = Logger(config, '[DBManager]');\n if (id && this.connections.has(id)) {\n info(`Removing ${id} from db connection pool.`);\n const connection = this.connections.get(id);\n connection?.shutdown();\n this.connections.delete(id);\n } else {\n warn(`missed eviction of ${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\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 if (this.cleared) {\n this.cleared = false;\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 this.cleared = true;\n this.connections.clear();\n };\n}\n","import { Config } from '../../../utils/Config';\n\nconst NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(\n config: Config,\n path: string,\n qp?: Record<string, string>\n) {\n const url = config.api.basePath || NILEDB_API_URL;\n if (!url) {\n throw new Error(\n 'An API url is required. Set it via NILEDB_API_URL. Was auto configuration run?'\n );\n }\n const params = new URLSearchParams(qp);\n return `${[url, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { Config } from '../../../utils/Config';\n\nimport { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = (config: Config) => ({\n ME: makeRestUrl(config, '/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl(config, '/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(config, `/users/${userId}`),\n TENANTS: makeRestUrl(config, '/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(config, `/tenants/${tenantId}`),\n SIGNUP: makeRestUrl(config, '/signup'),\n TENANT_USERS: (tenantId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) =>\n makeRestUrl(config, `/users/${userId}/tenants`),\n});\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config: Config\n) {\n const { info, error } = Logger(config, '[REQUEST]');\n const { request, ...init } = _init;\n const requestUrl = new URL(request.url);\n const updatedHeaders = new Headers(request.headers);\n\n updatedHeaders.set('host', requestUrl.host);\n updatedHeaders.set('niledb-origin', requestUrl.origin);\n const params = { ...init, headers: updatedHeaders };\n if (params.method === 'POST' || params.method === 'PUT') {\n params.body = init.body ?? request.body;\n // @ts-expect-error - its there\n params.duplex = 'half';\n }\n\n const res = await fetch(url, { ...params }).catch((e) => {\n error('An error has occurred in the fetch', {\n message: e.message,\n stack: e.stack,\n });\n return new Response(\n 'An unexpected (most likely configuration) problem has occurred',\n { status: 500 }\n );\n });\n const loggingRes = typeof res?.clone === 'function' ? res?.clone() : null;\n info(`[${params.method ?? 'GET'}] ${url}`, {\n status: res?.status,\n statusText: res?.statusText,\n text: await loggingRes?.text(),\n });\n return res;\n}\n","import { Routes } from '../../types';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\nimport request from '../../utils/request';\n\nconst key = 'ME';\n\n/**\n * @swagger\n * /api/me:\n * get:\n * summary: Identify the principal\n * description: Returns information about the principal associated with the session\n * provided\n * operationId: me\n * responses:\n * \"200\":\n * description: Identified user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nasync function GET(\n url: string,\n init: RequestInit & { request: Request },\n config: Config\n) {\n const res = await request(url, init, config);\n return res;\n}\n\nexport default async function route(request: Request, config: Config) {\n const url = apiRoutes(config)[key];\n\n switch (request.method) {\n case 'GET':\n return await GET(url, { request }, config);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nimport request from './request';\n\nexport type ActiveSession = {\n id: string;\n email: string;\n expires: Date;\n user?: {\n id: string;\n name: string;\n image: string;\n email: string;\n emailVerified: void | Date;\n };\n};\nexport default async function auth(\n req: Request,\n config: Config\n): Promise<void | ActiveSession> {\n const { info, error } = Logger(config, '[nileauth]');\n info('checking auth');\n\n const sessionUrl = `${config.api.basePath}/auth/session`;\n info(`using session${sessionUrl}`);\n // handle the pass through with posts\n req.headers.delete('content-length');\n\n const res = await request(sessionUrl, { request: req }, config);\n if (!res) {\n info('no session found');\n return undefined;\n }\n info('session active');\n try {\n return await new Response(res.body).json();\n } catch (e) {\n error(e);\n return undefined;\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","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 = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\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, X_NILE_TENANT);\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(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\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]', { message: e.message, stack: e.stack });\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n if (typeof response.clone === 'function') {\n try {\n info(`[fetch][response] ${await response.clone().json()}`);\n } catch (e) {\n info(`[fetch][response] ${await response.clone().text()}`, { e });\n }\n }\n return response;\n }\n if (response?.status === 404) {\n return new ResponseError('Not found', { status: 404 });\n }\n\n if (response?.status === 401) {\n return new ResponseError('Unauthorized', { status: 401 });\n }\n if (response?.status === 405) {\n return new ResponseError('Method not allowed', { status: 405 });\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}]`, {\n message: msg,\n });\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(`[fetch][response] status: ${errorHandler?.status}] ${message}`);\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n error(`[fetch][response] status: ${errorHandler?.status}] ${message}`);\n return new ResponseError(message, { status: 400 });\n }\n error(`[fetch][response] status: ${errorHandler?.status}] UNHANDLED ERROR`, {\n res,\n });\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport { Config } from '../../../utils/Config';\n/**\n * @swagger\n * /api/users:\n * post:\n * tags:\n * - users\n * summary: Creates a user\n * description: Creates a user in the database\n * operationId: createUser\n * parameters:\n * - name: tenantId\n * description: A tenant id to add the user to when they are created\n * in: query\n * schema:\n * type: string\n * - name: newTenantName\n * description: A tenant name to create, then the user to when they are created\n * in: query\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * The `newTenant` is optional; if provided, it is used as the name of a new tenant record associated with the newly created user.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * Create User Request with Tenant:\n * summary: Creates a user and a new tenant for that user\n * description: Create User Request with Tenant\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * newTenant: My Sandbox\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: \"#/components/schemas/User\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function POST(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n const url = apiRoutes(config).USERS(tenant ? tenant : undefined);\n\n return await request(url, init, config);\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport { Config } from '../../../utils/Config';\n\n/**\n * @swagger\n * /api/users:\n * get:\n * tags:\n * - users\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided. You can also pass the a `niledb-tenant-id` in the header or in a cookie.\n * operationId: listUsers\n * parameters:\n * - name: tenantId\n * in: query\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/TenantUser'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n config: Config,\n init: RequestInit & { request: Request },\n log: (message: string | unknown, meta?: Record<string, unknown>) => void\n) {\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n if (!tenant) {\n log('[GET] No tenant id provided.');\n return new Response(null, { status: 404 });\n }\n const url = apiRoutes(config).TENANT_USERS(tenant);\n init.method = 'GET';\n return await request(url, init, config);\n}\n","import { apiRoutes } from '../../../utils/routes/apiRoutes';\nimport fetch from '../../../utils/request';\nimport { ActiveSession } from '../../../utils/auth';\nimport { Config } from '../../../../utils/Config';\n\n/**\n * @swagger\n * /api/users/{userid}:\n * put:\n * tags:\n * - users\n * summary: update a user\n * description: updates a user within the tenant\n * operationId: updateUser\n * parameters:\n * - name: userid\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * Update a user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/UpdateUserRequest'\n * responses:\n * \"200\":\n * description: An updated user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function PUT(\n config: Config,\n session: void | ActiveSession,\n init: RequestInit & { request: Request }\n) {\n if (!session) {\n return new Response(null, { status: 401 });\n }\n init.body = init.request.body;\n init.method = 'PUT';\n\n // update the user\n\n const [userId] = new URL(init.request.url).pathname.split('/').reverse();\n\n const url = apiRoutes(config).USER(userId);\n\n return await fetch(url, init, config);\n}\n","import { Routes } from '../../types';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport auth from '../../utils/auth';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nimport { POST } from './POST';\nimport { GET } from './GET';\nimport { PUT } from './[userId]/PUT';\n\nconst key = 'USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n `[ROUTES][${key}]`\n );\n const session = await auth(request, config);\n\n switch (request.method) {\n case 'GET':\n return await GET(config, { request }, info);\n case 'POST':\n return await POST(config, { request });\n case 'PUT':\n return await PUT(config, session, { request });\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport { Config } from '../../../../../utils/Config';\nimport request from '../../../../utils/request';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * get:\n * tags:\n * - users\n * summary: List tenant users\n * description: Lists users that are associated with the specified tenant.\n * operationId: listTenantUsers\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: Users found\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/User'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function GET(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n\n const url = `${apiRoutes(config).TENANT_USERS(tenantId)}`;\n return await request(url, init, config);\n}\n","import { ActiveSession } from '../../../../utils/auth';\nimport fetch from '../../../../utils/request';\nimport { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport { Config } from '../../../../../utils/Config';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * post:\n * tags:\n * - users\n * summary: Create a user in a tenant\n * description: Creates a new user and associates that user with the specified\n * tenant.\n * operationId: createTenantUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n */\nexport async function POST(\n config: Config,\n session: ActiveSession,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n init.body = JSON.stringify({ email: session.email });\n init.method = 'PUT';\n const url = apiRoutes(config).TENANT_USERS(tenantId);\n\n return await fetch(url, init, config);\n}\n","import { apiRoutes } from '../../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../../utils/request';\nimport { Config } from '../../../../../../utils/Config';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users/{email}:\n * delete:\n * tags:\n * - tenants\n * summary: removes a user from a tenant\n * description: removes an associated user from a specified\n * tenant.\n * operationId: unlinkUser \n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * - name: email \n * in: path\n * required: true\n * schema:\n * type: string\n \n * responses:\n * \"204\":\n * description: User removed\n */\n\nexport async function DELETE(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [userId, _, tenantId] = yurl.pathname.split('/').reverse();\n\n init.method = 'DELETE';\n init.body = JSON.stringify({ email: userId });\n const url = `${apiRoutes(config).TENANT_USER(tenantId, userId)}`;\n\n return await fetch(url, init, config);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../utils/request';\nimport { Config } from '../../../../../utils/Config';\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * put:\n * tags:\n * - tenants\n * summary: associates an existing user with the tenant\n * operationId: linkUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email of the user you want to add to a tenant.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/AssociateUserRequest'\n * responses:\n * \"201\":\n * description: add user to tenant\n */\n\nexport async function PUT(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n\n init.method = 'PUT';\n const url = `${apiRoutes(config).TENANT_USERS(tenantId)}`;\n\n return await fetch(url, init, config);\n}\n","import { Config } from '../../../../../utils/Config';\nimport urlMatches from '../../../../utils/routes/urlMatches';\nimport { Routes } from '../../../../types';\nimport auth from '../../../../utils/auth';\nimport Logger from '../../../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { POST } from './POST';\nimport { DELETE } from './[userId]/DELETE';\nimport { PUT } from './PUT';\n\nconst key = 'TENANT_USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n `[ROUTES][${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n const yurl = new URL(request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n\n if (!tenantId) {\n info('No tenant id found in path');\n return new Response(null, { status: 404 });\n }\n\n switch (request.method) {\n case 'GET':\n return await GET(config, { request });\n case 'POST':\n return await POST(config, session, { request });\n case 'PUT':\n return await PUT(config, { request });\n case 'DELETE':\n return await DELETE(config, { request });\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n const url = new URL(request.url);\n const [userId, possibleTenantId, tenantId] = url.pathname\n .split('/')\n .reverse();\n let route = configRoutes[key]\n .replace('{tenantId}', tenantId)\n .replace('{userId}', userId);\n if (userId === 'users') {\n route = configRoutes[key].replace('{tenantId}', possibleTenantId);\n }\n return urlMatches(request.url, route);\n}\n","import { Config } from '../../../utils/Config';\nimport { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * get:\n * tags:\n * - tenants\n * summary: list tenants by user\n * description: Creates a user in the database\n * operationId: listTenants\n * responses:\n * \"200\":\n * description: a list of tenants\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: \"#/components/schemas/Tenant\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n config: Config,\n session: ActiveSession,\n init: RequestInit & { request: Request }\n) {\n let url = `${apiRoutes(config).USER_TENANTS(session.id)}`;\n if (typeof session === 'object' && 'user' in session && session.user) {\n url = `${apiRoutes(config).USER_TENANTS(session.user.id)}`;\n }\n\n const res = await request(url, init, config);\n return res;\n}\n","import { Config } from '../../../../utils/Config';\nimport request from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * get:\n * tags:\n * - tenants\n * summary: Obtains a specific tenant.\n * operationId: getTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: the desired tenant\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function GET(\n config: Config,\n init: RequestInit & { request: Request },\n log: (message: string | unknown, meta?: Record<string, unknown>) => void\n) {\n const yurl = new URL(init.request.url);\n const [tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n log('[GET] No tenant id provided.');\n return new Response(null, { status: 404 });\n }\n\n init.method = 'GET';\n const url = `${apiRoutes(config).TENANT(tenantId)}`;\n\n return await request(url, init, config);\n}\n","import { Config } from '../../../../utils/Config';\nimport fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * delete:\n * tags:\n * - tenants\n * summary: Deletes a tenant.\n * operationId: deleteTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"204\":\n * description: Tenant deleted\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function DELETE(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n const [tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'DELETE';\n const url = `${apiRoutes(config).TENANT(tenantId)}`;\n\n return await fetch(url, init, config);\n}\n","import { Config } from '../../../../utils/Config';\nimport fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * put:\n * tags:\n * - tenants\n * summary: Obtains a specific tenant.\n * operationId: updateTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"201\":\n * description: update an existing tenant\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function PUT(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n const yurl = new URL(init.request.url);\n const [tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n init.body = init.request.body;\n init.method = 'PUT';\n const url = `${apiRoutes(config).TENANT(tenantId)}`;\n\n return await fetch(url, init, config);\n}\n","import { Config } from '../../../utils/Config';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * post:\n * tags:\n * - tenants\n * summary: Create a tenant\n * description: Creates a new tenant in a database.\n * operationId: createTenant\n * requestBody:\n * description: A wrapper for the tenant name.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateTenantRequest'\n * examples:\n * Create Tenant Request:\n * summary: Creates a named tenant\n * description: Create Tenant Request\n * value:\n * name: My Sandbox\n * responses:\n * \"201\":\n * description: Tenant created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Database not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function POST(\n config: Config,\n init: RequestInit & { request: Request }\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const url = `${apiRoutes(config).TENANTS}`;\n\n return await request(url, init, config);\n}\n","import { Config } from '../../../utils/Config';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport auth from '../../utils/auth';\nimport Logger from '../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { GET as TENANT_GET } from './[tenantId]/GET';\nimport { DELETE } from './[tenantId]/DELETE';\nimport { PUT } from './[tenantId]/PUT';\nimport { POST } from './POST';\n\nfunction isUUID(value: string | null | undefined) {\n if (!value) {\n return false;\n }\n // is any UUID\n const regex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5|7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n\n return regex.test(value);\n}\n\nconst key = 'TENANTS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n `[ROUTES][${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n const [possibleTenantId] = request.url.split('/').reverse();\n\n switch (request.method) {\n case 'GET':\n if (isUUID(possibleTenantId)) {\n return await TENANT_GET(config, { request }, info);\n }\n return await GET(config, session, { request });\n case 'POST':\n return await POST(config, { request });\n case 'DELETE':\n return await DELETE(config, { request });\n case 'PUT':\n return await PUT(config, { request });\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Config } from '../../../utils/Config';\n\nimport { makeRestUrl } from './makeRestUrl';\n\nexport const proxyRoutes = (config: Config) => ({\n SIGNIN: makeRestUrl(config, '/auth/signin'),\n PROVIDERS: makeRestUrl(config, '/auth/providers'),\n SESSION: makeRestUrl(config, '/auth/session'),\n CSRF: makeRestUrl(config, '/auth/csrf'),\n CALLBACK: makeRestUrl(config, '/auth/callback'),\n SIGNOUT: makeRestUrl(config, '/auth/signout'),\n ERROR: makeRestUrl(config, '/auth/error'),\n});\n\ntype ProxyKeys = keyof typeof proxyRoutes;\n\nexport type ProxyPaths = (typeof proxyRoutes)[ProxyKeys];\n","/**\n * @swagger\n * /api/auth/signin:\n * get:\n * tags:\n * - authentication\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided\n * operationId: signin\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNIN';\n\nexport default async function route(req: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const init: RequestInit = {\n method: req.method,\n headers: req.headers,\n };\n if (req.method === 'POST') {\n if (typeof req.clone === 'function') {\n init.body = req.clone().body;\n }\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n\n url = `${proxyRoutes(config)[key]}/${provider}`;\n }\n\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n\n url = `${url}${params.toString() !== '' ? `?${params.toString()}` : ''}`;\n\n const res = await request(url, { ...init, request: req }, config);\n\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).SESSION,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.SESSION);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).PROVIDERS,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.PROVIDERS);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).CSRF,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CSRF);\n}\n","import { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nconst key = 'CALLBACK';\n\nexport default async function route(request: Request, config: Config) {\n const { error } = Logger(\n { ...config, debug: config.debug } as Config,\n `[ROUTES][${key}]`\n );\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(request.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes(config).CALLBACK}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await fetch(\n url,\n {\n request,\n method: request.method,\n },\n config\n ).catch((e) => {\n error('an error as occurred', e);\n });\n\n const location = res?.headers.get('location');\n if (location) {\n return new Response(res?.body, {\n status: 302,\n headers: res?.headers,\n });\n }\n return new Response(res?.body, {\n status: res?.status,\n headers: res?.headers,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CALLBACK);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nconst key = 'SIGNOUT';\nexport default async function route(request: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const init: RequestInit = {\n method: request.method,\n };\n if (request.method === 'POST') {\n init.body = request.body;\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n url = `${proxyRoutes(config)[key]}/${provider}`;\n }\n\n const res = await fetch(url, { ...init, request }, config);\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nconst key = 'ERROR';\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config)[key],\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import Logger from '../../utils/Logger';\nimport me, { matches as matchesMe } from '../routes/me';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport { Routes } from '../types';\nimport * as authRoutes from '../routes/auth';\nimport { Config } from '../../utils/Config';\n\nexport default function GETTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[GET MATCHER]');\n return async function GET(req: Request) {\n if (matchesMe(configRoutes, req)) {\n info('matches me');\n return me(req, config);\n }\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n info('matches error');\n return authRoutes.handleError(req, config);\n }\n warn('No GET routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\nimport * as authRoutes from '../routes/auth';\n\nexport default function POSTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[POST MATCHER]');\n return async function POST(req: Request) {\n // order matters for tenantUsers\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n warn('No POST routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantsUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function DELETER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[DELETE MATCHER]');\n return async function DELETE(req: Request) {\n if (matchesTenantsUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No DELETE routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function PUTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[PUT MATCHER]');\n return async function PUT(req: Request) {\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No PUT routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import { Config } from '../../utils/Config';\nimport { Routes } from '../types';\n\nimport getter from './GET';\nimport poster from './POST';\nimport deleter from './DELETE';\nimport puter from './PUT';\n\nexport default function Handlers(configRoutes: Routes, config: Config) {\n const GET = getter(configRoutes, config);\n const POST = poster(configRoutes, config);\n const DELETE = deleter(configRoutes, config);\n const PUT = puter(configRoutes, config);\n return {\n GET,\n POST,\n DELETE,\n PUT,\n };\n}\n","import { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { appRoutes } from '../api/utils/routes/defaultRoutes';\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n// url host does not matter, we only match on the 1st leg by path\nconst ORIGIN = 'https://us-west-2.api.dev.thenile.dev';\n/**\n * a helper function to log in server side.\n */\nexport default function serverAuth(\n config: Config,\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n }\n) {\n const { info, error } = Logger(config, '[server side login]');\n const routes = appRoutes(config.routePrefix);\n return async function login({\n email,\n password,\n }: {\n email: string;\n password: string;\n }) {\n if (!email || !password) {\n throw new Error('Server side login requires a user email and password.');\n }\n\n const sessionUrl = new URL(`${ORIGIN}${routes.PROVIDERS}`);\n const baseHeaders = {\n host: sessionUrl.host,\n 'niledb-origin': ORIGIN,\n };\n info(`Obtaining providers for ${email}`);\n const sessionReq = new Request(sessionUrl, {\n method: 'GET',\n ...baseHeaders,\n });\n const sessionRes = await handlers.POST(sessionReq);\n\n if (sessionRes?.status === 404) {\n throw new Error('Unable to login, cannot find region api.');\n }\n\n let providers;\n try {\n providers = await sessionRes?.json();\n } catch (e) {\n info(sessionUrl, { sessionRes });\n error(e);\n }\n\n info('Obtaining csrf');\n const csrf = new URL(`${ORIGIN}${routes.CSRF}`);\n const csrfReq = new Request(csrf, {\n method: 'GET',\n headers: new Headers({\n ...baseHeaders,\n }),\n });\n const csrfRes = await handlers.POST(csrfReq);\n let csrfToken;\n try {\n const json = (await csrfRes?.json()) ?? {};\n csrfToken = json?.csrfToken;\n } catch (e) {\n info(sessionUrl, { csrfRes });\n error(e, { csrfRes });\n }\n\n const { credentials } = providers ?? {};\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n\n if (!credentials) {\n throw new Error(\n 'Unable to obtain credential provider. Aborting server side login.'\n );\n }\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('Unable to authenticate REST');\n }\n info(`Attempting sign in with email ${email}`);\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n 'content-type': 'application/json',\n cookie: csrfCookie,\n ...baseHeaders,\n }),\n body: JSON.stringify({\n email,\n password,\n csrfToken,\n callbackUrl: credentials.callbackUrl,\n }),\n });\n const loginRes = await handlers.POST(postReq);\n const authCookie = loginRes?.headers.get('set-cookie');\n if (!authCookie) {\n throw new Error('authentication failed');\n }\n const [, token] =\n /((__Secure-)?nile\\.session-token=.+?);/.exec(authCookie) ?? [];\n if (!token) {\n throw new Error('Server login failed');\n }\n info('Server login successful', { authCookie, csrfCookie });\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n ...baseHeaders,\n });\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 = 'DELETE' | '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 options 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 async post<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('POST', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async get<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('GET', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async put<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('PUT', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async delete<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('DELETE', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (typeof req === 'string') {\n _req = new Request(`${this.api.basePath}${this.tenantsUrl}`, {\n body: JSON.stringify({ name: req }),\n method: 'POST',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.post(_req, this.tenantsUrl, _init);\n };\n\n getTenant = async (\n req: NileRequest<{ id: string }> | Headers | string | void,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n if (typeof req === 'string') {\n this.tenantId = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant>(req, this.tenantUrl, _init);\n };\n\n get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Tenant[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant[]>(req, this.tenantListUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } 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 headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(req, this.usersUrl, _init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport serverAuth from './auth';\nimport Tenants from './tenants';\nimport Users from './users';\nimport { Config } from './utils/Config';\n\nexport class Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\n }\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager from './db';\nimport { Api } from './Api';\n\nexport class Server {\n config: Config;\n api: Api;\n private manager!: DbManager;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config as ServerConfig, '[initial config]');\n this.api = new Api(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.api = new Api(this.config);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.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.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.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.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): Pool {\n return this.manager.getConnection(this.config);\n }\n\n /**\n * A convenience function that applies a config and ensures whatever was passed is set properly\n */\n\n getInstance(config: ServerConfig): Server {\n const _config = { ...this.config, ...config };\n\n // be sure the config is up to date\n const updatedConfig = new Config(_config);\n this.setConfig(updatedConfig);\n // propagate special config items\n this.tenantId = updatedConfig.tenantId;\n this.userId = updatedConfig.userId;\n this.token = updatedConfig.api.token;\n this.databaseId = updatedConfig.databaseId;\n\n return this;\n }\n}\n\nlet server: Server;\nexport async function create(config?: ServerConfig): Promise<Server> {\n if (!server) {\n server = new Server(config);\n }\n return await server.init();\n}\n\nexport default create;\n"],"names":["red","yellow","reset","baseLogger","config","_len","arguments","length","params","Array","_key","info","message","meta","debug","console","join","JSON","stringify","warn","error","Logger","_config$logger$info","_config$logger","_config$logger$debug","_config$logger2","_config$logger$warn","_config$logger3","_config$logger$error","_config$logger4","_len2","_key2","base","logger","getDatabaseId","cfg","_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","NILEDB_API_URL","apiUrl","href","getControlPlane","_Logger8","configureUrl","NILEDB_CONFIGURE","startsWith","getDbHost","_Logger9","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger10","port","_config$db2","Number","NILEDB_PORT","ApiConfig","_ref","cookieKey","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey3","routePrefix","routes","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$api$cookieKey2","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","_config$api$cookieKey","cp","url","res","database","possibleError","json","_database","apiHost","dbHost","name","id","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","_extends","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","Error","stop","_x","apply","Boolean","userId","_ref4","_excluded2","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","unsubscribe","index","indexOf","splice","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","watchToken","Token","watchEvictPool","EvictPool","evictPool","val","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","args","concat","called","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","clearTimeout","stack","_this2","_Number2","setTimeout","_Number","end","shutdown","_this3","conn","errorHandler","e","cause","DBManager","connections","cleared","poolWatcherFn","poolWatcher","has","connection","getConnection","makeId","existing","size","newOne","clear","Map","makeRestUrl","path","qp","URLSearchParams","toString","apiRoutes","ME","USERS","USER","TENANTS","TENANT","SIGNUP","TENANT_USERS","TENANT_USER","USER_TENANTS","urlMatches","requestUrl","route","request","_x2","_x3","_request","_init","_params$method","init","updatedHeaders","_init$body","loggingRes","Headers","origin","method","body","duplex","Response","t1","t2","t3","statusText","t4","t5","GET","_GET","_x4","_x5","_route","_callee2","_callee2$","_context2","matches","configRoutes","auth","_auth","req","sessionUrl","ResponseError","response","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","_headers$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_fetch2","opts","_response$status","basicHeaders","authHeader","useableUrl","msg","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t6","t7","t8","errors","POST","_POST","yurl","tenant","PUT","_PUT","session","_URL$pathname$split$r","reverse","_yurl$pathname$split$","email","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","isUUID","regex","test","_request$url$split$re","TENANT_GET","proxyRoutes","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","provider","passThroughUrl","search","location","GETTER","matchesMe","me","matchesTenantUsers","tenantUsers","matchesUsers","users","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","ORIGIN","serverAuth","handlers","_login","_providers","_exec","baseHeaders","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","_yield$csrfRes$json","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_x6","_x7","_x8","post","_post","_callee3","_callee3$","_context3","_x9","_x10","_x11","_get","_callee4","_callee4$","_context4","_x12","_x13","_x14","put","_put","_callee5","_callee5$","_context5","_x15","_x16","_x17","_delete2","_callee6","_callee6$","_context6","delete","_x18","_x19","_x20","Tenants","createTenant","_req","_requester","tenantsUrl","handleHeaders","getTenant","tenantUrl","listTenants","tenantListUrl","_init2","_this$tenantId","_this$userId","Users","createUser","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","getUserId","_ref5","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","_this$tenantId2","Api","payload","Server","manager","DbManager","setConfig","updatedConfig","getInstance","_config","_this$config","server","create","_create"],"mappings":"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"}