UNPKG

@mdui/jq

Version:

拥有和 jQuery 相似 API 的轻量级 JavaScript 工具库

539 lines (538 loc) 16.2 kB
import type { PlainObject } from './helper.js'; export type Method = 'GET' | 'DELETE' | 'HEAD' | 'OPTIONS' | 'POST' | 'PUT' | 'PATCH' | 'PURGE' | 'LINK' | 'UNLINK'; export type CallbackName<TResponse> = keyof OptionsCallback<TResponse>; export type SuccessTextStatus = 'success' | 'notmodified' | 'nocontent'; export type ErrorTextStatus = 'timeout' | 'error' | 'abort' | 'parsererror'; export type TextStatus = SuccessTextStatus | ErrorTextStatus; export type BeforeSendCallback<TResponse> = (xhr: XMLHttpRequest, options: Required<OptionsParams<TResponse>> & Options<TResponse>) => void | false; export type SuccessCallback<TResponse> = (response: TResponse, textStatus: SuccessTextStatus, xhr: XMLHttpRequest) => void; export type ErrorCallback = (xhr: XMLHttpRequest, textStatus: ErrorTextStatus) => void; export type CompleteCallback = (xhr: XMLHttpRequest, textStatus: TextStatus) => void; export interface OptionsCallback<TResponse> extends PlainObject { /** * 在请求发送之前调用。返回 false 时将取消 AJAX 请求 * @param xhr */ beforeSend?: BeforeSendCallback<TResponse>; /** * 请求成功之后调用 */ success?: SuccessCallback<TResponse>; /** * 请求出错时调用 */ error?: ErrorCallback; /** * 请求完成之后调用 */ complete?: CompleteCallback; } export interface OptionsParams<TResponse> extends PlainObject { /** * 请求的 URL 地址 */ url?: string; /** * 请求方式 (e.g. "POST", "GET", "PUT") */ method?: Lowercase<Method> | Uppercase<Method>; /** * 请求发送的数据 */ data?: unknown; /** * 是否把请求数据转换成查询字符串发送 */ processData?: boolean; /** * 是否为异步请求 */ async?: boolean; /** * 是否从缓存中读取。只对 GET、HEAD 请求有效 */ cache?: boolean; /** * HTTP 访问认证的用户名 */ username?: string; /** * HTTP 访问认证的密码 */ password?: string; /** * 添加到 Headers 中的数据。可以在 beforeSend 回调函数中重写该值 * string 和 null 会被发送,undefined 会被舍去 */ headers?: PlainObject<string | null | undefined>; /** * 设置在 XMLHttpRequest 对象上的数据 */ xhrFields?: XHRFields; /** * HTTP 状态码和函数组成的对象 */ statusCode?: StatusCodeCallbacks<TResponse>; /** * 服务器返回的数据类型,若为空字符串,则将根据响应的 Content-Type 解析 */ dataType?: 'text' | 'json' | ''; /** *内容的编码类型。为 false 时将不设置 Content-Type */ contentType?: string | false; /** * 请求的超时时间(毫秒)。为 0 时表示永不超时 */ timeout?: number; /** * 是否触发全局 AJAX 事件 */ global?: boolean; } export interface Options<TResponse> extends OptionsParams<TResponse>, OptionsCallback<TResponse> { } export type StatusCodeCallbacks<TResponse> = { 200?: SuccessCallback<TResponse>; 201?: SuccessCallback<TResponse>; 202?: SuccessCallback<TResponse>; 203?: SuccessCallback<TResponse>; 204?: SuccessCallback<TResponse>; 205?: SuccessCallback<TResponse>; 206?: SuccessCallback<TResponse>; 207?: SuccessCallback<TResponse>; 208?: SuccessCallback<TResponse>; 209?: SuccessCallback<TResponse>; 210?: SuccessCallback<TResponse>; 211?: SuccessCallback<TResponse>; 212?: SuccessCallback<TResponse>; 213?: SuccessCallback<TResponse>; 214?: SuccessCallback<TResponse>; 215?: SuccessCallback<TResponse>; 216?: SuccessCallback<TResponse>; 217?: SuccessCallback<TResponse>; 218?: SuccessCallback<TResponse>; 219?: SuccessCallback<TResponse>; 220?: SuccessCallback<TResponse>; 221?: SuccessCallback<TResponse>; 222?: SuccessCallback<TResponse>; 223?: SuccessCallback<TResponse>; 224?: SuccessCallback<TResponse>; 225?: SuccessCallback<TResponse>; 226?: SuccessCallback<TResponse>; 227?: SuccessCallback<TResponse>; 228?: SuccessCallback<TResponse>; 229?: SuccessCallback<TResponse>; 230?: SuccessCallback<TResponse>; 231?: SuccessCallback<TResponse>; 232?: SuccessCallback<TResponse>; 233?: SuccessCallback<TResponse>; 234?: SuccessCallback<TResponse>; 235?: SuccessCallback<TResponse>; 236?: SuccessCallback<TResponse>; 237?: SuccessCallback<TResponse>; 238?: SuccessCallback<TResponse>; 239?: SuccessCallback<TResponse>; 240?: SuccessCallback<TResponse>; 241?: SuccessCallback<TResponse>; 242?: SuccessCallback<TResponse>; 243?: SuccessCallback<TResponse>; 244?: SuccessCallback<TResponse>; 245?: SuccessCallback<TResponse>; 246?: SuccessCallback<TResponse>; 247?: SuccessCallback<TResponse>; 248?: SuccessCallback<TResponse>; 249?: SuccessCallback<TResponse>; 250?: SuccessCallback<TResponse>; 251?: SuccessCallback<TResponse>; 252?: SuccessCallback<TResponse>; 253?: SuccessCallback<TResponse>; 254?: SuccessCallback<TResponse>; 255?: SuccessCallback<TResponse>; 256?: SuccessCallback<TResponse>; 257?: SuccessCallback<TResponse>; 258?: SuccessCallback<TResponse>; 259?: SuccessCallback<TResponse>; 260?: SuccessCallback<TResponse>; 261?: SuccessCallback<TResponse>; 262?: SuccessCallback<TResponse>; 263?: SuccessCallback<TResponse>; 264?: SuccessCallback<TResponse>; 265?: SuccessCallback<TResponse>; 266?: SuccessCallback<TResponse>; 267?: SuccessCallback<TResponse>; 268?: SuccessCallback<TResponse>; 269?: SuccessCallback<TResponse>; 270?: SuccessCallback<TResponse>; 271?: SuccessCallback<TResponse>; 272?: SuccessCallback<TResponse>; 273?: SuccessCallback<TResponse>; 274?: SuccessCallback<TResponse>; 275?: SuccessCallback<TResponse>; 276?: SuccessCallback<TResponse>; 277?: SuccessCallback<TResponse>; 278?: SuccessCallback<TResponse>; 279?: SuccessCallback<TResponse>; 280?: SuccessCallback<TResponse>; 281?: SuccessCallback<TResponse>; 282?: SuccessCallback<TResponse>; 283?: SuccessCallback<TResponse>; 284?: SuccessCallback<TResponse>; 285?: SuccessCallback<TResponse>; 286?: SuccessCallback<TResponse>; 287?: SuccessCallback<TResponse>; 288?: SuccessCallback<TResponse>; 289?: SuccessCallback<TResponse>; 290?: SuccessCallback<TResponse>; 291?: SuccessCallback<TResponse>; 292?: SuccessCallback<TResponse>; 293?: SuccessCallback<TResponse>; 294?: SuccessCallback<TResponse>; 295?: SuccessCallback<TResponse>; 296?: SuccessCallback<TResponse>; 297?: SuccessCallback<TResponse>; 298?: SuccessCallback<TResponse>; 299?: SuccessCallback<TResponse>; 304?: SuccessCallback<TResponse>; 300?: ErrorCallback; 301?: ErrorCallback; 302?: ErrorCallback; 303?: ErrorCallback; 305?: ErrorCallback; 306?: ErrorCallback; 307?: ErrorCallback; 308?: ErrorCallback; 309?: ErrorCallback; 310?: ErrorCallback; 311?: ErrorCallback; 312?: ErrorCallback; 313?: ErrorCallback; 314?: ErrorCallback; 315?: ErrorCallback; 316?: ErrorCallback; 317?: ErrorCallback; 318?: ErrorCallback; 319?: ErrorCallback; 320?: ErrorCallback; 321?: ErrorCallback; 322?: ErrorCallback; 323?: ErrorCallback; 324?: ErrorCallback; 325?: ErrorCallback; 326?: ErrorCallback; 327?: ErrorCallback; 328?: ErrorCallback; 329?: ErrorCallback; 330?: ErrorCallback; 331?: ErrorCallback; 332?: ErrorCallback; 333?: ErrorCallback; 334?: ErrorCallback; 335?: ErrorCallback; 336?: ErrorCallback; 337?: ErrorCallback; 338?: ErrorCallback; 339?: ErrorCallback; 340?: ErrorCallback; 341?: ErrorCallback; 342?: ErrorCallback; 343?: ErrorCallback; 344?: ErrorCallback; 345?: ErrorCallback; 346?: ErrorCallback; 347?: ErrorCallback; 348?: ErrorCallback; 349?: ErrorCallback; 350?: ErrorCallback; 351?: ErrorCallback; 352?: ErrorCallback; 353?: ErrorCallback; 354?: ErrorCallback; 355?: ErrorCallback; 356?: ErrorCallback; 357?: ErrorCallback; 358?: ErrorCallback; 359?: ErrorCallback; 360?: ErrorCallback; 361?: ErrorCallback; 362?: ErrorCallback; 363?: ErrorCallback; 364?: ErrorCallback; 365?: ErrorCallback; 366?: ErrorCallback; 367?: ErrorCallback; 368?: ErrorCallback; 369?: ErrorCallback; 370?: ErrorCallback; 371?: ErrorCallback; 372?: ErrorCallback; 373?: ErrorCallback; 374?: ErrorCallback; 375?: ErrorCallback; 376?: ErrorCallback; 377?: ErrorCallback; 378?: ErrorCallback; 379?: ErrorCallback; 380?: ErrorCallback; 381?: ErrorCallback; 382?: ErrorCallback; 383?: ErrorCallback; 384?: ErrorCallback; 385?: ErrorCallback; 386?: ErrorCallback; 387?: ErrorCallback; 388?: ErrorCallback; 389?: ErrorCallback; 390?: ErrorCallback; 391?: ErrorCallback; 392?: ErrorCallback; 393?: ErrorCallback; 394?: ErrorCallback; 395?: ErrorCallback; 396?: ErrorCallback; 397?: ErrorCallback; 398?: ErrorCallback; 399?: ErrorCallback; 400?: ErrorCallback; 401?: ErrorCallback; 402?: ErrorCallback; 403?: ErrorCallback; 404?: ErrorCallback; 405?: ErrorCallback; 406?: ErrorCallback; 407?: ErrorCallback; 408?: ErrorCallback; 409?: ErrorCallback; 410?: ErrorCallback; 411?: ErrorCallback; 412?: ErrorCallback; 413?: ErrorCallback; 414?: ErrorCallback; 415?: ErrorCallback; 416?: ErrorCallback; 417?: ErrorCallback; 418?: ErrorCallback; 419?: ErrorCallback; 420?: ErrorCallback; 421?: ErrorCallback; 422?: ErrorCallback; 423?: ErrorCallback; 424?: ErrorCallback; 425?: ErrorCallback; 426?: ErrorCallback; 427?: ErrorCallback; 428?: ErrorCallback; 429?: ErrorCallback; 430?: ErrorCallback; 431?: ErrorCallback; 432?: ErrorCallback; 433?: ErrorCallback; 434?: ErrorCallback; 435?: ErrorCallback; 436?: ErrorCallback; 437?: ErrorCallback; 438?: ErrorCallback; 439?: ErrorCallback; 440?: ErrorCallback; 441?: ErrorCallback; 442?: ErrorCallback; 443?: ErrorCallback; 444?: ErrorCallback; 445?: ErrorCallback; 446?: ErrorCallback; 447?: ErrorCallback; 448?: ErrorCallback; 449?: ErrorCallback; 450?: ErrorCallback; 451?: ErrorCallback; 452?: ErrorCallback; 453?: ErrorCallback; 454?: ErrorCallback; 455?: ErrorCallback; 456?: ErrorCallback; 457?: ErrorCallback; 458?: ErrorCallback; 459?: ErrorCallback; 460?: ErrorCallback; 461?: ErrorCallback; 462?: ErrorCallback; 463?: ErrorCallback; 464?: ErrorCallback; 465?: ErrorCallback; 466?: ErrorCallback; 467?: ErrorCallback; 468?: ErrorCallback; 469?: ErrorCallback; 470?: ErrorCallback; 471?: ErrorCallback; 472?: ErrorCallback; 473?: ErrorCallback; 474?: ErrorCallback; 475?: ErrorCallback; 476?: ErrorCallback; 477?: ErrorCallback; 478?: ErrorCallback; 479?: ErrorCallback; 480?: ErrorCallback; 481?: ErrorCallback; 482?: ErrorCallback; 483?: ErrorCallback; 484?: ErrorCallback; 485?: ErrorCallback; 486?: ErrorCallback; 487?: ErrorCallback; 488?: ErrorCallback; 489?: ErrorCallback; 490?: ErrorCallback; 491?: ErrorCallback; 492?: ErrorCallback; 493?: ErrorCallback; 494?: ErrorCallback; 495?: ErrorCallback; 496?: ErrorCallback; 497?: ErrorCallback; 498?: ErrorCallback; 499?: ErrorCallback; 500?: ErrorCallback; 501?: ErrorCallback; 502?: ErrorCallback; 503?: ErrorCallback; 504?: ErrorCallback; 505?: ErrorCallback; 506?: ErrorCallback; 507?: ErrorCallback; 508?: ErrorCallback; 509?: ErrorCallback; 510?: ErrorCallback; 511?: ErrorCallback; 512?: ErrorCallback; 513?: ErrorCallback; 514?: ErrorCallback; 515?: ErrorCallback; 516?: ErrorCallback; 517?: ErrorCallback; 518?: ErrorCallback; 519?: ErrorCallback; 520?: ErrorCallback; 521?: ErrorCallback; 522?: ErrorCallback; 523?: ErrorCallback; 524?: ErrorCallback; 525?: ErrorCallback; 526?: ErrorCallback; 527?: ErrorCallback; 528?: ErrorCallback; 529?: ErrorCallback; 530?: ErrorCallback; 531?: ErrorCallback; 532?: ErrorCallback; 533?: ErrorCallback; 534?: ErrorCallback; 535?: ErrorCallback; 536?: ErrorCallback; 537?: ErrorCallback; 538?: ErrorCallback; 539?: ErrorCallback; 540?: ErrorCallback; 541?: ErrorCallback; 542?: ErrorCallback; 543?: ErrorCallback; 544?: ErrorCallback; 545?: ErrorCallback; 546?: ErrorCallback; 547?: ErrorCallback; 548?: ErrorCallback; 549?: ErrorCallback; 550?: ErrorCallback; 551?: ErrorCallback; 552?: ErrorCallback; 553?: ErrorCallback; 554?: ErrorCallback; 555?: ErrorCallback; 556?: ErrorCallback; 557?: ErrorCallback; 558?: ErrorCallback; 559?: ErrorCallback; 560?: ErrorCallback; 561?: ErrorCallback; 562?: ErrorCallback; 563?: ErrorCallback; 564?: ErrorCallback; 565?: ErrorCallback; 566?: ErrorCallback; 567?: ErrorCallback; 568?: ErrorCallback; 569?: ErrorCallback; 570?: ErrorCallback; 571?: ErrorCallback; 572?: ErrorCallback; 573?: ErrorCallback; 574?: ErrorCallback; 575?: ErrorCallback; 576?: ErrorCallback; 577?: ErrorCallback; 578?: ErrorCallback; 579?: ErrorCallback; 580?: ErrorCallback; 581?: ErrorCallback; 582?: ErrorCallback; 583?: ErrorCallback; 584?: ErrorCallback; 585?: ErrorCallback; 586?: ErrorCallback; 587?: ErrorCallback; 588?: ErrorCallback; 589?: ErrorCallback; 590?: ErrorCallback; 591?: ErrorCallback; 592?: ErrorCallback; 593?: ErrorCallback; 594?: ErrorCallback; 595?: ErrorCallback; 596?: ErrorCallback; 597?: ErrorCallback; 598?: ErrorCallback; 599?: ErrorCallback; } & { [index: number]: SuccessCallback<TResponse> | ErrorCallback; }; export type XHRFields = Partial<Pick<XMLHttpRequest, 'onreadystatechange' | 'responseType' | 'timeout' | 'withCredentials'>>; export interface EventParams<TResponse = any> extends PlainObject { xhr: XMLHttpRequest; options: Required<OptionsParams<TResponse>> & Options<TResponse>; } export interface SuccessEventParams<TResponse = any> extends EventParams { response: TResponse; } export declare const ajaxStart = "ajaxStart"; export declare const ajaxSuccess = "ajaxSuccess"; export declare const ajaxError = "ajaxError"; export declare const ajaxComplete = "ajaxComplete"; export type EventName = typeof ajaxStart | typeof ajaxSuccess | typeof ajaxError | typeof ajaxComplete; export declare const globalOptions: Partial<Options<any>>; /** * 判断此请求方法是否通过查询字符串提交参数 * @param method 请求方法,大写 */ export declare const isQueryStringData: (method: Uppercase<Method>) => method is "GET" | "HEAD"; /** * 添加参数到 URL 上,且 URL 中不存在 ? 时,自动把第一个 & 替换为 ? * @param url * @param query */ export declare const appendQuery: (url: string, query: string) => string; /** * url 是否跨域 * @param url */ export declare const isCrossDomain: (url: string) => boolean; /** * HTTP 状态码是否表示请求成功 * @param status */ export declare const isHttpStatusSuccess: (status: number) => boolean; /** * 合并请求参数,参数优先级:options > globalOptions > defaults * @param options */ export declare const mergeOptions: <TResponse>(options: Options<TResponse>) => Required<OptionsParams<TResponse>> & Options<TResponse>;