@edgenets/utils 0.0.1 → 0.0.3

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.
Files changed (44) hide show
  1. package/README.md +67 -4
  2. package/dist/array/unique.d.ts +2 -0
  3. package/dist/array/unique.d.ts.map +1 -0
  4. package/dist/array/unique.js +4 -0
  5. package/dist/array/unique.js.map +1 -0
  6. package/dist/index.d.ts +7 -4
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +11 -20
  9. package/dist/index.js.map +1 -1
  10. package/dist/types/logger.d.ts +2 -0
  11. package/dist/types/logger.d.ts.map +1 -1
  12. package/dist/types/logger.js +2 -2
  13. package/dist/types/logger.js.map +1 -1
  14. package/dist/types/order.js +12 -15
  15. package/dist/types/order.js.map +1 -1
  16. package/dist/types/product.js +1 -2
  17. package/dist/types/user.js +1 -2
  18. package/dist/utils/generate.util.d.ts +7 -0
  19. package/dist/utils/generate.util.d.ts.map +1 -0
  20. package/dist/utils/generate.util.js +30 -0
  21. package/dist/utils/generate.util.js.map +1 -0
  22. package/dist/utils/generate.utils.d.ts +7 -0
  23. package/dist/utils/generate.utils.d.ts.map +1 -0
  24. package/dist/utils/generate.utils.js +30 -0
  25. package/dist/utils/generate.utils.js.map +1 -0
  26. package/dist/utils/logger.util.d.ts +8 -0
  27. package/dist/utils/logger.util.d.ts.map +1 -0
  28. package/dist/utils/logger.util.js +15 -0
  29. package/dist/utils/logger.util.js.map +1 -0
  30. package/dist/utils/scheduler.util.d.ts +19 -0
  31. package/dist/utils/scheduler.util.d.ts.map +1 -0
  32. package/dist/utils/scheduler.util.js +82 -0
  33. package/dist/utils/scheduler.util.js.map +1 -0
  34. package/dist/utils/string.util.d.ts +6 -0
  35. package/dist/utils/string.util.d.ts.map +1 -0
  36. package/dist/utils/string.util.js +16 -0
  37. package/dist/utils/string.util.js.map +1 -0
  38. package/dist/utils/string.utils.d.ts +6 -0
  39. package/dist/utils/string.utils.d.ts.map +1 -0
  40. package/dist/utils/string.utils.js +16 -0
  41. package/dist/utils/string.utils.js.map +1 -0
  42. package/package.json +9 -2
  43. package/eslint.config.js +0 -16
  44. package/tsconfig.json +0 -13
package/README.md CHANGED
@@ -1,13 +1,76 @@
1
- ## @edgenets/utils
1
+ # @edgenets/utils
2
2
 
3
- ## 该包已经规划好,主要用于存放各种实用工具函数、类型定义和常用的工具方法,如字符串处理、数组操作、日期格式化等。
3
+ Edgenets utilities package containing common types and utilities.
4
4
 
5
- 包含内容:
5
+ ---
6
6
 
7
+ 用于存放各种实用工具函数、类型定义和常用的工具方法,如字符串处理、数组操作、日期格式化等。
8
+
9
+ ---
10
+
11
+ ## Installation
12
+
13
+ ```bash
14
+ npm install @edgenets/utils
15
+ ```
16
+
17
+ ## Usage
18
+
19
+ ### Import utilities
20
+
21
+ ```typescript
22
+ import { capitalize, trim, unique, User } from "@edgenets/utils";
23
+
24
+ // 使用工具函数
25
+ console.log(capitalize("hello")); // "Hello"
26
+ console.log(trim(" hello ")); // "hello"
27
+ console.log(unique([1, 2, 2, 3])); // [1, 2, 3]
28
+
29
+ // 使用 User 类型定义
30
+ const newUser: User.Profile = {
31
+ id: 1,
32
+ name: "John Doe",
33
+ email: "john.doe@example.com",
34
+ createdAt: new Date(),
35
+ updatedAt: new Date(),
36
+ };
7
37
  ```
38
+
39
+ ### 构建和发布
40
+
41
+ 1. **构建**:运行 `npm run build`,会生成 `dist` 文件夹,包含编译后的 JavaScript 和类型定义文件。
42
+
43
+ 2. **发布**:发布包到 npm,可以使用以下命令:
44
+
45
+ ```bash
46
+ npm publish --access public
47
+ ```
48
+
49
+ ##### 包含内容
50
+
51
+ ```text
52
+ @edgenets/utils
53
+ ├── src
54
+ │ ├── types // 类型定义(如 User、Order 等)
55
+ │ │ ├── logger.ts
56
+ │ │ ├── product.ts
57
+ │ │ ├── order.ts
58
+ │ │ └── user.ts
59
+ │ ├── string
60
+ │ │ ├── capitalize.ts
61
+ │ │ └── trim.ts
62
+ │ ├── array
63
+ │ │ └── unique.ts
64
+ │ └── index.ts
65
+ ├── package.json
66
+ ├── tsconfig.json
67
+ └── README.md
68
+ ```
69
+
70
+ ```text
8
71
  • 字符串处理函数
9
72
  • 数组处理函数
10
73
  • 日期处理函数
11
74
  • 通用工具函数(如 debounce、throttle)
12
- 类型定义(如 User、Order 等)
75
+
13
76
  ```
@@ -0,0 +1,2 @@
1
+ export declare function unique<T>(arr: T[]): T[];
2
+ //# sourceMappingURL=unique.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.d.ts","sourceRoot":"","sources":["../../src/array/unique.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAEvC"}
@@ -0,0 +1,4 @@
1
+ export function unique(arr) {
2
+ return [...new Set(arr)];
3
+ }
4
+ //# sourceMappingURL=unique.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique.js","sourceRoot":"","sources":["../../src/array/unique.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,MAAM,CAAI,GAAQ;IAChC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
- export * from "./types/user";
2
- export * from "./types/product";
3
- export * from "./types/logger";
4
- export * from "./types/order";
1
+ export * from "./types/user.js";
2
+ export * from "./types/product.js";
3
+ export * from "./types/logger.js";
4
+ export * from "./types/order.js";
5
+ export { StringUtils } from "./utils/string.util.js";
6
+ export * from "./utils/generate.util.js";
7
+ export * from "./array/unique.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGrD,cAAc,0BAA0B,CAAC;AAGzC,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,21 +1,12 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types/user"), exports);
18
- __exportStar(require("./types/product"), exports);
19
- __exportStar(require("./types/logger"), exports);
20
- __exportStar(require("./types/order"), exports);
1
+ // 导出类型定义
2
+ export * from "./types/user.js";
3
+ export * from "./types/product.js";
4
+ export * from "./types/logger.js";
5
+ export * from "./types/order.js";
6
+ // 导出字符串处理函数
7
+ export { StringUtils } from "./utils/string.util.js";
8
+ // 导出字符串处理函数
9
+ export * from "./utils/generate.util.js";
10
+ // 导出数组处理函数
11
+ export * from "./array/unique.js";
21
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AAEjC,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD,YAAY;AACZ,cAAc,0BAA0B,CAAC;AAEzC,WAAW;AACX,cAAc,mBAAmB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export interface Logger {
2
+ debug(message: string): void;
2
3
  info(message: string): void;
4
+ warn(message: string): void;
3
5
  error(message: string): void;
4
6
  }
5
7
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/types/logger.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAE9B"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/types/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAE9B"}
@@ -1,3 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ // src/interfaces/Logger.ts
2
+ export {};
3
3
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/types/logger.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/types/logger.ts"],"names":[],"mappings":"AAAA,2BAA2B"}
@@ -1,50 +1,47 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ShippingStatus = exports.ShippingMethod = exports.RefundStatus = exports.PaymentStatus = exports.PaymentMethod = exports.OrderStatus = void 0;
4
1
  // 订单状态枚举
5
- var OrderStatus;
2
+ export var OrderStatus;
6
3
  (function (OrderStatus) {
7
4
  OrderStatus["Pending"] = "pending";
8
5
  OrderStatus["Confirmed"] = "confirmed";
9
6
  OrderStatus["Completed"] = "completed";
10
7
  OrderStatus["Canceled"] = "canceled";
11
8
  OrderStatus["Refunded"] = "refunded";
12
- })(OrderStatus || (exports.OrderStatus = OrderStatus = {}));
9
+ })(OrderStatus || (OrderStatus = {}));
13
10
  // 支付方式枚举
14
- var PaymentMethod;
11
+ export var PaymentMethod;
15
12
  (function (PaymentMethod) {
16
13
  PaymentMethod["Online"] = "Online";
17
14
  PaymentMethod["Credit"] = "Credit";
18
15
  PaymentMethod["Points"] = "Points";
19
16
  PaymentMethod["Crypto"] = "Crypto";
20
- })(PaymentMethod || (exports.PaymentMethod = PaymentMethod = {}));
17
+ })(PaymentMethod || (PaymentMethod = {}));
21
18
  // 支付状态枚举
22
- var PaymentStatus;
19
+ export var PaymentStatus;
23
20
  (function (PaymentStatus) {
24
21
  PaymentStatus["Pending"] = "pending";
25
22
  PaymentStatus["Paid"] = "paid";
26
23
  PaymentStatus["Failed"] = "failed";
27
- })(PaymentStatus || (exports.PaymentStatus = PaymentStatus = {}));
24
+ })(PaymentStatus || (PaymentStatus = {}));
28
25
  // 退款状态枚举
29
- var RefundStatus;
26
+ export var RefundStatus;
30
27
  (function (RefundStatus) {
31
28
  RefundStatus["Requested"] = "requested";
32
29
  RefundStatus["Processing"] = "processing";
33
30
  RefundStatus["Completed"] = "completed";
34
31
  RefundStatus["Rejected"] = "rejected";
35
- })(RefundStatus || (exports.RefundStatus = RefundStatus = {}));
32
+ })(RefundStatus || (RefundStatus = {}));
36
33
  // 配送方式枚举
37
- var ShippingMethod;
34
+ export var ShippingMethod;
38
35
  (function (ShippingMethod) {
39
36
  ShippingMethod["Standard"] = "standard";
40
37
  ShippingMethod["Express"] = "express";
41
38
  ShippingMethod["Pickup"] = "pickup";
42
- })(ShippingMethod || (exports.ShippingMethod = ShippingMethod = {}));
39
+ })(ShippingMethod || (ShippingMethod = {}));
43
40
  // 配送状态枚举
44
- var ShippingStatus;
41
+ export var ShippingStatus;
45
42
  (function (ShippingStatus) {
46
43
  ShippingStatus["NotShipped"] = "not_shipped";
47
44
  ShippingStatus["Shipped"] = "shipped";
48
45
  ShippingStatus["Delivered"] = "delivered";
49
- })(ShippingStatus || (exports.ShippingStatus = ShippingStatus = {}));
46
+ })(ShippingStatus || (ShippingStatus = {}));
50
47
  //# sourceMappingURL=order.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":";;;AAsBA,SAAS;AACT,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AA+BD,SAAS;AACT,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,6BAAb,aAAa,QAKxB;AAED,SAAS;AACT,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,SAAS;AACT,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB;AAoBD,SAAS;AACT,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB;AAED,SAAS;AACT,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,4CAA0B,CAAA;IAC1B,qCAAmB,CAAA;IACnB,yCAAuB,CAAA;AACzB,CAAC,EAJW,cAAc,8BAAd,cAAc,QAIzB"}
1
+ {"version":3,"file":"order.js","sourceRoot":"","sources":["../../src/types/order.ts"],"names":[],"mappings":"AAsBA,SAAS;AACT,MAAM,CAAN,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,oCAAqB,CAAA;AACvB,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AA+BD,SAAS;AACT,MAAM,CAAN,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;IACjB,kCAAiB,CAAA;AACnB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,oCAAmB,CAAA;IACnB,8BAAa,CAAA;IACb,kCAAiB,CAAA;AACnB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,YAKX;AALD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,yCAAyB,CAAA;IACzB,uCAAuB,CAAA;IACvB,qCAAqB,CAAA;AACvB,CAAC,EALW,YAAY,KAAZ,YAAY,QAKvB;AAoBD,SAAS;AACT,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,uCAAqB,CAAA;IACrB,qCAAmB,CAAA;IACnB,mCAAiB,CAAA;AACnB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,SAAS;AACT,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,4CAA0B,CAAA;IAC1B,qCAAmB,CAAA;IACnB,yCAAuB,CAAA;AACzB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=product.js.map
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=user.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 生成一个随机且安全的 orderNumber
3
+ * @param length - orderNumber 的位数
4
+ * @returns 生成的随机数字字符串
5
+ */
6
+ export declare function generateOrderNumber(orderSequence?: number): number;
7
+ //# sourceMappingURL=generate.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.util.d.ts","sourceRoot":"","sources":["../../src/utils/generate.util.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,GAAE,MAAU,GAAG,MAAM,CAqBrE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 生成一个随机且安全的 orderNumber
3
+ * @param length - orderNumber 的位数
4
+ * @returns 生成的随机数字字符串
5
+ */
6
+ export function generateOrderNumber(orderSequence = 0) {
7
+ const now = new Date();
8
+ // 获取年份的后两位
9
+ const year = now.getFullYear().toString().slice(-2);
10
+ // 获取今年第几天
11
+ const start = new Date(now.getFullYear(), 0, 0);
12
+ const diff = now.getTime() - start.getTime();
13
+ const dayOfYear = Math.floor(diff / (1000 * 60 * 60 * 24))
14
+ .toString()
15
+ .padStart(3, "0");
16
+ // 序列号递增,并重置为三位
17
+ if (orderSequence === 0)
18
+ orderSequence = generateRandomNumber(3);
19
+ orderSequence = (orderSequence + 1) % 1000;
20
+ const sequence = orderSequence.toString().padStart(3, "0");
21
+ // 生成 8 位的随机数,保证不重复
22
+ const randomPart = Math.random().toString().slice(2, 10); // 生成8位随机数字
23
+ return Number(`${year}${dayOfYear}${sequence}${randomPart}`);
24
+ }
25
+ function generateRandomNumber(length) {
26
+ const min = Math.pow(10, length - 1); // 最小值,例如:6位数的最小值为100000
27
+ const max = Math.pow(10, length) - 1; // 最大值,例如:6位数的最大值为999999
28
+ return Math.floor(Math.random() * (max - min + 1)) + min;
29
+ }
30
+ //# sourceMappingURL=generate.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.util.js","sourceRoot":"","sources":["../../src/utils/generate.util.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAAwB,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,WAAW;IACX,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,UAAU;IACV,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;SACvD,QAAQ,EAAE;SACV,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEpB,eAAe;IACf,IAAI,aAAa,KAAK,CAAC;QAAE,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjE,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3D,mBAAmB;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;IAErE,OAAO,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;IAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * 生成一个随机且安全的 orderNumber
3
+ * @param length - orderNumber 的位数
4
+ * @returns 生成的随机数字字符串
5
+ */
6
+ export declare function generateOrderNumber(orderSequence?: number): number;
7
+ //# sourceMappingURL=generate.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.utils.d.ts","sourceRoot":"","sources":["../../src/utils/generate.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,GAAE,MAAU,GAAG,MAAM,CAqBrE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 生成一个随机且安全的 orderNumber
3
+ * @param length - orderNumber 的位数
4
+ * @returns 生成的随机数字字符串
5
+ */
6
+ export function generateOrderNumber(orderSequence = 0) {
7
+ const now = new Date();
8
+ // 获取年份的后两位
9
+ const year = now.getFullYear().toString().slice(-2);
10
+ // 获取今年第几天
11
+ const start = new Date(now.getFullYear(), 0, 0);
12
+ const diff = now.getTime() - start.getTime();
13
+ const dayOfYear = Math.floor(diff / (1000 * 60 * 60 * 24))
14
+ .toString()
15
+ .padStart(3, "0");
16
+ // 序列号递增,并重置为三位
17
+ if (orderSequence === 0)
18
+ orderSequence = generateRandomNumber(3);
19
+ orderSequence = (orderSequence + 1) % 1000;
20
+ const sequence = orderSequence.toString().padStart(3, "0");
21
+ // 生成 8 位的随机数,保证不重复
22
+ const randomPart = Math.random().toString().slice(2, 10); // 生成8位随机数字
23
+ return Number(`${year}${dayOfYear}${sequence}${randomPart}`);
24
+ }
25
+ function generateRandomNumber(length) {
26
+ const min = Math.pow(10, length - 1); // 最小值,例如:6位数的最小值为100000
27
+ const max = Math.pow(10, length) - 1; // 最大值,例如:6位数的最大值为999999
28
+ return Math.floor(Math.random() * (max - min + 1)) + min;
29
+ }
30
+ //# sourceMappingURL=generate.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.utils.js","sourceRoot":"","sources":["../../src/utils/generate.utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,gBAAwB,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,WAAW;IACX,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,UAAU;IACV,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;SACvD,QAAQ,EAAE;SACV,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEpB,eAAe;IACf,IAAI,aAAa,KAAK,CAAC;QAAE,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACjE,aAAa,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE3D,mBAAmB;IACnB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW;IAErE,OAAO,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,wBAAwB;IAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,wBAAwB;IAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { Logger } from "../types/logger.js";
2
+ export declare class ConsoleLogger implements Logger {
3
+ debug(message: string): void;
4
+ warn(message: string): void;
5
+ info(message: string): void;
6
+ error(message: string): void;
7
+ }
8
+ //# sourceMappingURL=logger.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.util.d.ts","sourceRoot":"","sources":["../../src/utils/logger.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEjD,qBAAa,aAAc,YAAW,MAAM;IAC1C,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAG3B,IAAI,CAAC,OAAO,EAAE,MAAM;IAGpB,KAAK,CAAC,OAAO,EAAE,MAAM;CAGtB"}
@@ -0,0 +1,15 @@
1
+ export class ConsoleLogger {
2
+ debug(message) {
3
+ console.debug(`[DEBUG] ${message}`);
4
+ }
5
+ warn(message) {
6
+ console.warn(`[WARN] ${message}`);
7
+ }
8
+ info(message) {
9
+ console.log(`[INFO] ${message}`);
10
+ }
11
+ error(message) {
12
+ console.error(`[ERROR] ${message}`);
13
+ }
14
+ }
15
+ //# sourceMappingURL=logger.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.util.js","sourceRoot":"","sources":["../../src/utils/logger.util.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAa;IACxB,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ type Task = () => Promise<boolean>;
2
+ export interface SchedulerOptions {
3
+ interval?: number;
4
+ taskTimeout?: number;
5
+ logInterval?: number;
6
+ maxRecursions: number;
7
+ maxRetries?: number;
8
+ maxTotalTime?: number;
9
+ }
10
+ export declare class Scheduler {
11
+ private tasks;
12
+ schedule(task: Task, options: SchedulerOptions): void;
13
+ private handleTaskError;
14
+ private timeout;
15
+ private delay;
16
+ cancelAll(): void;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=scheduler.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.util.d.ts","sourceRoot":"","sources":["../../src/utils/scheduler.util.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,KAAK,CAA2D;IAEjE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;YA0D9C,eAAe;IAmB7B,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,KAAK;IAIN,SAAS,IAAI,IAAI;CAMzB"}
@@ -0,0 +1,82 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class Scheduler {
11
+ constructor() {
12
+ this.tasks = new Map();
13
+ }
14
+ schedule(task, options) {
15
+ const { interval = 1000, // 默认 1000 毫秒
16
+ maxRecursions = 0, // 默认 不 迭代
17
+ maxRetries = 0, // 默认 不 重试
18
+ logInterval = 1, // 默认 完整输出 Log
19
+ taskTimeout = 30000, // 默认 单次执行时间30秒
20
+ maxTotalTime = 60000, // 默认 最大执行时间60秒
21
+ } = options || {};
22
+ let counter = 0;
23
+ let retries = 0;
24
+ const startTime = Date.now();
25
+ const executeTask = () => __awaiter(this, void 0, void 0, function* () {
26
+ try {
27
+ if (maxTotalTime && Date.now() - startTime > maxTotalTime) {
28
+ console.log("达到总的最大执行时间,停止任务。");
29
+ this.cancelAll();
30
+ return;
31
+ }
32
+ const shouldContinue = yield Promise.race([
33
+ task(),
34
+ this.timeout(taskTimeout),
35
+ ]);
36
+ counter++;
37
+ if (shouldContinue && counter < maxRecursions) {
38
+ if (counter % logInterval === 0) {
39
+ console.log(`递归执行, 第 ${counter} 次, 已执行 ${(Date.now() - startTime) / 1000} 秒`);
40
+ }
41
+ this.tasks.set(setTimeout(() => __awaiter(this, void 0, void 0, function* () {
42
+ yield executeTask();
43
+ }), interval), setTimeout(() => { }, interval));
44
+ }
45
+ else {
46
+ this.cancelAll();
47
+ }
48
+ }
49
+ catch (error) {
50
+ yield this.handleTaskError(error, retries, maxRetries, executeTask, interval);
51
+ retries++;
52
+ }
53
+ });
54
+ executeTask();
55
+ }
56
+ handleTaskError(error, retries, maxRetries, retryTask, interval) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ if (retries < maxRetries) {
59
+ console.error(`Retry attempt ${retries + 1} due to error: ${error}`);
60
+ yield this.delay(interval * (retries + 1)); // 指数退避
61
+ yield retryTask(); // 重新执行任务
62
+ }
63
+ else {
64
+ console.error("Max retries reached. Task execution stopped due to persistent errors.");
65
+ this.cancelAll();
66
+ }
67
+ });
68
+ }
69
+ timeout(ms) {
70
+ return new Promise((_, reject) => setTimeout(() => reject("Task timed out"), ms));
71
+ }
72
+ delay(ms) {
73
+ return new Promise((resolve) => setTimeout(resolve, ms));
74
+ }
75
+ cancelAll() {
76
+ this.tasks.forEach((_, taskId) => {
77
+ clearTimeout(taskId);
78
+ });
79
+ this.tasks.clear();
80
+ }
81
+ }
82
+ //# sourceMappingURL=scheduler.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.util.js","sourceRoot":"","sources":["../../src/utils/scheduler.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class StringUtils {
2
+ static capitalize(str: string): string;
3
+ static trim(str: string): string;
4
+ static toNumber(value: string): number | null;
5
+ }
6
+ //# sourceMappingURL=string.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.util.d.ts","sourceRoot":"","sources":["../../src/utils/string.util.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IAEtB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKtC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAI9C"}
@@ -0,0 +1,16 @@
1
+ export class StringUtils {
2
+ // 首字母大写
3
+ static capitalize(str) {
4
+ return str.charAt(0).toUpperCase() + str.slice(1);
5
+ }
6
+ // 去除空白字符
7
+ static trim(str) {
8
+ return str.trim();
9
+ }
10
+ // 将字符串转换为数字
11
+ static toNumber(value) {
12
+ const num = Number(value);
13
+ return isNaN(num) ? null : num;
14
+ }
15
+ }
16
+ //# sourceMappingURL=string.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.util.js","sourceRoot":"","sources":["../../src/utils/string.util.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACtB,QAAQ;IACR,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,SAAS;IACT,MAAM,CAAC,IAAI,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,YAAY;IACZ,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare class StringUtils {
2
+ static capitalize(str: string): string;
3
+ static trim(str: string): string;
4
+ static toNumber(value: string): number | null;
5
+ }
6
+ //# sourceMappingURL=string.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.utils.d.ts","sourceRoot":"","sources":["../../src/utils/string.utils.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAW;IAEtB,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKtC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAKhC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAI9C"}
@@ -0,0 +1,16 @@
1
+ export class StringUtils {
2
+ // 首字母大写
3
+ static capitalize(str) {
4
+ return str.charAt(0).toUpperCase() + str.slice(1);
5
+ }
6
+ // 去除空白字符
7
+ static trim(str) {
8
+ return str.trim();
9
+ }
10
+ // 将字符串转换为数字
11
+ static toNumber(value) {
12
+ const num = Number(value);
13
+ return isNaN(num) ? null : num;
14
+ }
15
+ }
16
+ //# sourceMappingURL=string.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.utils.js","sourceRoot":"","sources":["../../src/utils/string.utils.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,WAAW;IACtB,QAAQ;IACR,MAAM,CAAC,UAAU,CAAC,GAAW;QAC3B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,SAAS;IACT,MAAM,CAAC,IAAI,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,YAAY;IACZ,MAAM,CAAC,QAAQ,CAAC,KAAa;QAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC;CACF"}
package/package.json CHANGED
@@ -1,13 +1,20 @@
1
1
  {
2
2
  "name": "@edgenets/utils",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Edgenets utilities package containing common types and utilities.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "author": "Edgenets",
9
+ "license": "MIT",
10
+ "files": [
11
+ "dist/",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
9
15
  "scripts": {
10
16
  "build": "eslint --fix && tsc -p tsconfig.json",
11
- "test": "tsx ../../node_modules/tap/dist/esm/run.mjs 'test/**/*.spec.ts' || true"
17
+ "test": "echo 'Skip Tests'",
18
+ "publish": "pnpm build && npm version patch && npm publish --access public"
12
19
  }
13
20
  }
package/eslint.config.js DELETED
@@ -1,16 +0,0 @@
1
- import eslint from "@eslint/js";
2
- import tseslint from "typescript-eslint";
3
- import prettierConfig from "eslint-config-prettier";
4
-
5
- export default tseslint.config({
6
- files: ["src/**/*.ts"],
7
- extends: [
8
- eslint.configs.recommended,
9
- ...tseslint.configs.recommended,
10
- prettierConfig,
11
- ],
12
- rules: {
13
- "@typescript-eslint/array-type": "error",
14
- "@typescript-eslint/consistent-type-imports": "error",
15
- },
16
- });
package/tsconfig.json DELETED
@@ -1,13 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "outDir": "./dist",
4
- "rootDir": "./src",
5
- "sourceMap": true,
6
- "declaration": true,
7
- "declarationMap": true,
8
- "strict": true
9
- },
10
- "compileOnSave": true,
11
- "include": ["src/**/*"],
12
- "exclude": ["node_modules", "dist"]
13
- }