frontend-zackeneule/lib/plankton/plankton.d.ts

2501 lines
70 KiB
TypeScript
Raw Normal View History

2024-04-22 10:02:43 +02:00
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type int = number;
2024-04-22 10:02:43 +02:00
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type float = number;
2024-04-22 10:02:43 +02:00
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type type_date = {
2024-04-22 10:02:43 +02:00
year: int;
month: int;
day: int;
};
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type type_time = {
2024-04-22 10:02:43 +02:00
hour: int;
minute: int;
second: int;
};
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type type_datetimeobject = {
2024-04-22 10:02:43 +02:00
date: type_date;
time: type_time;
};
declare class Buffer {
constructor(x: string, modifier?: string);
toString(modifier?: string): string;
}
declare namespace lib_plankton.base {
/**
* @author fenris
*/
function environment(): string;
}
/**
* @author fenris
*/
2024-04-30 14:17:22 +02:00
type type_pseudopointer<type_value> = {
2024-04-22 10:02:43 +02:00
value: type_value;
};
/**
* @author fenris
*/
declare function pseudopointer_null<type_value>(): type_pseudopointer<type_value>;
/**
* @author fenris
*/
declare function pseudopointer_make<type_value>(value: type_value): type_pseudopointer<type_value>;
/**
* @author fenris
*/
declare function pseudopointer_isset<type_value>(pseudopointer: type_pseudopointer<type_value>): boolean;
/**
* @author fenris
*/
declare function pseudopointer_read<type_value>(pseudopointer: type_pseudopointer<type_value>): type_value;
/**
* @author fenris
*/
declare function pseudopointer_write<type_value>(pseudopointer: type_pseudopointer<type_value>, value: type_value): void;
/**
* @author fenris
*/
declare var instance_verbosity: int;
/**
* @desc the ability to check for equality with another element of the same domain
* @author fenris
*/
interface interface_collatable<type_value> {
/**
* @author fenris
*/
_collate(value: type_value): boolean;
}
/**
* @author fenris
*/
declare function instance_collate<type_value>(value1: (type_value & {
_collate?: ((value: type_value) => boolean);
}), value2: type_value): boolean;
/**
* @desc the ability to compare with another element of the same domain for determining if the first is "smaller than or equal to" the latter
* @author fenris
*/
interface interface_comparable<type_value> {
/**
* @author fenris
*/
_compare(value: type_value): boolean;
}
/**
* @author fenris
*/
declare function instance_compare<type_value>(value1: (type_value & {
_compare: ((value: type_value) => boolean);
}), value2: type_value): boolean;
/**
* @desc the ability to create an exact copy
* @author fenris
*/
interface interface_cloneable<type_value> {
/**
* @author fenris
*/
_clone(): type_value;
}
/**
* @author fenris
*/
declare function instance_clone<type_value>(value: (type_value & {
_clone?: (() => type_value);
})): type_value;
/**
* @author fenris
*/
interface interface_hashable {
/**
* @author fenris
*/
_hash(): string;
}
/**
* @desc the ability to generate a string out of the element, which identifies it to a high degree
* @author fenris
*/
declare function instance_hash<type_value>(value: (type_value & {
_hash?: (() => string);
})): string;
/**
* @author fenris
*/
interface interface_showable {
/**
* @author fenris
*/
_show(): string;
}
/**
* @desc the ability to map the element to a textual representation (most likely not injective)
* @author fenris
*/
declare function instance_show<type_value>(value: (type_value & {
_show?: (() => string);
})): string;
/**
* @author frac
*/
interface interface_decorator<type_core> {
/**
* @author frac
*/
core: type_core;
}
/**
* @author frac
*/
declare class class_observer {
/**
* @author frac
*/
protected counter: int;
/**
* @author frac
*/
protected actions: {
[id: string]: (information: Object) => void;
};
/**
* @author frac
*/
protected buffer: Array<Object>;
/**
* @author frac
*/
constructor();
/**
* @author frac
*/
empty(): boolean;
/**
* @author frac
*/
flush(): void;
/**
* @author frac
*/
set(id: string, action: (information: Object) => void): void;
/**
* @author frac
*/
del(id: string): void;
/**
* @author frac
*/
add(action: (information: Object) => void): void;
/**
* @author frac
*/
notify(information?: Object, delayed?: boolean): void;
/**
* @author frac
*/
rollout(): void;
}
/**
* @author frac
*/
/**
* @author frac
*/
/**
* @author frac
*/
declare class class_error extends Error {
/**
* @author frac
*/
protected suberrors: Array<Error>;
/**
* @author frac
*/
protected mess: string;
/**
* @author frac
*/
constructor(message: string, suberrors?: Array<Error>);
/**
* @override
* @author frac
*/
toString(): string;
}
declare namespace lib_plankton.base {
/**
* returns the current UNIX timestamp
*
* @author fenris
*/
function get_current_timestamp(rounded?: boolean): float;
/**
*/
function object_merge(core: Record<string, any>, mantle: Record<string, any>): Record<string, any>;
}
declare module lib_plankton.pod {
/**
* @author fenris
*/
type type_pod<type_value> = {
kind: ("empty" | "filled");
value?: type_value;
};
/**
* @author fenris
*/
function make_empty<type_value>(): type_pod<type_value>;
/**
* @author fenris
*/
function make_filled<type_value>(value: type_value): type_pod<type_value>;
/**
* whether the pod is filled
*
* @author fenris
*/
function is_filled<type_value>(pod: type_pod<type_value>): boolean;
/**
* return the value, stored in the pod-wrapper
*
* @author fenris
*/
function cull<type_value>(pod: type_pod<type_value>): type_value;
/**
* to pass on a empty-pod or to use a filled-pod
*
* @author fenris
*/
function propagate<type_value, type_value_>(pod: type_pod<type_value>, function_: ((value: type_value) => type_value_)): type_pod<type_value_>;
/**
* @author fenris
*/
function distinguish<type_value, type_result>(pod: type_pod<type_value>, function_empty: (() => type_result), function_filled: ((value: type_value) => type_result)): type_result;
/**
*/
function show<type_value>(pod: type_pod<type_value>, options?: {
show_value?: ((value: type_value) => string);
}): string;
}
declare module lib_plankton.pod {
/**
*/
class class_pod<type_value> {
private subject;
private constructor();
is_empty(): boolean;
is_filled(): boolean;
cull(): type_value;
show(show_value?: any): string;
toString(): string;
propagate<type_value_>(function_: ((value: type_value) => type_value_)): class_pod<type_value_>;
distinguish<type_result>(function_empty: (() => type_result), function_filled: ((value: type_value) => type_result)): type_result;
}
}
/**
* might be completely obsolete
*/
declare namespace lib_plankton.call {
/**
* @author fenris
*/
type type_promise<type_result, type_reason> = Promise<type_result>;
/**
* @author fenris
*/
function promise_reject<type_result, type_reason>(reason: type_reason): type_promise<type_result, type_reason>;
/**
* @author fenris
*/
function promise_resolve<type_result, type_reason>(result: type_result): type_promise<type_result, type_reason>;
/**
* @author fenris
*/
function promise_make<type_result, type_reason>(executor: (resolve: ((result?: type_result) => void), reject: ((reason?: type_reason) => void)) => void): type_promise<type_result, type_reason>;
/**
* @author fenris
*/
function promise_then_close<type_result, type_reason>(promise: type_promise<type_result, type_reason>, resolver: ((result: type_result) => void), rejector: ((reason: type_reason) => void)): void;
/**
* @author fenris
*/
function promise_then_append<type_result, type_reason, type_result_>(promise: type_promise<type_result, type_reason>, resolver: ((result: type_result) => type_promise<type_result_, type_reason>), rejector?: ((reason: type_reason) => type_promise<type_result_, type_reason>)): type_promise<type_result_, type_result>;
/**
* @author fenris
*/
function promise_all<type_result, type_reason>(promises: Array<type_promise<type_result, type_reason>>): type_promise<Array<type_result>, type_reason>;
/**
* @author fenris
*/
function promise_chain<type_result, type_reason>(promises: (Array<(input: type_result) => type_promise<type_result, type_reason>>), start?: type_result): type_promise<type_result, type_reason>;
/**
* @author fenris
*/
function promise_condense<type_element, type_reason>(promises: Array<() => type_promise<type_element, type_reason>>): type_promise<Array<type_element>, type_reason>;
/**
* @author fenris
*/
function promise_group<type_reason>(promises: Record<string, (() => type_promise<any, type_reason>)>, options?: {
serial?: boolean;
}): type_promise<Record<string, any>, type_reason>;
/**
* @author fenris
*/
function promise_wrap<type_result_inner, type_result_outer, type_reason>(promise: type_promise<type_result_inner, type_reason>, transformator_result: ((reason: type_result_inner) => type_result_outer), transformator_reason?: ((reason: type_reason) => type_reason)): type_promise<type_result_outer, type_reason>;
/**
* @author fenris
*/
/**
* @author fenris
*/
/**
* @author fenris
*/
function promise_attach<type_reason>(state: Record<string, any>, promise: type_promise<any, type_reason>, name: string): type_promise<Record<string, any>, type_reason>;
/**
* @author fenris
*/
function promise_delay<type_result, type_reason>(promise: type_promise<type_result, type_reason>, delay: int): type_promise<type_result, type_reason>;
}
declare namespace lib_plankton.call {
/**
*/
class CancellablePromise<type_result> extends Promise<type_result> {
/**
*/
private cancelled;
/**
*/
private interval;
/**
*/
private subject;
/**
*/
constructor(executor: ((resolve: any, reject: any) => void));
/**
*/
private clear;
/**
*/
then<type_next_resolved, type_next_rejected>(onfulfilled?: ((value: type_result) => (type_next_resolved | PromiseLike<type_next_resolved>)), onrejected?: ((reason: any) => (type_next_rejected | PromiseLike<type_next_rejected>))): Promise<type_next_resolved | type_next_rejected>;
/**
*/
catch(x: any): Promise<type_result>;
/**
*/
cancel(): void;
}
}
/**
* initializer might be obsolete, since promises are reusable after having been resolved or rejected
*/
declare namespace lib_plankton.call {
/**
* @author fenris
*/
enum enum_initializer_state {
initial = 0,
waiting = 1,
successful = 2,
failed = 3
}
/**
* @author fenris
*/
type type_initializer<type_result, type_reason> = {
fetcher: (() => type_promise<type_result, type_reason>);
state?: enum_initializer_state;
queue: Array<{
resolve: ((result?: type_result) => void);
reject: ((reason?: type_reason) => void);
}>;
result?: type_result;
reason?: type_reason;
};
/**
* @author fenris
*/
function initializer_make<type_result, type_reason>(fetcher: (() => type_promise<type_result, type_reason>)): type_initializer<type_result, type_reason>;
/**
* @author fenris
*/
function initializer_reset<type_result, type_reason>(subject: type_initializer<type_result, type_reason>): void;
/**
* @author fenris
*/
function initializer_state<type_result, type_reason>(subject: type_initializer<type_result, type_reason>): enum_initializer_state;
/**
* @author fenris
*/
function initializer_get<type_result, type_reason>(subject: type_initializer<type_result, type_reason>): type_promise<type_result, type_reason>;
}
declare namespace lib_plankton.call {
/**
* @author fenris
*/
type type_deferral<type_input, type_output> = {
representation: (input: type_input) => Promise<type_output>;
};
/**
* @author fenris
* @desc activates the deferral and handles its output according to a given procedure
* @param {(value : type_value)=>void} procedure a function which receives the output of the deferral as argument
*/
function deferral_use<type_input, type_output>(deferral: type_deferral<type_input, type_output>, input: type_input, procedure: (output: type_output) => void): void;
/**
* @author fenris
* @desc creates a deferral-subject (similar to "new Promise", where "convey" reflects "resolve"/"reject")
*/
function deferral_make<type_input, type_output>(handler: (input: type_input, convey: (output: type_output) => void) => void): type_deferral<type_input, type_output>;
/**
* @author fenris
* @desc wraps a simple function into a deferral (similar to "Promise.resolve"/"Promise.reject")
*/
function deferral_wrap<type_input, type_output>(function_: (input: type_input) => type_output): type_deferral<type_input, type_output>;
/**
* @author fenris
*/
function deferral_id<type_value>(): type_deferral<type_value, type_value>;
/**
* @author fenris
*/
function deferral_const<type_value>(value: type_value): type_deferral<type_value, type_value>;
/**
* @author fenris
*/
function deferral_delay<type_output>(output: type_output, delay: int): type_deferral<any, type_output>;
/**
* @author fenris
* @desc connects two deferrals to form a new one; the output of the first is taken as input for the second
* (similar to "Promise.then" when passing a function which returns a new promise)
* @param {type_deferral<type_value1>} first a simple deferral
* @param {(value1 : type_value1)=>type_deferral<type_value2>} second a function depending from a value returning a deferral
*/
function deferral_compose_serial<type_input, type_between, type_output>(first: type_deferral<type_input, type_between>, second: type_deferral<type_between, type_output>): type_deferral<type_input, type_output>;
/**
* @author fenris
*/
function deferral_compose_parallel<type_input, type_output_left, type_output_right>({ "left": deferral_left, "right": deferral_right, }: {
left: type_deferral<type_input, type_output_left>;
right: type_deferral<type_input, type_output_right>;
}): type_deferral<type_input, {
left: type_output_left;
right: type_output_right;
}>;
/**
* @author fenris
* @desc repeatedly applied serial composition
*/
function deferral_chain<type_value>(members: Array<type_deferral<type_value, type_value>>): type_deferral<type_value, type_value>;
/**
* @author fenris
*/
}
declare namespace lib_plankton.call {
/**
* @author fenris
*/
class class_deferral<type_input, type_output> {
/**
* @author fenris
*/
private subject;
/**
* @author fenris
*/
private constructor();
/**
* @author fenris
*/
private static _cram;
/**
* @author fenris
*/
private static _tear;
/**
* @author fenris
*/
static make<type_input, type_output>(handler: (input: type_input, convey: (value: type_output) => void) => void): class_deferral<type_input, type_output>;
/**
* @author fenris
*/
use(input: type_input, procedure: (value: type_output) => void): void;
/**
* @author fenris
*/
compose_serial<type_output_>(second: class_deferral<type_output, type_output_>): class_deferral<type_input, type_output_>;
/**
* @author fenris
*/
static chain<type_value>(members: Array<class_deferral<type_value, type_value>>): class_deferral<type_value, type_value>;
/**
* @author fenris
*/
static wrap<type_input, type_output>(function_: (input: type_input) => type_output): class_deferral<type_input, type_output>;
/**
* @author fenris
*/
static const_<type_value>(value: type_value): class_deferral<type_value, type_value>;
/**
* @author fenris
*/
static delay<type_output>(output: type_output, delay: int): class_deferral<any, type_output>;
}
}
declare namespace lib_plankton.call {
/**
* converts the "arguments"-map into an array
*
* @param {Object} args
* @author fenris
*/
function args2list(args: any): Array<any>;
/**
* just the empty function; useful for some callbacks etc.
*
* @author fenris
*/
function nothing(): void;
/**
* just the identity; useful for some callbacks etc.; defined as function instead of const for using type parameters
*
* @author fenris
*/
function id<type_value>(x: type_value): type_value;
/**
* just the identity; useful for some callbacks etc.
*
* @author fenris
*/
function const_<type_value>(x: type_value): ((y: any) => type_value);
/**
* composes two functions (i.e. returns a function that return the result of the successive execution of both input-functions)
*
* @param {function} function_f
* @param {function} function_g
* @author fenris
*/
function compose<type_x, type_y, type_z>(function_f: ((type_x: any) => type_y), function_g: ((type_y: any) => type_z)): ((value: type_x) => type_z);
/**
* transforms a function with sequential input to a function with leveled input; example: add(2,3) = curryfy(add)(2)(3)
*
* @param {function} f
* @return {function} the currified version of the in put function
* @author fenris
*/
function curryfy(f: Function): Function;
/**
* @author fenris
*/
function convey(value: any, functions: Array<Function>): any;
/**
* @author fenris
*/
function timeout(procedure: (() => void), delay_in_seconds: float): int;
/**
* Promise version of "setTimeout"
*
* @author fenris
*/
function defer<type_result>(seconds: float, action: (() => type_result)): Promise<type_result>;
/**
* a definition for a value being "defined"
*
* @author neuc
*/
function is_def<type_value>(obj: type_value, options?: {
null_is_valid?: boolean;
}): boolean;
/**
* returns the value if set and, when a type is specified, if the type is correct, if not return default_value
*
* @author neuc
*/
function def_val(value: any, default_value: any, options?: {
type?: (null | string);
null_is_valid?: boolean;
}): any;
/**
* provides the call for an attribute of a class as a regular function; useful for processing lists of objects
*
* @param {string} name the name of the attribute
* @return {function}
* @author fenris
*/
function attribute<type_object, type_attribute>(name: string): ((object: type_object) => type_attribute);
/**
* provides a method of a class as a regular function; useful for processing lists of objects
*
* @param {string} name the name of the method
* @return {function}
* @author fenris
*/
function method<type_object, type_output>(name: string): ((object: type_object) => type_output);
/**
* @author fenris
*/
type type_coproduct = {
kind: string;
data?: any;
};
/**
* @author fenris
*/
function distinguish<type_output>(coproduct: type_coproduct, handlers: Record<string, ((data?: any) => type_output)>, options?: {
fallback?: (null | ((coproduct?: type_coproduct) => type_output));
}): type_output;
/**
* for rate_limit_check
*
* @author fenris
*/
type type_mana_snapshot = {
timestamp: float;
value: float;
};
/**
* rate limiting algorithm, based on the idea of mana (magic power) in video games:
* - an actor has a fixed mana capacity, i.e. the maximum amount of available power
* - an actor has a fixed rate of mana regeneration, i.e. how fast the power is filled up (linear growth)
* - an action has a defined mana heft, i.e. how much power is required and deducted in order to execute it
* - mana states are represented by snapshots, i.e. the amount of power at a certain point in time
*
* @author fenris
*/
function rate_limit_check(setup: {
capacity: float;
regeneration_rate: float;
get_snapshot: (() => Promise<(null | type_mana_snapshot)>);
set_snapshot: ((snapshot: type_mana_snapshot) => Promise<void>);
update_snapshot: ((timestamp: float, value_increment: float) => Promise<void>);
}, heft: float): Promise<{
granted: boolean;
seconds: (null | float);
}>;
}
declare namespace lib_plankton.file {
/**
* @author fenris
*/
function read(path: string): Promise<string>;
/**
* @author fenris
*/
function write(path: string, content: string): Promise<void>;
/**
* @author fenris
*/
function blob_read_text(blob: Blob): lib_plankton.call.type_promise<string, Error>;
/**
* @author fenris
*/
function blob_read_arraybuffer(blob: Blob): lib_plankton.call.type_promise<ArrayBuffer, Error>;
/**
* @author fenris
*/
function blob_read_dataurl(blob: Blob): lib_plankton.call.type_promise<string, Error>;
/**
* @author fenris
*/
function blob_write_text(text: string): lib_plankton.call.type_promise<Blob, Error>;
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
interface interface_code<type_from, type_to> {
/**
* @author fenris
*/
encode(x: type_from): type_to;
/**
* @author fenris
*/
decode(x: type_to): type_from;
}
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
type type_code<type_from, type_to> = {
/**
* @author fenris
*/
encode: (x: type_from) => type_to;
/**
* @author fenris
*/
decode: (x: type_to) => type_from;
};
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
function inverse_encode<type_from, type_to>(decode: (to: type_to) => type_from, to: type_to): type_from;
/**
* @author fenris
*/
function inverse_decode<type_from, type_to>(encode: (from: type_from) => type_to, from: type_from): type_to;
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
class class_code_inverse<type_from, type_to> implements interface_code<type_to, type_from> {
/**
* @author fenris
*/
protected subject: interface_code<type_from, type_to>;
/**
* @author fenris
*/
constructor(subject: interface_code<type_from, type_to>);
/**
* @implementation
* @author fenris
*/
encode(to: type_to): type_from;
/**
* @implementation
* @author fenris
*/
decode(from: type_from): type_to;
}
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
function pair_encode<type_from, type_between, type_to>(encode_first: (from: type_from) => type_between, encode_second: (between: type_between) => type_to, from: type_from): type_to;
/**
* @author fenris
*/
function pair_decode<type_from, type_between, type_to>(decode_first: (between: type_between) => type_from, decode_second: (to: type_to) => type_between, to: type_to): type_from;
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
class class_code_pair<type_from, type_between, type_to> implements interface_code<type_from, type_to> {
/**
* @author fenris
*/
protected first: interface_code<type_from, type_between>;
/**
* @author fenris
*/
protected second: interface_code<type_between, type_to>;
/**
* @author fenris
*/
constructor(first: interface_code<type_from, type_between>, second: interface_code<type_between, type_to>);
/**
* @implementation
* @author fenris
*/
encode(from: type_from): type_to;
/**
* @implementation
* @author fenris
*/
decode(to: type_to): type_from;
}
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
function chain_encode(encode_links: Array<(from: any) => any>, from: any): any;
/**
* @author fenris
*/
function chain_decode(decode_links: Array<(to: any) => any>, to: any): any;
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
class class_code_chain implements interface_code<any, any> {
/**
* @author fenris
*/
protected links: Array<interface_code<any, any>>;
/**
* @author fenris
*/
constructor(links: Array<interface_code<any, any>>);
/**
* @implementation
* @author fenris
*/
encode(from: any): any;
/**
* @implementation
* @author fenris
*/
decode(to: any): any;
}
}
declare namespace lib_plankton.code {
/**
* @author Christian Fraß <frass@greenscale.de>
*/
type type_flatten_from = Array<{
[name: string]: any;
}>;
/**
* @author Christian Fraß <frass@greenscale.de>
*/
type type_flatten_to = {
keys: Array<string>;
data: Array<Array<any>>;
};
/**
* @author Christian Fraß <frass@greenscale.de>
*/
function flatten_encode(from: type_flatten_from, keys?: Array<string>): type_flatten_to;
/**
* @author Christian Fraß <frass@greenscale.de>
*/
function flatten_decode(to: type_flatten_to): type_flatten_from;
}
declare namespace lib_plankton.code {
/**
* @author fenris
*/
class class_code_flatten implements interface_code<type_flatten_from, type_flatten_to> {
/**
* @author fenris
*/
constructor();
/**
* @implementation
* @author fenris
*/
encode(x: type_flatten_from): type_flatten_to;
/**
* @implementation
* @author fenris
*/
decode(x: type_flatten_to): type_flatten_from;
}
}
declare namespace lib_plankton.json {
/**
* @author fenris
*/
function encode(x: any, formatted?: boolean): string;
/**
* @author fenris
*/
function decode(x: string): any;
}
declare namespace lib_plankton.json {
/**
* @author fenris
*/
class class_json implements lib_plankton.code.interface_code<any, string> {
/**
* @author fenris
*/
constructor();
/**
* @implementation
* @author fenris
*/
encode(x: any): string;
/**
* @implementation
* @author fenris
*/
decode(x: string): any;
}
}
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
function encode(x: string): string;
/**
* @author fenris
*/
function decode(x: string): string;
}
declare namespace lib_plankton.base64 {
/**
* @author fenris
*/
class class_base64 implements lib_plankton.code.interface_code<string, string> {
/**
* @author fenris
*/
constructor();
/**
* @implementation
* @author fenris
*/
encode(x: string): string;
/**
* @implementation
* @author fenris
*/
decode(x: string): string;
}
}
declare namespace lib_plankton.log {
/**
*/
enum enum_level {
debug = 0,
info = 1,
notice = 2,
warning = 3,
error = 4
}
/**
*/
function level_order(level1: enum_level, level2: enum_level): boolean;
/**
*/
function level_show(level: enum_level): string;
/**
*/
type type_entry = {
level: enum_level;
incident: string;
details: Record<string, any>;
};
}
/**
* @deprecated
* @todo remove
*/
declare namespace lib_plankton.log {
function level_push(level: int): void;
function level_pop(): void;
function indent_push(indent: int): void;
function indent_pop(): void;
function indent_inc(): void;
function indent_dec(): void;
/**
* @author fenris
*/
function write({ "message": message, "type": type, "prefix": prefix, "level": level, "indent": indent, }: {
message?: string;
type?: string;
prefix?: string;
level?: int;
indent?: int;
}): void;
}
declare namespace lib_plankton.log {
/**
*/
abstract class class_channel {
/**
*/
abstract add(entry: type_entry): void;
}
}
declare namespace lib_plankton.log {
/**
* output for writing log entries to web console
*/
class class_channel_console extends class_channel {
/**
*/
add(entry: type_entry): void;
}
}
declare namespace lib_plankton.log {
/**
* decorator for filtering out log entries below a certain level threshold
*/
class class_channel_minlevel extends class_channel {
/**
*/
private core;
/**
*/
private threshold;
/**
*/
constructor(core: class_channel, threshold: enum_level);
/**
*/
add(entry: type_entry): void;
}
}
declare namespace lib_plankton.log {
/**
*/
function channel_make(description: {
kind: string;
data?: {
[key: string]: any;
};
}): class_channel;
/**
*/
type type_configuration = Array<class_channel>;
/**
*/
function conf_default(): type_configuration;
}
declare namespace lib_plankton.log {
/**
* pushes a new configuration on the stack and activates it
*/
function conf_push(channels: type_configuration): void;
/**
* pops the current active configuration from the stack
*/
function conf_pop(): void;
/**
* consumes a log entry, i.e. sends it to the currently active outputs
*/
function add(entry: type_entry): void;
/**
*/
function debug(incident: string, details?: Record<string, any>): void;
/**
*/
function info(incident: string, details?: Record<string, any>): void;
/**
*/
function notice(incident: string, details?: Record<string, any>): void;
/**
*/
function warning(incident: string, details?: Record<string, any>): void;
/**
*/
function error(incident: string, details?: Record<string, any>): void;
}
declare var plain_text_to_html: (text: string) => string;
/**
* @desc makes a valid
*/
declare var format_sentence: (str: string, rtl?: boolean, caseSense?: boolean) => string;
declare var fill_string_template: (template_string: string, object: any, fabric: Function, delimiter: string, default_string: string, sloppy: boolean) => string;
declare var make_string_template: (_template: string, _fabrics?: Object) => (object: {
[key: string]: string;
}) => string;
declare var make_eml_header: (object: {
[key: string]: string;
}) => string;
declare var make_eml_body: Object;
declare namespace lib_plankton.string {
/**
* @author neuc,frac
*/
function empty(str: string): boolean;
/**
* @desc returns a unique string
* @param {string} prefix an optional prefix for the generated string
* @return {string}
* @author fenris
*/
function generate(prefix?: string): string;
/**
* @author fenris
*/
function join(parts: Array<string>, glue?: string): string;
/**
* @desc splits a string, but returns an empty list, if the string is empty
* @param {string} chain
* @param {string} separator
* @return {Array<string>}
* @author fenris
*/
function split(chain: string, separator?: string): Array<string>;
/**
* @author neu3no
*/
function explode(str: string, needle: string, max: int): Array<string>;
/**
* @desc concats a given word with itself n times
* @param {string} word
* @param {int}
* @return {string}
* @author fenris
*/
function repeat(word: string, count: int): string;
/**
* @desc lengthens a string by repeatedly appending or prepending another string
* @param {string} word the string to pad
* @param {int} length the length, which the result shall have
* @param {string} symbol the string, which will be added (multiple times)
* @param {boolean} [prepend]; whether to prepend (~true) or append (~false); default: false
* @return {string} the padded string
* @author fenris
*/
function pad(word: string, length: int, symbol?: string, mode?: string): string;
/**
* @desc checks if a given string conttains a certain substring
* @param {string} string
* @param {string} part
* @return {boolean}
* @author fenris
*/
function contains(chain: string, part: string): boolean;
/**
* @desc checks if a given string starts with a certain substring
* @param {string} string
* @param {string} part
* @return {boolean}
* @author fenris
*/
function startsWith(chain: string, part: string): boolean;
/**
* @desc checks if a given string ends with a certain substring
* @param {string} string
* @param {string} part
* @return {boolean}
* @author fenris
*/
function endsWith(chain: string, part: string): boolean;
/**
* @desc count the occourrences of a string in a string
* @param string haystack_string the string wich should be examined
* @param string needle_string the string which should be counted
* @author neuc
*/
function count_occourrences(haystack_string: string, needle_string: string, check_escape: boolean): int;
/**
* @author fenris
*/
function replace(str: string, replacements: Array<{
from: string;
to: string;
}>, options?: {}): string;
/**
* @desc replaces occurences of "{{name}}" in a string by the corresponding values of an argument object
* @author fenris
*/
function coin(str: string, args: {
[id: string]: string;
}, options?: {
legacy?: boolean;
open?: string;
close?: string;
}): string;
/**
* @author fenris
* @deprecated use limit
*/
function cut(str: string, length: int, delimiter?: string): string;
/**
*/
function limit(str: string, options?: {
length?: int;
indicator?: string;
}): string;
/**
*/
function slice(str: string, size: int): Array<string>;
}
/**
* @deprecated
*/
declare namespace lib_string {
const empty: typeof lib_plankton.string.empty;
const generate: typeof lib_plankton.string.generate;
const split: typeof lib_plankton.string.split;
const explode: typeof lib_plankton.string.repeat;
const repeat: typeof lib_plankton.string.repeat;
const pad: typeof lib_plankton.string.pad;
const contains: typeof lib_plankton.string.contains;
const startsWith: typeof lib_plankton.string.startsWith;
const endsWith: typeof lib_plankton.string.endsWith;
const count_occourrences: typeof lib_plankton.string.count_occourrences;
const coin: typeof lib_plankton.string.coin;
const stance: typeof lib_plankton.string.coin;
const cut: typeof lib_plankton.string.cut;
}
declare namespace lib_plankton.string {
/**
* an implementation of c sprintf
* @param {string} string format string
* @param {array} args arguments which should be filled into
* @returns {string}
*/
var sprintf: (input: string, args?: Array<any>, original?: any) => string;
/**
* an implementation of c printf
* @param {string} string format string
* @param {array} args arguments which should be filled into
* @returns {string}
*/
function printf(format: any, args: any): void;
}
declare var sprintf: (input: string, args?: Array<any>, original?: any) => string;
declare var printf: typeof lib_plankton.string.printf;
declare var eml_log: any;
declare var track_exports: any;
declare var make_logger: (prefix: any, current_loglevel: any) => (obj: any, lvl: any) => void;
2024-04-30 14:17:22 +02:00
declare namespace lib_plankton.object {
/**
* @author fenris
*/
function fetch<type_value>(object: Object, fieldname: string, fallback?: type_value, escalation?: int): type_value;
/**
* @author fenris
*/
function map<type_from, type_to>(object_from: {
[key: string]: type_from;
}, transformator: (value_from: type_from, key?: string) => type_to): {
[key: string]: type_to;
};
/**
* @desc gibt ein Objekt mit bestimmten Einträgen des Eingabe-Objekts zurück
* @author fenris
*/
function filter<type_value>(object_from: {
[key: string]: type_value;
}, predicate: (value_from: type_value, key?: string) => boolean): {
[key: string]: type_value;
};
/**
* @desc wandelt ein Array mit Einträgen der Form {key,value} in ein entsprechendes Objekt um
* @author fenris
*/
function from_array<type_value>(array: Array<{
key: string;
value: type_value;
}>): {
[key: string]: type_value;
};
/**
* @desc wandelt ein Objekt in ein entsprechendes Array mit Einträgen der Form {key,value} um
* @author fenris
*/
function to_array<type_value>(object: {
[key: string]: type_value;
}): Array<{
key: string;
value: type_value;
}>;
/**
* @desc gibt eine Liste von Schlüsseln eines Objekts zurück
* @author fenris
*/
function keys(object: {
[key: string]: any;
}): Array<string>;
/**
* @desc gibt eine Liste von Werten eines Objekts zurück
* @author fenris
*/
function values<type_value>(object: {
[key: string]: type_value;
}): Array<type_value>;
/**
* @desc liest ein Baum-artiges Objekt an einer bestimmten Stelle aus
* @author fenris
*/
function path_read<type_value>(object: Object, path: string, fallback?: type_value, escalation?: int): type_value;
/**
* @desc schreibt einen Wert an eine bestimmte Stelle in einem Baum-artigen Objekt
* @author fenris
*/
function path_write<type_value>(object: Object, path: string, value: type_value, construct?: boolean): void;
/**
* @desc prüft ob ein Objekt einem bestimmten Muster entspricht
* @param {Object} object das zu prüfende Objekt
* @param {Object} pattern das einzuhaltende Muster
* @param {Function} connlate eine Funktion zum Feststellen der Gleichheit von Einzelwerten
* @author fenris
*/
function matches(object: Object, pattern: Object, collate?: typeof instance_collate): boolean;
/**
* @desc erzeugt eine Projektion eines Baum-artigen Objekts in ein Listen-artiges Objekt
* @param {string} [separator] welches Zeichen als Trenner zwischen zwei Pfad-Schritten verwendet werden soll
* @author fenris
*/
function flatten(value: any, separator?: string, key_for_element?: (index: int) => string): Object;
/**
* @author fenris
*/
function clash(x: {
[key: string]: any;
}, y: {
[key: string]: any;
}, { "overwrite": overwrite, "hooks": { "existing": hook_existing, }, }?: {
overwrite?: boolean;
hooks?: {
existing?: (key?: string, value_old?: any, value_new?: any) => void;
};
}): {
[key: string]: any;
};
/**
* @author fenris
*/
function patch(core: Object, mantle: Object, deep?: boolean, path?: string): void;
/**
* @author fenris
*/
function patched(core: Object, mantle: Object, deep?: boolean): Object;
/**
* @author fenris
*/
function attached(object: Object, key: string, value: any): Object;
/**
* @author fenris
*/
function copy(object: Object): Object;
}
declare namespace lib_plankton.translate {
/**
* @author fenris
*/
type type_package_meta = {
identifier: string;
name?: string;
};
/**
* @author fenris
*/
type type_package = {
meta: type_package_meta;
tree: {
[id: string]: string;
};
};
/**
* @desc the level of verbosity, specifiying how much output the system shall provide about its actions
* @author fenris
*/
var _verbosity: int;
/**
* @desc moves a language to the top of the order, making it the primary one
* @author fenris
*/
function promote(identifier: string): void;
/**
* @desc adds a package to the sytem
* @author fenris
*/
function add(package_: type_package): void;
/**
* @desc integrates a package to the system, i.e. creates a new one if none existed so far or merges with an existing one
* @author fenris
*/
function feed(package_: type_package): void;
/**
* @desc tries to retrieve a translation for a specific package identifier
* @author fenris
*/
function fetch(identifier: string, path: string, args?: {
[id: string]: string;
}): lib_plankton.pod.type_pod<string>;
/**
* @desc retrieves a string by going through the order and trying to fetch it for the current entry
* @author fenris
*/
function get(path: string, args?: {
[id: string]: string;
}, fallback?: string): string;
/**
* @author fenris
*/
function list(): Array<type_package_meta>;
/**
* @author fenris
* @todo get rid of this; it's currenly needed only for the cdh-internal lib_completion
*/
function paths(): Array<string>;
/**
* @author fenris
*/
function initialize({ "logprefix": logprefix, "verbosity": verbosity, "packages": packages, "order": order, "autopromote": autopromote, }?: {
logprefix?: string;
verbosity?: int;
packages?: Array<type_package>;
order?: Array<string>;
autopromote?: boolean;
}): Promise<void>;
}
declare namespace lib_plankton.translate {
/**
* @author fenris
*/
function iso_639_1_to_iso_639_2(iso6391: string): string;
/**
* @author fenris
*/
function stance(str: string): string;
}
2024-04-22 10:02:43 +02:00
declare namespace lib_plankton.database {
/**
*/
type type_query = {
template: string;
arguments: Record<string, any>;
};
/**
*/
enum enum_type {
boolean = "boolean",
integer = "integer",
string_short = "string_short",
string_medium = "string_medium",
string_long = "string_long",
float = "float"
}
/**
*/
type type_description_create_table = {
name: string;
key_field?: (null | {
name: string;
type?: enum_type;
comment?: (null | string);
auto_increment?: (null | boolean);
description?: (null | string);
});
data_fields?: Array<{
name: string;
nullable?: boolean;
type: enum_type;
default?: any;
description?: (null | string);
}>;
constraints?: Array<{
kind: string;
parameters?: Record<string, any>;
}>;
description?: (null | string);
};
/**
*/
type type_description_insert = {
table_name: string;
values: Record<string, any>;
};
/**
*/
type type_description_update = {
table_name: string;
values: Record<string, any>;
condition?: (null | string);
arguments?: (null | Record<string, any>);
};
/**
*/
type type_description_delete = {
table_name: string;
condition?: (null | string);
arguments?: (null | Record<string, any>);
};
/**
*/
type type_description_select = {
source: string;
fields?: (null | Array<string>);
condition?: (null | string);
group_by?: (null | string);
having?: (null | string);
order_by?: (null | string);
limit?: (null | int);
arguments?: (null | Record<string, any>);
};
/**
* rows
*/
type type_result_get = Array<Record<string, any>>;
/**
* auto insert id
*/
type type_result_put = (null | int);
/**
* number of affected rows
*/
type type_result_set = int;
/**
* @author fenris
*/
type type_database = {
query_free_get: ((query: type_query) => Promise<type_result_get>);
query_free_put: ((query: type_query) => Promise<type_result_put>);
query_free_set: ((query: type_query) => Promise<type_result_set>);
query_create_table: ((description_create_table: type_description_create_table) => Promise<void>);
query_insert: ((description_insert: type_description_insert) => Promise<type_result_put>);
query_update: ((description_update: type_description_update) => Promise<type_result_set>);
query_delete: ((description_delete: type_description_delete) => Promise<type_result_set>);
query_select: ((description_select: type_description_select) => Promise<type_result_get>);
};
/**
*/
type interface_database = database.type_database;
}
declare namespace lib_plankton.storage {
/**
* implements the idea of a database, which houses datasets (type_value) and manages their access by ids or sth. similar (type_key)
*
* @author fenris
*/
type type_store<type_key, type_value, type_setup_input, type_searchterm, type_preview> = {
/**
* shall prepare the storage instance for use
*
* @author fenris
*/
setup(input: type_setup_input): Promise<void>;
/**
* shall insert a new dataset and return its automatically assign key
*
* @author fenris
*/
create(value: type_value): Promise<type_key>;
/**
* shall modify an existing dataset
*
* @author fenris
*/
update(key: type_key, value: type_value): Promise<void>;
/**
* shall remove an existing dataset
*
* @author fenris
*/
delete(key: type_key): Promise<void>;
/**
* shall get an existing dataset by its key
*
* @author fenris
*/
read(key: type_key): Promise<type_value>;
/**
* shall list keys and previews of existing datasets, which match a certain search term
*
* @author fenris
*/
search(term?: (null | type_searchterm)): Promise<Array<{
key: type_key;
preview: type_preview;
}>>;
};
/**
* for class wrappers
*/
type interface_store<type_key, type_value, type_setup_input, type_searchterm, type_preview> = type_store<type_key, type_value, type_setup_input, type_searchterm, type_preview>;
}
declare namespace lib_plankton.storage {
/**
* implements the idea of a storage without managed keys
*
* @author fenris
*/
type type_chest<type_key, type_value, type_setup_input, type_searchterm, type_preview> = {
/**
* shall prepare the storage instance for use
*
* @author fenris
*/
setup(input: type_setup_input): Promise<void>;
/**
* shall remove all items
*/
clear(): Promise<void>;
/**
* shall insert a new or modify an existing dataset and return whether it is new
*
* @author fenris
*/
write(key: type_key, value: type_value): Promise<boolean>;
/**
* shall remove an existing dataset
*
* @author fenris
*/
delete(key: type_key): Promise<void>;
/**
* shall get an existing dataset by its key
*
* @author fenris
*/
read(key: type_key): Promise<type_value>;
/**
* shall list keys and previews of existing datasets, which match a certain search term
*
* @author fenris
*/
search(term?: (null | type_searchterm)): Promise<Array<{
key: type_key;
preview: type_preview;
}>>;
};
/**
* for class wrappers
*/
type interface_chest<type_key, type_value, type_setup_input, type_searchterm, type_preview> = type_chest<type_key, type_value, type_setup_input, type_searchterm, type_preview>;
}
declare namespace lib_plankton.storage.memory {
/**
* @author fenris
*/
type type_subject<type_value> = {
data: Record<string, type_value>;
};
/**
*/
type type_parameters<type_value> = {};
/**
* @author fenris
*/
function make<type_value>(parameters: type_parameters<type_value>): type_subject<type_value>;
/**
* @author fenris
*/
function clear<type_value>(subject: type_subject<type_value>): void;
/**
* @author fenris
*/
function write<type_value>(subject: type_subject<type_value>, key: string, value: type_value): boolean;
/**
* @author fenris
*/
function delete_<type_value>(subject: type_subject<type_value>, key: string): void;
/**
* @author fenris
*/
function read<type_value>(subject: type_subject<type_value>, key: string): type_value;
/**
* @author fenris
*/
function list<type_value>(subject: type_subject<type_value>): Array<string>;
/**
* @author fenris
*/
function search<type_value>(subject: type_subject<type_value>, term: (null | string)): Array<{
key: string;
preview: string;
}>;
/**
* @author fenris
*/
function implementation_chest<type_value>(parameters: type_parameters<type_value>): type_chest<string, type_value, void, string, string>;
}
declare namespace lib_plankton.storage.memory {
/**
* @author fenris
*/
class class_chest<type_item> implements type_chest<string, type_item, void, string, string> {
private subject;
constructor(parameters: type_parameters<type_item>);
setup(input: any): Promise<void>;
clear(): Promise<void>;
write(key: any, value: any): Promise<boolean>;
delete(key: any): Promise<void>;
2024-04-30 14:17:22 +02:00
read(key: any): Promise<Awaited<type_item>>;
2024-04-22 10:02:43 +02:00
search(term: any): Promise<{
key: string;
preview: string;
}[]>;
}
}
declare namespace lib_plankton.storage.localstorage {
/**
* @author fenris
*/
type type_subject = {
corner: string;
};
/**
* @author fenris
*/
type type_parameters = {
corner?: string;
};
/**
* @author fenris
*/
function make(parameters: type_parameters): type_subject;
/**
* @author fenris
*/
function clear(subject: type_subject): void;
/**
* @author fenris
*/
function write(subject: type_subject, key: string, item: string): boolean;
/**
* @author fenris
*/
function delete_(subject: type_subject, key: string): void;
/**
* @author fenris
*/
function read(subject: type_subject, key: string): string;
/**
* @author fenris
*/
function list(subject: type_subject): Array<string>;
/**
*/
function implementation_chest(parameters: type_parameters): type_chest<string, string, void, string, string>;
}
declare namespace lib_plankton.storage.localstorage {
/**
* uses the browsers localstorage as chest
*
* @author fenris
*/
class class_chest implements type_chest<string, string, string, string, any> {
private subject;
constructor(parameters: type_parameters);
setup(input: any): Promise<void>;
clear(): Promise<void>;
write(key: any, value: any): Promise<boolean>;
delete(key: any): Promise<void>;
read(key: any): Promise<string>;
search(term: any): Promise<{
key: string;
preview: string;
}[]>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
interface interface_input<type_value> {
/**
*/
setup(parent: HTMLElement): Promise<void>;
/**
*/
read(): Promise<type_value>;
/**
*/
write(value: type_value): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_wrapped<type_value_inner, type_value_outer> implements interface_input<type_value_outer> {
/**
*/
private core;
/**
*/
private wrap;
/**
*/
private unwrap;
/**
*/
constructor(core: interface_input<type_value_inner>, wrap: ((value_inner: type_value_inner) => type_value_outer), unwrap: ((value_outer: type_value_outer) => type_value_inner), options?: {});
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<type_value_outer>;
/**
* [implementation]
*/
write(value: type_value_outer): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_hidden implements interface_input<any> {
/**
*/
private dom_input;
/**
*/
private value;
/**
*/
constructor(options?: {
initial_value?: any;
});
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<any>;
/**
* [implementation]
*/
write(value: any): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
* @todo abstract
*/
class class_input_text implements interface_input<string> {
/**
*/
private read_only;
/**
*/
private pattern;
/**
*/
/**
*/
private dom_input;
/**
*/
constructor(options?: {
read_only?: boolean;
pattern?: (null | string);
});
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_email implements interface_input<string> {
/**
*/
private dom_input;
/**
*/
constructor();
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_textarea implements interface_input<string> {
/**
*/
private dom_textarea;
/**
*/
constructor();
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_date implements interface_input<(null | type_date)> {
/**
*/
private required;
/**
*/
private dom_input;
/**
*/
constructor(options?: {
required?: boolean;
});
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<(null | type_date)>;
/**
* [implementation]
*/
write(value: (null | type_date)): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
* @todo abstract
*/
class class_input_number implements interface_input<number> {
/**
*/
private read_only;
/**
*/
private step;
/**
*/
private dom_input;
/**
*/
constructor(options?: {
read_only?: boolean;
step?: (null | float);
});
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<number>;
/**
* [implementation]
*/
write(value: number): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_checkbox implements interface_input<boolean> {
2024-04-24 08:33:22 +02:00
/**
*/
private read_only;
2024-04-22 10:02:43 +02:00
/**
*/
2024-04-30 14:17:22 +02:00
private dom_input;
2024-04-25 23:30:16 +02:00
/**
*/
private hooks_change;
2024-04-22 10:02:43 +02:00
/**
*/
2024-04-24 08:33:22 +02:00
constructor(options?: {
read_only?: boolean;
2024-04-25 23:30:16 +02:00
hooks_change?: Array<((value: boolean) => void)>;
2024-04-24 08:33:22 +02:00
});
2024-04-22 10:02:43 +02:00
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<boolean>;
/**
* [implementation]
*/
write(value: boolean): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_selection implements interface_input<string> {
/**
*/
private options;
/**
*/
private dom_select;
/**
*/
constructor(options: Array<{
value: string;
label: string;
}>);
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_enumeration implements interface_input<string> {
/**
*/
private options;
/**
*/
private dom_inputs;
/**
*/
constructor(options: Array<{
value: string;
label: string;
}>);
/**
* [implementation]
* @todo unique name
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
*/
type type_translations = {
add?: string;
remove?: string;
};
/**
* @author fenris
*/
export class class_input_list<type_element> implements interface_input<Array<type_element>> {
/**
*/
private element_input_factory;
/**
*/
private elements_container_dom;
/**
*/
private elements;
/**
*/
private translations;
/**
*/
constructor(element_input_factory: (() => interface_input<type_element>), options?: {
translations?: type_translations;
});
/**
*/
private clear;
/**
*/
private add;
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<Array<type_element>>;
/**
* [implementation]
*/
write(value: Array<type_element>): Promise<void>;
}
export {};
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_password implements interface_input<string> {
/**
*/
private dom_input;
/**
*/
constructor();
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<string>;
/**
* [implementation]
*/
write(value: string): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_switch implements interface_input<boolean> {
/**
*/
private dom_element;
/**
*/
private value;
/**
*/
constructor();
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<boolean>;
/**
* [implementation]
*/
write(value: boolean): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_time implements interface_input<(null | type_time)> {
/**
*/
private dom_input;
/**
*/
constructor();
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<(null | type_time)>;
/**
* [implementation]
*/
write(value: (null | type_time)): Promise<void>;
}
}
declare namespace lib_plankton.zoo_input {
/**
* @author fenris
*/
class class_input_group<type_record> implements interface_input<type_record> {
/**
*/
private fields;
/**
*/
constructor(fields_raw: Array<{
name: string;
input: interface_input<any>;
label?: (null | string);
help?: (null | string);
}>);
/**
* [implementation]
*/
setup(parent: HTMLElement): Promise<void>;
/**
* [implementation]
*/
read(): Promise<type_record>;
/**
* [implementation]
*/
write(value: type_record): Promise<void>;
}
}
declare namespace lib_plankton.zoo_form {
/**
*/
type type_field = {
name: string;
type: string;
label: (null | string);
};
/**
*/
export type type_form<type_value> = {
method: string;
fields: Array<type_field>;
encode: ((value: type_value) => Record<string, string>);
decode: ((raw: Record<string, string>) => type_value);
class_prefix: string;
root_element: (null | Element);
};
/**
*/
export function make<type_value>(method: string, fields: Array<{
name: string;
type: string;
label?: (null | string);
}>, encode: ((value: type_value) => Record<string, string>), decode: ((raw: Record<string, string>) => type_value), options?: {
class_prefix?: string;
}): type_form<type_value>;
/**
*/
export function make_simple(method: string, fields: Array<{
name: string;
type: string;
label?: (null | string);
}>, options?: {
class_prefix?: string;
}): type_form<Record<string, any>>;
/**
*/
export function clear<type_value>(subject: type_form<type_value>): void;
/**
*/
export function write<type_value>(subject: type_form<type_value>, value: type_value): void;
/**
*/
export function read<type_value>(subject: type_form<type_value>): type_value;
/**
*/
export function render<type_value>(subject: type_form<type_value>, target: Element): Promise<void>;
export {};
}
declare namespace lib_plankton.zoo_form {
/**
*/
type type_action<type_value, type_representation> = {
label: string;
target?: string;
procedure?: ((get_value?: (() => Promise<type_value>), get_representation?: (() => Promise<type_representation>)) => void);
};
/**
* @author fenris
*/
export class class_form<type_value, type_representation> {
/**
*/
private encode;
/**
*/
private decode;
/**
*/
private actions;
/**
*/
private input;
/**
*/
constructor(encode: ((value: type_value) => type_representation), decode: ((representation: type_representation) => type_value), input: lib_plankton.zoo_input.interface_input<type_representation>, actions: Array<type_action<type_value, type_representation>>);
/**
*/
setup(parent: HTMLElement): Promise<void>;
/**
*/
input_read_raw(): Promise<type_representation>;
/**
*/
input_read(): Promise<type_value>;
/**
*/
input_write(value: type_value): Promise<void>;
}
export {};
}
declare namespace lib_plankton.zoo_search {
/**
*/
type type_state = {
term: (null | string);
};
/**
*/
type type_search<type_item> = {
routine: ((term: string) => Promise<Array<type_item>>);
encode_item: ((item: type_item) => string);
hooks_select: Array<((item: type_item) => void)>;
hooks_begin: Array<((term?: string) => void)>;
hooks_end: Array<(() => void)>;
class_prefix: string;
root_element: (null | Element);
state: (null | type_state);
};
/**
*/
function make<type_item>(routine: ((term: string) => Promise<Array<type_item>>), options: {
encode_item?: ((item: type_item) => string);
hooks_select?: Array<((item: type_item) => void)>;
hooks_begin?: Array<((term?: string) => void)>;
hooks_end?: Array<(() => void)>;
class_prefix?: string;
}): type_search<type_item>;
/**
*/
function hook_begin<type_item>(subject: type_search<type_item>, action: ((term: string) => void)): void;
/**
*/
function hook_end<type_item>(subject: type_search<type_item>, action: (() => void)): void;
/**
*/
function hook_select<type_item>(subject: type_search<type_item>, action: ((item: type_item) => void)): void;
/**
*/
function set_state<type_item>(subject: type_search<type_item>, state: type_state): Promise<void>;
/**
*/
function render<type_item>(subject: type_search<type_item>, target: Element, options?: {
state?: type_state;
}): Promise<void>;
}
declare namespace lib_plankton.zoo_editor {
/**
*/
enum enum_mode {
find = "find",
view = "view",
make = "make"
}
/**
*/
enum enum_action {
keep = "keep",
save = "save",
delete = "delete",
find = "find",
make = "make"
}
/**
*/
enum enum_function {
seek = "seek",
read = "read",
create = "create",
update = "update",
delete = "delete"
}
/**
*/
type type_state<type_key, type_value> = {
mode: enum_mode;
key: (null | type_key);
search_state: lib_plankton.zoo_search.type_state;
};
/**
*/
type type_editor<type_key, type_value> = {
functions: Array<enum_function>;
store: lib_plankton.storage.type_store<type_key, type_value, void, string, any>;
search: lib_plankton.zoo_search.type_search<{
key: type_key;
preview: any;
}>;
form: lib_plankton.zoo_form.type_form<type_value>;
hook_switch: (null | ((state: type_state<type_key, type_value>) => void));
state: (null | type_state<type_key, type_value>);
class_prefix: string;
root_element: (null | Element);
};
/**
*/
function make<type_key, type_value>(store: lib_plankton.storage.type_store<type_key, type_value, void, string, any>, form: lib_plankton.zoo_form.type_form<type_value>, options?: {
functions?: Array<enum_function>;
encode_hit?: ((hit: {
key: type_key;
preview: any;
}) => string);
hook_switch?: (null | ((state: type_state<type_key, type_value>) => void));
class_prefix?: string;
}): type_editor<type_key, type_value>;
/**
*/
function render<type_key, type_value>(subject: type_editor<type_key, type_value>, target: Element, options?: {
state?: type_state<type_key, type_value>;
}): Promise<void>;
}
declare namespace lib_plankton.zoo_page {
/**
*/
export type type_location = {
name: string;
parameters: Record<string, any>;
};
/**
*/
type type_handler = ((parameters: Record<string, any>, target_element: Element) => void);
/**
*/
export let _pool: Record<string, type_handler>;
/**
*/
export function encode(location: type_location): string;
/**
*/
export function add_nav_entry(location: type_location, options?: {
label?: (null | string);
}): void;
/**
* encodes a location in the URL and loads it
*/
export function set(location: type_location): void;
/**
*/
export function register(location_name: string, handler: type_handler, options?: {}): void;
/**
*/
export function init(target_element: Element, options?: {
pool?: Record<string, type_handler>;
fallback?: (null | type_location);
}): void;
/**
*/
export function start(): void;
export {};
}