@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/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
- } else if (key === "_not") {
3783
+ continue;
3784
+ }
3785
+ if (key === "_not") {
3679
3786
  const sub = buildWhere(value);
3680
3787
  if (sub) parts.push(`${key}: { ${sub} }`);
3681
- } else if (typeof value === "object" && value !== null) {
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
- if (typeof value === "string" && value.startsWith("$")) {
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
- async list(input, useCache = true, ttl) {
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 = true, ttl) {
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 = true, ttl) {
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 = true, ttl) {
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