Compare commits

...

42 Commits

Author SHA1 Message Date
add4a52635 2.0.21 2023-04-19 21:48:16 +02:00
de3ac113fc fix(core): update 2023-04-19 21:48:16 +02:00
2cf760d788 2.0.20 2023-04-19 20:40:22 +02:00
b9a23d5497 fix(core): update 2023-04-19 20:40:21 +02:00
1c196ea31a 2.0.19 2023-04-18 17:13:46 +02:00
d1088270bc fix(core): update 2023-04-18 17:13:45 +02:00
e7a11c2b54 2.0.18 2023-04-17 14:54:27 +02:00
9d8985d67a fix(core): update 2023-04-17 14:54:26 +02:00
5afbf16906 2.0.17 2023-04-17 13:56:55 +02:00
1ef7737dc9 fix(core): update 2023-04-17 13:56:55 +02:00
4d961003e8 2.0.16 2023-04-17 13:54:47 +02:00
24762468da fix(core): update 2023-04-17 13:54:47 +02:00
4c57804da2 2.0.15 2023-04-17 13:48:33 +02:00
847f3a4f1c fix(core): update 2023-04-17 13:48:32 +02:00
d5d896a91e 2.0.14 2023-04-17 13:47:58 +02:00
53b732a3f7 fix(core): update 2023-04-17 13:47:58 +02:00
f7f75a64db 2.0.13 2023-04-10 14:09:21 +02:00
2a0aa6db07 fix(core): update 2023-04-10 14:09:21 +02:00
6a4849f87d 2.0.12 2023-04-10 14:04:13 +02:00
6ba521c1b9 fix(core): update 2023-04-10 14:04:13 +02:00
267dca249f 2.0.11 2023-04-06 19:22:14 +02:00
0b8249a21f fix(core): update 2023-04-06 19:22:13 +02:00
cf4d90ecbd 2.0.10 2023-04-06 18:15:13 +02:00
92d9f441d1 fix(core): update 2023-04-06 18:15:12 +02:00
44d62df972 2.0.9 2023-04-03 17:12:02 +02:00
289ddfc153 fix(core): update 2023-04-03 17:12:01 +02:00
a1cef67eee 2.0.8 2023-04-03 14:41:10 +02:00
5b75506634 fix(core): update 2023-04-03 14:41:09 +02:00
66ed64548a 2.0.7 2023-04-03 14:12:54 +02:00
31888a7f07 fix(core): update 2023-04-03 14:12:53 +02:00
a49f1cd110 2.0.6 2023-04-03 13:52:28 +02:00
9b7f76b22a fix(core): update 2023-04-03 13:52:27 +02:00
5f89befa03 2.0.5 2023-04-03 13:50:23 +02:00
84a2f67df9 fix(core): update 2023-04-03 13:50:22 +02:00
9022721d51 2.0.4 2023-04-03 13:40:57 +02:00
8e9c6be7e0 fix(core): update 2023-04-03 13:40:56 +02:00
a1bf280a2f 2.0.3 2022-07-19 17:17:57 +02:00
3391e0cea3 fix(core): update 2022-07-19 17:17:57 +02:00
5d7167b24a 2.0.2 2022-07-19 17:16:37 +02:00
df2563f501 fix(core): update 2022-07-19 17:16:37 +02:00
ac8a8653e1 2.0.1 2022-07-19 15:52:50 +02:00
1119e5f790 fix(core): update 2022-07-19 15:52:49 +02:00
24 changed files with 4751 additions and 11574 deletions

View File

@ -13,8 +13,13 @@ stages:
- metadata - metadata
before_script: before_script:
- npm install -g @shipzone/npmci - pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
# ==================== # ====================
# security stage # security stage
# ==================== # ====================
@ -22,11 +27,10 @@ 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 npm prepare - npmci command npm config set registry https://registry.npmjs.org
- npmci command npm install --production --ignore-scripts - npmci command pnpm audit --audit-level=high --prod
- 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
@ -34,11 +38,10 @@ 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 npm audit --audit-level=high --only=dev - npmci command pnpm audit --audit-level=high --dev
tags: tags:
- lossless
- docker - docker
allow_failure: true allow_failure: true
@ -49,7 +52,6 @@ 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
@ -60,10 +62,9 @@ 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 command npm run build - npmci npm build
coverage: /\d+.?\d+?\%\s*coverage/ coverage: /\d+.?\d+?\%\s*coverage/
tags: tags:
- docker - docker
@ -111,8 +112,7 @@ 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:

11477
package-lock.json generated

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.0", "version": "2.0.21",
"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,13 +14,15 @@
"buildDocs": "tsdoc" "buildDocs": "tsdoc"
}, },
"devDependencies": { "devDependencies": {
"@gitzone/tsbuild": "^2.1.63", "@gitzone/tsbuild": "^2.1.65",
"@gitzone/tstest": "^1.0.71", "@gitzone/tsrun": "^1.2.39",
"@pushrocks/tapbundle": "^5.0.3", "@gitzone/tstest": "^1.0.74",
"@types/node": "^18.0.5" "@pushrocks/tapbundle": "^5.0.4",
"@types/node": "^18.15.11"
}, },
"dependencies": { "dependencies": {
"@apiglobal/typedrequest-interfaces": "^1.0.15" "@apiglobal/typedrequest-interfaces": "^2.0.1",
"@tsclass/tsclass": "^4.0.38"
}, },
"files": [ "files": [
"ts/**/*", "ts/**/*",

4464
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -21,7 +21,6 @@ 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
@ -35,7 +34,6 @@ 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.
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) ## Legal
> 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.checkRequests.IRequest_PageCheck_Assumption['request']['domain'] 'hi' as interfaces.requests.IRequest_CheckExchange['request']['checkCollection']['id']
); );
}); });

View File

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

View File

@ -0,0 +1,13 @@
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>;
}

View File

@ -0,0 +1,23 @@
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

@ -0,0 +1,15 @@
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[];
}>;
}

13
ts/data/checks/index.ts Normal file
View File

@ -0,0 +1,13 @@
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

@ -0,0 +1,19 @@
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

@ -0,0 +1,16 @@
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[];
};
}>;
}

31
ts/data/domainsnapshot.ts Normal file
View File

@ -0,0 +1,31 @@
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 +1,11 @@
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 };

29
ts/data/linksnapshot.ts Normal file
View File

@ -0,0 +1,29 @@
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;
}
};
}

10
ts/data/property.ts Normal file
View File

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

21
ts/data/search.ts Normal file
View File

@ -0,0 +1,21 @@
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[];
};
}

12
ts/data/status.ts Normal file
View File

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

View File

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

View File

@ -1,79 +1,16 @@
import { ICheckCollection } from '../data/checkcollection.js';
import * as plugins from '../ul-interfaces.plugins.js'; import * as plugins from '../ul-interfaces.plugins.js';
export type TCheckResultStatus = 'ok' | 'not ok' | 'timed out'; export interface IRequest_CheckExchange
export interface IRequest_PageCheck_PWA
extends plugins.typedRequestInterfaces.implementsTR< extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest, plugins.typedRequestInterfaces.ITypedRequest,
IRequest_PageCheck_PWA IRequest_CheckExchange
> { > {
method: 'pwa'; method: 'check';
request: { request: {
intervalMs: number; checkCollection: ICheckCollection;
domain: string;
}; };
response: { response: {
timeStarted: number; checkCollection: ICheckCollection;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: {
lhr: any;
reports: any[];
};
checkLog: string[];
};
}
export interface IRequest_PageCheck_Function
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IRequest_PageCheck_Function
> {
method: 'function';
request: {
intervalMs: number;
domain: string;
functionDef: string;
};
response: {
timeStarted: number;
timeEnded: number;
duration: number;
status: TCheckResultStatus;
data: any;
checkLog: string[];
};
}
export interface IRequest_PageCheck_Assumption
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IRequest_PageCheck_Assumption
> {
method: 'assumption';
request: {
intervalMs: number;
domain: string;
title?: string;
statusCode?: string;
description?: string;
dnsRecordMx?: string;
dnsRecordTxt?: string;
};
response: {
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

@ -0,0 +1,18 @@
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

@ -0,0 +1,17 @@
import * as plugins from '../ul-interfaces.plugins.js';
import * as data from '../data/index.js';
import { IStatus } from '../data/status.js';
export interface IRequest_Status_Get
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IRequest_Status_Get
> {
method: 'getStatus';
request: {
userToken?: string;
};
response: {
status: IStatus;
};
}

View File

@ -1,3 +1,8 @@
import * as typedRequestInterfaces from '@apiglobal/typedrequest-interfaces'; import * as typedRequestInterfaces from '@apiglobal/typedrequest-interfaces';
export { typedRequestInterfaces }; export { typedRequestInterfaces };
// tsclass scope
import * as tsclass from '@tsclass/tsclass';
export { tsclass };