/** * @author fenris */ declare type int = number; /** * @author fenris */ declare type float = number; declare class Buffer { constructor(x: string, modifier?: string); toString(modifier?: string): string; } declare namespace lib_plankton.base { /** * @author fenris */ function environment(): string; } /** * @author fenris */ declare type type_pseudopointer = { value: type_value; }; /** * @author fenris */ declare function pseudopointer_null(): type_pseudopointer; /** * @author fenris */ declare function pseudopointer_make(value: type_value): type_pseudopointer; /** * @author fenris */ declare function pseudopointer_isset(pseudopointer: type_pseudopointer): boolean; /** * @author fenris */ declare function pseudopointer_read(pseudopointer: type_pseudopointer): type_value; /** * @author fenris */ declare function pseudopointer_write(pseudopointer: type_pseudopointer, 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 { /** * @author fenris */ _collate(value: type_value): boolean; } /** * @author fenris */ declare function instance_collate(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 { /** * @author fenris */ _compare(value: type_value): boolean; } /** * @author fenris */ declare function instance_compare(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 { /** * @author fenris */ _clone(): type_value; } /** * @author fenris */ declare function instance_clone(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(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(value: (type_value & { _show?: (() => string); })): string; /** * @author frac */ interface interface_decorator { /** * @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; /** * @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; /** * @author frac */ protected mess: string; /** * @author frac */ constructor(message: string, suberrors?: Array); /** * @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, mantle: Record): Record; } declare module lib_plankton.pod { /** * @author fenris */ type type_pod = { kind: ("empty" | "filled"); value?: type_value; }; /** * @author fenris */ function make_empty(): type_pod; /** * @author fenris */ function make_filled(value: type_value): type_pod; /** * whether the pod is filled * * @author fenris */ function is_filled(pod: type_pod): boolean; /** * return the value, stored in the pod-wrapper * * @author fenris */ function cull(pod: type_pod): type_value; /** * to pass on a empty-pod or to use a filled-pod * * @author fenris */ function propagate(pod: type_pod, function_: ((value: type_value) => type_value_)): type_pod; /** * @author fenris */ function distinguish(pod: type_pod, function_empty: (() => type_result), function_filled: ((value: type_value) => type_result)): type_result; /** */ function show(pod: type_pod, options?: { show_value?: ((value: type_value) => string); }): string; } declare module lib_plankton.pod { /** */ class class_pod { private subject; constructor(subject: type_pod); tear(): type_pod; static empty(): class_pod; static filled(value: type_value): class_pod; is_empty(): boolean; is_filled(): boolean; cull(): type_value; show(show_value?: any): string; toString(): string; propagate(function_: ((value: type_value) => type_value_)): class_pod; distinguish(function_empty: (() => type_result), function_filled: ((value: type_value) => type_result)): type_result; } } declare namespace lib_plankton.code { /** * @author fenris */ interface interface_code { /** * @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 = { /** * @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(decode: (to: type_to) => type_from, to: type_to): type_from; /** * @author fenris */ function inverse_decode(encode: (from: type_from) => type_to, from: type_from): type_to; } declare namespace lib_plankton.code { /** * @author fenris */ class class_code_inverse implements interface_code { /** * @author fenris */ protected subject: interface_code; /** * @author fenris */ constructor(subject: interface_code); /** * @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(encode_first: (from: type_from) => type_between, encode_second: (between: type_between) => type_to, from: type_from): type_to; /** * @author fenris */ function pair_decode(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 implements interface_code { /** * @author fenris */ protected first: interface_code; /** * @author fenris */ protected second: interface_code; /** * @author fenris */ constructor(first: interface_code, second: interface_code); /** * @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 { /** * @author fenris */ protected links: Array>; /** * @author fenris */ constructor(links: Array>); /** * @implementation * @author fenris */ encode(from: any): any; /** * @implementation * @author fenris */ decode(to: any): any; } } declare namespace lib_plankton.code { /** * @author Christian Fraß */ type type_flatten_from = Array<{ [name: string]: any; }>; /** * @author Christian Fraß */ type type_flatten_to = { keys: Array; data: Array>; }; /** * @author Christian Fraß */ function flatten_encode(from: type_flatten_from, keys?: Array): type_flatten_to; /** * @author Christian Fraß */ function flatten_decode(to: type_flatten_to): type_flatten_from; } declare namespace lib_plankton.code { /** * @author fenris */ class class_code_flatten implements interface_code { /** * @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 { /** */ type type_source = any; /** */ type type_target = string; /** * @author fenris */ export function encode(source: type_source, options?: { formatted?: boolean; }): type_target; /** * @author fenris */ export function decode(target: type_target): type_source; /** * @author fenris */ export function implementation_code(): lib_plankton.code.type_code; export {}; } declare namespace lib_plankton.json { /** * @author fenris */ class class_json implements lib_plankton.code.interface_code { /** * @author fenris */ constructor(); /** * @implementation * @author fenris */ encode(x: any): string; /** * @implementation * @author fenris */ decode(x: string): any; } } /** * might be completely obsolete */ declare namespace lib_plankton.call { /** * @author fenris */ type type_promise = Promise; /** * @author fenris */ function promise_reject(reason: type_reason): type_promise; /** * @author fenris */ function promise_resolve(result: type_result): type_promise; /** * @author fenris */ function promise_make(executor: (resolve: ((result?: type_result) => void), reject: ((reason?: type_reason) => void)) => void): type_promise; /** * @author fenris */ function promise_then_close(promise: type_promise, resolver: ((result: type_result) => void), rejector: ((reason: type_reason) => void)): void; /** * @author fenris */ function promise_then_append(promise: type_promise, resolver: ((result: type_result) => type_promise), rejector?: ((reason: type_reason) => type_promise)): type_promise; /** * @author fenris */ function promise_all(promises: Array>): type_promise, type_reason>; /** * @author fenris */ function promise_chain(promises: (Array<(input: type_result) => type_promise>), start?: type_result): type_promise; /** * @author fenris */ function promise_condense(promises: Array<() => type_promise>): type_promise, type_reason>; /** * @author fenris */ function promise_group(promises: Record type_promise)>, options?: { serial?: boolean; }): type_promise, type_reason>; /** * @author fenris */ function promise_wrap(promise: type_promise, transformator_result: ((reason: type_result_inner) => type_result_outer), transformator_reason?: ((reason: type_reason) => type_reason)): type_promise; /** * @author fenris */ /** * @author fenris */ /** * @author fenris */ function promise_attach(state: Record, promise: type_promise, name: string): type_promise, type_reason>; /** * @author fenris */ function promise_delay(promise: type_promise, delay: int): type_promise; } declare namespace lib_plankton.call { /** */ class CancellablePromise extends Promise { /** */ private cancelled; /** */ private interval; /** */ private subject; /** */ constructor(executor: ((resolve: any, reject: any) => void)); /** */ private clear; /** */ then(onfulfilled?: ((value: type_result) => (type_next_resolved | PromiseLike)), onrejected?: ((reason: any) => (type_next_rejected | PromiseLike))): Promise; /** */ catch(x: any): Promise; /** */ 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 = { fetcher: (() => type_promise); 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(fetcher: (() => type_promise)): type_initializer; /** * @author fenris */ function initializer_reset(subject: type_initializer): void; /** * @author fenris */ function initializer_state(subject: type_initializer): enum_initializer_state; /** * @author fenris */ function initializer_get(subject: type_initializer): type_promise; } declare namespace lib_plankton.call { /** * @author fenris */ type type_deferral = { representation: (input: type_input) => Promise; }; /** * @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(deferral: type_deferral, 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(handler: (input: type_input, convey: (output: type_output) => void) => void): type_deferral; /** * @author fenris * @desc wraps a simple function into a deferral (similar to "Promise.resolve"/"Promise.reject") */ function deferral_wrap(function_: (input: type_input) => type_output): type_deferral; /** * @author fenris */ function deferral_id(): type_deferral; /** * @author fenris */ function deferral_const(value: type_value): type_deferral; /** * @author fenris */ function deferral_delay(output: type_output, delay: int): type_deferral; /** * @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} first a simple deferral * @param {(value1 : type_value1)=>type_deferral} second a function depending from a value returning a deferral */ function deferral_compose_serial(first: type_deferral, second: type_deferral): type_deferral; /** * @author fenris */ function deferral_compose_parallel({ "left": deferral_left, "right": deferral_right, }: { left: type_deferral; right: type_deferral; }): type_deferral; /** * @author fenris * @desc repeatedly applied serial composition */ function deferral_chain(members: Array>): type_deferral; /** * @author fenris */ } declare namespace lib_plankton.call { /** * @author fenris */ class class_deferral { /** * @author fenris */ private subject; /** * @author fenris */ private constructor(); /** * @author fenris */ private static _cram; /** * @author fenris */ private static _tear; /** * @author fenris */ static make(handler: (input: type_input, convey: (value: type_output) => void) => void): class_deferral; /** * @author fenris */ use(input: type_input, procedure: (value: type_output) => void): void; /** * @author fenris */ compose_serial(second: class_deferral): class_deferral; /** * @author fenris */ static chain(members: Array>): class_deferral; /** * @author fenris */ static wrap(function_: (input: type_input) => type_output): class_deferral; /** * @author fenris */ static const_(value: type_value): class_deferral; /** * @author fenris */ static delay(output: type_output, delay: int): class_deferral; } } declare namespace lib_plankton.call { /** * converts the "arguments"-map into an array * * @param {Object} args * @author fenris */ function args2list(args: any): Array; /** * 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(x: type_value): type_value; /** * just the identity; useful for some callbacks etc. * * @author fenris */ function const_(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(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): any; /** * @author fenris */ function timeout(procedure: (() => void), delay_in_seconds: float): int; /** * Promise version of "setTimeout" * * @author fenris */ function defer(seconds: float, action: (() => type_result)): Promise; /** * a definition for a value being "defined" * * @author neuc */ function is_def(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(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(name: string): ((object: type_object) => type_output); /** * @author fenris */ type type_coproduct = { kind: string; data?: any; }; /** * @author fenris */ function distinguish(coproduct: type_coproduct, handlers: Record type_output)>, options?: { fallback?: (null | ((coproduct?: type_coproduct) => type_output)); }): type_output; /** */ function try_catch_wrap(get_value: (() => type_value)): { value: (null | type_value); error: (null | any); }; } declare namespace lib_plankton.file { /** * @author fenris */ function read(path: string): Promise; /** * @author fenris */ function write(path: string, content: string): Promise; /** * @author fenris */ function blob_read_text(blob: Blob): lib_plankton.call.type_promise; /** * @author fenris */ function blob_read_arraybuffer(blob: Blob): lib_plankton.call.type_promise; /** * @author fenris */ function blob_read_dataurl(blob: Blob): lib_plankton.call.type_promise; /** * @author fenris */ function blob_write_text(text: string): lib_plankton.call.type_promise; } declare namespace lib_plankton.email { /** */ function send(smtp_credentials: { host: string; port: int; username: string; password: string; }, sender: string, receivers: Array, subject: string, content: string): Promise; } 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; }; } /** * @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; /** */ 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): void; /** */ function info(incident: string, details?: Record): void; /** */ function notice(incident: string, details?: Record): void; /** */ function warning(incident: string, details?: Record): void; /** */ function error(incident: string, details?: Record): void; } declare namespace lib_plankton.log { } declare namespace lib_plankton.object { /** * @author fenris * @deprecated use the "??" operator instead */ function fetch(object: Object, fieldname: string, options?: { fallback?: type_value; escalate?: boolean; }): type_value; /** */ function map(object_from: Record, transformator: ((value_from: type_from, key?: string) => type_to)): Record; /** * gibt ein Objekt mit bestimmten Einträgen des Eingabe-Objekts zurück */ function filter(object_from: Record, predicate: ((value_from: type_value, key?: string) => boolean)): Record; /** * wandelt ein Array mit Einträgen der Form {key,value} in ein entsprechendes Objekt um * * @deprecated use Object.fromEntries instead! */ function from_array(array: Array<{ key: string; value: type_value; }>): Record; /** * wandelt ein Objekt in ein entsprechendes Array mit Einträgen der Form {key,value} um * * @deprecated use Object.entries insetad! */ function to_array(object: Record): Array<{ key: string; value: type_value; }>; /** * gibt eine Liste von Schlüsseln eines Objekts zurück * * @deprecated use Object.keys instead! */ function keys(object: Record): Array; /** * gibt eine Liste von Werten eines Objekts zurück * * @deprecated use Object.values instead! */ function values(object: Record): Array; /** * liest ein Baum-artiges Objekt an einer bestimmten Stelle aus */ function path_read(object: Object, path: string, options?: { fallback?: type_value; escalate?: boolean; }): type_value; /** * schreibt einen Wert an eine bestimmte Stelle in einem Baum-artigen Objekt */ function path_write(object: Object, path: string, value: type_value, construct?: boolean): void; /** * prüft ob ein Objekt einem bestimmten Muster entspricht * * @deprecated not very useful */ function matches(object: Record, pattern: Record, options?: { collate?: ((value_pattern: type_value_pattern, value_object: type_value_object) => boolean); }): boolean; /** * erzeugt eine Projektion eines Baum-artigen Objekts in ein Listen-artiges Objekt */ function flatten(value: any, options?: { separator?: string; key_for_array_element?: ((index: int) => string); }): Record; /** * @deprecated use Object.assign instead! */ function clash(x: Record, y: Record, options?: { overwrite?: boolean; hooks?: { existing?: ((key?: string, value_old?: any, value_new?: any) => void); }; }): Record; /** * @deprecated use Object.assign instead! */ function patch(core: (null | Record), mantle: (null | Record), options?: { deep?: boolean; path?: (null | string); }): void; /** * @deprecated use Object.assign instead! */ function patched(core: Record, mantle: Record, options?: { deep?: boolean; }): Record; /** * @deprecated use Object.assign instead! */ function attached(object: Record, key: string, value: any): Record; /** * @author fenris */ function copy(object: Record): Record; } declare namespace lib_plankton.pair { /** */ type type_pair = { first: type_first; second: type_second; }; } declare namespace lib_plankton.pair { /** */ function swap(pair: type_pair): type_pair; /** */ function show(pair: type_pair, options?: { show_first?: ((first: type_first) => string); show_second?: ((second: type_second) => string); }): string; } declare namespace lib_plankton.list { /** */ type type_separation = { yes: Array; no: Array; }; /** */ type type_result_max = (null | { index: int; element: type_element; value: type_value; }); } declare namespace lib_plankton.list { /** * returns a certain list of integer numbers */ function range(from: int, to: int, options?: { step?: int; }): Array; /** * returns a certain list of consecutiv integer numbers, beginning with 0 */ function sequence(length: int): Array; /** */ function from_iterator(iterator: Iterator): Array; /** */ function is_empty(list: Array): boolean; /** * combines two lists into one * * @param {boolean} [options.cut] whether the result list will be as long as the shortest input list or an exception is thrown if they have different lengths; default: true */ function zip(list_first: Array, list_second: Array, options?: { cut?: boolean; }): Array>; /** * checks whether two lists are equal * * @todo define common function "equals" and default predicate to */ function equals(list1: Array, list2: Array, options?: { collate_element?: ((element1: type_element, element2: type_element) => boolean); }): boolean; /** * creates a list with the elements from the input list, which fulfil a certain predicate (~ filter) */ function keep(list: Array, predicate: ((element: type_element) => boolean)): Array; /** * creates a list with the elements from the input list, which do not fulfil a certain predicate (~ dual filter) */ function drop(list: Array, predicate: ((element: type_element) => boolean)): Array; /** */ function filter_inplace(list: Array, predicate: ((element: type_element) => boolean)): void; /** * returns a list with no duplicates (like unix' "unique") */ function cleaned(list: Array, options?: { collate_element?: ((x: type_element, y: type_element) => boolean); }): Array; /** * creates a binary partition of the list according to a given predicate */ function separate(list: Array, predicate: ((element: type_element) => boolean)): type_separation; /** */ function clone(list: Array): Array; /** */ function reversed(list: Array): Array; /** * @todo use Array.toSorted? */ function sorted(list: Array, options: { compare_element?: ((element1: type_element, element2: type_element) => boolean); }): Array; /** * die Liste in gleich große Blöcke zerlegen */ function chop(list: Array, chunk_size: int): Array>; /** */ function group(list: Array, collate_element: ((x: type_element, y: type_element) => boolean)): Array>; /** */ function has(list: Array, predicate: ((element: type_element) => boolean)): boolean; /** * @deprecate use Array.includes or Array.some */ function contains(list: Array, element: type_element, options: { collate_element?: ((element1: type_element, element2: type_element) => boolean); }): boolean; /** * retrieves the element and its index of the list, which has the maximum value */ function max(list: Array, target_function: ((element: type_element) => type_value), options: { compare_value: ((value1: type_value, value2: type_value) => boolean); }): type_result_max; /** * retrieves the element and its index of the list, which has the mininum value */ function min(list: Array, target_function: (element: type_element) => type_value, options: { compare_value: ((value1: type_value, value2: type_value) => boolean); }): type_result_max; /** * implements the idea of arithmetic distribution like in "(a+b)·(c+d) = (a·c)+(a·d)+(b·c)+(b·d)" * example: distribute([[1,2],[3],[4,5,6]]) = [[1,3,4],[1,3,5],[1,3,6],[2,3,4],[2,3,5],[2,3,6]] */ function distribute(lists: Array>): Array>; /** */ function contrast(list_left: Array, extract_key_left: ((left: type_left) => string), list_right: Array, extract_key_right: ((right: type_right) => string)): { both: Array<{ key: string; left: type_left; right: type_right; }>; only_left: Array<{ key: string; left: type_left; }>; only_right: Array<{ key: string; right: type_right; }>; }; } declare namespace lib_plankton.conf { /** */ type type_schema = ({ enum?: Array; default?: any; description?: string; } | { type: "null"; description?: string; } | { type: "boolean"; nullable?: boolean; enum?: Array; default?: boolean; description?: string; } | { type: "integer"; nullable?: boolean; enum?: Array; default?: int; description?: string; } | { type: "number"; nullable?: boolean; enum?: Array; default?: number; description?: string; } | { type: "string"; nullable?: boolean; enum?: Array; default?: string; description?: string; } | { type: "array"; nullable?: boolean; items: type_schema; enum?: Array>; default?: Array; description?: string; } | { type: "object"; nullable?: boolean; properties?: Record; required?: Array; additionalProperties?: (false | type_schema); enum?: Array>; default?: Record; description?: string; } | { anyOf: Array; default?: any; } | { allOf: Array; } | { oneOf: Array; } | { not: type_schema; }); /** */ type type_report = { incident: string; details: Record; }; /** */ type type_adaption = { reports: Array; result: lib_plankton.pod.type_pod; }; } declare namespace lib_plankton.conf { /** * @todo versioning */ function refine(schema: type_schema, value_raw: any): type_result; /** */ function load(schema: type_schema, path: (null | string)): Promise; } 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, 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} * @author fenris */ function split(chain: string, separator?: string): Array; /** * @author neu3no */ function explode(str: string, needle: string, max: int): Array; /** * @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; } /** * @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, 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, 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; declare namespace lib_plankton.database { /** */ type type_query = { template: string; arguments: Record; }; /** */ 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; }>; description?: (null | string); }; /** */ type type_description_insert = { table_name: string; values: Record; returning?: (null | string); }; /** */ type type_description_update = { table_name: string; values: Record; condition?: (null | string); arguments?: (null | Record); }; /** */ type type_description_delete = { table_name: string; condition?: (null | string); arguments?: (null | Record); }; /** */ type type_description_select = { source: string; fields?: (null | Array); condition?: (null | string); group_by?: (null | string); having?: (null | string); order_by?: (null | string); limit?: (null | int); arguments?: (null | Record); }; /** * rows */ type type_result_get = Array>; /** * auto insert id */ type type_result_put = (null | int); /** * number of affected rows */ type type_result_set = int; /** * @author fenris */ type type_database = { wrap_name: ((name: string) => string); query_free_get: ((query: type_query) => Promise); query_free_put: ((query: type_query) => Promise); query_free_set: ((query: type_query) => Promise); query_create_table: ((description_create_table: type_description_create_table) => Promise); query_insert: ((description_insert: type_description_insert) => Promise); query_update: ((description_update: type_description_update) => Promise); query_delete: ((description_delete: type_description_delete) => Promise); query_select: ((description_select: type_description_select) => Promise); }; /** */ 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 = { /** * shall prepare the storage instance for use * * @author fenris */ setup(input: type_setup_input): Promise; /** * shall insert a new dataset and return its automatically assign key * * @author fenris */ create(value: type_value): Promise; /** * shall modify an existing dataset * * @author fenris */ update(key: type_key, value: type_value): Promise; /** * shall remove an existing dataset * * @author fenris */ delete(key: type_key): Promise; /** * shall get an existing dataset by its key * * @author fenris */ read(key: type_key): Promise; /** * shall list keys and previews of existing datasets, which match a certain search term * * @author fenris */ search(term?: (null | type_searchterm)): Promise>; }; /** * for class wrappers */ type interface_store = type_store; } declare namespace lib_plankton.storage { /** * implements the idea of a storage without managed keys * * @author fenris */ type type_chest = { /** * shall prepare the storage instance for use * * @author fenris */ setup(input: type_setup_input): Promise; /** * shall remove all items */ clear(): Promise; /** * 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; /** * shall remove an existing dataset * * @author fenris */ delete(key: type_key): Promise; /** * shall get an existing dataset by its key * * @author fenris */ read(key: type_key): Promise; /** * shall list keys and previews of existing datasets, which match a certain search term * * @author fenris */ search(term?: (null | type_searchterm)): Promise>; }; /** * for class wrappers */ type interface_chest = type_chest; } declare namespace lib_plankton.storage.memory { /** * @author fenris */ type type_subject = { data: Record; }; /** */ type type_parameters = {}; /** * @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, value: type_value): boolean; /** * @author fenris */ function delete_(subject: type_subject, key: string): void; /** * @author fenris */ function read(subject: type_subject, key: string): type_value; /** * @author fenris */ function list(subject: type_subject): Array; /** * @author fenris */ function search(subject: type_subject, term: (null | string)): Array<{ key: string; preview: string; }>; /** * @author fenris */ function implementation_chest(parameters: type_parameters): type_chest; } declare namespace lib_plankton.storage.memory { /** * @author fenris */ class class_chest implements type_chest { private subject; constructor(parameters: type_parameters); setup(input: any): Promise; clear(): Promise; write(key: any, value: any): Promise; delete(key: any): Promise; read(key: any): Promise; 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; /** */ function implementation_chest(parameters: type_parameters): type_chest; } declare namespace lib_plankton.storage.localstorage { /** * uses the browsers localstorage as chest * * @author fenris */ class class_chest implements type_chest { private subject; constructor(parameters: type_parameters); setup(input: any): Promise; clear(): Promise; write(key: any, value: any): Promise; delete(key: any): Promise; read(key: any): Promise; search(term: any): Promise<{ key: string; preview: string; }[]>; } } declare namespace lib_plankton.map { /** */ type type_pair = { key: type_key; value: type_value; }; /** * @author fenris */ type type_map = { size: (() => int); has: ((key: type_key) => boolean); get: ((key: type_key, fallback?: lib_plankton.pod.type_pod) => type_value); set: ((key: type_key, value: type_value) => void); delete: ((key: type_key) => void); iterate: ((procedure: ((value: type_value, key?: type_key) => void)) => void); }; } declare namespace lib_plankton.map { /** */ function clear(map: type_map): void; /** */ function keys(map: type_map): Array; /** */ function values(map: type_map): Array; /** */ function dump(map: type_map): Array>; /** */ function show(map: type_map, options?: { show_key?: ((key: type_key) => string); show_value?: ((value: type_value) => string); }): string; } declare namespace lib_plankton.map.simplemap { /** */ type type_subject = { data: Record; }; /** */ function make(options?: { data?: Record; }): type_subject; /** */ function size(subject: type_subject): int; /** */ function has(subject: type_subject, key: string): boolean; /** */ function get_safe(subject: type_subject, key: string): lib_plankton.pod.type_pod; /** */ function get(subject: type_subject, key: string, fallback?: lib_plankton.pod.type_pod): type_value; /** */ function set(subject: type_subject, key: string, value: type_value): void; /** */ function delete_(subject: type_subject, key: string): void; /** */ function iterate(subject: type_subject, procedure: ((value?: type_value, key?: string) => void)): void; /** */ function implementation_map(subject: type_subject): type_map; } declare namespace lib_plankton.map.hashmap { /** * we base the hashmap on a simplemap, whos keys are the hashes and whos values are the key/value-pairs */ type type_subject = { hashing: ((key: type_key) => string); core: lib_plankton.map.simplemap.type_subject>; }; /** */ function make(hashing: ((key: type_key) => string), options?: { pairs?: Array>; }): type_subject; /** */ function size(subject: type_subject): int; /** */ function has(subject: type_subject, key: type_key): boolean; /** */ function get(subject: type_subject, key: type_key, fallback?: lib_plankton.pod.type_pod): type_value; /** */ function set(subject: type_subject, key: type_key, value: type_value): void; /** */ function delete_(subject: type_subject, key: type_key): void; /** */ function iterate(subject: type_subject, procedure: ((value?: type_value, key?: type_key) => void)): void; /** */ function implementation_map(subject: type_subject): type_map; } declare namespace lib_plankton.map.collatemap { /** */ type type_collation = ((key1: type_key, key2: type_key) => boolean); /** */ export type type_subject = { collation: type_collation; pairs: Array>; }; /** */ export function make(collation: type_collation, options?: { pairs?: Array>; }): type_subject; /** */ export function size(subject: type_subject): int; /** */ export function has(subject: type_subject, key: type_key): boolean; /** * @todo use .find */ export function get(subject: type_subject, key: type_key, fallback?: lib_plankton.pod.type_pod): type_value; /** */ export function set(subject: type_subject, key: type_key, value: type_value): void; /** */ export function delete_(subject: type_subject, key: type_key): void; /** */ export function iterate(subject: type_subject, function_: ((value?: type_value, key?: type_key) => void)): void; /** */ export function implementation_map(subject: type_subject): type_map; export {}; } declare namespace lib_plankton.complex { /** * @author fenris */ type type_complex = { rea: float; ima: float; }; /** * erstellt eine komplexe Zahl anhand ihrer kartesianischen Koordinaten * * @author fenris */ function make_cartesian(rea_: float, ima_: float): type_complex; /** * erstellt eine komplexe Zahl anhand ihrer Polar-Koordinaten * * @author fenris */ function make_polar(abs: float, arg: float): type_complex; /** * alias zu "make_cartesian" * * @author fenris */ function make(rea_: float, ima_: float): type_complex; /** * erstellt die komplexe Null * * @author fenris */ function nul(): type_complex; /** * erstellt die komplexe Eins * * @author fenris */ function one(): type_complex; /** * gibt den Real-Teil einer komplexen Zahl zurück * * @author fenris */ function rea(x: type_complex): float; /** * gibt den Imaginär-Teil einer komplexen Zahl zurück * * @author fenris */ function ima(x: type_complex): float; /** * gibt die konjugierte komplexe Zahl zurück * * @author fenris */ function con(x: type_complex): type_complex; /** * gibt den Betrag einer komplexen Zahl zurück * * @author fenris */ function abs(x: type_complex): float; /** * gibt das Argument einer komplexen Zahl zurück (auf dem Hauptzweig des komplexen Logarithmus) * * @author fenris */ function arg(x: type_complex): float; /** * gibt eine skalierte komplexe Zahl zurück (das Produkt mit einer reellen Zahl) * * @author fenris */ function scl(x: type_complex, s: float): type_complex; /** * errechnet die Summe zweier komplexer Zahl * * @author fenris */ function add(x: type_complex, y: type_complex): type_complex; /** * gibt die additiv inverse, also negierte komplexe Zahl zurück * * @author fenris */ function neg(x: type_complex): type_complex; /** * ermittelt die Differenz zweier komplexer Zahlen * * @author fenris */ function sub(x: type_complex, y: type_complex): type_complex; /** * ermittelt das Produkt zweier komplexer Zahlen * * @author fenris */ function mul(x: type_complex, y: type_complex): type_complex; /** * ermittelt die multiplikativ inverse komplexe Zahl, also den Kehrwert * * @author fenris */ function inv(x: type_complex): type_complex; /** * ermittelt den Quotienten zweier komplexer Zahlen * * @author fenris */ function div(x: type_complex, y: type_complex): type_complex; /** * ermittelt die natürliche Potenz einer komplexen Zahl * * @author fenris */ function npow(x: type_complex, n: int): type_complex; /** * ermittelt die natürliche Potenz einer komplexen Zahl * * @author fenris * @deprecated use "npow" instead * @todo remove */ function exp(x: type_complex, n: int): type_complex; /** * ermittelt die Potenz zweier komplexer Zahlen * * @author fenris * @todo Probleme der komplexen Exponentiation berücksichtigen */ function pow(x: type_complex, y: type_complex): type_complex; /** * gibt die n-ten komplexen Einheits-Wurzeln zurück ({x ∈ C | x^n = 1}) * * @author fenris */ function unitroots(n: int): Array; /** * {x ∈ C | x^n = y} * * @author fenris */ function normroots(n: int, y: type_complex): Array; /** * ermittelt ob zwei komplexe Zahlen gleich sind * * @author fenris */ function equ(x: type_complex, y: type_complex, threshold?: float): boolean; /** * gibt eine textuelle Repräsentation einer komplexen Zahl zurück * * @author fenris */ function str(x: type_complex): string; } declare namespace lib_plankton.complex { /** * @author fenris */ class class_complex { /** * @author fenris */ private subject; /** * @author fenris */ private constructor(); /** * @author fenris */ private static _cram; /** * @author fenris */ private static _tear; /** * @author fenris */ static make_cartesian(rea: float, ima: float): class_complex; /** * @author fenris */ static make_polar(abs: float, arg: float): class_complex; /** * @author fenris */ static make(rea: float, ima: float): class_complex; /** * @author fenris */ static nul(): class_complex; /** * @author fenris */ static one(): class_complex; /** * @author fenris */ con(): class_complex; /** * @author fenris */ abs(): float; /** * @author fenris */ arg(): float; /** * @author fenris */ scl(s: float): class_complex; /** * @author fenris */ add(other: class_complex): class_complex; /** * @author fenris */ neg(): class_complex; /** * @author fenris */ sub(other: class_complex): class_complex; /** * @author fenris */ mul(other: class_complex): class_complex; /** * @author fenris */ inv(): class_complex; /** * @author fenris */ div(other: class_complex): class_complex; /** * @author fenris */ exp(n: int): class_complex; /** * @author fenris */ pow(other: class_complex): class_complex; /** * @author fenris */ equ(other: class_complex): boolean; /** * @author fenris */ str(): string; /** * @author fenris */ toString(): string; } } declare namespace lib_plankton.math { /** * @desc golden ratio (e.g. for generating colors) * @author fenris */ const phi: float; /** * @author fenris */ const e: float; /** * @author fenris */ const pi: float; /** * @author fenris */ const tau: float; } declare namespace lib_plankton.math { /** * @author fenris */ function clamp(x: number, a?: number, b?: number): number; /** * @desc the mathematical sign-function * @return {int} an element of {-1,0,+1} * @author fenris */ function sgn(x: number): int; /** * @desc integer division * @author fenris */ function div(x: float, y: float): float; /** * @desc real modulo operator * @author fenris */ function mod(x: float, y: float): float; /** * @desc computes "x^y mod z" via square-and-multiply * @param {int} base ("x") * @param {int} exponent ("y") * @param {int} modulus ("z") * @return {int} * @author fenris * @todo handle invalid cases (e.g. "z < 1") * @todo implement iteratively */ function modpow(base: int, exponent: int, modulus: int): int; /** * @desc determines if two integers are coprime, i.e. that they don't have a common divisor greater than 1 * @author fenris * @todo write function "gcdx" and base on it */ function coprime(x: int, y: int): boolean; /** * @desc extended euclidean algorithm for computing multiplicative inverse elements * @param {int} modulus * @param {int} element * @author fenris * @todo write function "gcdx" and base on it * @todo handle more invalid cases */ function inv(modulus: int, element: int, positive?: boolean): int; /** * @author fenris */ function interpolate_linear(x: number, y: number, t?: number): number; /** * @desc kind of the inverse of linear interpolation; i.e. to find the coefficient "t" for given values x, y and * their presumed interpolation v * @author fenris */ function appoint_linear(x: number, y: number, v: number): number; /** * continued fraction decomposition */ function cfd(x: float, n?: int): Array; } declare namespace lib_plankton.math { /** * @author fenris */ type type_relationparameters = { symbol?: string; name?: string; predicate?: (value: type_value, reference: type_value) => boolean; }; /** * @author fenris */ class class_relation implements interface_showable, interface_hashable, interface_collatable> { /** * @author fenris */ protected id: string; /** * @author fenris */ protected symbol: string; /** * @author fenris */ protected name: string; /** * @author fenris */ protected predicate: (value: type_value, reference: type_value) => boolean; /** * @author fenris */ check(value: type_value, reference: type_value): boolean; /** * @author fenris */ constructor(id: string, { "symbol": symbol, "name": name, "predicate": predicate, }: type_relationparameters); /** * @author fenris */ id_get(): string; /** * @author fenris */ symbol_get(): string; /** * @author fenris */ name_get(): string; /** * @desc [accessor] [implementation] * @author fenris */ _show(): string; /** * @desc [accessor] [implementation] * @author fenris */ _hash(): string; /** * @desc [accessor] [implementation] * @author fenris */ _collate(relation: class_relation): boolean; /** * @author fenris */ toString(): string; /** * @author fenris */ protected static pool(): { [id: string]: type_relationparameters; }; /** * @author fenris */ static get(id: string): class_relation; /** * @author fenris */ static available(): Array; } /** * @author fenris */ class class_filtrationitem implements interface_showable { /** * @author fenris */ protected extract: (dataset: Object) => type_value; /** * @author fenris */ protected relation: class_relation; /** * @author fenris */ protected reference: type_value; /** * @author fenris */ constructor({ "extract": extract, "relation": relation, "reference": reference, }: { extract: (dataset: Object) => type_value; relation: class_relation; reference: type_value; }); /** * @author fenris */ check(dataset: Object): boolean; /** * @desc [implementation] * @author fenris */ _show(): string; /** * @author fenris */ toString(): string; } /** * @desc disjunctive normal form * @author fenris */ class class_filtration implements interface_showable { /** * @author fenris */ protected clauses: Array>>; /** * @author fenris */ constructor(clauses: Array>>); /** * @author fenris */ check(dataset: Object): boolean; /** * @author fenris */ use(datasets: Array): Array; /** * @desc [implementation] * @author fenris */ _show(): string; /** * @author fenris */ toString(): string; } /** * @author fenris * @deprecated */ function comparator_to_relation(comparator: (x: type_value, y: type_value) => int): (x: type_value, y: type_value) => boolean; /** * @author fenris * @deprecated */ function relation_to_comparator(relation: (x: type_value, y: type_value) => boolean): (x: type_value, y: type_value) => int; } declare module lib_calculus { /** * @class Calculus * @desc Ensure precision of mathematical operations */ class Calculus { /** @desc only for typescript */ private NORM; /** * @constructor * @þaram {number} norm */ constructor(norm?: number); /** * normalize * @param {number} value * @return {number} */ normalize(value: number): number; /** * denormalize * @param {number} value * @return {number} */ denormalize(value: number): number; } } declare namespace lib_plankton.math { /** * {x ∈ C | 0 = ax³ + bx² + cx + d} * * @author fenris */ function cubic_solve(a: lib_plankton.complex.type_complex, b: lib_plankton.complex.type_complex, c: lib_plankton.complex.type_complex, d: lib_plankton.complex.type_complex): Array; /** * {x ∈ C | 0 = ax³ + bx² + cx + d} * * @author fenris */ function cubic_solve_real(a: float, b: float, c: float, d: float): Array; } declare namespace lib_plankton.color { /** * @author fenris */ type type_model_hsv = { hue: float; saturation: float; value: float; }; /** * @author fenris */ type type_model_hsl = { hue: float; saturation: float; lightness: float; }; /** * @author fenris */ type type_model_rgb = { red: float; green: float; blue: float; }; /** * @author fenris */ type type_color = { model: type_model_rgb; }; } declare namespace lib_plankton.color { /** */ function make_hsv({ "hue": hue, "saturation": saturation, "value": value }: { hue?: float; saturation?: float; value?: float; }): type_color; /** */ function make_hsl(model_hsl: type_model_hsl): type_color; /** */ function make_rgb(model_rgb: type_model_rgb): type_color; /** */ function to_hsv(color: type_color): type_model_hsv; /** */ function to_hsl(color: type_color): type_model_hsl; /** */ function to_rgb(color: type_color): type_model_rgb; /** */ function to_cmyk(color: type_color): type_model_rgb; /** */ function add(color1: type_color, color2: type_color): type_color; /** */ function multiply(color1: type_color, color2: type_color): type_color; /** * @todo blend through other model? */ function blend(color1: type_color, color2: type_color, strength?: float): type_color; /** */ function mix(color1: type_color, color2: type_color, { "strength1": option_strength1, "strength2": option_strength2, }?: { strength1?: float; strength2?: float; }): type_color; /** */ function output_rgb(color: type_color): string; /** */ function output_hex(color: type_color): string; /** */ function output_dot(color: type_color): string; /** */ function give_generic(n: int, { "offset": option_offset, "saturation": option_saturation, "value": option_value, }: { offset?: float; saturation?: float; value?: float; }): type_color; /** */ function give_gray({ "value": option_value, }: { value?: float; }): type_color; /** */ function give_black(): type_color; /** */ function give_white(): type_color; /** */ function give_red({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; /** */ function give_green({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; /** */ function give_blue({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; /** */ function give_yellow({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; /** */ function give_cyan({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; /** */ function give_magenta({ "saturation": option_saturation, "value": option_value, }?: { saturation?: float; value?: float; }): type_color; } /** * @author fenris */ declare namespace lib_plankton.xml { /** * @author fenris */ abstract class class_node { /** * @author fenris */ abstract compile(depth?: int): string; } /** * @author fenris */ class class_node_text extends class_node { /** * @author fenris */ protected content: string; /** * @author fenris */ constructor(content: string); /** * @author fenris */ compile(depth?: int): string; } /** * @author fenris */ class class_node_comment extends class_node { /** * @author fenris */ protected content: string; /** * @author fenris */ constructor(content: string); /** * @author fenris */ compile(depth?: int): string; } /** * @author fenris */ class class_node_complex extends class_node { /** * @author fenris */ protected name: string; /** * @author fenris */ protected attributes: { [key: string]: string; }; /** * @author fenris */ protected children: Array; /** * @author fenris */ constructor(name: string, attributes?: { [key: string]: string; }, children?: any[]); /** * @author fenris */ compile(depth?: int): string; } } declare namespace lib_plankton.http { /** * @author fenris */ enum enum_method { options = "options", head = "head", get = "get", delete = "delete", post = "post", put = "put", patch = "patch" } /** * @author fenris */ type type_request = { scheme: ("http" | "https"); host: (null | string); path: string; version: string; method: enum_method; query: (null | string); headers: Record; body: (null | Buffer); }; /** * @author fenris */ type type_response = { version: (null | string); status_code: int; headers: Record; body: Buffer; }; } declare namespace lib_plankton.http { /** * @author fenris */ function encode_method(method: enum_method): string; /** * @author fenris */ function encode_request(request: type_request): string; /** * @author fenris */ function decode_request(request_raw: string): type_request; /** * @author fenris */ function encode_response(response: type_response): string; /** * @author fenris */ function decode_response(response_raw: string): type_response; /** * executes an HTTP request * * @todo define type_signal */ function call(request: type_request, options?: { timeout?: (null | float); follow_redirects?: boolean; implementation?: ("fetch" | "http_module"); }): Promise; } declare namespace lib_plankton.http { /** * @author fenris */ class class_http_request implements lib_plankton.code.interface_code { /** * @author fenris */ constructor(); /** * @implementation * @author fenris */ encode(x: type_request): string; /** * @implementation * @author fenris */ decode(x: string): type_request; } /** * @author fenris */ class class_http_response implements lib_plankton.code.interface_code { /** * @author fenris */ constructor(); /** * @implementation * @author fenris */ encode(x: type_response): string; /** * @implementation * @author fenris */ decode(x: string): type_response; } } declare namespace lib_plankton.url { /** * @author fenris */ type type_url = { scheme: (null | string); host: (null | string); username: (null | string); password: (null | string); port: (null | int); path: (null | string); query: (null | string); hash: (null | string); }; } declare namespace lib_plankton.url { /** * @author fenris */ function encode(url: type_url): string; /** * @author fenris * @todo arguments */ function decode(url_raw: string): type_url; /** * @author fenris */ function implementation_code(): lib_plankton.code.type_code; } declare namespace lib_plankton.url { /** * @author fenris */ class class_url implements lib_plankton.code.interface_code { /** * @author fenris */ constructor(); /** * @implementation * @author fenris */ encode(x: any): string; /** * @implementation * @author fenris */ decode(x: string): any; } } declare namespace lib_plankton.pit { /** */ type type_date = { year: int; month: int; day: int; }; /** */ type type_ywd = { year: int; week: int; day: int; }; /** */ type type_time = { hour: int; minute: int; second: int; }; /** */ type type_datetime = { timezone_shift: int; date: type_date; time: (null | type_time); }; /** */ type type_pit = int; } declare namespace lib_plankton.pit { /** * @todo complete */ function timezone_name_to_timezone_shift(timezone_name: string): int; /** */ function date_object_get_week_of_year(date: Date): int; /** */ function to_unix_timestamp(pit: type_pit): int; /** */ function from_unix_timestamp(unix_timestamp: int): type_pit; /** */ function to_date_object(pit: type_pit): Date; /** * @todo test */ function to_datetime(pit: type_pit, { timezone_shift, }?: { timezone_shift?: int; }): type_datetime; /** */ function from_datetime(datetime: type_datetime): type_pit; /** */ function is_before(pit: type_pit, reference: type_pit): boolean; /** */ function is_between(pit: type_pit, reference_left: type_pit, reference_right: type_pit): boolean; /** */ function shift_day(pit: type_pit, increment: int): type_pit; /** */ function shift_week(pit: type_pit, increment: int): type_pit; /** */ function trunc_week(pit: type_pit): type_pit; /** */ function now(): type_pit; /** * @param year year according to specified timezone shift * @param week week according to specified timezone shift * @return the begin of the week (monday, 00:00) */ function from_ywd(ywd: type_ywd, options?: { timezone_shift?: int; }): type_pit; /** * @todo timezone */ function to_ywd(pit: type_pit, options?: { timezone_shift?: int; }): type_ywd; /** * computes the point in time for switching to central european summer time * * @todo write tests */ function cest_switch_on(year: int): type_pit; /** * computes the point in time for switching away from central european summer time * * @todo write tests */ function cest_switch_off(year: int): type_pit; /** */ function timezone_shift_ce(pit: type_pit): int; /** * [convenience] */ function to_datetime_ce(pit: type_pit): type_datetime; /** */ function datetime_translate(datetime: type_datetime, timezone_shift: int): type_datetime; /** * [convenience] */ function datetime_translate_ce(datetime: type_datetime): type_datetime; /** */ function timezone_shift_format(timezone_shift: int): string; /** */ function date_format(date: type_date): string; /** */ function time_format(time: type_time, { show_seconds, }?: { show_seconds?: boolean; }): string; /** * @todo show timezone */ function datetime_format(datetime: (null | type_datetime), { timezone_indicator, show_timezone, adjust_to_ce, omit_date, }?: { timezone_indicator?: string; show_timezone?: boolean; adjust_to_ce?: boolean; omit_date?: boolean; }): string; /** */ function timespan_format(from: type_datetime, to: (null | type_datetime), { timezone_indicator, show_timezone, adjust_to_ce, omit_date, }?: { timezone_indicator?: string; show_timezone?: boolean; adjust_to_ce?: boolean; omit_date?: boolean; }): string; } declare namespace lib_plankton.www_form { /** */ type type_source = Record; /** */ type type_target = string; /** * @author fenris */ function encode(source: type_source): type_target; /** * @author fenris */ function decode(target: type_target): type_source; } declare namespace lib_plankton.www_form { /** * @author fenris */ class class_www_form implements lib_plankton.code.interface_code { /** * @author fenris */ constructor(); /** * @implementation * @author fenris */ encode(source: type_source): type_target; /** * @implementation * @author fenris */ decode(target: type_target): type_source; } } 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; /** * @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; /** * @author fenris * @todo get rid of this; it's currenly needed only for the cdh-internal lib_completion */ function paths(): Array; /** * @author fenris */ function initialize({ "logprefix": logprefix, "verbosity": verbosity, "packages": packages, "order": order, "autopromote": autopromote, }?: { logprefix?: string; verbosity?: int; packages?: Array; order?: Array; autopromote?: boolean; }): Promise; } 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; } declare namespace lib_plankton.zoo_page { /** */ export type type_location = { name: string; parameters: Record; }; /** */ type type_handler = ((parameters: Record, target_element: Element) => void); /** */ export let _pool: Record; /** */ 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; fallback?: (null | type_location); }): void; /** */ export function start(): void; export {}; } declare namespace lib_plankton.zoo_input { /** * @author fenris */ interface interface_input { /** */ setup(parent: HTMLElement): Promise; /** */ read(): Promise; /** */ write(value: type_value): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_wrapped implements interface_input { /** */ private core; /** */ private wrap; /** */ private unwrap; /** */ constructor(core: interface_input, wrap: ((value_inner: type_value_inner) => type_value_outer), unwrap: ((value_outer: type_value_outer) => type_value_inner), options?: {}); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: type_value_outer): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_soft implements interface_input<(null | type_value_core)> { /** */ private core; /** */ private dom_set; /** */ private dom_wrapper; /** */ constructor(core: interface_input, options?: {}); /** */ private toggle; /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise<(null | type_value_core)>; /** * [implementation] */ write(value: (null | type_value_core)): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_hidden implements interface_input { /** */ private dom_input; /** */ private value; /** */ constructor(options?: { initial_value?: any; }); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: any): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris * @todo abstract */ class class_input_text implements interface_input { /** */ private read_only; /** */ private pattern; /** */ /** */ private dom_input; /** */ constructor(options?: { read_only?: boolean; pattern?: (null | string); }); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_email implements interface_input { /** */ private dom_input; /** */ constructor(); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_textarea implements interface_input { /** */ private dom_textarea; /** */ constructor(); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_date implements interface_input<(null | lib_plankton.pit.type_date)> { /** */ private required; /** */ private dom_input; /** */ constructor(options?: { required?: boolean; }); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise<(null | lib_plankton.pit.type_date)>; /** * [implementation] */ write(value: (null | lib_plankton.pit.type_date)): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris * @todo abstract */ class class_input_number implements interface_input { /** */ private read_only; /** */ private step; /** */ private dom_input; /** */ constructor(options?: { read_only?: boolean; step?: (null | float); }); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: number): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_checkbox implements interface_input { /** */ private read_only; /** */ private dom_input; /** */ private hooks_change; /** */ constructor(options?: { read_only?: boolean; hooks_change?: Array<((value: boolean) => void)>; }); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: boolean): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_selection implements interface_input { /** */ private options; /** */ private dom_select; /** */ constructor(options: Array<{ value: string; label: string; }>); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_enumeration implements interface_input { /** */ private options; /** */ private dom_inputs; /** */ constructor(options: Array<{ value: string; label: string; }>); /** * [implementation] * @todo unique name */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** */ type type_translations = { add?: string; remove?: string; }; /** * @author fenris */ export class class_input_list implements interface_input> { /** */ private element_input_factory; /** */ private elements_container_dom; /** */ private elements; /** */ private translations; /** */ constructor(element_input_factory: (() => interface_input), options?: { translations?: type_translations; }); /** */ private clear; /** */ private add; /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise>; /** * [implementation] */ write(value: Array): Promise; } export {}; } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_password implements interface_input { /** */ private dom_input; /** */ constructor(); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: string): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_switch implements interface_input { /** */ private dom_element; /** */ private value; /** */ constructor(); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: boolean): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_time implements interface_input<(null | lib_plankton.pit.type_time)> { /** */ private dom_input; /** */ constructor(); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise<(null | lib_plankton.pit.type_time)>; /** * [implementation] */ write(value: (null | lib_plankton.pit.type_time)): Promise; } } declare namespace lib_plankton.zoo_input { /** * @author fenris */ class class_input_group implements interface_input { /** */ private fields; /** */ constructor(fields_raw: Array<{ name: string; input: interface_input; label?: (null | string); help?: (null | string); }>); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise; /** * [implementation] */ write(value: type_record): Promise; } } declare namespace lib_plankton.zoo_input { /** */ class class_input_hashmap implements lib_plankton.zoo_input.interface_input> { /** */ private hash_key; /** */ private core; /** */ constructor(hash_key: ((key: type_key) => string), key_input_factory: (() => lib_plankton.zoo_input.interface_input), value_input_factory: (() => lib_plankton.zoo_input.interface_input)); /** * [implementation] */ setup(parent: HTMLElement): Promise; /** * [implementation] */ read(): Promise>; /** * [implementation] */ write(map: lib_plankton.map.type_map): Promise; } } declare namespace lib_plankton.zoo_input { /** */ class class_input_datetime implements interface_input { /** */ private core; /** */ constructor(options?: { label_timezone_shift?: string; label_date?: string; label_time?: string; }); /** */ setup(parent: HTMLElement): Promise; /** */ read(): Promise; /** */ write(value: lib_plankton.pit.type_datetime): Promise; } } declare namespace lib_plankton.zoo_input { /** * for central europe with daylight saving time feature */ class class_input_datetime_central_europe implements interface_input { /** */ private core; /** */ constructor(options?: { label_date?: string; label_time?: string; }); /** */ setup(parent: HTMLElement): Promise; /** */ read(): Promise; /** */ write(value: lib_plankton.pit.type_datetime): Promise; } } declare namespace lib_plankton.zoo_form { /** */ type type_field = { name: string; type: string; label: (null | string); }; /** */ export type type_form = { method: string; fields: Array; encode: ((value: type_value) => Record); decode: ((raw: Record) => type_value); class_prefix: string; root_element: (null | Element); }; /** */ export function make(method: string, fields: Array<{ name: string; type: string; label?: (null | string); }>, encode: ((value: type_value) => Record), decode: ((raw: Record) => type_value), options?: { class_prefix?: string; }): type_form; /** */ export function make_simple(method: string, fields: Array<{ name: string; type: string; label?: (null | string); }>, options?: { class_prefix?: string; }): type_form>; /** */ export function clear(subject: type_form): void; /** */ export function write(subject: type_form, value: type_value): void; /** */ export function read(subject: type_form): type_value; /** */ export function render(subject: type_form, target: Element): Promise; export {}; } declare namespace lib_plankton.zoo_form { /** */ type type_action = { label: string; target?: string; procedure?: ((get_value?: (() => Promise), get_representation?: (() => Promise)) => void); }; /** * @author fenris */ export class class_form { /** */ 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, actions: Array>); /** */ setup(parent: HTMLElement): Promise; /** */ input_read_raw(): Promise; /** */ input_read(): Promise; /** */ input_write(value: type_value): Promise; } export {}; }