@whitesev/utils 2.2.1 → 2.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -2170,11 +2170,11 @@ class Httpx {
2170
2170
  }
2171
2171
  if (details.fetch) {
2172
2172
  const { fetchDetails, fetchRequestInit, abortController } = this.context.HttpxRequestDetails.handleFetchDetail(details);
2173
- this.fetch(fetchDetails, fetchRequestInit, abortController);
2173
+ return this.fetch(fetchDetails, fetchRequestInit, abortController);
2174
2174
  }
2175
2175
  else {
2176
2176
  Reflect.deleteProperty(details, "fetchInit");
2177
- this.xmlHttpRequest(details);
2177
+ return this.xmlHttpRequest(details);
2178
2178
  }
2179
2179
  },
2180
2180
  /**
@@ -2182,7 +2182,7 @@ class Httpx {
2182
2182
  * @param details
2183
2183
  */
2184
2184
  xmlHttpRequest(details) {
2185
- this.context.GM_Api.xmlHttpRequest(details);
2185
+ return this.context.GM_Api.xmlHttpRequest(details);
2186
2186
  },
2187
2187
  /**
2188
2188
  * 使用fetch发送请求
@@ -2333,6 +2333,10 @@ class Httpx {
2333
2333
  * 当前使用请求时,输出请求的配置
2334
2334
  */
2335
2335
  #LOG_DETAILS = false;
2336
+ /**
2337
+ * 实例化,可传入GM_xmlhttpRequest,未传入则使用window.fetch
2338
+ * @param __xmlHttpRequest__
2339
+ */
2336
2340
  constructor(__xmlHttpRequest__) {
2337
2341
  if (typeof __xmlHttpRequest__ !== "function") {
2338
2342
  console.warn("Httpx未传入GM_xmlhttpRequest函数或传入的GM_xmlhttpRequest不是Function,强制使用window.fetch");
@@ -2428,79 +2432,177 @@ class Httpx {
2428
2432
  }
2429
2433
  /**
2430
2434
  * GET 请求
2435
+ * @param url 网址
2436
+ * @param details 配置
2431
2437
  */
2432
- async get(...args) {
2433
- let that = this;
2438
+ async get(...args // @ts-ignore
2439
+ ) {
2434
2440
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2435
- return new Promise((resolve, reject) => {
2436
- let requestDetails = that.HttpxRequestDetails.getDetails("GET", details, resolve, reject);
2441
+ let abortFn = null;
2442
+ const promise = new Promise((resolve, reject) => {
2443
+ let requestDetails = this.HttpxRequestDetails.getDetails("GET", details, resolve, reject);
2437
2444
  Reflect.deleteProperty(requestDetails, "onprogress");
2438
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2439
- that.HttpxRequest.request(requestDetails);
2445
+ // @ts-ignore
2446
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2447
+ const requestResult = this.HttpxRequest.request(requestDetails);
2448
+ if (requestResult != null &&
2449
+ typeof requestResult.abort === "function") {
2450
+ abortFn = requestResult.abort;
2451
+ }
2440
2452
  });
2453
+ Object.defineProperty(promise, "abort", {
2454
+ value: () => {
2455
+ return () => {
2456
+ if (typeof abortFn === "function") {
2457
+ abortFn();
2458
+ }
2459
+ };
2460
+ },
2461
+ });
2462
+ return promise;
2441
2463
  }
2442
2464
  /**
2443
2465
  * POST 请求
2444
2466
  */
2445
- async post(...args) {
2446
- let that = this;
2467
+ async post(...args // @ts-ignore
2468
+ ) {
2447
2469
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2448
- return new Promise((resolve, reject) => {
2449
- let requestDetails = that.HttpxRequestDetails.getDetails("POST", details, resolve, reject);
2450
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2451
- that.HttpxRequest.request(requestDetails);
2470
+ let abortFn = null;
2471
+ const promise = new Promise((resolve, reject) => {
2472
+ let requestDetails = this.HttpxRequestDetails.getDetails("POST", details, resolve, reject);
2473
+ // @ts-ignore
2474
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2475
+ const requestResult = this.HttpxRequest.request(requestDetails);
2476
+ if (requestResult != null &&
2477
+ typeof requestResult.abort === "function") {
2478
+ abortFn = requestResult.abort;
2479
+ }
2452
2480
  });
2481
+ Object.defineProperty(promise, "abort", {
2482
+ value: () => {
2483
+ return () => {
2484
+ if (typeof abortFn === "function") {
2485
+ abortFn();
2486
+ }
2487
+ };
2488
+ },
2489
+ });
2490
+ return promise;
2453
2491
  }
2454
2492
  /**
2455
2493
  * HEAD 请求
2456
2494
  */
2457
- async head(...args) {
2458
- let that = this;
2495
+ async head(...args // @ts-ignore
2496
+ ) {
2459
2497
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2460
- return new Promise((resolve, reject) => {
2461
- let requestDetails = that.HttpxRequestDetails.getDetails("HEAD", details, resolve, reject);
2498
+ let abortFn = null;
2499
+ const promise = new Promise((resolve, reject) => {
2500
+ let requestDetails = this.HttpxRequestDetails.getDetails("HEAD", details, resolve, reject);
2462
2501
  Reflect.deleteProperty(requestDetails, "onprogress");
2463
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2464
- that.HttpxRequest.request(requestDetails);
2502
+ // @ts-ignore
2503
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2504
+ const requestResult = this.HttpxRequest.request(requestDetails);
2505
+ if (requestResult != null &&
2506
+ typeof requestResult.abort === "function") {
2507
+ abortFn = requestResult.abort;
2508
+ }
2509
+ });
2510
+ Object.defineProperty(promise, "abort", {
2511
+ value: () => {
2512
+ return () => {
2513
+ if (typeof abortFn === "function") {
2514
+ abortFn();
2515
+ }
2516
+ };
2517
+ },
2465
2518
  });
2519
+ return promise;
2466
2520
  }
2467
2521
  /**
2468
2522
  * OPTIONS 请求
2469
2523
  */
2470
- async options(...args) {
2471
- let that = this;
2524
+ async options(...args // @ts-ignore
2525
+ ) {
2472
2526
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2473
- return new Promise((resolve, reject) => {
2474
- let requestDetails = that.HttpxRequestDetails.getDetails("OPTIONS", details, resolve, reject);
2527
+ let abortFn = null;
2528
+ const promise = new Promise((resolve, reject) => {
2529
+ let requestDetails = this.HttpxRequestDetails.getDetails("OPTIONS", details, resolve, reject);
2475
2530
  Reflect.deleteProperty(requestDetails, "onprogress");
2476
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2477
- that.HttpxRequest.request(requestDetails);
2531
+ // @ts-ignore
2532
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2533
+ const requestResult = this.HttpxRequest.request(requestDetails);
2534
+ if (requestResult != null &&
2535
+ typeof requestResult.abort === "function") {
2536
+ abortFn = requestResult.abort;
2537
+ }
2478
2538
  });
2539
+ Object.defineProperty(promise, "abort", {
2540
+ value: () => {
2541
+ return () => {
2542
+ if (typeof abortFn === "function") {
2543
+ abortFn();
2544
+ }
2545
+ };
2546
+ },
2547
+ });
2548
+ return promise;
2479
2549
  }
2480
2550
  /**
2481
2551
  * DELETE 请求
2482
2552
  */
2483
- async delete(...args) {
2484
- let that = this;
2553
+ async delete(...args // @ts-ignore
2554
+ ) {
2485
2555
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2486
- return new Promise((resolve, reject) => {
2487
- let requestDetails = that.HttpxRequestDetails.getDetails("DELETE", details, resolve, reject);
2556
+ let abortFn = null;
2557
+ const promise = new Promise((resolve, reject) => {
2558
+ let requestDetails = this.HttpxRequestDetails.getDetails("DELETE", details, resolve, reject);
2488
2559
  Reflect.deleteProperty(requestDetails, "onprogress");
2489
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2490
- that.HttpxRequest.request(requestDetails);
2560
+ // @ts-ignore
2561
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2562
+ const requestResult = this.HttpxRequest.request(requestDetails);
2563
+ if (requestResult != null &&
2564
+ typeof requestResult.abort === "function") {
2565
+ abortFn = requestResult.abort;
2566
+ }
2567
+ });
2568
+ Object.defineProperty(promise, "abort", {
2569
+ value: () => {
2570
+ return () => {
2571
+ if (typeof abortFn === "function") {
2572
+ abortFn();
2573
+ }
2574
+ };
2575
+ },
2491
2576
  });
2577
+ return promise;
2492
2578
  }
2493
2579
  /**
2494
2580
  * PUT 请求
2495
2581
  */
2496
- async put(...args) {
2497
- let that = this;
2582
+ async put(...args // @ts-ignore
2583
+ ) {
2498
2584
  let details = this.HttpxRequestDetails.handleBeforeRequestDetails(...args);
2499
- return new Promise((resolve, reject) => {
2500
- let requestDetails = that.HttpxRequestDetails.getDetails("PUT", details, resolve, reject);
2501
- requestDetails = that.HttpxRequestDetails.handle(requestDetails);
2502
- that.HttpxRequest.request(requestDetails);
2585
+ let abortFn = null;
2586
+ const promise = new Promise((resolve, reject) => {
2587
+ let requestDetails = this.HttpxRequestDetails.getDetails("PUT", details, resolve, reject);
2588
+ // @ts-ignore
2589
+ requestDetails = this.HttpxRequestDetails.handle(requestDetails);
2590
+ const requestResult = this.HttpxRequest.request(requestDetails);
2591
+ if (requestResult != null &&
2592
+ typeof requestResult.abort === "function") {
2593
+ abortFn = requestResult.abort;
2594
+ }
2595
+ });
2596
+ Object.defineProperty(promise, "abort", {
2597
+ value: () => {
2598
+ return () => {
2599
+ if (typeof abortFn === "function") {
2600
+ abortFn();
2601
+ }
2602
+ };
2603
+ },
2503
2604
  });
2605
+ return promise;
2504
2606
  }
2505
2607
  }
2506
2608
 
@@ -3549,7 +3651,7 @@ class Utils {
3549
3651
  this.windowApi = new WindowApi(option);
3550
3652
  }
3551
3653
  /** 版本号 */
3552
- version = "2024.9.1";
3654
+ version = "2024.9.4";
3553
3655
  addStyle(cssText) {
3554
3656
  if (typeof cssText !== "string") {
3555
3657
  throw new Error("Utils.addStyle 参数cssText 必须为String类型");
@@ -5184,6 +5286,41 @@ class Utils {
5184
5286
  }
5185
5287
  return mutationObserver;
5186
5288
  }
5289
+ /**
5290
+ * 使用观察器观察元素出现在视图内,出现的话触发回调
5291
+ * @param target 目标元素
5292
+ * @param callback 触发的回调
5293
+ * @param options 观察器配置
5294
+ */
5295
+ mutatuinVisible(target, callback, options) {
5296
+ if (typeof IntersectionObserver === "undefined") {
5297
+ throw new TypeError("IntersectionObserver is not defined");
5298
+ }
5299
+ if (target == null) {
5300
+ throw new TypeError("mutatuinVisible target is null");
5301
+ }
5302
+ let defaultOptions = {
5303
+ root: null,
5304
+ rootMargin: "0px 0px 0px 0px",
5305
+ threshold: [0.01, 0.99],
5306
+ };
5307
+ defaultOptions = this.assign(defaultOptions, options || {});
5308
+ let intersectionObserver = new IntersectionObserver((entries, observer) => {
5309
+ if (entries[0].isIntersecting) {
5310
+ if (typeof callback === "function") {
5311
+ callback(entries, observer);
5312
+ }
5313
+ }
5314
+ }, defaultOptions);
5315
+ if (Array.isArray(target)) {
5316
+ target.forEach((item) => {
5317
+ intersectionObserver.observe(item);
5318
+ });
5319
+ }
5320
+ else {
5321
+ intersectionObserver.observe(target);
5322
+ }
5323
+ }
5187
5324
  /**
5188
5325
  * 去除全局window下的Utils,返回控制权
5189
5326
  * @example