Compare commits

...

76 Commits

Author SHA1 Message Date
d8e1609851 4.0.0 2022-04-28 12:18:27 +02:00
9302766e91 BREAKING CHANGE(core): switch to esm 2022-04-28 12:18:26 +02:00
318e9a2476 3.0.48 2022-01-14 06:12:27 +01:00
7434f8a6a4 fix(core): update 2022-01-14 06:12:27 +01:00
0f23c88a45 3.0.47 2022-01-14 05:59:06 +01:00
9ef38d21d7 fix(core): update 2022-01-14 05:59:05 +01:00
058c8cbfc2 3.0.46 2022-01-14 05:17:56 +01:00
9f1b5df136 fix(core): update 2022-01-14 05:17:55 +01:00
1862444da9 3.0.45 2022-01-14 04:54:35 +01:00
c69b595fd1 fix(core): update 2022-01-14 04:54:35 +01:00
c761c7aeae 3.0.44 2022-01-14 04:50:26 +01:00
bd17b4c94f fix(core): update 2022-01-14 04:50:25 +01:00
a71106dcae 3.0.43 2022-01-14 04:45:56 +01:00
32608912b6 fix(core): update 2022-01-14 04:45:56 +01:00
b3fbaff314 3.0.42 2022-01-14 04:32:03 +01:00
3a334418cc fix(core): update 2022-01-14 04:32:02 +01:00
759a19c731 3.0.41 2022-01-08 04:56:56 +01:00
0bb5ee7fac fix(core): update 2022-01-08 04:56:55 +01:00
d9327084a0 3.0.40 2022-01-08 04:20:36 +01:00
14af89dc8b fix(core): update 2022-01-08 04:20:35 +01:00
f1b62ce326 3.0.39 2022-01-08 04:19:18 +01:00
662909a84b fix(core): update 2022-01-08 04:19:18 +01:00
10c7111cbb 3.0.38 2022-01-08 02:29:24 +01:00
ae8c091f2d fix(core): update 2022-01-08 02:29:24 +01:00
2026a84865 3.0.37 2021-12-10 17:50:55 +01:00
6f0a8dcfac fix(core): update 2021-12-10 17:50:55 +01:00
7d148166c3 3.0.36 2021-11-07 03:17:52 +01:00
cd380c9791 fix(core): update 2021-11-07 03:17:51 +01:00
2a3236c2a6 3.0.35 2021-11-07 03:16:41 +01:00
cb556f71da fix(core): update 2021-11-07 03:16:41 +01:00
416aa9ee1e 3.0.34 2021-10-05 14:56:38 +02:00
3375f8aa4f fix(core): update 2021-10-05 14:56:37 +02:00
283e53fea3 3.0.33 2021-02-18 19:46:55 +00:00
ae396892bc fix(core): update 2021-02-18 19:46:55 +00:00
e292ec1de9 3.0.32 2021-02-15 21:36:27 +00:00
b1107a5945 fix(core): update 2021-02-15 21:36:26 +00:00
45149ff081 3.0.31 2021-02-15 21:31:01 +00:00
caef1047e4 fix(core): update 2021-02-15 21:31:01 +00:00
1b36f64e4c 3.0.30 2021-02-15 15:29:59 +00:00
3cabc47e51 fix(core): update 2021-02-15 15:29:58 +00:00
2c6a9d9fae 3.0.29 2020-10-31 10:53:14 +00:00
1ee8d36b68 fix(core): update 2020-10-31 10:53:14 +00:00
d6351421b3 3.0.28 2020-10-31 10:52:33 +00:00
d8ae73007a fix(core): update 2020-10-31 10:52:33 +00:00
9a63a9197b 3.0.27 2020-10-29 17:32:46 +00:00
07d5665deb fix(core): update 2020-10-29 17:32:45 +00:00
9a14f7e356 3.0.26 2020-10-29 11:40:14 +00:00
600ca80d33 fix(core): update 2020-10-29 11:40:14 +00:00
c6a9893ce1 3.0.25 2020-08-24 15:51:52 +00:00
ea60921761 fix(core): update 2020-08-24 15:51:51 +00:00
fef1ddcd93 3.0.24 2020-08-18 14:59:34 +00:00
c54db0d9a8 fix(core): update 2020-08-18 14:59:34 +00:00
5120d9b9bd 3.0.23 2020-08-18 14:46:00 +00:00
2e40bc20df fix(core): update 2020-08-18 14:45:59 +00:00
f64721addc 3.0.22 2020-08-18 14:39:16 +00:00
17cc1c646a fix(core): update 2020-08-18 14:39:15 +00:00
2a92733329 3.0.21 2020-08-04 09:38:50 +00:00
6d0993d381 fix(CI): should now test merge requests with public GitLab.com runners 2020-08-04 09:38:49 +00:00
5724d96f23 3.0.20 2020-07-23 08:29:29 +00:00
70fc60d865 fix(core): update 2020-07-23 08:29:28 +00:00
e21d6dabe1 3.0.19 2020-07-23 05:36:55 +00:00
335717a025 fix(core): update 2020-07-23 05:36:55 +00:00
69afa1dfcb 3.0.18 2020-06-26 20:20:44 +00:00
b2e11c9841 fix(core): update 2020-06-26 20:20:43 +00:00
69cb421ad1 3.0.17 2020-03-25 20:12:10 +00:00
c7f210a526 fix(core): update 2020-03-25 20:12:09 +00:00
7c3976d169 3.0.16 2020-03-25 11:40:26 +00:00
6f92823f56 fix(core): update 2020-03-25 11:40:26 +00:00
dac8ca4be5 3.0.15 2020-03-25 11:40:11 +00:00
a227973238 fix(core): update 2020-03-25 11:40:10 +00:00
2307e01c81 3.0.14 2020-03-24 23:13:01 +00:00
852626457f fix(core): update 2020-03-24 23:13:01 +00:00
ce8708266f 3.0.13 2020-03-22 22:21:48 +00:00
4027eedf64 fix(core): update 2020-03-22 22:21:47 +00:00
14314ee394 3.0.12 2020-03-06 14:23:04 +00:00
44b849bf86 fix(core): update 2020-03-06 14:23:04 +00:00
39 changed files with 17560 additions and 1865 deletions

4
.gitignore vendored
View File

@ -15,8 +15,6 @@ node_modules/
# builds
dist/
dist_web/
dist_serve/
dist_ts_web/
dist_*/
# custom

View File

@ -12,6 +12,9 @@ stages:
- release
- metadata
before_script:
- npm install -g @shipzone/npmci
# ====================
# security stage
# ====================
@ -19,22 +22,36 @@ mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
snyk:
image: registry.gitlab.com/hosttoday/ht-docker-node:snyk
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
tags:
- docker
allow_failure: true
auditDevDependencies:
image: registry.gitlab.com/hosttoday/ht-docker-node:npmci
stage: security
script:
- npmci npm prepare
- npmci command npm install --ignore-scripts
- npmci command snyk test
- npmci command npm config set registry https://registry.npmjs.org
- npmci command npm audit --audit-level=high --only=dev
tags:
- lossless
- docker
- notpriv
allow_failure: true
# ====================
# test stage
@ -49,9 +66,7 @@ testStable:
- npmci npm test
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- priv
testBuild:
stage: test
@ -62,9 +77,7 @@ testBuild:
- npmci command npm run build
coverage: /\d+.?\d+?\%\s*coverage/
tags:
- lossless
- docker
- notpriv
release:
stage: release
@ -84,11 +97,12 @@ release:
codequality:
stage: metadata
allow_failure: true
only:
- tags
script:
- npmci command npm install -g tslint typescript
- npmci command npm install -g typescript
- npmci npm prepare
- npmci npm install
- npmci command "tslint -c tslint.json ./ts/**/*.ts"
tags:
- lossless
- docker

24
.vscode/launch.json vendored
View File

@ -2,28 +2,10 @@
"version": "0.2.0",
"configurations": [
{
"name": "current file",
"type": "node",
"command": "npm test",
"name": "Run npm test",
"request": "launch",
"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"
"type": "node-terminal"
}
]
}

View File

@ -15,7 +15,7 @@
"properties": {
"projectType": {
"type": "string",
"enum": ["website", "element", "service", "npm"]
"enum": ["website", "element", "service", "npm", "wcc"]
}
}
}

21
LICENSE
View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2016
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -9,7 +9,7 @@
"githost": "gitlab.com",
"gitscope": "tsclass",
"gitrepo": "tsclass",
"shortDescription": "common classes for TypeScript",
"description": "common classes for TypeScript",
"npmPackagename": "@tsclass/tsclass",
"license": "MIT"
}

19034
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
{
"name": "@tsclass/tsclass",
"version": "3.0.11",
"version": "4.0.0",
"private": false,
"description": "common classes for TypeScript",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
"main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts",
"type": "module",
"scripts": {
"test": "tstest test/",
"build": "tsbuild"
"build": "(tsbuild --web)"
},
"repository": {
"type": "git",
@ -24,24 +25,29 @@
},
"homepage": "https://github.com/tsclass/tsclass#readme",
"dependencies": {
"@pushrocks/tapbundle": "^3.0.13"
"type-fest": "^2.9.0"
},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.17",
"@gitzone/tsrun": "^1.2.8",
"@gitzone/tstest": "^1.0.27",
"tslint": "^5.20.0",
"@gitzone/tsbuild": "^2.1.61",
"@gitzone/tsrun": "^1.2.32",
"@gitzone/tstest": "^1.0.70",
"@pushrocks/tapbundle": "^3.2.15",
"tslint": "^6.1.3",
"tslint-config-prettier": "^1.18.0"
},
"files": [
"ts/**/*",
"ts_web/**/*",
"dist/**/*",
"dist_web/**/*",
"dist_*/**/*",
"dist_ts/**/*",
"dist_ts_web/**/*",
"assets/**/*",
"cli.js",
"npmextra.json",
"readme.md"
],
"browserslist": [
"last 1 chrome versions"
]
}

View File

@ -8,13 +8,20 @@ common classes for TypeScript
* [docs (typedoc)](https://tsclass.gitlab.io/tsclass/)
## Status for master
[![pipeline status](https://gitlab.com/tsclass/tsclass/badges/master/pipeline.svg)](https://gitlab.com/tsclass/tsclass/commits/master)
[![coverage report](https://gitlab.com/tsclass/tsclass/badges/master/coverage.svg)](https://gitlab.com/tsclass/tsclass/commits/master)
[![npm downloads per month](https://img.shields.io/npm/dm/@tsclass/tsclass.svg)](https://www.npmjs.com/package/@tsclass/tsclass)
[![Known Vulnerabilities](https://snyk.io/test/npm/@tsclass/tsclass/badge.svg)](https://snyk.io/test/npm/@tsclass/tsclass)
[![TypeScript](https://img.shields.io/badge/TypeScript->=%203.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![node](https://img.shields.io/badge/node->=%2010.x.x-blue.svg)](https://nodejs.org/dist/latest-v10.x/docs/api/)
[![JavaScript Style Guide](https://img.shields.io/badge/code%20style-prettier-ff69b4.svg)](https://prettier.io/)
Status Category | Status Badge
-- | --
GitLab Pipelines | [![pipeline status](https://gitlab.com/tsclass/tsclass/badges/master/pipeline.svg)](https://lossless.cloud)
GitLab Pipline Test Coverage | [![coverage report](https://gitlab.com/tsclass/tsclass/badges/master/coverage.svg)](https://lossless.cloud)
npm | [![npm downloads per month](https://badgen.net/npm/dy/@tsclass/tsclass)](https://lossless.cloud)
Snyk | [![Known Vulnerabilities](https://badgen.net/snyk/tsclass/tsclass)](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/)
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/@tsclass/tsclass)](https://lossless.cloud)
PackagePhobia (package size on registry) | [![PackagePhobia](https://badgen.net/packagephobia/publish/@tsclass/tsclass)](https://lossless.cloud)
BundlePhobia (total size when bundled) | [![BundlePhobia](https://badgen.net/bundlephobia/minzip/@tsclass/tsclass)](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

View File

@ -1,6 +1,6 @@
import { tap, expect } from '@pushrocks/tapbundle';
import * as tsclass from '../ts/index';
import * as tsclass from '../ts/index.js';
tap.test('should assign a correct type', async () => {
let contact: tsclass.business.IContact;

11
ts/00_commitinfo_data.ts Normal file
View File

@ -0,0 +1,11 @@
/**
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const name: string = '@tsclass/tsclass';
export const version: string = '4.0.48';
export const description: string = 'common classes for TypeScript'
export const commitinfo = {
name: '@tsclass/tsclass',
version: '4.0.48',
description: 'common classes for TypeScript'
}

View File

@ -0,0 +1,6 @@
export interface IClaim {
userName: string;
userId: string;
validUntil: number;
roles: string[];
}

View File

@ -0,0 +1,2 @@
export * from './claim.js';
export * from './processedclaim.js';

View File

@ -0,0 +1,7 @@
import { IClaim } from './claim';
export interface IProcessedClaim {
originalJWT: string;
claim: IClaim;
signed: boolean;
}

View File

@ -1,4 +1,4 @@
import { business, general } from '..';
import { business, general } from '../index.js';
/**
* describes a company's lifecycle state

View File

@ -1,4 +1,4 @@
import { business } from '..';
import { business } from '../index.js';
export type TContactSalutation = 'Mr' | 'Ms' | 'Mrs';
@ -19,9 +19,13 @@ export interface IContact {
address: business.IAddress;
description: string;
customerNumber?: string;
email?: string;
logoUrl?: string;
website?: string;
facebookUrl?: string;
twitterUrl?: string;
phone?: string;
fax?: string;
@ -29,5 +33,8 @@ export interface IContact {
// financial
// =========
vatId?: string;
bankAccountNumber?: string;
sepaConnection?: {
iban: string;
bic: string;
};
}

View File

@ -1,4 +1,5 @@
export * from './address';
export * from './company';
export * from './contact';
export * from './person';
export * from './address.js';
export * from './company.js';
export * from './contact.js';
export * from './letter.js';
export * from './person.js';

21
ts/business/letter.ts Normal file
View File

@ -0,0 +1,21 @@
import * as business from './index.js';
import * as finance from '../finance/index.js';
export interface ILetter {
incidenceId: string;
date: number;
from: business.IContact;
to: business.IContact;
logoUrl: string;
accentColor: string;
subject: string;
text: string[];
invoiceData?: finance.IInvoice;
contractData?: {
id: string;
contractDate: number;
};
timesheetData: string;
pdfAttachments: Uint8Array[];
legalContact: business.IContact;
language: string;
}

0
ts/code/commitinfo.ts Normal file
View File

1
ts/code/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './commitinfo.js';

View File

@ -1,5 +1,9 @@
export interface IContainer {
registryUrl: string;
tag: string;
/**
* version is usually derived from labels
*/
version: string;
labels: string[];
}

View File

@ -1 +1,2 @@
export * from './container';
export * from './container.js';
export * from './volumemount.js';

View File

@ -0,0 +1,4 @@
export interface IVolumeMount {
hostFsPath: string;
containerFsPath: string;
}

View File

@ -1,6 +1,18 @@
import { content } from '..';
import { content } from '../index.js';
export interface IArticle<T = any> {
/**
* the main url of an article
*/
url?: string;
/**
* the mainimage of the article
*/
featuredImageUrl?: string;
referenceObject?: T;
export interface IArticle {
/**
* the title of an article
*/
@ -16,6 +28,11 @@ export interface IArticle {
*/
content: string;
/**
* a timestamp for when the article was written
*/
timestamp: number;
/**
* the tags of an article
*/

View File

@ -1,4 +1,4 @@
import { general, content } from '..';
import { general, content } from '../index.js';
export interface IAuthor {
/**

View File

@ -1,2 +1,2 @@
export * from './article';
export * from './author';
export * from './article.js';
export * from './author.js';

View File

@ -1,6 +1,6 @@
export * from './contractevent';
export * from './moneyevent';
export * from './releaseevent';
export * from './requestevent';
export * from './sessionevent';
export * from './userevent';
export * from './contractevent.js';
export * from './moneyevent.js';
export * from './releaseevent.js';
export * from './requestevent.js';
export * from './sessionevent.js';
export * from './userevent.js';

View File

@ -1,7 +1,7 @@
import { finance } from '../';
import { finance } from '../index.js';
export interface ICheckingAccount {
name: string;
currency: finance.TCurrency;
transactions: finance.ITransaction[];
transactions?: finance.ITransaction[];
}

View File

@ -1,4 +1,4 @@
import { business } from '../';
import { business } from '../index.js';
export interface IExpenseItem {
description: string;

View File

@ -1,5 +1,5 @@
export * from './checkingaccount';
export * from './currency';
export * from './expense';
export * from './invoice';
export * from './transaction';
export * from './checkingaccount.js';
export * from './currency.js';
export * from './expense.js';
export * from './invoice.js';
export * from './transaction.js';

View File

@ -1,17 +1,37 @@
import { business } from '..';
import { business } from '../index.js';
export type TInvoiceStatus = 'draft' | 'invoice' | 'paid' | 'refunded';
export interface IInvoiceItem {
name: string;
articleNumber?: string;
unitType: string;
quantity: number;
unitQuantity: number;
unitNetPrice: number;
vatPercentage: number;
currency: 'EUR';
}
export interface IInvoice {
id: string;
billedBy: business.IContact;
billedTo: business.IContact;
status: TInvoiceStatus;
items: IInvoiceItem[];
periodOfPerformance?: {
from: number;
to: number;
};
deliveryDate?: number;
dueInDays: number;
reverseCharge: boolean;
printResult?: {
pdfBufferString: string;
totalNet: number;
totalGross: number;
vatGroups: {
percentage: number;
items: IInvoiceItem[];
};
};
}

View File

@ -1,2 +1,2 @@
export * from './date';
export * from './time';
export * from './date.js';
export * from './time.js';

View File

@ -1,19 +1,29 @@
// Business
import * as business from './business';
import * as business from './business/index.js';
// Container
import * as container from './container';
import * as container from './container/index.js';
// Finance
import * as finance from './finance';
import * as finance from './finance/index.js';
// Code
import * as code from './code/index.js';
// Content
import * as content from './content';
import * as content from './content/index.js';
// General
import * as general from './general';
import * as general from './general/index.js';
// Network
import * as network from './network';
import * as network from './network/index.js';
export { business, container, finance, content, general, network };
// SaaS
import * as saas from './saas/index.js';
export { business, container, code, finance, content, general, network, saas };
import type * as typeFest from 'type-fest';
export { typeFest };

View File

@ -1,5 +1,6 @@
export * from './cert';
export * from './dns';
export * from './dnschallenge';
export * from './networknode';
export * from './reverseproxy';
export * from './cert.js';
export * from './dns.js';
export * from './dnschallenge.js';
export * from './networknode.js';
export * from './request.js';
export * from './reverseproxy.js';

26
ts/network/request.ts Normal file
View File

@ -0,0 +1,26 @@
export interface ISimpleRequest {
headers: {};
parsedUrl: {
hash: string;
host: string;
hostname: string;
href: string;
readonly origin: string;
password: string;
pathname: string;
port: string;
protocol: string;
search: string;
readonly searchParams: any;
username: string;
toString: () => string;
toJSON: () => string;
};
body?: string | object | Buffer;
}
export interface ISimpleResponse {
headers: { [key: string]: string };
body: string;
}
export type IRenderFunction = (req: ISimpleRequest) => Promise<ISimpleResponse>;

2
ts/saas/index.ts Normal file
View File

@ -0,0 +1,2 @@
export * from './subscriptionplan.js';
export * from './product.js';

1
ts/saas/product.ts Normal file
View File

@ -0,0 +1 @@
export interface IProduct {}

View File

@ -0,0 +1,14 @@
import { IProduct } from './product.js';
export interface ISubscriptionPlan {
name: string;
unit: 'device' | 'user';
quantity: boolean;
availableTerms: {
period: 'daily' | 'weekly' | 'monthly' | 'yearly';
price: number;
currency: 'EUR' | 'USD';
}[];
containedProducts: IProduct[];
limits: any;
}

9
tsconfig.json Normal file
View File

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