Compare commits

...

104 Commits

Author SHA1 Message Date
e13236e10f 4.0.52 2024-02-17 20:54:54 +01:00
18d52a9018 fix(core): update 2024-02-17 20:54:53 +01:00
582b269d63 4.0.51 2024-02-13 01:08:22 +01:00
6293db82fd fix(core): update 2024-02-13 01:08:21 +01:00
eda528b6d9 4.0.50 2024-02-10 04:34:23 +01:00
4e52240ae7 fix(core): update 2024-02-10 04:34:22 +01:00
61b6835b31 4.0.49 2024-02-10 04:22:55 +01:00
48c65d726b fix(core): update 2024-02-10 04:22:54 +01:00
8b61ec02a2 4.0.48 2024-02-09 16:39:37 +01:00
90c3a9b3b4 fix(core): update 2024-02-09 16:39:37 +01:00
f25fb72924 4.0.47 2023-10-15 12:26:47 +02:00
995f7772ef fix(core): update 2023-10-15 12:26:46 +02:00
60a528aad4 4.0.46 2023-10-15 12:26:02 +02:00
310d60a84e fix(core): update 2023-10-15 12:26:01 +02:00
5fd5fc501f 4.0.45 2023-10-13 17:37:28 +02:00
bf79856f67 fix(core): update 2023-10-13 17:37:27 +02:00
b1025faa62 4.0.44 2023-10-13 17:31:29 +02:00
f22ec7d654 fix(core): update 2023-10-13 17:31:28 +02:00
585e9fd4b3 4.0.43 2023-09-13 13:31:30 +02:00
537c54b5f3 fix(core): update 2023-09-13 13:31:30 +02:00
2f95b5d2ef 4.0.42 2023-05-08 16:46:00 +02:00
c1f22e0cb1 fix(core): update 2023-05-08 16:45:59 +02:00
5c430fddfc 4.0.41 2023-05-08 15:05:52 +02:00
f9478aa3c2 fix(core): update 2023-05-08 15:05:52 +02:00
055b85c7c4 4.0.40 2023-05-06 21:21:02 +02:00
5730d87b0c fix(core): update 2023-05-06 21:21:01 +02:00
610fda5f36 4.0.39 2023-05-06 17:23:46 +02:00
e206405d70 fix(core): update 2023-05-06 17:23:46 +02:00
fdc63b0f4f 4.0.38 2023-04-19 21:06:51 +02:00
4307bb68a7 fix(core): update 2023-04-19 21:06:50 +02:00
5c60875d46 4.0.37 2023-04-19 21:03:08 +02:00
0a5443c646 fix(core): update 2023-04-19 21:03:08 +02:00
f38274e325 4.0.36 2023-04-05 14:30:31 +02:00
800123586e fix(core): update 2023-04-05 14:30:29 +02:00
bf37575140 4.0.35 2023-04-05 13:28:59 +02:00
c7420aba79 fix(core): update 2023-04-05 13:28:58 +02:00
3770b7dada 4.0.34 2023-03-14 11:55:33 +01:00
5b00b5d7e9 fix(core): update 2023-03-14 11:55:32 +01:00
e7d2eb5cab 4.0.33 2023-03-09 01:22:44 +01:00
b38a59f91a fix(core): update 2023-03-09 01:22:43 +01:00
f92abdfb4e 4.0.32 2023-03-09 01:21:06 +01:00
8bc0506b60 fix(core): update 2023-03-09 01:21:06 +01:00
8a690e5065 4.0.31 2023-02-15 20:19:25 +01:00
50b401db9b fix(core): update 2023-02-15 20:19:24 +01:00
96e86993bf 4.0.30 2023-02-06 16:16:29 +01:00
485ed3630d fix(core): update 2023-02-06 16:16:28 +01:00
9a6ffcbc03 4.0.29 2023-01-12 20:58:34 +01:00
d39d9c2a86 fix(core): update 2023-01-12 20:58:34 +01:00
3c67658a0e 4.0.28 2022-11-20 10:28:14 +01:00
e9d4a1641f fix(core): update 2022-11-20 10:28:14 +01:00
2cec65f8a0 4.0.27 2022-10-31 13:59:04 +01:00
d20073a2b0 fix(core): update 2022-10-31 13:59:03 +01:00
4563ba2404 4.0.26 2022-10-24 12:58:24 +02:00
62eeeecfef fix(core): update 2022-10-24 12:58:24 +02:00
c48c6a2d79 4.0.25 2022-10-24 10:10:53 +02:00
25d2bb077e fix(business.IContract): added contract logic 2022-10-24 10:10:52 +02:00
fee1e3cb58 4.0.24 2022-10-15 11:00:11 +02:00
66732c5f81 fix(core): update 2022-10-15 11:00:10 +02:00
62f78f0866 4.0.23 2022-10-15 10:51:42 +02:00
6bb30e4e5b fix(core): update 2022-10-15 10:51:42 +02:00
b0de29a26a 4.0.22 2022-10-15 10:51:25 +02:00
3363a12082 fix(core): update 2022-10-15 10:51:24 +02:00
b63ca0fd23 4.0.21 2022-09-14 09:40:03 +02:00
c95fd41f59 fix(core): update 2022-09-14 09:40:03 +02:00
38e5bd39d9 4.0.20 2022-09-14 08:43:55 +02:00
f978af4b4f fix(core): update 2022-09-14 08:43:54 +02:00
6f35eed240 4.0.19 2022-08-17 17:28:04 +02:00
636177b119 fix(core): update 2022-08-17 17:28:03 +02:00
05bd86a0ce 4.0.18 2022-08-17 15:46:43 +02:00
d4cc9f7843 fix(core): update 2022-08-17 15:46:42 +02:00
45e8460474 4.0.17 2022-06-16 12:25:27 +02:00
15bbb6ee22 fix(core): update 2022-06-16 12:25:26 +02:00
7bf736ec75 4.0.16 2022-06-15 22:37:40 +02:00
a43113860a fix(core): update 2022-06-15 22:37:40 +02:00
76cff5259b 4.0.15 2022-06-15 21:55:57 +02:00
34b49123e1 fix(core): update 2022-06-15 21:55:57 +02:00
ecf1b945b5 4.0.14 2022-06-15 21:29:39 +02:00
dd3182536e fix(core): update 2022-06-15 21:29:39 +02:00
5e8ab7012f 4.0.13 2022-06-15 01:17:47 +02:00
12a0a1402d fix(core): update 2022-06-15 01:17:47 +02:00
79c334da3b 4.0.12 2022-06-15 01:13:52 +02:00
5c71e8c97d fix(core): update 2022-06-15 01:13:51 +02:00
48b01b43ed 4.0.11 2022-06-15 01:11:42 +02:00
97d7b3cb61 fix(core): update 2022-06-15 01:11:41 +02:00
82d080a4f7 4.0.10 2022-06-15 00:44:08 +02:00
0c7875ca0d fix(core): update 2022-06-15 00:44:08 +02:00
e03fe0db7c 4.0.9 2022-06-14 23:09:58 +02:00
aa74f5d2e4 fix(core): update 2022-06-14 23:09:57 +02:00
55d5e89bb8 4.0.8 2022-06-12 19:29:28 +02:00
5838948117 fix(core): update 2022-06-12 19:29:27 +02:00
e5e3562eef 4.0.7 2022-06-11 12:56:39 +02:00
d081dc4b98 fix(core): update 2022-06-11 12:56:39 +02:00
ee9efae18d 4.0.6 2022-06-10 13:38:20 +02:00
df39fcbe37 fix(core): update 2022-06-10 13:38:20 +02:00
4ad0b3745e 4.0.5 2022-06-10 13:35:00 +02:00
7f53cb2f7f fix(core): update 2022-06-10 13:35:00 +02:00
59ca7e6c93 4.0.4 2022-06-10 13:31:18 +02:00
ba0237f9a7 fix(core): update 2022-06-10 13:31:18 +02:00
1609a2b65c 4.0.3 2022-06-05 16:44:48 +02:00
09f1496cf4 fix(core): update 2022-06-05 16:44:48 +02:00
5d96d25176 4.0.2 2022-04-28 14:25:21 +02:00
87a303f7be fix(core): update 2022-04-28 14:25:21 +02:00
34cb1384ea 4.0.1 2022-04-28 12:20:28 +02:00
d672b9973e fix(core): update 2022-04-28 12:20:27 +02:00
50 changed files with 6386 additions and 18999 deletions

View File

@ -13,31 +13,24 @@ stages:
- metadata
before_script:
- npm install -g @shipzone/npmci
- pnpm install -g pnpm
- pnpm install -g @shipzone/npmci
- npmci npm prepare
# ====================
# security stage
# ====================
mirror:
stage: security
script:
- npmci git mirror
only:
- tags
tags:
- lossless
- docker
- notpriv
# ====================
# security stage
# ====================
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
@ -45,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
@ -60,7 +52,6 @@ auditDevDependencies:
testStable:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci npm test
@ -71,7 +62,6 @@ testStable:
testBuild:
stage: test
script:
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command npm run build
@ -122,11 +112,9 @@ trigger:
pages:
stage: metadata
script:
- npmci node install lts
- npmci command npm install -g @gitzone/tsdoc
- npmci npm prepare
- npmci node install stable
- npmci npm install
- npmci command tsdoc
- npmci command npm run buildDocs
tags:
- lossless
- docker

21
license Normal file
View File

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

18916
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
{
"name": "@tsclass/tsclass",
"version": "4.0.0",
"version": "4.0.52",
"private": false,
"description": "common classes for TypeScript",
"main": "dist_ts/index.js",
@ -8,7 +8,8 @@
"type": "module",
"scripts": {
"test": "tstest test/",
"build": "(tsbuild --web)"
"build": "(tsbuild --web)",
"buildDocs": "tsdoc"
},
"repository": {
"type": "git",
@ -25,15 +26,14 @@
},
"homepage": "https://github.com/tsclass/tsclass#readme",
"dependencies": {
"type-fest": "^2.9.0"
"type-fest": "^4.10.2"
},
"devDependencies": {
"@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"
"@git.zone/tsbuild": "^2.1.72",
"@git.zone/tsrun": "^1.2.46",
"@git.zone/tstest": "^1.0.86",
"@push.rocks/tapbundle": "^5.0.15",
"@types/node": "^20.11.17"
},
"files": [
"ts/**/*",

5985
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
import { tap, expect } from '@pushrocks/tapbundle';
import { tap, expect } from '@push.rocks/tapbundle';
import * as tsclass from '../ts/index.js';

View File

@ -1,11 +1,8 @@
/**
* 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',
version: '4.0.52',
description: 'common classes for TypeScript'
}

View File

@ -0,0 +1,5 @@
import { type IInvoice } from "../finance/invoice.js";
export function createLetterFromInvoice(invoiceArg: IInvoice) {
}

View File

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

View File

@ -1,4 +1,4 @@
import { IClaim } from './claim';
import { type IClaim } from './claim.js';
export interface IProcessedClaim {
originalJWT: string;

View File

@ -10,6 +10,9 @@ export type TCompanyStatus = 'planed' | 'founding' | 'active' | 'liquidation' |
*/
export interface ICompany {
name: string;
slogan?: string;
description?: string;
logoLink?: string;
foundedDate: general.IDate;
closedDate: general.IDate;
status: business.TCompanyStatus;

View File

@ -1,3 +1,4 @@
import { finance } from '../index.js';
import { business } from '../index.js';
export type TContactSalutation = 'Mr' | 'Ms' | 'Mrs';
@ -33,8 +34,5 @@ export interface IContact {
// financial
// =========
vatId?: string;
sepaConnection?: {
iban: string;
bic: string;
};
sepaConnection?: finance.ISepaConnection;
}

20
ts/business/contract.ts Normal file
View File

@ -0,0 +1,20 @@
import * as database from '../database/index.js';
import { type IPerson } from './person.js';
export interface IContract {
parties: {
signingOrder: number;
referencedAs: string;
person: IPerson;
role: 'signer' | 'cc';
signature: {
given: boolean;
timestamp?: number;
location?: string;
ip?: string;
verifications?: [];
};
}[];
contractTextMarkdown: string;
actions: database.IObjectAction[];
}

View File

@ -1,5 +1,8 @@
export * from './address.js';
export * from './company.js';
export * from './contact.js';
export * from './job.js';
export * from './letter.js';
export * from './pdf.js';
export * from './person.js';
export * from './project.js';

18
ts/business/job.ts Normal file
View File

@ -0,0 +1,18 @@
import * as finance from '../finance/index.js';
import { type ICompany } from './company.js';
import { type IContact } from './contact.js';
export class IJob {
type: 'contract' | 'employment';
techTags?: string[];
qualificationTags?: string[];
languages?: {
name: string;
level: 'basic' | 'intermediate' | 'advanced' | 'native';
}[];
name: string;
description: string;
monthlyTotal: number;
currency: finance.TCurrency;
from: ICompany;
contact: IContact;
}

View File

@ -1,21 +1,35 @@
import * as business from './index.js';
import * as finance from '../finance/index.js';
import * as database from '../database/index.js';
export interface ILetter {
versionInfo: {
type: 'draft' | 'final';
/**
* should follow semVer
*/
version: string;
};
incidenceId: string;
type: 'invoice' | 'notice' | 'warning' | 'verification' | 'contract';
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;
logoUrl: string;
subject: string;
accentColor?: string;
needsCoverSheet: boolean;
content: {
textData: string[];
invoiceData?: finance.IInvoice;
contractData?: {
id: string;
contractDate: number;
};
timesheetData: string;
}
pdf?: business.IPdf;
pdfAttachments: business.IPdf[];
language: string;
objectActions: database.IObjectAction[];
}

8
ts/business/pdf.ts Normal file
View File

@ -0,0 +1,8 @@
export interface IPdf {
name: string;
id: string;
metadata: {
textExtraction: string;
};
buffer: ArrayBufferLike;
}

View File

@ -1,6 +1,12 @@
import { type IContact } from './contact.js';
export interface IPerson {
title: string;
name: string;
surname: string;
sex: 'male' | 'female' | 'queer';
legalProxyFor?: {
type: 'self' | 'other';
contact?: IContact;
};
}

18
ts/business/project.ts Normal file
View File

@ -0,0 +1,18 @@
export interface IProject {
active: boolean;
category: 'SaaS' | 'IaaS' | 'Media' | 'Blockchain' | 'Open Source' | 'Consulting' | 'internal' | 'partner';
branch?: null;
branchId? : string;
domain: string;
redirectDomains: string[];
gitlab: string;
name: string;
social: {
facebook?: string;
gitlab?: string;
github?: string;
twitter?: string;
};
tagLine: string;
tags: string[];
}

View File

@ -0,0 +1,5 @@
export interface ICommitInfo {
name: string;
version: string;
description: string;
}

View File

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

13
ts/code/statusobject.ts Normal file
View File

@ -0,0 +1,13 @@
export type TStatus = 'ok' | 'partly_ok' | 'not_ok';
export interface IStatusObject {
id?: string;
name: string;
combinedStatus?: TStatus;
combinedStatusText: string;
details: Array<{
name: string;
value: string;
status: TStatus;
statusText: string;
}>
}

View File

@ -1,5 +1,11 @@
import { content } from '../index.js';
/**
* a general content article:
* * can be news
* * can be a productdescription,
* * can be anything that has text with a title
*/
export interface IArticle<T = any> {
/**
* the main url of an article

View File

@ -1,5 +1,8 @@
import { general, content } from '../index.js';
/**
* answers the question "Who wrote that?"
*/
export interface IAuthor {
/**
* the first name of an author

View File

@ -0,0 +1,10 @@
import { type IArticle } from './article.js';
/**
* a set of articles that together form a body of documentation
*/
export interface IDocumentationSet {
id: string;
creationTimestamp: number;
articles: IArticle[];
}

View File

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

4
ts/database/index.ts Normal file
View File

@ -0,0 +1,4 @@
export * from './mongodescriptor.js';
export * from './objectaction.js';
export * from './objectstatus.js';
export * from './wrappeddata.js';

View File

@ -0,0 +1,25 @@
/**
* contains the complete info for how to connect to a mongodb database.
*/
export interface IMongoDescriptor {
/**
* the URL to connect to
*/
mongoDbUrl: string;
/**
* the db to use for the project
*/
mongoDbName?: string;
/**
* a username to use to connect to the database
*/
mongoDbUser?: string;
/**
* an optional password that will be replace <PASSWORD> in the connection string
*/
mongoDbPass?: string;
}

View File

@ -0,0 +1,8 @@
export interface IObjectAction {
timestamp: number;
name: string;
userId: string;
data: any;
message: string;
privateMessage: string;
}

View File

@ -0,0 +1,7 @@
export interface IObjectStatus {
current: 'active' | 'inactive' | 'hidden' | 'markedForDeletion';
scheduledDeletion: number;
justForLooks: {
scheduledDeletionIso: string;
};
}

View File

@ -0,0 +1,3 @@
export interface IWrappedData<T> {
data: T;
}

View File

@ -1,5 +1,5 @@
/**
* a constract event describes any kind of sale
* a contract event describes any kind of sale
*/
export interface IEvent_Contract {
contractId: string;

View File

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

View File

@ -1,4 +1,4 @@
import { business } from '../index.js';
import { business, finance } from '../index.js';
export type TInvoiceStatus = 'draft' | 'invoice' | 'paid' | 'refunded';
@ -34,4 +34,5 @@ export interface IInvoice {
items: IInvoiceItem[];
};
};
paymentOptions?: finance.IPaymentOptionInfo;
}

14
ts/finance/payment.ts Normal file
View File

@ -0,0 +1,14 @@
export interface ISepaConnection {
institution?: string;
iban: string;
bic: string;
}
export interface IPayPalConnection {
email: string;
}
export interface IPaymentOptionInfo {
sepaConnection: ISepaConnection;
payPal: IPayPalConnection;
}

View File

@ -1,15 +1,18 @@
// Business
import * as business from './business/index.js';
// Code
import * as code from './code/index.js';
// Container
import * as container from './container/index.js';
// Database
import * as database from './database/index.js';
// Finance
import * as finance from './finance/index.js';
// Code
import * as code from './code/index.js';
// Content
import * as content from './content/index.js';
@ -22,8 +25,15 @@ import * as network from './network/index.js';
// SaaS
import * as saas from './saas/index.js';
export { business, container, code, finance, content, general, network, saas };
// Storage
import * as storage from './storage/index.js';
// Website
import * as website from './website/index.js';
export { business, container, code, database, finance, content, general, network, saas, storage, website };
import type * as typeFest from 'type-fest';
import * as typeFestOwn from './typefest.own.js';
export { typeFest };
export { type typeFest, type typeFestOwn };

29
ts/network/cname.ts Normal file
View File

@ -0,0 +1,29 @@
import { type ICert } from "./cert.js";
export class ICnameDescriptor {
/**
* the original domain that is being cnamed
*/
cnamedDomain: string;
/**
* the cname proxy domain
* the domain that is used for the cname dns entry
*/
cnameProxyDomain: string;
/**
* the internal target url
*/
targetUrl: string;
/**
* a description
*/
description: string;
/**
* the ssl certificate
*/
sslCertificate?: ICert;
};

10
ts/network/device.ts Normal file
View File

@ -0,0 +1,10 @@
export interface IDevice {
id: string;
resolutionWidth?: number;
resolutionHeight?: number;
dpi?: number;
manufacturer?: string;
name?: string;
ipv4?: string;
ipv6?: string;
}

View File

@ -0,0 +1,31 @@
export interface IDomainDelegation {
/**
* only if it applis: the origininating url
*/
fullUrl: string;
/**
* the full domain name
*/
fullDomain: string;
/**
* the domain, meaning whats usually considered a domain like google.com
*/
domain: string;
/**
* the public suffix, meaning whats usually considered a public suffix like .com
*/
publicSuffix: string;
/**
* the domain without the public suffix
*/
domainWithoutSuffix: string;
/**
* the subdomain, meaning whats usually considered a subdomain like www
*/
subdomain: string;
isIcann?: boolean;
dnsSecEnabled?: boolean;
}

View File

@ -1,6 +1,11 @@
export * from './cert.js';
export * from './cname.js';
export * from './device.js';
export * from './dns.js';
export * from './dnschallenge.js';
export * from './domaindelegation.js';
export * from './jwt.js';
export * from './networknode.js';
export * from './request.js';
export * from './reverseproxy.js';
export * from './ssh.js';

4
ts/network/jwt.ts Normal file
View File

@ -0,0 +1,4 @@
export interface IJwtKeypair {
privatePem: string;
publicPem: string;
}

5
ts/network/ssh.ts Normal file
View File

@ -0,0 +1,5 @@
export interface ISshKey {
keyName: string;
public: string;
private?: string;
}

View File

@ -1 +1,14 @@
export interface IProduct {}
import { type ICompany } from "../business/company.js";
export interface IProduct {
name: string;
slogan: string;
description: string;
os: 'web-based',
category: 'Business Application',
offers: any[];
landingPage: string;
appLink: string;
logoLink: string;
publisher?: ICompany;
}

View File

@ -1,4 +1,4 @@
import { IProduct } from './product.js';
import { type IProduct } from './product.js';
export interface ISubscriptionPlan {
name: string;

7
ts/storage/index.ts Normal file
View File

@ -0,0 +1,7 @@
export interface IS3Descriptor {
endpoint: string;
port?: number;
useSsl?: boolean;
accessKey: string;
accessSecret: string;
}

8
ts/typefest.own.ts Normal file
View File

@ -0,0 +1,8 @@
type SecondArgument<T> = T extends (arg1: any, arg2: infer P, ...args: any[]) => any ? P : never;
type ValueType<T> = T extends { [key: string]: infer U } ? U : never;
export type {
SecondArgument,
ValueType
}

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

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

5
ts/website/menuitem.ts Normal file
View File

@ -0,0 +1,5 @@
export interface IMenuItem<T = any, U = any> {
name: string;
iconName?: string;
action: (optionsArg?: T) => Promise<U>;
}

View File

@ -4,6 +4,11 @@
"useDefineForClassFields": false,
"target": "ES2022",
"module": "ES2022",
"moduleResolution": "nodenext"
}
"moduleResolution": "nodenext",
"esModuleInterop": true,
"verbatimModuleSyntax": true
},
"exclude": [
"dist_*/**/*.d.ts"
]
}

View File

@ -1,17 +0,0 @@
{
"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"
}