@niledatabase/server 1.0.0-alpha.195

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.esm.js","sources":["../src/utils/Config.ts","../src/utils/ResponseError.ts","../src/utils/Event/index.ts","../src/utils/fetch.ts","../src/utils/Requester/index.ts","../src/auth/index.ts","../src/users/index.ts","../src/tenants/index.ts","../src/Server.ts","../src/index.ts"],"sourcesContent":["import { KnexConfig, PgConnectionConfig, ServerConfig } from '../types';\n\nclass ApiConfig {\n public cookieKey?: string;\n public basePath?: string;\n private _token?: string;\n constructor({\n basePath,\n cookieKey,\n token,\n }: {\n basePath: string;\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\nconst niledatabase_ur = 'dev.khnum.thenile.dev';\n\nexport class Config {\n database: string;\n workspace: string;\n\n db: KnexConfig;\n\n api: ApiConfig;\n\n private _tenantId?: string | undefined;\n\n public get tenantId(): string | undefined {\n return this._tenantId;\n }\n\n public set tenantId(value: string | undefined) {\n this._tenantId = value;\n }\n\n constructor(_config?: ServerConfig) {\n this.database = String(_config?.database);\n this._tenantId = _config?.tenantId;\n this.workspace = String(_config?.workspace);\n this.api = new ApiConfig({\n basePath: _config?.api?.basePath ?? `https://${niledatabase_ur}`,\n cookieKey: _config?.api?.cookieKey ?? 'token',\n token: _config?.api?.token,\n });\n\n const host: string =\n _config?.db &&\n _config.db.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'host' in _config.db.connection\n ? String(_config.db.connection.host)\n : niledatabase_ur;\n\n const port: number =\n _config?.db?.connection &&\n typeof _config.db?.connection !== 'string' &&\n 'port' in _config.db.connection\n ? Number(_config.db?.connection?.port)\n : 5432;\n\n const connection = {\n host,\n port,\n database: _config?.database,\n ...(typeof _config?.db?.connection === 'object'\n ? _config.db.connection\n : {}),\n } as PgConnectionConfig;\n\n this.db = {\n ..._config?.db,\n connection,\n };\n }\n}\n","export class ResponseError {\n response: Response;\n constructor(body?: BodyInit | null, init?: ResponseInit) {\n this.response = new Response(body, init);\n }\n}\n","type BusValues = undefined | null | string;\ntype EventFn = (params: BusValues) => void;\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\n// tenantId manager\nconst tenantEvent = new Eventer();\nexport const updateTenantId = (tenantId: BusValues) => {\n tenantEvent.publish('tenantId', tenantId);\n};\n\nexport const watchTenantId = (cb: EventFn) =>\n tenantEvent.subscribe('tenantId', cb);\n","import { ResponseError } from './ResponseError';\nimport { Config } from './Config';\nimport { NileRequest } from './Requester';\nimport { updateTenantId } from './Event';\n\nexport const X_NILE_TENANT = 'x-nile-tenantId';\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, 'tenantId');\n return cookieTenant ?? headers?.get(X_NILE_TENANT) ?? config.tenantId;\n}\n\nexport async function _fetch(\n config: Config,\n path: string,\n opts?: RequestInit\n): Promise<Response | ResponseError> {\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();\n basicHeaders.set('content-type', 'application/json; charset=utf-8');\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 {\n basicHeaders.set('Authorization', `Bearer ${config.api?.token}`);\n }\n }\n\n const tenantId = getTenantFromHttp(headers, config);\n updateTenantId(tenantId);\n\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.replace(\n '{tenantId}',\n encodeURIComponent(String(tenantId))\n );\n const response = await fetch(useableUrl, {\n ...opts,\n headers: basicHeaders,\n }).catch((e) => {\n // eslint-disable-next-line no-console\n console.log(e);\n });\n\n if (response && response.status >= 200 && response.status < 300) {\n return response;\n }\n\n let res;\n try {\n res = await (response as Response)?.json();\n } catch (e) {\n /* do the default */\n }\n if (res && 'message' in res) {\n const { message } = res;\n return new ResponseError(message, { status: 400 });\n }\n if (res && 'errors' in res) {\n const {\n errors: [message],\n } = res;\n return new ResponseError(message, { status: 400 });\n }\n\n return new ResponseError(null, {\n status: (response as Response)?.status ?? 500,\n });\n}\n","import isEmpty from 'lodash/isEmpty';\nimport isObject from 'lodash/isObject';\n\nimport { Config } from '../Config';\nimport { ResponseError } from '../ResponseError';\nimport { X_NILE_TENANT, _fetch } from '../fetch';\n\nexport { NileResponse, NileRequest } from './types';\n\ntype Methods = 'POST' | 'GET' | 'PUT';\nexport default class Requester<T> extends Config {\n constructor(config: Config) {\n super(config);\n }\n\n async rawRequest(\n method: Methods,\n url: string,\n init: RequestInit,\n body?: string\n ): Promise<Response> {\n const _init = {\n ...init,\n body,\n method,\n };\n\n const res = await _fetch(this, url, _init);\n\n if (res instanceof ResponseError) {\n return res.response;\n }\n\n return res;\n }\n\n /**\n * three optios here\n * 1) pass in headers for a server side request\n * 2) pass in the payload that matches the api\n * 3) pass in the request object sent by a browser\n * @param method\n * @param url\n * @param req\n * @param init\n * @returns\n */\n protected async request(\n method: Methods,\n url: string,\n req: T | Headers,\n init?: RequestInit\n ): Promise<Response> {\n // set the headers\n const headers = new Headers(init ? init?.headers : {});\n if (req instanceof Headers) {\n const tenantId = req.get(X_NILE_TENANT);\n const cookie = req.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n } else if (req instanceof Request) {\n // pass back the X_NILE_TENANT\n const _headers = new Headers(req?.headers);\n const tenantId = _headers.get(X_NILE_TENANT);\n const cookie = _headers.get('cookie');\n if (tenantId) {\n headers.set(X_NILE_TENANT, tenantId);\n }\n if (cookie) {\n headers.set('cookie', cookie);\n }\n }\n // default the body - may be the actual payload for the API\n let body: string | undefined = JSON.stringify(req);\n\n // comes from next/some server\n if (method === 'GET') {\n body = undefined;\n } else if (req instanceof Request) {\n body = await new Response(req.body).text();\n } else if (\n // is just headers for a GET request\n req instanceof Headers ||\n isEmpty(req) ||\n (isObject(req) && Object.values(req).length === 0)\n ) {\n body = undefined;\n }\n\n const _init = {\n ...init,\n headers,\n };\n\n return await this.rawRequest(method, url, _init, body);\n }\n\n post = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('POST', url, req, init);\n };\n\n get = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('GET', url, req, init);\n };\n\n put = async (\n req: T | Headers,\n url: string,\n init?: RequestInit\n ): Promise<Response> => {\n return await this.request('PUT', url, req, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\nimport { ResponseError } from '../utils/ResponseError';\nimport { X_NILE_TENANT, getTenantFromHttp } from '../utils/fetch';\n\nexport default class Auth extends Config {\n constructor(config: Config) {\n super(config);\n }\n get loginUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/login`;\n }\n\n login = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const headers = new Headers({ 'content-type': 'application/json' });\n const _requester = new Requester(this);\n\n const params =\n req instanceof Request\n ? new URL(req.url).searchParams\n : new URLSearchParams();\n\n const sso = params.get('sso');\n\n if (sso === 'true') {\n const providerRes = await this.listProviders(\n (req as Request).clone(),\n init\n );\n // if you have a provider, log them in\n if (\n providerRes &&\n providerRes.status >= 200 &&\n providerRes.status < 300\n ) {\n const providers = await new Response(providerRes.body).json();\n if (providers.length > 0) {\n if (providers.length > 1) {\n return new Response(JSON.stringify(providers), { status: 200 });\n // a user has to make a choice\n }\n\n // is there a way to do this? probably not.\n headers.set(X_NILE_TENANT, providers[0].tenantId);\n headers.append(\n 'set-cookie',\n `tenantId=${providers[0].tenantId}; path=/; httponly;`\n );\n // const ssoResp = await this.loginSSO(req);\n return new Response(\n JSON.stringify({\n redirectURI: `${this.api.basePath}${this.loginSSOUrl('okta')}`,\n }),\n { status: 200 }\n );\n // make it a client side redirect, because of the headers\n // if there is no provider, require a password.\n }\n }\n }\n\n const res = await _requester.post(req, this.loginUrl, init).catch((e) => {\n // eslint-disable-next-line no-console\n console.error(e);\n return e;\n });\n if (res instanceof ResponseError) {\n return res.response;\n }\n if (res && res.status >= 200 && res.status < 300) {\n const token: RestModels.LoginUserResponse = await res.json();\n const cookie = `${this.api?.cookieKey}=${token.token.jwt}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n const { tenants } = token;\n const tenant = tenants?.values();\n const tenantId = tenant?.next().value;\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n return new Response(JSON.stringify(token), { status: 200, headers });\n }\n const text = await res.text();\n return new Response(text, { status: res.status });\n };\n\n loginSSO = (redirectUrl: string) => {\n const ssoLogin = async (\n req: NileRequest<unknown>\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const headers = new Headers();\n const body = await (req as Request).formData();\n const accessToken = (await body.get('access_token')) as string;\n const tenantId = (await body.get('tenantId')) as string;\n const cookie = `${this.api?.cookieKey}=${accessToken}; path=/; samesite=lax; httponly;`;\n headers.append('set-cookie', cookie);\n headers.set(X_NILE_TENANT, tenantId);\n headers.append('set-cookie', `tenantId=${tenantId}; path=/; httponly;`);\n headers.set('Location', redirectUrl);\n return new Response(null, {\n headers,\n status: 303,\n });\n };\n return ssoLogin;\n };\n\n loginSSOUrl = (provider: string) => {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/auth/oidc/providers/${provider}/login`;\n };\n\n get signUpUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users`;\n }\n\n signUp = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return _requester.post(req, this.signUpUrl, init);\n };\n\n updateProviderUrl(providerName: string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers/${encodeURIComponent(providerName)}`;\n }\n\n get listTenantProvidersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ? encodeURIComponent(this.tenantId) : '{tenantId}'\n }/auth/oidc/providers`;\n }\n\n listTenantProviders = async (\n req: NileRequest<void | Headers>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.listTenantProvidersUrl, init);\n };\n\n createProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.post(req, this.updateProviderUrl(providerName), init);\n };\n\n updateProvider = async (\n req: NileRequest<RestModels.RegisterTenantSSORequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration> => {\n const _requester = new Requester(this);\n const providerName = 'okta';\n return _requester.put(req, this.updateProviderUrl(providerName), init);\n };\n\n providerUrl(email?: undefined | string) {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(\n this.database\n )}/tenants/auth/oidc/providers${\n email ? `?email=${encodeURIComponent(email)}` : ''\n }`;\n }\n\n listProviders = async (\n req: NileRequest<void | RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.TenantSSORegistration[]> => {\n const _requester = new Requester(this);\n let body: { email: string } | undefined;\n // this is a get. Get the email from the response body so the request is filtered.\n if (req && 'body' in req) {\n body = await new Response(req.body as BodyInit).json();\n }\n return _requester.get(req, this.providerUrl(body?.email), init);\n };\n\n getSSOCallbackUrl = (param: Headers | string) => {\n let tenantId;\n if (typeof tenantId === 'string') {\n tenantId = param;\n } else if (param instanceof Headers) {\n tenantId = getTenantFromHttp(param, this);\n }\n\n return `${this.api.basePath}/workspaces/${this.workspace}/databases/${this.database}/tenants/${tenantId}/auth/oidc/callback`;\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Users extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantUsersUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }/users`;\n }\n\n createTenantUser = async (\n req: NileRequest<RestModels.CreateBasicUserRequest>,\n init?: RequestInit\n ): NileResponse<RestModels.LoginUserResponse> => {\n const _requester = new Requester(this);\n return await _requester.post(req, this.tenantUsersUrl, init);\n };\n\n listTenantUsers = async (\n req: NileRequest<void> | Headers,\n init?: RequestInit\n ): NileResponse<RestModels.User[]> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.tenantUsersUrl, init);\n };\n\n get meUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/users/me`;\n }\n\n me = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.User> => {\n const _requester = new Requester(this);\n return await _requester.get(req, this.meUrl, init);\n };\n}\n","import { RestModels } from '@niledatabase/js';\n\nimport { Config } from '../utils/Config';\nimport Requester, { NileRequest, NileResponse } from '../utils/Requester';\n\nexport default class Tenants extends Config {\n constructor(config: Config) {\n super(config);\n }\n get tenantsUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants`;\n }\n get tenantUrl() {\n return `/workspaces/${encodeURIComponent(\n this.workspace\n )}/databases/${encodeURIComponent(this.database)}/tenants/${\n this.tenantId ?? '{tenantId}'\n }`;\n }\n\n createTenant = async (\n req: NileRequest<{ name: string }>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n\n return _requester.post(req, this.tenantsUrl, init);\n };\n\n getTenant = async (\n req: NileRequest<void>,\n init?: RequestInit\n ): NileResponse<RestModels.Tenant> => {\n const _requester = new Requester(this);\n return _requester.get(req, this.tenantUrl, init);\n };\n}\n","import { Knex } from 'knex';\n\nimport { ServerConfig } from './types';\nimport { Config } from './utils/Config';\nimport Auth from './auth';\nimport Users from './users';\nimport Tenants from './tenants';\nimport { watchTenantId } from './utils/Event';\nimport _knex from './db';\n\ntype Api = {\n auth: Auth;\n users: Users;\n tenants: Tenants;\n};\nconst init = (config: Config): [Api, Knex] => {\n const auth = new Auth(config);\n const users = new Users(config);\n const tenants = new Tenants(config);\n const dbConfig = {\n ...config.db,\n client: 'pg',\n };\n return [\n {\n auth,\n users,\n tenants,\n },\n _knex(dbConfig),\n ];\n};\n\nclass Server {\n config: Config;\n api: Api;\n db: Knex;\n\n constructor(config?: ServerConfig) {\n this.config = new Config(config);\n const [api, knex] = init(this.config);\n this.api = api;\n this.db = knex;\n\n watchTenantId((tenantId) => {\n this.tenantId = tenantId;\n });\n }\n\n setConfig(cfg: Config) {\n // if a config has changed, re init everything\n this.api = null as unknown as Api;\n this.db = null as unknown as Knex;\n const [api, knex] = init(cfg);\n this.api = api;\n this.db = knex;\n\n this.config = cfg;\n }\n\n get tenantId(): string | undefined | null {\n return this.config.tenantId;\n }\n\n set tenantId(tenantId: string | undefined | null) {\n if (tenantId) {\n this.config.tenantId = tenantId;\n if (this.api) {\n this.api.auth.tenantId = tenantId;\n this.api.users.tenantId = tenantId;\n this.api.tenants.tenantId = tenantId;\n }\n }\n }\n\n get token(): string | undefined {\n return this.config?.api?.token;\n }\n\n set token(token: string | undefined) {\n if (token) {\n this.config.api.token = token;\n if (this.api) {\n this.api.auth.api.token = token;\n this.api.users.api.token = token;\n this.api.tenants.api.token = token;\n }\n }\n }\n}\n\nconst server = new Server();\n\nexport default function Nile(config: ServerConfig) {\n server.setConfig(new Config(config as ServerConfig));\n return server;\n}\n","import { default as Server } from './Server';\n\nmodule.exports = Server;\nexport default Server;\n"],"names":["ApiConfig","_ref","basePath","cookieKey","token","_token","_createClass","key","get","set","value","niledatabase_ur","Config","_config","database","String","_tenantId","tenantId","workspace","api","_config$api$basePath","_config$api","_config$api$cookieKey","_config$api2","_config$api3","host","db","connection","_config$db","port","_config$db2","_config$db3","Number","_config$db4","_extends","_config$db5","ResponseError","body","init","response","Response","Eventer","events","_proto","prototype","publish","eventName","callbackList","_iterator","_createForOfIteratorHelperLoose","_step","done","callback","subscribe","push","tenantEvent","updateTenantId","watchTenantId","cb","X_NILE_TENANT","getTokenFromCookie","headers","cookie","_headers$get","split","_cookies","parts","cookieParts","_cookie","slice","join","name","_iterator2","_step2","getTenantFromHttp","config","cookieTenant","_fetch","_x","_x2","_x3","_fetch2","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","path","opts","_response$status","url","basicHeaders","authHeader","useableUrl","res","_res","message","_res2","_res2$errors","_message","wrap","_callee$","_context","prev","next","Headers","includes","abrupt","status","replace","encodeURIComponent","fetch","e","console","log","sent","json","t0","errors","stop","Requester","_Config","_inheritsLoose","_this","call","req","request","_ref2","_callee2","_callee2$","_context2","_x4","_x5","_x6","_ref3","_callee3","_callee3$","_context3","_x7","_x8","_x9","rawRequest","_rawRequest","_callee4","method","_init","_callee4$","_context4","_x10","_x11","_x12","_x13","_request","_callee5","_headers","_callee5$","_context5","Request","JSON","stringify","undefined","text","isEmpty","isObject","Object","values","length","_x14","_x15","_x16","_x17","Auth","_requester","params","sso","providerRes","providers","_this$api","tenants","tenant","_assertThisInitialized","URL","searchParams","URLSearchParams","listProviders","clone","append","redirectURI","loginSSOUrl","post","loginUrl","error","jwt","redirectUrl","ssoLogin","_this$api2","accessToken","formData","provider","_this$tenantId","signUpUrl","_ref4","listTenantProvidersUrl","_ref5","providerName","updateProviderUrl","_ref6","_callee6","_callee6$","_context6","put","_ref7","_callee7","_body","_callee7$","_context7","providerUrl","email","param","Users","tenantUsersUrl","meUrl","Tenants","tenantsUrl","tenantUrl","auth","users","dbConfig","client","_knex","Server","knex","setConfig","cfg","_init2","_this$config","server","Nile","module","exports"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { RestModels } from '@niledatabase/js';
2
+ import { Config } from '../utils/Config';
3
+ import { NileRequest, NileResponse } from '../utils/Requester';
4
+ export default class Tenants extends Config {
5
+ constructor(config: Config);
6
+ get tenantsUrl(): string;
7
+ get tenantUrl(): string;
8
+ createTenant: (req: NileRequest<{
9
+ name: string;
10
+ }>, init?: RequestInit | undefined) => NileResponse<RestModels.Tenant>;
11
+ getTenant: (req: NileRequest<void>, init?: RequestInit | undefined) => NileResponse<RestModels.Tenant>;
12
+ }
@@ -0,0 +1,40 @@
1
+ /// <reference types="node" />
2
+ import { ConnectionOptions } from 'tls';
3
+ import stream from 'node:stream';
4
+ import { Knex } from 'knex';
5
+ export declare type Opts = {
6
+ basePath?: string;
7
+ fetch?: typeof fetch;
8
+ };
9
+ export declare type ServerConfig = {
10
+ database: string;
11
+ tenantId?: string;
12
+ workspace: string;
13
+ db?: Knex.Config;
14
+ api?: {
15
+ basePath?: string;
16
+ cookieKey?: string;
17
+ token?: string;
18
+ };
19
+ };
20
+ export declare type KnexConfig = Knex.Config;
21
+ export declare type PgConnectionConfig = {
22
+ user?: string;
23
+ database?: string;
24
+ password?: string | (() => string | Promise<string>);
25
+ port?: number;
26
+ host?: string;
27
+ connectionString?: string;
28
+ keepAlive?: boolean;
29
+ stream?: stream.Duplex;
30
+ statement_timeout?: false | number;
31
+ parseInputDatesAsUTC?: boolean;
32
+ ssl?: boolean | ConnectionOptions;
33
+ query_timeout?: number;
34
+ keepAliveInitialDelayMillis?: number;
35
+ idle_in_transaction_session_timeout?: number;
36
+ application_name?: string;
37
+ connectionTimeoutMillis?: number;
38
+ options?: string;
39
+ expirationChecker?(): boolean;
40
+ };
@@ -0,0 +1,11 @@
1
+ import { RestModels } from '@niledatabase/js';
2
+ import { Config } from '../utils/Config';
3
+ import { NileRequest, NileResponse } from '../utils/Requester';
4
+ export default class Users extends Config {
5
+ constructor(config: Config);
6
+ get tenantUsersUrl(): string;
7
+ createTenantUser: (req: NileRequest<RestModels.CreateBasicUserRequest>, init?: RequestInit | undefined) => NileResponse<RestModels.LoginUserResponse>;
8
+ listTenantUsers: (req: NileRequest<void> | Headers, init?: RequestInit | undefined) => NileResponse<RestModels.User[]>;
9
+ get meUrl(): string;
10
+ me: (req: NileRequest<void>, init?: RequestInit | undefined) => NileResponse<RestModels.User>;
11
+ }
@@ -0,0 +1,24 @@
1
+ import { KnexConfig, ServerConfig } from '../types';
2
+ declare class ApiConfig {
3
+ cookieKey?: string;
4
+ basePath?: string;
5
+ private _token?;
6
+ constructor({ basePath, cookieKey, token, }: {
7
+ basePath: string;
8
+ cookieKey: string;
9
+ token: string | undefined;
10
+ });
11
+ get token(): string | undefined;
12
+ set token(value: string | undefined);
13
+ }
14
+ export declare class Config {
15
+ database: string;
16
+ workspace: string;
17
+ db: KnexConfig;
18
+ api: ApiConfig;
19
+ private _tenantId?;
20
+ get tenantId(): string | undefined;
21
+ set tenantId(value: string | undefined);
22
+ constructor(_config?: ServerConfig);
23
+ }
24
+ export {};
@@ -0,0 +1,5 @@
1
+ declare type BusValues = undefined | null | string;
2
+ declare type EventFn = (params: BusValues) => void;
3
+ export declare const updateTenantId: (tenantId: BusValues) => void;
4
+ export declare const watchTenantId: (cb: EventFn) => void;
5
+ export {};
@@ -0,0 +1,22 @@
1
+ import { Config } from '../Config';
2
+ export { NileResponse, NileRequest } from './types';
3
+ declare type Methods = 'POST' | 'GET' | 'PUT';
4
+ export default class Requester<T> extends Config {
5
+ constructor(config: Config);
6
+ rawRequest(method: Methods, url: string, init: RequestInit, body?: string): Promise<Response>;
7
+ /**
8
+ * three optios here
9
+ * 1) pass in headers for a server side request
10
+ * 2) pass in the payload that matches the api
11
+ * 3) pass in the request object sent by a browser
12
+ * @param method
13
+ * @param url
14
+ * @param req
15
+ * @param init
16
+ * @returns
17
+ */
18
+ protected request(method: Methods, url: string, req: T | Headers, init?: RequestInit): Promise<Response>;
19
+ post: (req: T | Headers, url: string, init?: RequestInit | undefined) => Promise<Response>;
20
+ get: (req: T | Headers, url: string, init?: RequestInit | undefined) => Promise<Response>;
21
+ put: (req: T | Headers, url: string, init?: RequestInit | undefined) => Promise<Response>;
22
+ }
@@ -0,0 +1,52 @@
1
+ import { RestModels } from '@niledatabase/js';
2
+ interface NileBody<R, B> {
3
+ readonly body: ReadableStream<Uint8Array> | null | B;
4
+ readonly bodyUsed: boolean;
5
+ arrayBuffer(): Promise<ArrayBuffer>;
6
+ blob(): Promise<Blob>;
7
+ formData(): Promise<FormData>;
8
+ json(): Promise<R>;
9
+ text(): Promise<string>;
10
+ }
11
+ interface NResponse<T> extends NileBody<T, any> {
12
+ readonly headers: Headers;
13
+ readonly ok: boolean;
14
+ readonly redirected: boolean;
15
+ readonly status: number;
16
+ readonly statusText: string;
17
+ readonly type: ResponseType;
18
+ readonly url: string;
19
+ clone(): Response;
20
+ }
21
+ interface NRequest<T> extends NileBody<any, T> {
22
+ /** Returns the cache mode associated with request, which is a string indicating how the request will interact with the browser's cache when fetching. */
23
+ readonly cache: RequestCache;
24
+ /** Returns the credentials mode associated with request, which is a string indicating whether credentials will be sent with the request always, never, or only when sent to a same-origin URL. */
25
+ readonly credentials: RequestCredentials;
26
+ /** Returns the kind of resource requested by request, e.g., "document" or "script". */
27
+ readonly destination: RequestDestination;
28
+ /** Returns a Headers object consisting of the headers associated with request. Note that headers added in the network layer by the user agent will not be accounted for in this object, e.g., the "Host" header. */
29
+ readonly headers: Headers;
30
+ /** Returns request's subresource integrity metadata, which is a cryptographic hash of the resource being fetched. Its value consists of multiple hashes separated by whitespace. [SRI] */
31
+ readonly integrity: string;
32
+ /** Returns a boolean indicating whether or not request can outlive the global in which it was created. */
33
+ readonly keepalive: boolean;
34
+ /** Returns request's HTTP method, which is "GET" by default. */
35
+ readonly method: string;
36
+ /** Returns the mode associated with request, which is a string indicating whether the request will use CORS, or will be restricted to same-origin URLs. */
37
+ readonly mode: RequestMode;
38
+ /** Returns the redirect mode associated with request, which is a string indicating how redirects for the request will be handled during fetching. A request will follow redirects by default. */
39
+ readonly redirect: RequestRedirect;
40
+ /** Returns the referrer of request. Its value can be a same-origin URL if explicitly set in init, the empty string to indicate no referrer, and "about:client" when defaulting to the global's default. This is used during fetching to determine the value of the `Referer` header of the request being made. */
41
+ readonly referrer: string;
42
+ /** Returns the referrer policy associated with request. This is used during fetching to compute the value of the request's referrer. */
43
+ readonly referrerPolicy: ReferrerPolicy;
44
+ /** Returns the signal associated with request, which is an AbortSignal object indicating whether or not request has been aborted, and its abort event handler. */
45
+ readonly signal: AbortSignal;
46
+ /** Returns the URL of request as a string. */
47
+ readonly url: string;
48
+ clone(): Request;
49
+ }
50
+ export declare type NileRequest<T> = NRequest<T> | T;
51
+ export declare type NileResponse<T> = Promise<NResponse<T & RestModels.APIError>>;
52
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare class ResponseError {
2
+ response: Response;
3
+ constructor(body?: BodyInit | null, init?: ResponseInit);
4
+ }
@@ -0,0 +1,7 @@
1
+ import { ResponseError } from './ResponseError';
2
+ import { Config } from './Config';
3
+ import { NileRequest } from './Requester';
4
+ export declare const X_NILE_TENANT = "x-nile-tenantId";
5
+ export declare function handleTenantId(req: NileRequest<any>, config: Config): ResponseError | void;
6
+ export declare function getTenantFromHttp(headers: Headers, config: Config): string | undefined;
7
+ export declare function _fetch(config: Config, path: string, opts?: RequestInit): Promise<Response | ResponseError>;
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@niledatabase/server",
3
+ "version": "1.0.0-alpha.195",
4
+ "license": "MIT",
5
+ "main": "dist/index.js",
6
+ "files": [
7
+ "dist"
8
+ ],
9
+ "engines": {
10
+ "node": ">=16.0"
11
+ },
12
+ "scripts": {
13
+ "start": "tsdx watch",
14
+ "build:spec": "yarn swagger-cli bundle openapi/index.json --outfile openapi/spec.json -r",
15
+ "build": "yarn build:spec && tsdx build --tsconfig ./tsconfig.build.json",
16
+ "test": "yarn jest",
17
+ "lint": "eslint src",
18
+ "size": "size-limit",
19
+ "analyze": "size-limit --why"
20
+ },
21
+ "prettier": {
22
+ "printWidth": 80,
23
+ "semi": true,
24
+ "singleQuote": true,
25
+ "trailingComma": "es5"
26
+ },
27
+ "author": "jrea",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/TheNileDev/nile-js.git",
31
+ "directory": "packages/server"
32
+ },
33
+ "publishConfig": {
34
+ "access": "public"
35
+ },
36
+ "size-limit": [
37
+ {
38
+ "path": "dist/server.cjs.production.min.js",
39
+ "limit": "10 KB"
40
+ },
41
+ {
42
+ "path": "dist/server.esm.js",
43
+ "limit": "10 KB"
44
+ }
45
+ ],
46
+ "devDependencies": {
47
+ "@apidevtools/swagger-cli": "^4.0.4",
48
+ "@babel/core": "^7.20.12",
49
+ "@types/jest": "^29.5.3",
50
+ "@typescript-eslint/parser": "^5.49.0",
51
+ "babel-loader": "^9.1.2",
52
+ "eslint": "^8.32.0",
53
+ "eslint-config-prettier": "^8.6.0",
54
+ "eslint-plugin-prettier": "^4.2.1",
55
+ "husky": "^8.0.3",
56
+ "jest": "^29.6.2",
57
+ "size-limit": "^8.1.2",
58
+ "ts-jest": "^29.1.1",
59
+ "tsdx": "^0.14.1",
60
+ "tslib": "^2.4.1",
61
+ "typescript": "^5.1.6"
62
+ },
63
+ "dependencies": {
64
+ "@niledatabase/js": "^1.0.0-alpha.195",
65
+ "knex": "^2.4.2",
66
+ "pg": "^8.10.0"
67
+ },
68
+ "gitHead": "1906c611a86a4e04c80f8964c1d0fd50983be4b7"
69
+ }