Skip to content

Documentation / @tenancy-node/core / Tenancy

Class: Tenancy ​

Defined in: core/src/tenancy.ts:339

Facade principal. Se crea con createTenancy(config).

ts
const tenancy = createTenancy({ centralDomains: ['tuapp.com'] });
await tenancy.tenants.create({ id: 'bolivar', domain: 'bolivar.tuapp.com' });
await tenancy.run('bolivar', () => tenancy.currentId()); // 'bolivar'

Constructors ​

Constructor ​

new Tenancy(config?): Tenancy

Defined in: core/src/tenancy.ts:383

Parameters ​

config? ​

TenancyConfig = {}

Returns ​

Tenancy

Properties ​

billing ​

readonly billing: BillingApi

Defined in: core/src/tenancy.ts:351

Cobros a los tenants: suscripción, facturas, pagos y pasarelas.


centralDomains ​

readonly centralDomains: readonly string[]

Defined in: core/src/tenancy.ts:357


domains ​

readonly domains: object

Defined in: core/src/tenancy.ts:341

add ​

add: (ref, domain, options?) => Promise<Domain>

Parameters ​
ref ​

TenantRef

domain ​

string

options? ​
primary? ​

boolean

Returns ​

Promise<Domain>

list ​

list: (ref) => Promise<Domain[]>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Domain[]>

remove ​

remove: (domain) => Promise<void>

Parameters ​
domain ​

string

Returns ​

Promise<void>

setPrimary ​

setPrimary: (domain) => Promise<Domain>

Parameters ​
domain ​

string

Returns ​

Promise<Domain>


events ​

readonly events: EventsApi

Defined in: core/src/tenancy.ts:343


features ​

readonly features: FeaturesApi

Defined in: core/src/tenancy.ts:346


http ​

readonly http: TenancyHttpRoutes

Defined in: core/src/tenancy.ts:356

Rutas HTTP opcionales (/tenancy/me, theme.css, assets, health). Las usan los adaptadores.


jobs ​

readonly jobs: JobsApi

Defined in: core/src/tenancy.ts:345


notifications ​

readonly notifications: NotificationsApi

Defined in: core/src/tenancy.ts:349

Avisos de la plataforma a sus tenants, con canales de entrega (Firebase...).


observability ​

readonly observability: ObservabilityApi

Defined in: core/src/tenancy.ts:344


plans ​

readonly plans: PlansApi

Defined in: core/src/tenancy.ts:347


platform ​

readonly platform: PlatformApi

Defined in: core/src/tenancy.ts:353

Marca y contacto de la plataforma (dominio central), editables desde el panel.


tenants ​

readonly tenants: object

Defined in: core/src/tenancy.ts:340

activate ​

activate: (ref) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Tenant>

create ​

create: (input) => Promise<Tenant>

Parameters ​
input ​

CreateTenantInput

Returns ​

Promise<Tenant>

delete ​

delete: (ref) => Promise<void>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<void>

find ​

find: (ref) => Promise<Tenant | undefined>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Tenant | undefined>

findOrFail ​

findOrFail: (ref) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Tenant>

invalidate ​

invalidate: (ref) => void

Olvida el tenant en la caché de búsqueda de esta instancia y, con un bus de invalidación, en las demás. Úsalo si cambiaste el tenant por fuera de tenancy.tenants.

Parameters ​
ref ​

TenantRef

Returns ​

void

list ​

list: (query?) => Promise<Page<Tenant>>

Parameters ​
query? ​

TenantListQuery

Returns ​

Promise<Page<Tenant>>

maintenance ​

maintenance: (ref, message?) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

message? ​

string | null

Returns ​

Promise<Tenant>

retryProvisioning ​

retryProvisioning: (ref) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Tenant>

suspend ​

suspend: (ref) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

Returns ​

Promise<Tenant>

update ​

update: (ref, changes) => Promise<Tenant>

Parameters ​
ref ​

TenantRef

changes ​

TenantChanges

Returns ​

Promise<Tenant>


theme ​

readonly theme: ThemeApi

Defined in: core/src/tenancy.ts:342

Methods ​

cache() ​

cache(): TenantCache

Defined in: core/src/tenancy.ts:995

Caché aislada del contexto actual (prefijo tenant:{id}:).

Returns ​

TenantCache


central() ​

central<T>(fn): Promise<T>

Defined in: core/src/tenancy.ts:954

Ejecuta fn en el contexto central aunque se esté dentro de un tenant.

Type Parameters ​

T ​

T

Parameters ​

fn ​

() => T | Promise<T>

Returns ​

Promise<T>


close() ​

close(): Promise<void>

Defined in: core/src/tenancy.ts:1212

Espera los eventos pendientes y libera los recursos del contexto raíz.

Returns ​

Promise<void>


current() ​

current(): Tenant | undefined

Defined in: core/src/tenancy.ts:927

Tenant del contexto actual, o undefined en el contexto central.

Returns ​

Tenant | undefined


currentId() ​

currentId(): string | undefined

Defined in: core/src/tenancy.ts:938

Returns ​

string | undefined


currentOrFail() ​

currentOrFail(): Tenant

Defined in: core/src/tenancy.ts:932

Tenant del contexto actual; lanza TenantNotIdentifiedError si no hay.

Returns ​

Tenant


health() ​

health(): Promise<HealthReport>

Defined in: core/src/tenancy.ts:1049

Estado de la base central, la caché, la cola y el almacenamiento (cada chequeo con límite de 3 s).

Returns ​

Promise<HealthReport>


isCentral() ​

isCentral(): boolean

Defined in: core/src/tenancy.ts:943

true fuera de cualquier tenant (dominio central, admin, scripts).

Returns ​

boolean


logRequest() ​

logRequest(context): void

Defined in: core/src/tenancy.ts:1190

Escribe la línea de log de una petición terminada (nivel según el código HTTP).

Parameters ​

context ​

RequestLogContext & object

Returns ​

void


openRequestScope() ​

openRequestScope(request, options?): Promise<TenantScope>

Defined in: core/src/tenancy.ts:1160

Resuelve el tenant de una petición y abre su contexto. Lo usan los adaptadores HTTP. Con onUnidentified: 'error' (por defecto) una petición sin tenant lanza TenantNotIdentifiedError; con 'central' se atiende en el contexto central.

Parameters ​

request ​

RequestLike

options? ​
onUnidentified? ​

"error" | "central"

Returns ​

Promise<TenantScope>


openScope() ​

openScope(tenant): Promise<TenantScope>

Defined in: core/src/tenancy.ts:1140

Abre un contexto para un tenant (o null = central). Hay que cerrarlo con scope.close(). Lo usan los adaptadores HTTP; en tu código normalmente basta con run().

Parameters ​

tenant ​

Tenant | null

Returns ​

Promise<TenantScope>


reportRequestError() ​

reportRequestError(error, context): TrackedError

Defined in: core/src/tenancy.ts:1185

Registra un error de una petición HTTP con su contexto. Lo usan los adaptadores.

Parameters ​

error ​

unknown

context ​

RequestLogContext

Returns ​

TrackedError


resolve() ​

resolve(request): Promise<Resolution>

Defined in: core/src/tenancy.ts:1124

Identifica el tenant de una petición. Los errores de estado (suspendido, mantenimiento) se lanzan.

Parameters ​

request ​

RequestLike

Returns ​

Promise<Resolution>


resource() ​

resource<T>(name): T

Defined in: core/src/tenancy.ts:1117

Recurso de un bootstrapper para el contexto actual (lo crea la primera vez).

Type Parameters ​

T ​

T

Parameters ​

name ​

string

Returns ​

T


run() ​

run<T>(tenant, fn): Promise<T>

Defined in: core/src/tenancy.ts:948

Ejecuta fn en el contexto de un tenant. Al salir, el contexto anterior vuelve solo.

Type Parameters ​

T ​

T

Parameters ​

tenant ​

Tenant | TenantRef

fn ​

() => T | Promise<T>

Returns ​

Promise<T>


runForEach() ​

runForEach(fn, options?): Promise<RunForEachResult>

Defined in: core/src/tenancy.ts:959

Recorre tenants (página por página) con concurrencia limitada.

Parameters ​

fn ​

(tenant) => unknown

options? ​

RunForEachOptions = {}

Returns ​

Promise<RunForEachResult>


storage() ​

storage(): TenantStorage

Defined in: core/src/tenancy.ts:1000

Archivos aislados del contexto actual (prefijo {id}/).

Returns ​

TenantStorage


worker() ​

worker(options?): Promise<QueueWorker>

Defined in: core/src/tenancy.ts:1010

Procesa trabajos de la cola: cada uno corre en el contexto de su tenant. Cada intento queda en el log (operation: queue.job); un trabajo que agota sus intentos se registra como error.

Parameters ​

options? ​

WorkerOptions = {}

Returns ​

Promise<QueueWorker>

Publicado bajo la licencia MIT.