@cloudcome/utils-browser 1.1.0 → 1.1.1

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 (80) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/LICENSE +21 -0
  3. package/package.json +122 -1
  4. package/src/base64.ts +25 -0
  5. package/{dist/cache.cjs → src/cache.ts} +48 -20
  6. package/src/canvas.ts +147 -0
  7. package/{dist/clipboard.d.ts → src/clipboard.ts} +12 -1
  8. package/src/cookie.ts +118 -0
  9. package/{dist/dom.d.ts → src/dom.ts} +21 -3
  10. package/src/download.ts +22 -0
  11. package/src/dts/global.d.ts +27 -0
  12. package/src/image.ts +45 -0
  13. package/src/index.ts +1 -0
  14. package/src/timer.ts +56 -0
  15. package/src/video.ts +19 -0
  16. package/test/base64.test.ts +47 -0
  17. package/test/cache.test.ts +199 -0
  18. package/test/canvas.test.ts +124 -0
  19. package/test/clipboard.test.ts +18 -0
  20. package/test/cookie.test.ts +52 -0
  21. package/test/dom.test.ts +67 -0
  22. package/test/download.test.ts +15 -0
  23. package/test/image.test.ts +75 -0
  24. package/test/index.test.ts +6 -0
  25. package/test/timer.test.ts +109 -0
  26. package/test/video.test.ts +36 -0
  27. package/tsconfig.json +31 -0
  28. package/vite.config.mts +100 -0
  29. package/dist/base64.cjs +0 -15
  30. package/dist/base64.cjs.map +0 -1
  31. package/dist/base64.d.ts +0 -14
  32. package/dist/base64.mjs +0 -15
  33. package/dist/base64.mjs.map +0 -1
  34. package/dist/cache.cjs.map +0 -1
  35. package/dist/cache.d.ts +0 -49
  36. package/dist/cache.mjs +0 -87
  37. package/dist/cache.mjs.map +0 -1
  38. package/dist/canvas.cjs +0 -58
  39. package/dist/canvas.cjs.map +0 -1
  40. package/dist/canvas.d.ts +0 -92
  41. package/dist/canvas.mjs +0 -58
  42. package/dist/canvas.mjs.map +0 -1
  43. package/dist/clipboard.cjs +0 -16
  44. package/dist/clipboard.cjs.map +0 -1
  45. package/dist/clipboard.mjs +0 -16
  46. package/dist/clipboard.mjs.map +0 -1
  47. package/dist/cookie.cjs +0 -50
  48. package/dist/cookie.cjs.map +0 -1
  49. package/dist/cookie.d.ts +0 -55
  50. package/dist/cookie.mjs +0 -50
  51. package/dist/cookie.mjs.map +0 -1
  52. package/dist/dom.cjs +0 -18
  53. package/dist/dom.cjs.map +0 -1
  54. package/dist/dom.mjs +0 -18
  55. package/dist/dom.mjs.map +0 -1
  56. package/dist/download.cjs +0 -16
  57. package/dist/download.cjs.map +0 -1
  58. package/dist/download.d.ts +0 -12
  59. package/dist/download.mjs +0 -16
  60. package/dist/download.mjs.map +0 -1
  61. package/dist/image.cjs +0 -35
  62. package/dist/image.cjs.map +0 -1
  63. package/dist/image.d.ts +0 -9
  64. package/dist/image.mjs +0 -35
  65. package/dist/image.mjs.map +0 -1
  66. package/dist/index.cjs +0 -5
  67. package/dist/index.cjs.map +0 -1
  68. package/dist/index.d.ts +0 -1
  69. package/dist/index.mjs +0 -5
  70. package/dist/index.mjs.map +0 -1
  71. package/dist/timer.cjs +0 -41
  72. package/dist/timer.cjs.map +0 -1
  73. package/dist/timer.d.ts +0 -9
  74. package/dist/timer.mjs +0 -41
  75. package/dist/timer.mjs.map +0 -1
  76. package/dist/video.cjs +0 -14
  77. package/dist/video.cjs.map +0 -1
  78. package/dist/video.d.ts +0 -9
  79. package/dist/video.mjs +0 -14
  80. package/dist/video.mjs.map +0 -1
package/dist/timer.cjs DELETED
@@ -1,41 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const timer = require("@cloudcome/utils-core/timer");
4
- function frameInterval(callback, options) {
5
- let rafId;
6
- const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = timer.makeInterval((call) => {
7
- rafId = requestAnimationFrame(call);
8
- }, callback);
9
- return {
10
- start() {
11
- if (!canStart()) return;
12
- if (options == null ? void 0 : options.leading) {
13
- start();
14
- } else {
15
- rafId = requestAnimationFrame(start);
16
- }
17
- },
18
- stop() {
19
- if (!canStop()) return;
20
- if (options == null ? void 0 : options.trailing) execute();
21
- cancelAnimationFrame(rafId);
22
- stop();
23
- },
24
- pause() {
25
- if (!canPause()) return;
26
- if (options == null ? void 0 : options.trailing) execute();
27
- cancelAnimationFrame(rafId);
28
- pause();
29
- },
30
- resume(immediate) {
31
- if (!canResume()) return;
32
- if (immediate || (options == null ? void 0 : options.leading)) {
33
- resume();
34
- } else {
35
- rafId = requestAnimationFrame(resume);
36
- }
37
- }
38
- };
39
- }
40
- exports.frameInterval = frameInterval;
41
- //# sourceMappingURL=timer.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timer.cjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TTimerHandler, type TTimerOptions, type TTimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TTimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TTimerState, next?: () => void) => unknown,\n options?: TTimerOptions,\n): TTimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":["makeInterval"],"mappings":";;;AASgB,SAAA,cACd,UACA,SACe;AACX,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAAA,MAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,mCAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,mCAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,mCAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,cAAa,mCAAS,UAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;;"}
package/dist/timer.d.ts DELETED
@@ -1,9 +0,0 @@
1
- import { TTimerHandler, TTimerOptions, TTimerState } from '@cloudcome/utils-core/timer';
2
- /**
3
- * 创建一个基于 `requestAnimationFrame` 的间隔定时器
4
- *
5
- * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数
6
- * @param options - 配置选项
7
- * @returns {TTimerHandler} 返回包含控制方法的对象
8
- */
9
- export declare function frameInterval(callback: (state: TTimerState, next?: () => void) => unknown, options?: TTimerOptions): TTimerHandler;
package/dist/timer.mjs DELETED
@@ -1,41 +0,0 @@
1
- import { makeInterval } from "@cloudcome/utils-core/timer";
2
- function frameInterval(callback, options) {
3
- let rafId;
4
- const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {
5
- rafId = requestAnimationFrame(call);
6
- }, callback);
7
- return {
8
- start() {
9
- if (!canStart()) return;
10
- if (options == null ? void 0 : options.leading) {
11
- start();
12
- } else {
13
- rafId = requestAnimationFrame(start);
14
- }
15
- },
16
- stop() {
17
- if (!canStop()) return;
18
- if (options == null ? void 0 : options.trailing) execute();
19
- cancelAnimationFrame(rafId);
20
- stop();
21
- },
22
- pause() {
23
- if (!canPause()) return;
24
- if (options == null ? void 0 : options.trailing) execute();
25
- cancelAnimationFrame(rafId);
26
- pause();
27
- },
28
- resume(immediate) {
29
- if (!canResume()) return;
30
- if (immediate || (options == null ? void 0 : options.leading)) {
31
- resume();
32
- } else {
33
- rafId = requestAnimationFrame(resume);
34
- }
35
- }
36
- };
37
- }
38
- export {
39
- frameInterval
40
- };
41
- //# sourceMappingURL=timer.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timer.mjs","sources":["../src/timer.ts"],"sourcesContent":["import { type TTimerHandler, type TTimerOptions, type TTimerState, makeInterval } from '@cloudcome/utils-core/timer';\n\n/**\n * 创建一个基于 `requestAnimationFrame` 的间隔定时器\n *\n * @param callback - 每次间隔执行的回调函数,接收定时器状态和可选的 `next` 函数\n * @param options - 配置选项\n * @returns {TTimerHandler} 返回包含控制方法的对象\n */\nexport function frameInterval(\n callback: (state: TTimerState, next?: () => void) => unknown,\n options?: TTimerOptions,\n): TTimerHandler {\n let rafId: number;\n const { canStart, start, canStop, stop, canPause, pause, canResume, resume, execute } = makeInterval((call) => {\n rafId = requestAnimationFrame(call);\n }, callback);\n\n return {\n start() {\n if (!canStart()) return;\n\n if (options?.leading) {\n start();\n } else {\n rafId = requestAnimationFrame(start);\n }\n },\n\n stop() {\n if (!canStop()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n stop();\n },\n\n pause() {\n if (!canPause()) return;\n if (options?.trailing) execute();\n\n cancelAnimationFrame(rafId);\n pause();\n },\n\n resume(immediate?: boolean) {\n if (!canResume()) return;\n\n if (immediate || options?.leading) {\n resume();\n } else {\n rafId = requestAnimationFrame(resume);\n }\n },\n };\n}\n"],"names":[],"mappings":";AASgB,SAAA,cACd,UACA,SACe;AACX,MAAA;AACJ,QAAM,EAAE,UAAU,OAAO,SAAS,MAAM,UAAU,OAAO,WAAW,QAAQ,QAAY,IAAA,aAAa,CAAC,SAAS;AAC7G,YAAQ,sBAAsB,IAAI;AAAA,KACjC,QAAQ;AAEJ,SAAA;AAAA,IACL,QAAQ;AACF,UAAA,CAAC,WAAY;AAEjB,UAAI,mCAAS,SAAS;AACd,cAAA;AAAA,MAAA,OACD;AACL,gBAAQ,sBAAsB,KAAK;AAAA,MAAA;AAAA,IAEvC;AAAA,IAEA,OAAO;AACD,UAAA,CAAC,UAAW;AACZ,UAAA,mCAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACrB,WAAA;AAAA,IACP;AAAA,IAEA,QAAQ;AACF,UAAA,CAAC,WAAY;AACb,UAAA,mCAAS,SAAkB,SAAA;AAE/B,2BAAqB,KAAK;AACpB,YAAA;AAAA,IACR;AAAA,IAEA,OAAO,WAAqB;AACtB,UAAA,CAAC,YAAa;AAEd,UAAA,cAAa,mCAAS,UAAS;AAC1B,eAAA;AAAA,MAAA,OACF;AACL,gBAAQ,sBAAsB,MAAM;AAAA,MAAA;AAAA,IACtC;AAAA,EAEJ;AACF;"}
package/dist/video.cjs DELETED
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- async function videoLoad(url) {
4
- return new Promise((resolve, reject) => {
5
- const video = document.createElement("video");
6
- video.src = url;
7
- video.crossOrigin = "anonymous";
8
- video.currentTime = 1;
9
- video.onloadedmetadata = () => resolve(video);
10
- video.onerror = () => reject(new Error("视频加载失败"));
11
- });
12
- }
13
- exports.videoLoad = videoLoad;
14
- //# sourceMappingURL=video.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video.cjs","sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n\n video.src = url;\n video.crossOrigin = 'anonymous';\n video.currentTime = 1;\n video.onloadedmetadata = () => resolve(video);\n video.onerror = () => reject(new Error('视频加载失败'));\n });\n}\n"],"names":[],"mappings":";;AAQA,eAAsB,UAAU,KAAa;AAC3C,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AAClD,UAAA,QAAQ,SAAS,cAAc,OAAO;AAE5C,UAAM,MAAM;AACZ,UAAM,cAAc;AACpB,UAAM,cAAc;AACd,UAAA,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,UAAM,UAAU,MAAM,OAAO,IAAI,MAAM,QAAQ,CAAC;AAAA,EAAA,CACjD;AACH;;"}
package/dist/video.d.ts DELETED
@@ -1,9 +0,0 @@
1
- /**
2
- * 加载视频并返回一个包含 HTMLVideoElement 的 Promise
3
- * @param {string} url - 视频的 URL 地址
4
- * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise
5
- * @example
6
- * const video = await videoLoad('https://example.com/video.mp4');
7
- * @throws {Error} 如果视频加载失败,抛出错误
8
- */
9
- export declare function videoLoad(url: string): Promise<HTMLVideoElement>;
package/dist/video.mjs DELETED
@@ -1,14 +0,0 @@
1
- async function videoLoad(url) {
2
- return new Promise((resolve, reject) => {
3
- const video = document.createElement("video");
4
- video.src = url;
5
- video.crossOrigin = "anonymous";
6
- video.currentTime = 1;
7
- video.onloadedmetadata = () => resolve(video);
8
- video.onerror = () => reject(new Error("视频加载失败"));
9
- });
10
- }
11
- export {
12
- videoLoad
13
- };
14
- //# sourceMappingURL=video.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"video.mjs","sources":["../src/video.ts"],"sourcesContent":["/**\n * 加载视频并返回一个包含 HTMLVideoElement 的 Promise\n * @param {string} url - 视频的 URL 地址\n * @returns {Promise<HTMLVideoElement>} 返回一个包含 HTMLVideoElement 的 Promise\n * @example\n * const video = await videoLoad('https://example.com/video.mp4');\n * @throws {Error} 如果视频加载失败,抛出错误\n */\nexport async function videoLoad(url: string) {\n return new Promise<HTMLVideoElement>((resolve, reject) => {\n const video = document.createElement('video');\n\n video.src = url;\n video.crossOrigin = 'anonymous';\n video.currentTime = 1;\n video.onloadedmetadata = () => resolve(video);\n video.onerror = () => reject(new Error('视频加载失败'));\n });\n}\n"],"names":[],"mappings":"AAQA,eAAsB,UAAU,KAAa;AAC3C,SAAO,IAAI,QAA0B,CAAC,SAAS,WAAW;AAClD,UAAA,QAAQ,SAAS,cAAc,OAAO;AAE5C,UAAM,MAAM;AACZ,UAAM,cAAc;AACpB,UAAM,cAAc;AACd,UAAA,mBAAmB,MAAM,QAAQ,KAAK;AAC5C,UAAM,UAAU,MAAM,OAAO,IAAI,MAAM,QAAQ,CAAC;AAAA,EAAA,CACjD;AACH;"}