@vnodes/net 0.0.23
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/README.md +35 -0
- package/bin/version.mjs +12 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/get-port.d.ts +5 -0
- package/dist/lib/get-port.d.ts.map +1 -0
- package/dist/lib/get-port.js +24 -0
- package/dist/lib/get-port.js.map +1 -0
- package/package.json +57 -0
package/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+

|
|
2
|
+

|
|
3
|
+

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img srcset="./assets/favicon.png, https://vnodes.github.io/vnodes/libs/net/assets/favicon.png" alt="Logo" width="200" height="200" style="border-radius: 100%"/>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
## @vnodes/net
|
|
12
|
+
|
|
13
|
+
Common net functions
|
|
14
|
+
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @vnodes/net
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 💖 Support My Work
|
|
22
|
+
|
|
23
|
+
If you find my open-source contributions or the **@vnodes/net** project helpful, consider supporting my work. Your sponsorship helps me maintain these projects and explore new enterprise patterns.
|
|
24
|
+
|
|
25
|
+
[](https://cash.app/$puqlib)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 🤝 Connect with Me
|
|
30
|
+
|
|
31
|
+
<p align="left">
|
|
32
|
+
<a href="mailto:robert.brightline+vnodes-net@gmail.com">
|
|
33
|
+
<img src="https://img.shields.io/badge/Email-D14836?style=for-the-badge&logo=gmail&logoColor=white" />
|
|
34
|
+
</a>
|
|
35
|
+
</p>
|
package/bin/version.mjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
import { dirname, join } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = dirname(__filename);
|
|
9
|
+
const packageJsonPath = join(__dirname, '..', 'package.json');
|
|
10
|
+
const packageJson = readFileSync(packageJsonPath, { encoding: 'utf-8' });
|
|
11
|
+
const version = JSON.parse(packageJson).version;
|
|
12
|
+
console.log(version);
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @index(['./**/*.ts', '!./**/*.{spec,test}.ts'], f => `export * from '${f.path}.js'`)\nexport * from './lib/get-port.js';\n"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,cAAc,oBAAoB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-port.d.ts","sourceRoot":"","sources":["../../src/lib/get-port.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,mBAsBvD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { createServer } from 'node:net';
|
|
2
|
+
/**
|
|
3
|
+
* Get an open port number between {@link start} and {@link end}F
|
|
4
|
+
*/ export async function getPort(start, end) {
|
|
5
|
+
for(let i = start; i <= end; i++){
|
|
6
|
+
const result = await new Promise((resolve)=>{
|
|
7
|
+
const server = createServer();
|
|
8
|
+
server.once('error', ()=>{
|
|
9
|
+
server.close();
|
|
10
|
+
resolve(false);
|
|
11
|
+
});
|
|
12
|
+
server.once('listening', ()=>{
|
|
13
|
+
server.close(()=>resolve(true));
|
|
14
|
+
});
|
|
15
|
+
server.listen(i, '127.0.0.1');
|
|
16
|
+
});
|
|
17
|
+
if (result === true) {
|
|
18
|
+
return i;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`There is no available port between ${start} and ${end}`);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//# sourceMappingURL=get-port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/get-port.ts"],"sourcesContent":["import { createServer, type Server } from 'node:net';\n\n/**\n * Get an open port number between {@link start} and {@link end}F\n */\nexport async function getPort(start: number, end: number) {\n for (let i = start; i <= end; i++) {\n const result = await new Promise((resolve) => {\n const server: Server = createServer();\n server.once('error', () => {\n server.close();\n resolve(false);\n });\n\n server.once('listening', () => {\n server.close(() => resolve(true));\n });\n\n server.listen(i, '127.0.0.1');\n });\n\n if (result === true) {\n return i;\n }\n }\n\n throw new Error(`There is no available port between ${start} and ${end}`);\n}\n"],"names":["createServer","getPort","start","end","i","result","Promise","resolve","server","once","close","listen","Error"],"mappings":"AAAA,SAASA,YAAY,QAAqB,WAAW;AAErD;;CAEC,GACD,OAAO,eAAeC,QAAQC,KAAa,EAAEC,GAAW;IACpD,IAAK,IAAIC,IAAIF,OAAOE,KAAKD,KAAKC,IAAK;QAC/B,MAAMC,SAAS,MAAM,IAAIC,QAAQ,CAACC;YAC9B,MAAMC,SAAiBR;YACvBQ,OAAOC,IAAI,CAAC,SAAS;gBACjBD,OAAOE,KAAK;gBACZH,QAAQ;YACZ;YAEAC,OAAOC,IAAI,CAAC,aAAa;gBACrBD,OAAOE,KAAK,CAAC,IAAMH,QAAQ;YAC/B;YAEAC,OAAOG,MAAM,CAACP,GAAG;QACrB;QAEA,IAAIC,WAAW,MAAM;YACjB,OAAOD;QACX;IACJ;IAEA,MAAM,IAAIQ,MAAM,CAAC,mCAAmC,EAAEV,MAAM,KAAK,EAAEC,KAAK;AAC5E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vnodes/net",
|
|
3
|
+
"version": "0.0.23",
|
|
4
|
+
"description": "@vnodes/net",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"net"
|
|
7
|
+
],
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Robert Brightline",
|
|
10
|
+
"email": "robert.brightline+vnodes-net@gmail.com",
|
|
11
|
+
"url": "https://vnodes.github.io/vnodes"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://vnodes.github.io/vnodes/libs/net",
|
|
14
|
+
"icon": "https://vnodes.github.io/vnodes/libs/net/assets/favicon.png",
|
|
15
|
+
"funding": [
|
|
16
|
+
"https://cash.app/$puqlib"
|
|
17
|
+
],
|
|
18
|
+
"bin": {
|
|
19
|
+
"version": "./bin/version.mjs"
|
|
20
|
+
},
|
|
21
|
+
"type": "module",
|
|
22
|
+
"main": "./dist/index.js",
|
|
23
|
+
"module": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
"./package.json": "./package.json",
|
|
27
|
+
".": {
|
|
28
|
+
"@vnodes/source": "./src/index.ts",
|
|
29
|
+
"types": "./dist/index.d.ts",
|
|
30
|
+
"import": "./dist/index.js",
|
|
31
|
+
"default": "./dist/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist",
|
|
36
|
+
"bin",
|
|
37
|
+
"!**/*.tsbuildinfo"
|
|
38
|
+
],
|
|
39
|
+
"nx": {
|
|
40
|
+
"sourceRoot": "libs/net/src",
|
|
41
|
+
"targets": {
|
|
42
|
+
"build": {},
|
|
43
|
+
"doc": {},
|
|
44
|
+
"lint": {}
|
|
45
|
+
},
|
|
46
|
+
"tags": [
|
|
47
|
+
"lib"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@swc/helpers": "~0.5.18"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public",
|
|
55
|
+
"tag": "latest"
|
|
56
|
+
}
|
|
57
|
+
}
|