{"_id":"@_molaidrislabs/react-native-internet-speed-test","_rev":"4-ba8d5e6974dc7b5b7051818f1bb0036d","name":"@_molaidrislabs/react-native-internet-speed-test","dist-tags":{"latest":"0.1.4"},"versions":{"0.1.1":{"name":"@_molaidrislabs/react-native-internet-speed-test","version":"0.1.1","keywords":["react-native","react-native-web","ndt7","network-speed","internet-speed"],"author":{"name":"Olasunkanmi IDRIS","email":"olasunkanmiidris15@gmail.com"},"license":"MIT","_id":"@_molaidrislabs/react-native-internet-speed-test@0.1.1","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://github.com/kanmi-idris/react-native-ndt7-js#readme","bugs":{"url":"https://github.com/kanmi-idris/react-native-ndt7-js/issues"},"dist":{"shasum":"198a78585235c52d8901b5c275a66d9cbd09d0e7","tarball":"https://registry.npmjs.org/@_molaidrislabs/react-native-internet-speed-test/-/react-native-internet-speed-test-0.1.1.tgz","fileCount":54,"integrity":"sha512-Bk8Ss5l7X3NFnv4M6HObbsMPfr7fyQJmDqNPIlSAQL7jKSgYIi4FFsGHTTUvvnPrnzqGHrqzTa0kyt5imjIuMg==","signatures":[{"sig":"MEQCIDyiLQR1hNUgx4DatMBF9MLKNKYDHKCa2F4PhbYZh7DcAiBlPT8ri9QpbOkO8grMo9SLZRms8eKRVRFzBMnAboOZZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89650},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","module":"./lib/module/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","import":{"default":"./lib/module/index.js"},"source":"./src/index.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"dc2d7c83d9310382dc6922e674d42cc0f1d08e4e","scripts":{"lint":"tsc --noEmit","test":"vitest run tests","build":"bob build","clean":"rm -rf lib","prepack":"yarn clean","prepare":"yarn build","typecheck":"tsc --noEmit","test:watch":"vitest tests","pack:dry-run":"npm pack --dry-run","release:check":"yarn test && yarn typecheck && yarn pack:dry-run","prepublishOnly":"yarn test && yarn typecheck"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"repository":{"url":"git+https://github.com/kanmi-idris/react-native-ndt7-js.git","type":"git"},"_npmVersion":"10.9.3","description":"JavaScript-first NDT7 client for React Native and React Native Web.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@m-lab/ndt7":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"react":"19.0.0","vitest":"^4.1.4","typescript":"~5.8.3","@babel/core":"^7.26.0","@types/react":"^19.0.10","react-native":"0.79.5","react-native-builder-bob":"^0.36.0"},"peerDependencies":{"react":">=18.2.0","react-native":">=0.79.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-internet-speed-test_0.1.1_1778680686814_0.35185124477978613","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true,"sourcemap":false}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.2":{"name":"@_molaidrislabs/react-native-internet-speed-test","version":"0.1.2","keywords":["react-native","react-native-web","ndt7","network-speed","internet-speed"],"author":{"name":"Olasunkanmi IDRIS","email":"olasunkanmiidris15@gmail.com"},"license":"MIT","_id":"@_molaidrislabs/react-native-internet-speed-test@0.1.2","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://github.com/kanmi-idris/react-native-ndt7-js#readme","bugs":{"url":"https://github.com/kanmi-idris/react-native-ndt7-js/issues"},"dist":{"shasum":"89eb2eb4814114a29bb74d636c0da42ba74bc279","tarball":"https://registry.npmjs.org/@_molaidrislabs/react-native-internet-speed-test/-/react-native-internet-speed-test-0.1.2.tgz","fileCount":54,"integrity":"sha512-87udseABMD79qJabafxUKfeaL5yuV7Gy3gZ/iD1QM0JVunY5AV3xLxsP/Yrjf3ZFbl5mmUagd/aicl5xSElDcQ==","signatures":[{"sig":"MEYCIQDRFSi4OVN31wJmebO4VQ4/jRBPLWP/a2bxxujfzO8I/AIhALv32i+k0nYn1r1idBwM8E8E7VS9ohUdRR5q4lDEV9oT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87399},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","module":"./lib/module/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","import":{"default":"./lib/module/index.js"},"source":"./src/index.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"90abf717fac6052ed362b95ee8950aa6b7b6852b","scripts":{"lint":"tsc --noEmit","test":"vitest run tests","build":"bob build","clean":"rm -rf lib","prepack":"yarn clean","prepare":"yarn build","typecheck":"tsc --noEmit","test:watch":"vitest tests","pack:dry-run":"npm pack --dry-run","release:check":"yarn test && yarn typecheck && yarn pack:dry-run","prepublishOnly":"yarn test && yarn typecheck"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"repository":{"url":"git+https://github.com/kanmi-idris/react-native-ndt7-js.git","type":"git"},"_npmVersion":"10.9.3","description":"JavaScript-first NDT7 client for React Native and React Native Web.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@m-lab/ndt7":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"react":"19.0.0","vitest":"^4.1.4","typescript":"~5.8.3","@babel/core":"^7.26.0","@types/react":"^19.0.10","react-native":"0.79.5","react-native-builder-bob":"^0.36.0"},"peerDependencies":{"react":">=18.2.0","react-native":">=0.79.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-internet-speed-test_0.1.2_1778681453882_0.1829664523207981","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true,"sourcemap":false}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.3":{"name":"@_molaidrislabs/react-native-internet-speed-test","version":"0.1.3","keywords":["react-native","react-native-web","ndt7","network-speed","internet-speed"],"author":{"name":"Olasunkanmi IDRIS","email":"olasunkanmiidris15@gmail.com"},"license":"MIT","_id":"@_molaidrislabs/react-native-internet-speed-test@0.1.3","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"homepage":"https://github.com/kanmi-idris/react-native-ndt7-js#readme","bugs":{"url":"https://github.com/kanmi-idris/react-native-ndt7-js/issues"},"dist":{"shasum":"ff7445432e1e35fb3effb9ab898f0d4b67dfb069","tarball":"https://registry.npmjs.org/@_molaidrislabs/react-native-internet-speed-test/-/react-native-internet-speed-test-0.1.3.tgz","fileCount":54,"integrity":"sha512-ZVAZTnFMpbERm5hvJMW5QJ/KC/YqfbSNz1OsuXXyKlwY2lcshDKhpBu0QllIZLaWQmNhurBSv+uGd5fsYsqKww==","signatures":[{"sig":"MEQCIAmfOqmQNN01AxIlCIWGoq9zmmdyUwBJfPgaC3BHGiaMAiApA9NFozSi0ygNBO2KF8aKO6XCFo2xPUtXZm4M3GggOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120509},"main":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","module":"./lib/module/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./lib/typescript/src/index.d.ts","import":{"default":"./lib/module/index.js"},"source":"./src/index.ts","default":"./lib/module/index.js"},"./package.json":"./package.json"},"gitHead":"aa31eac2ad4ea8aa1ed778b839297e05eb980a68","scripts":{"lint":"tsc --noEmit","test":"vitest run tests","build":"bob build","clean":"rm -rf lib","prepack":"yarn clean","prepare":"yarn build","typecheck":"tsc --noEmit","test:watch":"vitest tests","pack:dry-run":"npm pack --dry-run","release:check":"yarn test && yarn typecheck && yarn pack:dry-run","prepublishOnly":"yarn test && yarn typecheck"},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"repository":{"url":"git+https://github.com/kanmi-idris/react-native-ndt7-js.git","type":"git"},"_npmVersion":"10.9.3","description":"JavaScript-first NDT7 client for React Native and React Native Web.","directories":{},"sideEffects":false,"_nodeVersion":"22.20.0","dependencies":{"@m-lab/ndt7":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"yarn@1.22.22","devDependencies":{"react":"19.0.0","vitest":"^4.1.4","typescript":"~5.8.3","@babel/core":"^7.26.0","@types/react":"^19.0.10","react-native":"0.79.5","react-native-builder-bob":"^0.36.0"},"peerDependencies":{"react":">=18.2.0","react-native":">=0.79.0"},"_npmOperationalInternal":{"tmp":"tmp/react-native-internet-speed-test_0.1.3_1778704688611_0.17781865739356717","host":"s3://npm-registry-packages-npm-production"},"react-native-builder-bob":{"output":"lib","source":"src","targets":[["module",{"esm":true,"sourcemap":false}],["typescript",{"project":"tsconfig.build.json"}]]}},"0.1.4":{"name":"@_molaidrislabs/react-native-internet-speed-test","version":"0.1.4","description":"JavaScript-first NDT7 client for React Native and React Native Web.","main":"./lib/module/index.js","module":"./lib/module/index.js","types":"./lib/typescript/src/index.d.ts","exports":{".":{"source":"./src/index.ts","types":"./lib/typescript/src/index.d.ts","import":{"default":"./lib/module/index.js"},"default":"./lib/module/index.js"},"./package.json":"./package.json"},"scripts":{"build":"bob build","clean":"rm -rf lib","lint":"tsc --noEmit","prepare":"yarn build","prepack":"yarn clean","prepublishOnly":"yarn test && yarn typecheck","pack:dry-run":"npm pack --dry-run","release:check":"yarn test && yarn typecheck && yarn pack:dry-run","test":"vitest run tests","test:watch":"vitest tests","typecheck":"tsc --noEmit"},"sideEffects":false,"react-native-builder-bob":{"source":"src","output":"lib","targets":[["module",{"esm":true,"sourcemap":false}],["typescript",{"project":"tsconfig.build.json"}]]},"keywords":["react-native","react-native-web","ndt7","network-speed","internet-speed"],"repository":{"type":"git","url":"git+https://github.com/kanmi-idris/react-native-ndt7-js.git"},"homepage":"https://github.com/kanmi-idris/react-native-ndt7-js#readme","bugs":{"url":"https://github.com/kanmi-idris/react-native-ndt7-js/issues"},"license":"MIT","author":{"name":"Olasunkanmi IDRIS","email":"olasunkanmiidris15@gmail.com"},"packageManager":"yarn@1.22.22","publishConfig":{"registry":"https://registry.npmjs.org/","access":"public"},"peerDependencies":{"react":">=18.2.0","react-native":">=0.79.0"},"dependencies":{"@m-lab/ndt7":"0.1.4"},"devDependencies":{"@babel/core":"^7.26.0","@types/react":"^19.0.10","react":"19.0.0","react-native":"0.79.5","react-native-builder-bob":"^0.36.0","typescript":"~5.8.3","vitest":"^4.1.4"},"engines":{"node":">=18"},"_id":"@_molaidrislabs/react-native-internet-speed-test@0.1.4","gitHead":"76533d8e9564bb2cccd8e6560b2130e71b9799bc","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-skAglIo48cQRrIBrpFmlHYXONiBtq3pNAW8unHB5QnsGzitd8hy5gJN+2hYkppAAxiUwyUF+mEmVjuBNh8pS7w==","shasum":"1886098f0a8bc7b9191ecee284d805de70a9a36a","tarball":"https://registry.npmjs.org/@_molaidrislabs/react-native-internet-speed-test/-/react-native-internet-speed-test-0.1.4.tgz","fileCount":54,"unpackedSize":121140,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICgArhcLMSDPdt1ltWlJ0HAYXUS4fqmO4LsLPMJCrGOzAiBeMAysPwA8+N64tQ4qJeNMFDhy0a+6hkfjJndT5bndXA=="}]},"_npmUser":{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"},"directories":{},"maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/react-native-internet-speed-test_0.1.4_1778706609841_0.5351384495180949"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-13T13:58:06.730Z","modified":"2026-05-13T21:10:10.101Z","0.1.1":"2026-05-13T13:58:07.035Z","0.1.2":"2026-05-13T14:10:54.046Z","0.1.3":"2026-05-13T20:38:08.770Z","0.1.4":"2026-05-13T21:10:09.998Z"},"bugs":{"url":"https://github.com/kanmi-idris/react-native-ndt7-js/issues"},"author":{"name":"Olasunkanmi IDRIS","email":"olasunkanmiidris15@gmail.com"},"license":"MIT","homepage":"https://github.com/kanmi-idris/react-native-ndt7-js#readme","keywords":["react-native","react-native-web","ndt7","network-speed","internet-speed"],"repository":{"type":"git","url":"git+https://github.com/kanmi-idris/react-native-ndt7-js.git"},"description":"JavaScript-first NDT7 client for React Native and React Native Web.","maintainers":[{"name":"kanmi-idris","email":"olasunkanmiidris15@gmail.com"}],"readme":"# @_molaidrislabs/react-native-internet-speed-test\n\nJavaScript-first NDT7 client for React Native and React Native Web.\n\n## Features\n\n- API parity with `react-native-ndt7`\n- no native code or platform setup\n- event-driven API only\n- works in React Native and React Native Web environments with `fetch`, `URL`, and `WebSocket`\n- lightweight package shape with a soft-cancel v1 controller\n\n## Installation\n\n```bash\nnpm install @_molaidrislabs/react-native-internet-speed-test\n```\n\n```bash\nyarn add @_molaidrislabs/react-native-internet-speed-test\n```\n\nThis package currently pins `@m-lab/ndt7` to the tested upstream version to avoid behavior drift.\n\n## API\n\n```ts\nimport { Ndt7 } from '@_molaidrislabs/react-native-internet-speed-test';\n\nconst progressSub = Ndt7.addListener('progress', event => {\n  console.log(event.phase, event.speedMbps);\n});\n\nconst completeSub = Ndt7.addListener('complete', result => {\n  console.log(result.downloadMbps, result.uploadMbps);\n});\n\nawait Ndt7.startSpeedTest({ userAcceptedDataPolicy: true });\nawait Ndt7.stopSpeedTest();\nconst state = await Ndt7.getState();\n\nprogressSub.remove();\ncompleteSub.remove();\n```\n\n### Methods\n\n- `startSpeedTest(options?) => Promise<{ state, alreadyRunning }>`\n- `stopSpeedTest() => Promise<void>`\n- `getState() => Promise<SpeedTestState>`\n- `addListener(event, listener) => EventSubscription`\n\n### State lifecycle\n\n- `idle`\n- `starting`\n- `running`\n- `stopping`\n- `completed` then auto-resets to `idle`\n- `failed` then auto-resets to `idle`\n\nIf a test is already active, `startSpeedTest()` returns the current state with `alreadyRunning: true`.\n\n## Usage scenarios\n\n### 1. Minimal fire-and-forget test\n\n```ts\nimport { Ndt7 } from '@_molaidrislabs/react-native-internet-speed-test';\n\nawait Ndt7.startSpeedTest({\n  userAcceptedDataPolicy: true,\n});\n```\n\n### 2. Subscribe to progress and completion\n\n```ts\nimport { Ndt7 } from '@_molaidrislabs/react-native-internet-speed-test';\n\nconst subscriptions = [\n  Ndt7.addListener('stateChange', event => {\n    console.log('state', event.state);\n  }),\n  Ndt7.addListener('progress', event => {\n    console.log(`${event.phase}: ${event.speedMbps.toFixed(2)} Mbps`);\n  }),\n  Ndt7.addListener('complete', event => {\n    console.log('done', event.downloadMbps, event.uploadMbps);\n  }),\n  Ndt7.addListener('error', event => {\n    console.warn(event.code, event.message);\n  }),\n];\n\nawait Ndt7.startSpeedTest({ userAcceptedDataPolicy: true });\n\n// Later\nsubscriptions.forEach(subscription => subscription.remove());\n```\n\n### 3. Best-effort cancellation\n\n```ts\nimport { Ndt7 } from '@_molaidrislabs/react-native-internet-speed-test';\n\nawait Ndt7.startSpeedTest({ userAcceptedDataPolicy: true });\n\nsetTimeout(() => {\n  void Ndt7.stopSpeedTest();\n}, 2_000);\n```\n\n`stopSpeedTest()` is a soft cancel in v1. The controller invalidates the active run and returns state to `idle`, but underlying WebSocket shutdown is still best-effort.\n\n### 4. Target a specific server or load balancer\n\n```ts\nimport { Ndt7 } from '@_molaidrislabs/react-native-internet-speed-test';\n\nawait Ndt7.startSpeedTest({\n  userAcceptedDataPolicy: true,\n  protocol: 'wss',\n  server: 'ndt.example.net',\n  metadata: {\n    client_name: 'my-app',\n    client_version: '1.2.3',\n  },\n});\n```\n\nOr use a custom locate service:\n\n```ts\nawait Ndt7.startSpeedTest({\n  userAcceptedDataPolicy: true,\n  loadbalancer: 'https://locate.example.net/v2/nearest/ndt/ndt7',\n});\n```\n","readmeFilename":"README.md"}