/** * * Agora Real Time Engagement * Created by Wei Hu in 2022-02. * Copyright (c) 2022 Agora IO. All rights reserved. * */ import rte_addon from '../rte_addon'; export class Value { constructor( v?: boolean | number | string | ArrayBuffer | Record, ) { rte_addon.rte_nodejs_value_create(this, v); } getBoolean(): boolean { return rte_addon.rte_nodejs_value_get_boolean(this); } getNumber(): number { return rte_addon.rte_nodejs_value_get_number(this); } getString(): string { return rte_addon.rte_nodejs_value_get_string(this); } getReference(): Record { const value = rte_addon.rte_nodejs_value_get_reference(this); if (typeof value === 'object') { return value; } // RTE C runtime gives us a string to represent this 'reference', and we // treat that string as a JSON string, and convert it to a JS object. // // TODO(Wei): Do not use string as an intermediate step to transfer data // from native world to the JS world. return JSON.parse(value); } } rte_addon.rte_nodejs_value_register_class(Value);