@xfe-repo/web-utils 1.3.4 → 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.
@@ -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
+ };
@@ -0,0 +1,14 @@
1
+ // src/storage.ts
2
+ import cookie from "js-cookie";
3
+ var cookies = cookie.withConverter({
4
+ read(value) {
5
+ return value;
6
+ },
7
+ write(value) {
8
+ return encodeURIComponent(`${value}`);
9
+ }
10
+ });
11
+
12
+ export {
13
+ cookies
14
+ };
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.js CHANGED
@@ -45,7 +45,6 @@ module.exports = __toCommonJS(env_exports);
45
45
 
46
46
  // src/storage.ts
47
47
  var import_js_cookie = __toESM(require("js-cookie"));
48
- var import_query_string = __toESM(require("query-string"));
49
48
  var cookies = import_js_cookie.default.withConverter({
50
49
  read(value) {
51
50
  return value;
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
+ };
@@ -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
+ };
@@ -0,0 +1,5 @@
1
+ import cookie from 'js-cookie';
2
+
3
+ declare const cookies: cookie.CookiesStatic<string>;
4
+
5
+ export { cookies };
package/dist/storage.d.ts CHANGED
@@ -1,10 +1,5 @@
1
1
  import cookie from 'js-cookie';
2
- import queryStringOrigin, { ParseOptions, ParsedQuery } from 'query-string';
3
2
 
4
- declare const queryString: typeof queryStringOrigin;
5
3
  declare const cookies: cookie.CookiesStatic<string>;
6
- declare function parseUrlQuery(options?: ParseOptions): queryStringOrigin.ParsedQuery<string>;
7
- declare function getUrlQuery(key: string): string | (string | null)[] | null | undefined;
8
- declare function setUrlQuery(queryJson: ParsedQuery<string | boolean | number>): void;
9
4
 
10
- export { cookies, getUrlQuery, parseUrlQuery, queryString, setUrlQuery };
5
+ export { cookies };
package/dist/storage.js CHANGED
@@ -30,16 +30,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // src/storage.ts
31
31
  var storage_exports = {};
32
32
  __export(storage_exports, {
33
- cookies: () => cookies,
34
- getUrlQuery: () => getUrlQuery,
35
- parseUrlQuery: () => parseUrlQuery,
36
- queryString: () => queryString,
37
- setUrlQuery: () => setUrlQuery
33
+ cookies: () => cookies
38
34
  });
39
35
  module.exports = __toCommonJS(storage_exports);
40
36
  var import_js_cookie = __toESM(require("js-cookie"));
41
- var import_query_string = __toESM(require("query-string"));
42
- var queryString = import_query_string.default;
43
37
  var cookies = import_js_cookie.default.withConverter({
44
38
  read(value) {
45
39
  return value;
@@ -48,28 +42,7 @@ var cookies = import_js_cookie.default.withConverter({
48
42
  return encodeURIComponent(`${value}`);
49
43
  }
50
44
  });
51
- function parseUrlQuery(options) {
52
- let { search, hash } = window.location;
53
- if (!search && hash.indexOf("?") !== -1) {
54
- search = `?${hash.split("?")[1]}`;
55
- }
56
- return queryString.parse(search, options);
57
- }
58
- function getUrlQuery(key) {
59
- const queryJson = parseUrlQuery({ parseBooleans: true, parseNumbers: true });
60
- return queryJson[key];
61
- }
62
- function setUrlQuery(queryJson) {
63
- let { hash } = window.location;
64
- const search = queryString.stringify(queryJson, { skipNull: true, skipEmptyString: true });
65
- const url = `?${search}${hash.split("?")[0]}`;
66
- window.history.replaceState({}, "", url);
67
- }
68
45
  // Annotate the CommonJS export names for ESM import in node:
69
46
  0 && (module.exports = {
70
- cookies,
71
- getUrlQuery,
72
- parseUrlQuery,
73
- queryString,
74
- setUrlQuery
47
+ cookies
75
48
  });
@@ -0,0 +1,7 @@
1
+ import {
2
+ cookies
3
+ } from "./chunk-R4ZIKHMU.mjs";
4
+ import "./chunk-3K5GXOTC.mjs";
5
+ export {
6
+ cookies
7
+ };
@@ -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.d.ts CHANGED
@@ -1,5 +1,10 @@
1
+ import queryStringOrigin, { ParseOptions, ParsedQuery } from 'query-string';
1
2
  export { debounce, throttle } from 'throttle-debounce';
2
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;
3
8
  /** mock 骨架屏数据 */
4
9
  declare const mockSkeletons: <T>(length: number, fn?: (id: number) => Partial<T>) => T[];
5
10
  declare const delayHandle: (tick: number) => Promise<void>;
@@ -37,4 +42,4 @@ declare const combobox2Options: <CB extends Record<string, (ComboBox | ComboBox<
37
42
  optionsMap: OptionsMapType<keyof CB>;
38
43
  };
39
44
 
40
- export { type ComboBox, type OptionsMapType, type OptionsRecordType, type OptionsType, combobox2Options, delayHandle, fieldsArrayToString, fieldsReset, formatterPrice, formatterTax, getBase64, getObjectURL, imgRelative2Absolute, mockSkeletons, resizeAliYun, uuid };
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.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
6
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
+ var __getProtoOf = Object.getPrototypeOf;
6
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
7
9
  var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
10
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -29,6 +31,14 @@ var __copyProps = (to, from, except, desc) => {
29
31
  }
30
32
  return to;
31
33
  };
34
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
35
+ // If the importer is in node compatibility mode or this is not an ESM
36
+ // file that has been converted to a CommonJS file using a Babel-
37
+ // compatible transform (i.e. "__esModule" has not been set), then set
38
+ // "default" to the CommonJS "module.exports" for node compatibility.
39
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
40
+ mod
41
+ ));
32
42
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
43
 
34
44
  // src/tools.ts
@@ -43,9 +53,13 @@ __export(tools_exports, {
43
53
  formatterTax: () => formatterTax,
44
54
  getBase64: () => getBase64,
45
55
  getObjectURL: () => getObjectURL,
56
+ getUrlQuery: () => getUrlQuery,
46
57
  imgRelative2Absolute: () => imgRelative2Absolute,
47
58
  mockSkeletons: () => mockSkeletons,
59
+ parseUrlQuery: () => parseUrlQuery,
60
+ queryString: () => queryString,
48
61
  resizeAliYun: () => resizeAliYun,
62
+ setUrlQuery: () => setUrlQuery,
49
63
  throttle: () => import_throttle_debounce.throttle,
50
64
  uuid: () => uuid
51
65
  });
@@ -68,7 +82,26 @@ var regAssets = /^(\/(assets|static))/i;
68
82
  var isAssets = (value) => Boolean(regAssets.test(value.replace(/\s/g, "")));
69
83
 
70
84
  // src/tools.ts
85
+ var import_query_string = __toESM(require("query-string"));
71
86
  var import_throttle_debounce = require("throttle-debounce");
87
+ var queryString = import_query_string.default;
88
+ function parseUrlQuery(options) {
89
+ let { search, hash } = window.location;
90
+ if (!search && hash.indexOf("?") !== -1) {
91
+ search = `?${hash.split("?")[1]}`;
92
+ }
93
+ return queryString.parse(search, options);
94
+ }
95
+ function getUrlQuery(key) {
96
+ const queryJson = parseUrlQuery({ parseBooleans: true, parseNumbers: true });
97
+ return queryJson[key];
98
+ }
99
+ function setUrlQuery(queryJson) {
100
+ let { hash } = window.location;
101
+ const search = queryString.stringify(queryJson, { skipNull: true, skipEmptyString: true });
102
+ const url = `?${search}${hash.split("?")[0]}`;
103
+ window.history.replaceState({}, "", url);
104
+ }
72
105
  var mockSkeletons = (length, fn) => {
73
106
  const mockList = [];
74
107
  fn = fn || ((id) => ({ id }));
@@ -191,9 +224,13 @@ var combobox2Options = (comboBox) => {
191
224
  formatterTax,
192
225
  getBase64,
193
226
  getObjectURL,
227
+ getUrlQuery,
194
228
  imgRelative2Absolute,
195
229
  mockSkeletons,
230
+ parseUrlQuery,
231
+ queryString,
196
232
  resizeAliYun,
233
+ setUrlQuery,
197
234
  throttle,
198
235
  uuid
199
236
  });
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
+ };
@@ -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.4",
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.ts",
11
- "default": "./dist/*.js"
10
+ "types": "./dist/*.d.mts",
11
+ "default": "./dist/*.mjs"
12
12
  },
13
13
  "require": {
14
14
  "types": "./dist/*.d.ts",