Compare commits

..

No commits in common. "master" and "v2.0.1" have entirely different histories.

24 changed files with 11104 additions and 4714 deletions

View File

@ -13,13 +13,8 @@ stages:
- metadata - metadata
before_script: before_script:
- pnpm install -g pnpm - npm install -g @shipzone/npmci
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
@ -27,10 +22,11 @@ auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci command npm config set registry https://registry.npmjs.org - npmci npm prepare
- npmci command pnpm audit --audit-level=high --prod - npmci command npm install --production --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=prod --production
tags: tags:
- lossless
- docker - docker
allow_failure: true allow_failure: true
@ -38,10 +34,11 @@ auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security stage: security
script: script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command npm config set registry https://registry.npmjs.org - npmci command npm config set registry https://registry.npmjs.org
- npmci command pnpm audit --audit-level=high --dev - npmci command npm audit --audit-level=high --only=dev
tags: tags:
- lossless
- docker - docker
allow_failure: true allow_failure: true
@ -52,6 +49,7 @@ auditDevDependencies:
testStable: testStable:
stage: test stage: test
script: script:
- npmci npm prepare
- npmci node install stable - npmci node install stable
- npmci npm install - npmci npm install
- npmci npm test - npmci npm test
@ -62,9 +60,10 @@ testStable:
testBuild: testBuild:
stage: test stage: test
script: script:
- npmci npm prepare
- npmci node install stable - npmci node install stable
- npmci npm install - npmci npm install
- npmci npm build - npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -112,7 +111,8 @@ trigger:
pages: pages:
stage: metadata stage: metadata
script: script:
- npmci node install stable - npmci node install stable
- npmci npm prepare
- npmci npm install - npmci npm install
- npmci command npm run buildDocs - npmci command npm run buildDocs
tags: tags:

11003
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{ {
"name": "@uptime.link/interfaces", "name": "@uptime.link/interfaces",
"version": "2.0.21", "version": "2.0.1",
"private": false, "private": false,
"description": "TypeScript interface for the uptime.link API and modules", "description": "TypeScript interface for the uptime.link API and modules",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
@ -14,15 +14,14 @@
"buildDocs": "tsdoc" "buildDocs": "tsdoc"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.65", "@gitzone/tsbuild": "^2.1.63",
"@gitzone/tsrun": "^1.2.39", "@gitzone/tstest": "^1.0.71",
"@gitzone/tstest": "^1.0.74", "@pushrocks/tapbundle": "^5.0.3",
"@pushrocks/tapbundle": "^5.0.4", "@types/node": "^18.0.5"
"@types/node": "^18.15.11"
}, },
"dependencies": { "dependencies": {
"@apiglobal/typedrequest-interfaces": "^2.0.1", "@apiglobal/typedrequest-interfaces": "^1.0.15",
"@tsclass/tsclass": "^4.0.38" "@tsclass/tsclass": "^4.0.17"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

4464
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -21,6 +21,7 @@ Code Style | [![Code Style](https://badgen.net/badge/style/prettier/purple)](htt
PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@uptime.link/interfaces)](https://lossless.cloud) PackagePhobia (total standalone install weight) | [![PackagePhobia](https://badgen.net/packagephobia/install/@uptime.link/interfaces)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@uptime.link/interfaces)](https://lossless.cloud) PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@uptime.link/interfaces)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@uptime.link/interfaces)](https://lossless.cloud) BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@uptime.link/interfaces)](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
@ -34,6 +35,7 @@ We are always happy for code contributions. If you are not the code contributing
For further information read the linked docs at the top of this readme. For further information read the linked docs at the top of this readme.
## Legal > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
[![repo-footer](https://lossless.gitlab.io/publicrelations/repofooter.svg)](https://maintainedby.lossless.com)

View File

@ -3,7 +3,7 @@ import * as interfaces from '../ts/index.js';
tap.test('first test', async () => { tap.test('first test', async () => {
console.log( console.log(
'hi' as interfaces.requests.IRequest_CheckExchange['request']['checkCollection']['id'] 'hi' as interfaces.requests.checkRequests.IRequest_PageCheck_Assumption['request']['domain']
); );
}); });

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@uptime.link/interfaces', name: '@uptime.link/interfaces',
version: '2.0.21', version: '2.0.1',
description: 'TypeScript interface for the uptime.link API and modules' description: 'TypeScript interface for the uptime.link API and modules'
} }

View File

@ -1,13 +0,0 @@
import * as plugins from '../ul-interfaces.plugins.js';
import * as search from './search.js';
import * as checks from './checks/index.js';
export interface ICheckCollection {
id: string;
intervalMs: number;
assumptionChecks?: Array<checks.IAssumptionCheck>;
functionChecks: Array<checks.IFunctionCheck>;
pwaChecks?: Array<checks.IPwaCheck>;
pageRankChecks: Array<checks.IPageRankCheck>;
}

59
ts/data/checks.ts Normal file
View File

@ -0,0 +1,59 @@
import * as plugins from '../ul-interfaces.plugins.js';
export type TCheckResultStatus = 'ok' | 'not ok' | 'timed out';
export interface ICheck {
type: 'pwa' | 'function' | 'assumption';
intervalMs: number;
pwaData?: {
domain: string;
};
functionData: {
domain: string;
functionDef: string;
};
assumptionData?: {
domain: string;
title?: string;
statusCode?: string;
description?: string;
dnsRecordMx?: string;
dnsRecordTxt?: string;
};
checkResults: Array<{
pwaResult?: {
timeStarted: number;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: {
lhr: any;
reports: any[];
};
};
functionResult?: {
timeStarted: number;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: any;
};
assumptionResult: {
timeStarted: number;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: {
domain: string;
title?: string;
statusCode?: string;
description?: string;
dnsRecordMx?: string;
dnsRecordTxt?: string;
};
};
checkLog: string[];
}>;
}

View File

@ -1,23 +0,0 @@
import * as plugins from '../../ul-interfaces.plugins.js';
import { TCheckResultStatus, TExecutionTiming } from './index.js';
export interface IAssumptionCheck {
inputData: {
domain: string;
title?: string;
statusCode?: string;
description?: string;
dnsRecords?: plugins.tsclass.network.IDnsRecord;
};
executionResults: Array<{
timing: TExecutionTiming;
status: TCheckResultStatus;
data: {
domain: string;
title?: string;
statusCode?: string;
description?: string;
dnsRecords: Array<plugins.tsclass.network.IDnsRecord>;
};
}>;
}

View File

@ -1,15 +0,0 @@
import { TCheckResultStatus, TExecutionTiming } from './index.js';
export interface IFunctionCheck {
checkId: string;
inputData: {
domain: string;
functionDef: string;
};
executionResults: Array<{
timing: TExecutionTiming;
status: TCheckResultStatus;
data: any;
checkLog: string[];
}>;
}

View File

@ -1,13 +0,0 @@
export type TCheckResultStatus = 'ok' | 'not ok' | 'timed out';
export interface TExecutionTiming {
plannedTime: number;
timeStarted: number;
timeEnded: number;
duration: number;
}
export * from './assumption.check.js';
export * from './function.check.js';
export * from './pagerank.check.js';
export * from './pwa.check.js';

View File

@ -1,19 +0,0 @@
import * as search from '../search.js';
import { TCheckResultStatus, TExecutionTiming } from './index.js';
export interface IPageRankCheck {
inputData: {
subId: string;
domain: string;
searchTerm: string;
checkBing?: boolean;
checkGoogle?: boolean;
bingMinRank?: number;
googleMinRank?: number;
};
executionResults: Array<{
timing: TExecutionTiming;
status: TCheckResultStatus;
pageRankResult: search.IPageRankResult;
}>;
}

View File

@ -1,16 +0,0 @@
import { TCheckResultStatus } from './index.js';
export interface IPwaCheck {
inputData: { domain: string };
executionResults: Array<{
subId: string;
timeStarted: number;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: {
lhr: any;
reports: any[];
};
}>;
}

View File

@ -1,31 +0,0 @@
import * as plugins from '../ul-interfaces.plugins.js';
import { ILinkSnapshot } from './linksnapshot.js';
export interface IDomainSnapshot {
registration: {
isRegistered: boolean;
updatedDate: number;
createdDate: number;
expiryDate: number;
};
delegation: plugins.tsclass.network.IDomainDelegation;
phishingFlags: {
listName: string;
}[];
recordScans: {
identifier: string;
nameservers: string[];
aRecords: plugins.tsclass.network.IDnsRecord[];
aaaaRecords: plugins.tsclass.network.IDnsRecord[];
txtRecords: plugins.tsclass.network.IDnsRecord[];
mxRecords: plugins.tsclass.network.IDnsRecord[];
specialRecords: {
dmarc: plugins.tsclass.network.IDnsRecord[];
}
}[];
linkSnapshots: ILinkSnapshot[];
whoisServers: {
serverUrl: string;
content: string;
}[];
}

View File

@ -1,11 +1 @@
export * from './checkcollection.js';
export * from './domainsnapshot.js';
export * from './incident.js'; export * from './incident.js';
export * from './linksnapshot.js';
export * from './property.js';
export * from './search.js';
export * from './status.js';
import * as checks from './checks/index.js';
export { checks };

View File

@ -1,29 +0,0 @@
import * as plugins from '../ul-interfaces.plugins.js';
export interface ILinkSnapshot {
/**
* the link base on which the snapshot was taken
*/
linkBaseUrl: string;
httpsSupport: boolean;
httpHttpsParity: boolean;
httpToHttpsRedirect: boolean;
fromWwwRedirect: boolean;
toWwwRedirect: boolean;
statusCode: number;
fullPageLoadSize: number;
fullPageLoadTimeMs: number;
cookies: any[];
httpRequest: {
statusCode: number;
headers: {
[key: string]: string;
}
};
httpsRequest: {
statusCode: number;
headers: {
[key: string]: string;
}
};
}

View File

@ -1,10 +1,8 @@
import * as plugins from '../ul-interfaces.plugins.js'; import * as plugins from '../ul-interfaces.plugins.js';
export class IUplinkProperty { export class IProperty {
wgOrgIdRef: string;
wgPropertyIdRef: string;
name: string; name: string;
type: 'website' | 'app' | 'api' | 'other'; type: 'website' | 'app' | 'api' | 'other';
access: 'private' | 'public' | 'auth'; access: 'private' | 'public' | 'auth';
checkCollectionIdRefs: string[];
} }

View File

@ -1,21 +0,0 @@
export interface ISearchResult {
searchTerm: string;
targetUrl: string;
title: string;
description: string;
rank: number;
}
/**
* special data returned by the PageRankCheck check class
*/
export interface IPageRankResult {
googleRank: number;
googleBlocked: boolean;
bingRank: number;
bingBlocked: boolean;
searchResults: {
google: ISearchResult[];
bing: ISearchResult[];
};
}

View File

@ -1,12 +1,12 @@
import * as plugins from '../ul-interfaces.plugins.js'; import * as plugins from '../ul-interfaces.plugins.js';
export interface IStatus { export interface IStatus {
last90days: IDailyStatus[]; last90days: IDailyStatus[];
} }
export interface IDailyStatus { export interface IDailyStatus {
timezone: 'UTC'; timezone: 'UTC',
date: plugins.tsclass.general.IDate; date: plugins.tsclass.general.IDate;
overallStatus: 'ok' | 'reduced' | 'outage'; overallStatus: 'ok' | 'reduced' | 'outage';
incidentRefs: string[]; incidentRefs: string[];
} }

View File

@ -1,4 +1,3 @@
export * from './requests.checks.js'; import * as checkRequests from './requests.checks.js';
export * from './requests.incidents.js';
export * from './requests.snapshot.js'; export { checkRequests };
export * from './requests.status.js';

View File

@ -1,4 +1,4 @@
import { ICheckCollection } from '../data/checkcollection.js'; import { ICheck } from '../data/checks.js';
import * as plugins from '../ul-interfaces.plugins.js'; import * as plugins from '../ul-interfaces.plugins.js';
export interface IRequest_CheckExchange export interface IRequest_CheckExchange
@ -8,9 +8,9 @@ export interface IRequest_CheckExchange
> { > {
method: 'check'; method: 'check';
request: { request: {
checkCollection: ICheckCollection; check: ICheck;
}; };
response: { response: {
checkCollection: ICheckCollection; check: ICheck;
}; }
} }

View File

@ -1,18 +0,0 @@
import { IDomainSnapshot } from '../data/domainsnapshot.js';
import { ILinkSnapshot } from '../data/linksnapshot.js';
import * as plugins from '../ul-interfaces.plugins.js';
export interface IReq_PerformDomainSnapshot
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IReq_PerformDomainSnapshot
> {
method: 'performDomainSnapshot';
request: {
domainName: string;
};
response: {
domainSnapshot: IDomainSnapshot;
linkSnapshot: ILinkSnapshot;
};
}

View File

@ -5,4 +5,6 @@ export { typedRequestInterfaces };
// tsclass scope // tsclass scope
import * as tsclass from '@tsclass/tsclass'; import * as tsclass from '@tsclass/tsclass';
export { tsclass }; export {
tsclass
}