backend & types

This commit is contained in:
2024-01-27 18:58:35 +00:00
parent 1766b49268
commit 7d8a07e8c4
863 changed files with 5211 additions and 12778 deletions

View File

@@ -1,34 +0,0 @@
## bcrypt
Das BcryptPackage-Interface bietet Funktionen zur Passworthashing und -überprüfung mit dem bcrypt-Algorithmus. Es beinhaltet folgende Methoden:
- `hash(password: string, options?: {}: string`:
Diese Methode nimmt ein Klartextpasswort und optionale Hashing-Optionen entgegen und gibt das gehashte Passwort zurück. Die Optionen können den "cost"-Parameter steuern, der die Komplexität des Hashings bestimmt.
- `check(password: string, hash: string): boolean`:
Diese Methode nimmt ein Klartextpasswort und ein gehashtes Passwort entgegen und gibt zurück, ob das Klartextpasswort nach dem Hashing mit dem gehashten Passwort übereinstimmt.
```ts
interface BcryptPackage {
/**
* hash password via bcrypt algo
*
* @param password clear text password
* @param options hashing options
*/
hash(
password: string,
options?: {
cost?: number
}
): string
/**
* check password against hashed password via bcrypt algo
*
* @param password clear text password
* @param hash hashed password
*/
check(password: string, hash: string): boolean
}
```

View File

@@ -1,17 +0,0 @@
## charset
Das CharsetPackage-Interface bietet Funktionen zur Zeichensatzkonvertierung. Es enthält folgende Methode:
- `iso8859ToUtf8(iso8859: string): string`:
Diese Methode nimmt einen String im ISO-8859-Zeichensatz entgegen und konvertiert ihn in den UTF-8-Zeichensatz. Dies kann verwendet werden, um Kompatibilität zwischen verschiedenen Systemen und Standards zu gewährleisten.
```ts
interface CharsetPackage {
/**
* convert iso8859 to utf8
*
* @param iso8859 iso string
*/
iso8859ToUtf8(iso8859: string): string
}
```

View File

@@ -1,39 +0,0 @@
## cookie
Das CookiePackage-Interface bietet Funktionen zur Verwaltung von HTTP-Cookies. Es beinhaltet folgende Methoden:
- `get(name: string): string`:
Diese Methode nimmt den Namen eines Cookies entgegen und gibt den Wert dieses Cookies zurück.
- `set(name: string, value: string, options?: {}): void`:
Diese Methode nimmt den Namen und den Wert eines Cookies sowie optionale Cookie-Optionen entgegen und setzt das Cookie. Die Optionen können das Ablaufdatum, den Pfad, die Domain und die Secure- und HttpOnly-Flags steuern.
```ts
interface CookiePackage {
/**
* get cookie from http header
*
* @param name cookie name
*/
get(name: string): string
/**
* set cookie via http header
*
* @param name cookie name
* @param value cookie value
* @param options cookie options
*/
set(
name: string,
value: string,
options?: {
maxAge?: number
path?: string
domain?: string
secure?: boolean
httpOnly?: boolean
}
): void
}
```

View File

@@ -1,87 +0,0 @@
## db
Das Database (Db) Paket stellt Methoden bereit, um Operationen auf einer Datenbank auszuführen. Es umfasst die folgenden Hauptmethoden:
- `find(colName: string, options?: DbReadOptions): CollectionDocument[]`:
Diese Methode ermöglicht das Suchen von Dokumenten in einer bestimmten Sammlung basierend auf den bereitgestellten Optionen.
- `count(colName: string, options?: DbReadOptions): number`:
Diese Methode gibt die Anzahl der Dokumente in einer bestimmten Sammlung zurück, die den Optionen entsprechen.
- `update(colName: string, id: string, data: CollectionDocument): CollectionDocument:`:
Diese Methode aktualisiert das Dokument in einer bestimmten Sammlung, welches die angegebene ID besitzt.
- `delete(colName: string, id: string): { message: "ok" }:`:
Diese Methode entfernt ein Dokument aus einer bestimmten Sammlung, das die angegebene ID besitzt.
- `deleteMany(colName: string, options?: DbReadOptions): { message: "ok"; removed: number }:`
Diese Methode entfernt mehrere Dokumente aus einer bestimmten Sammlung, die den bereitgestellten Optionen entsprechen.
- `create(colName: string, data: CollectionDocument): CollectionDocument`
Diese Methode fügt ein neues Dokument in eine bestimmte Sammlung ein.
```ts
interface DbPackage {
/**
* read results from a collection
*
* @param colName collection name
* @param options options map
*/
find(colName: string, options?: DbReadOptions): CollectionDocument[]
/**
* read count of documents for filter from a collection
*
* @param colName collection name
* @param options options map (only filter is valid)
*/
count(colName: string, options?: DbReadOptions): number
/**
* create a document in a collection
*
* @param colName collection name
* @param data data map
*/
create(colName: string, data: CollectionDocument): CollectionDocument
/**
* update a document in a collection
*
* @param colName collection name
* @param id id of entry
* @param data new/changed data
*/
update(colName: string, id: string, data: CollectionDocument): CollectionDocument
/**
* deletes one document by id from collection
*
* @param colName collection name
* @param id id of entry
*/
delete(colName: string, id: string): { message: "ok" }
/**
* deletes documents by filter from collection
*
* @param colName collection name
* @param options options map, only filter valid
*/
deleteMany(colName: string, options?: DbReadOptions): { message: "ok"; removed: number }
}
interface DbReadOptions {
filter?: {
[key: string]: any
}
selector?: {
[key: string]: any
}
projection?: string
offset?: number
limit?: number
sort?: string[]
pipelineMod?: (pipe: { [key: string]: any }[]) => { [key: string]: any }[]
}
```

View File

@@ -1,25 +0,0 @@
## debug
Das DebugPackage-Interface bietet Funktionen zur Fehlersuche. Es enthält folgende Methoden:
- `dump(...toDump): any`:
void: Diese Methode nimmt eine oder mehrere Datenvariablen entgegen und schreibt diese Daten sowohl in den Server-Log als auch in den Header. Dies kann zur Fehlersuche und -behebung verwendet werden.
- `sentryTraceId(): string`:
Diese Methode gibt die ID des aktuellen Sentry-Trace zurück, der zur Überwachung und Nachverfolgung von Fehlern verwendet werden kann.
```ts
interface DebugPackage {
/**
* dumps data to header and server log
*
* @param toDump data to dump
*/
dump(...toDump: any): void
/**
* get Sentry trace id
*/
sentryTraceId(): string
}
```

View File

@@ -1,93 +0,0 @@
## fs
Das FsPackage-Interface bietet Funktionen zur Datei- und Verzeichnisverwaltung. Es beinhaltet folgende Methoden:
- `configDir(): string`:
Diese Methode gibt den Pfad zum Verzeichnis der API-Konfigurationsdatei zurück.
- `readFile(path: string, options?: {}): string | any`:
Diese Methode nimmt einen relativen Pfad zu einer Datei und optionale Leseoptionen entgegen und gibt den Inhalt dieser Datei zurück. Die Optionen können steuern, ob der Inhalt als Byte-Array oder als Zeichenkette zurückgegeben wird.
- `writeFile(path: string, data: string | any): null`:
Diese Methode nimmt einen relativen Pfad zu einer Datei und Daten entgegen und schreibt diese Daten in die Datei.
- `stat(path: string): {}`:
Diese Methode nimmt einen Pfad zu einer Datei oder einem Verzeichnis entgegen und gibt Informationen über diese Datei oder dieses Verzeichnis zurück.
- `readDir(path: string): {}[]`:
Diese Methode nimmt einen Pfad zu einem Verzeichnis entgegen und gibt eine Liste der darin enthaltenen Dateien und Verzeichnisse zurück.
- `mkDir(path: string): void`:
Diese Methode nimmt einen Pfad entgegen und erstellt an diesem Ort ein neues Verzeichnis.
- `remove(path: string): void`:
Diese Methode nimmt einen Pfad entgegen und löscht die Datei oder das leere Verzeichnis an diesem Pfad.
```ts
interface FsPackage {
/**
* get directory path of api config file
*
*/
configDir(): string
/**
* read a file relative to config dir and return its content
*
* @param path relative file path
* @param options optional options
*/
readFile(
path: string,
options?: {
bytes: boolean // if true return []byte instead of string
}
): string | any
/**
* write data to a file relative to config dir
*
* @param path relative file path
* @param data string or []byte data
*/
writeFile(path: string, data: string | any): null
/**
* stat file or directory
*
* @param path
*/
stat(path: string): {
name: string
size: number
isDir: boolean
modTime: string
}
/**
* list directory entries
*
* @param path
*/
readDir(path: string): {
name: string
size: number
isDir: boolean
modTime: string
}[]
/**
* make directory and all missing sub directories, no error if directory already exists
*
* @param path
*/
mkDir(path: string): void
/**
* remove file or empty directory
*
* @param path
*/
remove(path: string): void
}
```

View File

@@ -1,37 +0,0 @@
## http
Das HttpPackage-Interface bietet Funktionen zum Senden von HTTP-Anfragen. Es enthält die folgende Methode:
- `fetch(url: string, options?: {}): {}`:
Diese Methode nimmt eine URL und optionale Anforderungsoptionen entgegen und sendet eine HTTP-Anfrage an die angegebene URL. Die Optionen können die HTTP-Methode, Header, den Body und das Timeout steuern. Die Methode gibt ein Objekt zurück, das den Status, den StatusText, die Header, den Trailer, die URL und den Body der Antwort enthält.
```ts
interface HttpPackage {
/**
* http request
*
* @param url url for request
* @param options request options
*/
fetch(
url: string,
options?: {
method?: string
headers?: { [key: string]: string }
body?: string
// timeout in seconds
timeout?: number
}
): {
status: number
statusText: string
headers: { [key: string]: string }
trailer: { [key: string]: string }
url: string
body: {
text(): string
json(): any
}
}
}
```

View File

@@ -1,39 +0,0 @@
## image
ImagePackage Interface
Das ImagePackage-Interface bietet Funktionen zur Bildmanipulation. Es enthält folgende Methode:
- `filter(sourceFile: string, targetFile: string, filters: {}[]): void`:
Diese Methode nimmt den Pfad zur Quellbilddatei, den Pfad zur Zieldatei und eine Reihe von Filtern entgegen und wendet diese Filter auf das Bild an. Die Filter können Aspekte des Bildes wie Größe, Helligkeit, Sättigung, Kontrast, Gamma, Unschärfe, Schärfe, Inversion, Graustufen und Qualität steuern.
```ts
interface ImagePackage {
/**
* convert image from source file to target file with filters
*
* @param sourceFile
* @param targetFile
* @param filters
*/
filter(
sourceFile: string,
targetFile: string,
filters: {
fit?: boolean
fill?: boolean
width?: number
height?: number
brightness?: number
saturation?: number
contrast?: number
gamma?: number
blur?: number
sharpen?: number
invert?: boolean
grayscale?: boolean
quality?: number
}[]
): void
}
```

View File

@@ -1,59 +0,0 @@
## jwt
JwtPackage Interface
Das JwtPackage-Interface bietet Funktionen zum Erstellen und Analysieren von JWT (JSON Web Token). Es enthält folgende Methoden:
- `create(claims: { [key: string]: any }, options?: { secret?: string, validityDuration?: number }): string`:
Diese Methode nimmt ein claims-Objekt und optionale Einstellungen entgegen und gibt einen signierten JWT-String zurück. Mit dieser Methode können Sie JWTs erstellen, die Daten enthalten und mit einem geheimen Schlüssel signiert sind.
- `parse(token: string, options?: { secret?: string }): { error?: string, valid: boolean, method: { Name: string, Hash: number }, header: { alg: string, typ: string }, claims: { exp?: number, [key: string]: any } }`:
Diese Methode nimmt einen JWT-String und Einstellungen entgegen, welche den Token secret beeinhalten, und gibt ein Objekt zurück, das Informationen über den Token enthält. Mit dieser Methode können Sie JWTs analysieren und die in ihnen enthaltenen Daten extrahieren.
```ts
interface JwtPackage {
/**
* create a jwt signed token string
*
* @param claims data object
* @param options options (secret, validityDuration = expiry in X seconds)
*/
create(
claims: {
[key: string]: any
},
options?: {
secret?: string
validityDuration?: number
}
): string
/**
* parse jwt token string
*
* @param token token string
* @param options options (secret)
*/
parse(
token: string,
options?: {
secret?: string
}
): {
error?: string
valid: boolean
method: {
Name: string
Hash: number
}
header: {
alg: string
typ: string
}
claims: {
exp?: number
[key: string]: any
}
}
}
```

View File

@@ -1,113 +0,0 @@
## pdf
PdfPackage Interface
Das PdfPackage-Interface bietet Funktionen zur Erzeugung und Manipulation von PDF-Dateien. Es enthält folgende Methoden:
- `fromHTML(html: string, options?: {}): an`:
Diese Methode nimmt einen HTML-String und optionale Einstellungen entgegen und gibt die binären Daten eines PDF-Dokuments zurück. Mit dieser Methode können Sie ein PDF-Dokument aus HTML-Inhalten erstellen. Die optionalen Einstellungen ermöglichen es Ihnen, verschiedene Aspekte des PDF-Dokuments zu steuern, einschließlich der Ausrichtung, Seitengröße, Ränder, Kopf- und Fußzeilen und vieles mehr.
- `cpu(command: "watermark" | "stamp" | "merge" | "rotate" | "create", pdfData: any | any[], options?: {}): any`:
Diese Methode nimmt einen Befehl, PDF-Daten und optionale Einstellungen entgegen und gibt die binären Daten eines neuen PDF-Dokuments zurück. Mit dieser Methode können Sie verschiedene Operationen auf einem oder mehreren PDF-Dokumenten durchführen, einschließlich:
- `watermark`: Fügen Sie ein Wasserzeichen zum PDF hinzu.
- `stamp`: Fügen Sie einen Stempel zum PDF hinzu.
- `merge`: Kombinieren Sie mehrere PDF-Dokumente zu einem.
- `rotate`: Drehen Sie Seiten im PDF.
- `create`: Erstellen Sie ein neues PDF.
Die pdfData-Parameter können die binären Daten eines einzelnen PDF-Dokuments, ein Array von PDF-Dokumenten (zum Zusammenführen) oder ein Objekt mit einer Beschreibung (zum Erstellen) enthalten. Die optionalen Einstellungen variieren je nach Befehl und ermöglichen es Ihnen, verschiedene Aspekte der Operation zu steuern.
```ts
interface PdfPackage {
/**
* generate pdf from html
*
* @param html html string
* @param options options
*
* @returns []byte of pdf data
*/
fromHTML(
html: string,
options?: {
copies?: number // Number of copies to print into the pdf file (default 1)
dpi?: number // Change the dpi explicitly (this has no effect on X11 based systems)
grayscale?: boolean // PDF will be generated in grayscale
imageDpi?: number // When embedding images scale them down to this dpi (default 600)
imageQuality?: number // When jpeg compressing images use this quality (default 94)
lowQuality?: boolean // Generates lower quality pdf/ps. Useful to shrink the result document space
marginBottom?: number // Set the page bottom margin
marginLeft?: number // Set the page left margin (default 10mm)
marginRight?: number // Set the page right margin (default 10mm)
marginTop?: number // Set the page top margin
noCollate?: boolean // Do not collate when printing multiple copies (default collate)
noPdfCompression?: boolean // Do not use lossless compression on pdf objects
orientation?: "Portrait" | "Landscape" // Set orientation to Landscape or Portrait (default Portrait)
pageHeight?: number // Page height
pageSize?: string // Set paper size to: A4, Letter, etc. (default A4)
pageWidth?: number // Page width
title?: string // The title of the generated pdf file (The title of the first document is used if not specified)
// page settings
printMediaType?: boolean // Use print media-type instead of screen
footerCenter?: string // Centered footer text
footerFontName?: string // Set footer font name (default Arial)
footerFontSize?: number // Set footer font size (default 12)
footerLeft?: string // Left aligned footer text
footerLine?: boolean // Display line above the footer
footerRight?: string // Right aligned footer text
footerSpacing?: number // Spacing between footer and content in mm (default 0)
footerHTML?: string // URL to footer html
headerCenter?: string // Centered header text
headerFontName?: string // Set header font name (default Arial)
headerFontSize?: number // Set header font size (default 12)
headerLeft?: string // Left aligned header text
headerLine?: boolean // Display line below the header
headerRight?: string // Right aligned header text
headerSpacing?: number // Spacing between header and content in mm (default 0)
headerHTML?: string // URL to header html
}
): any
/**
* process existing pdf data
*
* @param command pdfcpu command
* @param pdfData []byte of pdf data, multiple []byte as array of pdf's to merge or object with description to create
* @param options options
*
* @returns []byte of new pdf data
*/
cpu(
command: "watermark" | "stamp" | "merge" | "rotate" | "create",
pdfData: any | any[],
options?: {
pages?: (string | number)[]
description?: {
fontname?: string
points?: number
rtl?: boolean
position?: "full" | "tl" | "tc" | "tr" | "l" | "c" | "r" | "bl" | "bc" | "br"
offset?: string
scalefactor?: number | string
aligntext?: "left" | "center" | "right" | "justified"
strokecolor?: string
fillcolor?: string
backgroundcolor?: string
rotation?: number
diagonal?: 1 | 2
opacity?: number
rendermode?: 0 | 1 | 2
margins?: number | string
border?: number | string
url?: string
}
mode?: "text" | "image" | "pdf"
bytes?: any // []byte of watermark image
file?: string // file for pdf watermark
text?: string // text for text watermark
rotation?: number
}
): any
}
```

View File

@@ -1,18 +0,0 @@
## image
Das ResponsePackage-Interface bietet Funktionen zur Manipulation von HTTP-Antwort-Headern. Es enthält die folgende Methode:
- `header(name: string, value: any): void`:
Diese Methode nimmt den Namen und den Wert eines Headers entgegen und setzt diesen Header in der HTTP-Antwort.
```ts
interface ResponsePackage {
/**
* set response header
*
* @param name header name
* @param value value
*/
header(name: string, value: any): void
}
```

View File

@@ -1,32 +0,0 @@
## smtp
Das Smtp-Paket ermöglicht das Senden von E-Mails. Es stellt eine sendMail Methode zur Verfügung, die eine E-Mail an einen oder mehrere Empfänger sendet. Die Methode nimmt eine Reihe von Parametern, einschließlich des SMTP-Hosts, des Benutzernamens und Passworts für die Authentifizierung, der Empfängeradressen, des Betreffs, des Absenders und der Nachricht, sowie optionaler Anhänge, entgegen.
Das SmtpPackage-Interface bietet Funktionen zum Senden von E-Mails. Es enthält die folgende Methode:
- `sendMail(options: {}): void`:
Diese Methode nimmt eine Reihe von Optionen für das Senden einer E-Mail entgegen und sendet die E-Mail entsprechend diesen Optionen. Die Optionen können den SMTP-Host, den Benutzernamen und das Passwort für die Authentifizierung, die Empfänger, den Betreff, den Absender und den Inhalt der E-Mail sowie optionale Anhänge steuern.
```ts
interface SmtpPackage {
/**
* send an email
*
* @param options email options map
*/
sendMail(options: {
host?: string
username?: string
password?: string
to: string | string[]
cc?: string | string[]
bcc?: string | string[]
subject?: string
from: string
fromName?: string
replyTo?: string
plain?: string
html?: string
attach?: string | string[]
}): void
}
```

View File

@@ -1,23 +0,0 @@
## tpl
Das TplPackage-Interface bietet Funktionen zur Ausführung von Template-Code. Es enthält folgende Methode:
`execute(code: string, contextData?: { [key: string]: any }): string`:
Diese Methode nimmt einen Template-Code und optionale Kontextdaten entgegen und gibt das Ergebnis der Template-Ausführung als String zurück. Mit dieser Methode können Sie dynamischen Code ausführen und das Ergebnis in Ihrem Programm verwenden. Genutzt wird dies meist um E-Mail templates zu rendern.
```ts
interface TplPackage {
/**
* execute a template code and return result
*
* @param code template code
* @param contextData template context map
*/
execute(
code: string,
contextData?: {
[key: string]: any
}
): string
}
```

View File

@@ -1,20 +0,0 @@
## user
Das UserPackage-Interface bietet Funktionen zur Arbeit mit den Informationen des derzeit authentifizierten Benutzers. Es enthält die folgende Methode:
- `auth(): {}`:
Diese Methode gibt ein Objekt zurück, das die ID, den Benutzernamen, die Rolle und die Berechtigungen des derzeit authentifizierten Benutzers enthält. Es ist wichtig zu beachten, dass diese Informationen nur dann verfügbar sind, wenn der Benutzer authentifiziert ist.
```ts
interface UserPackage {
/**
* get JWT authentication
*/
auth(): {
id: string
username: string
role: number
permissions: string[]
}
}
```

View File

@@ -1,29 +0,0 @@
## xml
Das XmlPackage-Interface bietet Funktionen zum Erstellen und Analysieren von XML-Strings. Es enthält folgende Methoden:
- `create(data: any, options?: {}): string`:
Diese Methode nimmt ein Objekt oder ein Array als Daten sowie optionale Einstellungen entgegen und gibt einen XML-String zurück. Mit dieser Methode können Sie beispielsweise ein JavaScript-Objekt oder -Array in einen XML-String umwandeln.
- `parse(xml: string, options?: {}): any`:
Diese Methode nimmt einen XML-String und optionale Einstellungen entgegen und gibt ein JavaScript-Objekt zurück. Mit dieser Methode können Sie XML-Strings analysieren und in ein Format umwandeln, das in JavaScript leichter zu handhaben ist.
```ts
interface XmlPackage {
/**
* create xml string
*
* @param data object or array
* @param options options
*/
create(data: any, options?: {}): string
/**
* parse xml string to json
*
* @param xml xml string
* @param options options
*/
parse(xml: string, options?: {}): any
}
```