Compare commits

..

No commits in common. "master" and "v1.0.4" have entirely different histories.

13 changed files with 10206 additions and 8503 deletions

View File

@ -12,12 +12,20 @@ stages:
- release - release
- metadata - metadata
before_script:
- npm install -g @shipzone/npmci
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
auditProductionDependencies: auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
@ -28,7 +36,6 @@ auditProductionDependencies:
- npmci command npm audit --audit-level=high --only=prod --production - npmci command npm audit --audit-level=high --only=prod --production
tags: tags:
- docker - docker
allow_failure: true
auditDevDependencies: auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
@ -89,9 +96,10 @@ codequality:
only: only:
- tags - tags
script: script:
- npmci command npm install -g typescript - npmci command npm install -g tslint typescript
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags: tags:
- lossless - lossless
- docker - docker
@ -111,10 +119,11 @@ trigger:
pages: pages:
stage: metadata stage: metadata
script: script:
- npmci node install stable - npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare - npmci npm prepare
- npmci npm install - npmci npm install
- npmci command npm run buildDocs - npmci command tsdoc
tags: tags:
- lossless - lossless
- docker - docker

24
.vscode/launch.json vendored
View File

@ -2,10 +2,28 @@
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"command": "npm test", "name": "current file",
"name": "Run npm test", "type": "node",
"request": "launch", "request": "launch",
"type": "node-terminal" "args": [
"${relativeFile}"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
},
{
"name": "test.ts",
"type": "node",
"request": "launch",
"args": [
"test/test.ts"
],
"runtimeArgs": ["-r", "@gitzone/tsrun"],
"cwd": "${workspaceRoot}",
"protocol": "inspector",
"internalConsoleOptions": "openOnSessionStart"
} }
] ]
} }

View File

@ -3,10 +3,10 @@
"projectType": "npm", "projectType": "npm",
"module": { "module": {
"githost": "gitlab.com", "githost": "gitlab.com",
"gitscope": "uptime.link", "gitscope": "uptimelink",
"gitrepo": "detector", "gitrepo": "detector",
"description": "a detector for answering network questions locally. It does not rely on any online services.", "shortDescription": "a detector for answering network questions locally. It does not rely on any online services.",
"npmPackagename": "@uptime.link/detector", "npmPackagename": "@uptimelink/detector",
"license": "MIT", "license": "MIT",
"projectDomain": "uptime.link" "projectDomain": "uptime.link"
} }

18544
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,30 +1,28 @@
{ {
"name": "@uptime.link/detector", "name": "@uptimelink/detector",
"version": "2.0.1", "version": "1.0.4",
"private": false, "private": false,
"description": "a detector for answering network questions locally. It does not rely on any online services.", "description": "a detector for answering network questions locally. It does not rely on any online services.",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
"type": "module",
"author": "Lossless GmbH", "author": "Lossless GmbH",
"license": "MIT", "license": "MIT",
"scripts": { "scripts": {
"test": "(tstest test/ --web)", "test": "(tstest test/ --web)",
"build": "(tsbuild --web --allowimplicitany)", "build": "(tsbuild --web)"
"buildDocs": "tsdoc"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.63", "@gitzone/tsbuild": "^2.1.25",
"@gitzone/tsbundle": "^2.0.5", "@gitzone/tsbundle": "^1.0.78",
"@gitzone/tstest": "^1.0.71", "@gitzone/tstest": "^1.0.44",
"@pushrocks/tapbundle": "^5.0.3", "@pushrocks/tapbundle": "^3.2.9",
"@types/node": "^18.0.5", "@types/node": "^14.11.2",
"tslint": "^6.1.3", "tslint": "^6.1.3",
"tslint-config-prettier": "^1.15.0" "tslint-config-prettier": "^1.15.0"
}, },
"dependencies": { "dependencies": {
"@pushrocks/smartnetwork": "^3.0.0", "@pushrocks/smartnetwork": "^2.0.4",
"@pushrocks/smarturl": "^2.0.1" "@pushrocks/smarturl": "^1.0.8"
}, },
"browserslist": [ "browserslist": [
"last 1 chrome versions" "last 1 chrome versions"

View File

@ -1,26 +1,26 @@
# @uptime.link/detector # @uptimelink/detector
a detector for answering network questions locally. It does not rely on any online services. a detector for answering network questions locally. It does not rely on any online services.
## Availabililty and Links ## Availabililty and Links
* [npmjs.org (npm package)](https://www.npmjs.com/package/@uptime.link/detector) * [npmjs.org (npm package)](https://www.npmjs.com/package/@uptimelink/detector)
* [gitlab.com (source)](https://gitlab.com/uptime.link/detector) * [gitlab.com (source)](https://gitlab.com/uptimelink/detector)
* [github.com (source mirror)](https://github.com/uptime.link/detector) * [github.com (source mirror)](https://github.com/uptimelink/detector)
* [docs (typedoc)](https://uptime.link.gitlab.io/detector/) * [docs (typedoc)](https://uptimelink.gitlab.io/detector/)
## Status for master ## Status for master
Status Category | Status Badge Status Category | Status Badge
-- | -- -- | --
GitLab Pipelines | [![pipeline status](https://gitlab.com/uptime.link/detector/badges/master/pipeline.svg)](https://lossless.cloud) GitLab Pipelines | [![pipeline status](https://gitlab.com/uptimelink/detector/badges/master/pipeline.svg)](https://lossless.cloud)
GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/uptime.link/detector/badges/master/coverage.svg)](https://lossless.cloud) GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/uptimelink/detector/badges/master/coverage.svg)](https://lossless.cloud)
npm | [![npm downloads per month](https://badgen.net/npm/dy/@uptime.link/detector)](https://lossless.cloud) npm | [![npm downloads per month](https://badgen.net/npm/dy/@uptimelink/detector)](https://lossless.cloud)
Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/uptime.link/detector)](https://lossless.cloud) Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/uptimelink/detector)](https://lossless.cloud)
TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud) TypeScript Support | [![TypeScript](https://badgen.net/badge/TypeScript/>=%203.x/blue?icon=typescript)](https://lossless.cloud)
node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/) node Support | [![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud) Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](https://lossless.cloud)
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@uptime.link/detector)](https://lossless.cloud) PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@uptimelink/detector)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@uptime.link/detector)](https://lossless.cloud) PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@uptimelink/detector)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@uptime.link/detector)](https://lossless.cloud) BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@uptimelink/detector)](https://lossless.cloud)
Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud) Platform support | [![Supports Windows 10](https://badgen.net/badge/supports%20Windows%2010/yes/green?icon=windows)](https://lossless.cloud) [![Supports Mac OS X](https://badgen.net/badge/supports%20Mac%20OS%20X/yes/green?icon=apple)](https://lossless.cloud)
## Usage ## Usage

View File

@ -1,21 +1,21 @@
import { expect, tap } from '@pushrocks/tapbundle'; import { expect, tap } from '@pushrocks/tapbundle';
import * as detector from '../ts/index.js'; import * as detector from '../ts/index';
let testDetector: detector.Detector; let testDetector: detector.Detector;
tap.test('first test', async () => { tap.test('first test', async () => {
testDetector = new detector.Detector(); testDetector = new detector.Detector();
expect(testDetector).toBeInstanceOf(detector.Detector); expect(testDetector).to.be.instanceOf(detector.Detector);
}); });
tap.test('should detect an closed port on a local domain', async () => { tap.test('should detect an closed port on a local domain', async () => {
const result = await testDetector.isActive('http://localhost:3008'); const result = await testDetector.isActive('http://localhost:3008');
expect(result).toBeFalse(); expect(result).to.be.false;
}); });
tap.test('should detect an open port on a remote domain', async () => { tap.test('should detect an open port on a remote domain', async () => {
const result = await testDetector.isActive('https://lossless.com'); const result = await testDetector.isActive('https://lossless.com');
expect(result).toBeTrue(); expect(result).to.be.true;
}); });
tap.start(); tap.start();

View File

@ -1,8 +0,0 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@uptime.link/detector',
version: '2.0.1',
description: 'a detector for answering network questions locally. It does not rely on any online services.'
}

View File

@ -2,4 +2,7 @@
import * as smartnetwork from '@pushrocks/smartnetwork'; import * as smartnetwork from '@pushrocks/smartnetwork';
import * as smarturl from '@pushrocks/smarturl'; import * as smarturl from '@pushrocks/smarturl';
export { smartnetwork, smarturl }; export {
smartnetwork,
smarturl
};

View File

@ -1,23 +1,19 @@
import * as plugins from './detector.plugins.js'; import * as plugins from './detector.plugins';
export class Detector { export class Detector {
private smartnetworkInstance = new plugins.smartnetwork.SmartNetwork(); private smartnetworkInstance = new plugins.smartnetwork.SmartNetwork();
private smarturlInstance = new plugins.smarturl.Smarturl();
public async isActive(urlArg: string): Promise<boolean> { public async isActive(urlArg: string): Promise<boolean> {
const parsedUrl = plugins.smarturl.Smarturl.createFromUrl(urlArg); const parsedUrl = this.smarturlInstance.parseUrl(urlArg);
if (parsedUrl.hostname === 'localhost') { if (parsedUrl.hostname === 'localhost') {
console.log(`detector target is localhost on port ${parsedUrl.port}`); console.log(`detector target is localhost on port ${parsedUrl.port}`);
const portUnused = await this.smartnetworkInstance.isLocalPortUnused( const portUnused = await this.smartnetworkInstance.isLocalPortUnused(parseInt(parsedUrl.port, 10));
parseInt(parsedUrl.port, 10)
);
const portAvailable = !portUnused; const portAvailable = !portUnused;
return portAvailable; return portAvailable;
} else { } else {
console.log(`detector target is remote domain ${parsedUrl.host} on port ${parsedUrl.port}`); console.log(`detector target is remote domain ${parsedUrl.host} on port ${parsedUrl.port}`);
const postAvailable = await this.smartnetworkInstance.isRemotePortAvailable( const postAvailable = await this.smartnetworkInstance.isRemotePortAvailable(parsedUrl.host, parseInt(parsedUrl.port, 10));
parsedUrl.host,
parseInt(parsedUrl.port, 10)
);
return postAvailable; return postAvailable;
} }
} }
@ -25,4 +21,4 @@ export class Detector {
public detectType(urlArg: string) { public detectType(urlArg: string) {
console.log('TODO'); // TODO console.log('TODO'); // TODO
} }
} }

View File

@ -1 +1 @@
export * from './detector.classes.detector.js'; export * from './detectpr.classes.detector';

View File

@ -1,10 +0,0 @@
{
"compilerOptions": {
"experimentalDecorators": true,
"useDefineForClassFields": false,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "nodenext",
"esModuleInterop": true
}
}

17
tslint.json Normal file
View File

@ -0,0 +1,17 @@
{
"extends": ["tslint:latest", "tslint-config-prettier"],
"rules": {
"semicolon": [true, "always"],
"no-console": false,
"ordered-imports": false,
"object-literal-sort-keys": false,
"member-ordering": {
"options":{
"order": [
"static-method"
]
}
}
},
"defaultSeverity": "warning"
}