ipink-util
Version:
util.js
379 lines (377 loc) • 11.9 kB
TypeScript
import { CloseLoadingType, ContentType, InterceptorType, InterceptorTypeEnum, LoadingType, Method, ToastType } from './typing';
import { IToast } from './toast';
export declare interface IConfig {
appName?: string;
appId?: string;
language?: string;
socket_url?: string;
origin_url?: string;
login_url?: string;
use_inner_toast?: boolean;
toast_duration?: number;
webview_path?: string;
[prop: string]: any;
}
export declare class Config {
/**
* App name
*/
static appName: string;
/**
* App id
*/
static appId: string;
/**
* 语言
*/
static language: string;
/**
* Url Option
*/
static socket_url: string;
static origin_url: string;
static login_url: string;
/**
* 组件内部调用内部的toast方法时, 是否用内部定义的html toast, 否则使用uni.showToast
*/
static use_inner_toast: boolean;
/**
* toast 持续时间
*/
static toast_duration: number;
/**
* 非H5使用,打开一个webview页面显示指定的 h5 url 页面
* 页面需接收 【url】query
* 在 jump 方法中非H5平台会使用到该属性
*/
static webview_path: string;
/**
* 设置配置信息
* 如果设置Http相关的配置, 使用HttpConfig.setConfig
*
* 如果主题相关使用 ipink-theme.ThemeConfig.setToken
*/
static setConfig(params: IConfig): void;
}
declare interface IHttpConfig {
/**
* 请求的URL
*/
base_url?: string;
/**
* 超时时间
*/
timeout?: number;
content_type?: ContentType;
/**
* 默认方法
*/
default_method?: Method;
/**
* 获取token函数吗未设置则取 Storage.get(AxiosConfig.token_key)
*/
getToken?: null | (() => string);
/**
* Token 验证类型, 默认: Bearer
*/
token_type?: string;
/**
* 获取Token的Key, 默认使用的是 import {Storage} from "ipink-util";Storage.get
*/
token_key?: string;
/**
* 外部传入的axios包, uniapp 环境下使用 request;js环境下使用 http, 使用request此项忽略
*
* @example `
* import { Config, HttpConfig, createHttp } from "ipink-util"
*
* HttpConfig.setConfig({
* base_url: "http://www.baidu.com"
* })
*
* const http = createHttp();
*
* http<string>({
* url: "/api/public/upload",
* method: "POST",
* data: {},
* headers: {
* 'Content-Type': 'multipart/form-data'
* }
* })
* `
*/
axios?: any | null;
/**
* 请求前缀
*/
api_prefix?: string;
/**
* 上传请求前缀
*/
upload_prefix?: string;
/**
* 文件上传后后段接收的 key
*/
upload_key?: string;
/**
* 文件上传成功后用来取值,仅限于 example
* 单文件上传 取data, data[0];多文件直接返回data
* 如果设置了 upload_receive_key , 则会判定data不存在,会在顶级结构取该属性, 取不到则会取 data[upload_receive_key]
* @example `
* {
* data: "https://.../demo.png",
* // or
* data: ["https://.../demo.png"]
* }
* `
*/
upload_receive_key?: string;
/**
* 错误弹窗体方法
*/
toast?: null | ToastType;
/**
* 报错时是否调用toast
*/
show_toast?: boolean;
/**
* 接口请求时是否开启loading, 仅适用与uniapp环境下
*/
show_loading?: boolean;
loading?: null | LoadingType;
closeLoading?: null | CloseLoadingType;
/**
* 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确, 否则赋值 [ok:false]
*/
code_key?: string;
/**
* 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确,依赖为该值 默认为 1
*/
code_value?: string | number;
/**
* 默认错误信息
*/
default_error_msg?: string;
/**
* http 请求拦截器, 在这里可设置自定义操作
* @param type 拦截到的类型
* @param data 可修改的源数据, return data 即修改完成
*
* @example `
* HttpConfig.interceptor = (type: InterceptorTypeEnum, data: any) => {
*
* switch (type) {
* // 请求前,对配置和入参做一些处理
* case "BeforeRequest":
* // 执行中, data为RequestTask, 可执行 RequestTask.abort() 终止请求
* case "ExecRequest":
* typeof data = { abort: () => void }
* break;
* // 请求完成,对出参做一些处理, 例如: 整体出参揭秘等
* case "AfterRequest":
* break;
* // upload 方法,选择文件后对选择的文件做一些处理;虽然该函数提供 choosedCallback:() => boolean 入参函数
* case "AfterChooseFile":
* break;
* // 调用UploadFile前,对配置和入参做一些处理
* case "BeforeUpload":
* break;
* // 调用UploadFile时, 对请求进行管理
* case "ExecUpload":
* typeof data = {
* abort: () => void
* onProgressUpdate: ({progress: number, totalBytesSent: number, totalBytesExpectedToSend: number}) => {} // 监听上传进度变化
* onHeadersReceived // 仅微信小程序平台支持, 见官方文档
* offProgressUpdate // 仅微信小程序平台支持, 见官方文档
* offHeadersReceived // 仅微信小程序平台支持, 见官方文档
* }
* break;
* // UploadFile | UploadMoreFile 方法,对上传完成后的数据进行一些处理
* case "AfterUpload":
* break;
*
*
* }
* return data
* }
* `
*/
interceptor?: InterceptorType;
}
/**
* 使用本工具包的Http请求, 需要设置该配置, 不用则忽略
*/
export declare class HttpConfig {
/**
* 请求的URL
*/
static base_url: string;
/**
* 超时时间
*/
static timeout: number;
static content_type: string;
/**
* 默认方法
*/
static default_method: Method;
/**
* 获取token函数吗未设置则取 Storage.get(AxiosConfig.token_key)
*/
static getToken: null | (() => string);
static token_type: string;
/**
* 获取Token的Key, 默认使用的是 import {Storage} from "ipink-util";Storage.get
*/
static token_key: string;
/**
* 外部传入的axios包, uniapp 环境下使用 request;js环境下使用 http, 使用request此项忽略
*
* @example `
* import { Config, HttpConfig, createHttp } from "ipink-util"
*
* HttpConfig.setConfig({
* base_url: "http://www.baidu.com"
* })
*
* const http = createHttp();
*
* http<string>({
* url: "/api/public/upload",
* method: "POST",
* data: {},
* headers: {
* 'Content-Type': 'multipart/form-data'
* }
* })
* `
*/
static axios: any | null;
/**
* 请求前缀
*/
static api_prefix: string;
/**
* 上传请求前缀
*/
static upload_prefix: string;
/**
* 文件上传成功后用来取值,仅限于 example
* 单文件上传 取data, data[0];多文件直接返回data
* 如果设置了 upload_receive_key , 则会判定data不存在,会在顶级结构取该属性, 取不到则会取 data[upload_receive_key]
* @example `
* {
* data: "https://.../demo.png",
* // or
* data: ["https://.../demo.png"]
* }
* `
*/
static upload_receive_key: string;
/**
* 文件上传后后段接收的 key
*/
static upload_key?: string;
/**
* 错误弹窗体方法
*/
static toast: null | ((title: string | IToast) => void);
/**
* 报错时是否调用toast
*/
static show_toast: boolean;
/**
* 接口请求时是否开启loading, 仅适用与uniapp环境下
*/
static show_loading: boolean;
static loading: null | LoadingType;
static closeLoading: null | CloseLoadingType;
/**
* 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确, 否则赋值 [ok:false]
*/
static code_key: string;
/**
* 判断StatusCode == 200的情况下,根据该值判断接口出餐是否逻辑正确,依赖为该值 默认为 1
*/
static code_value: string | number;
/**
* 默认错误信息
*/
static default_error_msg: string;
/**
* http 请求拦截器, 在这里可设置自定义操作
* @param type 拦截到的类型
* @param data 可修改的源数据, return data 即修改完成
*
* @example `
* HttpConfig.interceptor = (type: InterceptorTypeEnum, data: any) => {
*
* switch (type) {
* // 请求前,对配置和入参做一些处理
* case "BeforeRequest":
* // 执行中, data为RequestTask, 可执行 RequestTask.abort() 终止请求
* case "ExecRequest":
* typeof data = { abort: () => void }
* break;
* // 请求完成,对出参做一些处理, 例如: 整体出参揭秘等
* case "AfterRequest":
* break;
* // upload 方法,选择文件后对选择的文件做一些处理;虽然该函数提供 choosedCallback:() => boolean 入参函数
* case "AfterChooseFile":
* break;
* // 调用UploadFile前,对配置和入参做一些处理
* case "BeforeUpload":
* break;
* // 调用UploadFile时, 对请求进行管理
* case "ExecUpload":
* typeof data = {
* abort: () => void
* onProgressUpdate: ({progress: number, totalBytesSent: number, totalBytesExpectedToSend: number}) => {} // 监听上传进度变化
* onHeadersReceived // 仅微信小程序平台支持, 见官方文档
* offProgressUpdate // 仅微信小程序平台支持, 见官方文档
* offHeadersReceived // 仅微信小程序平台支持, 见官方文档
* }
* break;
* // UploadFile | UploadMoreFile 方法,对上传完成后的数据进行一些处理
* case "AfterUpload":
* break;
*
*
* }
* return data
* }
* `
*/
static interceptor: null | InterceptorType;
/**
* 设置默认配置
* @param params { IHttpConfig }
*/
static setConfig(params: IHttpConfig): void;
}
/**
* 拦截器内部盼盼是否存在,存在即调用调用
* @param type
* @param data
*/
export declare function interceptor(type: InterceptorTypeEnum, data: any): any;
/**
* Window | Self | GlobalThis 对象
*/
export declare const win: Window;
/**
* 获取调用该方法的环境sdk
* 部分特殊系统级api封装; 仅支持 uniapp wx
* 使用 getSdk请关闭uniapp的摇树; 这里仅用来判断是否存在sdk
* @example `
* import { getSdk } from "ipink-util"
* // uniapp
* getSdk() === uni
* // wx
* getSdk() === wx
* `
*/
export declare const getSdk: () => Uni;
export declare const ConfigBase: typeof Config;
export {};