network-speed-js 1.0.1 → 1.0.2

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.
@@ -1,7 +1,4 @@
1
- var m = Object.defineProperty;
2
- var h = (t, e, r) => e in t ? m(t, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : t[e] = r;
3
- var a = (t, e, r) => h(t, typeof e != "symbol" ? e + "" : e, r);
4
- function d(t) {
1
+ function f(t) {
5
2
  const e = t.responseEnd - t.responseStart;
6
3
  if (e <= 0 || t.transferSize === 0)
7
4
  return null;
@@ -14,23 +11,23 @@ function d(t) {
14
11
  transferSize: t.transferSize
15
12
  };
16
13
  }
17
- function b() {
14
+ function p() {
18
15
  return performance.getEntriesByType("resource").filter(
19
16
  (e) => e instanceof PerformanceResourceTiming && e.transferSize > 0
20
- ).map(d).filter((e) => e !== null);
17
+ ).map(f).filter((e) => e !== null);
21
18
  }
22
- function S(t) {
19
+ function m(t) {
23
20
  performance.getEntriesByName(t).forEach(() => {
24
21
  performance.clearResourceTimings();
25
22
  });
26
23
  }
27
- function w(t, e = { fast: 10, medium: 2 }) {
24
+ function h(t, e = { fast: 10, medium: 2 }) {
28
25
  return t >= e.fast ? "fast" : t >= e.medium ? "medium" : t > 0 ? "slow" : "unknown";
29
26
  }
30
- class y {
27
+ class b {
28
+ options;
29
+ observer = null;
31
30
  constructor(e = {}) {
32
- a(this, "options");
33
- a(this, "observer", null);
34
31
  this.options = {
35
32
  intranetUrl: e.intranetUrl || "",
36
33
  internetUrl: e.internetUrl || "",
@@ -63,16 +60,16 @@ class y {
63
60
  testSingleUrl(e, r) {
64
61
  return new Promise((n, c) => {
65
62
  const o = `${e}?t=${Date.now()}`;
66
- S(o);
63
+ m(o);
67
64
  const u = new PerformanceObserver((s) => {
68
- for (const l of s.getEntries())
69
- if (l.entryType === "resource" && l.name.includes(e)) {
70
- const i = d(l);
65
+ for (const a of s.getEntries())
66
+ if (a.entryType === "resource" && a.name.includes(e)) {
67
+ const i = f(a);
71
68
  if (i) {
72
- const p = {
69
+ const d = {
73
70
  speedMbps: i.speedMbps,
74
71
  speedKBps: i.speedKBps,
75
- networkType: w(
72
+ networkType: h(
76
73
  i.speedMbps,
77
74
  this.options.thresholds
78
75
  ),
@@ -81,12 +78,12 @@ class y {
81
78
  transferSize: i.transferSize,
82
79
  resourceUrl: e
83
80
  };
84
- u.disconnect(), n(p);
81
+ u.disconnect(), n(d);
85
82
  }
86
83
  }
87
84
  });
88
85
  u.observe({ entryTypes: ["resource"] });
89
- const f = setTimeout(() => {
86
+ const l = setTimeout(() => {
90
87
  u.disconnect(), c(new Error(`测速超时: ${e}`));
91
88
  }, this.options.timeout);
92
89
  fetch(o, {
@@ -98,9 +95,9 @@ class y {
98
95
  throw new Error(`HTTP error! status: ${s.status}`);
99
96
  return s.blob();
100
97
  }).then(() => {
101
- clearTimeout(f);
98
+ clearTimeout(l);
102
99
  }).catch((s) => {
103
- clearTimeout(f), u.disconnect(), c(new Error(`资源加载失败: ${s.message}`));
100
+ clearTimeout(l), u.disconnect(), c(new Error(`资源加载失败: ${s.message}`));
104
101
  });
105
102
  });
106
103
  }
@@ -127,10 +124,10 @@ class y {
127
124
  this.observer && (this.observer.disconnect(), this.observer = null);
128
125
  }
129
126
  }
130
- class T {
127
+ class S {
128
+ tester;
131
129
  constructor(e = {}) {
132
- a(this, "tester");
133
- this.tester = new y(e);
130
+ this.tester = new b(e);
134
131
  }
135
132
  /**
136
133
  * 执行网速测试
@@ -142,7 +139,7 @@ class T {
142
139
  * 获取所有已加载资源的速度信息
143
140
  */
144
141
  getAllResourcesSpeeds() {
145
- return b();
142
+ return p();
146
143
  }
147
144
  /**
148
145
  * 监听特定资源的性能数据
@@ -163,13 +160,13 @@ class T {
163
160
  this.tester.destroy();
164
161
  }
165
162
  }
166
- function U(t) {
167
- return new T(t);
163
+ function y(t) {
164
+ return new S(t);
168
165
  }
169
166
  export {
170
- T as NetworkSpeedSDK,
171
- d as calcSpeedByResource,
172
- U as createNetworkSpeedSDK,
173
- w as evaluateNetworkType,
174
- b as getAllResourcesSpeeds
167
+ S as NetworkSpeedSDK,
168
+ f as calcSpeedByResource,
169
+ y as createNetworkSpeedSDK,
170
+ h as evaluateNetworkType,
171
+ p as getAllResourcesSpeeds
175
172
  };
@@ -1 +1 @@
1
- (function(r,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(r=typeof globalThis<"u"?globalThis:r||self,s(r.NetworkSpeedJS={}))})(this,function(r){"use strict";var g=Object.defineProperty;var v=(r,s,n)=>s in r?g(r,s,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[s]=n;var f=(r,s,n)=>v(r,typeof s!="symbol"?s+"":s,n);function s(t){const e=t.responseEnd-t.responseStart;if(e<=0||t.transferSize===0)return null;const o=t.transferSize*8/e/1e3,c=t.transferSize/e;return{name:t.name,speedMbps:Number(o.toFixed(2)),speedKBps:Number(c.toFixed(2)),downloadTime:Number(e.toFixed(2)),transferSize:t.transferSize}}function n(){return performance.getEntriesByType("resource").filter(e=>e instanceof PerformanceResourceTiming&&e.transferSize>0).map(s).filter(e=>e!==null)}function y(t){performance.getEntriesByName(t).forEach(()=>{performance.clearResourceTimings()})}function m(t,e={fast:10,medium:2}){return t>=e.fast?"fast":t>=e.medium?"medium":t>0?"slow":"unknown"}class b{constructor(e={}){f(this,"options");f(this,"observer",null);this.options={intranetUrl:e.intranetUrl||"",internetUrl:e.internetUrl||"",timeout:e.timeout||1e4,autoDetect:e.autoDetect??!0,thresholds:e.thresholds||{fast:10,medium:2}}}async test(){return this.options.autoDetect?this.testWithAutoDetect():this.testSingleUrl(this.options.internetUrl,!1)}async testWithAutoDetect(){if(this.options.intranetUrl)try{return await this.testSingleUrl(this.options.intranetUrl,!0)}catch{console.log("内网测速失败,切换到外网测速")}return this.testSingleUrl(this.options.internetUrl,!1)}testSingleUrl(e,o){return new Promise((c,l)=>{const u=`${e}?t=${Date.now()}`;y(u);const d=new PerformanceObserver(i=>{for(const p of i.getEntries())if(p.entryType==="resource"&&p.name.includes(e)){const a=s(p);if(a){const T={speedMbps:a.speedMbps,speedKBps:a.speedKBps,networkType:m(a.speedMbps,this.options.thresholds),isIntranet:o,duration:a.downloadTime,transferSize:a.transferSize,resourceUrl:e};d.disconnect(),c(T)}}});d.observe({entryTypes:["resource"]});const S=setTimeout(()=>{d.disconnect(),l(new Error(`测速超时: ${e}`))},this.options.timeout);fetch(u,{method:"GET",cache:"no-store"}).then(i=>{if(!i.ok)throw new Error(`HTTP error! status: ${i.status}`);return i.blob()}).then(()=>{clearTimeout(S)}).catch(i=>{clearTimeout(S),d.disconnect(),l(new Error(`资源加载失败: ${i.message}`))})})}observeResource(e,o){const c=new PerformanceObserver(l=>{for(const u of l.getEntries())u.entryType==="resource"&&u.name.includes(e)&&o(u)});return c.observe({entryTypes:["resource"]}),()=>c.disconnect()}updateOptions(e){this.options={...this.options,...e}}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null)}}class h{constructor(e={}){f(this,"tester");this.tester=new b(e)}async test(){return this.tester.test()}getAllResourcesSpeeds(){return n()}observeResource(e,o){return this.tester.observeResource(e,o)}updateOptions(e){this.tester.updateOptions(e)}destroy(){this.tester.destroy()}}function w(t){return new h(t)}r.NetworkSpeedSDK=h,r.calcSpeedByResource=s,r.createNetworkSpeedSDK=w,r.evaluateNetworkType=m,r.getAllResourcesSpeeds=n,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})});
1
+ (function(r,s){typeof exports=="object"&&typeof module<"u"?s(exports):typeof define=="function"&&define.amd?define(["exports"],s):(r=typeof globalThis<"u"?globalThis:r||self,s(r.NetworkSpeedJS={}))})(this,(function(r){"use strict";function s(t){const e=t.responseEnd-t.responseStart;if(e<=0||t.transferSize===0)return null;const n=t.transferSize*8/e/1e3,i=t.transferSize/e;return{name:t.name,speedMbps:Number(n.toFixed(2)),speedKBps:Number(i.toFixed(2)),downloadTime:Number(e.toFixed(2)),transferSize:t.transferSize}}function f(){return performance.getEntriesByType("resource").filter(e=>e instanceof PerformanceResourceTiming&&e.transferSize>0).map(s).filter(e=>e!==null)}function S(t){performance.getEntriesByName(t).forEach(()=>{performance.clearResourceTimings()})}function p(t,e={fast:10,medium:2}){return t>=e.fast?"fast":t>=e.medium?"medium":t>0?"slow":"unknown"}class y{options;observer=null;constructor(e={}){this.options={intranetUrl:e.intranetUrl||"",internetUrl:e.internetUrl||"",timeout:e.timeout||1e4,autoDetect:e.autoDetect??!0,thresholds:e.thresholds||{fast:10,medium:2}}}async test(){return this.options.autoDetect?this.testWithAutoDetect():this.testSingleUrl(this.options.internetUrl,!1)}async testWithAutoDetect(){if(this.options.intranetUrl)try{return await this.testSingleUrl(this.options.intranetUrl,!0)}catch{console.log("内网测速失败,切换到外网测速")}return this.testSingleUrl(this.options.internetUrl,!1)}testSingleUrl(e,n){return new Promise((i,a)=>{const c=`${e}?t=${Date.now()}`;S(c);const l=new PerformanceObserver(o=>{for(const d of o.getEntries())if(d.entryType==="resource"&&d.name.includes(e)){const u=s(d);if(u){const w={speedMbps:u.speedMbps,speedKBps:u.speedKBps,networkType:p(u.speedMbps,this.options.thresholds),isIntranet:n,duration:u.downloadTime,transferSize:u.transferSize,resourceUrl:e};l.disconnect(),i(w)}}});l.observe({entryTypes:["resource"]});const h=setTimeout(()=>{l.disconnect(),a(new Error(`测速超时: ${e}`))},this.options.timeout);fetch(c,{method:"GET",cache:"no-store"}).then(o=>{if(!o.ok)throw new Error(`HTTP error! status: ${o.status}`);return o.blob()}).then(()=>{clearTimeout(h)}).catch(o=>{clearTimeout(h),l.disconnect(),a(new Error(`资源加载失败: ${o.message}`))})})}observeResource(e,n){const i=new PerformanceObserver(a=>{for(const c of a.getEntries())c.entryType==="resource"&&c.name.includes(e)&&n(c)});return i.observe({entryTypes:["resource"]}),()=>i.disconnect()}updateOptions(e){this.options={...this.options,...e}}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null)}}class m{tester;constructor(e={}){this.tester=new y(e)}async test(){return this.tester.test()}getAllResourcesSpeeds(){return f()}observeResource(e,n){return this.tester.observeResource(e,n)}updateOptions(e){this.tester.updateOptions(e)}destroy(){this.tester.destroy()}}function b(t){return new m(t)}r.NetworkSpeedSDK=m,r.calcSpeedByResource=s,r.createNetworkSpeedSDK=b,r.evaluateNetworkType=p,r.getAllResourcesSpeeds=f,Object.defineProperty(r,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "network-speed-js",
3
3
  "private": false,
4
4
  "description": "A framework-agnostic network speed testing SDK based on Performance API with intranet/internet auto-detection support",
5
- "version": "1.0.1",
5
+ "version": "1.0.2",
6
6
  "author": "Sunny-117",
7
7
  "license": "MIT",
8
8
  "keywords": [
@@ -28,9 +28,9 @@
28
28
  ],
29
29
  "exports": {
30
30
  ".": {
31
+ "types": "./dist/index.d.ts",
31
32
  "import": "./dist/network-speed-js.js",
32
- "require": "./dist/network-speed-js.umd.js",
33
- "types": "./dist/index.d.ts"
33
+ "require": "./dist/network-speed-js.umd.js"
34
34
  }
35
35
  },
36
36
  "scripts": {
@@ -51,10 +51,10 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/node": "^25.0.10",
54
- "@vitejs/plugin-vue": "^4.5.2",
55
- "typescript": "^5.2.2",
56
- "vite": "^5.0.8",
57
- "vue-tsc": "^1.8.25"
54
+ "@vitejs/plugin-vue": "^6.0.3",
55
+ "typescript": "^5.9.3",
56
+ "vite": "^7.3.1",
57
+ "vue-tsc": "^3.2.3"
58
58
  },
59
59
  "repository": {
60
60
  "type": "git",