@ctil/gql 1.0.19 → 1.0.21
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/README.md +269 -269
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/{fp.esm-VY6KF7TP.js → fp.esm-QIG5OYFT.js} +3 -1
- package/dist/{fp.esm-VY6KF7TP.js.map → fp.esm-QIG5OYFT.js.map} +1 -1
- package/dist/index.cjs +554 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +337 -56
- package/dist/index.d.ts +337 -56
- package/dist/index.js +488 -15
- package/dist/index.js.map +1 -1
- package/package.json +53 -53
package/dist/index.cjs
CHANGED
|
@@ -2744,25 +2744,96 @@ var init_fp_esm = __esm({
|
|
|
2744
2744
|
// src/index.ts
|
|
2745
2745
|
var index_exports = {};
|
|
2746
2746
|
__export(index_exports, {
|
|
2747
|
+
add: () => add,
|
|
2748
|
+
addDays: () => addDays,
|
|
2747
2749
|
auth: () => auth,
|
|
2750
|
+
base64Decode: () => base64Decode,
|
|
2751
|
+
base64Encode: () => base64Encode,
|
|
2752
|
+
base64ToFile: () => base64ToFile,
|
|
2753
|
+
capitalize: () => capitalize,
|
|
2754
|
+
ceil: () => ceil,
|
|
2748
2755
|
clearHeaders: () => clearHeaders,
|
|
2756
|
+
countSubstr: () => countSubstr,
|
|
2757
|
+
deepClone: () => deepClone,
|
|
2758
|
+
diffDays: () => diffDays,
|
|
2759
|
+
difference: () => difference,
|
|
2760
|
+
divide: () => divide,
|
|
2761
|
+
fileToBase64: () => fileToBase64,
|
|
2762
|
+
flatten: () => flatten,
|
|
2763
|
+
floor: () => floor,
|
|
2764
|
+
formatDate: () => formatDate,
|
|
2765
|
+
formatMoney: () => formatMoney,
|
|
2766
|
+
formatSize: () => formatSize,
|
|
2767
|
+
fromNow: () => fromNow,
|
|
2768
|
+
get: () => get,
|
|
2749
2769
|
getBrowserDeviceInfo: () => getBrowserDeviceInfo,
|
|
2750
2770
|
getClient: () => getClient,
|
|
2751
2771
|
getDeviceInfo: () => getDeviceInfo,
|
|
2772
|
+
getEndOfDay: () => getEndOfDay,
|
|
2773
|
+
getEndOfMonth: () => getEndOfMonth,
|
|
2774
|
+
getEndOfWeek: () => getEndOfWeek,
|
|
2775
|
+
getEndpoint: () => getEndpoint,
|
|
2776
|
+
getExtName: () => getExtName,
|
|
2777
|
+
getHeader: () => getHeader,
|
|
2778
|
+
getHeaders: () => getHeaders,
|
|
2779
|
+
getLoginInfo: () => getLoginInfo,
|
|
2780
|
+
getLoginRoles: () => getLoginRoles,
|
|
2752
2781
|
getRateLimitConfig: () => getRateLimitConfig,
|
|
2782
|
+
getStartOfDay: () => getStartOfDay,
|
|
2783
|
+
getStartOfMonth: () => getStartOfMonth,
|
|
2784
|
+
getStartOfWeek: () => getStartOfWeek,
|
|
2785
|
+
getToken: () => getToken,
|
|
2753
2786
|
gql: () => gql,
|
|
2787
|
+
gqlBuilder: () => builders_exports,
|
|
2788
|
+
groupBy: () => groupBy,
|
|
2789
|
+
hashCode: () => hashCode,
|
|
2790
|
+
inRange: () => inRange,
|
|
2754
2791
|
initGraphQLClient: () => initGraphQLClient,
|
|
2792
|
+
intersection: () => intersection,
|
|
2793
|
+
isEmail: () => isEmail,
|
|
2794
|
+
isEmptyObject: () => isEmptyObject,
|
|
2795
|
+
isEqual: () => isEqual,
|
|
2796
|
+
isLeapYear: () => isLeapYear,
|
|
2797
|
+
isNumeric: () => isNumeric,
|
|
2798
|
+
kebabToCamel: () => kebabToCamel,
|
|
2799
|
+
md5: () => md5,
|
|
2800
|
+
merge: () => merge,
|
|
2801
|
+
multiply: () => multiply,
|
|
2755
2802
|
mutation: () => mutation,
|
|
2803
|
+
omit: () => omit,
|
|
2756
2804
|
oss: () => oss,
|
|
2805
|
+
pick: () => pick,
|
|
2757
2806
|
query: () => query,
|
|
2807
|
+
randomInt: () => randomInt,
|
|
2808
|
+
randomString: () => randomString,
|
|
2809
|
+
removeAllSpace: () => removeAllSpace,
|
|
2758
2810
|
removeHeader: () => removeHeader,
|
|
2759
2811
|
removeToken: () => removeToken,
|
|
2812
|
+
reverse: () => reverse,
|
|
2813
|
+
round: () => round2,
|
|
2814
|
+
roundWithPrecision: () => roundWithPrecision,
|
|
2815
|
+
secondsToTime: () => secondsToTime,
|
|
2816
|
+
set: () => set,
|
|
2760
2817
|
setEndpoint: () => setEndpoint,
|
|
2761
2818
|
setHeader: () => setHeader,
|
|
2762
2819
|
setHeaders: () => setHeaders,
|
|
2763
2820
|
setRateLimitConfig: () => setRateLimitConfig,
|
|
2764
2821
|
setToken: () => setToken,
|
|
2822
|
+
simpleSHA1: () => simpleSHA1,
|
|
2765
2823
|
sms: () => sms,
|
|
2824
|
+
subtract: () => subtract,
|
|
2825
|
+
toCamelCase: () => toCamelCase,
|
|
2826
|
+
toFixed: () => toFixed,
|
|
2827
|
+
toNonExponential: () => toNonExponential,
|
|
2828
|
+
toNumber: () => toNumber,
|
|
2829
|
+
toPercent: () => toPercent,
|
|
2830
|
+
toSnakeCase: () => toSnakeCase,
|
|
2831
|
+
trim: () => trim,
|
|
2832
|
+
truncate: () => truncate,
|
|
2833
|
+
uncapitalize: () => uncapitalize,
|
|
2834
|
+
unflatten: () => unflatten,
|
|
2835
|
+
union: () => union,
|
|
2836
|
+
unique: () => unique,
|
|
2766
2837
|
useInterceptor: () => useInterceptor
|
|
2767
2838
|
});
|
|
2768
2839
|
module.exports = __toCommonJS(index_exports);
|
|
@@ -3666,6 +3737,40 @@ async function execute(payload) {
|
|
|
3666
3737
|
return client2.request(payload.query, payload.variables);
|
|
3667
3738
|
}
|
|
3668
3739
|
|
|
3740
|
+
// src/builders/index.ts
|
|
3741
|
+
var builders_exports = {};
|
|
3742
|
+
__export(builders_exports, {
|
|
3743
|
+
buildCommonResultSelection: () => buildCommonResultSelection,
|
|
3744
|
+
buildDataValue: () => buildDataValue,
|
|
3745
|
+
buildFields: () => buildFields,
|
|
3746
|
+
buildGraphQLGetFilePreview: () => buildGraphQLGetFilePreview,
|
|
3747
|
+
buildGraphQLMutationBatchInsert: () => buildGraphQLMutationBatchInsert,
|
|
3748
|
+
buildGraphQLMutationBatchUpdate: () => buildGraphQLMutationBatchUpdate,
|
|
3749
|
+
buildGraphQLMutationDelete: () => buildGraphQLMutationDelete,
|
|
3750
|
+
buildGraphQLMutationDeleteById: () => buildGraphQLMutationDeleteById,
|
|
3751
|
+
buildGraphQLMutationInsertOne: () => buildGraphQLMutationInsertOne,
|
|
3752
|
+
buildGraphQLMutationLogin: () => buildGraphQLMutationLogin,
|
|
3753
|
+
buildGraphQLMutationLogout: () => buildGraphQLMutationLogout,
|
|
3754
|
+
buildGraphQLMutationLogoutAllDevices: () => buildGraphQLMutationLogoutAllDevices,
|
|
3755
|
+
buildGraphQLMutationLogoutDevice: () => buildGraphQLMutationLogoutDevice,
|
|
3756
|
+
buildGraphQLMutationRefreshToken: () => buildGraphQLMutationRefreshToken,
|
|
3757
|
+
buildGraphQLMutationRegisterUser: () => buildGraphQLMutationRegisterUser,
|
|
3758
|
+
buildGraphQLMutationSendCode: () => buildGraphQLMutationSendCode,
|
|
3759
|
+
buildGraphQLMutationUpdate: () => buildGraphQLMutationUpdate,
|
|
3760
|
+
buildGraphQLMutationUpdateByPk: () => buildGraphQLMutationUpdateByPk,
|
|
3761
|
+
buildGraphQLMutationVerifyCode: () => buildGraphQLMutationVerifyCode,
|
|
3762
|
+
buildGraphQLQueryAggregate: () => buildGraphQLQueryAggregate,
|
|
3763
|
+
buildGraphQLQueryByIdFixed: () => buildGraphQLQueryByIdFixed,
|
|
3764
|
+
buildGraphQLQueryList: () => buildGraphQLQueryList,
|
|
3765
|
+
buildGraphQLQueryPageList: () => buildGraphQLQueryPageList,
|
|
3766
|
+
buildGraphQLUploadPresignedUrl: () => buildGraphQLUploadPresignedUrl,
|
|
3767
|
+
buildMutationFields: () => buildMutationFields,
|
|
3768
|
+
buildWhere: () => buildWhere,
|
|
3769
|
+
formatGraphQLValue: () => formatGraphQLValue,
|
|
3770
|
+
generateOperationName: () => generateOperationName,
|
|
3771
|
+
toPascalCase: () => toPascalCase
|
|
3772
|
+
});
|
|
3773
|
+
|
|
3669
3774
|
// src/builders/baseType.ts
|
|
3670
3775
|
function buildWhere(where) {
|
|
3671
3776
|
if (!where) return "";
|
|
@@ -3675,18 +3780,27 @@ function buildWhere(where) {
|
|
|
3675
3780
|
if (key === "_and" || key === "_or") {
|
|
3676
3781
|
const sub = value.map((w) => `{ ${buildWhere(w)} }`).filter(Boolean).join(", ");
|
|
3677
3782
|
if (sub) parts.push(`${key}: [${sub}]`);
|
|
3678
|
-
|
|
3783
|
+
continue;
|
|
3784
|
+
}
|
|
3785
|
+
if (key === "_not") {
|
|
3679
3786
|
const sub = buildWhere(value);
|
|
3680
3787
|
if (sub) parts.push(`${key}: { ${sub} }`);
|
|
3681
|
-
|
|
3788
|
+
continue;
|
|
3789
|
+
}
|
|
3790
|
+
if (Array.isArray(value)) {
|
|
3791
|
+
const list = value.map((v) => JSON.stringify(v)).join(", ");
|
|
3792
|
+
parts.push(`${key}: [${list}]`);
|
|
3793
|
+
continue;
|
|
3794
|
+
}
|
|
3795
|
+
if (typeof value === "object" && value !== null) {
|
|
3682
3796
|
const sub = buildWhere(value);
|
|
3683
|
-
parts.push(`${key}: { ${sub} }`);
|
|
3797
|
+
if (sub) parts.push(`${key}: { ${sub} }`);
|
|
3798
|
+
continue;
|
|
3799
|
+
}
|
|
3800
|
+
if (typeof value === "string" && value.startsWith("$")) {
|
|
3801
|
+
parts.push(`${key}: ${value}`);
|
|
3684
3802
|
} else {
|
|
3685
|
-
|
|
3686
|
-
parts.push(`${key}: ${value}`);
|
|
3687
|
-
} else {
|
|
3688
|
-
parts.push(`${key}: ${JSON.stringify(value)}`);
|
|
3689
|
-
}
|
|
3803
|
+
parts.push(`${key}: ${JSON.stringify(value)}`);
|
|
3690
3804
|
}
|
|
3691
3805
|
}
|
|
3692
3806
|
return parts.join(", ");
|
|
@@ -3752,6 +3866,24 @@ function formatGraphQLValue(value) {
|
|
|
3752
3866
|
}
|
|
3753
3867
|
return JSON.stringify(value);
|
|
3754
3868
|
}
|
|
3869
|
+
function generateOperationName(entityName, original) {
|
|
3870
|
+
const lower = original.toLowerCase();
|
|
3871
|
+
const e = entityName.toLowerCase();
|
|
3872
|
+
if (original.startsWith("gql_")) {
|
|
3873
|
+
if (lower.endsWith("pagelist")) return `get${entityName}PageList`;
|
|
3874
|
+
if (lower.endsWith("querylist")) return `${e.toLowerCase()}s`;
|
|
3875
|
+
if (lower.endsWith("getbyid")) return `${e.toLowerCase()}_by_pk`;
|
|
3876
|
+
if (lower.endsWith("aggregate")) return `${e.toLowerCase()}_aggregateount`;
|
|
3877
|
+
if (lower.endsWith("insertone")) return `insert_${e.toLowerCase()}_one`;
|
|
3878
|
+
if (lower.endsWith("batchinsert")) return `insert_${e.toLowerCase()}s`;
|
|
3879
|
+
if (lower.endsWith("batchupdate")) return `update_${e.toLowerCase()}_many`;
|
|
3880
|
+
if (lower.endsWith("updatebypk")) return `update_${e.toLowerCase()}_by_pk`;
|
|
3881
|
+
if (lower.endsWith("update")) return `update_${e.toLowerCase()}`;
|
|
3882
|
+
if (lower.endsWith("deletebyid")) return `delete_${e.toLowerCase()}_by_pk`;
|
|
3883
|
+
if (lower.endsWith("delete")) return `delete_${e.toLowerCase()}`;
|
|
3884
|
+
}
|
|
3885
|
+
return original;
|
|
3886
|
+
}
|
|
3755
3887
|
function toPascalCase(str) {
|
|
3756
3888
|
const camel = str.replace(/[-_ ]+(\w)/g, (_, c) => c ? c.toUpperCase() : "").replace(/^\w/, (c) => c.toLowerCase());
|
|
3757
3889
|
return camel.charAt(0).toUpperCase() + camel.slice(1);
|
|
@@ -4363,6 +4495,9 @@ var CCRequest = class {
|
|
|
4363
4495
|
this.headers.Authorization = `Bearer ${token}`;
|
|
4364
4496
|
this.buildClient();
|
|
4365
4497
|
}
|
|
4498
|
+
getToken() {
|
|
4499
|
+
return this.config.Authorization || this.headers.Authorization;
|
|
4500
|
+
}
|
|
4366
4501
|
removeToken() {
|
|
4367
4502
|
this.config.Authorization = void 0;
|
|
4368
4503
|
delete this.headers.Authorization;
|
|
@@ -4437,12 +4572,21 @@ var CCRequest = class {
|
|
|
4437
4572
|
this.config.endpoint = endpoint;
|
|
4438
4573
|
this.buildClient();
|
|
4439
4574
|
}
|
|
4575
|
+
getEndpoint() {
|
|
4576
|
+
return this.config.endpoint;
|
|
4577
|
+
}
|
|
4440
4578
|
setHeader(key, value) {
|
|
4441
4579
|
this.headers[key] = value;
|
|
4442
4580
|
}
|
|
4581
|
+
getHeader(key) {
|
|
4582
|
+
return this.headers[key];
|
|
4583
|
+
}
|
|
4443
4584
|
setHeaders(headers) {
|
|
4444
4585
|
Object.assign(this.headers, headers);
|
|
4445
4586
|
}
|
|
4587
|
+
getHeaders() {
|
|
4588
|
+
return this.headers;
|
|
4589
|
+
}
|
|
4446
4590
|
removeHeader(key) {
|
|
4447
4591
|
delete this.headers[key];
|
|
4448
4592
|
}
|
|
@@ -4461,7 +4605,6 @@ var CCRequest = class {
|
|
|
4461
4605
|
this.removeLoginInfo();
|
|
4462
4606
|
throw new Error("Login expired. Please login again.");
|
|
4463
4607
|
}
|
|
4464
|
-
console.log("refreshExpired", refreshExpired);
|
|
4465
4608
|
if (accessExpired && !refreshExpired) {
|
|
4466
4609
|
try {
|
|
4467
4610
|
const refreshResult = await auth.refreshToken({
|
|
@@ -4472,7 +4615,6 @@ var CCRequest = class {
|
|
|
4472
4615
|
const newInfo = refreshResult.refreshToken ?? refreshResult;
|
|
4473
4616
|
this.setLoginInfo(newInfo, this._remember);
|
|
4474
4617
|
} catch (err) {
|
|
4475
|
-
console.log("err", err);
|
|
4476
4618
|
this.removeLoginInfo();
|
|
4477
4619
|
throw new Error("Failed to refresh token. Please login again." + err?.message);
|
|
4478
4620
|
}
|
|
@@ -4552,18 +4694,26 @@ function getClient() {
|
|
|
4552
4694
|
var useInterceptor = (interceptor) => getClient().use(interceptor);
|
|
4553
4695
|
var setToken = (token) => getClient().setToken(token);
|
|
4554
4696
|
var removeToken = () => getClient().removeToken();
|
|
4697
|
+
var getToken = () => getClient().getToken();
|
|
4555
4698
|
var setLoginInfo = (loginInfo, remember = false) => getClient().setLoginInfo(loginInfo, remember);
|
|
4556
4699
|
var removeLoginInfo = () => getClient().removeLoginInfo();
|
|
4557
4700
|
var getLoginInfo = () => getClient().getLoginInfo();
|
|
4701
|
+
var getLoginRoles = () => getClient().getLoginInfo()?.roles;
|
|
4558
4702
|
var setEndpoint = (endpoint) => getClient().setEndpoint(endpoint);
|
|
4703
|
+
var getEndpoint = () => getClient().getEndpoint();
|
|
4559
4704
|
var setHeader = (key, value) => getClient().setHeader(key, value);
|
|
4560
4705
|
var setHeaders = (headers) => getClient().setHeaders(headers);
|
|
4706
|
+
var getHeaders = () => getClient().getHeaders();
|
|
4707
|
+
var getHeader = (key) => getClient().getHeader(key);
|
|
4561
4708
|
var removeHeader = (key) => getClient().removeHeader(key);
|
|
4562
4709
|
var clearHeaders = () => getClient().clearHeaders();
|
|
4563
4710
|
|
|
4564
4711
|
// src/core/api/query.ts
|
|
4565
4712
|
var query = {
|
|
4566
|
-
|
|
4713
|
+
// NOTE:
|
|
4714
|
+
// GraphQL batch queries should be implemented via alias + fragment builders.
|
|
4715
|
+
// Deferred until v2 API redesign.
|
|
4716
|
+
async list(input, useCache = false, ttl) {
|
|
4567
4717
|
return rateLimit("list", "query", async () => {
|
|
4568
4718
|
input.operationName = input.operationName + "s";
|
|
4569
4719
|
const { query: q, variables } = buildGraphQLQueryList(input);
|
|
@@ -4577,7 +4727,7 @@ var query = {
|
|
|
4577
4727
|
return result;
|
|
4578
4728
|
});
|
|
4579
4729
|
},
|
|
4580
|
-
async byId(input, useCache =
|
|
4730
|
+
async byId(input, useCache = false, ttl) {
|
|
4581
4731
|
return rateLimit("byId", "query", async () => {
|
|
4582
4732
|
const { query: q, variables } = buildGraphQLQueryByIdFixed(input);
|
|
4583
4733
|
const key = getCacheKey(q, variables);
|
|
@@ -4590,7 +4740,7 @@ var query = {
|
|
|
4590
4740
|
return result;
|
|
4591
4741
|
});
|
|
4592
4742
|
},
|
|
4593
|
-
async page(input, useCache =
|
|
4743
|
+
async page(input, useCache = false, ttl) {
|
|
4594
4744
|
return rateLimit("page", "query", async () => {
|
|
4595
4745
|
const { query: q, variables } = buildGraphQLQueryPageList(input);
|
|
4596
4746
|
const key = getCacheKey(q, variables);
|
|
@@ -4603,7 +4753,7 @@ var query = {
|
|
|
4603
4753
|
return result;
|
|
4604
4754
|
});
|
|
4605
4755
|
},
|
|
4606
|
-
async aggregate(input, useCache =
|
|
4756
|
+
async aggregate(input, useCache = false, ttl) {
|
|
4607
4757
|
return rateLimit("aggregate", "query", async () => {
|
|
4608
4758
|
const { query: q, variables } = buildGraphQLQueryAggregate(input);
|
|
4609
4759
|
const key = getCacheKey(q, variables);
|
|
@@ -4856,27 +5006,417 @@ var oss = {
|
|
|
4856
5006
|
});
|
|
4857
5007
|
}
|
|
4858
5008
|
};
|
|
5009
|
+
|
|
5010
|
+
// src/common/date.ts
|
|
5011
|
+
function formatDate(date, format = "YYYY-MM-DD HH:mm:ss") {
|
|
5012
|
+
const d = typeof date === "string" ? new Date(date) : date;
|
|
5013
|
+
const pad = (n) => n.toString().padStart(2, "0");
|
|
5014
|
+
return format.replace("YYYY", d.getFullYear().toString()).replace("MM", pad(d.getMonth() + 1)).replace("DD", pad(d.getDate())).replace("HH", pad(d.getHours())).replace("mm", pad(d.getMinutes())).replace("ss", pad(d.getSeconds()));
|
|
5015
|
+
}
|
|
5016
|
+
function getStartOfDay(date = /* @__PURE__ */ new Date()) {
|
|
5017
|
+
const d = new Date(date);
|
|
5018
|
+
d.setHours(0, 0, 0, 0);
|
|
5019
|
+
return d;
|
|
5020
|
+
}
|
|
5021
|
+
function getEndOfDay(date = /* @__PURE__ */ new Date()) {
|
|
5022
|
+
const d = new Date(date);
|
|
5023
|
+
d.setHours(23, 59, 59, 999);
|
|
5024
|
+
return d;
|
|
5025
|
+
}
|
|
5026
|
+
function getStartOfWeek(date = /* @__PURE__ */ new Date()) {
|
|
5027
|
+
const d = new Date(date);
|
|
5028
|
+
d.setHours(0, 0, 0, 0);
|
|
5029
|
+
d.setDate(d.getDate() - d.getDay() + 1);
|
|
5030
|
+
return d;
|
|
5031
|
+
}
|
|
5032
|
+
function getEndOfWeek(date = /* @__PURE__ */ new Date()) {
|
|
5033
|
+
const d = new Date(date);
|
|
5034
|
+
d.setHours(23, 59, 59, 999);
|
|
5035
|
+
d.setDate(d.getDate() - d.getDay() + 7);
|
|
5036
|
+
return d;
|
|
5037
|
+
}
|
|
5038
|
+
function getStartOfMonth(date = /* @__PURE__ */ new Date()) {
|
|
5039
|
+
const d = new Date(date);
|
|
5040
|
+
d.setDate(1);
|
|
5041
|
+
d.setHours(0, 0, 0, 0);
|
|
5042
|
+
return d;
|
|
5043
|
+
}
|
|
5044
|
+
function getEndOfMonth(date = /* @__PURE__ */ new Date()) {
|
|
5045
|
+
const d = new Date(date);
|
|
5046
|
+
d.setMonth(d.getMonth() + 1, 0);
|
|
5047
|
+
d.setHours(23, 59, 59, 999);
|
|
5048
|
+
return d;
|
|
5049
|
+
}
|
|
5050
|
+
function isLeapYear(year) {
|
|
5051
|
+
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
|
|
5052
|
+
}
|
|
5053
|
+
function diffDays(date1, date2) {
|
|
5054
|
+
return Math.floor(Math.abs((date2.getTime() - date1.getTime()) / (1e3 * 3600 * 24)));
|
|
5055
|
+
}
|
|
5056
|
+
function addDays(date, n) {
|
|
5057
|
+
const d = new Date(date);
|
|
5058
|
+
d.setDate(d.getDate() + n);
|
|
5059
|
+
return d;
|
|
5060
|
+
}
|
|
5061
|
+
function secondsToTime(sec) {
|
|
5062
|
+
const h = Math.floor(sec / 3600).toString().padStart(2, "0");
|
|
5063
|
+
const m = Math.floor(sec % 3600 / 60).toString().padStart(2, "0");
|
|
5064
|
+
const s = (sec % 60).toString().padStart(2, "0");
|
|
5065
|
+
return `${h}:${m}:${s}`;
|
|
5066
|
+
}
|
|
5067
|
+
function fromNow(date) {
|
|
5068
|
+
const d = new Date(date);
|
|
5069
|
+
const now = /* @__PURE__ */ new Date();
|
|
5070
|
+
const diff = (now.getTime() - d.getTime()) / 1e3;
|
|
5071
|
+
if (diff < 60) return `${Math.floor(diff)}\u79D2\u524D`;
|
|
5072
|
+
if (diff < 3600) return `${Math.floor(diff / 60)}\u5206\u949F\u524D`;
|
|
5073
|
+
if (diff < 86400) return `${Math.floor(diff / 3600)}\u5C0F\u65F6\u524D`;
|
|
5074
|
+
if (diff < 2592e3) return `${Math.floor(diff / 86400)}\u5929\u524D`;
|
|
5075
|
+
return formatDate(d, "YYYY-MM-DD");
|
|
5076
|
+
}
|
|
5077
|
+
|
|
5078
|
+
// src/common/object.ts
|
|
5079
|
+
function deepClone(obj) {
|
|
5080
|
+
return JSON.parse(JSON.stringify(obj));
|
|
5081
|
+
}
|
|
5082
|
+
function merge(obj1, obj2) {
|
|
5083
|
+
return Object.assign({}, obj1, obj2);
|
|
5084
|
+
}
|
|
5085
|
+
function isEmptyObject(obj) {
|
|
5086
|
+
return Object.keys(obj).length === 0;
|
|
5087
|
+
}
|
|
5088
|
+
function pick(obj, keys) {
|
|
5089
|
+
const result = {};
|
|
5090
|
+
keys.forEach((k) => k in obj && (result[k] = obj[k]));
|
|
5091
|
+
return result;
|
|
5092
|
+
}
|
|
5093
|
+
function omit(obj, keys) {
|
|
5094
|
+
const result = { ...obj };
|
|
5095
|
+
keys.forEach((k) => delete result[k]);
|
|
5096
|
+
return result;
|
|
5097
|
+
}
|
|
5098
|
+
function get(obj, path3, def) {
|
|
5099
|
+
return String(path3).split(".").reduce((o, k) => o ? o[k] : def, obj) ?? def;
|
|
5100
|
+
}
|
|
5101
|
+
function set(obj, path3, value) {
|
|
5102
|
+
const keys = String(path3).split(".");
|
|
5103
|
+
let o = obj;
|
|
5104
|
+
keys.slice(0, -1).forEach((k) => {
|
|
5105
|
+
if (!(k in o)) o[k] = {};
|
|
5106
|
+
o = o[k];
|
|
5107
|
+
});
|
|
5108
|
+
o[keys[keys.length - 1]] = value;
|
|
5109
|
+
return obj;
|
|
5110
|
+
}
|
|
5111
|
+
function isEqual(a, b) {
|
|
5112
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
5113
|
+
}
|
|
5114
|
+
function flatten(obj, prefix = "", res = {}) {
|
|
5115
|
+
for (const key in obj) {
|
|
5116
|
+
if (typeof obj[key] === "object" && obj[key] !== null) {
|
|
5117
|
+
flatten(obj[key], prefix + key + ".", res);
|
|
5118
|
+
} else {
|
|
5119
|
+
res[prefix + key] = obj[key];
|
|
5120
|
+
}
|
|
5121
|
+
}
|
|
5122
|
+
return res;
|
|
5123
|
+
}
|
|
5124
|
+
function unflatten(obj) {
|
|
5125
|
+
const res = {};
|
|
5126
|
+
for (const k in obj) {
|
|
5127
|
+
set(res, k, obj[k]);
|
|
5128
|
+
}
|
|
5129
|
+
return res;
|
|
5130
|
+
}
|
|
5131
|
+
|
|
5132
|
+
// src/common/arr.ts
|
|
5133
|
+
function unique(arr) {
|
|
5134
|
+
return Array.from(new Set(arr));
|
|
5135
|
+
}
|
|
5136
|
+
function intersection(arr1, arr2) {
|
|
5137
|
+
return arr1.filter((item) => arr2.includes(item));
|
|
5138
|
+
}
|
|
5139
|
+
function union(arr1, arr2) {
|
|
5140
|
+
return Array.from(/* @__PURE__ */ new Set([...arr1, ...arr2]));
|
|
5141
|
+
}
|
|
5142
|
+
function groupBy(arr, key) {
|
|
5143
|
+
return arr.reduce((acc, cur) => {
|
|
5144
|
+
const groupKey = String(cur[key]);
|
|
5145
|
+
(acc[groupKey] = acc[groupKey] || []).push(cur);
|
|
5146
|
+
return acc;
|
|
5147
|
+
}, {});
|
|
5148
|
+
}
|
|
5149
|
+
function difference(arr1, arr2) {
|
|
5150
|
+
return arr1.filter((item) => !arr2.includes(item));
|
|
5151
|
+
}
|
|
5152
|
+
|
|
5153
|
+
// src/common/number.ts
|
|
5154
|
+
function formatMoney(num) {
|
|
5155
|
+
return Number(num).toLocaleString("en-US", { maximumFractionDigits: 2 });
|
|
5156
|
+
}
|
|
5157
|
+
function add(a, b) {
|
|
5158
|
+
return Math.round((a + b) * 1e10) / 1e10;
|
|
5159
|
+
}
|
|
5160
|
+
function subtract(a, b) {
|
|
5161
|
+
return Math.round((a - b) * 1e10) / 1e10;
|
|
5162
|
+
}
|
|
5163
|
+
function multiply(a, b) {
|
|
5164
|
+
return Math.round(a * b * 1e10) / 1e10;
|
|
5165
|
+
}
|
|
5166
|
+
function divide(a, b) {
|
|
5167
|
+
if (b === 0) return NaN;
|
|
5168
|
+
return Math.round(a / b * 1e10) / 1e10;
|
|
5169
|
+
}
|
|
5170
|
+
function roundWithPrecision(num, precision = 2) {
|
|
5171
|
+
return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision);
|
|
5172
|
+
}
|
|
5173
|
+
function randomInt(min, max) {
|
|
5174
|
+
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
5175
|
+
}
|
|
5176
|
+
function toFixed(num, precision = 2) {
|
|
5177
|
+
return num.toFixed(precision);
|
|
5178
|
+
}
|
|
5179
|
+
function toPercent(num, total, precision = 2) {
|
|
5180
|
+
if (total === 0) return "0%";
|
|
5181
|
+
return (num / total * 100).toFixed(precision) + "%";
|
|
5182
|
+
}
|
|
5183
|
+
function toNonExponential(num) {
|
|
5184
|
+
let m = num.toExponential().match(/^\d(?:\.\d+)?/);
|
|
5185
|
+
return m ? Number(m[0]).toString() : num.toString();
|
|
5186
|
+
}
|
|
5187
|
+
function inRange(num, min, max) {
|
|
5188
|
+
return num >= min && num <= max;
|
|
5189
|
+
}
|
|
5190
|
+
function toNumber(val) {
|
|
5191
|
+
let n = Number(val);
|
|
5192
|
+
return isNaN(n) ? 0 : n;
|
|
5193
|
+
}
|
|
5194
|
+
function ceil(num) {
|
|
5195
|
+
return Math.ceil(num);
|
|
5196
|
+
}
|
|
5197
|
+
function floor(num) {
|
|
5198
|
+
return Math.floor(num);
|
|
5199
|
+
}
|
|
5200
|
+
function round2(num) {
|
|
5201
|
+
return Math.round(num);
|
|
5202
|
+
}
|
|
5203
|
+
|
|
5204
|
+
// src/common/string.ts
|
|
5205
|
+
function toSnakeCase(str) {
|
|
5206
|
+
return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`);
|
|
5207
|
+
}
|
|
5208
|
+
function capitalize(str) {
|
|
5209
|
+
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
5210
|
+
}
|
|
5211
|
+
function truncate(str, length, suffix = "...") {
|
|
5212
|
+
if (str.length <= length) return str;
|
|
5213
|
+
return str.slice(0, length) + suffix;
|
|
5214
|
+
}
|
|
5215
|
+
function removeAllSpace(str) {
|
|
5216
|
+
return str.replace(/\s+/g, "");
|
|
5217
|
+
}
|
|
5218
|
+
function trim(str) {
|
|
5219
|
+
return str.trim();
|
|
5220
|
+
}
|
|
5221
|
+
function toCamelCase(str) {
|
|
5222
|
+
return str.replace(/_([a-z])/g, (_, v) => v.toUpperCase());
|
|
5223
|
+
}
|
|
5224
|
+
function kebabToCamel(str) {
|
|
5225
|
+
return str.replace(/-([a-z])/g, (_, v) => v.toUpperCase());
|
|
5226
|
+
}
|
|
5227
|
+
function uncapitalize(str) {
|
|
5228
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
5229
|
+
}
|
|
5230
|
+
function reverse(str) {
|
|
5231
|
+
return str.split("").reverse().join("");
|
|
5232
|
+
}
|
|
5233
|
+
function isNumeric(str) {
|
|
5234
|
+
return /^-?\d+(\.\d+)?$/.test(str);
|
|
5235
|
+
}
|
|
5236
|
+
function isEmail(str) {
|
|
5237
|
+
return /^[\w-\.]+@[\w-]+(\.[\w-]+)+$/.test(str);
|
|
5238
|
+
}
|
|
5239
|
+
function countSubstr(str, sub) {
|
|
5240
|
+
return str.split(sub).length - 1;
|
|
5241
|
+
}
|
|
5242
|
+
function randomString(len = 8) {
|
|
5243
|
+
const chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678";
|
|
5244
|
+
let str = "";
|
|
5245
|
+
for (let i = 0; i < len; i++) {
|
|
5246
|
+
str += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
5247
|
+
}
|
|
5248
|
+
return str;
|
|
5249
|
+
}
|
|
5250
|
+
|
|
5251
|
+
// src/common/crypto.ts
|
|
5252
|
+
function base64Encode(input) {
|
|
5253
|
+
if (typeof window !== "undefined" && window.btoa) {
|
|
5254
|
+
return window.btoa(unescape(encodeURIComponent(input)));
|
|
5255
|
+
}
|
|
5256
|
+
return Buffer.from(input, "utf-8").toString("base64");
|
|
5257
|
+
}
|
|
5258
|
+
function base64Decode(input) {
|
|
5259
|
+
if (typeof window !== "undefined" && window.atob) {
|
|
5260
|
+
return decodeURIComponent(escape(window.atob(input)));
|
|
5261
|
+
}
|
|
5262
|
+
return Buffer.from(input, "base64").toString("utf-8");
|
|
5263
|
+
}
|
|
5264
|
+
function hashCode(str) {
|
|
5265
|
+
let hash = 0;
|
|
5266
|
+
for (let i = 0; i < str.length; i++) {
|
|
5267
|
+
hash = (hash << 5) - hash + str.charCodeAt(i);
|
|
5268
|
+
hash |= 0;
|
|
5269
|
+
}
|
|
5270
|
+
return hash;
|
|
5271
|
+
}
|
|
5272
|
+
function md5(str) {
|
|
5273
|
+
let hc = "0123456789abcdef";
|
|
5274
|
+
let hash = 0;
|
|
5275
|
+
for (let i = 0; i < str.length; i++) {
|
|
5276
|
+
hash = (hash << 5) - hash + str.charCodeAt(i);
|
|
5277
|
+
hash &= hash;
|
|
5278
|
+
}
|
|
5279
|
+
let v = hash >>> 0;
|
|
5280
|
+
let out = "";
|
|
5281
|
+
for (let i = 0; i < 8; i++) {
|
|
5282
|
+
out = hc.charAt(v & 15) + out;
|
|
5283
|
+
v >>>= 4;
|
|
5284
|
+
}
|
|
5285
|
+
return out.padStart(8, "0");
|
|
5286
|
+
}
|
|
5287
|
+
function simpleSHA1(str) {
|
|
5288
|
+
let hash = 0;
|
|
5289
|
+
for (let i = 0; i < str.length; i++) {
|
|
5290
|
+
hash = (hash << 5) - hash + str.charCodeAt(i);
|
|
5291
|
+
hash |= 0;
|
|
5292
|
+
}
|
|
5293
|
+
return Math.abs(hash).toString(16);
|
|
5294
|
+
}
|
|
5295
|
+
|
|
5296
|
+
// src/common/file.ts
|
|
5297
|
+
function getExtName(filename) {
|
|
5298
|
+
const idx = filename.lastIndexOf(".");
|
|
5299
|
+
return idx > -1 ? filename.slice(idx + 1) : "";
|
|
5300
|
+
}
|
|
5301
|
+
function formatSize(bytes) {
|
|
5302
|
+
if (bytes < 1024) return bytes + "B";
|
|
5303
|
+
let k = 1024;
|
|
5304
|
+
let sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
5305
|
+
let i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
5306
|
+
return (bytes / Math.pow(k, i)).toFixed(2) + sizes[i];
|
|
5307
|
+
}
|
|
5308
|
+
function fileToBase64(file) {
|
|
5309
|
+
return new Promise((resolve, reject) => {
|
|
5310
|
+
const reader = new FileReader();
|
|
5311
|
+
reader.onload = () => resolve(reader.result);
|
|
5312
|
+
reader.onerror = (error) => reject(error);
|
|
5313
|
+
reader.readAsDataURL(file);
|
|
5314
|
+
});
|
|
5315
|
+
}
|
|
5316
|
+
function base64ToFile(dataurl, filename, mimeType) {
|
|
5317
|
+
const arr = dataurl.split(",");
|
|
5318
|
+
const match = arr[0].match(/:(.*?);/);
|
|
5319
|
+
const mime = mimeType || (match ? match[1] : "");
|
|
5320
|
+
const bstr = atob(arr[1]);
|
|
5321
|
+
let n = bstr.length;
|
|
5322
|
+
const u8arr = new Uint8Array(n);
|
|
5323
|
+
while (n--) {
|
|
5324
|
+
u8arr[n] = bstr.charCodeAt(n);
|
|
5325
|
+
}
|
|
5326
|
+
return new File([u8arr], filename, { type: mime });
|
|
5327
|
+
}
|
|
4859
5328
|
// Annotate the CommonJS export names for ESM import in node:
|
|
4860
5329
|
0 && (module.exports = {
|
|
5330
|
+
add,
|
|
5331
|
+
addDays,
|
|
4861
5332
|
auth,
|
|
5333
|
+
base64Decode,
|
|
5334
|
+
base64Encode,
|
|
5335
|
+
base64ToFile,
|
|
5336
|
+
capitalize,
|
|
5337
|
+
ceil,
|
|
4862
5338
|
clearHeaders,
|
|
5339
|
+
countSubstr,
|
|
5340
|
+
deepClone,
|
|
5341
|
+
diffDays,
|
|
5342
|
+
difference,
|
|
5343
|
+
divide,
|
|
5344
|
+
fileToBase64,
|
|
5345
|
+
flatten,
|
|
5346
|
+
floor,
|
|
5347
|
+
formatDate,
|
|
5348
|
+
formatMoney,
|
|
5349
|
+
formatSize,
|
|
5350
|
+
fromNow,
|
|
5351
|
+
get,
|
|
4863
5352
|
getBrowserDeviceInfo,
|
|
4864
5353
|
getClient,
|
|
4865
5354
|
getDeviceInfo,
|
|
5355
|
+
getEndOfDay,
|
|
5356
|
+
getEndOfMonth,
|
|
5357
|
+
getEndOfWeek,
|
|
5358
|
+
getEndpoint,
|
|
5359
|
+
getExtName,
|
|
5360
|
+
getHeader,
|
|
5361
|
+
getHeaders,
|
|
5362
|
+
getLoginInfo,
|
|
5363
|
+
getLoginRoles,
|
|
4866
5364
|
getRateLimitConfig,
|
|
5365
|
+
getStartOfDay,
|
|
5366
|
+
getStartOfMonth,
|
|
5367
|
+
getStartOfWeek,
|
|
5368
|
+
getToken,
|
|
4867
5369
|
gql,
|
|
5370
|
+
gqlBuilder,
|
|
5371
|
+
groupBy,
|
|
5372
|
+
hashCode,
|
|
5373
|
+
inRange,
|
|
4868
5374
|
initGraphQLClient,
|
|
5375
|
+
intersection,
|
|
5376
|
+
isEmail,
|
|
5377
|
+
isEmptyObject,
|
|
5378
|
+
isEqual,
|
|
5379
|
+
isLeapYear,
|
|
5380
|
+
isNumeric,
|
|
5381
|
+
kebabToCamel,
|
|
5382
|
+
md5,
|
|
5383
|
+
merge,
|
|
5384
|
+
multiply,
|
|
4869
5385
|
mutation,
|
|
5386
|
+
omit,
|
|
4870
5387
|
oss,
|
|
5388
|
+
pick,
|
|
4871
5389
|
query,
|
|
5390
|
+
randomInt,
|
|
5391
|
+
randomString,
|
|
5392
|
+
removeAllSpace,
|
|
4872
5393
|
removeHeader,
|
|
4873
5394
|
removeToken,
|
|
5395
|
+
reverse,
|
|
5396
|
+
round,
|
|
5397
|
+
roundWithPrecision,
|
|
5398
|
+
secondsToTime,
|
|
5399
|
+
set,
|
|
4874
5400
|
setEndpoint,
|
|
4875
5401
|
setHeader,
|
|
4876
5402
|
setHeaders,
|
|
4877
5403
|
setRateLimitConfig,
|
|
4878
5404
|
setToken,
|
|
5405
|
+
simpleSHA1,
|
|
4879
5406
|
sms,
|
|
5407
|
+
subtract,
|
|
5408
|
+
toCamelCase,
|
|
5409
|
+
toFixed,
|
|
5410
|
+
toNonExponential,
|
|
5411
|
+
toNumber,
|
|
5412
|
+
toPercent,
|
|
5413
|
+
toSnakeCase,
|
|
5414
|
+
trim,
|
|
5415
|
+
truncate,
|
|
5416
|
+
uncapitalize,
|
|
5417
|
+
unflatten,
|
|
5418
|
+
union,
|
|
5419
|
+
unique,
|
|
4880
5420
|
useInterceptor
|
|
4881
5421
|
});
|
|
4882
5422
|
//# sourceMappingURL=index.cjs.map
|