keq 5.0.0-alpha.7 → 5.0.0-alpha.8
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/CHANGELOG.md +6 -0
- package/dist/context/execution-context.d.ts +24 -0
- package/dist/context/execution-context.d.ts.map +1 -0
- package/dist/context/index.d.ts +4 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/middleware-context.d.ts +9 -0
- package/dist/context/middleware-context.d.ts.map +1 -0
- package/dist/context/orchestrator-context.d.ts +10 -0
- package/dist/context/orchestrator-context.d.ts.map +1 -0
- package/dist/context/shared-context.d.ts +38 -0
- package/dist/context/shared-context.d.ts.map +1 -0
- package/dist/context/types/index.d.ts +6 -0
- package/dist/context/types/index.d.ts.map +1 -0
- package/dist/context/types/keq-context-data.d.ts +7 -0
- package/dist/context/types/keq-context-data.d.ts.map +1 -0
- package/dist/context/types/keq-context-emitter.d.ts +35 -0
- package/dist/context/types/keq-context-emitter.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/index.d.ts +6 -0
- package/dist/context/types/keq-context-options/index.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/keq-context-options.d.ts +5 -0
- package/dist/context/types/keq-context-options/keq-context-options.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/keq-middleware-options.d.ts +33 -0
- package/dist/context/types/keq-context-options/keq-middleware-options.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/keq-module-options.d.ts +5 -0
- package/dist/context/types/keq-context-options/keq-module-options.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/keq-resolve-with-mode.d.ts +2 -0
- package/dist/context/types/keq-context-options/keq-resolve-with-mode.d.ts.map +1 -0
- package/dist/context/types/keq-context-options/keq-retry-options.d.ts +9 -0
- package/dist/context/types/keq-context-options/keq-retry-options.d.ts.map +1 -0
- package/dist/context/types/keq-context.d.ts +17 -0
- package/dist/context/types/keq-context.d.ts.map +1 -0
- package/dist/context/types/keq-global.d.ts +7 -0
- package/dist/context/types/keq-global.d.ts.map +1 -0
- package/dist/context/utils/index.d.ts +2 -0
- package/dist/context/utils/index.d.ts.map +1 -0
- package/dist/context/utils/watch-object.d.ts +5 -0
- package/dist/context/utils/watch-object.d.ts.map +1 -0
- package/dist/exception/abort.exception.d.ts +4 -0
- package/dist/exception/abort.exception.d.ts.map +1 -0
- package/dist/exception/exception.d.ts +5 -0
- package/dist/exception/exception.d.ts.map +1 -0
- package/dist/exception/index.d.ts +6 -0
- package/dist/exception/index.d.ts.map +1 -0
- package/dist/exception/request.exception.d.ts +7 -0
- package/dist/exception/request.exception.d.ts.map +1 -0
- package/dist/exception/timeout.exception.d.ts +5 -0
- package/dist/exception/timeout.exception.d.ts.map +1 -0
- package/dist/exception/type.exception.d.ts +5 -0
- package/dist/exception/type.exception.d.ts.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1496 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1439 -0
- package/dist/index.mjs.map +1 -0
- package/dist/middleware/index.d.ts +3 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/types/index.d.ts +3 -0
- package/dist/middleware/types/index.d.ts.map +1 -0
- package/dist/middleware/types/keq-middleware.d.ts +7 -0
- package/dist/middleware/types/keq-middleware.d.ts.map +1 -0
- package/dist/middleware/types/keq-next.d.ts +2 -0
- package/dist/middleware/types/keq-next.d.ts.map +1 -0
- package/dist/middleware/utils/compose-middleware.d.ts +7 -0
- package/dist/middleware/utils/compose-middleware.d.ts.map +1 -0
- package/dist/middleware/utils/index.d.ts +2 -0
- package/dist/middleware/utils/index.d.ts.map +1 -0
- package/dist/middlewares/fetch-middleware/index.d.ts +6 -0
- package/dist/middlewares/fetch-middleware/index.d.ts.map +1 -0
- package/dist/middlewares/flow-control-middleware/abort-flow-control-middleware.d.ts +3 -0
- package/dist/middlewares/flow-control-middleware/abort-flow-control-middleware.d.ts.map +1 -0
- package/dist/middlewares/flow-control-middleware/index.d.ts +4 -0
- package/dist/middlewares/flow-control-middleware/index.d.ts.map +1 -0
- package/dist/middlewares/flow-control-middleware/serial-flow-control-middleware.d.ts +3 -0
- package/dist/middlewares/flow-control-middleware/serial-flow-control-middleware.d.ts.map +1 -0
- package/dist/middlewares/flow-control-middleware/types/keq-flow-control.d.ts +8 -0
- package/dist/middlewares/flow-control-middleware/types/keq-flow-control.d.ts.map +1 -0
- package/dist/middlewares/index.d.ts +4 -0
- package/dist/middlewares/index.d.ts.map +1 -0
- package/dist/middlewares/timeout-middleware/index.d.ts +6 -0
- package/dist/middlewares/timeout-middleware/index.d.ts.map +1 -0
- package/dist/orchestrator/executor.d.ts +12 -0
- package/dist/orchestrator/executor.d.ts.map +1 -0
- package/dist/orchestrator/index.d.ts +3 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +13 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/types/keq-middleware-context.d.ts +4 -0
- package/dist/orchestrator/types/keq-middleware-context.d.ts.map +1 -0
- package/dist/request/core.d.ts +49 -0
- package/dist/request/core.d.ts.map +1 -0
- package/dist/request/create-request.d.ts +7 -0
- package/dist/request/create-request.d.ts.map +1 -0
- package/dist/request/index.d.ts +6 -0
- package/dist/request/index.d.ts.map +1 -0
- package/dist/request/keq.d.ts +115 -0
- package/dist/request/keq.d.ts.map +1 -0
- package/dist/request/request.d.ts +74 -0
- package/dist/request/request.d.ts.map +1 -0
- package/dist/request/types/api-schema/api-schema-select.d.ts +42 -0
- package/dist/request/types/api-schema/api-schema-select.d.ts.map +1 -0
- package/dist/request/types/api-schema/api-schema.d.ts +8 -0
- package/dist/request/types/api-schema/api-schema.d.ts.map +1 -0
- package/dist/request/types/api-schema/default-operation.d.ts +18 -0
- package/dist/request/types/api-schema/default-operation.d.ts.map +1 -0
- package/dist/request/types/api-schema/extract-method-operations.d.ts +31 -0
- package/dist/request/types/api-schema/extract-method-operations.d.ts.map +1 -0
- package/dist/request/types/api-schema/index.d.ts +6 -0
- package/dist/request/types/api-schema/index.d.ts.map +1 -0
- package/dist/request/types/api-schema/operation.d.ts +16 -0
- package/dist/request/types/api-schema/operation.d.ts.map +1 -0
- package/dist/request/types/content-type.d.ts +3 -0
- package/dist/request/types/content-type.d.ts.map +1 -0
- package/dist/request/types/index.d.ts +7 -0
- package/dist/request/types/index.d.ts.map +1 -0
- package/dist/request/types/keq-attachable-file.d.ts +2 -0
- package/dist/request/types/keq-attachable-file.d.ts.map +1 -0
- package/dist/request/types/keq-param-value.d.ts +3 -0
- package/dist/request/types/keq-param-value.d.ts.map +1 -0
- package/dist/request/types/keq-query-options.d.ts +7 -0
- package/dist/request/types/keq-query-options.d.ts.map +1 -0
- package/dist/request/types/keq-query-value.d.ts +7 -0
- package/dist/request/types/keq-query-value.d.ts.map +1 -0
- package/dist/request/utils/fix-content-type.d.ts +4 -0
- package/dist/request/utils/fix-content-type.d.ts.map +1 -0
- package/dist/request/utils/get-location-id.d.ts +2 -0
- package/dist/request/utils/get-location-id.d.ts.map +1 -0
- package/dist/request/utils/index.d.ts +6 -0
- package/dist/request/utils/index.d.ts.map +1 -0
- package/dist/request/utils/intelligent-parse-response.d.ts +2 -0
- package/dist/request/utils/intelligent-parse-response.d.ts.map +1 -0
- package/dist/request/utils/merge-keq-request-body.d.ts +3 -0
- package/dist/request/utils/merge-keq-request-body.d.ts.map +1 -0
- package/dist/request/utils/query-stringify.d.ts +3 -0
- package/dist/request/utils/query-stringify.d.ts.map +1 -0
- package/dist/request-init/index.d.ts +3 -0
- package/dist/request-init/index.d.ts.map +1 -0
- package/dist/request-init/request-init.d.ts +42 -0
- package/dist/request-init/request-init.d.ts.map +1 -0
- package/dist/request-init/types/index.d.ts +3 -0
- package/dist/request-init/types/index.d.ts.map +1 -0
- package/dist/request-init/types/keq-request-body.d.ts +2 -0
- package/dist/request-init/types/keq-request-body.d.ts.map +1 -0
- package/dist/request-init/types/keq-request-method.d.ts +2 -0
- package/dist/request-init/types/keq-request-method.d.ts.map +1 -0
- package/dist/request-init/utils/clone-body.d.ts +2 -0
- package/dist/request-init/utils/clone-body.d.ts.map +1 -0
- package/dist/request-init/utils/clone-headers.d.ts +2 -0
- package/dist/request-init/utils/clone-headers.d.ts.map +1 -0
- package/dist/request-init/utils/compile-url.d.ts +3 -0
- package/dist/request-init/utils/compile-url.d.ts.map +1 -0
- package/dist/request-init/utils/index.d.ts +6 -0
- package/dist/request-init/utils/index.d.ts.map +1 -0
- package/dist/request-init/utils/to-form-data.d.ts +2 -0
- package/dist/request-init/utils/to-form-data.d.ts.map +1 -0
- package/dist/request-init/utils/to-url-search-params.d.ts +2 -0
- package/dist/request-init/utils/to-url-search-params.d.ts.map +1 -0
- package/dist/router/index.d.ts +9 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/keq-host-route.d.ts +3 -0
- package/dist/router/keq-host-route.d.ts.map +1 -0
- package/dist/router/keq-location-route.d.ts +3 -0
- package/dist/router/keq-location-route.d.ts.map +1 -0
- package/dist/router/keq-method-route.d.ts +3 -0
- package/dist/router/keq-method-route.d.ts.map +1 -0
- package/dist/router/keq-module-route.d.ts +3 -0
- package/dist/router/keq-module-route.d.ts.map +1 -0
- package/dist/router/keq-pathname-route.d.ts +3 -0
- package/dist/router/keq-pathname-route.d.ts.map +1 -0
- package/dist/router/keq-router.d.ts +13 -0
- package/dist/router/keq-router.d.ts.map +1 -0
- package/dist/router/types/index.d.ts +2 -0
- package/dist/router/types/index.d.ts.map +1 -0
- package/dist/router/types/keq-route.d.ts +3 -0
- package/dist/router/types/keq-route.d.ts.map +1 -0
- package/dist/router/utils/compose-route.d.ts +3 -0
- package/dist/router/utils/compose-route.d.ts.map +1 -0
- package/dist/router/utils/index.d.ts +2 -0
- package/dist/router/utils/index.d.ts.map +1 -0
- package/dist/types/enabled-if-string-index.d.ts +24 -0
- package/dist/types/enabled-if-string-index.d.ts.map +1 -0
- package/dist/types/exclude-unknown-properties.d.ts +19 -0
- package/dist/types/exclude-unknown-properties.d.ts.map +1 -0
- package/dist/types/index-keys.d.ts +18 -0
- package/dist/types/index-keys.d.ts.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/literal-keys.d.ts +18 -0
- package/dist/types/literal-keys.d.ts.map +1 -0
- package/dist/types/loose-nested-like.d.ts +11 -0
- package/dist/types/loose-nested-like.d.ts.map +1 -0
- package/dist/types/string-index-value-of.d.ts +18 -0
- package/dist/types/string-index-value-of.d.ts.map +1 -0
- package/dist/utils/base64.d.ts +3 -0
- package/dist/utils/base64.d.ts.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/shallow-clone.d.ts +5 -0
- package/dist/utils/shallow-clone.d.ts.map +1 -0
- package/dist/utils/sleep.d.ts +2 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/validator/index.d.ts +2 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/validator.d.ts +65 -0
- package/dist/validator/validator.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/exception/exception.ts","../src/exception/type.exception.ts","../src/exception/abort.exception.ts","../src/exception/timeout.exception.ts","../src/exception/request.exception.ts","../src/utils/base64.ts","../src/validator/validator.ts","../src/utils/shallow-clone.ts","../src/utils/sleep.ts","../src/request-init/utils/clone-body.ts","../src/request-init/utils/clone-headers.ts","../src/request-init/utils/compile-url.ts","../src/request-init/utils/to-form-data.ts","../src/request-init/utils/to-url-search-params.ts","../src/request-init/request-init.ts","../src/context/middleware-context.ts","../src/context/orchestrator-context.ts","../src/context/execution-context.ts","../src/context/shared-context.ts","../src/context/utils/watch-object.ts","../src/orchestrator/executor.ts","../src/orchestrator/orchestrator.ts","../src/request/utils/fix-content-type.ts","../src/request/utils/get-location-id.ts","../src/request/utils/intelligent-parse-response.ts","../src/request/utils/merge-keq-request-body.ts","../src/request/utils/query-stringify.ts","../src/request/core.ts","../src/request/keq.ts","../src/router/utils/compose-route.ts","../src/router/keq-host-route.ts","../src/router/keq-location-route.ts","../src/router/keq-method-route.ts","../src/router/keq-module-route.ts","../src/router/keq-pathname-route.ts","../src/middleware/utils/compose-middleware.ts","../src/router/keq-router.ts","../src/middlewares/timeout-middleware/index.ts","../src/middlewares/flow-control-middleware/serial-flow-control-middleware.ts","../src/middlewares/flow-control-middleware/abort-flow-control-middleware.ts","../src/middlewares/flow-control-middleware/index.ts","../src/middlewares/fetch-middleware/index.ts","../src/request/request.ts","../src/request/create-request.ts"],"sourcesContent":["import { CustomError } from 'ts-custom-error'\n\nexport class Exception extends CustomError {\n constructor(message?: string) {\n super(message)\n\n Object.defineProperty(this, 'name', { value: 'KeqError' })\n }\n}\n","import { Exception } from './exception.js'\n\n\nexport class TypeException extends Exception {\n constructor(msg?: string) {\n super(msg || 'Invalid Type')\n }\n}\n","export class AbortException extends DOMException {\n constructor(msg: string) {\n super(msg, 'AbortError')\n Object.setPrototypeOf(this, AbortException.prototype)\n }\n}\n","import { AbortException } from './abort.exception'\n\n\nexport class TimeoutException extends AbortException {\n constructor(msg: string) {\n super(msg)\n }\n}\n","import { Exception } from \"./exception\"\n\n\nexport class RequestException extends Exception {\n statusCode: number\n retry: boolean\n\n constructor(statusCode: number, message?: string, retry = true) {\n super(message)\n\n this.statusCode = statusCode\n this.retry = retry\n\n Object.defineProperty(this, 'name', { value: 'RequestException' })\n }\n}\n","export const base64Encode: ((str: string) => string) = globalThis.btoa || ((str: string) => Buffer.from(str).toString('base64'))\nexport const base64Decode: ((str: string) => string) = globalThis.atob || ((str: string) => Buffer.from(str, 'base64').toString('utf8'))\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * Validator 类用于类型检查\n */\nexport class Validator {\n /**\n * 检查是否为浏览器环境\n */\n static isBrowser(): boolean {\n return typeof window !== 'undefined'\n }\n\n /**\n * 检查是否为字符串\n */\n static isString(value: any): boolean {\n return typeof value === 'string'\n }\n\n /**\n * 检查是否为对象\n */\n static isObject(value: any): value is Exclude<object, null> {\n return typeof value === 'object' && value !== null\n }\n\n /**\n * 检查是否为函数\n */\n static isFunction(value: any): boolean {\n return typeof value === 'function'\n }\n\n /**\n * 检查是否为 ArrayBuffer\n */\n static isArrayBuffer(body: any): body is ArrayBuffer {\n return body instanceof ArrayBuffer\n }\n\n /**\n * 检查是否为 ReadableStream\n */\n static isReadableStream(body: any): body is ReadableStream {\n return body instanceof ReadableStream\n }\n\n /**\n * 检查是否为 Blob 或 File 类对象\n */\n static isBlob(value: any): value is Blob {\n if (value instanceof Blob) return true\n\n const names = ['Blob', 'File']\n\n return Validator.isObject(value)\n && Validator.isString(value['type'])\n && Validator.isFunction(value['arrayBuffer'])\n && Validator.isFunction(value['stream'])\n && Validator.isFunction(value.constructor)\n && names.includes(value.constructor.name)\n && 'size' in value\n }\n\n /**\n * 检查是否为 File\n */\n static isFile(object: any): object is File {\n if (Validator.isBrowser()) return object instanceof Blob\n\n return Validator.isBlob(object)\n }\n\n /**\n * 检查是否为 Buffer\n */\n static isBuffer(obj: any): obj is Buffer {\n return Validator.isBrowser() ? false : Buffer.isBuffer(obj)\n }\n\n /**\n * 检查是否为 FormData\n */\n static isFormData(object: any): object is FormData {\n if (object instanceof FormData) return true\n\n return (\n Validator.isObject(object)\n && Validator.isFunction(object['append'])\n && Validator.isFunction(object['delete'])\n && Validator.isFunction(object['get'])\n && Validator.isFunction(object['getAll'])\n && Validator.isFunction(object['has'])\n && Validator.isFunction(object['set'])\n && Validator.isFunction(object['entries'])\n && Validator.isFunction(object['keys'])\n && Validator.isFunction(object['values'])\n )\n }\n\n /**\n * 检查是否为 Headers\n */\n static isHeaders(obj: any): obj is Headers {\n if (obj instanceof Headers) return true\n\n if (\n Validator.isObject(obj)\n && Validator.isFunction(obj['forEach'])\n && Validator.isFunction(obj['get'])\n && Validator.isFunction(obj['has'])\n && Validator.isFunction(obj['set'])\n && Validator.isFunction(obj['append'])\n && Validator.isFunction(obj['delete'])\n && Validator.isFunction(obj['entries'])\n && Validator.isFunction(obj['keys'])\n && Validator.isFunction(obj['values'])\n ) {\n return true\n }\n\n return false\n }\n\n /**\n * 检查是否为 URLSearchParams\n */\n static isUrlSearchParams(obj: any): obj is URLSearchParams {\n if (obj instanceof URLSearchParams) return true\n\n return (\n Validator.isObject(obj)\n && Validator.isFunction(obj['append'])\n && Validator.isFunction(obj['delete'])\n && Validator.isFunction(obj['entries'])\n && Validator.isFunction(obj['forEach'])\n && Validator.isFunction(obj['get'])\n && Validator.isFunction(obj['getAll'])\n && Validator.isFunction(obj['has'])\n && Validator.isFunction(obj['keys'])\n && Validator.isFunction(obj['set'])\n && Validator.isFunction(obj['values'])\n && Validator.isFunction(obj['sort'])\n && Validator.isFunction(obj['toString'])\n )\n }\n\n /**\n * 检查是否为合法的 Header 值\n * 允许范围: HTAB(\\t), 0x20-0x7E, 0x80-0xFF\n * 禁止换行等控制字符\n */\n static isHeaderValue(str: any): boolean {\n const regex = /^[\\t\\x20-\\x7E\\x80-\\xFF]*$/\n return regex.test(String(str))\n }\n\n /**\n * 检查是否为 BodyInit 类型\n * BodyInit 包括: Blob | ArrayBuffer | TypedArray | DataView | FormData | URLSearchParams | ReadableStream | string\n */\n static isBodyInit(value: any): value is BodyInit {\n if (value === null || value === undefined) return false\n\n return (\n Validator.isString(value)\n || Validator.isBlob(value)\n || Validator.isArrayBuffer(value)\n || Validator.isFormData(value)\n || Validator.isUrlSearchParams(value)\n || Validator.isReadableStream(value)\n || Validator.isBuffer(value)\n // TypedArray or DataView\n || ArrayBuffer.isView(value)\n )\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Validator } from '~/validator/index.js'\n\n\n/**\n * @description 浅拷贝\n */\nexport function shallowClone<T = any>(obj: T): T {\n if (Array.isArray(obj)) {\n return [...obj] as T\n }\n\n if (Validator.isObject(obj)) {\n return { ...obj }\n }\n\n return obj\n}\n","export function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms))\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Validator } from '~/validator/index.js'\n\n\nexport function cloneBody<T>(obj: T): T {\n if (Validator.isFormData(obj)) {\n const formData = new FormData()\n for (const [key, value] of obj.entries()) {\n formData.append(key, value)\n }\n return formData as unknown as T\n }\n\n if (Validator.isUrlSearchParams(obj)) {\n const urlSearchParams = new URLSearchParams()\n for (const [key, value] of obj.entries()) {\n urlSearchParams.append(key, value)\n }\n return urlSearchParams as unknown as T\n }\n\n if (Validator.isFile(obj)) {\n return obj\n }\n\n if (Validator.isBlob(obj)) {\n return obj\n }\n\n if (Validator.isBuffer(obj)) {\n return obj\n }\n\n if (obj === null) {\n return null as T\n }\n\n if (Array.isArray(obj)) {\n return obj.map(cloneBody) as unknown as T\n }\n\n if (Validator.isObject(obj)) {\n const cloned: any = {}\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n cloned[key] = cloneBody(obj[key])\n }\n }\n return cloned\n }\n\n return obj\n}\n","export function cloneHeaders(headers: Headers): Headers {\n const cloned = new Headers()\n for (const [key, value] of headers.entries()) {\n cloned.append(key, value)\n }\n\n return cloned\n}\n","import { UriTemplateContext, UriTemplateParser } from '@opendoc/uri-template'\n\n\nexport function compileUrl(obj: string | URL, routeParams: UriTemplateContext): URL {\n const url = new URL(typeof obj === 'string' ? obj : obj.href)\n\n url.pathname = new UriTemplateParser(\n decodeURIComponent(url.pathname),\n routeParams,\n ).expand()\n\n return url\n}\n","export function toFormData(body: object): FormData {\n const form = new FormData()\n\n for (const [key, value] of Object.entries(body)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n form.append(key, v)\n }\n } else {\n form.append(key, value)\n }\n }\n\n return form\n}\n","export function toUrlSearchParams(body: object): URLSearchParams {\n const params = new URLSearchParams()\n Object.entries(body).map(([key, value]) => {\n if (Array.isArray(value)) {\n for (const v of value) {\n params.append(key, v)\n }\n } else {\n params.append(key, value)\n }\n })\n\n return params\n}\n","import { UriTemplateContext } from '@opendoc/uri-template'\nimport { shallowClone } from '~/utils/shallow-clone.js'\nimport { Validator } from '~/validator/index.js'\nimport { Exception } from '~/exception/exception.js'\nimport { KeqRequestMethod, KeqRequestBody } from './types/index.js'\nimport {\n toUrlSearchParams,\n toFormData,\n cloneBody,\n cloneHeaders,\n compileUrl,\n} from './utils/index.js'\n\nexport interface KeqRequestInitOptions {\n url: URL\n routeParams: UriTemplateContext\n method: KeqRequestMethod\n headers: Headers\n body: KeqRequestBody\n cache?: RequestCache\n credentials?: RequestCredentials\n integrity?: string\n keepalive?: boolean\n mode?: RequestMode\n redirect?: RequestRedirect\n referrer?: string\n referrerPolicy?: ReferrerPolicy\n}\n\nexport class KeqRequestInit {\n url: URL\n routeParams: UriTemplateContext\n\n method: KeqRequestMethod\n headers: Headers\n body: KeqRequestBody\n cache?: RequestCache\n credentials?: RequestCredentials\n integrity?: string\n keepalive?: boolean\n mode?: RequestMode\n redirect?: RequestRedirect\n referrer?: string\n referrerPolicy?: ReferrerPolicy\n\n private readonly __abortController__: AbortController = new AbortController()\n\n constructor(options: KeqRequestInitOptions) {\n this.url = new URL(options.url.href)\n this.routeParams = shallowClone(options.routeParams)\n this.method = options.method\n this.headers = cloneHeaders(options.headers)\n this.body = cloneBody(options.body)\n this.cache = options.cache\n this.credentials = options.credentials\n this.integrity = options.integrity\n this.keepalive = options.keepalive\n this.mode = options.mode\n this.redirect = options.redirect\n this.referrer = options.referrer\n this.referrerPolicy = options.referrerPolicy\n }\n\n // the url merged routeParams\n get __url__(): Readonly<URL> {\n return compileUrl(this.url, this.routeParams)\n }\n\n get signal(): AbortSignal {\n return this.__abortController__.signal\n }\n\n abort(reason: any): void {\n if (!this.__abortController__.signal.aborted) {\n this.__abortController__.abort(reason)\n }\n }\n\n clone(): KeqRequestInit {\n return new KeqRequestInit({\n url: this.url,\n routeParams: this.routeParams,\n method: this.method,\n headers: this.headers,\n body: this.body,\n cache: this.cache,\n credentials: this.credentials,\n integrity: this.integrity,\n keepalive: this.keepalive,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n })\n }\n\n\n private getContentType(): string | undefined {\n const contentType = this.headers.get('Content-Type')\n if (contentType) return contentType\n if (!this.body) return undefined\n\n if (Validator.isFormData(this.body)) return 'multipart/form-data'\n if (Validator.isUrlSearchParams(this.body)) return 'application/x-www-form-urlencoded'\n if (Validator.isArrayBuffer(this.body)) return 'application/octet-stream'\n if (typeof this.body === 'object') return 'application/json'\n\n return undefined\n }\n\n private toFetchBody(contentType: string | undefined): RequestInit['body'] {\n const body = this.body\n if (body === undefined) return\n if (body === null) return null\n if (Validator.isBodyInit(body)) return body\n\n if (!contentType || contentType === 'application/json') {\n return JSON.stringify(body)\n }\n\n if (contentType === 'application/x-www-form-urlencoded') {\n if (Array.isArray(body)) {\n throw new Exception('request.body is an array, that cannot be serialized as application/x-www-form-urlencoded format')\n }\n\n return toUrlSearchParams(body)\n }\n\n if (contentType === 'multipart/form-data') {\n if (Array.isArray(body)) {\n throw new Exception('FormData cannot send array')\n }\n\n return toFormData(body)\n }\n\n throw new Exception(`Cannot auto serialize request.body with Content-Type: ${contentType}`)\n }\n\n toFetchArguments(): [string, RequestInit] {\n const contentType = this.getContentType()\n const headers = cloneHeaders(this.headers)\n if (contentType) headers.set('Content-Type', contentType)\n\n const body = this.toFetchBody(contentType)\n if (contentType === 'multipart/form-data') {\n headers.delete('Content-Type')\n }\n\n const requestInit: RequestInit = {\n method: this.method.toUpperCase(),\n headers,\n body,\n cache: this.cache,\n credentials: this.credentials,\n integrity: this.integrity,\n keepalive: this.keepalive,\n mode: this.mode,\n redirect: this.redirect,\n referrer: this.referrer,\n referrerPolicy: this.referrerPolicy,\n signal: this.signal,\n }\n\n return [this.__url__.href, requestInit]\n }\n}\n","import { KeqMiddlewareExecutor } from '../orchestrator/executor'\n\nexport class KeqMiddlewareContext {\n private readonly __executor__: KeqMiddlewareExecutor\n constructor(executor: KeqMiddlewareExecutor) {\n this.__executor__ = executor\n }\n\n get name(): string {\n return this.__executor__.name\n }\n\n get status(): KeqMiddlewareExecutor['status'] {\n return this.__executor__.status\n }\n\n get finished(): boolean {\n return this.status === 'fulfilled' || this.status === 'rejected'\n }\n}\n","import type { KeqMiddlewareOrchestrator } from '~/orchestrator/index.js'\nimport { KeqMiddlewareContext } from './middleware-context'\n\n\nexport class KeqOrchestratorContext {\n private readonly __middlewares__: KeqMiddlewareContext[]\n private readonly __orchestrator__: KeqMiddlewareOrchestrator\n\n constructor(orchestrator: KeqMiddlewareOrchestrator) {\n this.__middlewares__ = orchestrator.executors.map((exe) => new KeqMiddlewareContext(exe))\n this.__orchestrator__ = orchestrator\n }\n\n get middlewares(): KeqMiddlewareContext[] {\n return this.__middlewares__\n }\n\n fork(): KeqMiddlewareOrchestrator {\n return this.__orchestrator__.fork()\n }\n}\n","import { KeqMiddlewareOrchestrator } from '~/orchestrator/index.js'\nimport { KeqRequestInit } from '~/request-init/index.js'\nimport { KeqOrchestratorContext } from './orchestrator-context.js'\nimport type {\n KeqContext,\n KeqContextData,\n KeqContextEmitter,\n KeqContextOptions,\n KeqGlobal,\n} from './types/index.js'\n\n\nexport class KeqExecutionContext implements KeqContext {\n private readonly __orchestrator__: KeqMiddlewareOrchestrator\n private readonly __orchestrator_context__: KeqOrchestratorContext\n\n\n constructor(orchestrator: KeqMiddlewareOrchestrator) {\n this.__orchestrator__ = orchestrator\n this.__orchestrator_context__ = new KeqOrchestratorContext(orchestrator)\n }\n\n get orchestration(): KeqOrchestratorContext {\n return this.__orchestrator_context__\n }\n\n /**\n * The unique identifier of the request's location in the code\n */\n get locationId(): string | undefined {\n return this.__orchestrator__.context.locationId\n }\n\n get request(): KeqRequestInit {\n return this.__orchestrator__.context.request\n }\n\n get global(): KeqGlobal {\n return this.__orchestrator__.context.global\n }\n\n get emitter(): KeqContextEmitter {\n return this.__orchestrator__.context.emitter\n }\n\n get options(): KeqContextOptions {\n return this.__orchestrator__.context.options\n }\n\n // The result get by user if resolveWith is set to 'intelligent' or not set\n set output(value: any) {\n if (this.options.resolveWith && this.options.resolveWith !== 'intelligent') {\n console.warn(`The request is configured to resolve with ${this.options.resolveWith}, so setting context.output maybe no effect.`)\n }\n this.__orchestrator__.context.output = value\n }\n\n // The original response\n get res(): Response | undefined {\n return this.__orchestrator__.context.res\n }\n\n // The original response\n set res(value: Response | undefined) {\n this.__orchestrator__.context.res = value\n }\n\n // The request response\n get response(): Response | undefined {\n return this.__orchestrator__.context.response\n }\n\n // The properties extends by middleware\n get data(): KeqContextData {\n return this.__orchestrator__.context.data\n }\n}\n","import { klona } from 'klona/full'\nimport mitt from 'mitt'\nimport {\n KeqRequestInit,\n KeqRequestInitOptions,\n} from '~/request-init/index.js'\nimport { shallowClone } from '~/utils/shallow-clone.js'\nimport { watchObject } from './utils'\nimport type {\n KeqContext,\n KeqContextOptions,\n KeqContextEmitter,\n KeqContextData,\n KeqGlobal,\n KeqEvents,\n} from './types/index.js'\n\nexport interface KeqSharedContextOptions {\n locationId?: string\n request: KeqRequestInitOptions\n global: KeqGlobal\n options?: KeqContextOptions\n data?: KeqContextData\n emitter?: KeqContextEmitter\n}\n\n\nexport class KeqSharedContext implements KeqContext {\n private readonly __locationId__?: string\n\n private readonly __request__: KeqRequestInit\n private readonly __global__: Record<string, any>\n private readonly __emitter__: KeqContextEmitter\n private readonly __options__: KeqContextOptions\n\n // The properties extends by middleware\n private readonly __data__: KeqContextData = {}\n\n private __output__?: any\n\n /**\n * original response\n */\n res?: Response\n\n constructor(options: KeqSharedContextOptions) {\n this.__locationId__ = options.locationId\n\n this.__request__ = watchObject(new KeqRequestInit(options.request), {\n abort: (target, thisArg, argArray) => {\n this.__emitter__.emit('abort', { context: this, reason: argArray[0] })\n },\n })\n\n this.__emitter__ = options.emitter || mitt<Omit<KeqEvents, never>>()\n this.__global__ = options.global\n this.__options__ = options.options ? shallowClone(options.options) : {}\n this.__data__ = options.data || {}\n }\n\n /**\n * The unique identifier of the request's location in the code\n */\n get locationId(): string | undefined {\n return this.__locationId__\n }\n\n get request(): KeqRequestInit {\n return this.__request__\n }\n\n get global(): KeqGlobal {\n return this.__global__\n }\n\n get emitter(): KeqContextEmitter {\n return this.__emitter__\n }\n\n get options(): KeqContextOptions {\n return this.__options__\n }\n\n set output(value: any) {\n this.__output__ = value\n }\n\n get output(): any {\n return this.__output__ as unknown\n }\n\n get response(): Response | undefined {\n if (!this.res) return undefined\n\n return new Proxy(this.res, {\n get(res, prop) {\n if (typeof prop === 'string') {\n if (['json', 'text', 'arrayBuffer', 'blob', 'buffer', 'formData'].includes(prop)) {\n /**\n * clone when invoking body, json, text, arrayBuffer, blob, buffer, formData\n * to avoid time-consuming cloning\n */\n return new Proxy(res[prop], {\n apply(target, thisArg, argArray) {\n const mirror = res.clone()\n return mirror[prop](...argArray) as unknown\n },\n }) as unknown\n }\n\n if (prop === 'body') {\n const mirror = res.clone()\n return mirror.body\n }\n }\n\n if (typeof res[prop] === 'function') {\n return res[prop].bind(res) as unknown\n }\n\n return res[prop] as unknown\n },\n })\n }\n\n get data(): KeqContextData {\n return this.__data__\n }\n\n clone(): KeqSharedContext {\n const context = new KeqSharedContext({\n locationId: this.__locationId__,\n request: this.__request__.clone(),\n global: this.__global__,\n options: klona(this.__options__),\n data: klona(this.__data__),\n emitter: this.__emitter__,\n })\n\n this.__emitter__.all.forEach((handler, type) => {\n context.emitter.on(type as any, handler as any)\n })\n\n return context\n }\n}\n\n\n","/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport { ConditionalPick } from 'type-fest'\n\n\ntype Watcher = (target: any, thisArg: any, argArray: any[]) => void\n\nexport function watchObject<T extends object>(obj: T, listeners: Partial<Record<keyof ConditionalPick<T, Function>, Watcher>>): T {\n return new Proxy(obj, {\n get(target, prop) {\n if (prop in listeners) {\n return new Proxy(target[prop], {\n apply(target: Function, thisArg, argArray) {\n const listener: Function = listeners[prop]\n listener(target, thisArg, argArray)\n return target.apply(thisArg, argArray)\n },\n })\n }\n\n return target[prop]\n },\n })\n}\n","import { Exception } from '~/exception/index.js'\nimport { KeqExecutionContext } from '~/context/index.js'\nimport { KeqNext } from '~/middleware/types/keq-next.js'\nimport { KeqMiddleware } from '~/middleware/index.js'\n\nexport class KeqMiddlewareExecutor {\n readonly name: string\n status: 'idle' | 'pending' | 'fulfilled' | 'rejected' = 'idle'\n\n constructor(\n public readonly middleware: KeqMiddleware,\n ) {\n this.name = middleware.__keqMiddlewareName__ || middleware.name\n }\n\n async execute(context: KeqExecutionContext, next: KeqNext): Promise<void> {\n if (this.status !== 'idle') {\n throw new Exception(`Middleware \"${this.name}\" has already been executed.`)\n }\n\n try {\n this.status = 'pending'\n await context.emitter.emit('middleware:before', { context })\n await this.middleware(context, next)\n await context.emitter.emit('middleware:after', { context })\n this.status = 'fulfilled'\n } catch (error) {\n this.status = 'rejected'\n throw error\n }\n }\n\n fork(): KeqMiddlewareExecutor {\n const executor = new KeqMiddlewareExecutor(this.middleware)\n executor.status = this.status\n return executor\n }\n}\n","import { Exception } from '~/exception/index.js'\nimport { KeqExecutionContext, KeqSharedContext } from '~/context/index.js'\nimport { KeqMiddleware } from '~/middleware/index.js'\nimport { KeqMiddlewareExecutor } from './executor.js'\n\n\nexport class KeqMiddlewareOrchestrator {\n status: 'idle' | 'pending' | 'fulfilled' | 'rejected' = 'idle'\n context: KeqSharedContext\n executors: KeqMiddlewareExecutor[] = []\n\n constructor(\n context: KeqSharedContext,\n middlewares: KeqMiddleware[] = [],\n ) {\n this.context = context\n this.executors = middlewares.map((mw) => new KeqMiddlewareExecutor(mw))\n }\n\n private async run(): Promise<void> {\n const context = new KeqExecutionContext(this)\n\n const dispatch = async (i: number): Promise<void> => {\n if (i >= this.executors.length) {\n return\n }\n\n const executor = this.executors[i]\n await executor.execute(context, function next() {\n return dispatch(i + 1)\n })\n }\n\n await dispatch(0)\n }\n\n async execute(): Promise<void> {\n if (this.status !== 'idle') {\n throw new Exception('Orchestrator has already been executed.')\n }\n\n this.status = 'pending'\n\n try {\n await this.run()\n this.status = 'fulfilled'\n } catch (error) {\n this.status = 'rejected'\n throw error\n }\n }\n\n fork(): KeqMiddlewareOrchestrator {\n const context = this.context.clone()\n const middlewares = this.executors\n .filter((executor) => executor.status === 'idle')\n .map((executor) => executor.middleware)\n\n const forkedOrchestrator = new KeqMiddlewareOrchestrator(context, middlewares)\n return forkedOrchestrator\n }\n}\n","import type { ShorthandContentType } from '~/request/types/content-type.js'\n\n\nexport function fixContentType(contentType: ShorthandContentType): string\nexport function fixContentType(contentType: string): string\nexport function fixContentType(contentType: string): string {\n if (['json', 'xml'].includes(contentType)) {\n return `application/${contentType}`\n } else if (['html', 'css'].includes(contentType)) {\n return `text/${contentType}`\n } else if (['form-data'].includes(contentType)) {\n return `multipart/${contentType}`\n } else if (['jpeg', 'bmp', 'apng', 'gif', 'x-icon', 'png', 'webp', 'tiff'].includes(contentType)) {\n return `image/${contentType}`\n } else if (contentType === 'form') {\n return 'application/x-www-form-urlencoded'\n } else if (contentType === 'svg') {\n return 'image/svg+xml'\n }\n return contentType\n}\n","export function getLocationId(depth = 0): string {\n const err = new Error()\n if (!err.stack) return ''\n\n const stackLine = err.stack.split('\\n')[depth + 2]\n\n return stackLine.trim()\n}\n","export async function intelligentParseResponse<T>(response?: Response): Promise<T> {\n if (!response) return undefined as T\n\n if (response.status === 204) {\n // 204: NO CONTENT\n return undefined as T\n }\n\n const contentType = response.headers.get('content-type') || ''\n try {\n if (contentType.includes('application/json')) {\n return await response.json() as T\n } else if (contentType.includes('multipart/form-data')) {\n return await response.formData() as T\n } else if (contentType.includes('plain/text')) {\n return await response.text() as T\n }\n } catch (e) {\n console.warn('Failed to auto parse response body', e)\n }\n\n /**\n * Unable to parse response body\n * Return undefined\n * Enable users to discover the problem\n * And modify the method of parsing response\n */\n return undefined as T\n}\n","\nimport { Validator } from '~/validator/index.js'\nimport { Exception } from '~/exception/index.js'\nimport { KeqRequestBody } from '~/request-init/index.js'\n\n\nexport function mergeKeqRequestBody(left: KeqRequestBody, right: KeqRequestBody): KeqRequestBody {\n if (right === undefined) return left\n\n if (typeof right === 'number') {\n throw new TypeError('Cannot set request body to a number.')\n }\n\n if (\n left === null\n || right === null\n || Validator.isBuffer(right)\n || Validator.isArrayBuffer(right)\n || Validator.isBlob(right)\n || Validator.isReadableStream(right)\n || Validator.isBuffer(left)\n || Validator.isArrayBuffer(left)\n || Validator.isBlob(left)\n || Validator.isReadableStream(left)\n || Array.isArray(left)\n || Array.isArray(right)\n || (typeof left !== 'object' && left !== undefined)\n || typeof right !== 'object'\n ) {\n return Array.isArray(right) ? [...right] : right\n }\n\n const result = left || {}\n\n if (Validator.isUrlSearchParams(right)) {\n const keys = right.keys()\n for (const key of keys) {\n const values = right.getAll(key)\n if (values.length === 1) {\n result[key] = values[0]\n } else if (values.length > 1) {\n result[key] = values\n }\n }\n } else if (Validator.isFormData(right)) {\n const keys = right.keys()\n for (const key of keys) {\n const values = right.getAll(key)\n if (values.length === 1) {\n result[key] = values[0]\n } else if (values.length > 1) {\n result[key] = values\n }\n }\n } else if (typeof right === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n for (const key in (right as any)) {\n result[key] = right[key]\n }\n } else {\n throw new Exception(`Not support request body type: ${typeof right}`)\n }\n\n return result\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport qs, { IStringifyOptions } from 'qs'\nimport { KeqQueryObject, KeqQueryOptions, KeqQueryValue } from '../types'\n\nfunction normalize(value: KeqQueryValue, options?: KeqQueryOptions): KeqQueryValue {\n if (Array.isArray(value)) {\n return value.map((v) => normalize(v, options))\n }\n\n if (typeof value === 'bigint') {\n return value.toString()\n }\n\n if (typeof value === 'object' && value !== null) {\n const obj = { ...value }\n for (const key of Object.keys(obj)) {\n obj[key] = normalize(obj[key], options)\n }\n\n return obj\n }\n\n\n return value\n}\n\nexport function queryStringify(query: KeqQueryObject, options?: KeqQueryOptions): string {\n const value = normalize(query, options)\n\n const opts: IStringifyOptions = {}\n\n\n if (options?.allowDots !== undefined) {\n opts.allowDots = options.allowDots\n // if (options.encodeDotInKeys !== undefined) {\n // opts.encodeDotInKeys = options.encodeDotInKeys as any\n // }\n }\n\n if (options?.indices !== undefined) {\n opts.indices = options.indices\n }\n\n if (options?.arrayFormat === 'pipe') {\n opts.filter = (_, val) => {\n if (Array.isArray(val)) return val.join('|')\n return val\n }\n } else if (options?.arrayFormat === 'space') {\n opts.filter = (_, val) => {\n if (Array.isArray(val)) return val.join(' ')\n return val\n }\n } else if (options?.arrayFormat) {\n opts.arrayFormat = options.arrayFormat\n }\n\n return qs.stringify(value, opts)\n}\n","import { KeqEvents, KeqGlobal, KeqListeners, KeqMiddlewareOptionsParameter, KeqMiddlewareOptionsReturnType } from '~/context/index.js'\nimport { Exception, RequestException } from '~/exception/index.js'\nimport { sleep } from '~/utils/index.js'\nimport { KeqRequestInit } from '~/request-init/index.js'\nimport { KeqSharedContext, KeqContextOptions } from '~/context/index.js'\nimport { KeqMiddlewareOrchestrator } from '~/orchestrator/index.js'\nimport { KeqMiddleware } from '~/middleware/index.js'\nimport { intelligentParseResponse } from './utils/index.js'\nimport { KeqDefaultOperation, KeqOperation, KeqQueryOptions } from './types/index.js'\n\n\nexport type KeqOptions = Partial<Omit<KeqRequestInit, 'url' | '__url__' | 'signal' | 'abort' | 'clone'>> & {\n locationId?: string\n global?: KeqGlobal\n qs?: KeqQueryOptions\n}\n\n/**\n * Core class that provides the foundational structure for managing middlewares, events, and request execution.\n */\nexport class Core<\n OP extends KeqOperation = KeqDefaultOperation,\n RES_BODY extends KeqOperation['responseBody'] = OP['responseBody'],\n> {\n /**\n * The unique identifier of the request's location in the code\n */\n __locationId__?: string\n\n private requestPromise?: Promise<RES_BODY>\n\n protected requestInit: KeqRequestInit\n\n protected __listeners__: KeqListeners = {}\n\n protected __global__: Record<string, any>\n protected __prepend_middlewares__: KeqMiddleware[] = []\n protected __append_middlewares__: KeqMiddleware[] = []\n protected __qs__: KeqQueryOptions | undefined\n\n protected get __middlewares__(): KeqMiddleware[] {\n return [...this.__prepend_middlewares__, ...this.__append_middlewares__]\n }\n\n protected __options__: KeqContextOptions = {\n resolveWithFullResponse: false,\n resolveWith: 'intelligent',\n }\n\n public constructor(url: URL, options: KeqOptions) {\n this.__global__ = options.global || {}\n this.__locationId__ = options.locationId\n this.__qs__ = options.qs\n\n this.requestInit = new KeqRequestInit({\n method: 'get',\n headers: new Headers(),\n routeParams: {},\n body: undefined,\n ...options,\n url: new URL(url.href),\n })\n }\n\n prependMiddlewares(...middlewares: KeqMiddleware[]): this {\n this.__prepend_middlewares__.push(...middlewares)\n return this\n }\n\n appendMiddlewares(...middlewares: KeqMiddleware[]): this {\n this.__append_middlewares__.unshift(...middlewares)\n return this\n }\n\n use(...middlewares: KeqMiddleware[]): this {\n return this.prependMiddlewares(...middlewares)\n }\n\n on<K extends keyof KeqEvents>(event: K, listener: (data: KeqEvents[K]) => void): this {\n this.__listeners__[event] = this.__listeners__[event] || []\n this.__listeners__[event]!.push(listener)\n return this\n }\n\n option<K extends keyof KeqMiddlewareOptionsReturnType<OP>>(key: K, value?: KeqMiddlewareOptionsParameter[K]): KeqMiddlewareOptionsReturnType<OP>[K]\n option(key: string, value?: any): this\n option(key: string, value: any = true): this {\n this.__options__[key] = value\n return this\n }\n\n options(opts: KeqContextOptions): this {\n for (const [key, value] of Object.entries(opts)) {\n this.__options__[key] = value\n }\n return this\n }\n\n\n private buildSharedContext(): KeqSharedContext {\n const coreContext = new KeqSharedContext({\n locationId: this.__locationId__,\n request: this.requestInit,\n global: this.__global__,\n options: this.__options__,\n })\n\n for (const eventName in this.__listeners__) {\n const listeners = this.__listeners__[eventName]\n for (const listener of listeners) {\n coreContext.emitter.on(eventName as keyof KeqEvents, listener)\n }\n }\n\n return coreContext\n }\n\n private async run(): Promise<KeqSharedContext> {\n // const middleware = composeMiddleware([...this.__prepend_middlewares__, ...this.__append_middlewares__], { name: 'root' })\n\n\n let attempt: number | undefined\n\n while (true) {\n const attemptWithDefault = attempt || 0\n const sharedContext = this.buildSharedContext()\n const orchestrator = new KeqMiddlewareOrchestrator(sharedContext, this.__middlewares__)\n\n if (attempt !== undefined) sharedContext.data.retry = { attempt }\n if (attempt && attempt >= 1) sharedContext.emitter.emit('retry', { context: sharedContext })\n\n let error: unknown = null\n\n try {\n await orchestrator.execute()\n } catch (err) {\n error = err\n }\n\n const retryOn = typeof sharedContext.options.retry?.on === 'function'\n ? sharedContext.options.retry.on\n : (attempt, error) => {\n if (error instanceof RequestException && error.retry === false) return false\n return !!error\n }\n let retryTimes = sharedContext.options.retry?.times || 0\n if (retryTimes) {\n if (retryTimes < 0) retryTimes = 0\n else if (!Number.isInteger(retryTimes)) retryTimes = Math.floor(retryTimes)\n }\n\n if (\n attemptWithDefault >= retryTimes\n || (await retryOn(attemptWithDefault, error, sharedContext)) === false\n ) {\n if (error) {\n sharedContext.emitter.emit('error', { context: sharedContext })\n // eslint-disable-next-line @typescript-eslint/only-throw-error\n throw error\n }\n return sharedContext\n }\n\n const retryDelay = typeof sharedContext.options.retry?.delay === 'function'\n ? await sharedContext.options.retry.delay(attemptWithDefault, error, sharedContext)\n : sharedContext.options.retry?.delay || 0\n\n if (retryDelay) await sleep(retryDelay)\n attempt = attemptWithDefault + 1\n }\n }\n\n async end(): Promise<RES_BODY> {\n const coreContext = await this.run()\n\n\n if (coreContext.options.resolveWith === 'response') {\n return coreContext.response as RES_BODY\n }\n\n const response = coreContext.response\n\n if (coreContext.options.resolveWith && coreContext.options.resolveWith !== 'intelligent' && !response) {\n throw new Exception([\n `Unable to process the response with '${coreContext.options.resolveWith}'. Possible causes:`,\n '1. The request was never initiated or sent',\n '2. The request failed before a response was received.',\n ].join('\\n'))\n }\n\n if (coreContext.options.resolveWith === 'text') {\n return await response!.text() as RES_BODY\n } else if (coreContext.options.resolveWith === 'json') {\n return await response!.json() as RES_BODY\n } else if (coreContext.options.resolveWith === 'form-data') {\n return await response!.formData() as RES_BODY\n } else if (coreContext.options.resolveWith === 'blob') {\n return await response!.blob() as RES_BODY\n } else if (coreContext.options.resolveWith === 'array-buffer') {\n return await response!.arrayBuffer() as RES_BODY\n }\n\n const output: any = coreContext.output\n if (output !== undefined) {\n return output as RES_BODY\n }\n\n return intelligentParseResponse<RES_BODY>(response)\n }\n\n /**\n * Attaches callbacks for the resolution and/or rejection of the Promise.\n * @param onfulfilled The callback to execute when the Promise is resolved.\n * @param onrejected The callback to execute when the Promise is rejected.\n * @returns A Promise for the completion of which ever callback is executed.\n */\n then<TResult1 = RES_BODY, TResult2 = never>(onfulfilled?: ((value: RES_BODY) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2> {\n if (!this.requestPromise) this.requestPromise = this.end()\n return this.requestPromise.then(onfulfilled, onrejected)\n }\n\n catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<RES_BODY | TResult> {\n return this.end().catch(onrejected)\n }\n\n finally(onfinally?: (() => void) | null): Promise<RES_BODY> {\n return this.end().finally(onfinally)\n }\n}\n","\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Core } from './core.js'\nimport { Exception, TypeException } from '~/exception/index.js'\nimport { Validator } from '~/validator/index.js'\nimport { KeqFlowControlOptions, KeqFlowControlMode, KeqFlowControlSignal } from '~/middlewares/index.js'\nimport { mergeKeqRequestBody, fixContentType, queryStringify } from './utils/index.js'\nimport { base64Encode } from '~/utils/index.js'\nimport { KeqRequestBody } from '~/request-init/index.js'\n\nimport type { KeqRetryOn, KeqRetryDelay, KeqResolveWithMode } from '~/context/index.js'\nimport type { KeqQueryValue, CommonContentType, ShorthandContentType, KeqDefaultOperation, KeqOperation, KeqAttachableFile, KeqQueryOptions, KeqParamValue } from './types/index.js'\nimport type { ConditionalPick, Merge, Primitive } from 'type-fest'\nimport type { LiteralKeys, StringIndexValueOf, EnabledIfStringIndex, LooseNestedObject, EnableLooseNestedLike, LooseNestedLike } from '~/types/index.js'\n\n\n/**\n * extends Core to provide a fluent API for building HTTP requests\n */\nexport class Keq<\n OP extends KeqOperation = KeqDefaultOperation,\n RES_BODY extends KeqOperation['responseBody'] = OP['responseBody'],\n REQ_PARAMS extends KeqOperation['requestParams'] = OP['requestParams'],\n REQ_QUERY extends KeqOperation['requestQuery'] = OP['requestQuery'],\n REQ_HEADERS extends KeqOperation['requestHeaders'] = OP['requestHeaders'],\n REQ_BODY extends KeqOperation['requestBody'] = OP['requestBody'],\n> extends Core<OP> {\n /**\n * Set request header\n *\n * @description 设置请求头\n */\n set(headers: Partial<REQ_HEADERS> | Headers): this\n set<T extends keyof LiteralKeys<REQ_HEADERS>>(name: T, value: LiteralKeys<REQ_HEADERS>[T]): this\n set<O extends { [K in keyof O]: StringIndexValueOf<REQ_HEADERS> }>(obj: Partial<O> & EnabledIfStringIndex<REQ_HEADERS>): this\n set<O extends { [K in keyof O]: StringIndexValueOf<REQ_HEADERS> }>(key: string, value: StringIndexValueOf<REQ_HEADERS> & EnabledIfStringIndex<REQ_HEADERS>): this\n set(headersOrName: Partial<REQ_HEADERS> | string | Headers, value?: string | number): this {\n if (Validator.isHeaders(headersOrName)) {\n headersOrName.forEach((value, key) => {\n this.requestInit.headers.set(key, value)\n })\n } else if (typeof headersOrName === 'string' && value) {\n if (!Validator.isHeaderValue(value)) {\n throw new Exception(`[Invalid header] Key: ${headersOrName} Value: ${value}`)\n }\n\n this.requestInit.headers.set(headersOrName, String(value))\n } else if (typeof headersOrName === 'object') {\n for (const [key, value] of Object.entries(headersOrName)) {\n if (!Validator.isHeaderValue(value)) {\n throw new Exception(`[Invalid header] Key: ${key} Value: ${String(value)}`)\n }\n\n this.requestInit.headers.set(key, String(value))\n }\n }\n return this\n }\n\n /**\n * Set request headers\n */\n headers(headers: Partial<REQ_HEADERS> | Headers): this\n headers<T extends keyof LiteralKeys<REQ_HEADERS>>(name: T, value: LiteralKeys<REQ_HEADERS>[T]): this\n headers<O extends { [K in keyof O]: StringIndexValueOf<REQ_HEADERS> }>(obj: Partial<O> & EnabledIfStringIndex<REQ_HEADERS>): this\n headers<O extends { [K in keyof O]: StringIndexValueOf<REQ_HEADERS> }>(key: string, value: StringIndexValueOf<REQ_HEADERS> & EnabledIfStringIndex<REQ_HEADERS>): this\n headers(headersOrName: Partial<REQ_HEADERS> | string | Headers, value?: string | number): this {\n return this.set(headersOrName as any, value as any)\n }\n\n /**\n * Set request query/searchParams\n */\n query(obj: Partial<REQ_QUERY>, options?: KeqQueryOptions): this\n query<T extends keyof LiteralKeys<REQ_QUERY>>(key: T, value: LiteralKeys<REQ_QUERY>[T], options?: KeqQueryOptions): this\n query<O extends { [K in keyof O]: StringIndexValueOf<REQ_QUERY> }>(key: string, obj: StringIndexValueOf<REQ_QUERY> & EnabledIfStringIndex<REQ_QUERY>, options?: KeqQueryOptions): this\n query<O extends { [K in keyof O]: StringIndexValueOf<REQ_QUERY> }>(obj: Partial<O> & EnabledIfStringIndex<REQ_QUERY>, options?: KeqQueryOptions): this\n query<O extends object>(\n arg: O\n & Partial<LooseNestedObject<REQ_QUERY, O>>\n & EnableLooseNestedLike<StringIndexValueOf<REQ_QUERY>, O>\n & EnabledIfStringIndex<REQ_QUERY>\n ): this\n query<K extends keyof REQ_QUERY, O extends object>(\n key: K,\n arg: O\n & LooseNestedLike<StringIndexValueOf<REQ_QUERY>, O>\n & EnableLooseNestedLike<StringIndexValueOf<REQ_QUERY>, O>\n & EnabledIfStringIndex<REQ_QUERY>,\n options?: KeqQueryOptions,\n ): this\n query(arg1: string | Partial<REQ_QUERY>, arg2?: KeqQueryValue | KeqQueryOptions, arg3?: KeqQueryOptions): this {\n if (Validator.isObject(arg1)) {\n const str = queryStringify(arg1, (arg2 as KeqQueryOptions) || this.__qs__)\n\n for (const [k, v] of new URLSearchParams(str).entries()) {\n for (const item of Array.isArray(v) ? v : [v]) {\n this.requestInit.url.searchParams.append(k, item)\n }\n }\n\n this.requestInit.url.search = this.requestInit.url.searchParams.toString().replace(/\\+/g, '%20')\n return this\n }\n\n if (typeof arg1 === 'string') {\n this.query({ [arg1]: arg2 } as Partial<REQ_QUERY>, arg3)\n return this\n }\n\n throw new TypeException('Invalid Arguments for .query()')\n }\n\n /**\n * Set request route params\n */\n params(params: Partial<REQ_PARAMS>): this\n params<T extends keyof LiteralKeys<REQ_PARAMS>>(key: T, value: LiteralKeys<REQ_PARAMS>[T]): this\n params<O extends { [K in keyof O]: StringIndexValueOf<REQ_PARAMS> }>(obj: Partial<O> & EnabledIfStringIndex<REQ_PARAMS>): this\n params<O extends { [K in keyof O]: StringIndexValueOf<REQ_PARAMS> }>(key: string, value: StringIndexValueOf<REQ_PARAMS> & EnabledIfStringIndex<REQ_PARAMS>): this\n params(arg1: string | Partial<REQ_PARAMS>, arg2?: KeqParamValue): this {\n if (typeof arg1 === 'string' && arg2 !== undefined) {\n this.requestInit.routeParams[arg1] = arg2\n } else if (typeof arg1 === 'object' && arg1 !== null) {\n for (const k of Object.keys(arg1)) {\n if (arg1[k]) this.requestInit.routeParams[k] = arg1[k]\n }\n } else {\n throw new TypeError('Invalid Arguments for .params()')\n }\n\n return this\n }\n\n /**\n * Set request body\n */\n body(value: KeqRequestBody): this {\n this.requestInit.body = value\n return this\n }\n\n\n /**\n * Setting the Content-Type\n */\n type(contentType: ShorthandContentType): this\n type(contentType: CommonContentType): this\n type(contentType: string): this\n type(contentType: string): this {\n const type = fixContentType(contentType)\n this.set('content-type', type as any)\n return this\n }\n\n\n /**\n * Http Basic Authentication\n */\n auth(username: string, password: string): this {\n this.set('Authorization', `Basic ${base64Encode(`${username}:${password}`)}` as any)\n return this\n }\n\n private setTypeIfEmpty(contentType: ShorthandContentType): void\n private setTypeIfEmpty(contentType: CommonContentType): void\n private setTypeIfEmpty(contentType: string): void\n private setTypeIfEmpty(contentType: string): void {\n if (!this.requestInit.headers.has('Content-Type')) void this.type(contentType)\n }\n\n /**\n * set request body\n */\n send(value: REQ_BODY): this {\n this.requestInit.body = mergeKeqRequestBody(this.requestInit.body, value)\n\n if (Validator.isUrlSearchParams(value)) {\n this.setTypeIfEmpty('form')\n } else if (Validator.isFormData(value)) {\n this.setTypeIfEmpty('form-data')\n } else if (Validator.isBlob(value) || Validator.isReadableStream(value) || Validator.isArrayBuffer(value)) {\n // don't set content-type\n } else if (typeof value === 'object') {\n this.setTypeIfEmpty('json')\n }\n\n return this\n }\n\n\n field<T extends ConditionalPick<RES_BODY, Primitive>, K extends keyof T>(arg1: K, value: T[K]): this\n field(arg1: ConditionalPick<RES_BODY, Primitive>): this\n field(arg1: string, value: string | string[]): this\n field(arg1: Record<string, string>): this\n field(arg1: string | Record<string, string>, arg2?: any): this {\n if (typeof arg1 === 'object') {\n this.requestInit.body = mergeKeqRequestBody(this.requestInit.body, arg1)\n } else if (arg2) {\n this.requestInit.body = mergeKeqRequestBody(this.requestInit.body, { [arg1]: arg2 })\n } else {\n throw new TypeException('Invalid arguments for .field()')\n }\n\n this.setTypeIfEmpty('form-data')\n return this\n }\n\n\n attach<T extends keyof ConditionalPick<REQ_BODY, KeqAttachableFile>>(key: T, value: KeqAttachableFile, filename: string): this\n attach<T extends keyof ConditionalPick<REQ_BODY, KeqAttachableFile>>(key: T, value: KeqAttachableFile | KeqAttachableFile[]): this\n attach(key: string, value: KeqAttachableFile, filename: string): this\n attach(key: string, value: KeqAttachableFile | KeqAttachableFile[]): this\n attach(key: string, value: KeqAttachableFile | KeqAttachableFile[], arg3 = 'file'): this {\n const formData = new FormData()\n\n const appendFile = (file: KeqAttachableFile): void => {\n if (Validator.isBlob(file)) {\n formData.append(key, file, arg3)\n } else if (Validator.isFile(file)) {\n formData.append(key, file)\n } else if (Validator.isBuffer(file)) {\n formData.append(key, new Blob([file as any]), arg3)\n } else {\n throw new TypeException('Invalid file type for .attach()')\n }\n }\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n throw new TypeException('Empty array provided to .attach() is not valid')\n }\n\n for (const item of value) {\n appendFile(item)\n }\n } else {\n appendFile(value)\n }\n\n const files = formData.getAll(key)\n\n this.requestInit.body = mergeKeqRequestBody(\n this.requestInit.body,\n {\n [key]: files.length === 1 ? files[0] : files,\n },\n )\n\n this.setTypeIfEmpty('form-data')\n return this\n }\n\n /**\n *\n * @param retryTimes Max number of retries per call\n * @param retryDelay Initial value used to calculate the retry in milliseconds (This is still randomized following the randomization factor)\n * @param retryCallback Will be called after request failed\n */\n retry(retryTimes: number, retryDelay: KeqRetryDelay = 0, retryOn: KeqRetryOn = (attempt, error) => !!error): this {\n this.option('retry', {\n times: retryTimes,\n delay: retryDelay,\n on: retryOn,\n })\n\n return this\n }\n\n\n redirect(mod: RequestRedirect): this {\n this.requestInit.redirect = mod\n return this\n }\n\n credentials(mod: RequestCredentials): this {\n this.requestInit.credentials = mod\n return this\n }\n\n mode(mod: RequestMode): this {\n this.requestInit.mode = mod\n return this\n }\n\n flowControl(mode: KeqFlowControlMode, signal?: KeqFlowControlSignal): this {\n const sig = signal ? signal : this.__locationId__\n\n if (!sig) {\n throw new Exception('please set signal to .flowControl()')\n }\n\n const flowControl: KeqFlowControlOptions = {\n mode,\n signal: sig,\n }\n\n this.option('flowControl', flowControl)\n return this\n }\n\n timeout(milliseconds: number): this {\n this.option('timeout', { millisecond: milliseconds })\n return this\n }\n\n resolveWith(m: 'response'): Keq<Merge<OP, { responseBody: Response }>>\n resolveWith(m: 'array-buffer'): Keq<Merge<OP, { responseBody: ArrayBuffer }>>\n resolveWith(m: 'blob'): Keq<Merge<OP, { responseBody: Blob }>>\n resolveWith(m: 'text'): Keq<Merge<OP, { responseBody: string }>>\n resolveWith<T = any>(m: 'json' | 'form-data'): Keq<Merge<OP, { responseBody: T }>>\n resolveWith(m: KeqResolveWithMode | any): any {\n this.option('resolveWith', m)\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return this as any\n }\n}\n","import { Exception } from '../../exception/exception.js'\nimport { KeqRoute } from '../types/keq-route.js'\n\n\nexport function composeRoute(routes: KeqRoute[]): KeqRoute {\n if (!routes.length) {\n throw new Exception('At least one route')\n }\n\n return async (ctx) => {\n const results = await Promise.all(routes.map((route) => route(ctx)))\n return results.every((result) => result === true)\n }\n}\n","import type { KeqRoute } from '~/router/types/keq-route.js'\n\n\nexport function keqHostRoute(host: string): KeqRoute {\n return (ctx) => ctx.request.url.host === host\n}\n","import { Validator } from '../validator/index.js'\n\nimport type { KeqRoute } from '~/router/types/keq-route.js'\n\nexport function keqLocationRoute(): KeqRoute {\n return (ctx) => Validator.isBrowser() && ctx.request.url.host === window.location.host\n}\n","import type { KeqRoute } from '~/router/types/keq-route.js'\n\n\nexport function keqMethodRoute(method): KeqRoute {\n return (ctx) => ctx.request.method.toLowerCase() === method.toLowerCase()\n}\n","import { Exception } from '../exception/exception.js'\n\nimport type { KeqRoute } from './types/keq-route.js'\n\n\nexport function keqModuleRoute(moduleName: string): KeqRoute {\n if (!moduleName) {\n throw new Exception('Module name should not be empty')\n }\n\n return (ctx) => ctx.options.module?.name === moduleName\n}\n","import * as m from 'minimatch'\n\nimport type { KeqRoute } from '~/router/types/keq-route.js'\n\nexport function keqPathnameRoute(pathname: string): KeqRoute {\n return (ctx) => m.minimatch(ctx.request.url.pathname, pathname)\n}\n","import { TypeException } from '~/exception/index.js'\nimport type { KeqMiddleware } from '../types/keq-middleware.js'\n\n\ninterface ComposeMiddlewareOptions {\n name?: string\n}\n\nexport function composeMiddleware(middlewares: KeqMiddleware[], options?: ComposeMiddlewareOptions): KeqMiddleware {\n if (!middlewares.length) {\n throw new TypeException('At least one middleware')\n }\n\n const middleware = [...middlewares]\n .reverse()\n .reduce(function (prev, curr): KeqMiddleware {\n return async (ctx, next) => {\n await curr(ctx, () => prev(ctx, next))\n }\n })\n\n if (options?.name) {\n middleware.__keqMiddlewareName__ = options.name\n }\n\n return middleware\n}\n","import { keqHostRoute } from './keq-host-route.js'\nimport { keqLocationRoute } from './keq-location-route.js'\nimport { keqMethodRoute } from './keq-method-route.js'\nimport { keqModuleRoute } from './keq-module-route.js'\nimport { keqPathnameRoute } from './keq-pathname-route.js'\nimport { composeMiddleware } from '~/middleware/index.js'\n\nimport type { KeqMiddleware } from '~/middleware/index.js'\nimport type { KeqRoute } from '~/router/types/keq-route.js'\n\n\nexport class KeqRouter {\n constructor(\n private readonly middlewares: KeqMiddleware[] = [],\n ) { }\n\n route(route: KeqRoute, ...middlewares: KeqMiddleware[]): this {\n if (middlewares.length === 0) return this\n const m = middlewares.length > 1 ? composeMiddleware(middlewares) : middlewares[0]\n\n this.middlewares.push(async function router(ctx, next) {\n if (route(ctx)) await m(ctx, next)\n else await next()\n })\n\n return this\n }\n\n host(host: string, ...middlewares: KeqMiddleware[]): this {\n return this.route(keqHostRoute(host), ...middlewares)\n }\n\n method(method: string, ...middlewares: KeqMiddleware[]): this {\n return this.route(keqMethodRoute(method), ...middlewares)\n }\n\n pathname(pathname: string, ...middlewares: KeqMiddleware[]): this {\n return this.route(keqPathnameRoute(pathname), ...middlewares)\n }\n\n location(...middlewares: KeqMiddleware[]): this {\n return this.route(keqLocationRoute(), ...middlewares)\n }\n\n module(moduleName: string, ...middlewares: KeqMiddleware[]): this {\n return this.route(keqModuleRoute(moduleName), ...middlewares)\n }\n}\n","import { TimeoutException } from '~/exception/index.js'\nimport { KeqMiddleware } from '~/middleware/types'\n\nexport interface KeqTimeoutOptions {\n millisecond: number\n}\n\nexport function keqTimeoutMiddleware(): KeqMiddleware {\n return async function timeoutMiddleware(ctx, next) {\n if (!ctx.options.timeout || ctx.options.timeout.millisecond <= 0) {\n await next()\n return\n }\n\n const millisecond = ctx.options.timeout.millisecond\n ctx.emitter.on('fetch:after', ({ context }) => {\n setTimeout(\n () => {\n const err = new TimeoutException(`keq request timeout(${millisecond}ms)`)\n context.request.abort(err)\n context.emitter.emit('timeout', { context })\n },\n millisecond,\n )\n })\n\n await next()\n }\n}\n","import type { queueAsPromised } from 'fastq'\nimport * as fastq from 'fastq'\nimport { KeqMiddleware } from '~/middleware/types'\n\nimport type { KeqNext } from '~/middleware/types/keq-next.js'\n\n\nexport function keqSerialFlowControlMiddleware(): KeqMiddleware {\n return async function serialFlowControlMiddleware(ctx, next) {\n if (!ctx.options.flowControl || ctx.options.flowControl.mode !== 'serial') {\n await next()\n return\n }\n\n const { signal } = ctx.options.flowControl\n\n const key = typeof signal === 'string' ? signal : signal(ctx)\n\n if (!ctx.global.serialFlowControl) ctx.global.serialFlowControl = {}\n\n if (!ctx.global.serialFlowControl[key]) {\n ctx.global.serialFlowControl[key] = fastq.promise(async (next: KeqNext) => {\n await next()\n }, 1)\n }\n\n const queue: queueAsPromised<KeqNext> = ctx.global.serialFlowControl[key]\n await queue.push(next)\n }\n}\n","import { AbortException } from '~/exception/index.js'\nimport { KeqMiddleware } from '~/middleware/types'\n\n\nexport function keqAbortFlowControlMiddleware(): KeqMiddleware {\n return async function abortFlowControlMiddleware(ctx, next) {\n if (!ctx.options.flowControl || ctx.options.flowControl.mode !== 'abort') {\n await next()\n return\n }\n\n const { signal } = ctx.options.flowControl\n\n const key = typeof signal === 'string' ? signal : signal(ctx)\n\n\n if (!ctx.global.abortFlowControl) ctx.global.abortFlowControl = {}\n\n const abort = ctx.global.abortFlowControl[key]\n\n if (abort) {\n const reason = new AbortException(`Previous request was aborted by AbortFlowControl with key \"${key}\"`)\n abort(reason)\n }\n\n const fn = ctx.request.abort.bind(ctx.request)\n ctx.global.abortFlowControl[key] = fn\n\n try {\n await next()\n } finally {\n if (ctx.global.abortFlowControl[key] === fn) {\n ctx.global.abortFlowControl[key] = undefined\n }\n }\n }\n}\n","import { keqSerialFlowControlMiddleware } from './serial-flow-control-middleware'\nimport { keqAbortFlowControlMiddleware } from './abort-flow-control-middleware'\nimport { KeqMiddleware } from '~/middleware/types'\nimport { composeMiddleware } from '~/middleware/utils'\n\nexport * from './types/keq-flow-control.js'\n\n\nexport function keqFlowControlMiddleware(): KeqMiddleware {\n return composeMiddleware(\n [keqSerialFlowControlMiddleware(), keqAbortFlowControlMiddleware()],\n { name: 'flowControlMiddleware' },\n )\n}\n","import { KeqExecutionContext } from '~/context/execution-context.js'\nimport { KeqMiddleware } from '~/middleware/types'\n\n/**\n * Send Request\n */\nexport function keqFetchMiddleware(): KeqMiddleware {\n return async function fetchMiddleware(context: KeqExecutionContext) {\n const fetch = context.options.fetchAPI || globalThis.fetch\n\n context.emitter.emit('fetch:before', { context })\n const response = await fetch(...context.request.toFetchArguments())\n context.emitter.emit('fetch:after', { context })\n\n context.res = response\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { KeqGlobal } from '~/context'\nimport { Keq } from './keq'\nimport { KeqApiSchema, KeqDefaultOperation, KeqQueryOptions } from './types'\nimport { getLocationId } from './utils'\nimport { KeqMiddleware } from '~/middleware'\nimport { Validator } from '~/validator'\nimport { KeqRequestInit, KeqRequestMethod } from '~/request-init'\nimport { ExtractMethodOperations } from './types'\nimport { KeqRouter } from '~/router'\nimport { keqFetchMiddleware, keqFlowControlMiddleware, keqTimeoutMiddleware } from '~/middlewares'\n\n\nexport interface KeqRequestOptions {\n preMiddlewares?: KeqMiddleware[]\n postMiddlewares?: KeqMiddleware[]\n baseOrigin?: string\n qs?: KeqQueryOptions\n}\n\nexport type KeqRequestFetchOptions<M extends KeqRequestMethod = KeqRequestMethod> = Partial<Omit<KeqRequestInit, 'url' | '__url__' | 'signal' | 'abort' | 'clone' | 'toFetchArguments' | 'method'>> & {\n method: M\n}\n\n/**\n * Keq instance factory class,\n * and shares global data and middlewares across requests\n */\nexport class KeqRequest<SCHEMA extends KeqApiSchema> {\n baseOrigin: string\n qs?: KeqQueryOptions\n\n /**\n * share data between requests, used to implement flowControl\n * @description 跨请求共享数据,用于实现 flowControl的功能\n */\n readonly globals: KeqGlobal = {}\n\n readonly preMiddlewares: KeqMiddleware[] = []\n readonly postMiddlewares: KeqMiddleware[] = []\n\n constructor(options?: KeqRequestOptions) {\n if (options?.baseOrigin) {\n this.baseOrigin = options.baseOrigin\n } else {\n this.baseOrigin = Validator.isBrowser() ? location.origin : 'http://127.0.0.1'\n }\n\n this.qs = options?.qs\n\n this.postMiddlewares = options?.postMiddlewares || [\n keqFlowControlMiddleware(),\n keqTimeoutMiddleware(),\n keqFetchMiddleware(),\n ]\n this.preMiddlewares = options?.preMiddlewares || []\n }\n\n private __formatUrl__(url: string | URL): URL {\n if (typeof url === 'string') {\n return new URL(url, this.baseOrigin)\n }\n\n return new URL(url.href)\n }\n\n private __fetch__(\n url: string | URL,\n init: KeqRequestFetchOptions,\n locationId?: string,\n ): Keq<any> {\n const keq = new Keq(this.__formatUrl__(url), { ...init, locationId, global: this.globals, qs: this.qs })\n\n keq.appendMiddlewares(...this.postMiddlewares)\n keq.prependMiddlewares(...this.preMiddlewares)\n return keq as Keq<any>\n }\n\n\n fetch<P extends keyof SCHEMA, M extends KeqRequestMethod>(url: P, init: KeqRequestFetchOptions<M>): Keq<Exclude<SCHEMA[P][M], undefined>>\n fetch<T = unknown>(url: string | URL, init: KeqRequestFetchOptions): Keq<KeqDefaultOperation<{ responseBody: T }>>\n fetch(url: string | URL, init: KeqRequestFetchOptions): Keq<any> {\n return this.__fetch__(\n url,\n init,\n getLocationId(1),\n )\n }\n\n get<P extends keyof ExtractMethodOperations<SCHEMA, 'get'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'get'>[P], ExtractMethodOperations<SCHEMA, 'get'>[P]>\n get<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n get(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'get' },\n getLocationId(1),\n )\n }\n\n put<P extends keyof ExtractMethodOperations<SCHEMA, 'put'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'put'>[P], ExtractMethodOperations<SCHEMA, 'put'>[P]>\n put<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n put(url: string | URL): Keq<any> {\n const locationId = getLocationId(1)\n const keq = new Keq(\n this.__formatUrl__(url),\n {\n method: 'put',\n locationId,\n global: this.globals,\n },\n )\n\n keq.appendMiddlewares(...this.postMiddlewares)\n keq.prependMiddlewares(...this.preMiddlewares)\n return keq\n }\n\n delete<P extends keyof ExtractMethodOperations<SCHEMA, 'delete'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'delete'>[P], ExtractMethodOperations<SCHEMA, 'delete'>[P]>\n delete<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n delete(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'delete' },\n getLocationId(1),\n )\n }\n\n del<P extends keyof ExtractMethodOperations<SCHEMA, 'delete'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'delete'>[P], ExtractMethodOperations<SCHEMA, 'delete'>[P]>\n del<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n del(url: string | URL): Keq<any> {\n return this.delete(url)\n }\n\n post<P extends keyof ExtractMethodOperations<SCHEMA, 'post'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'post'>[P], ExtractMethodOperations<SCHEMA, 'post'>[P]>\n post<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n post(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'post' },\n getLocationId(1),\n )\n }\n\n head<P extends keyof ExtractMethodOperations<SCHEMA, 'head'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'head'>[P], ExtractMethodOperations<SCHEMA, 'head'>[P]>\n head<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n head(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'head' },\n getLocationId(1),\n )\n }\n\n patch<P extends keyof ExtractMethodOperations<SCHEMA, 'patch'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'patch'>[P], ExtractMethodOperations<SCHEMA, 'patch'>[P]>\n patch<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n patch(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'patch' },\n getLocationId(1),\n )\n }\n\n options<P extends keyof ExtractMethodOperations<SCHEMA, 'options'>>(url: P): Keq<ExtractMethodOperations<SCHEMA, 'options'>[P], ExtractMethodOperations<SCHEMA, 'options'>[P]>\n options<T>(url: string | URL): Keq<KeqDefaultOperation<{ responseBody: T }>>\n options(url: string | URL): Keq<any> {\n return this.__fetch__(\n url,\n { method: 'options' },\n getLocationId(1),\n )\n }\n\n use(firstMiddleware: KeqMiddleware, ...middleware: KeqMiddleware[]): this {\n this.preMiddlewares.push(firstMiddleware, ...middleware)\n return this\n }\n\n useRouter(): KeqRouter {\n return new KeqRouter(this.preMiddlewares)\n }\n}\n\nexport const request = new KeqRequest()\n","import { KeqApiSchema } from './types'\nimport { KeqRequest, KeqRequestOptions } from './request'\n\n\n/**\n * @deprecated use new KeqRequest<SCHEMA>(options) instead\n */\nexport function createRequest<SCHEMA extends KeqApiSchema>(options?: KeqRequestOptions): KeqRequest<SCHEMA> {\n return new KeqRequest<SCHEMA>(options)\n}\n"],"mappings":"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","names":["target","attempt","error","value","m","m","next"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { KeqExecutionContext } from '../../context/execution-context.js';
|
|
2
|
+
import type { KeqNext } from './keq-next.js';
|
|
3
|
+
export interface KeqMiddleware {
|
|
4
|
+
(ctx: KeqExecutionContext, next: KeqNext): Promise<void>;
|
|
5
|
+
__keqMiddlewareName__?: string;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=keq-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keq-middleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/types/keq-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAG5C,MAAM,WAAW,aAAa;IAC5B,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keq-next.d.ts","sourceRoot":"","sources":["../../../src/middleware/types/keq-next.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { KeqMiddleware } from '../types/keq-middleware.js';
|
|
2
|
+
interface ComposeMiddlewareOptions {
|
|
3
|
+
name?: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function composeMiddleware(middlewares: KeqMiddleware[], options?: ComposeMiddlewareOptions): KeqMiddleware;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=compose-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-middleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/utils/compose-middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAG/D,UAAU,wBAAwB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,aAAa,CAkBjH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/fetch-middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAUlD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort-flow-control-middleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/flow-control-middleware/abort-flow-control-middleware.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,wBAAgB,6BAA6B,IAAI,aAAa,CAgC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/flow-control-middleware/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGlD,cAAc,6BAA6B,CAAA;AAG3C,wBAAgB,wBAAwB,IAAI,aAAa,CAKxD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serial-flow-control-middleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/flow-control-middleware/serial-flow-control-middleware.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAKlD,wBAAgB,8BAA8B,IAAI,aAAa,CAsB9D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { KeqExecutionContext } from '../../../context';
|
|
2
|
+
export interface KeqFlowControlOptions {
|
|
3
|
+
mode: 'abort' | 'serial';
|
|
4
|
+
signal: string | ((ctx: KeqExecutionContext) => string);
|
|
5
|
+
}
|
|
6
|
+
export type KeqFlowControlMode = KeqFlowControlOptions['mode'];
|
|
7
|
+
export type KeqFlowControlSignal = KeqFlowControlOptions['signal'];
|
|
8
|
+
//# sourceMappingURL=keq-flow-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keq-flow-control.d.ts","sourceRoot":"","sources":["../../../../src/middlewares/flow-control-middleware/types/keq-flow-control.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAG/C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAA;IACxB,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,mBAAmB,KAAK,MAAM,CAAC,CAAA;CACxD;AAED,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;AAC9D,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/middlewares/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,oCAAoC,CAAA;AAClD,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middlewares/timeout-middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,oBAAoB,IAAI,aAAa,CAqBpD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { KeqExecutionContext } from '../context/index.js';
|
|
2
|
+
import { KeqNext } from '../middleware/types/keq-next.js';
|
|
3
|
+
import { KeqMiddleware } from '../middleware/index.js';
|
|
4
|
+
export declare class KeqMiddlewareExecutor {
|
|
5
|
+
readonly middleware: KeqMiddleware;
|
|
6
|
+
readonly name: string;
|
|
7
|
+
status: 'idle' | 'pending' | 'fulfilled' | 'rejected';
|
|
8
|
+
constructor(middleware: KeqMiddleware);
|
|
9
|
+
execute(context: KeqExecutionContext, next: KeqNext): Promise<void>;
|
|
10
|
+
fork(): KeqMiddlewareExecutor;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/orchestrator/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,qBAAa,qBAAqB;aAKd,UAAU,EAAE,aAAa;IAJ3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAS;gBAG5C,UAAU,EAAE,aAAa;IAKrC,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBzE,IAAI,IAAI,qBAAqB;CAK9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/orchestrator/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { KeqSharedContext } from '../context/index.js';
|
|
2
|
+
import { KeqMiddleware } from '../middleware/index.js';
|
|
3
|
+
import { KeqMiddlewareExecutor } from './executor.js';
|
|
4
|
+
export declare class KeqMiddlewareOrchestrator {
|
|
5
|
+
status: 'idle' | 'pending' | 'fulfilled' | 'rejected';
|
|
6
|
+
context: KeqSharedContext;
|
|
7
|
+
executors: KeqMiddlewareExecutor[];
|
|
8
|
+
constructor(context: KeqSharedContext, middlewares?: KeqMiddleware[]);
|
|
9
|
+
private run;
|
|
10
|
+
execute(): Promise<void>;
|
|
11
|
+
fork(): KeqMiddlewareOrchestrator;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAGrD,qBAAa,yBAAyB;IACpC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAS;IAC9D,OAAO,EAAE,gBAAgB,CAAA;IACzB,SAAS,EAAE,qBAAqB,EAAE,CAAK;gBAGrC,OAAO,EAAE,gBAAgB,EACzB,WAAW,GAAE,aAAa,EAAO;YAMrB,GAAG;IAiBX,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,IAAI,IAAI,yBAAyB;CASlC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keq-middleware-context.d.ts","sourceRoot":"","sources":["../../../src/orchestrator/types/keq-middleware-context.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IAGnC,QAAQ,EAAE,OAAO,CAAA;CAClB"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { KeqEvents, KeqGlobal, KeqListeners, KeqMiddlewareOptionsParameter, KeqMiddlewareOptionsReturnType } from '../context/index.js';
|
|
2
|
+
import { KeqRequestInit } from '../request-init/index.js';
|
|
3
|
+
import { KeqContextOptions } from '../context/index.js';
|
|
4
|
+
import { KeqMiddleware } from '../middleware/index.js';
|
|
5
|
+
import { KeqDefaultOperation, KeqOperation, KeqQueryOptions } from './types/index.js';
|
|
6
|
+
export type KeqOptions = Partial<Omit<KeqRequestInit, 'url' | '__url__' | 'signal' | 'abort' | 'clone'>> & {
|
|
7
|
+
locationId?: string;
|
|
8
|
+
global?: KeqGlobal;
|
|
9
|
+
qs?: KeqQueryOptions;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Core class that provides the foundational structure for managing middlewares, events, and request execution.
|
|
13
|
+
*/
|
|
14
|
+
export declare class Core<OP extends KeqOperation = KeqDefaultOperation, RES_BODY extends KeqOperation['responseBody'] = OP['responseBody']> {
|
|
15
|
+
/**
|
|
16
|
+
* The unique identifier of the request's location in the code
|
|
17
|
+
*/
|
|
18
|
+
__locationId__?: string;
|
|
19
|
+
private requestPromise?;
|
|
20
|
+
protected requestInit: KeqRequestInit;
|
|
21
|
+
protected __listeners__: KeqListeners;
|
|
22
|
+
protected __global__: Record<string, any>;
|
|
23
|
+
protected __prepend_middlewares__: KeqMiddleware[];
|
|
24
|
+
protected __append_middlewares__: KeqMiddleware[];
|
|
25
|
+
protected __qs__: KeqQueryOptions | undefined;
|
|
26
|
+
protected get __middlewares__(): KeqMiddleware[];
|
|
27
|
+
protected __options__: KeqContextOptions;
|
|
28
|
+
constructor(url: URL, options: KeqOptions);
|
|
29
|
+
prependMiddlewares(...middlewares: KeqMiddleware[]): this;
|
|
30
|
+
appendMiddlewares(...middlewares: KeqMiddleware[]): this;
|
|
31
|
+
use(...middlewares: KeqMiddleware[]): this;
|
|
32
|
+
on<K extends keyof KeqEvents>(event: K, listener: (data: KeqEvents[K]) => void): this;
|
|
33
|
+
option<K extends keyof KeqMiddlewareOptionsReturnType<OP>>(key: K, value?: KeqMiddlewareOptionsParameter[K]): KeqMiddlewareOptionsReturnType<OP>[K];
|
|
34
|
+
option(key: string, value?: any): this;
|
|
35
|
+
options(opts: KeqContextOptions): this;
|
|
36
|
+
private buildSharedContext;
|
|
37
|
+
private run;
|
|
38
|
+
end(): Promise<RES_BODY>;
|
|
39
|
+
/**
|
|
40
|
+
* Attaches callbacks for the resolution and/or rejection of the Promise.
|
|
41
|
+
* @param onfulfilled The callback to execute when the Promise is resolved.
|
|
42
|
+
* @param onrejected The callback to execute when the Promise is rejected.
|
|
43
|
+
* @returns A Promise for the completion of which ever callback is executed.
|
|
44
|
+
*/
|
|
45
|
+
then<TResult1 = RES_BODY, TResult2 = never>(onfulfilled?: ((value: RES_BODY) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>;
|
|
46
|
+
catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null): Promise<RES_BODY | TResult>;
|
|
47
|
+
finally(onfinally?: (() => void) | null): Promise<RES_BODY>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/request/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,6BAA6B,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAA;AAGtI,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAoB,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAErD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAGrF,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAC,GAAG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,EAAE,CAAC,EAAE,eAAe,CAAA;CACrB,CAAA;AAED;;GAEG;AACH,qBAAa,IAAI,CACf,EAAE,SAAS,YAAY,GAAG,mBAAmB,EAC7C,QAAQ,SAAS,YAAY,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC;IAElE;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IAEvB,OAAO,CAAC,cAAc,CAAC,CAAmB;IAE1C,SAAS,CAAC,WAAW,EAAE,cAAc,CAAA;IAErC,SAAS,CAAC,aAAa,EAAE,YAAY,CAAK;IAE1C,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,SAAS,CAAC,uBAAuB,EAAE,aAAa,EAAE,CAAK;IACvD,SAAS,CAAC,sBAAsB,EAAE,aAAa,EAAE,CAAK;IACtD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAAA;IAE7C,SAAS,KAAK,eAAe,IAAI,aAAa,EAAE,CAE/C;IAED,SAAS,CAAC,WAAW,EAAE,iBAAiB,CAGvC;gBAEkB,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU;IAehD,kBAAkB,CAAC,GAAG,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI;IAKzD,iBAAiB,CAAC,GAAG,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI;IAKxD,GAAG,CAAC,GAAG,WAAW,EAAE,aAAa,EAAE,GAAG,IAAI;IAI1C,EAAE,CAAC,CAAC,SAAS,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAMrF,MAAM,CAAC,CAAC,SAAS,MAAM,8BAA8B,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,6BAA6B,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnJ,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,IAAI;IAMtC,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAQtC,OAAO,CAAC,kBAAkB;YAkBZ,GAAG;IAuDX,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;IAsC9B;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAKhO,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC;IAI1H,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;CAG5D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { KeqApiSchema } from './types';
|
|
2
|
+
import { KeqRequest, KeqRequestOptions } from './request';
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated use new KeqRequest<SCHEMA>(options) instead
|
|
5
|
+
*/
|
|
6
|
+
export declare function createRequest<SCHEMA extends KeqApiSchema>(options?: KeqRequestOptions): KeqRequest<SCHEMA>;
|
|
7
|
+
//# sourceMappingURL=create-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-request.d.ts","sourceRoot":"","sources":["../../src/request/create-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAGzD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,SAAS,YAAY,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,UAAU,CAAC,MAAM,CAAC,CAE1G"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/request/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAC3C,cAAc,UAAU,CAAA;AACxB,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA"}
|