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
before_script:
- npm install -g @shipzone/npmci
- pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
# ====================
# security stage
# ====================
@ -22,11 +27,10 @@ auditProductionDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- 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
- npmci command npm config set registry https://registry.npmjs.org
- npmci command pnpm audit --audit-level=high --prod
tags:
- lossless
- docker
allow_failure: true
@ -34,11 +38,10 @@ auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- 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:
- lossless
- docker
allow_failure: true
@ -49,7 +52,6 @@ auditDevDependencies:
testStable:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
@ -60,10 +62,9 @@ testStable:
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
- npmci npm build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- docker
@ -112,7 +113,6 @@ pages:
stage: metadata
script:
- npmci node install stable
- npmci npm prepare
- npmci npm install
- npmci command npm run buildDocs
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",
"version": "2.0.0",
"version": "2.0.21",
"private": false,
"description": "TypeScript interface for the uptime.link API and modules",
"main": "dist_ts/index.js",
@ -14,13 +14,15 @@
"buildDocs": "tsdoc"
},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.63",
"@gitzone/tstest": "^1.0.71",
"@pushrocks/tapbundle": "^5.0.3",
"@types/node": "^18.0.5"
"@gitzone/tsbuild": "^2.1.65",
"@gitzone/tsrun": "^1.2.39",
"@gitzone/tstest": "^1.0.74",
"@pushrocks/tapbundle": "^5.0.4",
"@types/node": "^18.15.11"
},
"dependencies": {
"@apiglobal/typedrequest-interfaces": "^1.0.15"
"@apiglobal/typedrequest-interfaces": "^2.0.1",
"@tsclass/tsclass": "^4.0.38"
},
"files": [
"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 (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)
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
@ -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.
> 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)
[![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 () => {
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 = {
name: '@uptime.link/interfaces',
version: '2.0.0',
version: '2.0.21',
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 './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 { checkRequests };
export * from './requests.checks.js';
export * from './requests.incidents.js';
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';
export type TCheckResultStatus = 'ok' | 'not ok' | 'timed out';
export interface IRequest_PageCheck_PWA
export interface IRequest_CheckExchange
extends plugins.typedRequestInterfaces.implementsTR<
plugins.typedRequestInterfaces.ITypedRequest,
IRequest_PageCheck_PWA
IRequest_CheckExchange
> {
method: 'pwa';
method: 'check';
request: {
intervalMs: number;
domain: string;
checkCollection: ICheckCollection;
};
response: {
timeStarted: number;
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[];
checkCollection: ICheckCollection;
};
}

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';
export { typedRequestInterfaces };
// tsclass scope
import * as tsclass from '@tsclass/tsclass';
export { tsclass };