@mdui/jq
Version:
拥有和 jQuery 相似 API 的轻量级 JavaScript 工具库
539 lines (538 loc) • 16.2 kB
TypeScript
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>;