types
This commit is contained in:
parent
9c3889393f
commit
1760eef571
324
index.d.ts
vendored
324
index.d.ts
vendored
@ -0,0 +1,324 @@
|
||||
export interface CollectionDocument {
|
||||
id?: string
|
||||
insertTime?: Date
|
||||
updateTime?: Date
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
export interface ReadCollectionOptions {
|
||||
filter?: {
|
||||
[key: string]: any
|
||||
}
|
||||
selector?: {
|
||||
[key: string]: any
|
||||
}
|
||||
projection?: string
|
||||
offset?: number
|
||||
limit?: number
|
||||
sort?: string[]
|
||||
}
|
||||
|
||||
interface GetHookData {
|
||||
/**
|
||||
* true if only one document was requested via /COLLECTION/ID
|
||||
*/
|
||||
one?: boolean
|
||||
/**
|
||||
* get list of documents (only valid after stage "read" in "get" hook)
|
||||
*/
|
||||
results(): CollectionDocument[]
|
||||
/**
|
||||
* filter map only valid for "get" hooks
|
||||
*/
|
||||
filter?: {
|
||||
[key: string]: any
|
||||
}
|
||||
/**
|
||||
* selector map only valid for "get" hooks
|
||||
*/
|
||||
selector?: {
|
||||
[key: string]: any
|
||||
}
|
||||
/**
|
||||
* offset only valid for "get" hooks
|
||||
*/
|
||||
offset?: number
|
||||
/**
|
||||
* limit only valid for "get" hooks
|
||||
*/
|
||||
limit?: number
|
||||
/**
|
||||
* sort only valid for "get" hooks
|
||||
*/
|
||||
sort?: string[] | string
|
||||
}
|
||||
|
||||
interface PostHookData {
|
||||
/**
|
||||
* post data only valid in "post" and "put" hooks
|
||||
*/
|
||||
data?: CollectionDocument
|
||||
}
|
||||
|
||||
export interface HookContext extends GetHookData, PostHookData {
|
||||
request(): {
|
||||
method: string
|
||||
remoteAddr: string
|
||||
host: string
|
||||
url: string
|
||||
path: string
|
||||
param(p: string): string
|
||||
query(q: string): string
|
||||
header(h: string): string
|
||||
body(): string
|
||||
/**
|
||||
* bodyBytes return []byte go slice of post body for later use pe. in iso8859ToUtf8
|
||||
*/
|
||||
bodyBytes(): string
|
||||
}
|
||||
|
||||
/**
|
||||
* read results from a collection
|
||||
*
|
||||
* @param colName collection name
|
||||
* @param options options map
|
||||
*/
|
||||
readCollection(
|
||||
colName: string,
|
||||
options?: ReadCollectionOptions
|
||||
): CollectionDocument[]
|
||||
|
||||
/**
|
||||
* read count of documents for filter from a collection
|
||||
*
|
||||
* @param colName collection name
|
||||
* @param options options map (only filter is valid)
|
||||
*/
|
||||
readCollectionCount(
|
||||
colName: string,
|
||||
options?: ReadCollectionOptions
|
||||
): number
|
||||
|
||||
/**
|
||||
* create a document in a collection
|
||||
*
|
||||
* @param colName collection name
|
||||
* @param data data map
|
||||
*/
|
||||
createDocument(
|
||||
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
|
||||
*/
|
||||
updateDocument(
|
||||
colName: string,
|
||||
id: string,
|
||||
data: CollectionDocument
|
||||
): CollectionDocument
|
||||
|
||||
/**
|
||||
* deletes one document by id from collection
|
||||
*
|
||||
* @param colName collection name
|
||||
* @param id id of entry
|
||||
*/
|
||||
deleteDocument(colName: string, id: string): { message: "ok" }
|
||||
|
||||
/**
|
||||
* deletes documents by filter from collection
|
||||
*
|
||||
* @param colName collection name
|
||||
* @param options options map, only filter valid
|
||||
*/
|
||||
deleteDocuments(
|
||||
colName: string,
|
||||
options?: ReadCollectionOptions
|
||||
): { message: "ok"; removed: number }
|
||||
|
||||
/**
|
||||
* send an email
|
||||
*
|
||||
* @param options email options map
|
||||
*/
|
||||
mail(options: {
|
||||
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
|
||||
|
||||
/**
|
||||
* execute a template code and return result
|
||||
*
|
||||
* @param code template code
|
||||
* @param contextData template context map
|
||||
*/
|
||||
template(
|
||||
code: string,
|
||||
contextData?: {
|
||||
[key: string]: any
|
||||
}
|
||||
): string
|
||||
|
||||
/**
|
||||
* read a file relative to config dir and return its content
|
||||
*
|
||||
* @param path relative file path
|
||||
*/
|
||||
file(path: string): string
|
||||
|
||||
/**
|
||||
* http request
|
||||
*
|
||||
* @param url url for request
|
||||
* @param options request options
|
||||
*/
|
||||
fetch(
|
||||
url: string,
|
||||
options?: {
|
||||
method?: string
|
||||
headers?: { [key: string]: string }
|
||||
body?: string
|
||||
}
|
||||
): {
|
||||
status: number
|
||||
statusText: string
|
||||
headers: { [key: string]: string }
|
||||
trailer: { [key: string]: string }
|
||||
url: string
|
||||
body: {
|
||||
text(): string
|
||||
json(): any
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* dumps data to header and server log
|
||||
*
|
||||
* @param toDump data to dump
|
||||
*/
|
||||
dump(...toDump: any): void
|
||||
|
||||
/**
|
||||
* set response header
|
||||
*
|
||||
* @param name header name
|
||||
* @param value value
|
||||
*/
|
||||
header(name: string, value: any): void
|
||||
|
||||
/**
|
||||
* get JWT authentication
|
||||
*/
|
||||
auth(): {
|
||||
id: string
|
||||
username: string
|
||||
role: number
|
||||
permissions: string[]
|
||||
}
|
||||
|
||||
/**
|
||||
* get Sentry trace id
|
||||
*/
|
||||
sentryTraceId(): string
|
||||
|
||||
/**
|
||||
* hash password via bcrypt algo
|
||||
*
|
||||
* @param password clear text password
|
||||
* @param options hashing options
|
||||
*/
|
||||
bcryptHash(
|
||||
password: string,
|
||||
options?: {
|
||||
cost?: number
|
||||
}
|
||||
): string
|
||||
|
||||
/**
|
||||
* check password against hashed password via bcrypt algo
|
||||
*
|
||||
* @param password clear text password
|
||||
* @param hash hashed password
|
||||
*/
|
||||
bcryptCheck(password: string, hash: string): boolean
|
||||
|
||||
/**
|
||||
* create a jwt signed token string
|
||||
*
|
||||
* @param claims data object
|
||||
* @param options options (secret, validityDuration = expiry in X seconds)
|
||||
*/
|
||||
jwtCreate(
|
||||
claims: {
|
||||
[key: string]: any
|
||||
},
|
||||
options?: {
|
||||
secret?: string
|
||||
validityDuration?: number
|
||||
}
|
||||
): string
|
||||
|
||||
/**
|
||||
* parse jwt token string
|
||||
*
|
||||
* @param token token string
|
||||
* @param options options (secret)
|
||||
*/
|
||||
jwtParse(
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* convert iso8859 to utf8
|
||||
*
|
||||
* @param iso8859 iso string
|
||||
*/
|
||||
iso8859ToUtf8(iso8859: string): string
|
||||
}
|
||||
|
||||
export interface HookException {
|
||||
status?: number
|
||||
html?: string
|
||||
[key: string]: any
|
||||
}
|
||||
|
||||
export interface HookResponse extends GetHookData, PostHookData {
|
||||
data?: CollectionDocument
|
||||
results: any
|
||||
}
|
||||
|
||||
declare global {
|
||||
var context: HookContext
|
||||
}
|
15
tsconfig.json
Normal file
15
tsconfig.json
Normal file
@ -0,0 +1,15 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"noImplicitAny": true,
|
||||
"noImplicitThis": true,
|
||||
"strictNullChecks": true,
|
||||
"strictFunctionTypes": true,
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts"
|
||||
]
|
||||
}
|
Loading…
Reference in New Issue
Block a user