{"version":3,"sources":["type.ts"],"sourcesContent":["import { DX_PERMISSIONS, DX_TEMPLATE, DX_TYPE, EXTENDED_OBJECTS, INIT_PROPS, INVALID, NOT_EXISTING, VOID } from \"../runtime/constants.ts\";\nimport { Runtime, TypedValue } from \"../runtime/runtime.ts\";\nimport { JSInterface, js_interface_configuration } from \"../runtime/js_interface.ts\";\nimport { Endpoint, Target } from \"./addressing.ts\";\nimport { AssertionError, CompilerError, NetworkError, PermissionError, PointerError, RuntimeError, SecurityError, SyntaxError, TypeError, ValueError } from \"./errors.ts\";\nimport { Markdown } from \"./markdown.ts\";\nimport { DatexObject } from \"./object.ts\";\nimport { Tuple } from \"./tuple.ts\";\nimport { Stream } from \"./stream.ts\";\nimport { Scope } from \"./scope.ts\";\nimport { Quantity } from \"./quantity.ts\";\nimport { Function as DatexFunction } from \"./function.ts\";\nimport { logger, TypedArray } from \"../utils/global_values.ts\";\nimport { BinaryCode } from \"../compiler/binary_codes.ts\"\nimport { RefOrValue, Pointer, ReactiveValue, PointerProperty } from \"../runtime/pointers.ts\";\nimport { clause, Conjunction, Disjunction, Logical, Negation } from \"./logic.ts\";\nimport { Debugger } from \"../runtime/debugger.ts\";\nimport { Time } from \"./time.ts\";\nimport type { Task } from \"./task.ts\";\nimport { Assertion } from \"./assertion.ts\";\nimport type { Iterator } from \"./iterator.ts\";\nimport {StorageMap, StorageWeakMap} from \"./storage-map.ts\"\nimport {StorageSet, StorageWeakSet} from \"./storage-set.ts\"\nimport { ExtensibleFunction } from \"./function-utils.ts\";\nimport { JSTransferableFunction } from \"./js-function.ts\";\nimport type { MatchCondition } from \"../storage/storage.ts\";\nimport { sendReport } from \"../utils/error-reporting.ts\";\n\nexport type inferDatexType<T extends Type> = T extends Type<infer JST> ? JST : any;\n\n// types with '&|~' combinations\nexport type type_clause<T=any> = clause<Type<T>>\n\n/** <ns:type> */\nexport class Type<T = any> extends ExtensibleFunction {\n\n    // part of the datex standard types, complex or primitive, no specific type casting needed\n    static fundamental_types = [\"text\", \"image\", \"audio\", \"video\", \"model\", \"application\", \"decimal\", \"integer\", \"boolean\", \"target\", \"endpoint\", \"null\", \"void\", \"time\", \"quantity\", \"url\", \"buffer\", \"Array\", \"Object\", \"Tuple\", \"Type\", \"Negation\", \"Conjunction\", \"Disjunction\"]\n    // have a primitive datex representation:\n    static primitive_types = [\"text\", \"image\", \"audio\", \"video\", \"model\", \"application\", \"decimal\", \"integer\", \"boolean\", \"target\", \"endpoint\", \"null\", \"void\", \"time\", \"quantity\", \"url\", \"buffer\"];\n    // have a custom datex representation (+ all primitive)\n    static compact_rep_types = [\"Datex\", \"Type\"];\n    // should be serialized, but is not a complex type (per default, only complex types are serialized)\n    static serializable_not_complex_types = [\"buffer\"]\n    // values that are represented js objects but have a single instance per value, handle like normal js primitives\n    static pseudo_js_primitives = [\"Type\", \"endpoint\", \"target\", \"url\", \"RegExp\"]\n\n\n    public static types = new Map<string, Type>();   // type name -> type\n\n    public static type_templates = new Map<Type, object>();   // type name -> type (only required for Datex viewer tree view)\n    public static template_types = new WeakMap<object, Type>();   // type name -> type (only required for Datex viewer tree view)\n\n    // <namespace:name/variation(parameters)>\n    namespace:string = 'std'\n    name:string = ''\n    variation:string = ''\n    parameters:any[] // special type parameters\n\n    #jsTypeDefModule?: string|URL // URL for the JS module that creates the corresponding type definition\n    #potentialJsTypeDefModule?: string|URL // remember jsTypeDefModule if jsTypeDefModuleMapper is added later\n\n    get jsTypeDefModule():string|URL|undefined {return this.#jsTypeDefModule}\n    set jsTypeDefModule(url: string|URL) {\n        // custom module mapper\n        if (Type.#jsTypeDefModuleMapper) this.#jsTypeDefModule = Type.#jsTypeDefModuleMapper(url, this);\n        // default: only allow http/https modules\n        else if (url.toString().startsWith(\"http://\") || url.toString().startsWith(\"https://\")) {\n            this.#jsTypeDefModule = url;\n        }\n        this.#potentialJsTypeDefModule = url;\n    }\n\n    root_type: Type; // DatexType without parameters and variation\n    base_type: Type; // DatexType without parameters\n\n    is_complex = true;\n    is_primitive = false;\n    is_js_pseudo_primitive = false;\n    has_compact_rep = false; // has special compact representation, like @sdfaf or <type>\n    serializable_not_complex = false\n    \n    timeout?: number // timeout for request on values of this type\n\n    // TODO: make true per default? currently results in stack overflows for some std types\n    #proxify_children = false // proxify all (new) children of this type\n    children_timeouts?: Map<string, number> // individual timeouts for children\n    \n    static #jsTypeDefModuleMapper?: (url:string|URL, type: Type) => string|URL|undefined\n    \n    static setJSTypeDefModuleMapper(fn:  (url:string|URL, type: Type) => string|URL|undefined) {\n        this.#jsTypeDefModuleMapper = fn;\n        // update existing typedef modules\n        for (const type of this.types.values()) {\n            if (type.#potentialJsTypeDefModule) type.jsTypeDefModule = type.#potentialJsTypeDefModule;\n        }\n    }\n\n    /**\n     * Should proxify all children with proxify_as_child=true\n     * when creating a pointer of this type\n     */\n    get proxify_children() {return this.interface_config?.proxify_children ?? this.#proxify_children}\n    set proxify_children(proxify: boolean) {if (this.interface_config) {this.interface_config.proxify_children = proxify}; this.#proxify_children = proxify}\n\n    /**\n     * Prevents proxification if a child of a parent with proxified children.\n     * Primitive values are not proxified per default\n     */\n    proxify_as_child = true;\n\n    // all children allowed by the template\n    #visible_children: Set<any>\n    get visible_children(): Set<any> {return this.#visible_children ?? this.interface_config?.visible_children}\n\n    // get about Markdown\n    #about: string\n    #about_md: Markdown\n    get about() {\n        if (!this.#about_md) {\n            this.#about_md = new Markdown(`## ${this.toString().replace(\"<\",\"\\\\<\").replace(\">\",\"\\\\>\")}\\n${this.#about}`);\n        }\n        return this.#about_md\n    }\n\n    /**\n     * true if this type has no custom handling for indirect references\n     */\n    get supportsIndirectRefs() {\n        // only supported if indirect references are not already handled by a custom transform (e.g. for UIX elements)\n        return Runtime.OPTIONS.INDIRECT_REFERENCES && !this.interface_config?.handle_transform\n    }\n\n    // templated type (struct)\n    #template: {[key:string]:Type}|any[] & T\n    // constructor, replicator, destructor\n    #constructor_fn: globalThis.Function\n    #replicator_fn: globalThis.Function\n    #destructor_fn: globalThis.Function\n\n    // configuration for advanced JS interface\n    get interface_config():js_interface_configuration<any> {\n        return this.#interface_config ?? (this.root_type != this ? this.root_type?.interface_config : undefined);\n    }\n\n    #interface_config: js_interface_configuration\n\n    #implemented_types = new Set<Type>(); // template [EXTENDED_OBJECTS] + additional types\n    get implemented_types(){\n        return this.#implemented_types;\n    }\n\n    public addImplementedType(type: Type) {\n        this.#implemented_types.add(type);\n    }\n\n    // add a constructor function\n    public setConstructor(constructor_fn:globalThis.Function) {\n        this.#constructor_fn = constructor_fn;\n    }\n    // add a replicator function\n    public setReplicator(replicator_fn:globalThis.Function) {\n        this.#replicator_fn = replicator_fn;\n    }  \n    // add a destructor function\n    public setDestructor(destructor_fn:globalThis.Function) {\n        this.#destructor_fn = destructor_fn;\n    }\n\n    // maps DATEX template type representation to corresponding typescript types\n    public setTemplate<NT extends Object>(template: NT):Type<Partial<({ [key in keyof NT]: (NT[key] extends Type<infer TT> ? TT : any ) })>>\n    public setTemplate(template: object) {\n        // DatexObject.freeze(template);\n        this.#template = <any>template;\n        this.#visible_children = new Set(Object.keys(this.#template));\n        // add extended types from template\n        for (const t of this.#template[EXTENDED_OBJECTS]??[]) {\n            this.#implemented_types.add(Type.template_types.get(t))\n        }\n        \n        Type.type_templates.set(this, template)\n        Type.template_types.set(template, this);\n\n        return <any>this;\n    }\n\n\n    get template() {\n        return this.#template;\n    }\n\n    /**\n     * Creates a new instance of this type from a given object - throws error if required properties are missing or have wrong type if strict=true\n     * Only works for types with a template\n     */\n    public new(value:Record<string,unknown> = {}, strict = true, assign_to_object:Record<string,unknown> = {[DX_TYPE]: this}):T {\n        if (!this.#template) throw new RuntimeError(\"Type has no template\");\n        if (!(typeof value == \"object\")) throw new RuntimeError(\"Cannot create template value from non-object value\");\n\n        if (strict) {\n            for (const key of Object.keys(value)) {\n                if (!(key in this.#template)) {\n                    throw new ValueError(\"Property '\" + key + \"' is not allowed\");\n                }\n            }    \n        }\n\n        // add all allowed properties (check template types)\n        for (const key of Object.keys(this.#template)) {\n            // @ts-ignore this.#template is always a Tuple\n            const required_type = this.#template[key];\n \n            // check if can set property (has setter of value)\n            const desc = Object.getOwnPropertyDescriptor(assign_to_object, key);\n            if (desc && !desc.writable) {\n                logger.debug(\"skipping unwriteable template property \" + key);\n                continue; // cannot set, skip\n            }\n            \n            // TODO how to handle protoype properties?\n            // don't set to void/undefined if key not in properties object, prevents overrides of JS prototype properties/methods\n            if (!(key in value)) {\n                if (strict) throw new ValueError(\"Property '\" + key + \"' is required\");\n            }\n\n            try {\n\n                // no type check available / check value type\n                if (!required_type || key in value && Type.matches(value[key], required_type)) {\n                    Object.defineProperty(\n                        assign_to_object,\n                        key,\n                        {\n                            value: value[key],\n                            configurable: true,\n                            writable: true\n                        }\n                    )\n                }\n                // JS number->bigint conversion\n                else if (key in value && required_type.root_type == Type.std.integer && typeof value[key] == \"number\" && Number.isInteger(value[key])) {\n                    assign_to_object[key] = BigInt(value[key]);\n                }\n                // add default template value\n                else if (value[key] == VOID && required_type.template) {\n                    assign_to_object[key] = required_type.new({}, strict);\n                }\n                else if (value[key] == VOID) assign_to_object[key] = VOID;\n                // try to cast to struct\n                else if (required_type instanceof Type && required_type.namespace == \"struct\" && Type.ofValue(value[key]) == Type.std.Object) {\n                    assign_to_object[key] = required_type.new(value[key] as Record<string,unknown>, strict)\n                }\n                else throw new ValueError(\"Property '\" + key + \"' must be of type \" + required_type);\n            }\n            catch (e) {\n                // TODO: catch required? for readonly properties\n                // error while assigning to readonly property from prototype chain might still occur\n                if (e instanceof TypeError) {\n                    logger.debug(\"ignoring unwriteable template prototype property \" + key);\n                }\n                else if (strict) throw e;\n            }\n            \n        }\n        // copy permissions from template\n        if (this.#template[DX_PERMISSIONS]) {\n            const permissions = assign_to_object[DX_PERMISSIONS] = {}\n            for (let [key,val] of Object.entries(this.#template[DX_PERMISSIONS])) {\n                permissions[key] = val;\n            }\n        }\n\n        assign_to_object[DX_TEMPLATE] = this.#template;\n\n        return <any>(assign_to_object instanceof DatexObject ? DatexObject.seal(assign_to_object) : assign_to_object);\n    }\n\n    /**\n     * Result must be awaited and collapsed with Runtime.collapseValueCast\n     */\n    public createDefaultValue(context?:any, origin:Endpoint = Runtime.endpoint, context_location?: URL): Promise<any>{\n        return Runtime.castValue(this, VOID, context, context_location, origin);\n    }\n\n    static #current_constructor:globalThis.Function|null;\n\n    public static isConstructing(value:object) {\n        return value.constructor == this.#current_constructor;\n    }\n\n    public hasMatchingJSClassOrPrototype() {\n        return (!!this.interface_config?.class) || (!!this.interface_config?.prototype)\n    }\n\n    // cast any value to a value of this type (for custom types)\n    public cast(value: any, context?:any, origin:Endpoint = Runtime.endpoint, make_pointer = false, ignore_js_config = false, assigningPtrId?: string, strict = false):T {\n        // unknown type (no template or config)\n        //if (!this.interface_config && !this.template) return UNKNOWN_TYPE;\n\n        // has a JS configuration\n        if (!ignore_js_config && this.interface_config){\n            // generate default value\n            if (value === VOID && this.interface_config.empty_generator instanceof globalThis.Function) return this.interface_config.empty_generator(this, context, origin);\n            // custom cast method\n            else if (this.interface_config.cast) {\n                return this.interface_config.cast(value, this, context, origin, assigningPtrId);\n            }\n            else if (this.interface_config.cast_no_tuple && !(value instanceof Tuple)) {\n                return this.interface_config.cast_no_tuple(value, this, context, origin, assigningPtrId);\n            }\n            // special cast: prototype\n            else if (typeof value == \"object\" && this.interface_config.prototype) {\n                const object = Object.create(this.interface_config.prototype)\n                Object.assign(object, value);\n                return object;\n            }\n        }\n\n        // no JS config or no custom casting -> handle default constructor\n        // 'pseudo constructor arguments', multiple args if tuple, if not object! (normal cast), use value as single argument\n        let args:any[];\n        let is_constructor = true;\n        if (value instanceof Tuple) args = value.toArray(); // multiple constructor arguments with tuple (ignores keys!)\n        else if (typeof value != \"object\" || value === null) args = [value] // interpret any non-object value as a constructor argument\n        else {\n            args = [];\n            is_constructor = false; // is replicated object, not created with constructor arguments\n        }\n\n        const propertyInitializer = this.getPropertyInitializer(value, true, strict);\n        const instance = this.newJSInstance(is_constructor, args, propertyInitializer);\n\n        // initialize properties, if not [INIT_PROPS] yet called inside constructor\n        if (!is_constructor) propertyInitializer[INIT_PROPS](instance);\n\n        // call DATEX construct methods and create pointer\n        return this.construct(instance, args, is_constructor, make_pointer);\n    }\n\n    /** returns an object with a [INIT_PROPS] function that can be passed to newJSInstance() or called manually */\n    public getPropertyInitializer(value:any, useTemplate = true, strict = false) {\n        // TODO: is it okay to call INIT_PROPS multiple times? required for inherited classes\n        //const initialized = {i:false};\n        // property initializer - sets existing property for pointer object (is passed as first constructor argument when reconstructing)\n        return Object.freeze({\n            [INIT_PROPS]: (instance:any)=>{\n                // if (initialized.i) return; \n                // initialized.i=true; \n                this.initProperties(instance, value, useTemplate, strict)\n            }\n        })\n    }\n\n    public newJSInstance(is_constructor = true, args?:any[], propertyInitializer?:{[INIT_PROPS]:(instance:any)=>void}) {\n        // create new instance - TODO 'this' as last constructor argument still required?\n        Type.#current_constructor = this.interface_config?.class??null;\n        const instance = <T> (this.interface_config?.class ? Reflect.construct(Type.#current_constructor, is_constructor?[...args]:(propertyInitializer ? [propertyInitializer] : [])) : {[DX_TYPE]: this});\n        Type.#current_constructor = null;\n        return instance;\n    }\n\n    public initProperties(instance:any, value:any, useTemplate = true, strict = false) {\n        if (!value) return;\n        // initialize with template\n        if (useTemplate && this.#template) this.new(value, strict, instance)\n        // just copy all properties if no template found\n        else {\n            for (const [key, val] of Object.entries(value)) {\n                if (val instanceof JSTransferableFunction) {\n                    // workaround create new transferable function with correct \"this\" context\n                    instance[key] = $$(JSTransferableFunction.recreate(val.source, {...val.deps, 'this':instance}));\n                }\n                else if (typeof val == \"function\" && typeof val.bind == \"function\") instance[key] = val.bind(instance);\n                else instance[key] = val;\n            }\n        }\n    }\n\n    public construct(instance:T, args?:any[], is_constructor = true, make_pointer = false) {\n        instance[DX_TEMPLATE] = this.#template;\n\n        // make pointer?\n        if (make_pointer) {\n            instance = Pointer.create(null, instance, false, undefined, false, false).val\n        }\n\n        // call custom DATEX constructor or replicator\n        if (is_constructor && this.#constructor_fn) {\n            const res = this.#constructor_fn.apply(instance, args)\n            // catch promise rejections (not awaited)\n            if (res instanceof Promise) res.catch(e=>{console.warn(e)})\n        }\n        else if (!is_constructor && this.#replicator_fn) {\n            const res = this.#replicator_fn.apply(instance, args);\n            // catch promise rejections (not awaited)\n            if (res instanceof Promise) res.catch(e=>{console.warn(e)})\n        }\n        \n        return instance;\n    }\n\n\n    // JS interface configuration\n\n    public setJSInterface(configuration:js_interface_configuration<T>):Type<T>{\n        this.#interface_config = configuration;\n        JSInterface.handleConfigUpdate(this, configuration);\n        return this;\n    }\n\n\n    // about (documentation/description)\n\n    public setAbout(about: string | Markdown) {\n        if (about instanceof Markdown) this.#about_md = about;\n        else if (typeof about == \"string\") this.#about = about;\n        else throw new ValueError(\"Invalid about, must be <string>\");\n    }\n\n\n    // never call the constructor directly!! should be private\n    constructor(namespace?:string, name?:string, variation?:string, parameters?:any[]) {\n        super(namespace && namespace != \"std\" ? (val:any) => this.cast(val, undefined, undefined, true) : undefined)\n        if (name) this.name = name;\n        if (namespace) this.namespace = namespace;\n        if (variation) this.variation = variation;\n        \n        this.parameters = parameters;\n        this.base_type = parameters ? Type.get(namespace, name, variation) : this; // get base type without parameters\n        this.root_type = (variation||parameters) ? Type.get(namespace, name) : this; // get root type without variation and parameters\n\n        this.is_primitive = namespace==\"std\" && Type.primitive_types.includes(this.name);\n        this.is_complex   = namespace!=\"std\" || !Type.fundamental_types.includes(this.name);\n        this.is_js_pseudo_primitive = (namespace==\"std\"||namespace==\"js\") && Type.pseudo_js_primitives.includes(this.name);\n        this.has_compact_rep = namespace==\"std\" && (this.is_primitive || Type.compact_rep_types.includes(this.name));\n        this.serializable_not_complex = Type.serializable_not_complex_types.includes(this.name);\n\n        \n        if (!parameters) Type.types.set((this.namespace||\"std\")+\":\"+this.name+\"/\"+(this.variation??\"\"), this); // add to pointer list\n    }\n\n\n\n    // get parametrized type\n    public getParametrized(parameters:any[]):Type<T>{\n        return Type.get(this.namespace, this.name, this.variation, parameters);\n    }\n\n    // get type variation\n    public getVariation(variation:string):Type<T>{\n        return Type.get(this.namespace, this.name, variation, this.parameters);\n    }\n\n    // type check (type is a subtype of this)\n    public matchesType(type:type_clause){\n        return Type.matchesType(type, this);\n    }\n    public matches(value:RefOrValue<any>): value is T  {\n        return Type.matches(value, this);\n    }\n\n\n    public setChildTimeout(child:string, timeout: number) {\n        if (!this.children_timeouts) this.children_timeouts = new Map();\n        this.children_timeouts.set(child, timeout)\n    }\n\n\n    // match type against visible_children\n    public isPropertyAllowed(property:any) {\n        // all children allowed or specific child allowed\n        return !this.visible_children || this.visible_children.has(property);\n    }\n\n    // match type against template\n    /**\n     * @deprecated, use assertPropertyValueAllowed\n     */\n    public isPropertyValueAllowed(property:any, value:any) {\n        if (!this.#template) return true;\n        else if (typeof property !== \"string\") return true; // only strings handled by templates\n        else return (!this.#template[property] || Type.matches(value, this.#template[property])) // check if value allowed\n    }\n\n    public assertPropertyValueAllowed(property:any, value:any) {\n        if (!this.#template) return true;\n        else if (typeof property !== \"string\") return true; // only strings handled by templates\n        else if (this.#template[property]) Type.assertMatches(value, this.#template[property]) // assert value allowed\n    }\n\n    // get type for value in template\n    public getAllowedPropertyType(property:any):Type {\n        if (!this.#template) return Type.std.Any;\n        else if (typeof property !== \"string\") return Type.std.void; // key must be a string (TOOD type None?)\n        else return this.#template[property]\n    }\n\n    // operators and other type specific runtime behaviour\n\n    public updateValue(ref:T, value:T) {\n\n        if (Type.ofValue(ref)!==this) {\n            throw new ValueError(\"Cannot update value, reference has wrong type\")\n        }\n\n        if (this.interface_config?.override_silently instanceof Function) {\n            this.interface_config.override_silently(ref, value)\n        }\n\n        // default array update\n        else if (ref instanceof Array) {\n            if (!(value instanceof Array)) throw new ValueError(\"Cannot update array value with non-array value\")\n            ref.splice(0, ref.length, ...(value as any))\n        }\n\n        // default object update\n        else if (typeof ref == \"object\") {\n            if (typeof value != \"object\") throw new ValueError(\"Cannot update value with non-object-like value\")\n            \n            for (const prop of Object.getOwnPropertyNames(ref)) {\n                if (prop === \"$\" || prop == \"$$\") continue; // skip $ properties\n                delete (ref as any)[prop];\n            }\n            Object.assign(ref as any, Runtime.serializeValue(value))\n        }\n\n        // js function, no change? should not happen\n        else if (this as Type<any> == Type.js.TransferableFunction && ref?.toString?.() === value?.toString?.()) {\n            console.log(\"no change for fn\", value)\n        }\n\n        else {\n            console.error(\"Cannot update value of type \" + this.toString(), new Error().stack);\n            sendReport(\"invalid-function-value-update\", {\n                fn: value?.toString(),\n            }).catch(console.error)\n            // TODO:\n            // throw new ValueError(\"Cannot update value of type \" + this.toString());\n        }\n    }\n\n    public handleOperatorAdd(first:any, second:any) {\n        if (this.interface_config?.operator_add instanceof Function) {\n            return this.interface_config.operator_add(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorSubtract(first:any, second:any) {\n        if (this.interface_config?.operator_subtract instanceof Function) {\n            return this.interface_config.operator_subtract(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorMultiply(first:any, second:any) {\n        if (this.interface_config?.operator_multiply instanceof Function) {\n            return this.interface_config.operator_multiply(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorDivide(first:any, second:any) {\n        if (this.interface_config?.operator_divide instanceof Function) {\n            return this.interface_config.operator_divide(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorModulo(first:any, second:any) {\n        if (this.interface_config?.operator_modulo instanceof Function) {\n            return this.interface_config.operator_modulo(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorPower(first:any, second:any) {\n        if (this.interface_config?.operator_power instanceof Function) {\n            return this.interface_config.operator_power(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorAnd(first:any, second:any) {\n        if (this.interface_config?.operator_and instanceof Function) {\n            return this.interface_config.operator_and(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorOr(first:any, second:any) {\n        if (this.interface_config?.operator_or instanceof Function) {\n            return this.interface_config.operator_or(first, second)\n        }\n        else return NOT_EXISTING\n    }\n    public handleOperatorNot(first:any, second:any) {\n        if (this.interface_config?.operator_not instanceof Function) {\n            return this.interface_config.operator_not(first, second)\n        }\n        else return NOT_EXISTING\n    }\n\n    public handleCompare(first:T, second:T) {\n        if (this.interface_config?.compare instanceof Function) {\n            return this.interface_config.compare(first, second)\n        }\n        else return NOT_EXISTING\n    }\n\n    public handleApply(ref:T, value:any) {\n        if (this.interface_config?.apply_value instanceof Function) {\n            return this.interface_config.apply_value(ref, value)\n        }\n        else return NOT_EXISTING\n    }\n\n    public handleActionAdd(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_add instanceof Function) {\n            if (this.interface_config.action_add(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for add assign action\"); \n        }\n        else throw new ValueError(\"Add assign action not implemented for type\");\n    }\n    public handleActionSubtract(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_subtract instanceof Function) {\n            if (this.interface_config.action_subtract(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for subtract assign action\"); \n        }\n        else throw new ValueError(\"Subtract assign action not implemented for type\");\n    }\n    public handleActionMultiply(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_multiply instanceof Function) {\n            if (this.interface_config.action_multiply(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for multiply assign action\"); \n        }\n        else throw new ValueError(\"Multiply assign action not implemented for type\");\n    }\n    public handleActionDivide(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_divide instanceof Function) {\n            if (this.interface_config.action_divide(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for divide assign action\"); \n        }\n        else throw new ValueError(\"Divide assign action not implemented for type\");\n    }\n    public handleActionPower(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_power instanceof Function) {\n            if (this.interface_config.action_power(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for power assign action\"); \n        }\n        else throw new ValueError(\"Power assign action not implemented for type\");\n    }\n    public handleActionModulo(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_modulo instanceof Function) {\n            if (this.interface_config.action_modulo(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for modulo assign action\"); \n        }\n        else throw new ValueError(\"Modulo assign action not implemented for type\");\n    }\n    public handleActionAnd(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_and instanceof Function) {\n            if (this.interface_config.action_and(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for and assign action\"); \n        }\n        else throw new ValueError(\"And assign action not implemented for type\");\n    }\n    public handleActionOr(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_or instanceof Function) {\n            if (this.interface_config.action_or(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for or assign action\"); \n        }\n        else throw new ValueError(\"Or assign action not implemented for type\");\n    }\n    public handleActionIncrement(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_increment instanceof Function) {\n            if (this.interface_config.action_increment(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for increment assign action\"); \n        }\n        else throw new ValueError(\"Increment assign action not implemented for type\");\n    }\n    public handleActionDecrement(ref:T, value:any, silently = false, exclude?:Endpoint) {\n        if (this.interface_config?.action_decrement instanceof Function) {\n            if (this.interface_config.action_decrement(ref, value, silently, exclude) === INVALID) throw new ValueError(\"Invalid value for decrement assign action\"); \n        }\n        else throw new ValueError(\"Decrement assign action not implemented for type\");\n    }\n\n\n    #string?:string\n\n    toString(){\n        if (!this.#string) {\n            this.#string = `<${\n                (this.namespace && this.namespace != 'std') ? this.namespace+\":\":\"\"}${this.name}${\n                this.variation?'/'+this.variation:''}${\n                this.parameters?(\n                    this.parameters.length == 1 ? '('+Runtime.valueToDatexString(this.parameters[0])+')':\n                    '('+this.parameters.map(p=>Runtime.valueToDatexString(p)).join(\",\")+')'\n                ):''\n            }>`;\n        }\n        return this.#string;\n    }\n\n    toJSON(){\n        return \"dx::\"+this.toString();\n    }\n\n    /** static */\n\n    public static or(...types:type_clause[]){\n        if (types.length == 1) return types[0]; // no or required\n        return new Disjunction(...types);\n    }\n\n    public static and(...types:type_clause[]){\n        if (types.length == 1) return types[0]; // no and required\n        return new Conjunction(...types);\n    }\n\n    // @implements LogicalComparator<T>\n    static logicalMatch(value: Type<any>, against: Type<any>) {\n        \n\t\tif (against === value) return true;\n        if (against == Type.std.Any) return true; // every type implements <Any>\n\t\tif (value.implemented_types.has(against)) return true; // TODO:implemented_types\n\n        // custom match based on type parameters\n        else if (against.parameters) {\n            // must have same base type\n            if (value.base_type === against.base_type) {\n                // custom JS interface config match function\n                if (value.base_type.interface_config?.type_params_match instanceof Function) {\n                    return value.base_type.interface_config.type_params_match(value.parameters??[], against.parameters??[])\n                }\n                else return false\n\n            }\n            else return false;\n        }\n\n        // // value base type matches\n        // else if (value.root_type) return this.logicalMatch(value.base_type, against);\n\n        // value base type matches\n        else if (value.base_type !== value) return this.logicalMatch(value.base_type, against);\n        else if (value.root_type !== value) return this.logicalMatch(value.root_type, against);\n\n        // no match\n\t\telse return false;\n    }\n\n    // type check (type is a subtype of matches_type)\n    // TODO: swap arguments\n    public static matchesType(type:type_clause, against: type_clause, assertionValue?:any, throwInvalidAssertion = false) {\n        return Logical.matches(type, against, Type, assertionValue, throwInvalidAssertion);\n    }\n\n\n    private static matchesTemplate(template:object, parent_template:object){\n        if (template == parent_template) return true;\n        // recursive check all templates\n        else {\n            for (let object of template[EXTENDED_OBJECTS]||[]) {\n                if (typeof object == \"object\" && this.matchesTemplate(object, parent_template)) return true;\n            }\n            return false;\n        }\n    }\n\n    public static assertMatches<T extends Type>(value:RefOrValue<any>, type:type_clause): asserts value is (T extends Type<infer TT> ? TT : any) {\n        const res = Type.matches(value, type, true);\n        if (!res) throw new ValueError(\"Value must be of type \" + type)\n    }\n\n    // check if root type of value matches exactly\n    public static matches<T extends Type>(value:RefOrValue<any>, type:type_clause, throwInvalidAssertion = false): value is (T extends Type<infer TT> ? TT : any)  {\n        value = ReactiveValue.collapseValue(value, true, true);\n        // value has a matching DX_TEMPLATE\n        if (type instanceof Type && type.template && value?.[DX_TEMPLATE] && this.matchesTemplate(value[DX_TEMPLATE], type.template)) return true;\n        // compare types\n\n        // workaround: explicit text length matching, TODO: more general solution\n        // e.g. text matches text(10)\n        if (Type.ofValue(value) == Type.std.text && type !== Type.std.text && type instanceof Type && type.base_type === Type.std.text) {\n            return value.length <= type.parameters[0];\n        }\n\n        // typed array matching\n        if (Type.ofValue(value) == Type.std.Array && type !== Type.std.Array && type instanceof Type && type.base_type === Type.std.Array) {\n            // check if all elements match\n            for (const val of value) {\n                if (!Type.matches(val, type.parameters[0])) return false;\n            }\n            return true;\n        }\n\n        // workaound: more specific integer, allow any bigint\n        if (type instanceof Type && type.root_type === Type.std.integer && typeof value == \"bigint\") return true;\n\n        return Type.matchesType(Type.ofValue(value), type, value, throwInvalidAssertion);\n    }\n\n    public static extends(type:Type, extends_type:type_clause){\n        return type!=extends_type && Type.matchesType(type, extends_type);\n    }\n\n    public static get<T = any>(name:string, parameters?:any[]):Type<T>\n    public static get<T = any>(namespace:string, name:string, variation?:string, parameters?:any[]):Type<T>\n    public static get<T = any>(namespace:string, name_or_parameters?:string|any[], variation?:string, parameters?:any[]):Type<T> {\n        let name:string;\n        if (name_or_parameters instanceof Array) parameters = name_or_parameters;\n        else if (typeof name_or_parameters == \"string\") name = name_or_parameters;\n        else if (name_or_parameters!=undefined) throw new TypeError(\"Invalid type name or parameters\");\n\n        if (namespace?.includes(\":\")) [namespace, name] = namespace.split(\":\");\n        if (name === undefined) {\n            name = namespace;\n            namespace = \"std\";\n        }\n        if (!namespace) namespace = \"std\";\n        if (!name) throw new Error(\"Invalid type\");\n        if (name?.includes(\"/\")) [name, variation] = name.split(\"/\");\n\n        if (parameters) return new Type(namespace, name, variation, parameters);\n        else return this.types.get(namespace+\":\"+name+\"/\"+(variation??\"\")) || new Type(namespace, name, variation, parameters);\n    }\n\n    public static has(namespace?:string, name?:string, variation?:string) {\n        if (namespace.includes(\":\")) [namespace, name] = namespace.split(\":\");\n        if (name.includes(\"/\")) [name, variation] = name.split(\"/\");\n        return this.types.has((namespace||\"std\")+\":\"+name+\"/\"+(variation??\"\"));\n    }\n\n    /**\n     * Force bind a DATEX Type to a value (should be compatible with the JS type of the value)\n     * @param value the JS value\n     * @param type the new DATEX Type that should be bound to the value\n     * @returns the JS value with the bound DATEX Type (still the same reference)\n     */\n    public static bindType<T>(value:T, type:Type<T>): T {\n        value[DX_TYPE] = type;\n        return value;\n    }\n\n    // get datex type from value\n    public static ofValue<T=any>(value:RefOrValue<T>):Type<T> {\n\n        if (value instanceof Pointer) {\n            return value.current_type ?? Type.std.void;\n        }\n        else if (value instanceof PointerProperty && value.type instanceof Type) {\n            return value.type as Type<T>;\n        }\n\n        value = ReactiveValue.collapseValue(value,true,true)\n\n        // // should not happen\n        // else if (value instanceof Pointer) {\n        //     value = value.type;\n        //     // console.warn(\"Tried to get the type of a pointer reference\")\n        //     // throw new RuntimeError(\"Tried to get the type of a pointer reference\");\n        // }\n\n        // special case: handle before set (todo change?)\n        if (value instanceof Conjunction) return <Type<T>>Type.std.Conjunction;\n        if (value instanceof Disjunction) return <Type<T>>Type.std.Disjunction;\n        if (value instanceof Negation) return <Type<T>>Type.std.Negation;\n\n        if (value instanceof WeakRef) return <Type<T>>Type.std.WeakRef;\n\n        // get type from DX_TYPE property\n        if (value?.[DX_TYPE]) return value[DX_TYPE];\n\n        // get type from pointer\n        let type:Type|undefined\n        if ((type = Pointer.getByValue(value)?.current_type)) return type;\n\n        // get custom type\n        const custom_type = JSInterface.getValueDatexType(value);\n\n        if (!custom_type) {\n            if (value === VOID) return Type.std.void;\n            if (value === null) return Type.std.null;\n\n            if (value?.[DX_TYPE]) return value[DX_TYPE]; // override Datex Type\n\n            if (value instanceof Quantity) return <Type<T>>Type.std.quantity;\n            if (typeof value == \"string\") return <Type<T>>Type.std.text;\n            if (typeof value == \"bigint\") return <Type<T>>Type.std.integer;\n            if (typeof value == \"number\") return <Type<T>>Type.std.decimal;\n            if (typeof value == \"boolean\") return <Type<T>>Type.std.boolean;\n            if (typeof value == \"symbol\") return Type.js.Symbol as unknown as Type<T>;\n            if (value instanceof RegExp) return Type.js.RegExp as unknown as Type<T>;\n            if (globalThis.MediaStream && value instanceof MediaStream) return Type.js.MediaStream as unknown as Type<T>;\n\n            if (value instanceof TypedArray) {\n                switch (value.constructor) {\n                    case Uint8Array: return Type.js.TypedArray.getVariation('u8') as unknown as Type<T>;\n                    case Uint16Array: return Type.js.TypedArray.getVariation('u16') as unknown as Type<T>;\n                    case Uint32Array: return Type.js.TypedArray.getVariation('u32') as unknown as Type<T>;\n                    case BigUint64Array: return Type.js.TypedArray.getVariation('u64') as unknown as Type<T>;\n                    case Int8Array: return Type.js.TypedArray.getVariation('i8') as unknown as Type<T>;\n                    case Int16Array: return Type.js.TypedArray.getVariation('i16') as unknown as Type<T>;\n                    case Int32Array: return Type.js.TypedArray.getVariation('i32') as unknown as Type<T>;\n                    case BigInt64Array: return Type.js.TypedArray.getVariation('i64') as unknown as Type<T>;\n                    case Float32Array: return Type.js.TypedArray.getVariation('f32') as unknown as Type<T>;\n                    case Float64Array: return Type.js.TypedArray.getVariation('f64') as unknown as Type<T>;\n                    default: throw new ValueError(\"Invalid TypedArray\");\n                }\n            }\n            \n            if (value instanceof ArrayBuffer) return <Type<T>>Type.std.buffer;\n            if (value instanceof Tuple) return <Type<T>>Type.std.Tuple;\n            if (value instanceof Array) return <Type<T>>Type.std.Array;\n\n            if (value instanceof File) return Type.js.File as unknown as Type<T>;\n\n            // mime types\n            if (value instanceof Blob) {\n                return Type.get(\"std\", ...(value.type ? value.type.split(\"/\") : [\"application\",\"octet-stream\"]) as [string, string])\n            }\n            if (Runtime.mime_type_classes.has(value.constructor)) return Type.get(\"std\", ...<[string, string]>Runtime.mime_type_classes.get(value.constructor).split(\"/\"))\n\n            if (value instanceof SyntaxError) return Type.std.SyntaxError;\n            if (value instanceof CompilerError) return Type.std.CompilerError;\n            if (value instanceof PointerError) return Type.std.PointerError;\n            if (value instanceof ValueError) return Type.std.ValueError;\n            if (value instanceof PermissionError) return Type.std.PermissionError;\n            if (value instanceof TypeError) return Type.std.TypeError;\n            if (value instanceof NetworkError) return Type.std.NetworkError;\n            if (value instanceof RuntimeError) return Type.std.RuntimeError;\n            if (value instanceof SecurityError) return Type.std.SecurityError;\n            if (value instanceof AssertionError) return Type.std.AssertionError;\n\n            if (value instanceof Error) return <Type<T>>Type.std.Error;\n    \n            if (value instanceof Time) return <Type<T>>Type.std.time;\n            if (value instanceof URL) return <Type<T>>Type.std.url;\n\n            // loose function check: normal Functions are also considered std.Functions, because they get converted anyways once they get in touch with DATEX (also required for correct pointer type recognition when setting the value)\n            if (value instanceof Type) return <Type<T>>Type.std.Type;\n            if (value instanceof Function) return <Type<T>>Type.std.Function;\n            if (value instanceof DatexFunction) return <Type<T>>Type.std.Function;\n            if (value instanceof Stream) return <Type<T>>Type.std.Stream;\n            if (value instanceof Endpoint) return <Type<T>>Type.std.endpoint;\n            if (value instanceof Target) return <Type<T>>Type.std.target;\n            if (value instanceof Scope) return <Type<T>>Type.std.Scope;\n    \n            if (typeof value == \"object\") {\n                const proto = Object.getPrototypeOf(value);\n                // plain object\n                if (proto === Object.prototype || proto === null)\n                    return <Type<T>>Type.std.Object;\n                // complex object with prototype\n                else \n                    return <Type<T>>Type.js.NativeObject;\n            }\n    \n            else return <Type<T>>Type.js.NativeObject;\n        }\n        return custom_type;\n    }\n\n\n    // get datex type from js class\n    public static getClassDatexType<T=any>(forClass:{new():T}):Type<T> {\n\n        const _forClass:any = forClass;\n\n        if (_forClass[DX_TYPE]) return _forClass[DX_TYPE]; // type shortcut\n\n        // handle before set\n        if (_forClass == Conjunction) return <Type<T>>Type.std.Conjunction;\n        if (_forClass == Disjunction) return <Type<T>>Type.std.Disjunction;\n        if (_forClass == Negation) return <Type<T>>Type.std.Negation;\n\n\n        const custom_type = JSInterface.getClassDatexType(_forClass);\n\n        if (!custom_type) {\n\n            if (_forClass == Quantity || Quantity.isPrototypeOf(_forClass)) return <Type<T>>Type.std.quantity;\n            if (_forClass == globalThis.String || globalThis.String.isPrototypeOf(_forClass)) return <Type<T>>Type.std.text;\n            if (_forClass == BigInt || BigInt.isPrototypeOf(_forClass)) return <Type<T>>Type.std.integer;\n            if (_forClass == Number || Number.isPrototypeOf(_forClass)) return <Type<T>>Type.std.decimal;\n            if (_forClass == globalThis.Boolean || globalThis.Boolean.isPrototypeOf(_forClass)) return <Type<T>>Type.std.boolean;\n            if (_forClass == Symbol || Symbol.isPrototypeOf(_forClass)) return <Type<T>>Type.js.Symbol;\n            if (_forClass == RegExp || RegExp.isPrototypeOf(_forClass)) return Type.js.RegExp as unknown as Type<T>;\n            if (_forClass == File || File.isPrototypeOf(_forClass)) return Type.js.File as unknown as Type<T>;\n            if (globalThis.MediaStream && _forClass == MediaStream) return Type.js.MediaStream as unknown as Type<T>;\n            if (_forClass == WeakRef || WeakRef.isPrototypeOf(_forClass)) return <Type<T>>Type.std.WeakRef;\n\n            if (TypedArray.isPrototypeOf(_forClass)) {\n                switch (_forClass) {\n                    case Uint8Array: return Type.js.TypedArray.getVariation('u8') as unknown as Type<T>;\n                    case Uint16Array: return Type.js.TypedArray.getVariation('u16') as unknown as Type<T>;\n                    case Uint32Array: return Type.js.TypedArray.getVariation('u32') as unknown as Type<T>;\n                    case BigUint64Array: return Type.js.TypedArray.getVariation('u64') as unknown as Type<T>;\n                    case Int8Array: return Type.js.TypedArray.getVariation('i8') as unknown as Type<T>;\n                    case Int16Array: return Type.js.TypedArray.getVariation('i16') as unknown as Type<T>;\n                    case Int32Array: return Type.js.TypedArray.getVariation('i32') as unknown as Type<T>;\n                    case BigInt64Array: return Type.js.TypedArray.getVariation('i64') as unknown as Type<T>;\n                    case Float32Array: return Type.js.TypedArray.getVariation('f32') as unknown as Type<T>;\n                    case Float64Array: return Type.js.TypedArray.getVariation('f64') as unknown as Type<T>;\n                    default: throw new ValueError(\"Invalid TypedArray\");\n                }\n            }\n\n            if (_forClass == ArrayBuffer) return <Type<T>>Type.std.buffer;\n            if (_forClass == Tuple || Tuple.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Tuple;\n            if (_forClass == Array || Array.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Array;\n\n            if (_forClass ==  SyntaxError || SyntaxError.isPrototypeOf(_forClass)) return Type.std.SyntaxError;\n            if (_forClass ==  CompilerError || CompilerError.isPrototypeOf(_forClass)) return Type.std.CompilerError;\n            if (_forClass ==  PointerError || PointerError.isPrototypeOf(_forClass)) return Type.std.PointerError;\n            if (_forClass ==  ValueError || ValueError.isPrototypeOf(_forClass)) return Type.std.ValueError;\n            if (_forClass ==  PermissionError || PermissionError.isPrototypeOf(_forClass)) return Type.std.PermissionError;\n            if (_forClass ==  TypeError || TypeError.isPrototypeOf(_forClass)) return Type.std.TypeError;\n            if (_forClass ==  NetworkError || NetworkError.isPrototypeOf(_forClass)) return Type.std.NetworkError;\n            if (_forClass ==  RuntimeError || RuntimeError.isPrototypeOf(_forClass)) return Type.std.RuntimeError;\n            if (_forClass ==  SecurityError || SecurityError.isPrototypeOf(_forClass)) return Type.std.SecurityError;\n            if (_forClass ==  AssertionError || AssertionError.isPrototypeOf(_forClass)) return Type.std.AssertionError;\n\n            if (_forClass ==  Error || Error.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Error;\n\n            if (_forClass ==  Markdown || Markdown.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Markdown;\n            if (_forClass ==  Time || Time.isPrototypeOf(_forClass)) return <Type<T>>Type.std.time;\n            if (_forClass ==  URL || URL.isPrototypeOf(_forClass)) return <Type<T>>Type.std.url;\n\n            if (_forClass ==  Type || Type.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Type;\n            if (_forClass ==  DatexFunction || DatexFunction.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Function;\n            if (_forClass ==  Function || Function.isPrototypeOf(_forClass)) return <Type<T>>Type.js.Function;\n            if (_forClass ==  Stream || Stream.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Stream;\n            if (_forClass ==  Endpoint || Endpoint.isPrototypeOf(_forClass)) return <Type<T>>Type.std.endpoint;\n            if (_forClass ==  Target || Target.isPrototypeOf(_forClass)) return <Type<T>>Type.std.target;\n            if (_forClass ==  Scope || Scope.isPrototypeOf(_forClass)) return <Type<T>>Type.std.Scope;\n\n            if (_forClass == Object) return <Type<T>>Type.std.Object;\n\n            else return <Type<T>>Type.js.NativeObject;\n        }\n        return custom_type;\n    }\n\n    // TODO\n    public static doesValueHaveProperties(value:any):boolean {\n        return value && typeof value == \"object\" && !(\n            value instanceof Quantity ||\n            value instanceof Time ||\n           // value instanceof Target ||\n            value instanceof ArrayBuffer\n        ) \n    }\n\n    // can change object properties of none-primitive (x[y] = z)\n    public static isValueObjectEditable(value:any):boolean {\n        return !(value instanceof Set || value instanceof DatexFunction) \n    }\n\n\n    /**\n     * js: namespace\n     */\n    static js = {\n        NativeObject: Type.get<object>(\"js:Object\"), // special object type for non-plain objects (objects with prototype) - no automatic children pointer initialization\n        TransferableFunction: Type.get<JSTransferableFunction>(\"js:Function\"),\n        Symbol: Type.get<symbol>(\"js:Symbol\"),\n        RegExp: Type.get<RegExp>(\"js:RegExp\"),\n        MediaStream: Type.get<MediaStream>(\"js:MediaStream\"),\n        File: Type.get<File>(\"js:File\"),\n        TypedArray: Type.get<TypedArray>(\"js:TypedArray\"),\n        AsyncGenerator: Type.get<AsyncGenerator>(\"js:AsyncGenerator\"),\n        Promise: Type.get<Promise<any>>(\"js:Promise\"),\n        ReadableStream: Type.get<ReadableStream>(\"js:ReadableStream\"),\n        WritableStream: Type.get<WritableStream>(\"js:WritableStream\"),\n        Request: Type.get<Request>(\"js:Request\"),\n        Response: Type.get<Response>(\"js:Response\"),\n    }\n\n    /**\n     * std: namespace\n     */\n    static std = {\n        integer: Type.get<bigint>(\"std:integer\"),\n        integer_8: Type.get<bigint>(\"std:integer\").getVariation(\"8\"),\n        integer_16: Type.get<bigint>(\"std:integer\").getVariation(\"16\"),\n        integer_32: Type.get<bigint>(\"std:integer\").getVariation(\"32\"),\n        integer_64: Type.get<bigint>(\"std:integer\").getVariation(\"64\"),\n\n        integer_u8: Type.get<bigint>(\"std:integer\").getVariation(\"u8\"),\n        integer_u16: Type.get<bigint>(\"std:integer\").getVariation(\"u16\"),\n        integer_u32: Type.get<bigint>(\"std:integer\").getVariation(\"u32\"),\n        integer_u64: Type.get<bigint>(\"std:integer\").getVariation(\"u64\"),\n\n        text: Type.get<string>(\"std:text\"),\n        text_plain: Type.get<Blob>(\"std:text\").getVariation(\"plain\"),\n        text_datex: Type.get<Blob>(\"std:text\").getVariation(\"datex\"),\n        text_markdown: Type.get<Markdown>(\"std:text\").getVariation(\"markdown\"),\n\n        sized_text: (size: number) => Type.get<string>(\"std:text\").getParametrized([size]),\n\n\n        image: Type.get<Blob>(\"std:image\"),\n        video: Type.get<Blob>(\"std:video\"),\n        audio: Type.get<Blob>(\"std:audio\"),\n        model: Type.get<Blob>(\"std:model\"),\n\n        application: Type.get<Blob>(\"std:application\"),\n        application_pdf: Type.get<Blob&{type:\"application/pdf\"}>(\"std:application\").getVariation(\"pdf\"),\n\n        decimal: Type.get<number>(\"std:decimal\"),\n        quantity: Type.get<Quantity>(\"std:quantity\"),\n        boolean: Type.get<boolean>(\"std:boolean\"),\n        null: Type.get<null>(\"std:null\"),\n        void: Type.get<undefined>(\"std:void\"),\n        buffer: Type.get<ArrayBuffer>(\"std:buffer\"),\n        url: Type.get<URL>(\"std:url\"),\n        time: Type.get<Time>(\"std:time\"),\n\n        target: Type.get<Target>(\"std:target\"),\n        endpoint: Type.get<Endpoint>(\"std:endpoint\"),\n\n        Set: Type.get<Set<any>>(\"std:Set\"),\n        Map: Type.get<(Map<any,any>)>(\"std:Map\"),\n        Transaction: Type.get(\"std:Transaction\"),\n\n        Object: Type.get<object>(\"std:Object\"),\n        Array: Type.get<Array<any>>(\"std:Array\"),\n        Array_8: Type.get<Array<number>>(\"std:Array\").getVariation(\"8\"),\n        Array_16: Type.get<Array<number>>(\"std:Array\").getVariation(\"16\"),\n        Array_32: Type.get<Array<number>>(\"std:Array\").getVariation(\"32\"),\n        Array_64: Type.get<Array<bigint>>(\"std:Array\").getVariation(\"64\"),\n        Array_u8: Type.get<Array<number>>(\"std:Array\").getVariation(\"u8\"),\n        Array_u16: Type.get<Array<number>>(\"std:Array\").getVariation(\"u16\"),\n        Array_u32: Type.get<Array<number>>(\"std:Array\").getVariation(\"u32\"),\n        Array_u64: Type.get<Array<bigint>>(\"std:Array\").getVariation(\"u64\"),\n\n        Tuple: Type.get<Tuple>(\"std:Tuple\"),\n        ExtObject: Type.get<object>(\"std:ExtObject\"),\n\n        Type: Type.get<Type>(\"std:Type\"),\n        Function: Type.get<Function>(\"std:Function\"),\n        Stream: Type.get<Stream>(\"std:Stream\"),\n\n        Deferred: Type.get<Stream>(\"std:Deferred\"),\n\n        Negation: Type.get<Negation<any>>(\"std:Negation\"),\n        Conjunction: Type.get<Conjunction<any>>(\"std:Conjunction\"),\n        Disjunction: Type.get<Disjunction<any>>(\"std:Disjunction\"),\n        Task: Type.get<Task>(\"std:Task\"),\n        Assertion:  Type.get<Assertion>(\"std:Assertion\"),\n        Iterator: Type.get<Iterator<any>>(\"std:Iterator\"),\n\n        MatchCondition: Type.get<MatchCondition<any,any>>(\"std:MatchCondition\"),\n\n        StorageMap: Type.get<StorageMap<unknown, unknown>>(\"std:StorageMap\"),\n        StorageWeakMap: Type.get<StorageWeakMap<unknown, unknown>>(\"std:StorageWeakMap\"),\n        StorageSet: Type.get<StorageSet<unknown>>(\"std:StorageSet\"),\n        StorageWeakSet: Type.get<StorageWeakSet<unknown>>(\"std:StorageWeakSet\"),\n\n        Error: Type.get<Error>(\"std:Error\"),\n        SyntaxError: Type.get(\"std:SyntaxError\"),\n        CompilerError: Type.get(\"std:CompilerError\"),\n        PointerError: Type.get(\"std:PointerError\"),\n        ValueError: Type.get(\"std:ValueError\"),\n        PermissionError: Type.get(\"std:PermissionError\"),\n        TypeError: Type.get(\"std:TypeError\"),\n        NetworkError: Type.get(\"std:NetworkError\"),\n        RuntimeError: Type.get(\"std:RuntimeError\"),\n        SecurityError: Type.get(\"std:DatexSecurityError\"),\n        AssertionError: Type.get(\"std:AssertionError\"),\n\n        WeakRef: Type.get(\"std:WeakRef\"),\n\n        Scope: Type.get<Scope>(\"std:Scope\"),\n\n        Debugger: Type.get<Debugger>(\"std:Debugger\"),\n\n        // abstract types\n        Any: Type.get<any>(\"std:Any\"),\n        SyncConsumer: Type.get<any>(\"std:SyncConsumer\"), // <<<\n        ValueConsumer: Type.get<any>(\"std:ValueConsumer\"), // any function or stream sink\n        StreamConsumer: Type.get<any>(\"std:StreamConsumer\"), // any function or stream sink\n\n    }\n\n\n    static short_types:{[key:number]:Type} = {\n        [BinaryCode.STD_TYPE_TEXT]: Type.std.text,\n        [BinaryCode.STD_TYPE_INT]: Type.std.integer,\n        [BinaryCode.STD_TYPE_FLOAT]: Type.std.decimal,\n        [BinaryCode.STD_TYPE_BOOLEAN]: Type.std.boolean,\n        [BinaryCode.STD_TYPE_NULL]: Type.std.null,\n        [BinaryCode.STD_TYPE_VOID]: Type.std.void,\n        [BinaryCode.STD_TYPE_BUFFER]: Type.std.buffer,\n        [BinaryCode.STD_TYPE_CODE_BLOCK]: Type.std.Scope,\n        [BinaryCode.STD_TYPE_UNIT]: Type.std.quantity,\n        [BinaryCode.STD_TYPE_ARRAY]: Type.std.Array,\n        [BinaryCode.STD_TYPE_OBJECT]: Type.std.Object,\n        [BinaryCode.STD_TYPE_SET]: Type.std.Set,\n        [BinaryCode.STD_TYPE_MAP]: Type.std.Map,\n        [BinaryCode.STD_TYPE_TUPLE]: Type.std.Tuple,\n        [BinaryCode.STD_TYPE_FUNCTION]: Type.std.Function,\n        [BinaryCode.STD_TYPE_STREAM]: Type.std.Stream,\n        [BinaryCode.STD_TYPE_ASSERTION]: Type.std.Assertion,\n        [BinaryCode.STD_TYPE_TASK]: Type.std.Task,\n        [BinaryCode.STD_TYPE_ITERATOR]: Type.std.Iterator,\n        [BinaryCode.STD_TYPE_ANY]: Type.std.Any,\n        [BinaryCode.STD_TYPE_URL]: Type.std.url,\n        [BinaryCode.STD_TYPE_TIME]: Type.std.time\n    }\n}\n\n// add type implementation references\nType.std.Function.addImplementedType(Type.std.ValueConsumer);\nType.std.endpoint.addImplementedType(Type.std.ValueConsumer);\nType.std.Assertion.addImplementedType(Type.std.StreamConsumer);\n\nType.std.Function.addImplementedType(Type.std.StreamConsumer);\nType.std.Stream.addImplementedType(Type.std.StreamConsumer);\n\n\nType.std.Assertion.setJSInterface({\n    class: Assertion,\n    is_normal_object: true,\n    proxify_children: true,\n    visible_children: new Set(),\n})\n\n\nType.std.StorageWeakMap.setJSInterface({\n    class: StorageWeakMap,\n    is_normal_object: true,\n    proxify_children: true,\n    visible_children: new Set(['_type']),\n})\n\nType.std.StorageMap.setJSInterface({\n    class: StorageMap,\n    is_normal_object: true,\n    proxify_children: true,\n    visible_children: new Set(['_type']),\n})\n\nType.std.StorageWeakSet.setJSInterface({\n    class: StorageWeakSet,\n    is_normal_object: true,\n    proxify_children: true,\n    visible_children: new Set(['_type']),\n})\n\nType.std.StorageSet.setJSInterface({\n    class: StorageSet,\n    is_normal_object: true,\n    proxify_children: true,\n    visible_children: new Set(['_type']),\n})\n\n// proxify_children leads to problems with native types - use plain objects for pointer propagation + don't propagate proxification\nType.js.NativeObject.proxify_children = false\nType.js.NativeObject.proxify_as_child = false;\nType.std.Object.proxify_children = true\nType.std.Array.proxify_children = true\n\n\n/**\n * useful global type aliases\n */\n\nexport const string = Type.std.text\nexport const number = Type.std.decimal\nexport const boolean = Type.std.boolean\nexport const bigint = Type.std.integer\nexport const any = Type.std.Any\n\nObject.defineProperty(globalThis, \"string\", {value: string})\nObject.defineProperty(globalThis, \"number\", {value: number})\nObject.defineProperty(globalThis, \"boolean\", {value: boolean})\nObject.defineProperty(globalThis, \"bigint\", {value: bigint})\nObject.defineProperty(globalThis, \"any\", {value: any})\n\n\ndeclare global {\n    const string: typeof Type.std.text\n    const number: typeof Type.std.decimal\n    const boolean: typeof Type.std.boolean\n    const bigint: typeof Type.std.integer\n    const any: typeof Type.std.Any\n}"],"names":["DX_PERMISSIONS","DX_TEMPLATE","DX_TYPE","EXTENDED_OBJECTS","INIT_PROPS","INVALID","NOT_EXISTING","VOID","Runtime","JSInterface","Endpoint","Target","AssertionError","CompilerError","NetworkError","PermissionError","PointerError","RuntimeError","SecurityError","SyntaxError","TypeError","ValueError","Markdown","DatexObject","Tuple","Stream","Scope","Quantity","Function","DatexFunction","logger","TypedArray","BinaryCode","Pointer","ReactiveValue","PointerProperty","Conjunction","Disjunction","Logical","Negation","Time","Assertion","StorageMap","StorageWeakMap","StorageSet","StorageWeakSet","ExtensibleFunction","JSTransferableFunction","sendReport","Type","fundamental_types","primitive_types","compact_rep_types","serializable_not_complex_types","pseudo_js_primitives","types","Map","type_templates","template_types","WeakMap","namespace","name","variation","parameters","jsTypeDefModule","url","toString","startsWith","root_type","base_type","is_complex","is_primitive","is_js_pseudo_primitive","has_compact_rep","serializable_not_complex","timeout","children_timeouts","setJSTypeDefModuleMapper","fn","type","values","proxify_children","interface_config","proxify","proxify_as_child","visible_children","about","replace","supportsIndirectRefs","OPTIONS","INDIRECT_REFERENCES","handle_transform","undefined","Set","implemented_types","addImplementedType","add","setConstructor","constructor_fn","setReplicator","replicator_fn","setDestructor","destructor_fn","setTemplate","template","t","Object","keys","get","set","new","value","strict","assign_to_object","key","required_type","desc","getOwnPropertyDescriptor","writable","debug","matches","defineProperty","configurable","std","integer","Number","isInteger","BigInt","ofValue","e","permissions","val","entries","seal","createDefaultValue","context","origin","endpoint","context_location","castValue","isConstructing","constructor","hasMatchingJSClassOrPrototype","class","prototype","cast","make_pointer","ignore_js_config","assigningPtrId","args","empty_generator","globalThis","cast_no_tuple","object","create","assign","is_constructor","toArray","propertyInitializer","getPropertyInitializer","instance","newJSInstance","construct","useTemplate","freeze","initProperties","Reflect","$$","recreate","source","deps","bind","res","apply","Promise","catch","console","warn","setJSInterface","configuration","handleConfigUpdate","setAbout","includes","getParametrized","getVariation","matchesType","setChildTimeout","child","isPropertyAllowed","property","has","isPropertyValueAllowed","assertPropertyValueAllowed","assertMatches","getAllowedPropertyType","void","Any","updateValue","ref","override_silently","Array","splice","length","prop","getOwnPropertyNames","serializeValue","js","TransferableFunction","log","error","Error","stack","handleOperatorAdd","first","second","operator_add","handleOperatorSubtract","operator_subtract","handleOperatorMultiply","operator_multiply","handleOperatorDivide","operator_divide","handleOperatorModulo","operator_modulo","handleOperatorPower","operator_power","handleOperatorAnd","operator_and","handleOperatorOr","operator_or","handleOperatorNot","operator_not","handleCompare","compare","handleApply","apply_value","handleActionAdd","silently","exclude","action_add","handleActionSubtract","action_subtract","handleActionMultiply","action_multiply","handleActionDivide","action_divide","handleActionPower","action_power","handleActionModulo","action_modulo","handleActionAnd","action_and","handleActionOr","action_or","handleActionIncrement","action_increment","handleActionDecrement","action_decrement","valueToDatexString","map","p","join","toJSON","or","and","logicalMatch","against","type_params_match","assertionValue","throwInvalidAssertion","matchesTemplate","parent_template","collapseValue","text","extends","extends_type","name_or_parameters","split","bindType","current_type","WeakRef","getByValue","custom_type","getValueDatexType","null","quantity","decimal","boolean","Symbol","RegExp","MediaStream","Uint8Array","Uint16Array","Uint32Array","BigUint64Array","Int8Array","Int16Array","Int32Array","BigInt64Array","Float32Array","Float64Array","ArrayBuffer","buffer","File","Blob","mime_type_classes","time","URL","target","NativeObject","proto","getPrototypeOf","getClassDatexType","forClass","_forClass","isPrototypeOf","String","Boolean","doesValueHaveProperties","isValueObjectEditable","AsyncGenerator","ReadableStream","WritableStream","Request","Response","integer_8","integer_16","integer_32","integer_64","integer_u8","integer_u16","integer_u32","integer_u64","text_plain","text_datex","text_markdown","sized_text","size","image","video","audio","model","application","application_pdf","Transaction","Array_8","Array_16","Array_32","Array_64","Array_u8","Array_u16","Array_u32","Array_u64","ExtObject","Deferred","Task","Iterator","MatchCondition","Debugger","SyncConsumer","ValueConsumer","StreamConsumer","short_types","STD_TYPE_TEXT","STD_TYPE_INT","STD_TYPE_FLOAT","STD_TYPE_BOOLEAN","STD_TYPE_NULL","STD_TYPE_VOID","STD_TYPE_BUFFER","STD_TYPE_CODE_BLOCK","STD_TYPE_UNIT","STD_TYPE_ARRAY","STD_TYPE_OBJECT","STD_TYPE_SET","STD_TYPE_MAP","STD_TYPE_TUPLE","STD_TYPE_FUNCTION","STD_TYPE_STREAM","STD_TYPE_ASSERTION","STD_TYPE_TASK","STD_TYPE_ITERATOR","STD_TYPE_ANY","STD_TYPE_URL","STD_TYPE_TIME","is_normal_object","string","number","bigint","any"],"mappings":"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","sourceRoot":"/lib/datex-core-js-legacy-0.3.15/types/","file":"type.ts"}