@niledatabase/server 3.0.0-alpha.17 → 3.0.0-alpha.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Server.d.ts +1 -4
- package/dist/api/routes/tenants/[tenantId]/GET.d.ts +37 -0
- package/dist/api/routes/tenants/[tenantId]/PUT.d.ts +38 -0
- package/dist/api/routes/users/POST.d.ts +1 -2
- package/dist/db/DBManager.d.ts +1 -0
- package/dist/db/NileInstance.d.ts +0 -1
- package/dist/server.cjs.development.js +509 -405
- package/dist/server.cjs.development.js.map +1 -1
- package/dist/server.cjs.production.min.js +1 -1
- package/dist/server.cjs.production.min.js.map +1 -1
- package/dist/server.esm.js +510 -406
- package/dist/server.esm.js.map +1 -1
- package/dist/utils/Config/index.d.ts +3 -0
- package/dist/utils/Event/index.d.ts +0 -1
- package/package.json +2 -2
- package/dist/db/isUUID.d.ts +0 -1
- package/dist/utils/Server/index.d.ts +0 -4
package/dist/server.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.esm.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.ts","../src/utils/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\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} 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 private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath?: string | undefined;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nexport class Config {\n user: string;\n password: string;\n databaseId: string;\n databaseName: string;\n routePrefix?: string;\n routes?: ConfigRoutes;\n\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 });\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 });\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, error } = Logger(config, '[nileauth]');\n info('checking auth');\n\n const sessionUrl = `${config.api.basePath}/auth/session`;\n info('using session', sessionUrl);\n // handle the pass through with posts\n req.headers.delete('content-length');\n\n const res = await request(sessionUrl, { request: req }, config);\n if (!res) {\n info('no session found');\n return undefined;\n }\n info('session active');\n try {\n return await new Response(res.body).json();\n } catch (e) {\n error(e);\n return undefined;\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\n\nexport const X_NILE_TENANT = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config?: Config) {\n const cookieTenant = getTokenFromCookie(headers, X_NILE_TENANT);\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config?.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { info, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const 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 Logger from '../../utils/Logger';\nimport me, { matches as matchesMe } from '../routes/me';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport { Routes } from '../types';\nimport * as authRoutes from '../routes/auth';\nimport { Config } from '../../utils/Config';\n\nexport default function GETTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[GET MATCHER]');\n return async function GET(req: Request) {\n if (matchesMe(configRoutes, req)) {\n info('matches me');\n return me(req, config);\n }\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n info('matches error');\n return authRoutes.handleError(req, config);\n }\n warn('No GET routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\nimport * as authRoutes from '../routes/auth';\n\nexport default function POSTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[POST MATCHER]');\n return async function POST(req: Request) {\n // order matters for tenantUsers\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n warn('No POST routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantsUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function DELETER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[DELETE MATCHER]');\n return async function DELETE(req: Request) {\n if (matchesTenantsUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No DELETE routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function PUTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[PUT MATCHER]');\n return async function PUT(req: Request) {\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No PUT routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import { Config } from '../../utils/Config';\nimport { Routes } from '../types';\n\nimport getter from './GET';\nimport poster from './POST';\nimport deleter from './DELETE';\nimport puter from './PUT';\n\nexport default function Handlers(configRoutes: Routes, config: Config) {\n const GET = getter(configRoutes, config);\n const POST = poster(configRoutes, config);\n const DELETE = deleter(configRoutes, config);\n const PUT = puter(configRoutes, config);\n return {\n GET,\n POST,\n DELETE,\n PUT,\n };\n}\n","import { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { proxyRoutes } from '../api/utils/routes/proxyRoutes';\nimport { 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 const routes = proxyRoutes(config);\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(routes.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\n if (sessionRes?.status === 404) {\n throw new Error('Unable to login, cannot find region api.');\n }\n\n let providers;\n try {\n providers = await sessionRes?.json();\n } catch (e) {\n info(sessionUrl, sessionRes);\n error(e);\n }\n\n info('Obtaining csrf');\n const csrf = new URL(routes.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 info(sessionUrl, csrfRes);\n error(e, csrfRes);\n }\n\n const { credentials } = providers ?? {};\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n\n if (!credentials) {\n throw new Error(\n 'Unable to obtain credential provider. Aborting server side login.'\n );\n }\n const signInUrl = new URL(routes.SIGNIN);\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","getBasePath","_config$api4","_Logger7","basePath","version","test","_config$api5","_config$api$version","_config$api6","NILEDB_API_URL","apiUrl","href","getControlPlane","_Logger8","configureUrl","NILEDB_CONFIGURE","startsWith","getDbHost","_Logger9","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger10","port","_config$db2","Number","NILEDB_PORT","NODE_ENV","ApiConfig","_ref","cookieKey","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey2","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","matchesTenantUsers","tenantUsers","matchesUsers","users","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","serverAuth","handlers","_login","_providers","_exec","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","_yield$csrfRes$json","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_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.esm.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.ts","../src/utils/Event/index.ts","../src/db/PoolProxy.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/api/utils/routes/makeRestUrl.ts","../src/api/utils/routes/apiRoutes.ts","../src/api/utils/routes/urlMatches.ts","../src/api/utils/request.ts","../src/api/routes/me/index.ts","../src/api/utils/auth.ts","../src/utils/ResponseError.ts","../src/utils/fetch.ts","../src/api/routes/users/POST.ts","../src/api/routes/users/GET.ts","../src/api/routes/users/[userId]/PUT.ts","../src/api/routes/users/index.ts","../src/api/routes/tenants/[tenantId]/users/GET.ts","../src/api/routes/tenants/[tenantId]/users/POST.ts","../src/api/routes/tenants/[tenantId]/users/[userId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/users/PUT.ts","../src/api/routes/tenants/[tenantId]/users/index.ts","../src/api/routes/tenants/GET.ts","../src/api/routes/tenants/[tenantId]/GET.ts","../src/api/routes/tenants/[tenantId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/PUT.ts","../src/api/routes/tenants/POST.ts","../src/api/routes/tenants/index.ts","../src/api/utils/routes/proxyRoutes.ts","../src/api/routes/auth/signin.ts","../src/api/routes/auth/session.ts","../src/api/routes/auth/providers.ts","../src/api/routes/auth/csrf.ts","../src/api/routes/auth/callback.ts","../src/api/routes/auth/signout.ts","../src/api/routes/auth/error.ts","../src/api/handlers/GET.ts","../src/api/handlers/POST.ts","../src/api/handlers/DELETE.ts","../src/api/handlers/PUT.ts","../src/api/handlers/index.ts","../src/api/utils/routes/defaultRoutes.ts","../src/auth/index.ts","../src/utils/Requester/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["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\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 if (basePath) {\n logger && info(logger, 'config', basePath);\n return basePath;\n }\n\n if (process.env.NILEDB_API_URL) {\n logger && info(logger, 'NILEDB_API_URL', process.env.NILEDB_API_URL);\n const apiUrl = new URL(process.env.NILEDB_API_URL);\n return apiUrl.href;\n }\n\n 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} from './envVars';\n\nexport type ConfigRoutes = {\n SIGNIN?: string;\n SESSION?: string;\n PROVIDERS?: string;\n CSRF?: string;\n CALLBACK?: string;\n SIGNOUT?: string;\n ME?: string;\n ERROR?: string;\n TENANTS?: string;\n TENANT_USERS?: string;\n USERS?: string;\n};\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string | undefined;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath?: string | undefined;\n cookieKey: string;\n token: string | undefined;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this._token = token;\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nexport class Config {\n user: string;\n password: string;\n databaseId: string;\n databaseName: string;\n routePrefix?: string;\n routes?: ConfigRoutes;\n\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 });\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 this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n database: this.databaseName,\n ...dbConfig,\n };\n info('[config set]', this);\n return this;\n }\n\n 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 });\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 private events: { [key: string]: EventFn[] } = {};\n\n // Publish event and notify all subscribers\n publish(eventName: string, value: BusValues) {\n const callbackList = this.events[eventName];\n if (callbackList) {\n for (const callback of callbackList) {\n callback(value);\n }\n }\n }\n\n // Subscribe to events\n subscribe(eventName: string, callback: EventFn) {\n if (!this.events[eventName]) {\n this.events[eventName] = [];\n }\n this.events[eventName].push(callback);\n }\n\n // Unsubscribe from an event\n unsubscribe(eventName: string, callback: EventFn) {\n const callbackList = this.events[eventName];\n\n if (!callbackList) {\n return; // Early exit if no event exists\n }\n\n const index = callbackList.indexOf(callback);\n if (index !== -1) {\n callbackList.splice(index, 1); // Remove the callback\n }\n\n // If there are no more listeners, clean up the event\n if (callbackList.length === 0) {\n delete this.events[eventName];\n }\n }\n}\n\n// tenantId manager\nconst eventer = new Eventer();\n\nexport const updateTenantId = (tenantId: BusValues) => {\n eventer.publish(Events.Tenant, tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n eventer.subscribe(Events.Tenant, cb);\n\nexport const updateUserId = (userId: BusValues) => {\n eventer.publish(Events.User, userId);\n};\n\nexport const watchUserId = (cb: EventFn) => eventer.subscribe(Events.User, cb);\n\nexport const updateToken = (val: BusValues) => {\n eventer.publish(Events.Token, val);\n};\n\nexport const watchToken = (cb: EventFn) => eventer.subscribe(Events.Token, cb);\n\nexport const watchEvictPool = (cb: EventFn) =>\n eventer.subscribe(Events.EvictPool, cb);\n\nexport const evictPool = (val: BusValues) => {\n eventer.publish(Events.EvictPool, val);\n};\n","import { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AllowAny = any;\n\nexport function createProxyForPool(pool: Pool, config: Config): Pool {\n const { info, error } = Logger(config, '[pool]');\n return new Proxy<Pool>(pool, {\n get(target: AllowAny, property) {\n if (property === 'query') {\n // give connection string a pass for these problems\n if (!config.db.connectionString) {\n if (!config.user || !config.password) {\n error(\n 'Cannot connect to the database. User and/or password are missing. Generate them at https://console.thenile.dev'\n );\n } else if (!config.db.database) {\n error(\n 'Database name is missing from the config. Call `nile.init()` or set NILEDB_ID in your .env'\n );\n }\n }\n const caller = target[property];\n return function query(...args: AllowAny) {\n info(...args);\n // @ts-expect-error - not mine\n const called = caller.apply(this, args);\n return called;\n };\n }\n return target[property];\n },\n }) as Pool;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Pool } from 'pg';\n\nimport { Config } from '../utils/Config';\nimport { evictPool } from '../utils/Event';\nimport { AfterCreate } from '../types';\nimport Logger from '../utils/Logger';\n\nimport { createProxyForPool } from './PoolProxy';\n\nclass NileDatabase {\n pool: Pool;\n tenantId?: undefined | null | string;\n userId?: undefined | null | string;\n id: string;\n config: Config;\n timer: NodeJS.Timeout | undefined;\n\n constructor(config: Config, id: string) {\n const { warn, info } = Logger(config, '[NileInstance]');\n this.id = id;\n const poolConfig = {\n min: 0,\n max: 10,\n idleTimeoutMillis: 30000,\n ...config.db,\n };\n const { afterCreate, ...remaining } = poolConfig;\n\n config.db = poolConfig;\n this.config = config;\n info(this.config.db);\n\n this.pool = createProxyForPool(new Pool(remaining), this.config);\n\n if (typeof afterCreate === 'function') {\n warn(\n 'Providing an pool configuration will stop automatic tenant context setting.'\n );\n }\n\n // start the timer for cleanup\n this.startTimeout();\n this.pool.on('connect', async (client) => {\n info('pool connected');\n const afterCreate: AfterCreate = makeAfterCreate(config);\n afterCreate(client, (err) => {\n const { error } = Logger(config, '[after create callback]');\n if (err) {\n error('after create failed', err);\n evictPool(this.id);\n }\n });\n\n this.startTimeout();\n });\n this.pool.on('error', async (e) => {\n info('pool failed', e);\n if (this.timer) {\n clearTimeout(this.timer);\n }\n evictPool(this.id);\n });\n }\n\n startTimeout() {\n const { info } = Logger(this.config, '[NileInstance]');\n if (this.timer) {\n clearTimeout(this.timer);\n }\n this.timer = setTimeout(() => {\n info(\n 'Pool reached idleTimeoutMillis.',\n this.id,\n 'evicted after',\n Number(this.config.db.idleTimeoutMillis) ?? 30000,\n 'ms'\n );\n this.pool.end(() => {\n evictPool(this.id);\n info('Pool end called for', this.id);\n // something odd going on here. Without the callback, pool.end() is flakey\n });\n }, Number(this.config.db.idleTimeoutMillis) ?? 30000);\n }\n}\n\nexport default NileDatabase;\n\nfunction makeAfterCreate(config: Config): AfterCreate {\n const { warn, info } = Logger(config, '[afterCreate]');\n return (conn, done) => {\n conn.on('error', function errorHandler(error: Error) {\n warn('Connection was terminated by server', error);\n done(error, conn);\n });\n\n if (config.tenantId) {\n const query = [`SET nile.tenant_id = '${config.tenantId}'`];\n if (config.userId) {\n if (!config.tenantId) {\n warn('A user id cannot be set in context without a tenant id');\n }\n query.push(`SET nile.user_id = '${config.userId}'`);\n }\n\n // in this example we use pg driver's connection API\n conn.query(query.join(';'), function (err: Error) {\n if (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 { watchEvictPool } from '../utils/Event';\nimport Logger from '../utils/Logger';\nimport { ServerConfig } from '../types';\n\nimport NileDatabase from './NileInstance';\n\nexport default class DBManager {\n connections: Map<string, NileDatabase>;\n cleared: boolean;\n private poolWatcherFn: (id: undefined | null | string) => void;\n\n private makeId(\n tenantId?: string | undefined | null,\n userId?: string | undefined | null\n ) {\n if (tenantId && userId) {\n return `${tenantId}:${userId}`;\n }\n if (tenantId) {\n return `${tenantId}`;\n }\n return 'base';\n }\n constructor(config: ServerConfig) {\n this.cleared = false;\n this.connections = new Map();\n this.poolWatcherFn = this.poolWatcher(config);\n watchEvictPool(this.poolWatcherFn);\n }\n poolWatcher = (config: ServerConfig) => (id: undefined | null | string) => {\n const { info } = Logger(config, '[DBManager]');\n if (id && this.connections.has(id)) {\n info('Removing', id, 'from db connection pool.');\n this.connections.delete(id);\n } else {\n info('missed eviction of', id);\n }\n };\n\n getConnection = (config: ServerConfig): Pool => {\n const { info } = Logger(config, '[DBManager]');\n const id = this.makeId(config.tenantId, config.userId);\n\n const existing = this.connections.get(id);\n info('# of instances:', this.connections.size);\n if (existing) {\n info('returning existing', id);\n existing.startTimeout();\n return existing.pool;\n }\n const newOne = new NileDatabase(new Config(config), id);\n this.connections.set(id, newOne);\n info('created new', id);\n info('# of instances:', this.connections.size);\n if (this.cleared) {\n this.cleared = false;\n }\n return newOne.pool;\n };\n\n clear = (config: ServerConfig) => {\n const { info } = Logger(config, '[DBManager]');\n info('Clearing all connections', this.connections.size);\n this.cleared = true;\n this.connections.clear();\n };\n}\n","import { Config } from '../../../utils/Config';\n\nconst NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(\n config: Config,\n path: string,\n qp?: Record<string, string>\n) {\n const url = config.api.basePath || NILEDB_API_URL;\n if (!url) {\n throw new Error(\n 'An API url is required. Set it via NILEDB_API_URL. Was auto configuration run?'\n );\n }\n const params = new URLSearchParams(qp);\n return `${[url, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { Config } from '../../../utils/Config';\n\nimport { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = (config: Config) => ({\n ME: makeRestUrl(config, '/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl(config, '/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(config, `/users/${userId}`),\n TENANTS: makeRestUrl(config, '/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(config, `/tenants/${tenantId}`),\n SIGNUP: makeRestUrl(config, '/signup'),\n TENANT_USERS: (tenantId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(config, `/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) =>\n makeRestUrl(config, `/users/${userId}/tenants`),\n});\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config: Config\n) {\n const { info, error } = Logger(config, '[REQUEST]');\n const { request, ...init } = _init;\n const requestUrl = new URL(request.url);\n const updatedHeaders = new Headers(request.headers);\n\n updatedHeaders.set('host', requestUrl.host);\n updatedHeaders.set('niledb-origin', requestUrl.origin);\n const params = { ...init, headers: updatedHeaders };\n if (params.method === 'POST' || params.method === 'PUT') {\n params.body = init.body ?? request.body;\n // @ts-expect-error - its there\n params.duplex = 'half';\n }\n\n 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, error } = Logger(config, '[nileauth]');\n info('checking auth');\n\n const sessionUrl = `${config.api.basePath}/auth/session`;\n info('using session', sessionUrl);\n // handle the pass through with posts\n req.headers.delete('content-length');\n\n const res = await request(sessionUrl, { request: req }, config);\n if (!res) {\n info('no session found');\n return undefined;\n }\n info('session active');\n try {\n return await new Response(res.body).json();\n } catch (e) {\n error(e);\n return undefined;\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\n\nexport const X_NILE_TENANT = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config?: Config) {\n const cookieTenant = getTokenFromCookie(headers, X_NILE_TENANT);\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config?.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { info, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (getToken({ config })) {\n basicHeaders.set('Authorization', `Bearer ${getToken({ config })}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n\n info('[fetch]', useableUrl);\n\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n error('[fetch]', '[response]', 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 request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport { Config } from '../../../utils/Config';\n/**\n * @swagger\n * /api/users:\n * post:\n * tags:\n * - users\n * summary: Creates a user\n * description: Creates a user in the database\n * operationId: createUser\n * parameters:\n * - name: tenantId\n * description: A tenant id to add the user to when they are created\n * in: query\n * schema:\n * type: string\n * - name: newTenantName\n * description: A tenant name to create, then the user to when they are created\n * in: query\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * The `newTenant` is optional; if provided, it is used as the name of a new tenant record associated with the newly created user.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * Create User Request with Tenant:\n * summary: Creates a user and a new tenant for that user\n * description: Create User Request with Tenant\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * newTenant: My Sandbox\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: \"#/components/schemas/User\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function POST(\n config: Config,\n init: RequestInit & { request: Request },\n log?: (...args: string[]) => void\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, { 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 * get:\n * tags:\n * - tenants\n * summary: Obtains a specific tenant.\n * operationId: getTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: the desired tenant\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function GET(\n config: Config,\n init: RequestInit & { request: Request },\n log: (...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 = 'GET';\n const url = `${apiRoutes(config).TENANT(tenantId)}`;\n log('[GET]', url);\n\n return await fetch(url, init, config);\n}\n","import { Config } from '../../../../utils/Config';\nimport fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * 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 fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * put:\n * tags:\n * - tenants\n * summary: Obtains a specific tenant.\n * operationId: updateTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"201\":\n * description: update an existing tenant\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function PUT(\n config: Config,\n init: RequestInit & { request: Request },\n 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 init.body = init.request.body;\n init.method = 'PUT';\n const url = `${apiRoutes(config).TENANT(tenantId)}`;\n log('[PUT]', 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 { GET as TENANT_GET } from './[tenantId]/GET';\nimport { DELETE } from './[tenantId]/DELETE';\nimport { PUT } from './[tenantId]/PUT';\nimport { POST } from './POST';\n\nfunction isUUID(value: string | null | undefined) {\n if (!value) {\n return false;\n }\n // is any UUID\n const regex =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5|7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;\n\n return regex.test(value);\n}\n\nconst key = 'TENANTS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug } as Config,\n '[ROUTES]',\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 const [possibleTenantId] = request.url.split('/').reverse();\n\n switch (request.method) {\n case 'GET':\n if (isUUID(possibleTenantId)) {\n return await TENANT_GET(config, { request }, info);\n }\n return await GET(config, session, { request }, info);\n case 'POST':\n return await POST(config, { request }, info);\n case 'DELETE':\n return await DELETE(config, { request }, info);\n case 'PUT':\n return await PUT(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 Logger from '../../utils/Logger';\nimport me, { matches as matchesMe } from '../routes/me';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport { Routes } from '../types';\nimport * as authRoutes from '../routes/auth';\nimport { Config } from '../../utils/Config';\n\nexport default function GETTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[GET MATCHER]');\n return async function GET(req: Request) {\n if (matchesMe(configRoutes, req)) {\n info('matches me');\n return me(req, config);\n }\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n info('matches error');\n return authRoutes.handleError(req, config);\n }\n warn('No GET routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\nimport * as authRoutes from '../routes/auth';\n\nexport default function POSTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[POST MATCHER]');\n return async function POST(req: Request) {\n // order matters for tenantUsers\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n info('matches session');\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n info('matches signin');\n return authRoutes.handleSignIn(req, config);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n info('matches providers');\n return authRoutes.handleProviders(req, config);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n info('matches csrf');\n return authRoutes.handleCsrf(req, config);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n info('matches callback');\n return authRoutes.handleCallback(req, config);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n info('matches signout');\n return authRoutes.handleSignOut(req, config);\n }\n warn('No POST routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantsUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function DELETER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[DELETE MATCHER]');\n return async function DELETE(req: Request) {\n if (matchesTenantsUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No DELETE routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import Logger from '../../utils/Logger';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function PUTER(configRoutes: Routes, config: Config) {\n const { info, warn } = Logger(config, '[PUT MATCHER]');\n return async function PUT(req: Request) {\n if (matchesTenantUsers(configRoutes, req)) {\n info('matches tenant users');\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n info('matches users');\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n info('matches tenants');\n return tenants(req, config);\n }\n warn('No PUT routes matched');\n return new Response(null, { status: 404 });\n };\n}\n","import { Config } from '../../utils/Config';\nimport { Routes } from '../types';\n\nimport getter from './GET';\nimport poster from './POST';\nimport deleter from './DELETE';\nimport puter from './PUT';\n\nexport default function Handlers(configRoutes: Routes, config: Config) {\n const GET = getter(configRoutes, config);\n const POST = poster(configRoutes, config);\n const DELETE = deleter(configRoutes, config);\n const PUT = puter(configRoutes, config);\n return {\n GET,\n POST,\n DELETE,\n PUT,\n };\n}\n","import { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { appRoutes } from '../api/utils/routes/defaultRoutes';\nimport { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n// url host does not matter, we only match on the 1st leg by path\nconst ORIGIN = 'http://localhost';\n/**\n * a helper function to log in server side.\n */\nexport default function serverAuth(\n config: Config,\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n }\n) {\n const { info, error } = Logger(config, '[server side login]');\n const routes = appRoutes(config.routePrefix);\n return async function login({\n email,\n password,\n }: {\n email: string;\n password: string;\n }) {\n if (!email || !password) {\n throw new Error('Server side login requires a user email and password.');\n }\n\n info('Obtaining providers for', email);\n const sessionUrl = new URL(`${ORIGIN}${routes.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\n if (sessionRes?.status === 404) {\n throw new Error('Unable to login, cannot find region api.');\n }\n\n let providers;\n try {\n providers = await sessionRes?.json();\n } catch (e) {\n info(sessionUrl, sessionRes);\n error(e);\n }\n\n info('Obtaining csrf');\n const csrf = new URL(`${ORIGIN}${routes.CSRF}`);\n const csrfReq = new Request(csrf, {\n method: 'GET',\n headers: new Headers({\n 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 info(sessionUrl, csrfRes);\n error(e, csrfRes);\n }\n\n const { credentials } = providers ?? {};\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n\n if (!credentials) {\n throw new Error(\n 'Unable to obtain credential provider. Aborting server side login.'\n );\n }\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('Unable to authenticate REST');\n }\n info('Attempting sign in with email', email);\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n 'content-type': 'application/json',\n cookie: csrfCookie,\n }),\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 if (!token) {\n throw new Error('Server login failed');\n }\n info('Server login successful', authCookie, csrfCookie);\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n });\n };\n}\n","import { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'DELETE' | 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three options here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n async post<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('POST', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async get<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('GET', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async put<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('PUT', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async delete<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('DELETE', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (typeof req === 'string') {\n _req = new Request(`${this.api.basePath}${this.tenantsUrl}`, {\n body: JSON.stringify({ name: req }),\n method: 'POST',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.post(_req, this.tenantsUrl, _init);\n };\n\n getTenant = async (\n req: NileRequest<{ id: string }> | Headers | string | void,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n if (typeof req === 'string') {\n this.tenantId = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant>(req, this.tenantUrl, _init);\n };\n\n get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Tenant[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant[]>(req, this.tenantListUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(req, this.usersUrl, _init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport serverAuth from './auth';\nimport Tenants from './tenants';\nimport Users from './users';\nimport { Config } from './utils/Config';\n\nexport class Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\n }\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager from './db';\nimport { Api } from './Api';\n\nexport class Server {\n config: Config;\n api: Api;\n private manager!: DbManager;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config as ServerConfig, '[initial config]');\n this.api = new Api(this.config);\n this.manager = new DbManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n\n watchUserId((userId) => {\n this.userId = userId;\n });\n\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n async init(cfg?: Config) {\n const updatedConfig = await this.config.configure({\n ...this.config,\n ...cfg,\n });\n this.setConfig(updatedConfig);\n\n this.api = new Api(this.config);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.databaseId = val;\n this.api.users.databaseId = val;\n this.api.tenants.databaseId = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.databaseId = this.config.databaseId;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.databaseId = this.config.databaseId;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): Pool {\n return this.manager.getConnection(this.config);\n }\n\n /**\n * A convenience function that applies a config and ensures whatever was passed is set properly\n */\n\n getInstance(config: ServerConfig): Server {\n const _config = { ...this.config, ...config };\n\n // be sure the config is up to date\n const updatedConfig = new Config(_config);\n this.setConfig(updatedConfig);\n // propagate special config items\n this.tenantId = updatedConfig.tenantId;\n this.userId = updatedConfig.userId;\n this.token = updatedConfig.api.token;\n this.databaseId = updatedConfig.databaseId;\n\n return this;\n }\n}\n\nlet server: Server;\nexport async function create(config?: ServerConfig): Promise<Server> {\n if (!server) {\n server = new Server(config);\n }\n return await server.init();\n}\n\nexport default create;\n"],"names":["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","getBasePath","_config$api4","_Logger7","basePath","NILEDB_API_URL","apiUrl","href","getControlPlane","_Logger8","configureUrl","NILEDB_CONFIGURE","startsWith","getDbHost","_Logger9","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger10","port","_config$db2","Number","NILEDB_PORT","NODE_ENV","ApiConfig","_ref","cookieKey","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey3","routePrefix","routes","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_config$api$cookieKey2","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","_config$api$cookieKey","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","_extends","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","Error","stop","_x","Boolean","userId","_ref4","_excluded2","Events","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","unsubscribe","index","indexOf","splice","eventer","updateTenantId","Tenant","watchTenantId","cb","updateUserId","User","watchUserId","watchToken","Token","watchEvictPool","EvictPool","evictPool","val","createProxyForPool","pool","Proxy","target","property","connectionString","caller","query","called","NileDatabase","timer","poolConfig","min","max","idleTimeoutMillis","afterCreate","remaining","Pool","startTimeout","on","client","makeAfterCreate","err","_callee2","e","_callee2$","_context2","clearTimeout","_x2","_this2","_Number2","setTimeout","_Number","end","conn","errorHandler","join","DBManager","connections","cleared","poolWatcherFn","poolWatcher","has","getConnection","makeId","existing","size","newOne","clear","Map","makeRestUrl","path","qp","URLSearchParams","toString","apiRoutes","ME","USERS","USER","TENANTS","TENANT","SIGNUP","TENANT_USERS","TENANT_USER","USER_TENANTS","urlMatches","requestUrl","route","request","_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","authHeader","useableUrl","msg","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t4","t5","errors","POST","_POST","yurl","tenant","PUT","_PUT","session","_URL$pathname$split$r","reverse","_yurl$pathname$split$","JSON","stringify","email","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","isUUID","regex","test","_request$url$split$re","TENANT_GET","proxyRoutes","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","provider","passThroughUrl","search","location","GETTER","matchesMe","me","matchesTenantUsers","tenantUsers","matchesUsers","users","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","ORIGIN","serverAuth","handlers","_login","_providers","_exec","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","_yield$csrfRes$json","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_x7","_x8","post","_post","_callee3","_callee3$","_context3","_x9","_x10","_x11","_get","_callee4","_callee4$","_context4","_x12","_x13","_x14","put","_put","_callee5","_callee5$","_context5","_x15","_x16","_x17","_delete2","_callee6","_callee6$","_context6","delete","_x18","_x19","_x20","Tenants","createTenant","_req","_requester","tenantsUrl","handleHeaders","getTenant","tenantUrl","listTenants","tenantListUrl","_init2","_this$tenantId","_this$userId","Users","createUser","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","getUserId","_ref5","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","_this$tenantId2","Api","payload","Server","manager","DbManager","setConfig","updatedConfig","getInstance","_config","_this$config","server","create","_create"],"mappings":"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"}
|