import { EggContextHttpClient as HttpClient, HttpClientRequestOptions, HttpClientRequestURL } from "../../lib/core/httpclient.js"; import { IService } from "../../lib/types.js"; import Response$1 from "./response.js"; import Request$1 from "./request.js"; import { Application } from "../../lib/application.js"; import Helper from "./helper.js"; import { Context as Context$1, Router } from "@eggjs/core"; import { Cookies } from "@eggjs/cookies"; import { EggLogger } from "egg-logger"; //#region src/app/extend/context.d.ts interface Cookies$1 extends Cookies { request: any; response: any; } export default class Context extends Context$1 { app: Application; request: Request$1; response: Response$1; service: IService; proxy: any; /** * Request start time * @member {Number} Context#starttime */ starttime: number; /** * Request start timer using `performance.now()` * @member {Number} Context#performanceStarttime */ performanceStarttime: number; /** * Get the current visitor's cookies. */ get cookies(): Cookies$1; /** * Get a wrapper httpclient instance contain ctx in the hold request process * * @return {HttpClient} the wrapper httpclient instance */ get httpclient(): HttpClient; /** * Alias to {@link Context#httpclient} */ get httpClient(): HttpClient; /** * Shortcut for httpclient.curl * * @function Context#curl * @param {String|Object} url - request url address. * @param {Object} [options] - options for request. * @return {Object} see {@link ContextHttpClient#curl} */ curl(url: HttpClientRequestURL, options?: HttpClientRequestOptions): ReturnType; /** * Alias to {@link Application#router} * * @member {Router} Context#router * @since 1.0.0 * @example * ```js * this.router.pathFor('post', { id: 12 }); * ``` */ get router(): Router; /** * Set router to Context, only use on EggRouter * @param {Router} val router instance */ set router(val: Router); /** * Get helper instance from {@link Application#Helper} * * @member {Helper} Context#helper * @since 1.0.0 */ get helper(): Helper; /** * Wrap app.loggers with context information, * if a custom logger is defined by naming aLogger, then you can `ctx.getLogger('aLogger')` * * @param {String} name - logger name */ getLogger(name: string): EggLogger; /** * Logger for Application * * @member {Logger} Context#logger * @since 1.0.0 * @example * ```js * this.logger.info('some request data: %j', this.request.body); * this.logger.warn('WARNING!!!!'); * ``` */ get logger(): EggLogger; /** * Logger for frameworks and plugins * * @member {Logger} Context#coreLogger * @since 1.0.0 */ get coreLogger(): EggLogger; /** * locals is an object for view, you can use `app.locals` and `ctx.locals` to set variables, * which will be used as data when view is rendering. * The difference between `app.locals` and `ctx.locals` is the context level, `app.locals` is global level, and `ctx.locals` is request level. when you get `ctx.locals`, it will merge `app.locals`. * * when you set locals, only object is available * * ```js * this.locals = { * a: 1 * }; * this.locals = { * b: 1 * }; * this.locals.c = 1; * console.log(this.locals); * { * a: 1, * b: 1, * c: 1, * }; * ``` * * `ctx.locals` has cache, it only merges `app.locals` once in one request. * * @member {Object} Context#locals */ get locals(): Record; set locals(val: Record); /** * alias to {@link Context#locals}, compatible with koa that use this variable * @member {Object} state * @see Context#locals */ get state(): Record; set state(val: Record); /** * Run async function in the background * @param {Function} scope - the first args is ctx * ```js * this.body = 'hi'; * * this.runInBackground(async ctx => { * await ctx.mysql.query(sql); * await ctx.curl(url); * }); * ``` */ runInBackground(scope: (ctx: Context) => Promise, taskName?: string): void; _runInBackground(scope: (ctx: Context) => Promise, taskName: string): Promise; /** * @member {Boolean} Context#acceptJSON * @see Request#acceptJSON * @since 1.0.0 */ get acceptJSON(): boolean; get query(): Record; /** * @member {Array} Context#queries * @see Request#queries * @since 1.0.0 */ get queries(): Record; /** * @member {string} Context#ip * @see Request#ip * @since 1.0.0 */ get ip(): string; set ip(val: string); /** * @member {Number} Context#realStatus * @see Response#realStatus * @since 1.0.0 */ get realStatus(): number; set realStatus(val: number); } //#endregion