@niledatabase/server 3.0.0-alpha.11 → 3.0.0-alpha.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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/Event/index.ts","../src/db/PoolProxy.ts","../src/db/isUUID.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.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]/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/api/utils/routes/defaultRoutes.ts","../src/auth/index.ts","../src/utils/Requester/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["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): undefined | string => {\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 info('not set. Must run auto-configuration');\n return undefined;\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (config?.configureUrl) {\n logger && info(logger, 'config', config.configureUrl);\n return config.configureUrl;\n }\n\n if (process.env.NILEDB_CONFIGURE) {\n logger && info(logger, 'NILEDB_CONFIGURE', process.env.NILEDB_CONFIGURE);\n // backwards compatible, but not really\n if (!process.env.NILEDB_CONFIGURE.startsWith('http')) {\n return `https://${process.env.NILEDB_CONFIGURE}`;\n }\n return process.env.NILEDB_CONFIGURE;\n }\n\n logger && info(logger, 'default', 'https://global.thenile.dev');\n return 'https://global.thenile.dev';\n};\n\nexport function getDbHost(cfg: EnvConfig) {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.host]');\n\n if (config?.db && config.db.host) {\n logger && info(logger, 'config', config?.db.host);\n return config.db.host;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n logger && info(logger, 'NILEDB_POSTGRES_URL', pgUrl.host);\n return pgUrl.host;\n }\n\n if (process.env.NILEDB_HOST) {\n logger && info(logger, 'NILEDB_HOST', process.env.NILEDB_HOST);\n return process.env.NILEDB_HOST;\n }\n\n logger && info(logger, 'default', 'db.thenile.dev');\n return 'db.thenile.dev';\n}\n\nexport function getDbPort(cfg: EnvConfig): number {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.port]');\n if (config?.db?.port && config.db.port != null) {\n logger && info(logger, 'config', config?.db.port);\n return Number(config.db?.port);\n }\n\n if (process.env.NILEDB_PORT) {\n logger && info(logger, '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 | undefined;\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 | undefined;\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 let basePath = getBasePath(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId && basePath) {\n info('Already configured, aborting fetch');\n return this;\n }\n\n const cp = getControlPlane(envVarConfig);\n\n const databaseName = getDatabaseName({ config, logger: 'getInfo' });\n const url = new URL(`${cp}/databases/configure`);\n if (databaseName) {\n url.searchParams.set('databaseName', databaseName);\n }\n info('configuring from', url.href);\n const res = await fetch(url, {\n headers: {\n Authorization: `Bearer ${getInfoBearer({ config })}`,\n },\n });\n let database: Database;\n const possibleError = res.clone();\n try {\n const json: Database = await res.json();\n if (res.status === 404) {\n info('is the configured databaseName correct?');\n }\n if (json.status && json.status !== 'READY') {\n database = { message: 'Database is not ready yet' } as Database;\n } else {\n database = json;\n }\n } catch (e) {\n const message = await possibleError.text();\n error(message);\n database = { message } as Database;\n }\n info('[fetched database]', database);\n if (process.env.NODE_ENV !== 'TEST') {\n if ('message' in database) {\n if ('statusCode' in database) {\n error(database);\n throw new Error('HTTP error has occurred');\n } else {\n throw new Error(\n 'Unable to auto-configure. Please remove NILEDB_NAME, NILEDB_API_URL, NILEDB_POSTGRES_URL, and/or NILEDB_HOST from your environment variables.'\n );\n }\n }\n if (typeof database === 'object') {\n const { apiHost, dbHost, name, id } = database;\n basePath = basePath || apiHost;\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n configuredHost = dburl.host;\n }\n }\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n 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","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 { 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","export function isUUID(value: string | null | undefined) {\n if (!value) {\n return false;\n }\n const regex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regex.test(value);\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';\nimport { isUUID } from './isUUID';\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 (isUUID(config.tenantId)) {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (isUUID(config.userId)) {\n if (!config.tenantId) {\n warn('A user id cannot be set in context without a tenant id');\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: Error) {\n if (query.length === 1) {\n info('[tenant id]', config.tenantId);\n }\n if (query.length === 2) {\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';\nimport { isUUID } from './isUUID';\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 (isUUID(tenantId) && isUUID(userId)) {\n return `${tenantId}:${userId}`;\n }\n if (isUUID(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), 'utf8').toString('base64');\n};\n","import { Config } from '../../../utils/Config';\n\nconst NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(\n config: Config,\n path: string,\n qp?: Record<string, string>\n) {\n const url = config.api.basePath || NILEDB_API_URL;\n if (!url) {\n throw new Error(\n 'An API url is required. Set it via NILEDB_API_URL. Was auto configuration run?'\n );\n }\n const params = new URLSearchParams(qp);\n return `${[url, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { Config } from '../../../utils/Config';\n\nimport { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = (config: Config) => ({\n ME: makeRestUrl(config, '/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl(config, '/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(config, `/users/${userId}`),\n TENANTS: makeRestUrl(config, '/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(config, `/tenants/${tenantId}`),\n SIGNUP: makeRestUrl(config, '/signup'),\n TENANT_USERS: (tenantId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) =>\n makeRestUrl(config, `/users/${userId}/tenants`),\n});\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config?: Config\n) {\n const { info, error } = Logger(\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 info(`[${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';\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 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 url = apiRoutes(config)[key];\n const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n '[ROUTES]',\n `[${key}]`\n );\n\n switch (request.method) {\n case 'GET':\n return await GET(url, { 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","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\n\nexport const X_NILE_TENANT = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config?: Config) {\n const cookieTenant = getTokenFromCookie(headers, X_NILE_TENANT);\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config?.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { info, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const 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 { getTenantFromHttp } from '../../../utils/fetch';\nimport { ActiveSession } from '../../utils/auth';\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 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(config).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';\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: (...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(config).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';\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 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(config).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 } as Config,\n '[ROUTES]',\n `[${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, session, { request }, info);\n case 'PUT':\n return await PUT(config, 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 { 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 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(config).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';\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 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(config).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 { 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 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(config).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 { 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 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(config).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 } as Config,\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(config, { request }, info);\n case 'POST':\n return await POST(config, session, { request }, info);\n case 'PUT':\n return await PUT(config, { request }, info);\n case 'DELETE':\n return await DELETE(config, { 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 { 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 log: (...args: string[]) => void\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 log('[GET]', url);\n\n const res = await request(url, init);\n return res;\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 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(config).TENANT(tenantId)}`;\n log('[DELETE]', url);\n\n return await fetch(url, init);\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 log: (...args: string[]) => void\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const url = `${apiRoutes(config).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 } as Config,\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(config, session, { request }, info);\n case 'POST':\n return await POST(config, { request }, info);\n case 'DELETE':\n return await DELETE(config, { 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';\n\nimport { makeRestUrl } from './makeRestUrl';\n\nexport const proxyRoutes = (config: Config) => ({\n SIGNIN: makeRestUrl(config, '/auth/signin'),\n PROVIDERS: makeRestUrl(config, '/auth/providers'),\n SESSION: makeRestUrl(config, '/auth/session'),\n CSRF: makeRestUrl(config, '/auth/csrf'),\n CALLBACK: makeRestUrl(config, '/auth/callback'),\n SIGNOUT: makeRestUrl(config, '/auth/signout'),\n ERROR: makeRestUrl(config, '/auth/error'),\n});\n\ntype ProxyKeys = keyof typeof proxyRoutes;\n\nexport type ProxyPaths = (typeof proxyRoutes)[ProxyKeys];\n","/**\n * @swagger\n * /api/auth/signin:\n * get:\n * tags:\n * - authentication\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided\n * operationId: signin\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNIN';\n\nexport default async function route(req: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const init: RequestInit = {\n method: req.method,\n headers: req.headers,\n };\n if (req.method === 'POST') {\n if (typeof req.clone === 'function') {\n init.body = req.clone().body;\n }\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n\n url = `${proxyRoutes(config)[key]}/${provider}`;\n }\n\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n\n url = `${url}${params.toString() !== '' ? `?${params.toString()}` : ''}`;\n\n const res = await request(url, { ...init, request: req });\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(proxyRoutes(config).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';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(proxyRoutes(config).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';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nconst key = 'CALLBACK';\n\nexport default async function route(request: Request, config: Config) {\n const { error } = Logger(\n { ...config, debug: config.debug } as Config,\n '[ROUTES]',\n `[${key}]`\n );\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(request.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes(config).CALLBACK}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await fetch(url, {\n request,\n method: request.method,\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 });\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(proxyRoutes(config)[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, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req, config);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n return authRoutes.handleError(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';\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, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req, config);\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 { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\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 const { info } = Logger(config, '[serverAuth]');\n return async function login({\n email,\n password,\n }: {\n email: string;\n password: string;\n }) {\n info('Obtaining session');\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 info('Obtaining csrf');\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\n if (!credentials) {\n throw new Error(\n 'Unable to obtain credential provider. Aborting server side login.'\n );\n }\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('Unable to authenticate REST');\n }\n info('Attempting sign in via', signInUrl.href, 'proxy');\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\n info('Server login successful');\n const [, token] = /(nile\\.session-token=.+?);/.exec(authCookie) ?? [];\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n });\n };\n}\n","import { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'DELETE' | 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three options here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n async post<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('POST', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async get<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('GET', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async put<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('PUT', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async delete<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('DELETE', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (typeof req === 'string') {\n _req = new Request(`${this.api.basePath}${this.tenantsUrl}`, {\n body: JSON.stringify({ name: req }),\n method: 'POST',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.post(_req, this.tenantsUrl, _init);\n };\n\n getTenant = async (\n req: NileRequest<{ id: string }> | Headers | string | void,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n if (typeof req === 'string') {\n this.tenantId = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant>(req, this.tenantUrl, _init);\n };\n\n get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Tenant[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant[]>(req, this.tenantListUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(req, this.usersUrl, _init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport serverAuth from './auth';\nimport Tenants from './tenants';\nimport Users from './users';\nimport { Config } from './utils/Config';\n\nexport class Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\n }\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager from './db';\nimport { getServerId, makeServerId } from './utils/Server';\nimport { Api } from './Api';\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 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 const newServer = new Server(_config);\n\n this.servers.set(serverId, newServer);\n\n return newServer;\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","getControlPlane","_Logger9","configureUrl","NILEDB_CONFIGURE","startsWith","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","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","Error","_extends","stop","_x","Boolean","userId","_ref4","_excluded2","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","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","called","isUUID","regex","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","_callee2","e","_callee2$","_context2","clearTimeout","_x2","_this2","setTimeout","_callee3","_callee3$","_context3","end","conn","errorHandler","join","DBManager","connections","cleared","poolWatcher","has","getConnection","makeId","existing","size","newOne","clear","Map","getServerId","makeServerId","Buffer","from","JSON","stringify","toString","makeRestUrl","path","qp","URLSearchParams","apiRoutes","ME","USERS","USER","TENANTS","TENANT","SIGNUP","TENANT_USERS","TENANT_USER","USER_TENANTS","urlMatches","requestUrl","route","request","_x3","_request","_init","_params$method","init","updatedHeaders","_init$body","loggingRes","Headers","origin","method","body","duplex","Response","t1","t2","statusText","t3","GET","_GET","_x4","_x5","_route","matches","configRoutes","auth","_auth","req","sessionUrl","ResponseError","response","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","_headers$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_fetch2","opts","_response$status","basicHeaders","creds","authHeader","useableUrl","msg","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t4","t5","errors","POST","_POST","session","yurl","tenant","PUT","_PUT","_URL$pathname$split$r","reverse","_yurl$pathname$split$","email","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","proxyRoutes","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","provider","passThroughUrl","search","location","GETTER","matchesMe","me","matchesUsers","users","matchesTenantUsers","tenantUsers","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","serverAuth","handlers","_login","_yield$csrfRes$json","_exec","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_x6","_x7","_x8","post","_post","_x9","_x10","_x11","_get","_callee4","_callee4$","_context4","_x12","_x13","_x14","put","_put","_callee5","_callee5$","_context5","_x15","_x16","_x17","_delete2","_callee6","_callee6$","_context6","_delete","_x18","_x19","_x20","Tenants","createTenant","_req","_requester","tenantsUrl","handleHeaders","getTenant","tenantUrl","listTenants","tenantListUrl","_init2","_this$tenantId","_this$userId","Users","createUser","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","getUserId","_ref5","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","_this$tenantId2","Api","payload","Server","manager","servers","DbManager","setConfig","updatedConfig","getInstance","_config","serverId","currentServerId","newServer","_this$config","create","_create","server"],"mappings":"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"}
1
+ {"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.ts","../src/utils/Event/index.ts","../src/db/PoolProxy.ts","../src/db/isUUID.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.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]/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/api/utils/routes/defaultRoutes.ts","../src/auth/index.ts","../src/utils/Requester/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["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): undefined | string => {\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 info('not set. Must run auto-configuration');\n return undefined;\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (config?.configureUrl) {\n logger && info(logger, 'config', config.configureUrl);\n return config.configureUrl;\n }\n\n if (process.env.NILEDB_CONFIGURE) {\n logger && info(logger, 'NILEDB_CONFIGURE', process.env.NILEDB_CONFIGURE);\n // backwards compatible, but not really\n if (!process.env.NILEDB_CONFIGURE.startsWith('http')) {\n return `https://${process.env.NILEDB_CONFIGURE}`;\n }\n return process.env.NILEDB_CONFIGURE;\n }\n\n logger && info(logger, 'default', 'https://global.thenile.dev');\n return 'https://global.thenile.dev';\n};\n\nexport function getDbHost(cfg: EnvConfig) {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.host]');\n\n if (config?.db && config.db.host) {\n logger && info(logger, 'config', config?.db.host);\n return config.db.host;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n logger && info(logger, 'NILEDB_POSTGRES_URL', pgUrl.host);\n return pgUrl.host;\n }\n\n if (process.env.NILEDB_HOST) {\n logger && info(logger, 'NILEDB_HOST', process.env.NILEDB_HOST);\n return process.env.NILEDB_HOST;\n }\n\n logger && info(logger, 'default', 'db.thenile.dev');\n return 'db.thenile.dev';\n}\n\nexport function getDbPort(cfg: EnvConfig): number {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.port]');\n if (config?.db?.port && config.db.port != null) {\n logger && info(logger, 'config', config?.db.port);\n return Number(config.db?.port);\n }\n\n if (process.env.NILEDB_PORT) {\n logger && info(logger, '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 | undefined;\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 | undefined;\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 let basePath = getBasePath(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId && basePath) {\n info('Already configured, aborting fetch');\n return this;\n }\n\n const cp = getControlPlane(envVarConfig);\n\n const databaseName = getDatabaseName({ config, logger: 'getInfo' });\n const url = new URL(`${cp}/databases/configure`);\n if (databaseName) {\n url.searchParams.set('databaseName', databaseName);\n }\n info('configuring from', url.href);\n const res = await fetch(url, {\n headers: {\n Authorization: `Bearer ${getInfoBearer({ config })}`,\n },\n });\n let database: Database;\n const possibleError = res.clone();\n try {\n const json: Database = await res.json();\n if (res.status === 404) {\n info('is the configured databaseName correct?');\n }\n if (json.status && json.status !== 'READY') {\n database = { message: 'Database is not ready yet' } as Database;\n } else {\n database = json;\n }\n } catch (e) {\n const message = await possibleError.text();\n error(message);\n database = { message } as Database;\n }\n info('[fetched database]', database);\n if (process.env.NODE_ENV !== 'TEST') {\n if ('message' in database) {\n if ('statusCode' in database) {\n error(database);\n throw new Error('HTTP error has occurred');\n } else {\n throw new Error(\n 'Unable to auto-configure. Please remove NILEDB_NAME, NILEDB_API_URL, NILEDB_POSTGRES_URL, and/or NILEDB_HOST from your environment variables.'\n );\n }\n }\n if (typeof database === 'object') {\n const { apiHost, dbHost, name, id } = database;\n basePath = basePath || apiHost;\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n configuredHost = dburl.host;\n }\n }\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n 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","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 { 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","export function isUUID(value: string | null | undefined) {\n if (!value) {\n return false;\n }\n const regex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return regex.test(value);\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';\nimport { isUUID } from './isUUID';\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 (isUUID(config.tenantId)) {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (isUUID(config.userId)) {\n if (!config.tenantId) {\n warn('A user id cannot be set in context without a tenant id');\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: Error) {\n if (query.length === 1) {\n info('[tenant id]', config.tenantId);\n }\n if (query.length === 2) {\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';\nimport { isUUID } from './isUUID';\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 (isUUID(tenantId) && isUUID(userId)) {\n return `${tenantId}:${userId}`;\n }\n if (isUUID(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), 'utf8').toString('base64');\n};\n","import { Config } from '../../../utils/Config';\n\nconst NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(\n config: Config,\n path: string,\n qp?: Record<string, string>\n) {\n const url = config.api.basePath || NILEDB_API_URL;\n if (!url) {\n throw new Error(\n 'An API url is required. Set it via NILEDB_API_URL. Was auto configuration run?'\n );\n }\n const params = new URLSearchParams(qp);\n return `${[url, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { Config } from '../../../utils/Config';\n\nimport { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = (config: Config) => ({\n ME: makeRestUrl(config, '/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl(config, '/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(config, `/users/${userId}`),\n TENANTS: makeRestUrl(config, '/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(config, `/tenants/${tenantId}`),\n SIGNUP: makeRestUrl(config, '/signup'),\n TENANT_USERS: (tenantId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) =>\n makeRestUrl(config, `/users/${userId}/tenants`),\n});\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config: Config\n) {\n const { info, error } = Logger(config, '[REQUEST]');\n const { request, ...init } = _init;\n const requestUrl = new URL(request.url);\n const updatedHeaders = new Headers(request.headers);\n\n updatedHeaders.set('host', requestUrl.host);\n updatedHeaders.set('niledb-origin', requestUrl.origin);\n 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 info(`[${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';\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 log: (...args: string[]) => void,\n config: Config\n) {\n log('[GET]', url);\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 const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n '[ROUTES]',\n `[${key}]`\n );\n\n switch (request.method) {\n case 'GET':\n return await GET(url, { request }, info, config);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nimport request from './request';\n\nexport type ActiveSession = {\n id: string;\n email: string;\n expires: Date;\n user?: {\n id: string;\n name: string;\n image: string;\n email: string;\n emailVerified: void | Date;\n };\n};\nexport default async function auth(\n req: Request,\n config: Config\n): Promise<void | ActiveSession> {\n const { info } = 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 }, config);\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","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\n\nexport const X_NILE_TENANT = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config?: Config) {\n const cookieTenant = getTokenFromCookie(headers, X_NILE_TENANT);\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config?.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { info, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const 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 === 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}]`, 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 { getTenantFromHttp } from '../../../utils/fetch';\nimport { ActiveSession } from '../../utils/auth';\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 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(config).USERS(tenant ? tenant : undefined);\n log && log('[POST]', url);\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: (...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(config).TENANT_USERS(tenant);\n log('[GET]', url);\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 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(config).USER(userId);\n\n log('[PUT]', url);\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]',\n `[${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, session, { request }, info);\n case 'PUT':\n return await PUT(config, 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 { 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 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(config).TENANT_USERS(tenantId)}`;\n log('[GET]', '[TENANT_USERS]', url);\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 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(config).TENANT_USERS(tenantId);\n log('[PUT]', url);\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 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(config).TENANT_USER(tenantId, userId)}`;\n log('[DELETE]', url);\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 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(config).TENANT_USERS(tenantId)}`;\n log('[PUT]', url);\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]',\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(config, { request }, info);\n case 'POST':\n return await POST(config, session, { request }, info);\n case 'PUT':\n return await PUT(config, { request }, info);\n case 'DELETE':\n return await DELETE(config, { 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 { 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 log: (...args: string[]) => void\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 log('[GET]', url);\n\n const res = await request(url, init, config);\n return res;\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 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(config).TENANT(tenantId)}`;\n log('[DELETE]', url);\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 log: (...args: string[]) => void\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const url = `${apiRoutes(config).TENANTS}`;\n log('[POST]', url);\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 { 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 } as Config,\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(config, session, { request }, info);\n case 'POST':\n return await POST(config, { request }, info);\n case 'DELETE':\n return await DELETE(config, { 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';\n\nimport { makeRestUrl } from './makeRestUrl';\n\nexport const proxyRoutes = (config: Config) => ({\n SIGNIN: makeRestUrl(config, '/auth/signin'),\n PROVIDERS: makeRestUrl(config, '/auth/providers'),\n SESSION: makeRestUrl(config, '/auth/session'),\n CSRF: makeRestUrl(config, '/auth/csrf'),\n CALLBACK: makeRestUrl(config, '/auth/callback'),\n SIGNOUT: makeRestUrl(config, '/auth/signout'),\n ERROR: makeRestUrl(config, '/auth/error'),\n});\n\ntype ProxyKeys = keyof typeof proxyRoutes;\n\nexport type ProxyPaths = (typeof proxyRoutes)[ProxyKeys];\n","/**\n * @swagger\n * /api/auth/signin:\n * get:\n * tags:\n * - authentication\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided\n * operationId: signin\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNIN';\n\nexport default async function route(req: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const init: RequestInit = {\n method: req.method,\n headers: req.headers,\n };\n if (req.method === 'POST') {\n if (typeof req.clone === 'function') {\n init.body = req.clone().body;\n }\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n\n url = `${proxyRoutes(config)[key]}/${provider}`;\n }\n\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n\n url = `${url}${params.toString() !== '' ? `?${params.toString()}` : ''}`;\n\n const res = await request(url, { ...init, request: req }, config);\n\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).SESSION,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.SESSION);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).PROVIDERS,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.PROVIDERS);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config).CSRF,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CSRF);\n}\n","import { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nconst key = 'CALLBACK';\n\nexport default async function route(request: Request, config: Config) {\n const { error } = Logger(\n { ...config, debug: config.debug } as Config,\n '[ROUTES]',\n `[${key}]`\n );\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(request.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes(config).CALLBACK}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await fetch(\n url,\n {\n request,\n method: request.method,\n },\n config\n ).catch((e) => {\n error('an error as occurred', e);\n });\n\n const location = res?.headers.get('location');\n if (location) {\n return new Response(res?.body, {\n status: 302,\n headers: res?.headers,\n });\n }\n return new Response(res?.body, {\n status: res?.status,\n headers: res?.headers,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CALLBACK);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nconst key = 'SIGNOUT';\nexport default async function route(request: Request, config: Config) {\n let url = proxyRoutes(config)[key];\n\n const init: RequestInit = {\n method: request.method,\n };\n if (request.method === 'POST') {\n init.body = request.body;\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n url = `${proxyRoutes(config)[key]}/${provider}`;\n }\n\n const res = await fetch(url, { ...init, request }, config);\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nconst key = 'ERROR';\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes(config)[key],\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import 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, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req, config);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n return authRoutes.handleError(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';\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, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req, config);\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 { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\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 const { info, error } = Logger(config, '[server side login]');\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 info('Obtaining providers for', email);\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 let providers;\n try {\n providers = await sessionRes?.json();\n } catch (e) {\n info(sessionRes);\n error(e);\n }\n\n info('Obtaining csrf');\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 let csrfToken;\n try {\n const json = (await csrfRes?.json()) ?? {};\n csrfToken = json?.csrfToken;\n } catch (e) {\n error(e, csrfRes);\n }\n\n const { credentials } = providers;\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n\n if (!credentials) {\n throw new Error(\n 'Unable to obtain credential provider. Aborting server side login.'\n );\n }\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('Unable to authenticate REST');\n }\n info('Attempting sign in via proxy', signInUrl.href, 'with email', email);\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n 'content-type': 'application/json',\n cookie: csrfCookie,\n }),\n body: JSON.stringify({\n email,\n password,\n csrfToken,\n callbackUrl: credentials.callbackUrl,\n }),\n });\n const loginRes = await handlers.POST(postReq);\n const authCookie = loginRes?.headers.get('set-cookie');\n if (!authCookie) {\n throw new Error('authentication failed');\n }\n const [, token] = /(nile\\.session-token=.+?);/.exec(authCookie) ?? [];\n info('Server login successful', authCookie, csrfCookie);\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n });\n };\n}\n","import { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'DELETE' | 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three options here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n async post<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('POST', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async get<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('GET', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async put<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('PUT', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async delete<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('DELETE', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (typeof req === 'string') {\n _req = new Request(`${this.api.basePath}${this.tenantsUrl}`, {\n body: JSON.stringify({ name: req }),\n method: 'POST',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.post(_req, this.tenantsUrl, _init);\n };\n\n getTenant = async (\n req: NileRequest<{ id: string }> | Headers | string | void,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n if (typeof req === 'string') {\n this.tenantId = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant>(req, this.tenantUrl, _init);\n };\n\n get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Tenant[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant[]>(req, this.tenantListUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(req, this.usersUrl, _init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport serverAuth from './auth';\nimport Tenants from './tenants';\nimport Users from './users';\nimport { Config } from './utils/Config';\n\nexport class Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\n }\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager from './db';\nimport { getServerId, makeServerId } from './utils/Server';\nimport { Api } from './Api';\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 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 const newServer = new Server(_config);\n\n this.servers.set(serverId, newServer);\n\n return newServer;\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","getControlPlane","_Logger9","configureUrl","NILEDB_CONFIGURE","startsWith","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","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","Error","_extends","stop","_x","Boolean","userId","_ref4","_excluded2","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","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","called","isUUID","regex","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","_callee2","e","_callee2$","_context2","clearTimeout","_x2","_this2","setTimeout","_callee3","_callee3$","_context3","end","conn","errorHandler","join","DBManager","connections","cleared","poolWatcher","has","getConnection","makeId","existing","size","newOne","clear","Map","getServerId","makeServerId","Buffer","from","JSON","stringify","toString","makeRestUrl","path","qp","URLSearchParams","apiRoutes","ME","USERS","USER","TENANTS","TENANT","SIGNUP","TENANT_USERS","TENANT_USER","USER_TENANTS","urlMatches","requestUrl","route","request","_x3","_request","_init","_params$method","init","updatedHeaders","_init$body","loggingRes","Headers","origin","method","body","duplex","Response","t1","t2","statusText","t3","GET","_x4","_GET","_x5","_x6","_route","matches","configRoutes","auth","_auth","req","sessionUrl","ResponseError","response","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","_headers$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_fetch2","opts","_response$status","basicHeaders","creds","authHeader","useableUrl","msg","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t4","t5","errors","POST","_POST","session","yurl","tenant","PUT","_PUT","_URL$pathname$split$r","reverse","_yurl$pathname$split$","email","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","proxyRoutes","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","provider","passThroughUrl","search","location","GETTER","matchesMe","me","matchesUsers","users","matchesTenantUsers","tenantUsers","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","serverAuth","handlers","_login","_exec","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","_yield$csrfRes$json","_providers","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_x7","_x8","post","_post","_x9","_x10","_x11","_get","_callee4","_callee4$","_context4","_x12","_x13","_x14","put","_put","_callee5","_callee5$","_context5","_x15","_x16","_x17","_delete2","_callee6","_callee6$","_context6","_delete","_x18","_x19","_x20","Tenants","createTenant","_req","_requester","tenantsUrl","handleHeaders","getTenant","tenantUrl","listTenants","tenantListUrl","_init2","_this$tenantId","_this$userId","Users","createUser","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","getUserId","_ref5","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","_this$tenantId2","Api","payload","Server","manager","servers","DbManager","setConfig","updatedConfig","getInstance","_config","serverId","currentServerId","newServer","_this$config","create","_create","server"],"mappings":"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"}