@niledatabase/server 3.0.0-alpha.4 → 3.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Api.d.ts +25 -0
- package/dist/Server.d.ts +2 -25
- package/dist/api/routes/auth/callback.d.ts +2 -1
- package/dist/api/routes/auth/csrf.d.ts +2 -1
- package/dist/api/routes/auth/error.d.ts +2 -1
- package/dist/api/routes/auth/index.d.ts +2 -0
- package/dist/api/routes/auth/password-reset.d.ts +4 -0
- package/dist/api/routes/auth/providers.d.ts +2 -1
- package/dist/api/routes/auth/signin.d.ts +2 -1
- package/dist/api/routes/auth/signout.d.ts +2 -1
- package/dist/api/routes/auth/verify-request.d.ts +4 -0
- package/dist/api/routes/signup/POST.d.ts +66 -0
- package/dist/api/routes/signup/index.d.ts +4 -0
- package/dist/api/routes/tenants/GET.d.ts +3 -2
- package/dist/api/routes/tenants/POST.d.ts +3 -3
- package/dist/api/routes/tenants/[tenantId]/DELETE.d.ts +3 -3
- package/dist/api/routes/tenants/[tenantId]/GET.d.ts +37 -0
- package/dist/api/routes/tenants/[tenantId]/PUT.d.ts +38 -0
- package/dist/api/routes/tenants/[tenantId]/users/GET.d.ts +3 -3
- package/dist/api/routes/tenants/[tenantId]/users/POST.d.ts +3 -2
- package/dist/api/routes/tenants/[tenantId]/users/PUT.d.ts +3 -3
- package/dist/api/routes/tenants/[tenantId]/users/[userId]/DELETE.d.ts +3 -3
- package/dist/api/routes/users/GET.d.ts +3 -2
- package/dist/api/routes/users/POST.d.ts +3 -3
- package/dist/api/routes/users/[userId]/PUT.d.ts +3 -2
- package/dist/api/types.d.ts +2 -0
- package/dist/api/utils/auth.d.ts +8 -0
- package/dist/api/utils/request.d.ts +1 -1
- package/dist/api/utils/routes/apiRoutes.d.ts +6 -2
- package/dist/api/utils/routes/makeRestUrl.d.ts +2 -1
- package/dist/api/utils/routes/proxyRoutes.d.ts +4 -1
- package/dist/auth/index.d.ts +10 -1
- package/dist/db/DBManager.d.ts +1 -0
- package/dist/db/NileInstance.d.ts +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/server.cjs.development.js +2927 -2063
- package/dist/server.cjs.development.js.map +1 -1
- package/dist/server.cjs.production.min.js +1 -1
- package/dist/server.cjs.production.min.js.map +1 -1
- package/dist/server.esm.js +2928 -2065
- package/dist/server.esm.js.map +1 -1
- package/dist/tenants/index.d.ts +11 -8
- package/dist/tenants/types.d.ts +4 -0
- package/dist/types.d.ts +9 -0
- package/dist/users/index.d.ts +14 -39
- package/dist/users/types.d.ts +36 -0
- package/dist/utils/Config/envVars.d.ts +5 -5
- package/dist/utils/Config/index.d.ts +9 -8
- package/dist/utils/Event/index.d.ts +0 -1
- package/dist/utils/Logger.d.ts +5 -4
- package/dist/utils/Requester/index.d.ts +5 -5
- package/dist/utils/Requester/types.d.ts +1 -1
- package/dist/utils/fetch.d.ts +2 -0
- package/package.json +2 -2
- 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 get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (req: NileRequest<void>, init?: RequestInit) => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get(req, this.tenantListUrl, _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/{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 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 init.body = JSON.stringify({ email: userId });\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 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 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","listTenants","tenantListUrl","_this$userId","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/users/types.ts","../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/routes/auth/verify-request.ts","../src/api/routes/auth/password-reset.ts","../src/api/handlers/GET.ts","../src/api/routes/signup/POST.ts","../src/api/routes/signup/index.tsx","../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/utils/Requester/index.ts","../src/auth/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["export 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 email: string;\n name: string | null;\n familyName: string | null;\n givenName: string | null;\n picture: string | null;\n created: string;\n updated: string;\n emailVerified: boolean | null;\n tenants: { id: string }[];\n}\n","/* 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 getSecureCookies = (cfg: EnvConfig) => {\n const { config } = cfg;\n if (stringCheck(process.env.NILEDB_SECURECOOKIES)) {\n return Boolean(process.env.NILEDB_SECURECOOKIES);\n }\n return config?.secureCookies;\n};\n\nexport const getDatabaseId = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[databaseId]');\n if (stringCheck(config?.databaseId)) {\n logger && info(`${logger}[config] ${config?.databaseId}`);\n return String(config?.databaseId);\n }\n const dbId = stringCheck(process.env.NILEDB_API_URL);\n if (dbId) {\n try {\n const pgUrl = new URL(dbId);\n return pgUrl.pathname.split('/')[3];\n } catch (e) {\n // ok to fail\n }\n }\n logger && info(`${logger}[NILEDB_ID] ${String(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 const pg = stringCheck(process.env.NILEDB_POSTGRES_URL);\n if (pg) {\n const url = new URL(pg);\n if (url.username) {\n return url.username;\n }\n }\n logger && info(`${logger}[NILEDB_USER] ${String(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 (stringCheck(config?.password)) {\n log && info(`${logger}[config] ${config?.password}`);\n return String(config?.password);\n }\n const pg = stringCheck(process.env.NILEDB_POSTGRES_URL);\n if (pg) {\n const url = new URL(pg);\n if (url.password) {\n return url.password;\n }\n }\n\n logger &&\n info(`${logger}[NILEDB_PASSWORD] ${String(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 (stringCheck(config?.api?.token)) {\n logger && info(`${logger}[config] ${config?.api?.token}`);\n return String(config?.api?.token);\n }\n const token = stringCheck(process.env.NILEDB_TOKEN);\n if (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 (stringCheck(config?.databaseName)) {\n logger && info(`${logger}[config] ${config?.databaseName}`);\n return String(config?.databaseName);\n }\n const name = stringCheck(process.env.NILEDB_NAME);\n if (name) {\n logger && info(`${logger}[NILEDB_NAME] ${process.env.NILEDB_NAME}`);\n return process.env.NILEDB_NAME;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n try {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n return pgUrl.pathname.substring(1);\n } catch (e) {\n // ok to fail\n }\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 (stringCheck(config?.tenantId)) {\n logger && info(`${logger}[config] ${config?.tenantId}`);\n return String(config?.tenantId);\n }\n\n if (stringCheck(process.env.NILEDB_TENANT)) {\n logger && info(`${logger}[NILEDB_TENANT] ${process.env.NILEDB_TENANT}`);\n return String(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, error } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n if (stringCheck(basePath)) {\n logger && info(`${logger}[config] ${basePath}`);\n return basePath;\n }\n\n const envUrl = stringCheck(process.env.NILEDB_API_URL);\n if (envUrl) {\n logger && info(`${logger}[NILEDB_API_URL] ${process.env.NILEDB_API_URL}`);\n try {\n const apiUrl = new URL(envUrl);\n return apiUrl.href;\n } catch (e) {\n if (e instanceof Error) {\n error(e.stack);\n }\n }\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 (stringCheck(config?.configureUrl)) {\n logger && info(`${logger}[config] ${config?.configureUrl}`);\n return String(config?.configureUrl);\n }\n\n const autoConfigUrl = stringCheck(process.env.NILEDB_CONFIGURE);\n if (autoConfigUrl) {\n logger &&\n info(`${logger}[NILEDB_CONFIGURE] ${process.env.NILEDB_CONFIGURE}`);\n // backwards compatible, but not really\n if (!autoConfigUrl.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 (stringCheck(config?.db && config.db.host)) {\n logger && info(`${logger}[config] ${config?.db?.host}`);\n return String(config?.db?.host);\n }\n\n const pg = stringCheck(process.env.NILEDB_POSTGRES_URL);\n if (pg) {\n try {\n const pgUrl = new URL(pg);\n logger && info(`${logger}[NILEDB_POSTGRES_URL] ${pgUrl.hostname}`);\n return pgUrl.hostname;\n } catch (e) {\n // ok to fail\n }\n }\n\n if (stringCheck(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 (stringCheck(process.env.NILEDB_PORT)) {\n logger && info(`${logger}[NILEDB_PORT] ${process.env.NILEDB_PORT}`);\n return Number(process.env.NILEDB_PORT);\n }\n\n const pg = stringCheck(process.env.NILEDB_POSTGRES_URL);\n if (pg) {\n try {\n const pgUrl = new URL(pg);\n if (pgUrl.port) {\n return Number(pgUrl.port);\n }\n } catch (e) {\n // ok to fail\n }\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\nconst stringCheck = (str: string | null | undefined) => {\n if (str && str !== '') {\n return str;\n }\n return;\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 getSecureCookies,\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 secureCookies?: boolean | undefined;\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.secureCookies = getSecureCookies(envVarConfig);\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 } else {\n const msg = [];\n if (!configuredHost) {\n msg.push('Database host');\n }\n if (!this.databaseName) {\n msg.push('Database name');\n }\n if (!this.databaseId) {\n msg.push('Database id');\n }\n if (!basePath) {\n msg.push('API URL');\n }\n info(\n `[autoconfigure] ${msg.join(', ')} ${\n msg.length > 1 ? 'are' : 'is'\n } missing from the config. Autoconfiguration will run.`\n );\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 }).catch(() => {\n error(`Unable to auto-configure. is ${url} available?`);\n });\n if (!res) {\n return this;\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.hostname;\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(`Connection pool config ${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 ${this.id}`);\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 this.pool.on('release', (destroy) => {\n if (destroy) {\n clearTimeout(this.timer);\n evictPool(this.id);\n debug(`destroying pool ${this.id}`);\n }\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 (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 } else {\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 }\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\nfunction filterNullUndefined(\n obj?: Record<string, string | null>\n): { [k: string]: string | null } | undefined {\n if (!obj) {\n return undefined;\n }\n return Object.fromEntries(\n Object.entries(obj).filter(\n ([, value]) => value !== null && value !== undefined\n )\n );\n}\n\nexport function makeRestUrl(\n config: Config,\n path: string,\n qp?: Record<string, string | null>\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(\n filterNullUndefined(qp) as Record<string, string>\n );\n const strParams = params.toString();\n return `${[url, path.substring(1, path.length)].join('/')}${\n strParams ? `?${strParams}` : ''\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: (qp: { tenantId?: null | string; newTenantName?: null | string }) =>\n makeRestUrl(config, '/users', qp),\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 try {\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 } catch (e) {\n if (e instanceof Error) {\n error('An error has occurred in the fetch', {\n message: e.message,\n stack: e.stack,\n });\n }\n return new Response(\n 'An unexpected (most likely configuration) problem has occurred',\n { status: 500 }\n );\n }\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 JWT = {\n email: string;\n sub: string;\n id: string;\n iat: number;\n exp: number;\n jti: string;\n};\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';\nexport const X_NILE_SECURECOOKIES = 'niledb-useSecureCookies';\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 function makeBasicHeaders(config: Config, opts?: RequestInit) {\n const headers = new Headers(opts?.headers);\n headers.set('content-type', 'application/json; charset=utf-8');\n const cookieKey = config.api?.cookieKey;\n\n // this is old, but still maybe something worth keeping.\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n headers.set('Authorization', `Bearer ${token}`);\n } else if (getToken({ config })) {\n headers.set('Authorization', `Bearer ${getToken({ config })}`);\n }\n }\n if (config.secureCookies) {\n headers.set(X_NILE_SECURECOOKIES, 'true');\n }\n return headers;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { debug, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const headers = new Headers(opts?.headers);\n const tenantId = getTenantFromHttp(headers, config);\n const basicHeaders = makeBasicHeaders(config, opts);\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 debug(`[fetch] ${useableUrl}`);\n\n try {\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n error('[fetch][response]', {\n message: e.message,\n stack: e.stack,\n debug: 'Is nile-auth running?',\n });\n return new Error(e);\n });\n\n if (response instanceof Error) {\n return new ResponseError('Failed to connect to database', {\n status: 400,\n });\n }\n if (response && response.status >= 200 && response.status < 300) {\n if (typeof response.clone === 'function') {\n try {\n debug(\n `[fetch][response][${opts?.method ?? 'GET'}] ${\n response.status\n } ${useableUrl}`,\n {\n body: await response.clone().json(),\n }\n );\n } catch (e) {\n debug(\n `[fetch][response][${opts?.method ?? 'GET'}] ${\n response.status\n } ${useableUrl}`,\n {\n body: await response.clone().text(),\n }\n );\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 return e as ResponseError;\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(\n `[fetch][response][status: ${errorHandler?.status}] UNHANDLED ERROR`,\n {\n res,\n }\n );\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n } catch (e) {\n return new ResponseError('an unexpected error has occurred', {\n status: 500,\n });\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 newTenantName = yurl.searchParams.get('newTenantName');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n const url = apiRoutes(config).USERS({ tenantId: tenant, newTenantName });\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 VERIFY_REQUEST: makeRestUrl(config, '/auth/verify-request'),\n PASSWORD_RESET: makeRestUrl(config, '/auth/reset-password'),\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 request 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(req: Request, config: Config) {\n const { error } = Logger(\n { ...config, debug: config.debug } as Config,\n `[ROUTES][${key}]`\n );\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes(config)[key]}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await request(\n url,\n {\n request: req,\n method: req.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 { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\n\nconst key = 'VERIFY_REQUEST';\n\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 { 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 = 'PASSWORD_RESET';\nexport default async function route(req: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const { searchParams } = new URL(req.url);\n\n if (searchParams.size > 0) {\n url = `${url}?${searchParams.toString()}`;\n }\n const res = await request(\n url,\n {\n method: req.method,\n request: req,\n },\n config\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.PASSWORD_RESET);\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.matchesPasswordReset(configRoutes, req)) {\n info('matches password reset');\n return authRoutes.handlePasswordReset(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.matchesVerifyRequest(configRoutes, req)) {\n info('matches verify-request');\n return authRoutes.handleVerifyRequest(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 { Config } from '../../../utils/Config';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/signup:\n * post:\n * tags:\n * - users\n * summary: signs a user up\n * description: signs a user up and logs them in. Expects a email and password combo\n * operationId: signUp\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 and session 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 */\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).SIGNUP}`;\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';\n\nimport { POST } from './POST';\n\nconst key = 'SIGNUP';\n\nexport default async function route(request: Request, config: Config) {\n switch (request.method) {\n case 'POST':\n return await POST(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 Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport signup, { matches as matchesSignup } from '../routes/signup';\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 (matchesSignup(configRoutes, req)) {\n info('matches signup');\n return signup(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 if (authRoutes.matchesPasswordReset(configRoutes, req)) {\n info('matches password reset');\n return authRoutes.handlePasswordReset(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\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 { handlePasswordReset, matchesPasswordReset } from '../routes/auth';\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 if (matchesPasswordReset(configRoutes, req)) {\n info('matches reset password');\n return handlePasswordReset(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 VERIFY_REQUEST: `${prefix}/auth/verify-request`,\n PASSWORD_RESET: `${prefix}/auth/reset-password`,\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 { 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 const cloned = response.clone();\n try {\n return await cloned.json();\n } catch (e) {\n // give back the response\n }\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 const cloned = response.clone();\n try {\n return await cloned.json();\n } catch (e) {\n // give back the response\n }\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 const cloned = response.clone();\n try {\n return await cloned.json();\n } catch (e) {\n // give back the response\n }\n }\n return response;\n }\n\n async delete(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> {\n const response = await this.request('DELETE', url, req, init);\n return response;\n }\n}\n","import { ActiveSession, JWT } from '../api/utils/auth';\nimport { appRoutes } from '../api/utils/routes/defaultRoutes';\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\nimport Requester, { NileRequest } from '../utils/Requester';\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 function serverLogin(\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, debug } = 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 debug('CSRF failed', { headers: csrfRes?.headers });\n throw new Error('Unable to authenticate REST, CSRF missing.');\n }\n info(`Attempting sign in with email ${email} ${signInUrl.href}`);\n const body = JSON.stringify({\n email,\n password,\n csrfToken,\n callbackUrl: credentials.callbackUrl,\n });\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n ...baseHeaders,\n 'content-type': 'application/json',\n cookie: csrfCookie.split(',').join('; '),\n }),\n body,\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 error('Unable to obtain auth token', { authCookie });\n throw new Error('Server login failed');\n }\n info('Server login successful', { authCookie, csrfCookie });\n const headers = new Headers({\n ...baseHeaders,\n cookie: [token, csrfCookie].join('; '),\n });\n return headers;\n };\n}\n\nexport default class Auth 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\n get sessionUrl() {\n return '/auth/session';\n }\n session = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Response | JWT | ActiveSession> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.sessionUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nimport { Tenant } from './types';\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 deleteTenant = async (\n req: NileRequest<void> | Headers | string,\n init?: RequestInit\n ): Promise<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.delete(req, this.tenantUrl, _init);\n };\n updateTenant = async (\n req: NileRequest<void> | Headers | { name: string },\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (req && 'name' in req) {\n _req = new Request(`${this.api.basePath}${this.tenantUrl}`, {\n body: JSON.stringify(req),\n method: 'PUT',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.put<Tenant>(_req, this.tenantUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nimport { CreateBasicUserRequest, User } from './types';\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 get linkUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n this.userId ?? '{userId}'\n }/link`;\n }\n\n get tenantUserUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n this.userId ?? '{userId}'\n }`;\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 createTenantUser = 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.tenantUsersUrl, _init);\n };\n\n updateUser = async (\n req: NileRequest<\n Partial<Omit<User, 'email' | 'tenants' | 'created' | 'updated'>>\n >,\n init?: RequestInit\n ): Promise<User | Response> => {\n let _req;\n if (req && 'id' in req) {\n _req = new Request(`${this.api.basePath}${this.tenantUserUrl}`, {\n body: JSON.stringify(req),\n method: 'PUT',\n });\n this.userId = String(req.id);\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(_req, this.tenantUserUrl, _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; tenantId?: string }> | Headers | string,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n if (typeof req === 'string') {\n this.userId = req;\n } else {\n if ('id' in req) {\n this.userId = req.id;\n }\n if ('tenantId' in req) {\n this.tenantId = req.tenantId;\n }\n }\n\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.linkUsersUrl, _init);\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string; tenantId?: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Response> => {\n if (typeof req === 'string') {\n this.userId = req;\n } else {\n if ('id' in req) {\n this.userId = req.id;\n }\n if ('tenantId' in req) {\n this.tenantId = req.tenantId;\n }\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.delete(req, this.linkUsersUrl, _init);\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 updateMe = async (\n req:\n | NileRequest<\n Partial<\n Omit<User, 'email' | 'id' | 'tenants' | 'created' | 'updated'>\n >\n >\n | 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.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport Auth, { serverLogin } 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 auth: Auth;\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.auth = new Auth(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 updateConfig(config: Config) {\n this.config = config;\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 this.auth = new Auth(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverLogin(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 this.api.updateConfig(this.config);\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 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 // if we have a token, update it, else use the one that was there\n if (updatedConfig.api.token) {\n this.token = updatedConfig.api.token;\n }\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 if (config) {\n return await server.init(new Config(config));\n }\n return await server.init();\n}\n\nexport default create;\n"],"names":["LoginUserResponseTokenTypeEnum","AccessToken","RefreshToken","IdToken","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","getSecureCookies","cfg","stringCheck","process","env","NILEDB_SECURECOOKIES","Boolean","secureCookies","getDatabaseId","_Logger","databaseId","String","dbId","NILEDB_API_URL","pgUrl","URL","pathname","split","e","NILEDB_ID","getUsername","_Logger2","user","pg","NILEDB_POSTGRES_URL","url","username","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","name","NILEDB_NAME","substring","getTenantId","_Logger6","tenantId","NILEDB_TENANT","getBasePath","_config$api4","_Logger7","basePath","envUrl","apiUrl","href","Error","stack","getControlPlane","_Logger8","configureUrl","autoConfigUrl","NILEDB_CONFIGURE","startsWith","getDbHost","_Logger9","db","host","_config$db","_config$db2","hostname","NILEDB_HOST","getDbPort","_config$db3","_Logger10","port","_config$db4","Number","NILEDB_PORT","str","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","msg","cp","res","database","possibleError","json","_database","apiHost","dbHost","id","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","_extends","abrupt","push","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","stop","_x","apply","userId","_ref4","_excluded2","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","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","destroy","_this2","_Number2","setTimeout","_Number","end","shutdown","_this3","conn","errorHandler","cause","DBManager","connections","cleared","poolWatcherFn","poolWatcher","has","connection","getConnection","makeId","existing","size","newOne","clear","Map","filterNullUndefined","obj","Object","fromEntries","entries","filter","makeRestUrl","path","qp","URLSearchParams","strParams","toString","apiRoutes","ME","USERS","USER","TENANTS","TENANT","SIGNUP","TENANT_USERS","TENANT_USER","USER_TENANTS","urlMatches","requestUrl","route","request","_x2","_x3","_request","_init","init","updatedHeaders","_init$body","_params$method","loggingRes","Headers","origin","method","body","duplex","Response","t1","t2","t3","statusText","t4","t5","t6","GET","_GET","_x4","_x5","_route","_callee2","_callee2$","_context2","matches","configRoutes","auth","_auth","req","sessionUrl","ResponseError","response","X_NILE_TENANT","X_NILE_USER_ID","X_NILE_SECURECOOKIES","getTokenFromCookie","_headers$get","cookie","_cookies","parts","cookieParts","_cookie","slice","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","makeBasicHeaders","opts","authHeader","_fetch","_fetch2","basicHeaders","useableUrl","_response$status","_opts$method","_opts$method2","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t7","t8","t9","errors","t10","POST","_POST","yurl","newTenantName","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","VERIFY_REQUEST","PASSWORD_RESET","provider","passThroughUrl","search","location","_URL","GETTER","matchesMe","me","matchesTenantUsers","tenantUsers","matchesUsers","users","matchesTenants","tenants","authRoutes","POSTER","matchesSignup","signup","DELETER","matchesTenantsUsers","PUTER","matchesPasswordReset","handlePasswordReset","Handlers","getter","poster","deleter","puter","appRoutes","prefix","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Request","values","_x6","_x7","_x8","post","_post","_callee3","cloned","_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","ORIGIN","serverLogin","handlers","_login","_providers","_exec","baseHeaders","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","_yield$csrfRes$json","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","callbackUrl","exec","login","Auth","_requester","handleHeaders","_init2","Tenants","createTenant","_req","tenantsUrl","getTenant","tenantUrl","listTenants","tenantListUrl","deleteTenant","updateTenant","_ref5","_this$tenantId","_this$userId","Users","createUser","usersUrl","createTenantUser","tenantUsersUrl","updateUser","tenantUserUrl","listUsers","linkUser","linkUsersUrl","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","updateMe","_ref8","_callee8","_callee8$","_context8","_this$tenantId2","_this$tenantId3","_this$userId2","Api","updateConfig","payload","Server","manager","DbManager","setConfig","updatedConfig","getInstance","_config","_this$config","server","create","_create"],"mappings":"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"}
|