@niledatabase/server 3.0.0-alpha.9 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/express.d.mts +24 -0
- package/dist/express.d.ts +24 -0
- package/dist/express.js +147 -0
- package/dist/express.js.map +1 -0
- package/dist/express.mjs +144 -0
- package/dist/express.mjs.map +1 -0
- package/dist/index.d.mts +323 -0
- package/dist/index.d.ts +323 -5
- package/dist/index.js +2382 -5
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2377 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +17 -4
- package/dist/Api.d.ts +0 -22
- package/dist/Server.d.ts +0 -29
- package/dist/api/handlers/DELETE.d.ts +0 -3
- package/dist/api/handlers/GET.d.ts +0 -3
- package/dist/api/handlers/POST.d.ts +0 -3
- package/dist/api/handlers/PUT.d.ts +0 -3
- package/dist/api/handlers/index.d.ts +0 -8
- package/dist/api/routes/auth/callback.d.ts +0 -3
- package/dist/api/routes/auth/csrf.d.ts +0 -3
- package/dist/api/routes/auth/error.d.ts +0 -3
- package/dist/api/routes/auth/index.d.ts +0 -7
- package/dist/api/routes/auth/providers.d.ts +0 -3
- package/dist/api/routes/auth/session.d.ts +0 -4
- package/dist/api/routes/auth/signin.d.ts +0 -33
- package/dist/api/routes/auth/signout.d.ts +0 -3
- package/dist/api/routes/me/index.d.ts +0 -4
- package/dist/api/routes/tenants/GET.d.ts +0 -32
- package/dist/api/routes/tenants/POST.d.ts +0 -45
- package/dist/api/routes/tenants/[tenantId]/DELETE.d.ts +0 -34
- package/dist/api/routes/tenants/[tenantId]/users/GET.d.ts +0 -35
- package/dist/api/routes/tenants/[tenantId]/users/POST.d.ts +0 -44
- package/dist/api/routes/tenants/[tenantId]/users/PUT.d.ts +0 -29
- package/dist/api/routes/tenants/[tenantId]/users/[userId]/DELETE.d.ts +0 -30
- package/dist/api/routes/tenants/[tenantId]/users/index.d.ts +0 -4
- package/dist/api/routes/tenants/index.d.ts +0 -4
- package/dist/api/routes/users/GET.d.ts +0 -34
- package/dist/api/routes/users/POST.d.ts +0 -66
- package/dist/api/routes/users/[userId]/PUT.d.ts +0 -40
- package/dist/api/routes/users/index.d.ts +0 -4
- package/dist/api/swagger.d.ts +0 -152
- package/dist/api/types.d.ts +0 -18
- package/dist/api/utils/auth.d.ts +0 -14
- package/dist/api/utils/request.d.ts +0 -4
- package/dist/api/utils/routes/apiRoutes.d.ts +0 -14
- package/dist/api/utils/routes/defaultRoutes.d.ts +0 -2
- package/dist/api/utils/routes/makeRestUrl.d.ts +0 -1
- package/dist/api/utils/routes/proxyRoutes.d.ts +0 -12
- package/dist/api/utils/routes/urlMatches.d.ts +0 -1
- package/dist/auth/index.d.ts +0 -13
- package/dist/db/DBManager.d.ts +0 -12
- package/dist/db/NileInstance.d.ts +0 -14
- package/dist/db/PoolProxy.d.ts +0 -3
- package/dist/db/index.d.ts +0 -1
- package/dist/db/isUUID.d.ts +0 -1
- package/dist/server.cjs.development.js +0 -3976
- package/dist/server.cjs.development.js.map +0 -1
- package/dist/server.cjs.production.min.js +0 -2
- package/dist/server.cjs.production.min.js.map +0 -1
- package/dist/server.esm.js +0 -3974
- package/dist/server.esm.js.map +0 -1
- package/dist/tenants/index.d.ts +0 -21
- package/dist/types.d.ts +0 -37
- package/dist/users/index.d.ts +0 -52
- package/dist/utils/Config/envVars.d.ts +0 -22
- package/dist/utils/Config/index.d.ts +0 -47
- package/dist/utils/Event/index.d.ts +0 -12
- package/dist/utils/Logger.d.ts +0 -7
- package/dist/utils/Requester/index.d.ts +0 -23
- package/dist/utils/Requester/types.d.ts +0 -88
- package/dist/utils/ResponseError.d.ts +0 -4
- package/dist/utils/Server/index.d.ts +0 -4
- package/dist/utils/fetch.d.ts +0 -9
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.cjs.development.js","sources":["../src/utils/Logger.ts","../src/utils/Config/envVars.ts","../src/utils/Config/index.ts","../src/utils/Event/index.ts","../src/db/PoolProxy.ts","../src/db/isUUID.ts","../src/db/NileInstance.ts","../src/db/DBManager.ts","../src/utils/Server/index.ts","../src/api/utils/routes/makeRestUrl.ts","../src/api/utils/routes/apiRoutes.ts","../src/api/utils/routes/urlMatches.ts","../src/api/utils/request.ts","../src/api/routes/me/index.ts","../src/api/utils/auth.ts","../src/utils/ResponseError.ts","../src/utils/fetch.ts","../src/api/routes/users/POST.ts","../src/api/routes/users/GET.ts","../src/api/routes/users/[userId]/PUT.ts","../src/api/routes/users/index.ts","../src/api/routes/tenants/[tenantId]/users/GET.ts","../src/api/routes/tenants/[tenantId]/users/POST.ts","../src/api/routes/tenants/[tenantId]/users/[userId]/DELETE.ts","../src/api/routes/tenants/[tenantId]/users/PUT.ts","../src/api/routes/tenants/[tenantId]/users/index.ts","../src/api/routes/tenants/GET.ts","../src/api/routes/tenants/[tenantId]/DELETE.ts","../src/api/routes/tenants/POST.ts","../src/api/routes/tenants/index.ts","../src/api/utils/routes/proxyRoutes.ts","../src/api/routes/auth/signin.ts","../src/api/routes/auth/session.ts","../src/api/routes/auth/providers.ts","../src/api/routes/auth/csrf.ts","../src/api/routes/auth/callback.ts","../src/api/routes/auth/signout.ts","../src/api/routes/auth/error.ts","../src/api/handlers/GET.ts","../src/api/handlers/POST.ts","../src/api/handlers/DELETE.ts","../src/api/handlers/PUT.ts","../src/api/handlers/index.ts","../src/api/utils/routes/defaultRoutes.ts","../src/auth/index.ts","../src/utils/Requester/index.ts","../src/tenants/index.ts","../src/users/index.ts","../src/Api.ts","../src/Server.ts"],"sourcesContent":["import { ServerConfig } from '../types';\n\nimport { Config } from './Config';\n\nexport default function Logger(\n config: void | Config | ServerConfig,\n ...params: unknown[]\n) {\n return {\n info(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.info('[niledb]', ...params, ...args);\n }\n },\n warn(...args: unknown[]) {\n if (config?.debug) {\n // eslint-disable-next-line no-console\n console.warn('[niledb]', ...params, ...args);\n }\n },\n error(...args: unknown[]) {\n // eslint-disable-next-line no-console\n console.error('[niledb]', '[ERROR]', ...params, ...args);\n },\n };\n}\n","import 'dotenv/config';\nimport { ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nexport type EnvConfig = {\n logger?: string;\n config?: ServerConfig;\n};\n\nexport const getDatabaseId = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[databaseId]');\n if (config?.databaseId) {\n logger && info(logger, 'config', config.databaseId);\n return String(config?.databaseId);\n }\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n return pgUrl.pathname.substring(1);\n }\n logger && info(logger, 'env', process.env.NILEDB_ID);\n return process.env.NILEDB_ID;\n};\nexport const getUsername = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n const { info } = Logger(config, '[username]');\n if (config?.user) {\n logger && info(logger, 'config', config.user);\n return String(config?.user);\n }\n logger && info(logger, 'NILEDB_USER', process.env.NILEDB_USER);\n return process.env.NILEDB_USER;\n};\n\nexport const getPassword = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const log = logProtector(logger);\n const { info } = Logger(config, '[password]');\n if (config?.password) {\n log && info(logger, 'config', config.password);\n\n return String(config.password);\n }\n\n log && info(logger, 'NILEDB_PASSWORD', process.env.NILEDB_PASSWORD);\n return process.env.NILEDB_PASSWORD;\n};\n\nexport const getInfoBearer = (cfg: EnvConfig) => {\n return `${getUsername(cfg)}:${getPassword(cfg)}`;\n};\n\nexport const getToken = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[token]');\n if (config?.api?.token) {\n logger && info(logger, 'config', config.api?.token);\n return String(config.api?.token);\n }\n if (process.env.NILEDB_TOKEN) {\n logger && info(logger, 'NILEDB_TOKEN', process.env.NILEDB_TOKEN);\n return process.env.NILEDB_TOKEN;\n }\n return undefined;\n};\n\nexport const getDatabaseName = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[databaseName]');\n if (config?.databaseName) {\n logger && info(logger, 'config', config.databaseName);\n return String(config.databaseName);\n }\n if (process.env.NILEDB_NAME) {\n logger && info(logger, 'NILEDB_NAME', process.env.NILEDB_NAME);\n return process.env.NILEDB_NAME;\n }\n return null;\n};\n\nexport const getTenantId = (cfg: EnvConfig): string | null => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[tenantId]');\n if (config?.tenantId) {\n logger && info(logger, 'config', config.tenantId);\n return config.tenantId;\n }\n\n if (process.env.NILEDB_TENANT) {\n logger && info(logger, 'NILEDB_TENANT', process.env.NILEDB_TENANT);\n return process.env.NILEDB_TENANT;\n }\n\n return null;\n};\n\nexport const getLocal = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n\n if (process.env.NILEDB_LOCAL) {\n const { info } = Logger(config, '[local]');\n logger && info(logger, 'NILEDB_LOCAL', process.env.NILEDB_LOCAL);\n const apiUrl = new URL(process.env.NILEDB_LOCAL);\n return apiUrl.href;\n }\n return 'http://localhost:3000';\n};\n/**\n * @param cfg various overrides\n * @returns the url for REST to use\n */\nexport const getBasePath = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n const basePath = config?.api?.basePath;\n let version = '';\n if (!/\\/v\\d\\//.test(String(basePath))) {\n version =\n config?.api?.version === 1 ? '' : `/v${config?.api?.version ?? 2}`;\n }\n if (basePath) {\n logger && info(logger, 'config', basePath);\n return `${basePath}${version}`;\n }\n\n if (process.env.NILEDB_API_URL) {\n logger && info(logger, 'NILEDB_API_URL', process.env.NILEDB_API_URL);\n const apiUrl = new URL(process.env.NILEDB_API_URL);\n return apiUrl.href;\n }\n\n throw new Error('NILEDB_API_URL is missing.');\n};\n\nexport const getControlPlane = (cfg: EnvConfig) => {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[basePath]');\n\n if (process.env.NILEDB_CONFIGURE) {\n logger && info(logger, 'NILEDB_CONFIGURE', process.env.NILEDB_CONFIGURE);\n return process.env.NILEDB_CONFIGURE;\n }\n\n if (config?.configureUrl) {\n logger && info(logger, 'NILEDB_CONFIGURE', config.configureUrl);\n return config.configureUrl;\n }\n\n logger && info(logger, 'default', 'https://global.thenile.dev');\n return 'https://global.thenile.dev';\n};\n\nexport function getDbHost(cfg: EnvConfig) {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.host]');\n\n if (config?.db && config.db.host) {\n logger && info(logger, 'config', config?.db.host);\n return config.db.host;\n }\n\n if (process.env.NILEDB_POSTGRES_URL) {\n const pgUrl = new URL(process.env.NILEDB_POSTGRES_URL);\n logger && info(logger, 'NILEDB_POSTGRES_URL', pgUrl.host);\n return pgUrl.host;\n }\n\n if (process.env.NILEDB_HOST) {\n logger && info(logger, 'NILEDB_HOST', process.env.NILEDB_HOST);\n return process.env.NILEDB_HOST;\n }\n\n logger && info(logger, 'default', 'db.thenile.dev');\n return 'db.thenile.dev';\n}\n\nexport function getDbPort(cfg: EnvConfig): number {\n const { config, logger } = cfg;\n const { info } = Logger(config, '[db.port]');\n if (config?.db?.port && config.db.port != null) {\n logger && info(logger, 'config', config?.db.port);\n return Number(config.db?.port);\n }\n\n if (process.env.NILEDB_PORT) {\n logger && info(logger, 'config', process.env.NILEDB_PORT);\n return Number(process.env.NILEDB_PORT);\n }\n logger && info(logger, 'default', 5432);\n return 5432;\n}\n\n// don't let people accidentally log secrets to production\nconst logProtector = (logger?: string) => {\n return process.env.NODE_ENV === 'development' ||\n process.env.NODE_ENV === 'test'\n ? logger\n : null;\n};\n","import { Database, NilePoolConfig, ServerConfig } from '../../types';\nimport Logger from '../Logger';\n\nimport {\n EnvConfig,\n getBasePath,\n getControlPlane,\n getDatabaseName,\n getDatabaseId,\n getDbHost,\n getDbPort,\n getInfoBearer,\n getPassword,\n getTenantId,\n getToken,\n getUsername,\n getLocal,\n} from './envVars';\n\nexport type ConfigRoutes = {\n SIGNIN?: string;\n SESSION?: string;\n PROVIDERS?: string;\n CSRF?: string;\n CALLBACK?: string;\n SIGNOUT?: string;\n ME?: string;\n ERROR?: string;\n};\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n public version?: number;\n public localPath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n version,\n localPath,\n }: {\n basePath: string;\n cookieKey: string;\n token: string | undefined;\n version: number;\n localPath: string;\n }) {\n this.basePath = basePath;\n this.cookieKey = cookieKey;\n this.version = version;\n this._token = token;\n this.localPath = localPath ?? 'http://localhost:3000';\n }\n\n public get token(): string | undefined {\n return this._token;\n }\n\n public set token(value: string | undefined) {\n this._token = value;\n }\n}\n\nexport class Config {\n user: string;\n password: string;\n databaseId: string;\n databaseName: string;\n routePrefix?: string;\n routes?: ConfigRoutes;\n\n debug: boolean;\n\n db: NilePoolConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined | null;\n private _userId?: string | undefined | null;\n\n public get tenantId(): string | undefined | null {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined | null) {\n this._tenantId = value;\n }\n\n public get userId(): string | undefined | null {\n return this._userId;\n }\n\n public set userId(value: string | undefined | null) {\n this._userId = value;\n }\n\n constructor(config?: ServerConfig, logger?: string) {\n const envVarConfig: EnvConfig = { config, logger };\n this.user = getUsername(envVarConfig) as string;\n this.password = getPassword(envVarConfig) as string;\n if (process.env.NODE_ENV !== 'TEST') {\n if (!this.user) {\n throw new Error(\n 'User is required. Set NILEDB_USER as an environment variable or set `user` in the config options.'\n );\n }\n if (!this.password) {\n throw new Error(\n 'Password is required. Set NILEDB_PASSWORD as an environment variable or set `password` in the config options.'\n );\n }\n }\n\n this.databaseId = getDatabaseId(envVarConfig) as string;\n this.databaseName = getDatabaseName(envVarConfig) as string;\n this._tenantId = getTenantId(envVarConfig);\n this.debug = Boolean(config?.debug);\n this._userId = config?.userId;\n\n const basePath = getBasePath(envVarConfig);\n const { host, port, ...dbConfig } = config?.db ?? {};\n const configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n version: config?.api?.version ?? 2,\n localPath: getLocal(envVarConfig),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n ...dbConfig,\n };\n if (this.databaseName) {\n this.db.database = this.databaseName;\n }\n }\n\n configure = async (config: ServerConfig): Promise<Config> => {\n const { info, error } = Logger(config, '[init]');\n\n const envVarConfig: EnvConfig = {\n config,\n };\n\n const { host, port, ...dbConfig } = config.db ?? {};\n let configuredHost = host ?? getDbHost(envVarConfig);\n const configuredPort = port ?? getDbPort(envVarConfig);\n if (configuredHost && this.databaseName && this.databaseId) {\n info('Already configured, aborting fetch');\n return this;\n }\n\n let basePath = getBasePath(envVarConfig);\n const cp = getControlPlane(envVarConfig);\n\n const databaseName = getDatabaseName({ config, logger: 'getInfo' });\n const url = new URL(`${cp}/databases/configure`);\n if (databaseName) {\n url.searchParams.set('databaseName', databaseName);\n }\n info('configuring from', url.href);\n const res = await fetch(url, {\n headers: {\n Authorization: `Bearer ${getInfoBearer({ config })}`,\n },\n });\n let database: Database;\n const possibleError = res.clone();\n try {\n const json: Database = await res.json();\n if (res.status === 404) {\n info('is the configured databaseName correct?');\n }\n if (json.status && json.status !== 'READY') {\n database = { message: 'Database is not ready yet' } as Database;\n } else {\n database = json;\n }\n } catch (e) {\n const message = await possibleError.text();\n error(message);\n database = { message } as Database;\n }\n info('[fetched database]', database);\n if (process.env.NODE_ENV !== 'TEST') {\n if ('message' in database) {\n if ('statusCode' in database) {\n error(database);\n throw new Error('HTTP error has occurred');\n } else {\n throw new Error(\n 'Unable to auto-configure. Please remove NILEDB_NAME, NILEDB_API_URL, NILEDB_POSTGRES_URL, and/or NILEDB_HOST from your environment variables.'\n );\n }\n }\n if (typeof database === 'object') {\n const { apiHost, dbHost, name, id } = database;\n const duckApiHost = getBasePath(envVarConfig) || apiHost; // this needs changed in the control plane response\n this.databaseId = id;\n this.databaseName = name;\n const dburl = new URL(dbHost);\n configuredHost = dburl.host;\n basePath = duckApiHost;\n }\n }\n delete envVarConfig.config?.api?.basePath;\n basePath = getBasePath(envVarConfig);\n this.api = new ApiConfig({\n basePath,\n cookieKey: config?.api?.cookieKey ?? 'token',\n token: getToken({ config }),\n version: config?.api?.version ?? 2,\n localPath: getLocal(envVarConfig),\n });\n this.db = {\n user: this.user,\n password: this.password,\n host: configuredHost,\n port: configuredPort,\n database: this.databaseName,\n ...dbConfig,\n };\n info('[config set]', this);\n return this;\n };\n}\n","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","const NILEDB_API_URL = process.env.NILEDB_API_URL;\n\nexport function makeRestUrl(path: string, qp?: Record<string, string>) {\n if (!NILEDB_API_URL) {\n throw new Error('An API url is required. Set it via NILEDB_API_URL.');\n }\n const params = new URLSearchParams(qp);\n return `${[NILEDB_API_URL, path.substring(1, path.length)].join('/')}${\n qp ? `?${params.toString()}` : ''\n }`;\n}\n","import { makeRestUrl } from './makeRestUrl';\n\ntype ApiRouteKeys = keyof typeof apiRoutes;\nexport type ApiRoutePaths = (typeof apiRoutes)[ApiRouteKeys];\nexport const apiRoutes = {\n ME: makeRestUrl('/me'),\n USERS: (tenantId?: string) =>\n makeRestUrl('/users', tenantId ? { tenantId } : undefined),\n USER: (userId: string) => makeRestUrl(`/users/${userId}`),\n TENANTS: makeRestUrl('/tenants'),\n TENANT: (tenantId: string) => makeRestUrl(`/tenants/${tenantId}`),\n SIGNUP: makeRestUrl('/signup'),\n TENANT_USERS: (tenantId: string) => makeRestUrl(`/tenants/${tenantId}/users`),\n TENANT_USER: (tenantId: string, userId: string) =>\n makeRestUrl(`/tenants/${tenantId}/users/${userId}`),\n USER_TENANTS: (userId: string) => makeRestUrl(`/users/${userId}/tenants`),\n};\n","export default function urlMatches(requestUrl: string, route: string) {\n const url = new URL(requestUrl);\n return url.pathname.startsWith(route);\n}\n","const { log } = console;\nimport { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nexport default async function request(\n url: string,\n _init: RequestInit & { request: Request },\n config?: Config\n) {\n const { info, error } = Logger(\n { ...config, debug: config?.debug },\n '[REQUEST]',\n `[${url}]`\n );\n const { request, ...init } = _init;\n const requestUrl = new URL(request.url);\n const updatedHeaders = new Headers(request.headers);\n\n updatedHeaders.set('host', requestUrl.host);\n updatedHeaders.set('niledb-origin', requestUrl.origin);\n updatedHeaders.set(\n 'niledb-creds',\n Buffer.from(\n `${process.env.NILEDB_USER}:${process.env.NILEDB_PASSWORD}`\n ).toString('base64')\n );\n const params = { ...init, headers: updatedHeaders };\n if (params.method === 'POST' || params.method === 'PUT') {\n params.body = init.body ?? request.body;\n // @ts-expect-error - its there\n params.duplex = 'half';\n }\n\n log(`[${params.method ?? 'GET'}]`, url);\n const res = await fetch(url, { ...params }).catch((e) => {\n error('An error has occurred in the fetch', e);\n return new Response(\n 'An unexpected (most likely configuration) problem has occurred',\n { status: 500 }\n );\n });\n const loggingRes = typeof res?.clone === 'function' ? res?.clone() : null;\n info('[Response]', res?.status, res?.statusText, await loggingRes?.text());\n return res;\n}\n","import Logger from '../../../utils/Logger';\nimport { Routes } from '../../types';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\nimport request from '../../utils/request';\n\nconst key = 'ME';\nconst url = apiRoutes[key];\n\n/**\n * @swagger\n * /api/me:\n * get:\n * summary: Identify the principal\n * description: Returns information about the principal associated with the session\n * provided\n * operationId: me\n * responses:\n * \"200\":\n * description: Identified user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nasync function GET(\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n log('[GET]', url);\n const res = await request(url, init);\n return res;\n}\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n\n switch (request.method) {\n case 'GET':\n return await GET({ request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Config } from '../../utils/Config';\nimport Logger from '../../utils/Logger';\n\nimport request from './request';\n\nexport type ActiveSession = {\n id: string;\n email: string;\n expires: Date;\n user?: {\n id: string;\n name: string;\n image: string;\n email: string;\n emailVerified: void | Date;\n };\n};\nexport default async function auth(\n req: Request,\n config: Config\n): Promise<void | ActiveSession> {\n const { info } = Logger({ ...config, debug: config.debug }, '[nileauth]');\n info('checking auth');\n\n const sessionUrl = `${config.api.basePath}/auth/session`;\n info('using session', sessionUrl);\n // handle the pass through with posts\n req.headers.delete('content-length');\n\n const res = await request(sessionUrl, { request: req });\n if (!res) {\n info('no session found');\n return undefined;\n }\n info('session active');\n return await new Response(res.body).json();\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","import { decodeJwt } from 'jose';\n\nimport { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId, updateUserId } from './Event';\nimport { getToken } from './Config/envVars';\nimport Logger from './Logger';\n\nexport const X_NILE_TENANT = 'niledb-tenant-id';\nexport const X_NILE_USER_ID = 'niledb-user-id';\n\nexport function handleTenantId(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n req: NileRequest<any>,\n config: Config\n): ResponseError | void {\n // already set, no need to try and figure it out\n if (config.tenantId) {\n return;\n }\n return new ResponseError('tenant id needs to be set', { status: 400 });\n}\n\nfunction getTokenFromCookie(headers: Headers, cookieKey: void | string) {\n const cookie = headers.get('cookie')?.split('; ');\n const _cookies: Record<string, string> = {};\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n\n if (cookie) {\n for (const parts of cookie) {\n const cookieParts = parts.split('=');\n const _cookie = cookieParts.slice(1).join('=');\n const name = cookieParts[0];\n _cookies[name] = _cookie;\n }\n }\n if (cookieKey) {\n return _cookies[cookieKey];\n }\n return null;\n}\nexport function getTenantFromHttp(headers: Headers, config?: Config) {\n const cookieTenant = getTokenFromCookie(headers, X_NILE_TENANT);\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config?.tenantId;\n}\n\nexport function getUserFromHttp(headers: Headers, config: Config) {\n const token = getTokenFromCookie(headers, config.api.cookieKey);\n if (token) {\n const jwt = decodeJwt(token);\n return jwt.sub;\n }\n return headers?.get(X_NILE_USER_ID) ?? config.userId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\n const { info, error } = Logger(config, '[server]');\n\n const url = `${config.api?.basePath}${path}`;\n const cookieKey = config.api?.cookieKey;\n const headers = new Headers(opts?.headers);\n const basicHeaders = new Headers(opts?.headers);\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\n\n const creds = Buffer.from(\n `${process.env.NILEDB_USER}:${process.env.NILEDB_PASSWORD}`,\n 'utf8'\n ).toString('base64');\n\n basicHeaders.set('niledb-creds', creds);\n const authHeader = headers.get('Authorization');\n if (!authHeader) {\n const token = getTokenFromCookie(headers, cookieKey);\n if (token) {\n basicHeaders.set('Authorization', `Bearer ${token}`);\n } else if (getToken({ config })) {\n basicHeaders.set('Authorization', `Bearer ${getToken({ config })}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n const userId = getUserFromHttp(headers, config);\n updateUserId(userId);\n if (url.includes('{tenantId}') && !tenantId) {\n return new ResponseError('tenantId is not set for request', {\n status: 400,\n });\n }\n const useableUrl = url\n .replace('{tenantId}', encodeURIComponent(String(tenantId)))\n .replace('{userId}', encodeURIComponent(String(userId)));\n\n info('[fetch]', useableUrl);\n\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n error('[fetch]', '[response]', e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n if (typeof response.clone === 'function') {\n try {\n info('[fetch]', '[response]', await response.clone().json());\n } catch (e) {\n info('[fetch]', '[response]', await response.clone().text());\n }\n }\n return response;\n }\n if (response?.status === 401) {\n return new ResponseError('Unauthorized', { status: 401 });\n }\n if (response?.status === 405) {\n return new ResponseError('Method not allowed', { status: 405 });\n }\n let res;\n const errorHandler =\n typeof response?.clone === 'function' ? response.clone() : null;\n let msg = '';\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n if (errorHandler) {\n msg = await errorHandler.text();\n if (msg) {\n error('[fetch]', '[response]', `[status: ${errorHandler.status}]`, msg);\n }\n }\n if (!msg) {\n error('[fetch]', '[response]', e);\n }\n }\n if (msg) {\n return new ResponseError(msg, { status: errorHandler?.status });\n }\n\n if (res && 'message' in res) {\n const { message } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n message\n );\n return new ResponseError(message, { status: 400 });\n }\n error(\n '[fetch]',\n '[response]',\n `[status: ${errorHandler?.status}]`,\n 'UNHANDLED ERROR'\n );\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n/**\n * @swagger\n * /api/users:\n * post:\n * tags:\n * - users\n * summary: Creates a user\n * description: Creates a user in the database\n * operationId: createUser\n * parameters:\n * - name: tenantId\n * description: A tenant id to add the user to when they are created\n * in: query\n * schema:\n * type: string\n * - name: newTenantName\n * description: A tenant name to create, then the user to when they are created\n * in: query\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * The `newTenant` is optional; if provided, it is used as the name of a new tenant record associated with the newly created user.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * Create User Request with Tenant:\n * summary: Creates a user and a new tenant for that user\n * description: Create User Request with Tenant\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * newTenant: My Sandbox\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: \"#/components/schemas/User\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function POST(\n session: void | ActiveSession,\n init: RequestInit & { request: Request },\n log?: (...args: string[]) => void\n) {\n if (!session) {\n return new Response(null, { status: 401 });\n }\n init.body = init.request.body;\n init.method = 'POST';\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n const url = apiRoutes.USERS(tenant ? tenant : undefined);\n log && log('[POST]', url);\n\n return await request(url, init);\n}\n","import { getTenantFromHttp } from '../../../utils/fetch';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/users:\n * get:\n * tags:\n * - users\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided. You can also pass the a `niledb-tenant-id` in the header or in a cookie.\n * operationId: listUsers\n * parameters:\n * - name: tenantId\n * in: query\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/TenantUser'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const tenantId = yurl.searchParams.get('tenantId');\n const tenant = tenantId ?? getTenantFromHttp(init.request.headers);\n\n if (!tenant) {\n log('[GET]', '[ERROR]', 'No tenant id provided.');\n return new Response(null, { status: 404 });\n }\n const url = apiRoutes.TENANT_USERS(tenant);\n log('[GET]', url);\n init.method = 'GET';\n return await request(url, init);\n}\n","import { apiRoutes } from '../../../utils/routes/apiRoutes';\nimport fetch from '../../../utils/request';\nimport { ActiveSession } from '../../../utils/auth';\n\n/**\n * @swagger\n * /api/users/{userid}:\n * put:\n * tags:\n * - users\n * summary: update a user\n * description: updates a user within the tenant\n * operationId: updateUser\n * parameters:\n * - name: userid\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |-\n * Update a user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/UpdateUserRequest'\n * responses:\n * \"200\":\n * description: An updated user\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nexport async function PUT(\n session: void | ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n if (!session) {\n return new Response(null, { status: 401 });\n }\n init.body = init.request.body;\n init.method = 'PUT';\n\n // update the user\n\n const [userId] = new URL(init.request.url).pathname.split('/').reverse();\n\n const url = apiRoutes.USER(userId);\n\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { Routes } from '../../types';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport auth from '../../utils/auth';\nimport { Config } from '../../../utils/Config';\nimport Logger from '../../../utils/Logger';\n\nimport { POST } from './POST';\nimport { GET } from './GET';\nimport { PUT } from './[userId]/PUT';\n\nconst key = 'USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n switch (request.method) {\n case 'GET':\n return await GET({ request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'PUT':\n return await PUT(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport { ActiveSession } from '../../../../utils/auth';\nimport request from '../../../../utils/request';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * get:\n * tags:\n * - users\n * summary: List tenant users\n * description: Lists users that are associated with the specified tenant.\n * operationId: listTenantUsers\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: Users found\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: '#/components/schemas/User'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function GET(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n const url = `${apiRoutes.TENANT_USERS(tenantId)}`;\n log('[GET]', '[TENANT_USERS]', url);\n return await request(url, init);\n}\n","import { ActiveSession } from '../../../../utils/auth';\nimport fetch from '../../../../utils/request';\nimport { apiRoutes } from '../../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * post:\n * tags:\n * - users\n * summary: Create a user in a tenant\n * description: Creates a new user and associates that user with the specified\n * tenant.\n * operationId: createTenantUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email and password combination the user will use to authenticate.\n * The `name` is optional; if provided it will be recorded in the `users` table.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateBasicUserRequest'\n * examples:\n * Create User Request:\n * summary: Creates a user with basic credentials\n * description: Create User Request\n * value:\n * email: a.user@somedomain.com\n * password: somepassword\n * name: A. User\n * responses:\n * \"201\":\n * description: User created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n */\nexport async function POST(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n init.body = JSON.stringify({ email: session.email });\n init.method = 'PUT';\n const url = apiRoutes.TENANT_USERS(tenantId);\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { apiRoutes } from '../../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../../utils/request';\nimport { ActiveSession } from '../../../../../utils/auth';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users/{email}:\n * delete:\n * tags:\n * - tenants\n * summary: removes a user from a tenant\n * description: removes an associated user from a specified\n * tenant.\n * operationId: unlinkUser \n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * - name: email \n * in: path\n * required: true\n * schema:\n * type: string\n \n * responses:\n * \"204\":\n * description: User removed\n */\n\nexport async function DELETE(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [userId, _, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'DELETE';\n init.body = JSON.stringify({ email: userId });\n const url = `${apiRoutes.TENANT_USER(tenantId, userId)}`;\n log('[DELETE]', url);\n\n return await fetch(url, init);\n}\n","import { apiRoutes } from '../../../../utils/routes/apiRoutes';\nimport fetch from '../../../../utils/request';\nimport { ActiveSession } from '../../../../utils/auth';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}/users:\n * put:\n * tags:\n * - tenants\n * summary: associates an existing user with the tenant\n * operationId: linkUser\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * requestBody:\n * description: |\n * The email of the user you want to add to a tenant.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/AssociateUserRequest'\n * responses:\n * \"201\":\n * description: add user to tenant\n */\n\nexport async function PUT(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [, tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'PUT';\n const url = `${apiRoutes.TENANT_USERS(tenantId)}`;\n log('[PUT]', url);\n\n return await fetch(url, init);\n}\n","import { Config } from '../../../../../utils/Config';\nimport urlMatches from '../../../../utils/routes/urlMatches';\nimport { Routes } from '../../../../types';\nimport auth from '../../../../utils/auth';\nimport Logger from '../../../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { POST } from './POST';\nimport { DELETE } from './[userId]/DELETE';\nimport { PUT } from './PUT';\n\nconst key = 'TENANT_USERS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n\n switch (request.method) {\n case 'GET':\n return await GET(session, { request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'PUT':\n return await PUT(session, { request }, info);\n case 'DELETE':\n return await DELETE(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n const url = new URL(request.url);\n const [userId, possibleTenantId, tenantId] = url.pathname\n .split('/')\n .reverse();\n let route = configRoutes[key]\n .replace('{tenantId}', tenantId)\n .replace('{userId}', userId);\n if (userId === 'users') {\n route = configRoutes[key].replace('{tenantId}', possibleTenantId);\n }\n return urlMatches(request.url, route);\n}\n","import { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * get:\n * tags:\n * - tenants\n * summary: list tenants by user\n * description: Creates a user in the database\n * operationId: listTenants\n * responses:\n * \"200\":\n * description: a list of tenants\n * content:\n * application/json:\n * schema:\n * type: array\n * items:\n * $ref: \"#/components/schemas/Tenant\"\n * \"400\":\n * description: API/Database failures\n * content:\n * text/plain:\n * schema:\n * type: string\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\nexport async function GET(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n let url = `${apiRoutes.USER_TENANTS(session.id)}`;\n if (typeof session === 'object' && 'user' in session && session.user) {\n url = `${apiRoutes.USER_TENANTS(session.user.id)}`;\n }\n log('[GET]', url);\n\n const res = await request(url, init);\n return res;\n}\n","import { ActiveSession } from '../../../utils/auth';\nimport fetch from '../../../utils/request';\nimport { apiRoutes } from '../../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants/{tenantId}:\n * delete:\n * tags:\n * - tenants\n * summary: Deletes a tenant.\n * operationId: deleteTenant\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"204\":\n * description: Tenant deleted\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Tenant not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function DELETE(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n const yurl = new URL(init.request.url);\n const [tenantId] = yurl.pathname.split('/').reverse();\n if (!tenantId) {\n return new Response(null, { status: 404 });\n }\n\n init.method = 'DELETE';\n const url = `${apiRoutes.TENANT(tenantId)}`;\n log('[DELETE]', url);\n\n return await fetch(url, init);\n}\n","import { ActiveSession } from '../../utils/auth';\nimport request from '../../utils/request';\nimport { apiRoutes } from '../../utils/routes/apiRoutes';\n\n/**\n * @swagger\n * /api/tenants:\n * post:\n * tags:\n * - tenants\n * summary: Create a tenant\n * description: Creates a new tenant in a database.\n * operationId: createTenant\n * requestBody:\n * description: A wrapper for the tenant name.\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/CreateTenantRequest'\n * examples:\n * Create Tenant Request:\n * summary: Creates a named tenant\n * description: Create Tenant Request\n * value:\n * name: My Sandbox\n * responses:\n * \"201\":\n * description: Tenant created\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/Tenant'\n * \"401\":\n * description: Unauthorized\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n * \"404\":\n * description: Database not found\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/APIError'\n */\nexport async function POST(\n session: ActiveSession,\n init: RequestInit & { request: Request },\n log: (...args: string[]) => void\n) {\n init.body = init.request.body;\n init.method = 'POST';\n const url = `${apiRoutes.TENANTS}`;\n log('[POST]', url);\n\n return await request(url, init);\n}\n","import { Config } from '../../../utils/Config';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\nimport auth from '../../utils/auth';\nimport Logger from '../../../utils/Logger';\n\nimport { GET } from './GET';\nimport { DELETE } from './[tenantId]/DELETE';\nimport { POST } from './POST';\n\nconst key = 'TENANTS';\n\nexport default async function route(request: Request, config: Config) {\n const { info } = Logger(\n { ...config, debug: config.debug },\n '[ROUTES]',\n `[${key}]`\n );\n const session = await auth(request, config);\n\n if (!session) {\n info('401');\n return new Response(null, { status: 401 });\n }\n\n switch (request.method) {\n case 'GET':\n return await GET(session, { request }, info);\n case 'POST':\n return await POST(session, { request }, info);\n case 'DELETE':\n return await DELETE(session, { request }, info);\n\n default:\n return new Response('method not allowed', { status: 405 });\n }\n}\n\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { makeRestUrl } from './makeRestUrl';\n\nexport const proxyRoutes = {\n SIGNIN: makeRestUrl('/auth/signin'),\n PROVIDERS: makeRestUrl('/auth/providers'),\n SESSION: makeRestUrl('/auth/session'),\n CSRF: makeRestUrl('/auth/csrf'),\n CALLBACK: makeRestUrl('/auth/callback'),\n SIGNOUT: makeRestUrl('/auth/signout'),\n ERROR: makeRestUrl('/auth/error'),\n};\n\ntype ProxyKeys = keyof typeof proxyRoutes;\n\nexport type ProxyPaths = (typeof proxyRoutes)[ProxyKeys];\n","/**\n * @swagger\n * /api/auth/signin:\n * get:\n * tags:\n * - authentication\n * summary: lists users in the tenant\n * description: Returns information about the users within the tenant\n * provided\n * operationId: signin\n * parameters:\n * - name: tenantId\n * in: path\n * required: true\n * schema:\n * type: string\n * responses:\n * \"200\":\n * description: A list of users\n * content:\n * application/json:\n * schema:\n * $ref: '#/components/schemas/User'\n * \"404\":\n * description: Not found\n * content: {}\n * \"401\":\n * description: Unauthorized\n * content: {}\n */\n\nimport { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNIN';\n\nexport default async function route(req: Request) {\n let url = proxyRoutes[key];\n\n const init: RequestInit = {\n method: req.method,\n headers: req.headers,\n };\n if (req.method === 'POST') {\n if (typeof req.clone === 'function') {\n init.body = req.clone().body;\n }\n const [provider] = new URL(req.url).pathname.split('/').reverse();\n\n url = `${proxyRoutes[key]}/${provider}`;\n }\n\n const passThroughUrl = new URL(req.url);\n const params = new URLSearchParams(passThroughUrl.search);\n\n url = `${url}${params.toString() !== '' ? `?${params.toString()}` : ''}`;\n\n const res = await request(url, { ...init, request: req });\n\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Config } from '../../../utils/Config';\n\nexport default async function route(req: Request, config: Config) {\n return request(\n proxyRoutes.SESSION,\n {\n method: req.method,\n request: req,\n },\n config\n );\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.SESSION);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nexport default async function route(req: Request) {\n return request(proxyRoutes.PROVIDERS, {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.PROVIDERS);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nexport default async function route(req: Request) {\n return request(proxyRoutes.CSRF, {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CSRF);\n}\n","import { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\nimport { Routes } from '../../types';\n\nconst { log, error } = console;\nexport default async function route(request: Request) {\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n const passThroughUrl = new URL(request.url);\n const params = new URLSearchParams(passThroughUrl.search);\n const url = `${proxyRoutes.CALLBACK}/${provider}${\n params.toString() !== '' ? `?${params.toString()}` : ''\n }`;\n\n const res = await fetch(url, {\n request,\n method: request.method,\n }).catch((e) => {\n error('an error has occurred in callback');\n log(e);\n });\n\n const location = res?.headers.get('location');\n if (location) {\n return new Response(res?.body, {\n status: 302,\n headers: res?.headers,\n });\n }\n return new Response(res?.body, {\n status: res?.status,\n headers: res?.headers,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes.CALLBACK);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport fetch from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'SIGNOUT';\nexport default async function route(request: Request) {\n let url = proxyRoutes[key];\n\n const init: RequestInit = {\n method: request.method,\n };\n if (request.method === 'POST') {\n init.body = request.body;\n const [provider] = new URL(request.url).pathname.split('/').reverse();\n url = `${proxyRoutes[key]}/${provider}`;\n }\n\n const res = await fetch(url, { ...init, request });\n return res;\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import { Routes } from '../../types';\nimport { proxyRoutes } from '../../utils/routes/proxyRoutes';\nimport request from '../../utils/request';\nimport urlMatches from '../../utils/routes/urlMatches';\n\nconst key = 'ERROR';\nexport default async function route(req: Request) {\n return request(proxyRoutes[key], {\n method: req.method,\n request: req,\n });\n}\nexport function matches(configRoutes: Routes, request: Request): boolean {\n return urlMatches(request.url, configRoutes[key]);\n}\n","import me, { matches as matchesMe } from '../routes/me';\nimport users, { matches as matchesUsers } from '../routes/users';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport { Routes } from '../types';\nimport * as authRoutes from '../routes/auth';\nimport { Config } from '../../utils/Config';\n\nexport default function GETTER(configRoutes: Routes, config: Config) {\n return async function GET(req: Request) {\n if (matchesMe(configRoutes, req)) {\n return me(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n return authRoutes.handleSignIn(req);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req);\n }\n if (authRoutes.matchError(configRoutes, req)) {\n return authRoutes.handleError(req);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\nimport * as authRoutes from '../routes/auth';\n\nexport default function POSTER(configRoutes: Routes, config: Config) {\n return async function POST(req: Request) {\n // order matters for tenantUsers\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n\n if (authRoutes.matchSession(configRoutes, req)) {\n return authRoutes.handleSession(req, config);\n }\n\n if (authRoutes.matchSignIn(configRoutes, req)) {\n return authRoutes.handleSignIn(req);\n }\n\n if (authRoutes.matchProviders(configRoutes, req)) {\n return authRoutes.handleProviders(req);\n }\n\n if (authRoutes.matchCsrf(configRoutes, req)) {\n return authRoutes.handleCsrf(req);\n }\n\n if (authRoutes.matchCallback(configRoutes, req)) {\n return authRoutes.handleCallback(req);\n }\n if (authRoutes.matchSignOut(configRoutes, req)) {\n return authRoutes.handleSignOut(req);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantsUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function DELETER(configRoutes: Routes, config: Config) {\n return async function DELETE(req: Request) {\n if (matchesTenantsUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import users, { matches as matchesUsers } from '../routes/users';\nimport tenants, { matches as matchesTenants } from '../routes/tenants';\nimport tenantUsers, {\n matches as matchesTenantUsers,\n} from '../routes/tenants/[tenantId]/users';\nimport { Routes } from '../types';\nimport { Config } from '../../utils/Config';\n\nexport default function PUTER(configRoutes: Routes, config: Config) {\n return async function PUT(req: Request) {\n if (matchesTenantUsers(configRoutes, req)) {\n return tenantUsers(req, config);\n }\n if (matchesUsers(configRoutes, req)) {\n return users(req, config);\n }\n if (matchesTenants(configRoutes, req)) {\n return tenants(req, config);\n }\n return new Response(null, { status: 404 });\n };\n}\n","import { Config } from '../../utils/Config';\nimport { Routes } from '../types';\n\nimport getter from './GET';\nimport poster from './POST';\nimport deleter from './DELETE';\nimport puter from './PUT';\n\nexport default function Handlers(configRoutes: Routes, config: Config) {\n const GET = getter(configRoutes, config);\n const POST = poster(configRoutes, config);\n const DELETE = deleter(configRoutes, config);\n const PUT = puter(configRoutes, config);\n return {\n GET,\n POST,\n DELETE,\n PUT,\n };\n}\n","import { Routes } from '../../types';\n\nexport const appRoutes = (prefix = '/api'): Routes => ({\n SIGNIN: `${prefix}/auth/signin`,\n PROVIDERS: `${prefix}/auth/providers`,\n SESSION: `${prefix}/auth/session`,\n CSRF: `${prefix}/auth/csrf`,\n CALLBACK: `${prefix}/auth/callback`,\n SIGNOUT: `${prefix}/auth/signout`,\n ERROR: `${prefix}/auth/error`,\n ME: `${prefix}/me`,\n USERS: `${prefix}/users`,\n TENANTS: `${prefix}/tenants`,\n TENANT_USER: `${prefix}/tenants/{tenantId}/users/{userId}`,\n TENANT_USERS: `${prefix}/tenants/{tenantId}/users`,\n SIGNUP: `${prefix}/signup`,\n});\n","import { Config } from '../utils/Config';\nimport Logger from '../utils/Logger';\n\n/**\n * a helper function to log in server side.\n */\nexport default function serverAuth(\n config: Config,\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n }\n) {\n const { info } = Logger(config, '[serverAuth]');\n return async function login({\n email,\n password,\n }: {\n email: string;\n password: string;\n }) {\n info('Obtaining session');\n const sessionUrl = new URL(`${config.api.localPath}/api/auth/providers`);\n const sessionReq = new Request(sessionUrl, {\n method: 'GET',\n headers: new Headers({\n host: sessionUrl.host,\n }),\n });\n const sessionRes = await handlers.POST(sessionReq);\n const providers = await sessionRes?.json();\n\n info('Obtaining csrf');\n const csrf = new URL(`${config.api.localPath}/api/auth/csrf`);\n const csrfReq = new Request(csrf, {\n method: 'GET',\n headers: new Headers({\n host: sessionUrl.host,\n }),\n });\n const csrfRes = await handlers.POST(csrfReq);\n\n const { csrfToken } = (await csrfRes?.json()) ?? {};\n const { credentials } = providers;\n\n const csrfCookie = csrfRes?.headers.get('set-cookie');\n\n const signInUrl = new URL(credentials.callbackUrl);\n\n if (!csrfCookie) {\n throw new Error('Unable to authenticate REST');\n }\n info('Attempting sign in to', signInUrl.href);\n const postReq = new Request(signInUrl, {\n method: 'POST',\n headers: new Headers({\n 'content-type': 'application/json',\n cookie: csrfCookie,\n }),\n body: JSON.stringify({\n email,\n password,\n csrfToken,\n callbackUrl: credentials.callbackUrl,\n }),\n });\n const loginRes = await handlers.POST(postReq);\n const authCookie = loginRes?.headers.get('set-cookie');\n if (!authCookie) {\n throw new Error('authentication failed');\n }\n\n info('Server login successful');\n const [, token] = /(nile\\.session-token=.+?);/.exec(authCookie) ?? [];\n return new Headers({\n cookie: [token, csrfCookie].join('; '),\n });\n };\n}\n","import { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'DELETE' | 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three options here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n JSON.stringify(req) === '{}' ||\n (req && typeof req === 'object' && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n async post<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('POST', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async get<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('GET', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async put<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('PUT', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n\n async delete<R = JSON>(\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response | R> {\n const response = await this.request('DELETE', url, req, init);\n if (response && response.status >= 200 && response.status < 300) {\n return response.json();\n }\n return response;\n }\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface Tenant {\n id: string;\n name?: string;\n}\n\nexport default class Tenants extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n get tenantsUrl() {\n return '/tenants';\n }\n get tenantUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }> | Headers | string,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n let _req;\n if (typeof req === 'string') {\n _req = new Request(`${this.api.basePath}${this.tenantsUrl}`, {\n body: JSON.stringify({ name: req }),\n method: 'POST',\n });\n } else {\n _req = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.post(_req, this.tenantsUrl, _init);\n };\n\n getTenant = async (\n req: NileRequest<{ id: string }> | Headers | string | void,\n init?: RequestInit\n ): Promise<Tenant | Response> => {\n if (typeof req === 'string') {\n this.tenantId = req;\n }\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant>(req, this.tenantUrl, _init);\n };\n\n get tenantListUrl() {\n return `/users/${this.userId ?? '{userId}'}/tenants`;\n }\n\n listTenants = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<Tenant[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return _requester.get<Tenant[]>(req, this.tenantListUrl, _init);\n };\n}\n","import { Config } from '../utils/Config';\nimport Requester, { NileRequest } from '../utils/Requester';\n\nexport interface CreateBasicUserRequest {\n email: string;\n password: string;\n preferredName?: string;\n newTenant?: string;\n}\nexport const LoginUserResponseTokenTypeEnum = {\n AccessToken: 'ACCESS_TOKEN',\n RefreshToken: 'REFRESH_TOKEN',\n IdToken: 'ID_TOKEN',\n} as const;\nexport type LoginUserResponseTokenTypeEnum =\n (typeof LoginUserResponseTokenTypeEnum)[keyof typeof LoginUserResponseTokenTypeEnum];\n\nexport interface LoginUserResponseToken {\n jwt: string;\n maxAge: number;\n type: LoginUserResponseTokenTypeEnum;\n}\nexport interface LoginUserResponse {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n id: string;\n token: LoginUserResponseToken;\n}\nexport interface User {\n id?: string;\n tenants?: Set<string>;\n email?: string;\n preferredName?: string;\n}\n\nexport default class Users extends Config {\n headers?: Headers;\n constructor(config: Config, headers?: Headers) {\n super(config);\n this.headers = headers;\n }\n\n get usersUrl() {\n return '/users';\n }\n\n get tenantUsersUrl() {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users`;\n }\n handleHeaders(init?: RequestInit) {\n if (this.headers) {\n if (init) {\n init.headers = new Headers({ ...this.headers, ...init?.headers });\n return init;\n } else {\n init = {\n headers: this.headers,\n };\n return init;\n }\n }\n return undefined;\n }\n\n createUser = async (\n req: NileRequest<CreateBasicUserRequest>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n\n const _init = this.handleHeaders(init);\n return await _requester.post(req, this.usersUrl, _init);\n };\n\n updateUser = async (\n userId: string,\n req: NileRequest<User>,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, `${this.usersUrl}/${userId}`, _init);\n };\n\n listUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.tenantUsersUrl, _init);\n };\n\n linkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.put(req, this.tenantUsersUrl, _init);\n };\n\n tenantUsersDeleteUrl = (userId?: string) => {\n return `/tenants/${this.tenantId ?? '{tenantId}'}/users/${\n userId ?? '{userId}'\n }`;\n };\n\n getUserId = async (req: Headers | NileRequest<{ id: string }>) => {\n if (req instanceof Request) {\n const body = await new Response(req?.body).json();\n if (body) {\n return body.id;\n }\n }\n if ('id' in req) {\n return req.id;\n }\n return null;\n };\n\n unlinkUser = async (\n req: NileRequest<{ id: string }> | Headers,\n init?: RequestInit\n ): Promise<User[] | Response> => {\n const _requester = new Requester(this);\n const userId = await this.getUserId(req);\n const _init = this.handleHeaders(init);\n return await _requester.delete(\n req,\n this.tenantUsersDeleteUrl(userId),\n _init\n );\n };\n\n get meUrl() {\n return '/me';\n }\n\n me = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): Promise<User | Response> => {\n const _requester = new Requester(this);\n const _init = this.handleHeaders(init);\n return await _requester.get(req, this.meUrl, _init);\n };\n}\n","import Handlers from './api/handlers';\nimport { Routes } from './api/types';\nimport { appRoutes } from './api/utils/routes/defaultRoutes';\nimport serverAuth from './auth';\nimport Tenants from './tenants';\nimport Users from './users';\nimport { Config } from './utils/Config';\n\nexport class Api {\n config: Config;\n users: Users;\n tenants: Tenants;\n routes: Routes;\n handlers: {\n GET: (req: Request) => Promise<void | Response>;\n POST: (req: Request) => Promise<void | Response>;\n DELETE: (req: Request) => Promise<void | Response>;\n PUT: (req: Request) => Promise<void | Response>;\n };\n constructor(config: Config) {\n this.config = config;\n this.users = new Users(config);\n this.tenants = new Tenants(config);\n this.routes = {\n ...appRoutes(config?.routePrefix),\n ...config?.routes,\n };\n this.handlers = Handlers(this.routes, config);\n }\n\n set headers(headers: Headers) {\n this.users = new Users(this.config, headers);\n this.tenants = new Tenants(this.config, headers);\n }\n async login(payload: { email: string; password: string }) {\n this.headers = await serverAuth(this.config, this.handlers)(payload);\n }\n}\n","import { Pool } from 'pg';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport { watchTenantId, watchToken, watchUserId } from './utils/Event';\nimport DbManager from './db';\nimport { getServerId, makeServerId } from './utils/Server';\nimport { Api } from './Api';\n\nexport class Server {\n config: Config;\n api: Api;\n private manager!: DbManager;\n private servers: Map<string, Server>;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config as ServerConfig, '[initial config]');\n this.servers = new Map();\n this.api = new Api(this.config);\n this.manager = new DbManager(this.config);\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n\n watchUserId((userId) => {\n this.userId = userId;\n });\n\n watchToken((token) => {\n this.token = token;\n });\n }\n\n setConfig(cfg: Config) {\n this.config = new Config(cfg);\n }\n\n async init(cfg?: Config) {\n const updatedConfig = await this.config.configure({\n ...this.config,\n ...cfg,\n });\n this.setConfig(updatedConfig);\n\n this.manager.clear(this.config);\n this.manager = new DbManager(this.config);\n this.api = new Api(this.config);\n return this;\n }\n\n set databaseId(val: string | void) {\n if (val) {\n this.config.databaseId = val;\n this.api.users.databaseId = val;\n this.api.tenants.databaseId = val;\n }\n }\n\n get userId(): string | undefined | null {\n return this.config.userId;\n }\n\n set userId(userId: string | undefined | null) {\n this.databaseId = this.config.databaseId;\n\n this.config.userId = userId;\n\n if (this.api) {\n this.api.users.userId = this.config.userId;\n this.api.tenants.userId = this.config.userId;\n }\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n this.databaseId = this.config.databaseId;\n this.config.tenantId = tenantId;\n\n if (this.api) {\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n\n get token(): string | undefined | null {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined | null) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n get db(): Pool {\n return this.manager.getConnection(this.config);\n }\n\n /**\n * A utility function if you want to manage different NileDB instances yourself\n * returns the global Server object, an existing server that's already been configured,\n * or a new one if the config isn't in the cache\n */\n\n getInstance(config: ServerConfig): Server {\n const _config = { ...this.config, ...config };\n const serverId = getServerId(_config);\n const currentServerId = makeServerId(this.config);\n if (serverId === currentServerId) {\n return this;\n }\n const existing = this.servers.get(serverId);\n\n if (existing) {\n // be sure the config is up to date\n const updatedConfig = new Config(_config);\n existing.setConfig(updatedConfig);\n // propagate special config items\n existing.tenantId = updatedConfig.tenantId;\n existing.userId = updatedConfig.userId;\n existing.token = updatedConfig.api.token;\n existing.databaseId = updatedConfig.databaseId;\n return existing;\n }\n\n const newServer = new Server(_config);\n\n this.servers.set(serverId, newServer);\n\n return newServer;\n }\n}\n\nexport async function create(config?: ServerConfig): Promise<Server> {\n const server = new Server(config);\n return await server.init();\n}\n\nexport default create;\n"],"names":["Logger","config","_len","arguments","length","params","Array","_key","info","debug","_console","_len2","args","_key2","console","apply","concat","warn","_console2","_len3","_key3","error","_console3","_len4","_key4","getDatabaseId","cfg","logger","_Logger","databaseId","String","process","env","NILEDB_POSTGRES_URL","pgUrl","URL","pathname","substring","NILEDB_ID","getUsername","_Logger2","user","NILEDB_USER","getPassword","log","logProtector","_Logger3","password","NILEDB_PASSWORD","getInfoBearer","getToken","_config$api","_Logger4","api","token","_config$api2","_config$api3","NILEDB_TOKEN","undefined","getDatabaseName","_Logger5","databaseName","NILEDB_NAME","getTenantId","_Logger6","tenantId","NILEDB_TENANT","getLocal","NILEDB_LOCAL","_Logger7","apiUrl","href","getBasePath","_config$api4","_Logger8","basePath","version","test","_config$api5","_config$api$version","_config$api6","NILEDB_API_URL","Error","getControlPlane","_Logger9","NILEDB_CONFIGURE","configureUrl","getDbHost","_Logger10","db","host","NILEDB_HOST","getDbPort","_config$db","_Logger11","port","_config$db2","Number","NILEDB_PORT","ApiConfig","_ref","cookieKey","localPath","_token","_createClass","key","get","set","value","Config","_this","_config$api$cookieKey2","_config$api$version2","routePrefix","routes","_tenantId","_userId","configure","_ref2","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_envVarConfig$config","_config$api$cookieKey","envVarConfig","_ref3","dbConfig","configuredHost","configuredPort","cp","url","res","database","possibleError","json","message","_database","apiHost","dbHost","name","id","duckApiHost","dburl","wrap","_callee$","_context","prev","next","_objectWithoutPropertiesLoose","_excluded","abrupt","searchParams","fetch","headers","Authorization","sent","clone","status","t0","text","_extends","stop","_x","Boolean","userId","_ref4","_excluded2","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","startsWith","request","_x3","_request","_init","_params$method","init","updatedHeaders","_init$body","loggingRes","Headers","origin","method","body","duplex","Response","t1","t2","statusText","t3","GET","_GET","_x4","_route","matches","configRoutes","auth","_auth","req","sessionUrl","ResponseError","response","X_NILE_TENANT","X_NILE_USER_ID","getTokenFromCookie","_headers$get","cookie","split","_cookies","parts","cookieParts","_cookie","slice","_iterator2","_step2","getTenantFromHttp","cookieTenant","getUserFromHttp","_headers$get2","jwt","decodeJwt","sub","_fetch","_fetch2","opts","_response$status","basicHeaders","creds","authHeader","useableUrl","msg","_res","_res2","_res2$errors","_message","includes","replace","encodeURIComponent","t4","t5","errors","POST","_POST","session","yurl","tenant","PUT","_PUT","_URL$pathname$split$r","reverse","_yurl$pathname$split$","email","DELETE","_DELETE","_","_url$pathname$split$r","possibleTenantId","proxyRoutes","SIGNIN","PROVIDERS","SESSION","CSRF","CALLBACK","SIGNOUT","ERROR","provider","passThroughUrl","search","location","GETTER","matchesMe","me","matchesUsers","users","matchesTenantUsers","tenantUsers","matchesTenants","tenants","authRoutes","POSTER","DELETER","matchesTenantsUsers","PUTER","Handlers","getter","poster","deleter","puter","appRoutes","prefix","serverAuth","handlers","_login","_yield$csrfRes$json","_exec","sessionReq","sessionRes","providers","csrf","csrfReq","csrfRes","csrfToken","credentials","csrfCookie","signInUrl","postReq","loginRes","authCookie","Request","callbackUrl","exec","login","Requester","_Config","call","_inheritsLoose","rawRequest","_rawRequest","_headers","Object","values","_x5","_x6","_x7","_x8","post","_post","_x9","_x10","_x11","_get","_callee4","_callee4$","_context4","_x12","_x13","_x14","put","_put","_callee5","_callee5$","_context5","_x15","_x16","_x17","_delete2","_callee6","_callee6$","_context6","_delete","_x18","_x19","_x20","Tenants","createTenant","_req","_requester","tenantsUrl","handleHeaders","getTenant","tenantUrl","listTenants","tenantListUrl","_init2","_this$tenantId","_this$userId","Users","createUser","usersUrl","updateUser","listUsers","tenantUsersUrl","linkUser","tenantUsersDeleteUrl","getUserId","_ref5","unlinkUser","_ref6","_ref7","_callee7","_callee7$","_context7","meUrl","_this$tenantId2","Api","payload","Server","manager","servers","DbManager","setConfig","updatedConfig","getInstance","_config","serverId","currentServerId","newServer","_this$config","create","_create","server"],"mappings":"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"}
|