@xfe-repo/web-utils 1.3.5 → 1.3.6
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/dist/chunk-3K5GXOTC.mjs +41 -0
- package/dist/chunk-BVYCWBGX.mjs +52 -0
- package/dist/chunk-R4ZIKHMU.mjs +14 -0
- package/dist/env.d.mts +15 -0
- package/dist/env.mjs +34 -0
- package/dist/host.d.mts +8 -0
- package/dist/host.mjs +35 -0
- package/dist/loadScript.d.mts +12 -0
- package/dist/loadScript.mjs +60 -0
- package/dist/storage.d.mts +5 -0
- package/dist/storage.mjs +7 -0
- package/dist/tools.d.mts +45 -0
- package/dist/tools.mjs +165 -0
- package/dist/valid.d.mts +26 -0
- package/dist/valid.mjs +53 -0
- package/package.json +3 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
+
var __spreadValues = (a, b) => {
|
|
7
|
+
for (var prop in b || (b = {}))
|
|
8
|
+
if (__hasOwnProp.call(b, prop))
|
|
9
|
+
__defNormalProp(a, prop, b[prop]);
|
|
10
|
+
if (__getOwnPropSymbols)
|
|
11
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
+
if (__propIsEnum.call(b, prop))
|
|
13
|
+
__defNormalProp(a, prop, b[prop]);
|
|
14
|
+
}
|
|
15
|
+
return a;
|
|
16
|
+
};
|
|
17
|
+
var __async = (__this, __arguments, generator) => {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
var fulfilled = (value) => {
|
|
20
|
+
try {
|
|
21
|
+
step(generator.next(value));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var rejected = (value) => {
|
|
27
|
+
try {
|
|
28
|
+
step(generator.throw(value));
|
|
29
|
+
} catch (e) {
|
|
30
|
+
reject(e);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
34
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export {
|
|
39
|
+
__spreadValues,
|
|
40
|
+
__async
|
|
41
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// src/valid.ts
|
|
2
|
+
var regPhone = /^1[3-9]\d{9}$/;
|
|
3
|
+
var isValidPhone = (value) => Boolean(regPhone.test(value == null ? void 0 : value.replace(/\s/g, "")));
|
|
4
|
+
var regCaptchaSms = /^\d{4}$/;
|
|
5
|
+
var isValidCaptchaSms = (value) => Boolean(regCaptchaSms.test(value.replace(/\s/g, "")));
|
|
6
|
+
var regValidSms = /^\d{4}$/;
|
|
7
|
+
var isValidSms = (value) => Boolean(regValidSms.test(value.replace(/\s/g, "")));
|
|
8
|
+
var regNumber = /^\d+$/;
|
|
9
|
+
var isValidNumber = (value) => Boolean(regNumber.test(value.replace(/\s/g, "")));
|
|
10
|
+
var regEmail = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
|
|
11
|
+
var isValidEmail = (value) => Boolean(regEmail.test(value.replace(/\s/g, "")));
|
|
12
|
+
var regImgBase64 = /^data:image\/.*;base64,/i;
|
|
13
|
+
var isImgBase64 = (value) => Boolean(regImgBase64.test(value.replace(/\s/g, "")));
|
|
14
|
+
var regBlob = /^blob:/i;
|
|
15
|
+
var isBlob = (value) => Boolean(regBlob.test(value.replace(/\s/g, "")));
|
|
16
|
+
var regTmp = /^(wxfile|http):\/\/tmp/i;
|
|
17
|
+
var isTmp = (value) => Boolean(regTmp.test(value.replace(/\s/g, "")));
|
|
18
|
+
var regImgHeic = /\.(heic)(\?.+)?$/i;
|
|
19
|
+
var isImgHeic = (value) => Boolean(regImgHeic.test(value.replace(/\s/g, "")));
|
|
20
|
+
var regImgSvg = /\.(svg)(\?.+)?$/i;
|
|
21
|
+
var isImgSvg = (value) => Boolean(regImgSvg.test(value.replace(/\s/g, "")));
|
|
22
|
+
var regImgWeChat = /^https:\/\/(thirdwx|wx)\.qlogo\.cn/i;
|
|
23
|
+
var isImgWeChat = (value) => Boolean(regImgWeChat.test(value.replace(/\s/g, "")));
|
|
24
|
+
var regAssets = /^(\/(assets|static))/i;
|
|
25
|
+
var isAssets = (value) => Boolean(regAssets.test(value.replace(/\s/g, "")));
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
regPhone,
|
|
29
|
+
isValidPhone,
|
|
30
|
+
regCaptchaSms,
|
|
31
|
+
isValidCaptchaSms,
|
|
32
|
+
regValidSms,
|
|
33
|
+
isValidSms,
|
|
34
|
+
regNumber,
|
|
35
|
+
isValidNumber,
|
|
36
|
+
regEmail,
|
|
37
|
+
isValidEmail,
|
|
38
|
+
regImgBase64,
|
|
39
|
+
isImgBase64,
|
|
40
|
+
regBlob,
|
|
41
|
+
isBlob,
|
|
42
|
+
regTmp,
|
|
43
|
+
isTmp,
|
|
44
|
+
regImgHeic,
|
|
45
|
+
isImgHeic,
|
|
46
|
+
regImgSvg,
|
|
47
|
+
isImgSvg,
|
|
48
|
+
regImgWeChat,
|
|
49
|
+
isImgWeChat,
|
|
50
|
+
regAssets,
|
|
51
|
+
isAssets
|
|
52
|
+
};
|
package/dist/env.d.mts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type TestEnv = `test${number | ''}`;
|
|
2
|
+
type ApiEnv = 'dev' | 'stage' | 'beta' | 'prod' | TestEnv;
|
|
3
|
+
type Business = 'erp_pc' | 'saas_pc' | 'platform_pc';
|
|
4
|
+
declare const isServer: boolean;
|
|
5
|
+
declare const isClient: boolean;
|
|
6
|
+
declare const isSSR: boolean;
|
|
7
|
+
declare const isIos: boolean;
|
|
8
|
+
declare const isAndroid: boolean;
|
|
9
|
+
declare const isWeiXin: boolean;
|
|
10
|
+
declare const isProduction: boolean;
|
|
11
|
+
declare const release: string;
|
|
12
|
+
declare const apiEnv: ApiEnv;
|
|
13
|
+
declare const business: Business;
|
|
14
|
+
|
|
15
|
+
export { type ApiEnv, type Business, type TestEnv, apiEnv, business, isAndroid, isClient, isIos, isProduction, isSSR, isServer, isWeiXin, release };
|
package/dist/env.mjs
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cookies
|
|
3
|
+
} from "./chunk-R4ZIKHMU.mjs";
|
|
4
|
+
import "./chunk-3K5GXOTC.mjs";
|
|
5
|
+
|
|
6
|
+
// src/env.ts
|
|
7
|
+
var isServer = typeof window === "undefined";
|
|
8
|
+
var isClient = !isServer;
|
|
9
|
+
var isSSR = isClient && Boolean(window.__SSR_RESULT__);
|
|
10
|
+
var navigator;
|
|
11
|
+
try {
|
|
12
|
+
navigator = window.navigator;
|
|
13
|
+
} catch (e) {
|
|
14
|
+
navigator = { userAgent: "" };
|
|
15
|
+
}
|
|
16
|
+
var isIos = /ios/i.test(navigator.userAgent);
|
|
17
|
+
var isAndroid = /android/i.test(navigator.userAgent);
|
|
18
|
+
var isWeiXin = /MicroMessenger/i.test(navigator.userAgent);
|
|
19
|
+
var isProduction = process.env.NODE_ENV === "production";
|
|
20
|
+
var release = process.env.REACT_APP_RELEASE || "dev";
|
|
21
|
+
var apiEnv = process.env.REACT_APP_API_ENV || cookies.get("apiEnv");
|
|
22
|
+
var business = process.env.REACT_APP_BUSINESS;
|
|
23
|
+
export {
|
|
24
|
+
apiEnv,
|
|
25
|
+
business,
|
|
26
|
+
isAndroid,
|
|
27
|
+
isClient,
|
|
28
|
+
isIos,
|
|
29
|
+
isProduction,
|
|
30
|
+
isSSR,
|
|
31
|
+
isServer,
|
|
32
|
+
isWeiXin,
|
|
33
|
+
release
|
|
34
|
+
};
|
package/dist/host.d.mts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ApiEnv, TestEnv } from './env.mjs';
|
|
2
|
+
|
|
3
|
+
declare const isTestEnv: (_apiEnv: ApiEnv) => _apiEnv is TestEnv;
|
|
4
|
+
declare const getEnvApi: (envApis: Record<ApiEnv, string>, _apiEnv: ApiEnv) => string;
|
|
5
|
+
declare function getEnvDomain(hostname: string): string;
|
|
6
|
+
declare const getBffApi: (_apiEnv: ApiEnv) => string;
|
|
7
|
+
|
|
8
|
+
export { getBffApi, getEnvApi, getEnvDomain, isTestEnv };
|
package/dist/host.mjs
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import "./chunk-3K5GXOTC.mjs";
|
|
2
|
+
|
|
3
|
+
// src/host.ts
|
|
4
|
+
var isTestEnv = (_apiEnv) => {
|
|
5
|
+
return _apiEnv.startsWith("test");
|
|
6
|
+
};
|
|
7
|
+
var getEnvApi = (envApis, _apiEnv) => {
|
|
8
|
+
if (isTestEnv(_apiEnv)) {
|
|
9
|
+
return envApis["test"].replace("test", _apiEnv);
|
|
10
|
+
} else {
|
|
11
|
+
return envApis[_apiEnv];
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
function getEnvDomain(hostname) {
|
|
15
|
+
var _a;
|
|
16
|
+
const isTest = hostname.startsWith("test");
|
|
17
|
+
const isStage = hostname.startsWith("stage");
|
|
18
|
+
return isTest || isStage ? ((_a = hostname.match(/[^(\w*)]+.*/)) == null ? void 0 : _a[0]) || hostname : hostname;
|
|
19
|
+
}
|
|
20
|
+
var bffApiList = {
|
|
21
|
+
dev: "http://localhost:6003/",
|
|
22
|
+
test: `http://test.bff-s.t.eshetang.com/`,
|
|
23
|
+
stage: "http://stage.bff-s.t.eshetang.com/",
|
|
24
|
+
beta: "https://bff.beta.eshetang.com/",
|
|
25
|
+
prod: "https://bff.eshetang.com/"
|
|
26
|
+
};
|
|
27
|
+
var getBffApi = (_apiEnv) => {
|
|
28
|
+
return getEnvApi(bffApiList, _apiEnv);
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
getBffApi,
|
|
32
|
+
getEnvApi,
|
|
33
|
+
getEnvDomain,
|
|
34
|
+
isTestEnv
|
|
35
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
declare class LoadScript {
|
|
2
|
+
url: string;
|
|
3
|
+
name: string;
|
|
4
|
+
static script: HTMLScriptElement;
|
|
5
|
+
isLoaded: boolean;
|
|
6
|
+
constructor(url: string, name: string);
|
|
7
|
+
load(): Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
declare const sensorsInstanceID = "sensorsDataAnalytic201505";
|
|
10
|
+
declare function loadSensors(): Promise<any>;
|
|
11
|
+
|
|
12
|
+
export { LoadScript as default, loadSensors, sensorsInstanceID };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__async
|
|
3
|
+
} from "./chunk-3K5GXOTC.mjs";
|
|
4
|
+
|
|
5
|
+
// src/loadScript.ts
|
|
6
|
+
var LoadScript = class _LoadScript {
|
|
7
|
+
constructor(url, name) {
|
|
8
|
+
this.url = url;
|
|
9
|
+
this.name = name;
|
|
10
|
+
this.isLoaded = false;
|
|
11
|
+
this.url = url;
|
|
12
|
+
this.name = name;
|
|
13
|
+
if (!window) throw new Error("must init in client");
|
|
14
|
+
if (window[name]) {
|
|
15
|
+
this.isLoaded = true;
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
_LoadScript.script = document.createElement("script");
|
|
19
|
+
_LoadScript.script.type = "text/javascript";
|
|
20
|
+
_LoadScript.script.src = url;
|
|
21
|
+
_LoadScript.script.async = true;
|
|
22
|
+
const el = document.getElementsByTagName("script")[0];
|
|
23
|
+
if (!el) throw new Error("script tag not found");
|
|
24
|
+
el.parentNode.insertBefore(_LoadScript.script, el);
|
|
25
|
+
}
|
|
26
|
+
load() {
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
if (window[this.name]) {
|
|
29
|
+
this.isLoaded = true;
|
|
30
|
+
resolve(true);
|
|
31
|
+
} else {
|
|
32
|
+
_LoadScript.script.addEventListener("load", () => {
|
|
33
|
+
this.isLoaded = true;
|
|
34
|
+
resolve(true);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
var sensorsInstanceID = "sensorsDataAnalytic201505";
|
|
41
|
+
function loadSensors() {
|
|
42
|
+
return __async(this, null, function* () {
|
|
43
|
+
const sensorsSDK = new LoadScript("https://img.eshetang.com/sensorsdata/sensorsdata.min.js", "sensorsDataAnalytic201505");
|
|
44
|
+
yield sensorsSDK.load();
|
|
45
|
+
const sensors = window[sensorsInstanceID];
|
|
46
|
+
sensors.init({
|
|
47
|
+
server_url: "https://bibp.eshetang.com/xhj_bi/bi.gif",
|
|
48
|
+
heatmap: { clickmap: "default", scroll_notice_map: "default" },
|
|
49
|
+
show_log: false,
|
|
50
|
+
is_track_single_page: true
|
|
51
|
+
});
|
|
52
|
+
sensors.quick("autoTrack");
|
|
53
|
+
return sensors;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
LoadScript as default,
|
|
58
|
+
loadSensors,
|
|
59
|
+
sensorsInstanceID
|
|
60
|
+
};
|
package/dist/storage.mjs
ADDED
package/dist/tools.d.mts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import queryStringOrigin, { ParseOptions, ParsedQuery } from 'query-string';
|
|
2
|
+
export { debounce, throttle } from 'throttle-debounce';
|
|
3
|
+
|
|
4
|
+
declare const queryString: typeof queryStringOrigin;
|
|
5
|
+
declare function parseUrlQuery(options?: ParseOptions): queryStringOrigin.ParsedQuery<string>;
|
|
6
|
+
declare function getUrlQuery(key: string): string | (string | null)[] | null | undefined;
|
|
7
|
+
declare function setUrlQuery(queryJson: ParsedQuery<string | boolean | number>): void;
|
|
8
|
+
/** mock 骨架屏数据 */
|
|
9
|
+
declare const mockSkeletons: <T>(length: number, fn?: (id: number) => Partial<T>) => T[];
|
|
10
|
+
declare const delayHandle: (tick: number) => Promise<void>;
|
|
11
|
+
declare function getBase64(file: File | Blob): Promise<any>;
|
|
12
|
+
declare function getObjectURL(file: File | Blob): string;
|
|
13
|
+
declare function formatterPrice(value?: string | number | undefined): string;
|
|
14
|
+
declare function formatterTax(percentTax: string): string;
|
|
15
|
+
declare function uuid(): string;
|
|
16
|
+
declare const imgRelative2Absolute: (imgUrl?: string) => string;
|
|
17
|
+
declare const resizeAliYun: (imgUrl?: string, width?: number | null, quality?: number) => string;
|
|
18
|
+
type FieldsWithoutArray<FS extends Record<string, any>> = {
|
|
19
|
+
[K in keyof FS]: FS[K] extends any[] | undefined ? string | undefined : FS[K];
|
|
20
|
+
};
|
|
21
|
+
declare const fieldsArrayToString: <FS extends Record<string, any>>(fields: FS) => FieldsWithoutArray<FS>;
|
|
22
|
+
type FieldsWithUndefined<FS extends Record<string, any>> = {
|
|
23
|
+
[K in keyof FS]: undefined;
|
|
24
|
+
};
|
|
25
|
+
declare const fieldsReset: <FS extends Record<string, any>>(fields: FS) => FieldsWithUndefined<FS>;
|
|
26
|
+
type ComboBox<Value = number> = {
|
|
27
|
+
name?: string;
|
|
28
|
+
id?: Value;
|
|
29
|
+
};
|
|
30
|
+
type OptionsType = {
|
|
31
|
+
label: string;
|
|
32
|
+
value: string | number;
|
|
33
|
+
}[];
|
|
34
|
+
type OptionsRecordType<Keys extends string | number | symbol = any> = {
|
|
35
|
+
[key in Keys]?: OptionsType;
|
|
36
|
+
};
|
|
37
|
+
type OptionsMapType<Keys extends string | number | symbol = any> = {
|
|
38
|
+
[key in Keys]?: Record<string, string>;
|
|
39
|
+
};
|
|
40
|
+
declare const combobox2Options: <CB extends Record<string, (ComboBox | ComboBox<string>)[]>>(comboBox: CB) => {
|
|
41
|
+
options: OptionsRecordType<keyof CB>;
|
|
42
|
+
optionsMap: OptionsMapType<keyof CB>;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, getUrlQuery, imgRelative2Absolute, mockSkeletons, parseUrlQuery, queryString, resizeAliYun, setUrlQuery, uuid };
|
package/dist/tools.mjs
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isAssets,
|
|
3
|
+
isBlob,
|
|
4
|
+
isImgBase64,
|
|
5
|
+
isImgHeic,
|
|
6
|
+
isImgSvg,
|
|
7
|
+
isImgWeChat,
|
|
8
|
+
isTmp
|
|
9
|
+
} from "./chunk-BVYCWBGX.mjs";
|
|
10
|
+
import {
|
|
11
|
+
__spreadValues
|
|
12
|
+
} from "./chunk-3K5GXOTC.mjs";
|
|
13
|
+
|
|
14
|
+
// src/tools.ts
|
|
15
|
+
import queryStringOrigin from "query-string";
|
|
16
|
+
import { debounce, throttle } from "throttle-debounce";
|
|
17
|
+
var queryString = queryStringOrigin;
|
|
18
|
+
function parseUrlQuery(options) {
|
|
19
|
+
let { search, hash } = window.location;
|
|
20
|
+
if (!search && hash.indexOf("?") !== -1) {
|
|
21
|
+
search = `?${hash.split("?")[1]}`;
|
|
22
|
+
}
|
|
23
|
+
return queryString.parse(search, options);
|
|
24
|
+
}
|
|
25
|
+
function getUrlQuery(key) {
|
|
26
|
+
const queryJson = parseUrlQuery({ parseBooleans: true, parseNumbers: true });
|
|
27
|
+
return queryJson[key];
|
|
28
|
+
}
|
|
29
|
+
function setUrlQuery(queryJson) {
|
|
30
|
+
let { hash } = window.location;
|
|
31
|
+
const search = queryString.stringify(queryJson, { skipNull: true, skipEmptyString: true });
|
|
32
|
+
const url = `?${search}${hash.split("?")[0]}`;
|
|
33
|
+
window.history.replaceState({}, "", url);
|
|
34
|
+
}
|
|
35
|
+
var mockSkeletons = (length, fn) => {
|
|
36
|
+
const mockList = [];
|
|
37
|
+
fn = fn || ((id) => ({ id }));
|
|
38
|
+
for (let i = -1; i >= -length; i--) {
|
|
39
|
+
mockList.push(fn(i));
|
|
40
|
+
}
|
|
41
|
+
return mockList;
|
|
42
|
+
};
|
|
43
|
+
var delayHandle = (tick) => {
|
|
44
|
+
return new Promise((resolve) => {
|
|
45
|
+
if (tick > 0) {
|
|
46
|
+
setTimeout(() => resolve(), tick * 1e3);
|
|
47
|
+
} else {
|
|
48
|
+
resolve();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
function getBase64(file) {
|
|
53
|
+
return new Promise((resolve, reject) => {
|
|
54
|
+
const reader = new FileReader();
|
|
55
|
+
reader.readAsDataURL(file);
|
|
56
|
+
reader.onload = () => resolve(reader.result);
|
|
57
|
+
reader.onerror = (error) => reject(error);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function getObjectURL(file) {
|
|
61
|
+
let url = "";
|
|
62
|
+
if (window.URL !== void 0) {
|
|
63
|
+
url = window.URL.createObjectURL(file);
|
|
64
|
+
} else if (window.webkitURL !== void 0) {
|
|
65
|
+
url = window.webkitURL.createObjectURL(file);
|
|
66
|
+
}
|
|
67
|
+
return url;
|
|
68
|
+
}
|
|
69
|
+
function formatterPrice(value = "") {
|
|
70
|
+
return parseFloat(`${value}`).toFixed(2);
|
|
71
|
+
}
|
|
72
|
+
function formatterTax(percentTax) {
|
|
73
|
+
const numberTax = parseInt(percentTax);
|
|
74
|
+
return ["0", "100"].includes(percentTax) || isNaN(numberTax) ? "" : `${numberTax}%`;
|
|
75
|
+
}
|
|
76
|
+
function uuid() {
|
|
77
|
+
let s = [];
|
|
78
|
+
let hexDigits = "0123456789abcdef";
|
|
79
|
+
for (let i = 0; i < 36; i++) {
|
|
80
|
+
s[i] = hexDigits.substr(Math.floor(Math.random() * 16), 1);
|
|
81
|
+
}
|
|
82
|
+
s[14] = "4";
|
|
83
|
+
s[19] = hexDigits.substr(s[19] & 3 | 8, 1);
|
|
84
|
+
s[8] = s[13] = s[18] = s[23] = "-";
|
|
85
|
+
return s.join("");
|
|
86
|
+
}
|
|
87
|
+
var imgRelative2Absolute = (imgUrl = "") => {
|
|
88
|
+
if (!imgUrl) return imgUrl;
|
|
89
|
+
const isAbsoluteUrl = imgUrl.startsWith("https");
|
|
90
|
+
if (!isAbsoluteUrl) {
|
|
91
|
+
imgUrl = `https://imgs.xianghuanji.com/${imgUrl.replace(/^\//, "")}`;
|
|
92
|
+
}
|
|
93
|
+
return imgUrl;
|
|
94
|
+
};
|
|
95
|
+
var resizeAliYun = (imgUrl = "", width, quality) => {
|
|
96
|
+
if (!imgUrl) return imgUrl;
|
|
97
|
+
if (isTmp(imgUrl) || isBlob(imgUrl) || isImgWeChat(imgUrl)) {
|
|
98
|
+
return imgUrl;
|
|
99
|
+
}
|
|
100
|
+
if (isImgBase64(imgUrl) || isAssets(imgUrl)) {
|
|
101
|
+
return imgUrl;
|
|
102
|
+
}
|
|
103
|
+
imgUrl = imgRelative2Absolute(imgUrl);
|
|
104
|
+
if (isImgSvg(imgUrl)) {
|
|
105
|
+
return imgUrl;
|
|
106
|
+
}
|
|
107
|
+
imgUrl = imgUrl.replace(/[?#].*/g, "");
|
|
108
|
+
const isHeic = isImgHeic(imgUrl);
|
|
109
|
+
let params = "x-oss-process=image";
|
|
110
|
+
if (width) params = `${params}/resize,w_${width}`;
|
|
111
|
+
if (quality) params = `${params}/quality,Q_${quality}`;
|
|
112
|
+
if (isHeic) params = `${params}/format,jpg`;
|
|
113
|
+
return `${imgUrl}?${params}`;
|
|
114
|
+
};
|
|
115
|
+
var fieldsArrayToString = (fields) => {
|
|
116
|
+
const fieldsCopy = __spreadValues({}, fields);
|
|
117
|
+
Object.keys(fieldsCopy).forEach((key) => {
|
|
118
|
+
const typeKey = key;
|
|
119
|
+
const value = fieldsCopy[typeKey];
|
|
120
|
+
if (Array.isArray(value)) fieldsCopy[typeKey] = value.join(",");
|
|
121
|
+
});
|
|
122
|
+
return fieldsCopy;
|
|
123
|
+
};
|
|
124
|
+
var fieldsReset = (fields) => {
|
|
125
|
+
const fieldsCopy = __spreadValues({}, fields);
|
|
126
|
+
Object.keys(fieldsCopy).forEach((key) => {
|
|
127
|
+
const typeKey = key;
|
|
128
|
+
fieldsCopy[typeKey] = void 0;
|
|
129
|
+
});
|
|
130
|
+
return fieldsCopy;
|
|
131
|
+
};
|
|
132
|
+
var combobox2Options = (comboBox) => {
|
|
133
|
+
const options = {};
|
|
134
|
+
const optionsMap = {};
|
|
135
|
+
Object.keys(comboBox).forEach((key) => {
|
|
136
|
+
const optionsKey = key;
|
|
137
|
+
const optionsList = comboBox[optionsKey];
|
|
138
|
+
options[optionsKey] = (optionsList == null ? void 0 : optionsList.map(({ name = "", id = "" }) => {
|
|
139
|
+
if (!optionsMap[optionsKey]) optionsMap[optionsKey] = {};
|
|
140
|
+
optionsMap[optionsKey][id] = name;
|
|
141
|
+
return { label: name, value: id };
|
|
142
|
+
})) || [];
|
|
143
|
+
});
|
|
144
|
+
return { options, optionsMap };
|
|
145
|
+
};
|
|
146
|
+
export {
|
|
147
|
+
combobox2Options,
|
|
148
|
+
debounce,
|
|
149
|
+
delayHandle,
|
|
150
|
+
fieldsArrayToString,
|
|
151
|
+
fieldsReset,
|
|
152
|
+
formatterPrice,
|
|
153
|
+
formatterTax,
|
|
154
|
+
getBase64,
|
|
155
|
+
getObjectURL,
|
|
156
|
+
getUrlQuery,
|
|
157
|
+
imgRelative2Absolute,
|
|
158
|
+
mockSkeletons,
|
|
159
|
+
parseUrlQuery,
|
|
160
|
+
queryString,
|
|
161
|
+
resizeAliYun,
|
|
162
|
+
setUrlQuery,
|
|
163
|
+
throttle,
|
|
164
|
+
uuid
|
|
165
|
+
};
|
package/dist/valid.d.mts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
declare const regPhone: RegExp;
|
|
2
|
+
declare const isValidPhone: (value: string) => boolean;
|
|
3
|
+
declare const regCaptchaSms: RegExp;
|
|
4
|
+
declare const isValidCaptchaSms: (value: string) => boolean;
|
|
5
|
+
declare const regValidSms: RegExp;
|
|
6
|
+
declare const isValidSms: (value: string) => boolean;
|
|
7
|
+
declare const regNumber: RegExp;
|
|
8
|
+
declare const isValidNumber: (value: string) => boolean;
|
|
9
|
+
declare const regEmail: RegExp;
|
|
10
|
+
declare const isValidEmail: (value: string) => boolean;
|
|
11
|
+
declare const regImgBase64: RegExp;
|
|
12
|
+
declare const isImgBase64: (value: string) => boolean;
|
|
13
|
+
declare const regBlob: RegExp;
|
|
14
|
+
declare const isBlob: (value: string) => boolean;
|
|
15
|
+
declare const regTmp: RegExp;
|
|
16
|
+
declare const isTmp: (value: string) => boolean;
|
|
17
|
+
declare const regImgHeic: RegExp;
|
|
18
|
+
declare const isImgHeic: (value: string) => boolean;
|
|
19
|
+
declare const regImgSvg: RegExp;
|
|
20
|
+
declare const isImgSvg: (value: string) => boolean;
|
|
21
|
+
declare const regImgWeChat: RegExp;
|
|
22
|
+
declare const isImgWeChat: (value: string) => boolean;
|
|
23
|
+
declare const regAssets: RegExp;
|
|
24
|
+
declare const isAssets: (value: string) => boolean;
|
|
25
|
+
|
|
26
|
+
export { isAssets, isBlob, isImgBase64, isImgHeic, isImgSvg, isImgWeChat, isTmp, isValidCaptchaSms, isValidEmail, isValidNumber, isValidPhone, isValidSms, regAssets, regBlob, regCaptchaSms, regEmail, regImgBase64, regImgHeic, regImgSvg, regImgWeChat, regNumber, regPhone, regTmp, regValidSms };
|
package/dist/valid.mjs
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
isAssets,
|
|
3
|
+
isBlob,
|
|
4
|
+
isImgBase64,
|
|
5
|
+
isImgHeic,
|
|
6
|
+
isImgSvg,
|
|
7
|
+
isImgWeChat,
|
|
8
|
+
isTmp,
|
|
9
|
+
isValidCaptchaSms,
|
|
10
|
+
isValidEmail,
|
|
11
|
+
isValidNumber,
|
|
12
|
+
isValidPhone,
|
|
13
|
+
isValidSms,
|
|
14
|
+
regAssets,
|
|
15
|
+
regBlob,
|
|
16
|
+
regCaptchaSms,
|
|
17
|
+
regEmail,
|
|
18
|
+
regImgBase64,
|
|
19
|
+
regImgHeic,
|
|
20
|
+
regImgSvg,
|
|
21
|
+
regImgWeChat,
|
|
22
|
+
regNumber,
|
|
23
|
+
regPhone,
|
|
24
|
+
regTmp,
|
|
25
|
+
regValidSms
|
|
26
|
+
} from "./chunk-BVYCWBGX.mjs";
|
|
27
|
+
import "./chunk-3K5GXOTC.mjs";
|
|
28
|
+
export {
|
|
29
|
+
isAssets,
|
|
30
|
+
isBlob,
|
|
31
|
+
isImgBase64,
|
|
32
|
+
isImgHeic,
|
|
33
|
+
isImgSvg,
|
|
34
|
+
isImgWeChat,
|
|
35
|
+
isTmp,
|
|
36
|
+
isValidCaptchaSms,
|
|
37
|
+
isValidEmail,
|
|
38
|
+
isValidNumber,
|
|
39
|
+
isValidPhone,
|
|
40
|
+
isValidSms,
|
|
41
|
+
regAssets,
|
|
42
|
+
regBlob,
|
|
43
|
+
regCaptchaSms,
|
|
44
|
+
regEmail,
|
|
45
|
+
regImgBase64,
|
|
46
|
+
regImgHeic,
|
|
47
|
+
regImgSvg,
|
|
48
|
+
regImgWeChat,
|
|
49
|
+
regNumber,
|
|
50
|
+
regPhone,
|
|
51
|
+
regTmp,
|
|
52
|
+
regValidSms
|
|
53
|
+
};
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xfe-repo/web-utils",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.6",
|
|
4
4
|
"sideEffects": false,
|
|
5
5
|
"module": "dist/*.js",
|
|
6
6
|
"types": "types/*.d.ts",
|
|
7
7
|
"exports": {
|
|
8
8
|
"./*": {
|
|
9
9
|
"import": {
|
|
10
|
-
"types": "./dist/*.d.
|
|
11
|
-
"default": "./dist/*.
|
|
10
|
+
"types": "./dist/*.d.mts",
|
|
11
|
+
"default": "./dist/*.mjs"
|
|
12
12
|
},
|
|
13
13
|
"require": {
|
|
14
14
|
"types": "./dist/*.d.ts",
|