@sdkwork/sdk-common 1.0.0

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 (100) hide show
  1. package/README.md +89 -0
  2. package/dist/auth/index.d.ts +3 -0
  3. package/dist/auth/index.d.ts.map +1 -0
  4. package/dist/auth/token-manager.cjs +127 -0
  5. package/dist/auth/token-manager.cjs.map +1 -0
  6. package/dist/auth/token-manager.d.ts +80 -0
  7. package/dist/auth/token-manager.d.ts.map +1 -0
  8. package/dist/auth/token-manager.js +127 -0
  9. package/dist/auth/token-manager.js.map +1 -0
  10. package/dist/auth.cjs +9 -0
  11. package/dist/auth.cjs.map +1 -0
  12. package/dist/auth.js +9 -0
  13. package/dist/auth.js.map +1 -0
  14. package/dist/core/index.d.ts +3 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/types.cjs +54 -0
  17. package/dist/core/types.cjs.map +1 -0
  18. package/dist/core/types.d.ts +187 -0
  19. package/dist/core/types.d.ts.map +1 -0
  20. package/dist/core/types.js +54 -0
  21. package/dist/core/types.js.map +1 -0
  22. package/dist/core.cjs +11 -0
  23. package/dist/core.cjs.map +1 -0
  24. package/dist/core.js +11 -0
  25. package/dist/core.js.map +1 -0
  26. package/dist/errors/index.d.ts +103 -0
  27. package/dist/errors/index.d.ts.map +1 -0
  28. package/dist/errors.cjs +286 -0
  29. package/dist/errors.cjs.map +1 -0
  30. package/dist/errors.js +286 -0
  31. package/dist/errors.js.map +1 -0
  32. package/dist/http/base-client.cjs +485 -0
  33. package/dist/http/base-client.cjs.map +1 -0
  34. package/dist/http/base-client.d.ts +98 -0
  35. package/dist/http/base-client.d.ts.map +1 -0
  36. package/dist/http/base-client.js +485 -0
  37. package/dist/http/base-client.js.map +1 -0
  38. package/dist/http/index.d.ts +2 -0
  39. package/dist/http/index.d.ts.map +1 -0
  40. package/dist/http.cjs +6 -0
  41. package/dist/http.cjs.map +1 -0
  42. package/dist/http.js +6 -0
  43. package/dist/http.js.map +1 -0
  44. package/dist/index.cjs +48 -0
  45. package/dist/index.cjs.map +1 -0
  46. package/dist/index.d.ts +11 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +48 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/utils/array.d.ts +146 -0
  51. package/dist/utils/array.d.ts.map +1 -0
  52. package/dist/utils/cache.cjs +80 -0
  53. package/dist/utils/cache.cjs.map +1 -0
  54. package/dist/utils/cache.d.ts +25 -0
  55. package/dist/utils/cache.d.ts.map +1 -0
  56. package/dist/utils/cache.js +80 -0
  57. package/dist/utils/cache.js.map +1 -0
  58. package/dist/utils/date.cjs +25 -0
  59. package/dist/utils/date.cjs.map +1 -0
  60. package/dist/utils/date.d.ts +127 -0
  61. package/dist/utils/date.d.ts.map +1 -0
  62. package/dist/utils/date.js +25 -0
  63. package/dist/utils/date.js.map +1 -0
  64. package/dist/utils/encoding.cjs +678 -0
  65. package/dist/utils/encoding.cjs.map +1 -0
  66. package/dist/utils/encoding.d.ts +107 -0
  67. package/dist/utils/encoding.d.ts.map +1 -0
  68. package/dist/utils/encoding.js +679 -0
  69. package/dist/utils/encoding.js.map +1 -0
  70. package/dist/utils/index.d.ts +11 -0
  71. package/dist/utils/index.d.ts.map +1 -0
  72. package/dist/utils/logger.cjs +110 -0
  73. package/dist/utils/logger.cjs.map +1 -0
  74. package/dist/utils/logger.d.ts +28 -0
  75. package/dist/utils/logger.d.ts.map +1 -0
  76. package/dist/utils/logger.js +110 -0
  77. package/dist/utils/logger.js.map +1 -0
  78. package/dist/utils/object.d.ts +131 -0
  79. package/dist/utils/object.d.ts.map +1 -0
  80. package/dist/utils/retry.cjs +73 -0
  81. package/dist/utils/retry.cjs.map +1 -0
  82. package/dist/utils/retry.d.ts +9 -0
  83. package/dist/utils/retry.d.ts.map +1 -0
  84. package/dist/utils/retry.js +73 -0
  85. package/dist/utils/retry.js.map +1 -0
  86. package/dist/utils/string.cjs +820 -0
  87. package/dist/utils/string.cjs.map +1 -0
  88. package/dist/utils/string.d.ts +160 -0
  89. package/dist/utils/string.d.ts.map +1 -0
  90. package/dist/utils/string.js +821 -0
  91. package/dist/utils/string.js.map +1 -0
  92. package/dist/utils/url.d.ts +106 -0
  93. package/dist/utils/url.d.ts.map +1 -0
  94. package/dist/utils/validation.d.ts +157 -0
  95. package/dist/utils/validation.d.ts.map +1 -0
  96. package/dist/utils.cjs +52 -0
  97. package/dist/utils.cjs.map +1 -0
  98. package/dist/utils.js +46 -0
  99. package/dist/utils.js.map +1 -0
  100. package/package.json +80 -0
package/dist/index.js ADDED
@@ -0,0 +1,48 @@
1
+ import { DEFAULT_CACHE_CONFIG, DEFAULT_LOGGER_CONFIG, DEFAULT_RETRY_CONFIG, DEFAULT_TIMEOUT, HTTP_STATUS, MIME_TYPES, SUCCESS_CODES } from "./core/types.js";
2
+ import { DefaultAuthTokenManager, buildAuthHeaders, createTokenManager, isTokenValid, requiresRefresh } from "./auth/token-manager.js";
3
+ import { createLogger, noopLogger } from "./utils/logger.js";
4
+ import { createCacheStore, generateCacheKey } from "./utils/cache.js";
5
+ import { calculateDelay, createRetryConfig, sleep, withRetry } from "./utils/retry.js";
6
+ import "./utils/string.js";
7
+ import "./utils/encoding.js";
8
+ import { AuthenticationError, CancelledError, ForbiddenError, NetworkError, NotFoundError, RateLimitError, SdkError, ServerError, TimeoutError, TokenExpiredError, ValidationError, isAuthError, isNetworkError, isRetryableError, isSdkError } from "./errors.js";
9
+ import { BaseHttpClient } from "./http/base-client.js";
10
+ export {
11
+ AuthenticationError,
12
+ BaseHttpClient,
13
+ CancelledError,
14
+ DEFAULT_CACHE_CONFIG,
15
+ DEFAULT_LOGGER_CONFIG,
16
+ DEFAULT_RETRY_CONFIG,
17
+ DEFAULT_TIMEOUT,
18
+ DefaultAuthTokenManager,
19
+ ForbiddenError,
20
+ HTTP_STATUS,
21
+ MIME_TYPES,
22
+ NetworkError,
23
+ NotFoundError,
24
+ RateLimitError,
25
+ SUCCESS_CODES,
26
+ SdkError,
27
+ ServerError,
28
+ TimeoutError,
29
+ TokenExpiredError,
30
+ ValidationError,
31
+ buildAuthHeaders,
32
+ calculateDelay,
33
+ createCacheStore,
34
+ createLogger,
35
+ createRetryConfig,
36
+ createTokenManager,
37
+ generateCacheKey,
38
+ isAuthError,
39
+ isNetworkError,
40
+ isRetryableError,
41
+ isSdkError,
42
+ isTokenValid,
43
+ noopLogger,
44
+ requiresRefresh,
45
+ sleep,
46
+ withRetry
47
+ };
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -0,0 +1,146 @@
1
+ export type CompareFunction<T> = (a: T, b: T) => number;
2
+ export declare function isArray(value: unknown): value is unknown[];
3
+ export declare function isEmpty<T>(arr: T[] | readonly T[]): boolean;
4
+ export declare function isNotEmpty<T>(arr: T[] | readonly T[]): boolean;
5
+ export declare function first<T>(arr: T[] | readonly T[]): T | undefined;
6
+ export declare function last<T>(arr: T[] | readonly T[]): T | undefined;
7
+ export declare function nth<T>(arr: T[] | readonly T[], index: number): T | undefined;
8
+ export declare function head<T>(arr: T[] | readonly T[]): T | undefined;
9
+ export declare function tail<T>(arr: T[] | readonly T[]): T[];
10
+ export declare function initial<T>(arr: T[] | readonly T[]): T[];
11
+ export declare function take<T>(arr: T[] | readonly T[], count: number): T[];
12
+ export declare function takeRight<T>(arr: T[] | readonly T[], count: number): T[];
13
+ export declare function takeWhile<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
14
+ export declare function takeRightWhile<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
15
+ export declare function drop<T>(arr: T[] | readonly T[], count: number): T[];
16
+ export declare function dropRight<T>(arr: T[] | readonly T[], count: number): T[];
17
+ export declare function dropWhile<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
18
+ export declare function dropRightWhile<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
19
+ export declare function compact<T>(arr: (T | null | undefined | false | 0 | '' | 0n)[] | readonly (T | null | undefined | false | 0 | '' | 0n)[]): T[];
20
+ export declare function flatten<T>(arr: (T | T[])[] | readonly (T | T[])[]): T[];
21
+ export declare function flattenDeep<T>(arr: unknown[] | readonly unknown[]): T[];
22
+ export declare function flattenDepth<T>(arr: unknown[] | readonly unknown[], depth?: number): T[];
23
+ export declare function uniq<T>(arr: T[] | readonly T[]): T[];
24
+ export declare function uniqBy<T, K>(arr: T[] | readonly T[], iteratee: (value: T) => K): T[];
25
+ export declare function uniqWith<T>(arr: T[] | readonly T[], comparator: (a: T, b: T) => boolean): T[];
26
+ export declare function union<T>(...arrays: (T[] | readonly T[])[]): T[];
27
+ export declare function unionBy<T, K>(arrays: (T[] | readonly T[])[], iteratee: (value: T) => K): T[];
28
+ export declare function unionWith<T>(arrays: (T[] | readonly T[])[], comparator: (a: T, b: T) => boolean): T[];
29
+ export declare function intersection<T>(...arrays: (T[] | readonly T[])[]): T[];
30
+ export declare function intersectionBy<T, K>(arrays: (T[] | readonly T[])[], iteratee: (value: T) => K): T[];
31
+ export declare function intersectionWith<T>(arrays: (T[] | readonly T[])[], comparator: (a: T, b: T) => boolean): T[];
32
+ export declare function difference<T>(arr: T[] | readonly T[], ...values: (T[] | readonly T[])[]): T[];
33
+ export declare function differenceBy<T, K>(arr: T[] | readonly T[], values: (T[] | readonly T[])[], iteratee: (value: T) => K): T[];
34
+ export declare function differenceWith<T>(arr: T[] | readonly T[], values: (T[] | readonly T[])[], comparator: (a: T, b: T) => boolean): T[];
35
+ export declare function xor<T>(...arrays: (T[] | readonly T[])[]): T[];
36
+ export declare function xorBy<T, K>(arrays: (T[] | readonly T[])[], iteratee: (value: T) => K): T[];
37
+ export declare function xorWith<T>(arrays: (T[] | readonly T[])[], comparator: (a: T, b: T) => boolean): T[];
38
+ export declare function without<T>(arr: T[] | readonly T[], ...values: T[]): T[];
39
+ export declare function chunk<T>(arr: T[] | readonly T[], size: number): T[][];
40
+ export declare function zip<T, U>(arr1: T[] | readonly T[], arr2: U[] | readonly U[]): [T, U][];
41
+ export declare function zipWith<T, U, V>(arr1: T[] | readonly T[], arr2: U[] | readonly U[], iteratee: (a: T, b: U) => V): V[];
42
+ export declare function unzip<T, U>(arr: [T, U][] | readonly [T, U][]): [T[], U[]];
43
+ export declare function unzipWith<T, U, V>(arr: [T, U][] | readonly [T, U][], iteratee: (a: T, b: U) => V): V[];
44
+ export declare function zipObject<K extends string, V>(keys: K[] | readonly K[], values: V[] | readonly V[]): Record<K, V>;
45
+ export declare function zipObjectDeep<V>(paths: string[] | readonly string[], values: V[] | readonly V[]): Record<string, V>;
46
+ export declare function groupBy<T, K extends string | number>(arr: T[] | readonly T[], iteratee: (value: T) => K): Record<K, T[]>;
47
+ export declare function keyBy<T, K extends string | number>(arr: T[] | readonly T[], iteratee: (value: T) => K): Record<K, T>;
48
+ export declare function countBy<T, K extends string | number>(arr: T[] | readonly T[], iteratee: (value: T) => K): Record<K, number>;
49
+ export declare function sortBy<T>(arr: T[] | readonly T[], iteratees: ((value: T) => unknown)[]): T[];
50
+ export declare function orderBy<T>(arr: T[] | readonly T[], iteratees: ((value: T) => unknown)[], orders: ('asc' | 'desc')[]): T[];
51
+ export declare function partition<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): [T[], T[]];
52
+ export declare function findIndex<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean, fromIndex?: number): number;
53
+ export declare function findLastIndex<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean, fromIndex?: number): number;
54
+ export declare function indexOf<T>(arr: T[] | readonly T[], value: T, fromIndex?: number): number;
55
+ export declare function lastIndexOf<T>(arr: T[] | readonly T[], value: T, fromIndex?: number): number;
56
+ export declare function find<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T | undefined;
57
+ export declare function findLast<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T | undefined;
58
+ export declare function includes<T>(arr: T[] | readonly T[], value: T, fromIndex?: number): boolean;
59
+ export declare function every<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): boolean;
60
+ export declare function some<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): boolean;
61
+ export declare function none<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): boolean;
62
+ export declare function map<T, U>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => U): U[];
63
+ export declare function flatMap<T, U>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => U | U[]): U[];
64
+ export declare function flatMapDeep<T, U>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => unknown): U[];
65
+ export declare function flatMapDepth<T, U>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => unknown, depth?: number): U[];
66
+ export declare function filter<T, S extends T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => value is S): S[];
67
+ export declare function filter<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
68
+ export declare function reject<T>(arr: T[] | readonly T[], predicate: (value: T, index: number) => boolean): T[];
69
+ export declare function reduce<T, U>(arr: T[] | readonly T[], iteratee: (accumulator: U, value: T, index: number) => U, initialValue: U): U;
70
+ export declare function reduceRight<T, U>(arr: T[] | readonly T[], iteratee: (accumulator: U, value: T, index: number) => U, initialValue: U): U;
71
+ export declare function forEach<T>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => void | boolean): void;
72
+ export declare function forEachRight<T>(arr: T[] | readonly T[], iteratee: (value: T, index: number) => void | boolean): void;
73
+ export declare function size<T>(arr: T[] | readonly T[]): number;
74
+ export declare function fill<T>(arr: T[], value: T, start?: number, end?: number): T[];
75
+ export declare function reverse<T>(arr: T[]): T[];
76
+ export declare function concat<T>(...arrays: (T | T[] | readonly T[])[]): T[];
77
+ export declare function slice<T>(arr: T[] | readonly T[], start?: number, end?: number): T[];
78
+ export declare function splice<T>(arr: T[], start: number, deleteCount?: number, ...items: T[]): T[];
79
+ export declare function push<T>(arr: T[], ...items: T[]): number;
80
+ export declare function pop<T>(arr: T[]): T | undefined;
81
+ export declare function shift<T>(arr: T[]): T | undefined;
82
+ export declare function unshift<T>(arr: T[], ...items: T[]): number;
83
+ export declare function join<T>(arr: T[] | readonly T[], separator?: string): string;
84
+ export declare function indexOfAll<T>(arr: T[] | readonly T[], value: T): number[];
85
+ export declare function pull<T>(arr: T[], ...values: T[]): T[];
86
+ export declare function pullAll<T>(arr: T[], values: T[]): T[];
87
+ export declare function pullAllBy<T, K>(arr: T[], values: T[], iteratee: (value: T) => K): T[];
88
+ export declare function pullAllWith<T>(arr: T[], values: T[], comparator: (a: T, b: T) => boolean): T[];
89
+ export declare function pullAt<T>(arr: T[], ...indices: number[]): T[];
90
+ export declare function remove<T>(arr: T[], predicate: (value: T, index: number) => boolean): T[];
91
+ export declare function at<T>(arr: T[] | readonly T[], ...indices: number[]): (T | undefined)[];
92
+ export declare function sample<T>(arr: T[] | readonly T[]): T | undefined;
93
+ export declare function sampleSize<T>(arr: T[] | readonly T[], size: number): T[];
94
+ export declare function shuffle<T>(arr: T[] | readonly T[]): T[];
95
+ export declare function min<T>(arr: T[] | readonly T[]): T | undefined;
96
+ export declare function max<T>(arr: T[] | readonly T[]): T | undefined;
97
+ export declare function minBy<T>(arr: T[] | readonly T[], iteratee: (value: T) => number): T | undefined;
98
+ export declare function maxBy<T>(arr: T[] | readonly T[], iteratee: (value: T) => number): T | undefined;
99
+ export declare function sum(arr: number[] | readonly number[]): number;
100
+ export declare function sumBy<T>(arr: T[] | readonly T[], iteratee: (value: T) => number): number;
101
+ export declare function mean(arr: number[] | readonly number[]): number;
102
+ export declare function meanBy<T>(arr: T[] | readonly T[], iteratee: (value: T) => number): number;
103
+ export declare function median(arr: number[] | readonly number[]): number;
104
+ export declare function mode<T>(arr: T[] | readonly T[]): T[];
105
+ export declare function variance(arr: number[] | readonly number[], population?: boolean): number;
106
+ export declare function standardDeviation(arr: number[] | readonly number[], population?: boolean): number;
107
+ export declare function range(start: number, end?: number, step?: number): number[];
108
+ export declare function fromPairs<T extends string | number, U>(pairs: [T, U][] | readonly [T, U][]): Record<T, U>;
109
+ export declare function toPairs<T extends object>(obj: T): [string, T[keyof T]][];
110
+ export declare function sortedIndex<T>(arr: T[] | readonly T[], value: T): number;
111
+ export declare function sortedIndexBy<T>(arr: T[] | readonly T[], value: T, iteratee: (value: T) => number): number;
112
+ export declare function sortedIndexOf<T>(arr: T[] | readonly T[], value: T): number;
113
+ export declare function sortedLastIndex<T>(arr: T[] | readonly T[], value: T): number;
114
+ export declare function sortedLastIndexOf<T>(arr: T[] | readonly T[], value: T): number;
115
+ export declare function sortedUniq<T>(arr: T[] | readonly T[]): T[];
116
+ export declare function sortedUniqBy<T, K>(arr: T[] | readonly T[], iteratee: (value: T) => K): T[];
117
+ export declare function isArrayLike(value: unknown): boolean;
118
+ export declare function isArrayLikeObject(value: unknown): value is object & {
119
+ length: number;
120
+ };
121
+ export declare function castArray<T>(value: T | T[]): T[];
122
+ export declare function toArray<T>(value: T | T[] | readonly T[]): T[];
123
+ export declare function wrap<T>(value: T | T[] | undefined | null): T[];
124
+ export declare function unwrap<T>(value: T | T[] | undefined | null): T | undefined;
125
+ export declare function flattenObject(obj: Record<string, unknown>, prefix?: string): Record<string, unknown>;
126
+ export declare function unflattenObject(obj: Record<string, unknown>): Record<string, unknown>;
127
+ export declare function isArrayBuffer(value: unknown): value is ArrayBuffer;
128
+ export declare function isTypedArray(value: unknown): boolean;
129
+ export declare function isBuffer(value: unknown): boolean;
130
+ export declare function isArrayBufferView(value: unknown): value is ArrayBufferView;
131
+ export declare function isDataView(value: unknown): value is DataView;
132
+ export declare function isFloat32Array(value: unknown): value is Float32Array;
133
+ export declare function isFloat64Array(value: unknown): value is Float64Array;
134
+ export declare function isInt8Array(value: unknown): value is Int8Array;
135
+ export declare function isInt16Array(value: unknown): value is Int16Array;
136
+ export declare function isInt32Array(value: unknown): value is Int32Array;
137
+ export declare function isUint8Array(value: unknown): value is Uint8Array;
138
+ export declare function isUint8ClampedArray(value: unknown): value is Uint8ClampedArray;
139
+ export declare function isUint16Array(value: unknown): value is Uint16Array;
140
+ export declare function isUint32Array(value: unknown): value is Uint32Array;
141
+ export declare function isBigInt64Array(value: unknown): value is BigInt64Array;
142
+ export declare function isBigUint64Array(value: unknown): value is BigUint64Array;
143
+ export declare function toArrayBuffer(value: string | ArrayBuffer | ArrayBufferView): ArrayBuffer;
144
+ export declare function toUint8Array(value: string | ArrayBuffer | ArrayBufferView): Uint8Array;
145
+ export declare function toStringArray(value: ArrayBuffer | ArrayBufferView): string;
146
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/utils/array.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
4
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
6
+ const types = require("../core/types.cjs");
7
+ class MemoryCacheStore {
8
+ constructor(config = {}) {
9
+ __publicField(this, "cache", /* @__PURE__ */ new Map());
10
+ __publicField(this, "maxSize");
11
+ __publicField(this, "defaultTtl");
12
+ this.maxSize = config.maxSize ?? types.DEFAULT_CACHE_CONFIG.maxSize;
13
+ this.defaultTtl = config.ttl ?? types.DEFAULT_CACHE_CONFIG.ttl;
14
+ }
15
+ get(key) {
16
+ const entry = this.cache.get(key);
17
+ if (!entry) {
18
+ return null;
19
+ }
20
+ if (Date.now() > entry.expiresAt) {
21
+ this.cache.delete(key);
22
+ return null;
23
+ }
24
+ return entry.value;
25
+ }
26
+ set(key, value, ttl) {
27
+ if (this.cache.size >= this.maxSize) {
28
+ this.evictOldest();
29
+ }
30
+ const expiresAt = Date.now() + (ttl ?? this.defaultTtl);
31
+ this.cache.set(key, { value, expiresAt });
32
+ }
33
+ has(key) {
34
+ const entry = this.cache.get(key);
35
+ if (!entry) return false;
36
+ if (Date.now() > entry.expiresAt) {
37
+ this.cache.delete(key);
38
+ return false;
39
+ }
40
+ return true;
41
+ }
42
+ delete(key) {
43
+ return this.cache.delete(key);
44
+ }
45
+ clear() {
46
+ this.cache.clear();
47
+ }
48
+ size() {
49
+ return this.cache.size;
50
+ }
51
+ evictOldest() {
52
+ let oldestKey = null;
53
+ let oldestTime = Infinity;
54
+ for (const [key, entry] of this.cache) {
55
+ if (entry.expiresAt < oldestTime) {
56
+ oldestTime = entry.expiresAt;
57
+ oldestKey = key;
58
+ }
59
+ }
60
+ if (oldestKey) {
61
+ this.cache.delete(oldestKey);
62
+ }
63
+ }
64
+ }
65
+ function createCacheStore(config) {
66
+ return new MemoryCacheStore(config);
67
+ }
68
+ function generateCacheKey(config) {
69
+ const parts = [
70
+ config.method,
71
+ config.url,
72
+ JSON.stringify(config.params ?? {}),
73
+ JSON.stringify(config.body ?? {})
74
+ ];
75
+ return parts.join(":");
76
+ }
77
+ exports.MemoryCacheStore = MemoryCacheStore;
78
+ exports.createCacheStore = createCacheStore;
79
+ exports.generateCacheKey = generateCacheKey;
80
+ //# sourceMappingURL=cache.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.cjs","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":["DEFAULT_CACHE_CONFIG"],"mappings":";;;;;;AAiBO,MAAM,iBAAuC;AAAA,EAKlD,YAAY,SAA+B,IAAI;AAJvC,qDAA8C,IAAA;AAC9C;AACA;AAGN,SAAK,UAAU,OAAO,WAAWA,MAAAA,qBAAqB;AACtD,SAAK,aAAa,OAAO,OAAOA,MAAAA,qBAAqB;AAAA,EACvD;AAAA,EAEA,IAAO,KAAuB;AAC5B,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAEhC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,IAAO,KAAa,OAAU,KAAoB;AAChD,QAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AACnC,WAAK,YAAA;AAAA,IACP;AAEA,UAAM,YAAY,KAAK,IAAA,KAAS,OAAO,KAAK;AAC5C,SAAK,MAAM,IAAI,KAAK,EAAE,OAAO,WAAW;AAAA,EAC1C;AAAA,EAEA,IAAI,KAAsB;AACxB,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,QAAI,CAAC,MAAO,QAAO;AAEnB,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAsB;AAC3B,WAAO,KAAK,MAAM,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,MAAA;AAAA,EACb;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEQ,cAAoB;AAC1B,QAAI,YAA2B;AAC/B,QAAI,aAAa;AAEjB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO;AACrC,UAAI,MAAM,YAAY,YAAY;AAChC,qBAAa,MAAM;AACnB,oBAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI,WAAW;AACb,WAAK,MAAM,OAAO,SAAS;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,QAA2C;AAC1E,SAAO,IAAI,iBAAiB,MAAM;AACpC;AAEO,SAAS,iBAAiB,QAA+B;AAC9D,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK,UAAU,OAAO,UAAU,CAAA,CAAE;AAAA,IAClC,KAAK,UAAU,OAAO,QAAQ,CAAA,CAAE;AAAA,EAAA;AAGlC,SAAO,MAAM,KAAK,GAAG;AACvB;;;;"}
@@ -0,0 +1,25 @@
1
+ import type { CacheConfig, RequestConfig } from '../core/types';
2
+ export interface CacheStore {
3
+ get<T>(key: string): T | null;
4
+ set<T>(key: string, value: T, ttl?: number): void;
5
+ has(key: string): boolean;
6
+ delete(key: string): boolean;
7
+ clear(): void;
8
+ size(): number;
9
+ }
10
+ export declare class MemoryCacheStore implements CacheStore {
11
+ private cache;
12
+ private maxSize;
13
+ private defaultTtl;
14
+ constructor(config?: Partial<CacheConfig>);
15
+ get<T>(key: string): T | null;
16
+ set<T>(key: string, value: T, ttl?: number): void;
17
+ has(key: string): boolean;
18
+ delete(key: string): boolean;
19
+ clear(): void;
20
+ size(): number;
21
+ private evictOldest;
22
+ }
23
+ export declare function createCacheStore(config?: Partial<CacheConfig>): CacheStore;
24
+ export declare function generateCacheKey(config: RequestConfig): string;
25
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,MAAM,CAAC;CAChB;AAOD,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM;IAK7C,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAe7B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IASjD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAYzB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAI5B,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;IAId,OAAO,CAAC,WAAW;CAepB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,UAAU,CAE1E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAS9D"}
@@ -0,0 +1,80 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
+ import { DEFAULT_CACHE_CONFIG } from "../core/types.js";
5
+ class MemoryCacheStore {
6
+ constructor(config = {}) {
7
+ __publicField(this, "cache", /* @__PURE__ */ new Map());
8
+ __publicField(this, "maxSize");
9
+ __publicField(this, "defaultTtl");
10
+ this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;
11
+ this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;
12
+ }
13
+ get(key) {
14
+ const entry = this.cache.get(key);
15
+ if (!entry) {
16
+ return null;
17
+ }
18
+ if (Date.now() > entry.expiresAt) {
19
+ this.cache.delete(key);
20
+ return null;
21
+ }
22
+ return entry.value;
23
+ }
24
+ set(key, value, ttl) {
25
+ if (this.cache.size >= this.maxSize) {
26
+ this.evictOldest();
27
+ }
28
+ const expiresAt = Date.now() + (ttl ?? this.defaultTtl);
29
+ this.cache.set(key, { value, expiresAt });
30
+ }
31
+ has(key) {
32
+ const entry = this.cache.get(key);
33
+ if (!entry) return false;
34
+ if (Date.now() > entry.expiresAt) {
35
+ this.cache.delete(key);
36
+ return false;
37
+ }
38
+ return true;
39
+ }
40
+ delete(key) {
41
+ return this.cache.delete(key);
42
+ }
43
+ clear() {
44
+ this.cache.clear();
45
+ }
46
+ size() {
47
+ return this.cache.size;
48
+ }
49
+ evictOldest() {
50
+ let oldestKey = null;
51
+ let oldestTime = Infinity;
52
+ for (const [key, entry] of this.cache) {
53
+ if (entry.expiresAt < oldestTime) {
54
+ oldestTime = entry.expiresAt;
55
+ oldestKey = key;
56
+ }
57
+ }
58
+ if (oldestKey) {
59
+ this.cache.delete(oldestKey);
60
+ }
61
+ }
62
+ }
63
+ function createCacheStore(config) {
64
+ return new MemoryCacheStore(config);
65
+ }
66
+ function generateCacheKey(config) {
67
+ const parts = [
68
+ config.method,
69
+ config.url,
70
+ JSON.stringify(config.params ?? {}),
71
+ JSON.stringify(config.body ?? {})
72
+ ];
73
+ return parts.join(":");
74
+ }
75
+ export {
76
+ MemoryCacheStore,
77
+ createCacheStore,
78
+ generateCacheKey
79
+ };
80
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sources":["../../src/utils/cache.ts"],"sourcesContent":["import type { CacheConfig, RequestConfig } from '../core/types';\nimport { DEFAULT_CACHE_CONFIG } from '../core/types';\n\nexport interface CacheStore {\n get<T>(key: string): T | null;\n set<T>(key: string, value: T, ttl?: number): void;\n has(key: string): boolean;\n delete(key: string): boolean;\n clear(): void;\n size(): number;\n}\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport class MemoryCacheStore implements CacheStore {\n private cache: Map<string, CacheEntry<unknown>> = new Map();\n private maxSize: number;\n private defaultTtl: number;\n\n constructor(config: Partial<CacheConfig> = {}) {\n this.maxSize = config.maxSize ?? DEFAULT_CACHE_CONFIG.maxSize;\n this.defaultTtl = config.ttl ?? DEFAULT_CACHE_CONFIG.ttl;\n }\n\n get<T>(key: string): T | null {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return null;\n }\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n \n return entry.value as T;\n }\n\n set<T>(key: string, value: T, ttl?: number): void {\n if (this.cache.size >= this.maxSize) {\n this.evictOldest();\n }\n \n const expiresAt = Date.now() + (ttl ?? this.defaultTtl);\n this.cache.set(key, { value, expiresAt });\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n if (!entry) return false;\n \n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n \n return true;\n }\n\n delete(key: string): boolean {\n return this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n private evictOldest(): void {\n let oldestKey: string | null = null;\n let oldestTime = Infinity;\n \n for (const [key, entry] of this.cache) {\n if (entry.expiresAt < oldestTime) {\n oldestTime = entry.expiresAt;\n oldestKey = key;\n }\n }\n \n if (oldestKey) {\n this.cache.delete(oldestKey);\n }\n }\n}\n\nexport function createCacheStore(config?: Partial<CacheConfig>): CacheStore {\n return new MemoryCacheStore(config);\n}\n\nexport function generateCacheKey(config: RequestConfig): string {\n const parts = [\n config.method,\n config.url,\n JSON.stringify(config.params ?? {}),\n JSON.stringify(config.body ?? {}),\n ];\n \n return parts.join(':');\n}\n"],"names":[],"mappings":";;;;AAiBO,MAAM,iBAAuC;AAAA,EAKlD,YAAY,SAA+B,IAAI;AAJvC,qDAA8C,IAAA;AAC9C;AACA;AAGN,SAAK,UAAU,OAAO,WAAW,qBAAqB;AACtD,SAAK,aAAa,OAAO,OAAO,qBAAqB;AAAA,EACvD;AAAA,EAEA,IAAO,KAAuB;AAC5B,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAEhC,QAAI,CAAC,OAAO;AACV,aAAO;AAAA,IACT;AAEA,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,IAAO,KAAa,OAAU,KAAoB;AAChD,QAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AACnC,WAAK,YAAA;AAAA,IACP;AAEA,UAAM,YAAY,KAAK,IAAA,KAAS,OAAO,KAAK;AAC5C,SAAK,MAAM,IAAI,KAAK,EAAE,OAAO,WAAW;AAAA,EAC1C;AAAA,EAEA,IAAI,KAAsB;AACxB,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,QAAI,CAAC,MAAO,QAAO;AAEnB,QAAI,KAAK,QAAQ,MAAM,WAAW;AAChC,WAAK,MAAM,OAAO,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,KAAsB;AAC3B,WAAO,KAAK,MAAM,OAAO,GAAG;AAAA,EAC9B;AAAA,EAEA,QAAc;AACZ,SAAK,MAAM,MAAA;AAAA,EACb;AAAA,EAEA,OAAe;AACb,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAEQ,cAAoB;AAC1B,QAAI,YAA2B;AAC/B,QAAI,aAAa;AAEjB,eAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO;AACrC,UAAI,MAAM,YAAY,YAAY;AAChC,qBAAa,MAAM;AACnB,oBAAY;AAAA,MACd;AAAA,IACF;AAEA,QAAI,WAAW;AACb,WAAK,MAAM,OAAO,SAAS;AAAA,IAC7B;AAAA,EACF;AACF;AAEO,SAAS,iBAAiB,QAA2C;AAC1E,SAAO,IAAI,iBAAiB,MAAM;AACpC;AAEO,SAAS,iBAAiB,QAA+B;AAC9D,QAAM,QAAQ;AAAA,IACZ,OAAO;AAAA,IACP,OAAO;AAAA,IACP,KAAK,UAAU,OAAO,UAAU,CAAA,CAAE;AAAA,IAClC,KAAK,UAAU,OAAO,QAAQ,CAAA,CAAE;AAAA,EAAA;AAGlC,SAAO,MAAM,KAAK,GAAG;AACvB;"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const MILLISECONDS_IN_SECOND = 1e3;
4
+ const MILLISECONDS_IN_MINUTE = 60 * MILLISECONDS_IN_SECOND;
5
+ const MILLISECONDS_IN_HOUR = 60 * MILLISECONDS_IN_MINUTE;
6
+ const MILLISECONDS_IN_DAY = 24 * MILLISECONDS_IN_HOUR;
7
+ const MILLISECONDS_IN_WEEK = 7 * MILLISECONDS_IN_DAY;
8
+ const TIME_UNITS_IN_MS = {
9
+ millisecond: 1,
10
+ second: MILLISECONDS_IN_SECOND,
11
+ minute: MILLISECONDS_IN_MINUTE,
12
+ hour: MILLISECONDS_IN_HOUR,
13
+ day: MILLISECONDS_IN_DAY,
14
+ week: MILLISECONDS_IN_WEEK,
15
+ month: 30 * MILLISECONDS_IN_DAY,
16
+ quarter: 90 * MILLISECONDS_IN_DAY,
17
+ year: 365 * MILLISECONDS_IN_DAY
18
+ };
19
+ exports.MILLISECONDS_IN_DAY = MILLISECONDS_IN_DAY;
20
+ exports.MILLISECONDS_IN_HOUR = MILLISECONDS_IN_HOUR;
21
+ exports.MILLISECONDS_IN_MINUTE = MILLISECONDS_IN_MINUTE;
22
+ exports.MILLISECONDS_IN_SECOND = MILLISECONDS_IN_SECOND;
23
+ exports.MILLISECONDS_IN_WEEK = MILLISECONDS_IN_WEEK;
24
+ exports.TIME_UNITS_IN_MS = TIME_UNITS_IN_MS;
25
+ //# sourceMappingURL=date.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date.cjs","sources":["../../src/utils/date.ts"],"sourcesContent":["export type TimeUnit = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year';\n\nexport type DateFormat = 'iso' | 'iso-date' | 'iso-time' | 'datetime' | 'date' | 'time' | 'time-24' | 'year-month' | 'month-day' | 'custom';\n\nexport interface DateComponents {\n year: number;\n month: number;\n day: number;\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n}\n\nexport interface Duration {\n milliseconds?: number;\n seconds?: number;\n minutes?: number;\n hours?: number;\n days?: number;\n weeks?: number;\n months?: number;\n years?: number;\n}\n\nexport const MILLISECONDS_IN_SECOND = 1000;\nexport const MILLISECONDS_IN_MINUTE = 60 * MILLISECONDS_IN_SECOND;\nexport const MILLISECONDS_IN_HOUR = 60 * MILLISECONDS_IN_MINUTE;\nexport const MILLISECONDS_IN_DAY = 24 * MILLISECONDS_IN_HOUR;\nexport const MILLISECONDS_IN_WEEK = 7 * MILLISECONDS_IN_DAY;\n\nexport const TIME_UNITS_IN_MS: Record<TimeUnit, number> = {\n millisecond: 1,\n second: MILLISECONDS_IN_SECOND,\n minute: MILLISECONDS_IN_MINUTE,\n hour: MILLISECONDS_IN_HOUR,\n day: MILLISECONDS_IN_DAY,\n week: MILLISECONDS_IN_WEEK,\n month: 30 * MILLISECONDS_IN_DAY,\n quarter: 90 * MILLISECONDS_IN_DAY,\n year: 365 * MILLISECONDS_IN_DAY,\n};\n\nexport function now(): Date {\n return new Date();\n}\n\nexport function today(): Date {\n return startOfDay(new Date());\n}\n\nexport function yesterday(): Date {\n return addDays(today(), -1);\n}\n\nexport function tomorrow(): Date {\n return addDays(today(), 1);\n}\n\nexport function createDate(year: number, month: number, day: number, hours: number = 0, minutes: number = 0, seconds: number = 0, milliseconds: number = 0): Date {\n return new Date(year, month - 1, day, hours, minutes, seconds, milliseconds);\n}\n\nexport function fromTimestamp(timestamp: number): Date {\n return new Date(timestamp);\n}\n\nexport function fromUnixTimestamp(unixTimestamp: number): Date {\n return new Date(unixTimestamp * MILLISECONDS_IN_SECOND);\n}\n\nexport function parse(value: string | Date | number): Date {\n if (value instanceof Date) return value;\n if (typeof value === 'number') return new Date(value);\n return new Date(value);\n}\n\nexport function parseIso(value: string): Date {\n return new Date(value);\n}\n\nexport function parseFormat(value: string, format: string): Date {\n const formatTokens: Record<string, (date: Date, value: string) => void> = {\n 'YYYY': (date, v) => date.setFullYear(parseInt(v, 10)),\n 'YY': (date, v) => date.setFullYear(2000 + parseInt(v, 10)),\n 'MM': (date, v) => date.setMonth(parseInt(v, 10) - 1),\n 'M': (date, v) => date.setMonth(parseInt(v, 10) - 1),\n 'DD': (date, v) => date.setDate(parseInt(v, 10)),\n 'D': (date, v) => date.setDate(parseInt(v, 10)),\n 'HH': (date, v) => date.setHours(parseInt(v, 10)),\n 'H': (date, v) => date.setHours(parseInt(v, 10)),\n 'mm': (date, v) => date.setMinutes(parseInt(v, 10)),\n 'm': (date, v) => date.setMinutes(parseInt(v, 10)),\n 'ss': (date, v) => date.setSeconds(parseInt(v, 10)),\n 's': (date, v) => date.setSeconds(parseInt(v, 10)),\n 'SSS': (date, v) => date.setMilliseconds(parseInt(v, 10)),\n };\n\n const date = new Date(0);\n let formatIndex = 0;\n let valueIndex = 0;\n\n while (formatIndex < format.length && valueIndex < value.length) {\n const token = Object.keys(formatTokens).find((t) => format.slice(formatIndex).startsWith(t));\n if (token) {\n const tokenLength = token.length;\n const tokenValue = value.slice(valueIndex, valueIndex + tokenLength);\n formatTokens[token]!(date, tokenValue);\n formatIndex += tokenLength;\n valueIndex += tokenLength;\n } else {\n formatIndex++;\n valueIndex++;\n }\n }\n\n return date;\n}\n\nexport function isValid(value: Date | string | number): boolean {\n const date = value instanceof Date ? value : new Date(value);\n return !isNaN(date.getTime());\n}\n\nexport function isBefore(date: Date, compare: Date): boolean {\n return date.getTime() < compare.getTime();\n}\n\nexport function isAfter(date: Date, compare: Date): boolean {\n return date.getTime() > compare.getTime();\n}\n\nexport function isSame(date: Date, compare: Date, unit: TimeUnit = 'millisecond'): boolean {\n const d1 = startOf(date, unit);\n const d2 = startOf(compare, unit);\n return d1.getTime() === d2.getTime();\n}\n\nexport function isSameDay(date: Date, compare: Date): boolean {\n return isSame(date, compare, 'day');\n}\n\nexport function isSameWeek(date: Date, compare: Date, weekStartsOn: number = 0): boolean {\n const d1 = startOfWeek(date, weekStartsOn);\n const d2 = startOfWeek(compare, weekStartsOn);\n return d1.getTime() === d2.getTime();\n}\n\nexport function isSameMonth(date: Date, compare: Date): boolean {\n return isSame(date, compare, 'month');\n}\n\nexport function isSameYear(date: Date, compare: Date): boolean {\n return isSame(date, compare, 'year');\n}\n\nexport function isToday(date: Date): boolean {\n return isSameDay(date, new Date());\n}\n\nexport function isYesterday(date: Date): boolean {\n return isSameDay(date, yesterday());\n}\n\nexport function isTomorrow(date: Date): boolean {\n return isSameDay(date, tomorrow());\n}\n\nexport function isPast(date: Date): boolean {\n return isBefore(date, new Date());\n}\n\nexport function isFuture(date: Date): boolean {\n return isAfter(date, new Date());\n}\n\nexport function isWeekend(date: Date): boolean {\n const day = date.getDay();\n return day === 0 || day === 6;\n}\n\nexport function isWeekday(date: Date): boolean {\n return !isWeekend(date);\n}\n\nexport function isLeapYear(year: number): boolean {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n}\n\nexport function isInLeapYear(date: Date): boolean {\n return isLeapYear(date.getFullYear());\n}\n\nexport function getYear(date: Date): number {\n return date.getFullYear();\n}\n\nexport function getMonth(date: Date): number {\n return date.getMonth() + 1;\n}\n\nexport function getDay(date: Date): number {\n return date.getDate();\n}\n\nexport function getDayOfWeek(date: Date): number {\n return date.getDay();\n}\n\nexport function getDayOfYear(date: Date): number {\n const start = new Date(date.getFullYear(), 0, 0);\n const diff = date.getTime() - start.getTime();\n return Math.floor(diff / MILLISECONDS_IN_DAY);\n}\n\nexport function getWeek(date: Date, _weekStartsOn: number = 0): number {\n const firstDayOfYear = new Date(date.getFullYear(), 0, 1);\n const pastDaysOfYear = (date.getTime() - firstDayOfYear.getTime()) / MILLISECONDS_IN_DAY;\n return Math.ceil((pastDaysOfYear + firstDayOfYear.getDay() + 1) / 7);\n}\n\nexport function getQuarter(date: Date): number {\n return Math.floor(date.getMonth() / 3) + 1;\n}\n\nexport function getHours(date: Date): number {\n return date.getHours();\n}\n\nexport function getMinutes(date: Date): number {\n return date.getMinutes();\n}\n\nexport function getSeconds(date: Date): number {\n return date.getSeconds();\n}\n\nexport function getMilliseconds(date: Date): number {\n return date.getMilliseconds();\n}\n\nexport function getTimestamp(date: Date): number {\n return date.getTime();\n}\n\nexport function getUnixTimestamp(date: Date): number {\n return Math.floor(date.getTime() / MILLISECONDS_IN_SECOND);\n}\n\nexport function getDaysInMonth(date: Date): number {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n}\n\nexport function getDaysInYear(date: Date): number {\n return isLeapYear(date.getFullYear()) ? 366 : 365;\n}\n\nexport function setYear(date: Date, year: number): Date {\n const result = new Date(date);\n result.setFullYear(year);\n return result;\n}\n\nexport function setMonth(date: Date, month: number): Date {\n const result = new Date(date);\n result.setMonth(month - 1);\n return result;\n}\n\nexport function setDay(date: Date, day: number): Date {\n const result = new Date(date);\n result.setDate(day);\n return result;\n}\n\nexport function setDayOfWeek(date: Date, day: number): Date {\n const result = new Date(date);\n const currentDay = result.getDay();\n const diff = day - currentDay;\n result.setDate(result.getDate() + diff);\n return result;\n}\n\nexport function setHours(date: Date, hours: number): Date {\n const result = new Date(date);\n result.setHours(hours);\n return result;\n}\n\nexport function setMinutes(date: Date, minutes: number): Date {\n const result = new Date(date);\n result.setMinutes(minutes);\n return result;\n}\n\nexport function setSeconds(date: Date, seconds: number): Date {\n const result = new Date(date);\n result.setSeconds(seconds);\n return result;\n}\n\nexport function setMilliseconds(date: Date, milliseconds: number): Date {\n const result = new Date(date);\n result.setMilliseconds(milliseconds);\n return result;\n}\n\nexport function startOf(date: Date, unit: TimeUnit): Date {\n const result = new Date(date);\n\n switch (unit) {\n case 'year':\n result.setMonth(0, 1);\n result.setHours(0, 0, 0, 0);\n break;\n case 'quarter':\n result.setMonth(Math.floor(result.getMonth() / 3) * 3, 1);\n result.setHours(0, 0, 0, 0);\n break;\n case 'month':\n result.setDate(1);\n result.setHours(0, 0, 0, 0);\n break;\n case 'week':\n return startOfWeek(result);\n case 'day':\n result.setHours(0, 0, 0, 0);\n break;\n case 'hour':\n result.setMinutes(0, 0, 0);\n break;\n case 'minute':\n result.setSeconds(0, 0);\n break;\n case 'second':\n result.setMilliseconds(0);\n break;\n }\n\n return result;\n}\n\nexport function endOf(date: Date, unit: TimeUnit): Date {\n const result = new Date(date);\n\n switch (unit) {\n case 'year':\n result.setMonth(11, 31);\n result.setHours(23, 59, 59, 999);\n break;\n case 'quarter':\n result.setMonth(Math.floor(result.getMonth() / 3) * 3 + 2);\n result.setDate(getDaysInMonth(result));\n result.setHours(23, 59, 59, 999);\n break;\n case 'month':\n result.setDate(getDaysInMonth(result));\n result.setHours(23, 59, 59, 999);\n break;\n case 'week':\n return endOfWeek(result);\n case 'day':\n result.setHours(23, 59, 59, 999);\n break;\n case 'hour':\n result.setMinutes(59, 59, 999);\n break;\n case 'minute':\n result.setSeconds(59, 999);\n break;\n case 'second':\n result.setMilliseconds(999);\n break;\n }\n\n return result;\n}\n\nexport function startOfDay(date: Date): Date {\n return startOf(date, 'day');\n}\n\nexport function endOfDay(date: Date): Date {\n return endOf(date, 'day');\n}\n\nexport function startOfWeek(date: Date, weekStartsOn: number = 0): Date {\n const result = new Date(date);\n const day = result.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n result.setDate(result.getDate() - diff);\n result.setHours(0, 0, 0, 0);\n return result;\n}\n\nexport function endOfWeek(date: Date, weekStartsOn: number = 0): Date {\n const result = startOfWeek(date, weekStartsOn);\n result.setDate(result.getDate() + 6);\n result.setHours(23, 59, 59, 999);\n return result;\n}\n\nexport function startOfMonth(date: Date): Date {\n return startOf(date, 'month');\n}\n\nexport function endOfMonth(date: Date): Date {\n return endOf(date, 'month');\n}\n\nexport function startOfYear(date: Date): Date {\n return startOf(date, 'year');\n}\n\nexport function endOfYear(date: Date): Date {\n return endOf(date, 'year');\n}\n\nexport function addMilliseconds(date: Date, amount: number): Date {\n const result = new Date(date);\n result.setMilliseconds(result.getMilliseconds() + amount);\n return result;\n}\n\nexport function addSeconds(date: Date, amount: number): Date {\n return addMilliseconds(date, amount * MILLISECONDS_IN_SECOND);\n}\n\nexport function addMinutes(date: Date, amount: number): Date {\n return addMilliseconds(date, amount * MILLISECONDS_IN_MINUTE);\n}\n\nexport function addHours(date: Date, amount: number): Date {\n return addMilliseconds(date, amount * MILLISECONDS_IN_HOUR);\n}\n\nexport function addDays(date: Date, amount: number): Date {\n const result = new Date(date);\n result.setDate(result.getDate() + amount);\n return result;\n}\n\nexport function addWeeks(date: Date, amount: number): Date {\n return addDays(date, amount * 7);\n}\n\nexport function addMonths(date: Date, amount: number): Date {\n const result = new Date(date);\n result.setMonth(result.getMonth() + amount);\n return result;\n}\n\nexport function addQuarters(date: Date, amount: number): Date {\n return addMonths(date, amount * 3);\n}\n\nexport function addYears(date: Date, amount: number): Date {\n return addMonths(date, amount * 12);\n}\n\nexport function add(date: Date, duration: Duration): Date {\n let result = new Date(date);\n \n if (duration.milliseconds) result = addMilliseconds(result, duration.milliseconds);\n if (duration.seconds) result = addSeconds(result, duration.seconds);\n if (duration.minutes) result = addMinutes(result, duration.minutes);\n if (duration.hours) result = addHours(result, duration.hours);\n if (duration.days) result = addDays(result, duration.days);\n if (duration.weeks) result = addWeeks(result, duration.weeks);\n if (duration.months) result = addMonths(result, duration.months);\n if (duration.years) result = addYears(result, duration.years);\n \n return result;\n}\n\nexport function subtract(date: Date, duration: Duration): Date {\n const negativeDuration: Duration = {};\n for (const key in duration) {\n negativeDuration[key as keyof Duration] = -(duration[key as keyof Duration] ?? 0);\n }\n return add(date, negativeDuration);\n}\n\nexport function diff(date1: Date, date2: Date, unit: TimeUnit = 'millisecond'): number {\n const diffMs = date1.getTime() - date2.getTime();\n \n switch (unit) {\n case 'millisecond':\n return diffMs;\n case 'second':\n return Math.floor(diffMs / MILLISECONDS_IN_SECOND);\n case 'minute':\n return Math.floor(diffMs / MILLISECONDS_IN_MINUTE);\n case 'hour':\n return Math.floor(diffMs / MILLISECONDS_IN_HOUR);\n case 'day':\n return Math.floor(diffMs / MILLISECONDS_IN_DAY);\n case 'week':\n return Math.floor(diffMs / MILLISECONDS_IN_WEEK);\n case 'month':\n const months = (date1.getFullYear() - date2.getFullYear()) * 12 + (date1.getMonth() - date2.getMonth());\n return months;\n case 'quarter':\n return Math.floor(diff(date1, date2, 'month') / 3);\n case 'year':\n return date1.getFullYear() - date2.getFullYear();\n default:\n return diffMs;\n }\n}\n\nexport function format(date: Date, formatStr: string = 'YYYY-MM-DD HH:mm:ss'): string {\n const tokens: Record<string, () => string> = {\n 'YYYY': () => String(date.getFullYear()),\n 'YY': () => String(date.getFullYear()).slice(-2),\n 'MM': () => String(date.getMonth() + 1).padStart(2, '0'),\n 'M': () => String(date.getMonth() + 1),\n 'DD': () => String(date.getDate()).padStart(2, '0'),\n 'D': () => String(date.getDate()),\n 'HH': () => String(date.getHours()).padStart(2, '0'),\n 'H': () => String(date.getHours()),\n 'hh': () => String(date.getHours() % 12 || 12).padStart(2, '0'),\n 'h': () => String(date.getHours() % 12 || 12),\n 'mm': () => String(date.getMinutes()).padStart(2, '0'),\n 'm': () => String(date.getMinutes()),\n 'ss': () => String(date.getSeconds()).padStart(2, '0'),\n 's': () => String(date.getSeconds()),\n 'SSS': () => String(date.getMilliseconds()).padStart(3, '0'),\n 'A': () => date.getHours() >= 12 ? 'PM' : 'AM',\n 'a': () => date.getHours() >= 12 ? 'pm' : 'am',\n 'd': () => String(date.getDay()),\n 'ddd': () => ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()] ?? '',\n 'dddd': () => ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()] ?? '',\n 'MMM': () => ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][date.getMonth()] ?? '',\n 'MMMM': () => ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][date.getMonth()] ?? '',\n 'Q': () => String(getQuarter(date)),\n 'W': () => String(getWeek(date)).padStart(2, '0'),\n 'Do': () => {\n const day = date.getDate();\n const suffix: string[] = ['th', 'st', 'nd', 'rd'];\n const remainder = day % 100;\n return day + (suffix[(remainder - 20) % 10] ?? suffix[remainder] ?? suffix[0]!);\n },\n };\n\n let result = formatStr;\n const sortedTokens = Object.keys(tokens).sort((a, b) => b.length - a.length);\n\n for (const token of sortedTokens) {\n if (result.includes(token)) {\n result = result.replace(new RegExp(token, 'g'), tokens[token]!());\n }\n }\n\n return result;\n}\n\nexport function formatIso(date: Date): string {\n return date.toISOString();\n}\n\nexport function formatIsoDate(date: Date): string {\n return format(date, 'YYYY-MM-DD');\n}\n\nexport function formatIsoTime(date: Date): string {\n return format(date, 'HH:mm:ss.SSS');\n}\n\nexport function formatRelative(date: Date, base: Date = new Date()): string {\n const diffMs = base.getTime() - date.getTime();\n const diffSeconds = Math.floor(diffMs / MILLISECONDS_IN_SECOND);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n const diffWeeks = Math.floor(diffDays / 7);\n const diffMonths = Math.floor(diffDays / 30);\n const diffYears = Math.floor(diffDays / 365);\n\n if (diffSeconds < 60) return 'just now';\n if (diffMinutes < 60) return `${diffMinutes} minute${diffMinutes > 1 ? 's' : ''} ago`;\n if (diffHours < 24) return `${diffHours} hour${diffHours > 1 ? 's' : ''} ago`;\n if (diffDays < 7) return `${diffDays} day${diffDays > 1 ? 's' : ''} ago`;\n if (diffWeeks < 4) return `${diffWeeks} week${diffWeeks > 1 ? 's' : ''} ago`;\n if (diffMonths < 12) return `${diffMonths} month${diffMonths > 1 ? 's' : ''} ago`;\n return `${diffYears} year${diffYears > 1 ? 's' : ''} ago`;\n}\n\nexport function formatDuration(duration: Duration): string {\n const parts: string[] = [];\n \n if (duration.years) parts.push(`${duration.years}y`);\n if (duration.months) parts.push(`${duration.months}mo`);\n if (duration.weeks) parts.push(`${duration.weeks}w`);\n if (duration.days) parts.push(`${duration.days}d`);\n if (duration.hours) parts.push(`${duration.hours}h`);\n if (duration.minutes) parts.push(`${duration.minutes}m`);\n if (duration.seconds) parts.push(`${duration.seconds}s`);\n if (duration.milliseconds) parts.push(`${duration.milliseconds}ms`);\n \n return parts.join(' ') || '0ms';\n}\n\nexport function toComponents(date: Date): DateComponents {\n return {\n year: date.getFullYear(),\n month: date.getMonth() + 1,\n day: date.getDate(),\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n };\n}\n\nexport function fromComponents(components: Partial<DateComponents>): Date {\n return new Date(\n components.year ?? 1970,\n (components.month ?? 1) - 1,\n components.day ?? 1,\n components.hours ?? 0,\n components.minutes ?? 0,\n components.seconds ?? 0,\n components.milliseconds ?? 0\n );\n}\n\nexport function clone(date: Date): Date {\n return new Date(date.getTime());\n}\n\nexport function min(...dates: Date[]): Date {\n return new Date(Math.min(...dates.map((d) => d.getTime())));\n}\n\nexport function max(...dates: Date[]): Date {\n return new Date(Math.max(...dates.map((d) => d.getTime())));\n}\n\nexport function isBetween(date: Date, start: Date, end: Date, inclusive: boolean = true): boolean {\n if (inclusive) {\n return date.getTime() >= start.getTime() && date.getTime() <= end.getTime();\n }\n return date.getTime() > start.getTime() && date.getTime() < end.getTime();\n}\n\nexport function eachDay(start: Date, end: Date): Date[] {\n const days: Date[] = [];\n let current = startOfDay(start);\n const endDate = startOfDay(end);\n\n while (current <= endDate) {\n days.push(clone(current));\n current = addDays(current, 1);\n }\n\n return days;\n}\n\nexport function eachWeek(start: Date, end: Date, weekStartsOn: number = 0): Date[] {\n const weeks: Date[] = [];\n let current = startOfWeek(start, weekStartsOn);\n const endDate = startOfWeek(end, weekStartsOn);\n\n while (current <= endDate) {\n weeks.push(clone(current));\n current = addWeeks(current, 1);\n }\n\n return weeks;\n}\n\nexport function eachMonth(start: Date, end: Date): Date[] {\n const months: Date[] = [];\n let current = startOfMonth(start);\n const endDate = startOfMonth(end);\n\n while (current <= endDate) {\n months.push(clone(current));\n current = addMonths(current, 1);\n }\n\n return months;\n}\n\nexport function eachYear(start: Date, end: Date): Date[] {\n const years: Date[] = [];\n let current = startOfYear(start);\n const endDate = startOfYear(end);\n\n while (current <= endDate) {\n years.push(clone(current));\n current = addYears(current, 1);\n }\n\n return years;\n}\n\nexport function closestTo(date: Date, dates: Date[]): Date | null {\n if (dates.length === 0) return null;\n \n const diffMs = date.getTime();\n let closest = dates[0]!;\n let minDiff = Math.abs(diffMs - closest.getTime());\n\n for (let i = 1; i < dates.length; i++) {\n const currentDiff = Math.abs(diffMs - dates[i]!.getTime());\n if (currentDiff < minDiff) {\n minDiff = currentDiff;\n closest = dates[i]!;\n }\n }\n\n return clone(closest);\n}\n\nexport function countWeekendDays(start: Date, end: Date): number {\n let count = 0;\n let current = startOfDay(start);\n const endDate = startOfDay(end);\n\n while (current <= endDate) {\n if (isWeekend(current)) {\n count++;\n }\n current = addDays(current, 1);\n }\n\n return count;\n}\n\nexport function countWeekdays(start: Date, end: Date): number {\n const totalDays = diff(end, start, 'day') + 1;\n return totalDays - countWeekendDays(start, end);\n}\n\nexport function nextWeekday(date: Date): Date {\n let result = addDays(date, 1);\n while (isWeekend(result)) {\n result = addDays(result, 1);\n }\n return result;\n}\n\nexport function previousWeekday(date: Date): Date {\n let result = addDays(date, -1);\n while (isWeekend(result)) {\n result = addDays(result, -1);\n }\n return result;\n}\n\nexport function nthDayOfMonth(year: number, month: number, dayOfWeek: number, nth: number): Date {\n const firstDay = new Date(year, month - 1, 1);\n const firstDayOfWeek = firstDay.getDay();\n const offset = (dayOfWeek - firstDayOfWeek + 7) % 7;\n const day = 1 + offset + (nth - 1) * 7;\n return new Date(year, month - 1, day);\n}\n\nexport function lastDayOfMonth(year: number, month: number, dayOfWeek: number): Date {\n const lastDate = new Date(year, month, 0);\n const lastDay = lastDate.getDate();\n const lastDayOfWeek = lastDate.getDay();\n const offset = (lastDayOfWeek - dayOfWeek + 7) % 7;\n return new Date(year, month - 1, lastDay - offset);\n}\n\nexport function age(birthDate: Date, referenceDate: Date = new Date()): number {\n let age = referenceDate.getFullYear() - birthDate.getFullYear();\n const monthDiff = referenceDate.getMonth() - birthDate.getMonth();\n \n if (monthDiff < 0 || (monthDiff === 0 && referenceDate.getDate() < birthDate.getDate())) {\n age--;\n }\n \n return age;\n}\n\nexport function timezoneOffset(date: Date = new Date()): number {\n return date.getTimezoneOffset();\n}\n\nexport function toTimezone(date: Date, timezone: string): Date {\n const str = date.toLocaleString('en-US', { timeZone: timezone });\n return new Date(str);\n}\n\nexport function isDST(date: Date): boolean {\n const jan = new Date(date.getFullYear(), 0, 1);\n const jul = new Date(date.getFullYear(), 6, 1);\n const stdOffset = Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n return date.getTimezoneOffset() < stdOffset;\n}\n"],"names":[],"mappings":";;AAyBO,MAAM,yBAAyB;AAC/B,MAAM,yBAAyB,KAAK;AACpC,MAAM,uBAAuB,KAAK;AAClC,MAAM,sBAAsB,KAAK;AACjC,MAAM,uBAAuB,IAAI;AAEjC,MAAM,mBAA6C;AAAA,EACxD,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO,KAAK;AAAA,EACZ,SAAS,KAAK;AAAA,EACd,MAAM,MAAM;AACd;;;;;;;"}