@anjianshi/utils 2.9.0 → 3.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 (164) hide show
  1. package/README.md +10 -0
  2. package/eslint.config.cjs +33 -0
  3. package/package.json +19 -10
  4. package/publish-prepare.cjs +16 -0
  5. package/src/env-browser/device.ts +62 -0
  6. package/src/env-browser/global.ts +21 -0
  7. package/src/env-browser/load-script.ts +13 -0
  8. package/src/env-browser/logging.ts +58 -0
  9. package/src/env-browser/manage-vconsole.ts +54 -0
  10. package/src/env-node/crypto-random.ts +30 -0
  11. package/src/env-node/fs.ts +50 -0
  12. package/src/env-node/index.ts +5 -0
  13. package/src/env-node/logging/handlers.ts +190 -0
  14. package/src/env-node/logging/index.ts +16 -0
  15. package/{env-react/emotion-register-globals.d.ts → src/env-react/emotion-register-globals.ts} +5 -2
  16. package/src/env-react/emotion.tsx +42 -0
  17. package/src/env-react/hooks.ts +59 -0
  18. package/src/env-react/index.ts +1 -0
  19. package/src/env-react/react-register-globals.ts +53 -0
  20. package/src/env-service/controllers.ts +93 -0
  21. package/src/env-service/env-reader.ts +141 -0
  22. package/src/env-service/index.ts +6 -0
  23. package/src/env-service/prisma/adapt-logging.ts +39 -0
  24. package/src/env-service/prisma/extensions/exist.ts +21 -0
  25. package/src/env-service/prisma/extensions/find-and-count.ts +24 -0
  26. package/src/env-service/prisma/extensions/soft-delete.ts +162 -0
  27. package/src/env-service/prisma/extensions/with-transaction.ts +65 -0
  28. package/src/env-service/prisma/index.ts +6 -0
  29. package/src/env-service/prisma/transaction-contexted.ts +80 -0
  30. package/src/env-service/redis-cache.ts +142 -0
  31. package/src/env-service/tasks.ts +45 -0
  32. package/src/index.ts +4 -0
  33. package/src/init-dayjs.ts +8 -0
  34. package/src/lang/async.ts +47 -0
  35. package/src/lang/color.ts +119 -0
  36. package/src/lang/index.ts +8 -0
  37. package/src/lang/object.ts +39 -0
  38. package/src/lang/random.ts +25 -0
  39. package/src/lang/result.ts +78 -0
  40. package/src/lang/string.ts +95 -0
  41. package/src/lang/time.ts +19 -0
  42. package/{lang/types.d.ts → src/lang/types.ts} +43 -23
  43. package/src/logging/adapt.ts +49 -0
  44. package/src/logging/formatters.ts +23 -0
  45. package/src/logging/index.ts +106 -0
  46. package/src/md5.ts +318 -0
  47. package/src/safe-request.ts +193 -0
  48. package/src/url.ts +185 -0
  49. package/src/validators/array.ts +97 -0
  50. package/src/validators/base.ts +145 -0
  51. package/src/validators/boolean.ts +21 -0
  52. package/src/validators/datetime.ts +39 -0
  53. package/src/validators/factory.ts +244 -0
  54. package/src/validators/index.ts +9 -0
  55. package/src/validators/number.ts +54 -0
  56. package/src/validators/object.ts +101 -0
  57. package/src/validators/one-of.ts +33 -0
  58. package/src/validators/string.ts +72 -0
  59. package/env-browser/device.d.ts +0 -24
  60. package/env-browser/device.js +0 -50
  61. package/env-browser/global.d.ts +0 -10
  62. package/env-browser/global.js +0 -15
  63. package/env-browser/load-script.d.ts +0 -5
  64. package/env-browser/load-script.js +0 -13
  65. package/env-browser/logging.d.ts +0 -18
  66. package/env-browser/logging.js +0 -49
  67. package/env-browser/manage-vconsole.d.ts +0 -16
  68. package/env-browser/manage-vconsole.js +0 -38
  69. package/env-node/crypto-random.d.ts +0 -13
  70. package/env-node/crypto-random.js +0 -28
  71. package/env-node/fs.d.ts +0 -19
  72. package/env-node/fs.js +0 -48
  73. package/env-node/index.d.ts +0 -6
  74. package/env-node/index.js +0 -6
  75. package/env-node/logging/handlers.d.ts +0 -58
  76. package/env-node/logging/handlers.js +0 -154
  77. package/env-node/logging/index.d.ts +0 -11
  78. package/env-node/logging/index.js +0 -14
  79. package/env-node/safe-request.d.ts +0 -26
  80. package/env-node/safe-request.js +0 -40
  81. package/env-react/emotion-register-globals.js +0 -5
  82. package/env-react/emotion.d.ts +0 -20
  83. package/env-react/emotion.jsx +0 -34
  84. package/env-react/hooks.d.ts +0 -4
  85. package/env-react/hooks.js +0 -16
  86. package/env-react/index.d.ts +0 -1
  87. package/env-react/index.js +0 -1
  88. package/env-react/react-register-globals.d.ts +0 -21
  89. package/env-react/react-register-globals.js +0 -19
  90. package/env-service/controllers.d.ts +0 -30
  91. package/env-service/controllers.js +0 -41
  92. package/env-service/env-reader.d.ts +0 -55
  93. package/env-service/env-reader.js +0 -79
  94. package/env-service/index.d.ts +0 -6
  95. package/env-service/index.js +0 -6
  96. package/env-service/prisma/adapt-logging.d.ts +0 -21
  97. package/env-service/prisma/adapt-logging.js +0 -30
  98. package/env-service/prisma/extensions/exist.d.ts +0 -10
  99. package/env-service/prisma/extensions/exist.js +0 -16
  100. package/env-service/prisma/extensions/find-and-count.d.ts +0 -7
  101. package/env-service/prisma/extensions/find-and-count.js +0 -19
  102. package/env-service/prisma/extensions/soft-delete.d.ts +0 -52
  103. package/env-service/prisma/extensions/soft-delete.js +0 -123
  104. package/env-service/prisma/extensions/with-transaction.d.ts +0 -9
  105. package/env-service/prisma/extensions/with-transaction.js +0 -54
  106. package/env-service/prisma/index.d.ts +0 -6
  107. package/env-service/prisma/index.js +0 -6
  108. package/env-service/prisma/transaction-contexted.d.ts +0 -11
  109. package/env-service/prisma/transaction-contexted.js +0 -52
  110. package/env-service/redis-cache.d.ts +0 -39
  111. package/env-service/redis-cache.js +0 -116
  112. package/env-service/tasks.d.ts +0 -12
  113. package/env-service/tasks.js +0 -37
  114. package/index.d.ts +0 -3
  115. package/index.js +0 -3
  116. package/init-dayjs.d.ts +0 -2
  117. package/init-dayjs.js +0 -7
  118. package/lang/async.d.ts +0 -19
  119. package/lang/async.js +0 -34
  120. package/lang/color.d.ts +0 -37
  121. package/lang/color.js +0 -111
  122. package/lang/index.d.ts +0 -8
  123. package/lang/index.js +0 -8
  124. package/lang/may-success.d.ts +0 -40
  125. package/lang/may-success.js +0 -27
  126. package/lang/object.d.ts +0 -12
  127. package/lang/object.js +0 -41
  128. package/lang/random.d.ts +0 -13
  129. package/lang/random.js +0 -24
  130. package/lang/string.d.ts +0 -29
  131. package/lang/string.js +0 -92
  132. package/lang/time.d.ts +0 -10
  133. package/lang/time.js +0 -18
  134. package/lang/types.js +0 -28
  135. package/logging/adapt.d.ts +0 -10
  136. package/logging/adapt.js +0 -43
  137. package/logging/formatters.d.ts +0 -10
  138. package/logging/formatters.js +0 -22
  139. package/logging/index.d.ts +0 -45
  140. package/logging/index.js +0 -90
  141. package/md5.d.ts +0 -30
  142. package/md5.js +0 -308
  143. package/url.d.ts +0 -77
  144. package/url.js +0 -149
  145. package/validators/array.d.ts +0 -30
  146. package/validators/array.js +0 -47
  147. package/validators/base.d.ts +0 -82
  148. package/validators/base.js +0 -42
  149. package/validators/boolean.d.ts +0 -3
  150. package/validators/boolean.js +0 -22
  151. package/validators/datetime.d.ts +0 -12
  152. package/validators/datetime.js +0 -30
  153. package/validators/factory.d.ts +0 -70
  154. package/validators/factory.js +0 -121
  155. package/validators/index.d.ts +0 -9
  156. package/validators/index.js +0 -9
  157. package/validators/number.d.ts +0 -19
  158. package/validators/number.js +0 -26
  159. package/validators/object.d.ts +0 -28
  160. package/validators/object.js +0 -49
  161. package/validators/one-of.d.ts +0 -10
  162. package/validators/one-of.js +0 -15
  163. package/validators/string.d.ts +0 -22
  164. package/validators/string.js +0 -35
@@ -1,45 +0,0 @@
1
- import { type Dayjs } from 'dayjs';
2
- export { default as formatters } from './formatters.js';
3
- export * from './adapt.js';
4
- export declare enum LogLevel {
5
- Debug = 1,
6
- Info = 2,
7
- Warning = 3,
8
- Error = 4
9
- }
10
- export declare const logLevelMap: Record<string, LogLevel>;
11
- export interface LogInfo {
12
- logger: string;
13
- level: LogLevel;
14
- time: Dayjs;
15
- args: unknown[];
16
- }
17
- export declare class LogHandler {
18
- log(info: LogInfo): void;
19
- }
20
- export declare class Logger {
21
- name: string;
22
- base: Logger | null;
23
- level: LogLevel;
24
- handlers: Set<LogHandler>;
25
- constructor(name?: string, base?: Logger | null);
26
- static getRealLevel(raw: LogLevel | string): LogLevel;
27
- setLevel(level: LogLevel | string): void;
28
- addHandler(handler: LogHandler): void;
29
- /**
30
- * 创建一个以当前 logger 为 base 的 child logger
31
- */
32
- getChild(name: string): this;
33
- log(level: LogLevel | string, args: unknown[]): void;
34
- protected logByInfo(info: LogInfo): void;
35
- debug(...args: any[]): void;
36
- info(...args: any[]): void;
37
- warn(...args: any[]): void;
38
- error(...args: any[]): void;
39
- }
40
- /**
41
- * 提供一套默认配置好的 logger
42
- */
43
- declare const defaultLogger: Logger;
44
- export { defaultLogger as logger };
45
- export declare function getLogger(name: string): Logger;
package/logging/index.js DELETED
@@ -1,90 +0,0 @@
1
- import dayjs from 'dayjs';
2
- export { default as formatters } from './formatters.js';
3
- export * from './adapt.js';
4
- import { initDayJs } from '../init-dayjs.js';
5
- // 引入 logging 库会自动初始化 dayjs
6
- initDayJs();
7
- export var LogLevel;
8
- (function (LogLevel) {
9
- LogLevel[LogLevel["Debug"] = 1] = "Debug";
10
- LogLevel[LogLevel["Info"] = 2] = "Info";
11
- LogLevel[LogLevel["Warning"] = 3] = "Warning";
12
- LogLevel[LogLevel["Error"] = 4] = "Error";
13
- })(LogLevel || (LogLevel = {}));
14
- export const logLevelMap = {
15
- debug: LogLevel.Debug,
16
- info: LogLevel.Info,
17
- warn: LogLevel.Warning,
18
- warning: LogLevel.Warning,
19
- err: LogLevel.Error,
20
- error: LogLevel.Error,
21
- };
22
- export class LogHandler {
23
- log(info) { } // eslint-disable-line @typescript-eslint/no-unused-vars
24
- }
25
- export class Logger {
26
- name;
27
- base;
28
- level = LogLevel.Info;
29
- handlers = new Set();
30
- constructor(name = '', base = null) {
31
- this.name = name;
32
- this.base = base;
33
- }
34
- static getRealLevel(raw) {
35
- if (typeof raw === 'string') {
36
- raw = raw.toLowerCase();
37
- if (logLevelMap[raw] === undefined)
38
- throw new Error('Not supported log level: ' + raw);
39
- return logLevelMap[raw];
40
- }
41
- return raw;
42
- }
43
- setLevel(level) {
44
- this.level = Logger.getRealLevel(level);
45
- }
46
- addHandler(handler) {
47
- this.handlers.add(handler);
48
- }
49
- /**
50
- * 创建一个以当前 logger 为 base 的 child logger
51
- */
52
- getChild(name) {
53
- const fullname = this.name ? `${this.name}/${name}` : name;
54
- // 这里加上 `as this` 才能让 TypeScript 判定,对继承了 Logger 的类调用此方法时,返回的是那个类而不是原始的 Logger 类的实例
55
- return new this.constructor(fullname, this);
56
- }
57
- log(level, args) {
58
- level = Logger.getRealLevel(level);
59
- this.logByInfo({ logger: this.name, level, time: dayjs(), args });
60
- }
61
- logByInfo(info) {
62
- if (this.base)
63
- this.base.logByInfo(info);
64
- if (this.level > info.level)
65
- return;
66
- for (const handler of this.handlers) {
67
- handler.log(info);
68
- }
69
- }
70
- debug(...args) {
71
- this.log(LogLevel.Debug, args);
72
- }
73
- info(...args) {
74
- this.log(LogLevel.Info, args);
75
- }
76
- warn(...args) {
77
- this.log(LogLevel.Warning, args);
78
- }
79
- error(...args) {
80
- this.log(LogLevel.Error, args);
81
- }
82
- }
83
- /**
84
- * 提供一套默认配置好的 logger
85
- */
86
- const defaultLogger = new Logger();
87
- export { defaultLogger as logger };
88
- export function getLogger(name) {
89
- return defaultLogger.getChild(name);
90
- }
package/md5.d.ts DELETED
@@ -1,30 +0,0 @@
1
- /**
2
- * MD5 算法来自:https://github.com/emn178/js-md5
3
- */
4
- export declare function md5(content: string | ArrayBuffer): string;
5
- /**
6
- * 使用方法:
7
- * const md5 = new MD5()
8
- * md5.update(xxx) // 对于大文件,可以拆分开,多次调用 md5.update()
9
- * const hash = md5.hex()
10
- */
11
- export declare class MD5 {
12
- private readonly buffer8;
13
- private readonly blocks;
14
- private h0;
15
- private h1;
16
- private h2;
17
- private h3;
18
- private start;
19
- private bytes;
20
- private hBytes;
21
- private lastByteIndex;
22
- private finalized;
23
- private hashed;
24
- private first;
25
- constructor();
26
- update(message: string | number[] | Uint8Array | ArrayBuffer): void;
27
- private finalize;
28
- private hash;
29
- hex(): string;
30
- }
package/md5.js DELETED
@@ -1,308 +0,0 @@
1
- /* eslint-disable no-multi-assign */
2
- /**
3
- * MD5 算法来自:https://github.com/emn178/js-md5
4
- */
5
- export function md5(content) {
6
- const md5 = new MD5();
7
- md5.update(content);
8
- return md5.hex();
9
- }
10
- // -------------------------------------------------------------------
11
- /**
12
- * 使用方法:
13
- * const md5 = new MD5()
14
- * md5.update(xxx) // 对于大文件,可以拆分开,多次调用 md5.update()
15
- * const hash = md5.hex()
16
- */
17
- export class MD5 {
18
- buffer8;
19
- blocks;
20
- h0 = 0;
21
- h1 = 0;
22
- h2 = 0;
23
- h3 = 0;
24
- start = 0;
25
- bytes = 0;
26
- hBytes = 0;
27
- lastByteIndex = 0;
28
- finalized = false;
29
- hashed = false;
30
- first = true;
31
- constructor() {
32
- const buffer = new ArrayBuffer(68);
33
- this.buffer8 = new Uint8Array(buffer);
34
- this.blocks = new Uint32Array(buffer);
35
- }
36
- update(message) {
37
- if (this.finalized)
38
- return;
39
- if (message instanceof ArrayBuffer) {
40
- message = new Uint8Array(message);
41
- }
42
- if (typeof message !== 'string' && !Array.isArray(message) && !ArrayBuffer.isView(message)) {
43
- throw new Error('input is invalid type');
44
- }
45
- const length = message.length;
46
- const { blocks, buffer8 } = this;
47
- let code;
48
- let index = 0;
49
- let i;
50
- while (index < length) {
51
- if (this.hashed) {
52
- this.hashed = false;
53
- blocks[0] = blocks[16];
54
- // prettier-ignore
55
- blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] =
56
- blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] =
57
- blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
58
- }
59
- if (typeof message !== 'string') {
60
- for (i = this.start; index < length && i < 64; ++index) {
61
- buffer8[i++] = message[index];
62
- }
63
- }
64
- else {
65
- for (i = this.start; index < length && i < 64; ++index) {
66
- code = message.charCodeAt(index);
67
- if (code < 0x80) {
68
- buffer8[i++] = code;
69
- }
70
- else if (code < 0x800) {
71
- buffer8[i++] = 0xc0 | (code >> 6);
72
- buffer8[i++] = 0x80 | (code & 0x3f);
73
- }
74
- else if (code < 0xd800 || code >= 0xe000) {
75
- buffer8[i++] = 0xe0 | (code >> 12);
76
- buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
77
- buffer8[i++] = 0x80 | (code & 0x3f);
78
- }
79
- else {
80
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
81
- buffer8[i++] = 0xf0 | (code >> 18);
82
- buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);
83
- buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);
84
- buffer8[i++] = 0x80 | (code & 0x3f);
85
- }
86
- }
87
- }
88
- this.lastByteIndex = i;
89
- this.bytes += i - this.start;
90
- if (i >= 64) {
91
- this.start = i - 64;
92
- this.hash();
93
- this.hashed = true;
94
- }
95
- else {
96
- this.start = i;
97
- }
98
- }
99
- if (this.bytes > 4294967295) {
100
- this.hBytes += (this.bytes / 4294967296) << 0;
101
- this.bytes = this.bytes % 4294967296;
102
- }
103
- }
104
- finalize() {
105
- if (this.finalized)
106
- return;
107
- this.finalized = true;
108
- const { blocks } = this;
109
- const i = this.lastByteIndex;
110
- const EXTRA = [128, 32768, 8388608, -2147483648];
111
- blocks[i >> 2] |= EXTRA[i & 3];
112
- if (i >= 56) {
113
- if (!this.hashed)
114
- this.hash();
115
- blocks[0] = blocks[16];
116
- // prettier-ignore
117
- blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] =
118
- blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] =
119
- blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
120
- }
121
- blocks[14] = this.bytes << 3;
122
- blocks[15] = (this.hBytes << 3) | (this.bytes >>> 29);
123
- this.hash();
124
- }
125
- hash() {
126
- let a, b, c, d, bc, da;
127
- const { blocks } = this;
128
- if (this.first) {
129
- a = blocks[0] - 680876937;
130
- a = (((a << 7) | (a >>> 25)) - 271733879) << 0;
131
- d = (-1732584194 ^ (a & 2004318071)) + blocks[1] - 117830708;
132
- d = (((d << 12) | (d >>> 20)) + a) << 0;
133
- c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;
134
- c = (((c << 17) | (c >>> 15)) + d) << 0;
135
- b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;
136
- b = (((b << 22) | (b >>> 10)) + c) << 0;
137
- }
138
- else {
139
- a = this.h0;
140
- b = this.h1;
141
- c = this.h2;
142
- d = this.h3;
143
- a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;
144
- a = (((a << 7) | (a >>> 25)) + b) << 0;
145
- d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;
146
- d = (((d << 12) | (d >>> 20)) + a) << 0;
147
- c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;
148
- c = (((c << 17) | (c >>> 15)) + d) << 0;
149
- b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;
150
- b = (((b << 22) | (b >>> 10)) + c) << 0;
151
- }
152
- a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;
153
- a = (((a << 7) | (a >>> 25)) + b) << 0;
154
- d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;
155
- d = (((d << 12) | (d >>> 20)) + a) << 0;
156
- c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;
157
- c = (((c << 17) | (c >>> 15)) + d) << 0;
158
- b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;
159
- b = (((b << 22) | (b >>> 10)) + c) << 0;
160
- a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;
161
- a = (((a << 7) | (a >>> 25)) + b) << 0;
162
- d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;
163
- d = (((d << 12) | (d >>> 20)) + a) << 0;
164
- c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;
165
- c = (((c << 17) | (c >>> 15)) + d) << 0;
166
- b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;
167
- b = (((b << 22) | (b >>> 10)) + c) << 0;
168
- a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;
169
- a = (((a << 7) | (a >>> 25)) + b) << 0;
170
- d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;
171
- d = (((d << 12) | (d >>> 20)) + a) << 0;
172
- c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;
173
- c = (((c << 17) | (c >>> 15)) + d) << 0;
174
- b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;
175
- b = (((b << 22) | (b >>> 10)) + c) << 0;
176
- a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;
177
- a = (((a << 5) | (a >>> 27)) + b) << 0;
178
- d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;
179
- d = (((d << 9) | (d >>> 23)) + a) << 0;
180
- c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;
181
- c = (((c << 14) | (c >>> 18)) + d) << 0;
182
- b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;
183
- b = (((b << 20) | (b >>> 12)) + c) << 0;
184
- a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;
185
- a = (((a << 5) | (a >>> 27)) + b) << 0;
186
- d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;
187
- d = (((d << 9) | (d >>> 23)) + a) << 0;
188
- c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;
189
- c = (((c << 14) | (c >>> 18)) + d) << 0;
190
- b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;
191
- b = (((b << 20) | (b >>> 12)) + c) << 0;
192
- a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;
193
- a = (((a << 5) | (a >>> 27)) + b) << 0;
194
- d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;
195
- d = (((d << 9) | (d >>> 23)) + a) << 0;
196
- c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;
197
- c = (((c << 14) | (c >>> 18)) + d) << 0;
198
- b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;
199
- b = (((b << 20) | (b >>> 12)) + c) << 0;
200
- a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;
201
- a = (((a << 5) | (a >>> 27)) + b) << 0;
202
- d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;
203
- d = (((d << 9) | (d >>> 23)) + a) << 0;
204
- c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;
205
- c = (((c << 14) | (c >>> 18)) + d) << 0;
206
- b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;
207
- b = (((b << 20) | (b >>> 12)) + c) << 0;
208
- bc = b ^ c;
209
- a += (bc ^ d) + blocks[5] - 378558;
210
- a = (((a << 4) | (a >>> 28)) + b) << 0;
211
- d += (bc ^ a) + blocks[8] - 2022574463;
212
- d = (((d << 11) | (d >>> 21)) + a) << 0;
213
- da = d ^ a;
214
- c += (da ^ b) + blocks[11] + 1839030562;
215
- c = (((c << 16) | (c >>> 16)) + d) << 0;
216
- b += (da ^ c) + blocks[14] - 35309556;
217
- b = (((b << 23) | (b >>> 9)) + c) << 0;
218
- bc = b ^ c;
219
- a += (bc ^ d) + blocks[1] - 1530992060;
220
- a = (((a << 4) | (a >>> 28)) + b) << 0;
221
- d += (bc ^ a) + blocks[4] + 1272893353;
222
- d = (((d << 11) | (d >>> 21)) + a) << 0;
223
- da = d ^ a;
224
- c += (da ^ b) + blocks[7] - 155497632;
225
- c = (((c << 16) | (c >>> 16)) + d) << 0;
226
- b += (da ^ c) + blocks[10] - 1094730640;
227
- b = (((b << 23) | (b >>> 9)) + c) << 0;
228
- bc = b ^ c;
229
- a += (bc ^ d) + blocks[13] + 681279174;
230
- a = (((a << 4) | (a >>> 28)) + b) << 0;
231
- d += (bc ^ a) + blocks[0] - 358537222;
232
- d = (((d << 11) | (d >>> 21)) + a) << 0;
233
- da = d ^ a;
234
- c += (da ^ b) + blocks[3] - 722521979;
235
- c = (((c << 16) | (c >>> 16)) + d) << 0;
236
- b += (da ^ c) + blocks[6] + 76029189;
237
- b = (((b << 23) | (b >>> 9)) + c) << 0;
238
- bc = b ^ c;
239
- a += (bc ^ d) + blocks[9] - 640364487;
240
- a = (((a << 4) | (a >>> 28)) + b) << 0;
241
- d += (bc ^ a) + blocks[12] - 421815835;
242
- d = (((d << 11) | (d >>> 21)) + a) << 0;
243
- da = d ^ a;
244
- c += (da ^ b) + blocks[15] + 530742520;
245
- c = (((c << 16) | (c >>> 16)) + d) << 0;
246
- b += (da ^ c) + blocks[2] - 995338651;
247
- b = (((b << 23) | (b >>> 9)) + c) << 0;
248
- a += (c ^ (b | ~d)) + blocks[0] - 198630844;
249
- a = (((a << 6) | (a >>> 26)) + b) << 0;
250
- d += (b ^ (a | ~c)) + blocks[7] + 1126891415;
251
- d = (((d << 10) | (d >>> 22)) + a) << 0;
252
- c += (a ^ (d | ~b)) + blocks[14] - 1416354905;
253
- c = (((c << 15) | (c >>> 17)) + d) << 0;
254
- b += (d ^ (c | ~a)) + blocks[5] - 57434055;
255
- b = (((b << 21) | (b >>> 11)) + c) << 0;
256
- a += (c ^ (b | ~d)) + blocks[12] + 1700485571;
257
- a = (((a << 6) | (a >>> 26)) + b) << 0;
258
- d += (b ^ (a | ~c)) + blocks[3] - 1894986606;
259
- d = (((d << 10) | (d >>> 22)) + a) << 0;
260
- c += (a ^ (d | ~b)) + blocks[10] - 1051523;
261
- c = (((c << 15) | (c >>> 17)) + d) << 0;
262
- b += (d ^ (c | ~a)) + blocks[1] - 2054922799;
263
- b = (((b << 21) | (b >>> 11)) + c) << 0;
264
- a += (c ^ (b | ~d)) + blocks[8] + 1873313359;
265
- a = (((a << 6) | (a >>> 26)) + b) << 0;
266
- d += (b ^ (a | ~c)) + blocks[15] - 30611744;
267
- d = (((d << 10) | (d >>> 22)) + a) << 0;
268
- c += (a ^ (d | ~b)) + blocks[6] - 1560198380;
269
- c = (((c << 15) | (c >>> 17)) + d) << 0;
270
- b += (d ^ (c | ~a)) + blocks[13] + 1309151649;
271
- b = (((b << 21) | (b >>> 11)) + c) << 0;
272
- a += (c ^ (b | ~d)) + blocks[4] - 145523070;
273
- a = (((a << 6) | (a >>> 26)) + b) << 0;
274
- d += (b ^ (a | ~c)) + blocks[11] - 1120210379;
275
- d = (((d << 10) | (d >>> 22)) + a) << 0;
276
- c += (a ^ (d | ~b)) + blocks[2] + 718787259;
277
- c = (((c << 15) | (c >>> 17)) + d) << 0;
278
- b += (d ^ (c | ~a)) + blocks[9] - 343485551;
279
- b = (((b << 21) | (b >>> 11)) + c) << 0;
280
- if (this.first) {
281
- this.h0 = (a + 1732584193) << 0;
282
- this.h1 = (b - 271733879) << 0;
283
- this.h2 = (c - 1732584194) << 0;
284
- this.h3 = (d + 271733878) << 0;
285
- this.first = false;
286
- }
287
- else {
288
- this.h0 = (this.h0 + a) << 0;
289
- this.h1 = (this.h1 + b) << 0;
290
- this.h2 = (this.h2 + c) << 0;
291
- this.h3 = (this.h3 + d) << 0;
292
- }
293
- }
294
- hex() {
295
- this.finalize();
296
- const { h0, h1, h2, h3 } = this;
297
- const HEX_CHARS = '0123456789abcdef'.split('');
298
- return (
299
- // prettier-ignore
300
- HEX_CHARS[(h0 >> 4) & 0x0f] + HEX_CHARS[h0 & 0x0f] + HEX_CHARS[(h0 >> 12) & 0x0f] + HEX_CHARS[(h0 >> 8) & 0x0f] + HEX_CHARS[(h0 >> 20) & 0x0f] +
301
- HEX_CHARS[(h0 >> 16) & 0x0f] + HEX_CHARS[(h0 >> 28) & 0x0f] + HEX_CHARS[(h0 >> 24) & 0x0f] + HEX_CHARS[(h1 >> 4) & 0x0f] + HEX_CHARS[h1 & 0x0f] +
302
- HEX_CHARS[(h1 >> 12) & 0x0f] + HEX_CHARS[(h1 >> 8) & 0x0f] + HEX_CHARS[(h1 >> 20) & 0x0f] + HEX_CHARS[(h1 >> 16) & 0x0f] + HEX_CHARS[(h1 >> 28) & 0x0f] +
303
- HEX_CHARS[(h1 >> 24) & 0x0f] + HEX_CHARS[(h2 >> 4) & 0x0f] + HEX_CHARS[h2 & 0x0f] + HEX_CHARS[(h2 >> 12) & 0x0f] + HEX_CHARS[(h2 >> 8) & 0x0f] +
304
- HEX_CHARS[(h2 >> 20) & 0x0f] + HEX_CHARS[(h2 >> 16) & 0x0f] + HEX_CHARS[(h2 >> 28) & 0x0f] + HEX_CHARS[(h2 >> 24) & 0x0f] + HEX_CHARS[(h3 >> 4) & 0x0f] +
305
- HEX_CHARS[h3 & 0x0f] + HEX_CHARS[(h3 >> 12) & 0x0f] + HEX_CHARS[(h3 >> 8) & 0x0f] + HEX_CHARS[(h3 >> 20) & 0x0f] + HEX_CHARS[(h3 >> 16) & 0x0f] +
306
- HEX_CHARS[(h3 >> 28) & 0x0f] + HEX_CHARS[(h3 >> 24) & 0x0f]);
307
- }
308
- }
package/url.d.ts DELETED
@@ -1,77 +0,0 @@
1
- /**
2
- * 从 URL 中解析出 query 对象
3
- * 注意:不带 ? 号的纯 query 内容需手动加上 ? 再传入。
4
- *
5
- * [array]
6
- * 是否把重复出现的 key 保存为数组(默认不开启)
7
- * a=1&a=2 => { a: [1,2] }
8
- *
9
- * [loose]
10
- * 是否开启“宽松模式”(默认不开启)
11
- * 1. hash 里的内容也会被解析,以兼容拼接错误的 URL(把 query 拼到了 hash 后面)。
12
- * 2. 出现多个 ? 符号时,会把 ? 也当做 & 分隔符(index.html?a=1&b=2?c=3)
13
- *
14
- * [decode]
15
- * 是否对 query 值进行 decode(默认开启)
16
- */
17
- declare function parseQuery(url: string, options?: {
18
- array?: false;
19
- loose?: boolean;
20
- decode?: boolean;
21
- }): Record<string, string>;
22
- declare function parseQuery(url: string, options: {
23
- array: true;
24
- loose?: boolean;
25
- decode?: boolean;
26
- }): Record<string, string | string[]>;
27
- export { parseQuery };
28
- /**
29
- * 把对象合并成 query string。
30
- * - 支持字符串、数值、布尔值、数组。
31
- * - 布尔值会替换成 0 和 1。
32
- * - 数组会多次赋值:{ a: [1,2,3] } => 'a=1&a=2&a=3',不支持嵌套数组
33
- * - encode 为 true 时会对 value 执行 encodeURIComponent(默认为 true)
34
- */
35
- export type StringifyVal = string | number | boolean;
36
- export type StringifyQuery = Record<string, StringifyVal | StringifyVal[] | undefined>;
37
- export declare function stringifyQuery(obj: StringifyQuery, encode?: boolean): string;
38
- /**
39
- * 拆分 URL 的各个部分
40
- *
41
- * bare 为 true,则 search 不带 '?',hash 不带 '#'
42
- * 否则和 location.search / hash 一样
43
- * (默认为 true)
44
- */
45
- export declare function splitUrl(url: string, bare?: boolean): {
46
- base: string;
47
- search: string;
48
- hash: string;
49
- };
50
- /**
51
- * 把 query 和 hash 内容合并到 url 上
52
- *
53
- * query object 与现有 search 合并,替换同名项(值为数组的,用新数组代替老的,不会合并数组)
54
- * hash string 带不带开头的 '#' 皆可。会代替 url 已有的 hash。
55
- */
56
- export declare function combineUrl(origUrl: string, query?: StringifyQuery, hash?: string): string;
57
- /**
58
- * 移除路径中所有非必须的 "/"
59
- * 清理后的字符串只有这几种可能的格式:''、'abc'、'abc/def'
60
- * 例如 /abc/def 和 abc/def/ 都会变成 abc/def
61
- *
62
- * 注意:此操作不会统一大小写,因此不保证处理后两个字符串在代码层面全等(a === b)
63
- */
64
- export declare function clearSlash(path: string): string;
65
- /**
66
- * 合并几段路径,保证合并处只有一个斜杠
67
- */
68
- export declare function joinPath(...nodes: string[]): string;
69
- /**
70
- * decodeURIComponent() 对于不规范编码的字符串可能会报错(例如字符串里出现了“%”)
71
- * 用此函数代替可避免此问题
72
- */
73
- export declare function safeDecode(content: string): string;
74
- /**
75
- * 将 URL 中的 http:// 协议改成 https://
76
- */
77
- export declare function ensureHttps(url: string | undefined): string | undefined;