diff --git a/.gitignore b/.gitignore index da97952..59a6fc2 100644 --- a/.gitignore +++ b/.gitignore @@ -12,4 +12,5 @@ zenoh-ts/esm/ zenoh-plugin-remote-api/target/** zenoh-plugin-remote-api/bindings/** **/target/** -**/node_modules/** \ No newline at end of file +**/node_modules/** +**/dist/** diff --git a/Cargo.lock b/Cargo.lock index d1f22b5..29d0e8e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3181,6 +3181,7 @@ dependencies = [ name = "zenoh-plugin-remote-api" version = "1.0.0" dependencies = [ + "base64 0.22.1", "flume", "futures", "futures-util", diff --git a/zenoh-plugin-remote-api/Cargo.toml b/zenoh-plugin-remote-api/Cargo.toml index 9359395..9024155 100644 --- a/zenoh-plugin-remote-api/Cargo.toml +++ b/zenoh-plugin-remote-api/Cargo.toml @@ -46,7 +46,7 @@ tokio-tungstenite = "0.23.1" tokio-rustls = { version = "0.26.0", default-features = false } futures-util = "0.3.26" rustls-pemfile = "2.1.2" - +base64 = "0.22.1" flume = "0.11" futures = "0.3.5" git-version = "0.3.5" @@ -55,7 +55,7 @@ ts-rs = { version = "9.0", features = [ "serde-compat", "uuid-impl", "serde-json-impl", - "no-serde-warnings" + "no-serde-warnings", ] } tracing = "0.1" schemars = { version = "0.8.12", features = ["either"] } diff --git a/zenoh-plugin-remote-api/src/handle_control_message.rs b/zenoh-plugin-remote-api/src/handle_control_message.rs index 943443d..b10af5f 100644 --- a/zenoh-plugin-remote-api/src/handle_control_message.rs +++ b/zenoh-plugin-remote-api/src/handle_control_message.rs @@ -79,8 +79,18 @@ pub(crate) async fn handle_control_message( add_if_some!(priority, get_builder); add_if_some!(express, get_builder); add_if_some!(encoding, get_builder); - add_if_some!(payload, get_builder); - add_if_some!(attachment, get_builder); + if let Some(payload_b64) = payload { + match payload_b64.b64_to_bytes() { + Ok(payload) => get_builder = get_builder.payload(payload), + Err(err) => warn!("Could not decode B64 encoded bytes {err}"), + } + } + if let Some(attachment_b64) = attachment { + match attachment_b64.b64_to_bytes() { + Ok(attachment) => get_builder = get_builder.attachment(attachment), + Err(err) => warn!("Could not decode B64 encoded bytes {err}"), + } + } match handler { HandlerChannel::Fifo(size) => { @@ -130,12 +140,26 @@ pub(crate) async fn handle_control_message( express, attachment, } => { - let mut put_builder = state_map.session.put(key_expr, payload); + let mut put_builder = match payload.b64_to_bytes() { + Ok(payload) => state_map.session.put(key_expr, payload), + Err(err) => { + warn!("ControlMsg::Put , could not decode B64 encoded bytes {err}"); + return Ok(None); + } + }; + add_if_some!(encoding, put_builder); add_if_some!(congestion_control, put_builder); add_if_some!(priority, put_builder); add_if_some!(express, put_builder); - add_if_some!(attachment, put_builder); + + if let Some(attachment_b64) = attachment { + match attachment_b64.b64_to_bytes() { + Ok(attachment) => put_builder = put_builder.attachment(attachment), + Err(err) => warn!("Could not decode B64 encoded bytes {err}"), + } + } + put_builder.await?; } ControlMsg::Delete { @@ -149,7 +173,12 @@ pub(crate) async fn handle_control_message( add_if_some!(congestion_control, delete_builder); add_if_some!(priority, delete_builder); add_if_some!(express, delete_builder); - add_if_some!(attachment, delete_builder); + if let Some(attachment_b64) = attachment { + match attachment_b64.b64_to_bytes() { + Ok(attachment) => delete_builder = delete_builder.attachment(attachment), + Err(err) => warn!("Could not decode B64 encoded bytes {err}"), + } + } delete_builder.await?; } diff --git a/zenoh-plugin-remote-api/src/handle_data_message.rs b/zenoh-plugin-remote-api/src/handle_data_message.rs index 09236ca..7555937 100644 --- a/zenoh-plugin-remote-api/src/handle_data_message.rs +++ b/zenoh-plugin-remote-api/src/handle_data_message.rs @@ -32,9 +32,24 @@ pub async fn handle_data_message( encoding, } => { if let Some(publisher) = state_map.publishers.get(&id) { - let mut put_builder = publisher.put(payload); - if let Some(payload) = attachment { - put_builder = put_builder.attachment(payload); + let mut put_builder = match payload.b64_to_bytes() { + Ok(payload) => publisher.put(payload), + Err(err) => { + warn!("DataMsg::PublisherPut : Could not decode B64 encoded bytes {err}"); + return Err(Box::new(err)); + } + }; + + if let Some(attachment_b64) = attachment { + match attachment_b64.b64_to_bytes() { + Ok(payload) => put_builder = put_builder.attachment(payload), + Err(err) => { + warn!( + "DataMsg::PublisherPut : Could not decode B64 encoded bytes {err}" + ); + return Err(Box::new(err)); + } + } } if let Some(encoding) = encoding { put_builder = put_builder.encoding(encoding); @@ -59,9 +74,21 @@ pub async fn handle_data_message( if let Some(q) = query { match reply.result { QueryReplyVariant::Reply { key_expr, payload } => { - q.reply(key_expr, payload).await? + match payload.b64_to_bytes() { + Ok(payload) => q.reply(key_expr, payload).await?, + Err(err) => { + warn!("QueryReplyVariant::Reply : Could not decode B64 encoded bytes {err}"); + return Err(Box::new(err)); + } + } } - QueryReplyVariant::ReplyErr { payload } => q.reply_err(payload).await?, + QueryReplyVariant::ReplyErr { payload } => match payload.b64_to_bytes() { + Ok(payload) => q.reply_err(payload).await?, + Err(err) => { + warn!("QueryReplyVariant::Reply : Could not decode B64 encoded bytes {err}"); + return Err(Box::new(err)); + } + }, QueryReplyVariant::ReplyDelete { key_expr } => { q.reply_del(key_expr).await? } diff --git a/zenoh-plugin-remote-api/src/interface.rs b/zenoh-plugin-remote-api/src/interface.rs index 4c508a3..08314ff 100644 --- a/zenoh-plugin-remote-api/src/interface.rs +++ b/zenoh-plugin-remote-api/src/interface.rs @@ -1,5 +1,6 @@ use std::sync::Arc; +use base64::{prelude::BASE64_STANDARD, Engine}; use serde::{Deserialize, Deserializer, Serialize, Serializer}; use ts_rs::TS; use uuid::Uuid; @@ -16,6 +17,22 @@ use zenoh::{ // ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ // ██ ██ ███████ ██ ██ ██████ ██ ███████ ██ ██ ██ ██ ██ ██ ███████ ███████ ███████ ██ ██ ██████ ███████ +#[derive(TS)] +#[ts(export)] +#[derive(Debug, Serialize, Deserialize)] +pub(crate) struct B64String(String); +impl From for B64String { + fn from(value: String) -> Self { + B64String(value) + } +} + +impl B64String { + pub fn b64_to_bytes(self) -> Result, base64::DecodeError> { + BASE64_STANDARD.decode(self.0) + } +} + #[derive(TS)] #[ts(export)] #[derive(Debug, Serialize, Deserialize)] @@ -31,8 +48,8 @@ pub enum DataMsg { // Client -> SVR PublisherPut { id: Uuid, - payload: Vec, - attachment: Option>, + payload: B64String, + attachment: Option, encoding: Option, }, // SVR -> Client @@ -108,10 +125,10 @@ pub enum ControlMsg { express: Option, #[ts(type = "string | undefined")] encoding: Option, - #[ts(type = "number[] | undefined")] - payload: Option>, - #[ts(type = "number[] | undefined")] - attachment: Option>, + #[ts(type = "string | undefined")] + payload: Option, + #[ts(type = "string | undefined")] + attachment: Option, }, GetFinished { id: Uuid, @@ -119,7 +136,7 @@ pub enum ControlMsg { Put { #[ts(as = "OwnedKeyExprWrapper")] key_expr: OwnedKeyExpr, - payload: Vec, + payload: B64String, // #[ts(type = "string | undefined")] encoding: Option, @@ -139,8 +156,8 @@ pub enum ControlMsg { priority: Option, #[ts(type = "boolean | undefined")] express: Option, - #[ts(type = "number[] | undefined")] - attachment: Option>, + #[ts(type = "string | undefined")] + attachment: Option, }, Delete { #[ts(as = "OwnedKeyExprWrapper")] @@ -162,8 +179,8 @@ pub enum ControlMsg { priority: Option, #[ts(type = "boolean | undefined")] express: Option, - #[ts(type = "number[] | undefined")] - attachment: Option>, + #[ts(type = "string | undefined")] + attachment: Option, }, // Subscriber DeclareSubscriber { @@ -395,16 +412,22 @@ pub struct QueryWS { key_expr: OwnedKeyExpr, parameters: String, encoding: Option, - #[ts(type = "number[] | undefined")] - attachment: Option>, - #[ts(type = "number[] | undefined")] - payload: Option>, + #[ts(type = "string | undefined")] + attachment: Option, + #[ts(type = "string | undefined")] + payload: Option, } impl From<(&Query, Uuid)> for QueryWS { fn from((q, uuid): (&Query, Uuid)) -> Self { - let payload = q.payload().map(|x| x.to_bytes().to_vec()); - let attachment: Option> = q.attachment().map(|x| x.to_bytes().to_vec()); + let payload = q + .payload() + .map(|x| x.to_bytes().to_vec()) + .map(|vec_bytes| BASE64_STANDARD.encode(vec_bytes).into()); + let attachment: Option = q + .attachment() + .map(|x| x.to_bytes().to_vec()) + .map(|vec_bytes| BASE64_STANDARD.encode(vec_bytes).into()); QueryWS { query_uuid: uuid, @@ -462,10 +485,10 @@ pub enum QueryReplyVariant { Reply { #[ts(as = "OwnedKeyExprWrapper")] key_expr: OwnedKeyExpr, - payload: Vec, + payload: B64String, }, ReplyErr { - payload: Vec, + payload: B64String, }, ReplyDelete { #[ts(as = "OwnedKeyExprWrapper")] @@ -477,7 +500,7 @@ pub enum QueryReplyVariant { #[ts(export)] #[derive(Debug, Serialize, Deserialize)] pub struct ReplyErrorWS { - pub(crate) payload: Vec, + pub(crate) payload: B64String, pub(crate) encoding: String, } @@ -486,7 +509,7 @@ impl From for ReplyErrorWS { let z_bytes: Vec = r_e.payload().to_bytes().to_vec(); ReplyErrorWS { - payload: z_bytes, + payload: BASE64_STANDARD.encode(z_bytes).into(), encoding: r_e.encoding().to_string(), } } @@ -497,7 +520,7 @@ impl From<&ReplyError> for ReplyErrorWS { let z_bytes: Vec = r_e.payload().to_bytes().to_vec(); ReplyErrorWS { - payload: z_bytes, + payload: base64::prelude::BASE64_STANDARD.encode(z_bytes).into(), encoding: r_e.encoding().to_string(), } } @@ -508,14 +531,14 @@ impl From<&ReplyError> for ReplyErrorWS { pub struct SampleWS { #[ts(as = "OwnedKeyExprWrapper")] pub(crate) key_expr: OwnedKeyExpr, - pub(crate) value: Vec, + pub(crate) value: B64String, pub(crate) kind: SampleKindWS, pub(crate) encoding: String, pub(crate) timestamp: Option, pub(crate) congestion_control: u8, pub(crate) priority: u8, pub(crate) express: bool, - pub(crate) attachement: Option>, + pub(crate) attachement: Option, } #[derive(Debug, Serialize, Deserialize, TS)] @@ -536,19 +559,21 @@ impl From for SampleKindWS { impl From<&Sample> for SampleWS { fn from(s: &Sample) -> Self { - // let z_bytes: Vec = Vec::::from(s.payload()); let z_bytes: Vec = s.payload().to_bytes().to_vec(); SampleWS { key_expr: s.key_expr().to_owned().into(), - value: z_bytes, + value: BASE64_STANDARD.encode(z_bytes).into(), kind: s.kind().into(), timestamp: s.timestamp().map(|x| x.to_string_rfc3339_lossy()), priority: s.priority() as u8, congestion_control: s.congestion_control() as u8, encoding: s.encoding().to_string(), express: s.express(), - attachement: s.attachment().map(|x| x.to_bytes().to_vec()), + attachement: s + .attachment() + .map(|x| x.to_bytes().to_vec()) + .map(|z_bytes| BASE64_STANDARD.encode(z_bytes).into()), } } } @@ -569,6 +594,26 @@ mod tests { use super::*; + #[test] + fn test_b64_serializing() { + let bytes: Vec = std::iter::repeat(245).take(100).collect(); + + let b64_string = BASE64_STANDARD.encode(bytes.clone()); + + #[derive(Debug, Serialize, Deserialize)] + struct RawBytes { + bytes: Vec, + } + #[derive(Debug, Serialize, Deserialize)] + struct B64Encoded { + b64_string: String, + } + + let json_bytes = serde_json::to_string(&RawBytes { bytes }).unwrap(); + let json_b64 = serde_json::to_string(&B64Encoded { b64_string }).unwrap(); + assert!(json_b64.len() < json_bytes.len()) + } + #[test] fn serialize_messages() { let json: String = @@ -592,7 +637,7 @@ mod tests { let _sample_ws = SampleWS { key_expr: key_expr.clone(), - value: vec![1, 2, 3], + value: BASE64_STANDARD.encode(vec![1, 2, 3]).into(), kind: SampleKindWS::Put, encoding: "zenoh/bytes".into(), timestamp: None, @@ -602,17 +647,9 @@ mod tests { attachement: None, }; - // let json: String = serde_json::to_string(&QueryableMsg::Reply { - // reply: QueryReplyWS { - // query_uuid: uuid, - // }, - // }) - // .unwrap(); - // assert_eq!(json, r#"{"Reply":{}}"#); - let sample_ws = SampleWS { key_expr, - value: vec![1, 2, 3], + value: BASE64_STANDARD.encode(vec![1, 2, 3]).into(), kind: SampleKindWS::Put, encoding: "zenoh/bytes".into(), timestamp: None, @@ -622,9 +659,5 @@ mod tests { attachement: None, }; let _json: String = serde_json::to_string(&DataMsg::Sample(sample_ws, uuid)).unwrap(); - // assert_eq!( - // json, - // r#"{"Sample":[{"key_expr":"demo/test","value":[1,2,3],"kind":"Put"},"a2663bb1-128c-4dd3-a42b-d1d3337e2e51"]}"# - // ); } } diff --git a/zenoh-ts/examples/package-lock.json b/zenoh-ts/examples/package-lock.json index 9b647c2..4dfc27d 100644 --- a/zenoh-ts/examples/package-lock.json +++ b/zenoh-ts/examples/package-lock.json @@ -10,7 +10,6 @@ "dependencies": { "@ZettaScaleLabs/zenoh-ts": "file:../", "eslint": "^9.10.0", - "jscdr": "0.0.3", "tslog": "^4.9.3" }, "devDependencies": { @@ -20,16 +19,13 @@ } }, "..": { + "name": "@ZettaScaleLabs/zenoh-ts", "version": "0.0.8", "license": "SEE LICENSE IN 'LICENSE'", "dependencies": { + "base64-arraybuffer": "^1.0.2", "channel-ts": "^0.1.2", - "cpx": "^1.5.0", "eslint": "^9.10.0", - "isomorphic-ws": "^5.0.0", - "modern-isomorphic-ws": "^1.0.5", - "object-inspect": "^1.13.1", - "request": "^2.79.0", "text-encoding": "^0.7.0", "ts-log": "^2.2.5", "tslog": "^4.9.3", @@ -37,14 +33,9 @@ }, "devDependencies": { "@types/node": "20.9.1", - "@types/object-inspect": "^1.13.0", "@types/uuid": "^10.0.0", - "@types/ws": "^8.5.12", - "ts-loader": "^9.5.0", - "ts-node": "10.9.1", "typedoc": "^0.26.5", - "typescript": "^5.3.2", - "webpack-cli": "^5.1.4" + "typescript": "^5.3.2" } }, "../..": { @@ -908,17 +899,6 @@ "concat-map": "0.0.1" } }, - "node_modules/bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha512-IuzSdmADppkZ6DlpycMkm8l9zeEq16fWtLvunEwFiYciR/BHo4E8/xs5piFquG+Za8OWmMqHF8zuRviz2LHvRQ==", - "dependencies": { - "long": "~3" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -963,17 +943,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/core-js": { - "version": "3.15.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.1.tgz", - "integrity": "sha512-h8VbZYnc9pDzueiS2610IULDkpFFPunHwIpl8yRwFahAEEdSpHlTy3h3z3rKq5h11CaUdBEeRViu9AYvbxiMeg==", - "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1379,15 +1348,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jscdr": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/jscdr/-/jscdr-0.0.3.tgz", - "integrity": "sha512-s2bWNrXMRQnGZO1v/L7BhKxLj+A0xrrr57/EfY9BW4GLAnGSW9Yc27YSlWFH8tBoUa9S0kD+OhI3FVx76pNudQ==", - "dependencies": { - "bytebuffer": "5.0.1", - "core-js": "3.15.1" - } - }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", @@ -1442,14 +1402,6 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, - "node_modules/long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", diff --git a/zenoh-ts/examples/src/z_put.ts b/zenoh-ts/examples/src/z_put.ts index 0132419..d99c6a3 100644 --- a/zenoh-ts/examples/src/z_put.ts +++ b/zenoh-ts/examples/src/z_put.ts @@ -3,6 +3,8 @@ import "./webpage.ts"; import { Config, Session } from "@ZettaScaleLabs/zenoh-ts"; export async function put() { + console.log('Running Zenoh Put !'); + const session = await Session.open(Config.new("ws/127.0.0.1:10000")); session.put("demo/example/zenoh-ts-put", "Put from Typescript!"); } diff --git a/zenoh-ts/examples/src/z_queryable.ts b/zenoh-ts/examples/src/z_queryable.ts index 6a1a2c5..9df63a2 100644 --- a/zenoh-ts/examples/src/z_queryable.ts +++ b/zenoh-ts/examples/src/z_queryable.ts @@ -7,6 +7,7 @@ import { Config, KeyExpr, Query, Queryable, Session, ZBytes } from "@ZettaScaleL export async function queryable() { const session = await Session.open(Config.new("ws/127.0.0.1:10000")); let key_expr = KeyExpr.new("demo/example/zenoh-ts-queryable"); + console.log("Declare Queryable on KeyExpr:", key_expr.toString()); const payload = [122, 101, 110, 111, 104]; @@ -50,7 +51,7 @@ export async function queryable() { console.log!(`>> [Queryable ] Received Query ${query.selector().toString()}`); } else { console.log!( - `>> [Queryable ] Received Query ${query.selector()} with payload '${zbytes.payload()}'`, + `>> [Queryable ] Received Query ${query.selector()} with payload '${zbytes.buffer()}'`, ); } diff --git a/zenoh-ts/examples/src/z_sub_test.ts b/zenoh-ts/examples/src/z_sub_test.ts deleted file mode 100644 index 2a50628..0000000 --- a/zenoh-ts/examples/src/z_sub_test.ts +++ /dev/null @@ -1,105 +0,0 @@ -import "./style.css"; -import "./webpage.ts"; - -import { FifoChannel, Sample, Config, Subscriber, Session } from "@ZettaScaleLabs/zenoh-ts"; - -interface Deserialize { - deserialize(buffer: Uint8Array): T -} - - -export class ArrayTDeserilaizer> implements Deserialize> { - static err = "Floating Point Deserialization Failed"; - d: T; - - constructor(d: T) { - this.d = d; - } - - deserialize(buffer: Uint8Array): Array { - - if (buffer.length == 0) { - return new Array() - } - - function read_length(buffer: Uint8Array) { - if (buffer.length == 0) { - return 0; - } - let b = buffer[0]; - buffer = buffer.subarray(1, buffer.length) - let v = 0; - let i = 0; - let VLE_LEN_MAX = 9; - while ((b & 128) != 0 && i != 7 * (VLE_LEN_MAX - 1)) { - v = v | (b & 127) << i; - b = buffer[0]; - buffer = buffer.subarray(1, buffer.length) - i += 7; - } - v |= (b) << i; - return v - } - - let r_length = read_length(buffer); - - console.log("length to read", r_length); - - // let empty = false; - // while(empty){ - // const data_view = new DataView(padded.buffer, padded.byteOffset, padded.byteLength); - - // data_view.getUint8 - // } - return new Array(); - } -} - -function read_length(buffer: Uint8Array) { - if (buffer.length == 0) { - return 0; - } - let b = buffer[0]; - buffer = buffer.subarray(1, buffer.length) - let v = 0; - let i = 0; - let VLE_LEN_MAX = 9; - while ((b & 128) != 0 && i != 7 * (VLE_LEN_MAX - 1)) { - v = v | (b & 127) << i; - b = buffer[0]; - buffer = buffer.subarray(1, buffer.length) - i += 7; - } - v |= (b) << i; - return v -} - -export async function sub_test() { - const session = await Session.open(Config.new("ws/127.0.0.1:10000")); - - // Poll Subscribers will only consume data on calls to receieve() - // This means that interally the FIFO queue will fill up to the point that new values will be dropped - // The dropping of these values occurs in the Remote-API Plugin - let poll_subscriber: Subscriber = await session.declare_subscriber("demo/example/zenoh-rs-pub", new FifoChannel(256)); - - while (true) { - // let value = await poll_subscriber.receive(); - // if (value instanceof Sample) { - // let res = value.payload().payload(); - // console.log(res) - // } - - let value2 = await poll_subscriber.receive(); - if (value2 instanceof Sample) { - let bytes = value2.payload().payload(); - console.log(bytes) - let r_length = read_length(bytes); - console.log("length to read", r_length); - console.log(bytes) - - } - console.log("break") - } - - poll_subscriber.undeclare(); -} diff --git a/zenoh-ts/examples/yarn.lock b/zenoh-ts/examples/yarn.lock index b0c16b4..70132a4 100644 --- a/zenoh-ts/examples/yarn.lock +++ b/zenoh-ts/examples/yarn.lock @@ -2,131 +2,11 @@ # yarn lockfile v1 -"@ZettaScaleLabs/zenoh-ts@file:..": - version "0.0.8" - dependencies: - channel-ts "^0.1.2" - eslint "^9.10.0" - text-encoding "^0.7.0" - ts-log "^2.2.5" - tslog "^4.9.3" - uuid "^10.0.0" - -"@esbuild/aix-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" - integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== - -"@esbuild/android-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" - integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== - -"@esbuild/android-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" - integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== - -"@esbuild/android-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" - integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== - -"@esbuild/darwin-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" - integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== - -"@esbuild/darwin-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" - integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== - -"@esbuild/freebsd-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" - integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== - -"@esbuild/freebsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" - integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== - -"@esbuild/linux-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" - integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== - -"@esbuild/linux-arm@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" - integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== - -"@esbuild/linux-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" - integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== - -"@esbuild/linux-loong64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" - integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== - -"@esbuild/linux-mips64el@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" - integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== - -"@esbuild/linux-ppc64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" - integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== - -"@esbuild/linux-riscv64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" - integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== - -"@esbuild/linux-s390x@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" - integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== - "@esbuild/linux-x64@0.20.2": version "0.20.2" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz" integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== -"@esbuild/netbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" - integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== - -"@esbuild/openbsd-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" - integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== - -"@esbuild/sunos-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" - integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== - -"@esbuild/win32-arm64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" - integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== - -"@esbuild/win32-ia32@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" - integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== - -"@esbuild/win32-x64@0.20.2": - version "0.20.2" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" - integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== - "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz" @@ -211,61 +91,6 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@rollup/rollup-android-arm-eabi@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" - integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== - -"@rollup/rollup-android-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" - integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== - -"@rollup/rollup-darwin-arm64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" - integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== - -"@rollup/rollup-darwin-x64@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" - integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== - -"@rollup/rollup-linux-arm-gnueabihf@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" - integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== - -"@rollup/rollup-linux-arm-musleabihf@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" - integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== - -"@rollup/rollup-linux-arm64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" - integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== - -"@rollup/rollup-linux-arm64-musl@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" - integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== - -"@rollup/rollup-linux-powerpc64le-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" - integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== - -"@rollup/rollup-linux-riscv64-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" - integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== - -"@rollup/rollup-linux-s390x-gnu@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" - integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== - "@rollup/rollup-linux-x64-gnu@4.18.0": version "4.18.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz" @@ -276,37 +101,42 @@ resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz" integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== -"@rollup/rollup-win32-arm64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" - integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== - -"@rollup/rollup-win32-ia32-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" - integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== - -"@rollup/rollup-win32-x64-msvc@4.18.0": - version "4.18.0" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" - integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== - "@types/estree@1.0.5": version "1.0.5" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== +"@types/node@^18.0.0 || >=20.0.0": + version "20.12.13" + resolved "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz" + integrity sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA== + dependencies: + undici-types "~5.26.4" + "@types/uuid@^10.0.0": version "10.0.0" resolved "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz" integrity sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ== +"@ZettaScaleLabs/zenoh-ts@file:../": + version "0.0.8" + resolved "file:.." + dependencies: + base64-arraybuffer "^1.0.2" + base64-js "^1.5.1" + channel-ts "^0.1.2" + eslint "^9.10.0" + text-encoding "^0.7.0" + ts-log "^2.2.5" + tslog "^4.9.3" + uuid "^10.0.0" + acorn-jsx@^5.3.2: version "5.3.2" resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.12.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.12.0: version "8.12.1" resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz" integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== @@ -364,11 +194,6 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -channel-ts@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/channel-ts/-/channel-ts-0.1.2.tgz#eefdbc7c9e0275aa1862f8c436cca1c49658f768" - integrity sha512-cI/XiDF+jB0v95Xup8xlM7k93lT3xwPl0WdjEZ9w9aUMf5N+3GQevspK2EDYfMyxcKcXdN1F6PDpuYRpUfaZmg== - color-convert@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" @@ -459,7 +284,7 @@ eslint-visitor-keys@^4.0.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz" integrity sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw== -eslint@^9.10.0: +"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", eslint@^9.10.0: version "9.10.0" resolved "https://registry.npmjs.org/eslint/-/eslint-9.10.0.tgz" integrity sha512-Y4D0IgtBZfOcOUAIQTSXBKoNGfY0REGqHJG6+Q81vNippW5YlKjHFj4soMxamKK1NXHUWuBZTLdU3Km+L/pcHw== @@ -582,11 +407,6 @@ flatted@^3.2.9: resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - glob-parent@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" @@ -865,21 +685,11 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" -text-encoding@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/text-encoding/-/text-encoding-0.7.0.tgz#f895e836e45990624086601798ea98e8f36ee643" - integrity sha512-oJQ3f1hrOnbRLOcwKz0Liq2IcrvDeZRHXhd9RgLrsT+DjWY/nty1Hi7v3dtkaEYbPYe0mUoOfzRrMwfXXwgPUA== - text-table@^0.2.0: version "0.2.0" resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -ts-log@^2.2.5: - version "2.2.7" - resolved "https://registry.yarnpkg.com/ts-log/-/ts-log-2.2.7.tgz#4f4512144898b77c9984e91587076fcb8518688e" - integrity sha512-320x5Ggei84AxzlXp91QkIGSw5wgaLT6GeAH0KsqDmRZdVWW2OiSeVvElVoatk3f7nicwXlElXsoFkARiGE2yg== - tslog@^4.9.3: version "4.9.3" resolved "https://registry.npmjs.org/tslog/-/tslog-4.9.3.tgz" @@ -897,6 +707,11 @@ typescript@^5.2.2: resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz" integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" @@ -904,11 +719,6 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -uuid@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-10.0.0.tgz#5a95aa454e6e002725c79055fd42aaba30ca6294" - integrity sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ== - vite@^5.2.12: version "5.2.12" resolved "https://registry.npmjs.org/vite/-/vite-5.2.12.tgz" diff --git a/zenoh-ts/package.json b/zenoh-ts/package.json index 7388a69..ead5466 100644 --- a/zenoh-ts/package.json +++ b/zenoh-ts/package.json @@ -16,10 +16,10 @@ "LICENSE" ], "dependencies": { + "base64-arraybuffer": "^1.0.2", "channel-ts": "^0.1.2", "eslint": "^9.10.0", "text-encoding": "^0.7.0", - "ts-log": "^2.2.5", "tslog": "^4.9.3", "uuid": "^10.0.0" }, diff --git a/zenoh-ts/src/pubsub.ts b/zenoh-ts/src/pubsub.ts index 3cf5a6d..a346acf 100644 --- a/zenoh-ts/src/pubsub.ts +++ b/zenoh-ts/src/pubsub.ts @@ -230,11 +230,11 @@ export class Publisher { let _attachment = null; if (attachment != null) { let att_bytes = ZBytes.new(attachment); - _attachment = Array.from(att_bytes.payload()); + _attachment = Array.from(att_bytes.buffer()); } return this._remote_publisher.put( - Array.from(zbytes.payload()), + Array.from(zbytes.buffer()), _attachment, _encoding.toString(), ); diff --git a/zenoh-ts/src/query.ts b/zenoh-ts/src/query.ts index 4a5e9a9..3d0159e 100644 --- a/zenoh-ts/src/query.ts +++ b/zenoh-ts/src/query.ts @@ -1,5 +1,6 @@ // External import { SimpleChannel } from "channel-ts"; +import { encode as b64_str_from_bytes } from "base64-arraybuffer"; // Remote API import { RemoteQueryable } from "./remote_api/query"; import { ReplyWS } from "./remote_api/interface/ReplyWS"; @@ -229,7 +230,8 @@ export class Query { let qr_variant: QueryReplyVariant = { Reply: { key_expr: _key_expr.toString(), - payload: Array.from(z_bytes.payload()), + payload: b64_str_from_bytes(z_bytes.buffer()), + }, }; this.reply_ws(qr_variant); @@ -242,7 +244,7 @@ export class Query { reply_err(payload: IntoZBytes): void { let z_bytes: ZBytes = ZBytes.new(payload); let qr_variant: QueryReplyVariant = { - ReplyErr: { payload: Array.from(z_bytes.payload()) }, + ReplyErr: { payload: b64_str_from_bytes(z_bytes.buffer()) }, }; this.reply_ws(qr_variant); } diff --git a/zenoh-ts/src/remote_api/interface/B64String.ts b/zenoh-ts/src/remote_api/interface/B64String.ts new file mode 100644 index 0000000..fbd7b47 --- /dev/null +++ b/zenoh-ts/src/remote_api/interface/B64String.ts @@ -0,0 +1,3 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +export type B64String = string; diff --git a/zenoh-ts/src/remote_api/interface/ControlMsg.ts b/zenoh-ts/src/remote_api/interface/ControlMsg.ts index 831a5e5..5497f3e 100644 --- a/zenoh-ts/src/remote_api/interface/ControlMsg.ts +++ b/zenoh-ts/src/remote_api/interface/ControlMsg.ts @@ -1,5 +1,6 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { B64String } from "./B64String"; import type { HandlerChannel } from "./HandlerChannel"; import type { OwnedKeyExprWrapper } from "./OwnedKeyExprWrapper"; -export type ControlMsg = "OpenSession" | "CloseSession" | { "Session": string } | { "Get": { key_expr: OwnedKeyExprWrapper, parameters: string | null, handler: HandlerChannel, id: string, consolidation: number | undefined, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, encoding: string | undefined, payload: number[] | undefined, attachment: number[] | undefined, } } | { "GetFinished": { id: string, } } | { "Put": { key_expr: OwnedKeyExprWrapper, payload: Array, encoding: string | undefined, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, attachment: number[] | undefined, } } | { "Delete": { key_expr: OwnedKeyExprWrapper, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, attachment: number[] | undefined, } } | { "DeclareSubscriber": { key_expr: OwnedKeyExprWrapper, handler: HandlerChannel, id: string, } } | { "Subscriber": string } | { "UndeclareSubscriber": string } | { "DeclarePublisher": { key_expr: OwnedKeyExprWrapper, encoding: string | undefined, congestion_control: number | undefined, priority: number | undefined, reliability: number | undefined, express: boolean | undefined, id: string, } } | { "UndeclarePublisher": string } | { "DeclareQueryable": { key_expr: OwnedKeyExprWrapper, id: string, complete: boolean, } } | { "UndeclareQueryable": string }; +export type ControlMsg = "OpenSession" | "CloseSession" | { "Session": string } | { "Get": { key_expr: OwnedKeyExprWrapper, parameters: string | null, handler: HandlerChannel, id: string, consolidation: number | undefined, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, encoding: string | undefined, payload: string | undefined, attachment: string | undefined, } } | { "GetFinished": { id: string, } } | { "Put": { key_expr: OwnedKeyExprWrapper, payload: B64String, encoding: string | undefined, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, attachment: string | undefined, } } | { "Delete": { key_expr: OwnedKeyExprWrapper, congestion_control: number | undefined, priority: number | undefined, express: boolean | undefined, attachment: string | undefined, } } | { "DeclareSubscriber": { key_expr: OwnedKeyExprWrapper, handler: HandlerChannel, id: string, } } | { "Subscriber": string } | { "UndeclareSubscriber": string } | { "DeclarePublisher": { key_expr: OwnedKeyExprWrapper, encoding: string | undefined, congestion_control: number | undefined, priority: number | undefined, reliability: number | undefined, express: boolean | undefined, id: string, } } | { "UndeclarePublisher": string } | { "DeclareQueryable": { key_expr: OwnedKeyExprWrapper, id: string, complete: boolean, } } | { "UndeclareQueryable": string }; diff --git a/zenoh-ts/src/remote_api/interface/DataMsg.ts b/zenoh-ts/src/remote_api/interface/DataMsg.ts index e5b5be5..271edb2 100644 --- a/zenoh-ts/src/remote_api/interface/DataMsg.ts +++ b/zenoh-ts/src/remote_api/interface/DataMsg.ts @@ -1,6 +1,7 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { B64String } from "./B64String"; import type { QueryableMsg } from "./QueryableMsg"; import type { ReplyWS } from "./ReplyWS"; import type { SampleWS } from "./SampleWS"; -export type DataMsg = { "PublisherPut": { id: string, payload: Array, attachment: Array | null, encoding: string | null, } } | { "Sample": [SampleWS, string] } | { "GetReply": ReplyWS } | { "Queryable": QueryableMsg }; +export type DataMsg = { "PublisherPut": { id: string, payload: B64String, attachment: B64String | null, encoding: string | null, } } | { "Sample": [SampleWS, string] } | { "GetReply": ReplyWS } | { "Queryable": QueryableMsg }; diff --git a/zenoh-ts/src/remote_api/interface/QueryReplyVariant.ts b/zenoh-ts/src/remote_api/interface/QueryReplyVariant.ts index 1e6ec2e..b67f097 100644 --- a/zenoh-ts/src/remote_api/interface/QueryReplyVariant.ts +++ b/zenoh-ts/src/remote_api/interface/QueryReplyVariant.ts @@ -1,4 +1,5 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { B64String } from "./B64String"; import type { OwnedKeyExprWrapper } from "./OwnedKeyExprWrapper"; -export type QueryReplyVariant = { "Reply": { key_expr: OwnedKeyExprWrapper, payload: Array, } } | { "ReplyErr": { payload: Array, } } | { "ReplyDelete": { key_expr: OwnedKeyExprWrapper, } }; +export type QueryReplyVariant = { "Reply": { key_expr: OwnedKeyExprWrapper, payload: B64String, } } | { "ReplyErr": { payload: B64String, } } | { "ReplyDelete": { key_expr: OwnedKeyExprWrapper, } }; diff --git a/zenoh-ts/src/remote_api/interface/QueryWS.ts b/zenoh-ts/src/remote_api/interface/QueryWS.ts index 733f361..4a99ca1 100644 --- a/zenoh-ts/src/remote_api/interface/QueryWS.ts +++ b/zenoh-ts/src/remote_api/interface/QueryWS.ts @@ -1,4 +1,4 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. import type { OwnedKeyExprWrapper } from "./OwnedKeyExprWrapper"; -export type QueryWS = { query_uuid: string, key_expr: OwnedKeyExprWrapper, parameters: string, encoding: string | null, attachment: Array | null, payload: Array | null, }; +export type QueryWS = { query_uuid: string, key_expr: OwnedKeyExprWrapper, parameters: string, encoding: string | null, attachment: string | undefined, payload: string | undefined, }; diff --git a/zenoh-ts/src/remote_api/interface/ReplyErrorWS.ts b/zenoh-ts/src/remote_api/interface/ReplyErrorWS.ts index 778d273..7c8473e 100644 --- a/zenoh-ts/src/remote_api/interface/ReplyErrorWS.ts +++ b/zenoh-ts/src/remote_api/interface/ReplyErrorWS.ts @@ -1,3 +1,4 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { B64String } from "./B64String"; -export type ReplyErrorWS = { payload: Array, encoding: string, }; +export type ReplyErrorWS = { payload: B64String, encoding: string, }; diff --git a/zenoh-ts/src/remote_api/interface/SampleWS.ts b/zenoh-ts/src/remote_api/interface/SampleWS.ts index a87fb7e..0c25d1b 100644 --- a/zenoh-ts/src/remote_api/interface/SampleWS.ts +++ b/zenoh-ts/src/remote_api/interface/SampleWS.ts @@ -1,5 +1,6 @@ // This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. +import type { B64String } from "./B64String"; import type { OwnedKeyExprWrapper } from "./OwnedKeyExprWrapper"; import type { SampleKindWS } from "./SampleKindWS"; -export type SampleWS = { key_expr: OwnedKeyExprWrapper, value: Array, kind: SampleKindWS, encoding: string, timestamp: string | null, congestion_control: number, priority: number, express: boolean, attachement: Array | null, }; +export type SampleWS = { key_expr: OwnedKeyExprWrapper, value: B64String, kind: SampleKindWS, encoding: string, timestamp: string | null, congestion_control: number, priority: number, express: boolean, attachement: B64String | null, }; diff --git a/zenoh-ts/src/remote_api/pubsub.ts b/zenoh-ts/src/remote_api/pubsub.ts index ac8955e..6c5e880 100644 --- a/zenoh-ts/src/remote_api/pubsub.ts +++ b/zenoh-ts/src/remote_api/pubsub.ts @@ -1,5 +1,6 @@ import { SimpleChannel } from "channel-ts"; import { v4 as uuidv4 } from "uuid"; +import { encode as b64_str_from_bytes } from "base64-arraybuffer"; // Import interface import { SampleWS } from "./interface/SampleWS"; @@ -54,11 +55,16 @@ export class RemotePublisher { return; } + let optional_attachment = null; + if (attachment != null) { + optional_attachment = b64_str_from_bytes(new Uint8Array(attachment)); + } + let data_msg: DataMsg = { PublisherPut: { id: this.publisher_id.toString(), - payload: payload, - attachment: attachment, + payload: b64_str_from_bytes(new Uint8Array(payload)), + attachment: optional_attachment, encoding: encoding, }, }; diff --git a/zenoh-ts/src/remote_api/session.ts b/zenoh-ts/src/remote_api/session.ts index 5bbd13a..8a606ba 100644 --- a/zenoh-ts/src/remote_api/session.ts +++ b/zenoh-ts/src/remote_api/session.ts @@ -1,6 +1,7 @@ import { SimpleChannel } from "channel-ts"; import { v4 as uuidv4 } from "uuid"; import { Logger } from "tslog"; +import { encode as b64_str_from_bytes } from "base64-arraybuffer"; const log = new Logger({ stylePrettyLogs: false }); @@ -126,14 +127,21 @@ export class RemoteSession { attachment?: Array ): void { let owned_keyexpr: OwnedKeyExprWrapper = key_expr; + + let opt_attachment = undefined; + if (attachment != undefined) { + opt_attachment = b64_str_from_bytes(new Uint8Array(attachment)) + } + let data_message: ControlMsg = { Put: { - key_expr: owned_keyexpr, payload: payload, + key_expr: owned_keyexpr, + payload: b64_str_from_bytes(new Uint8Array(payload)), encoding: encoding, congestion_control: congestion_control, priority: priority, express: express, - attachment: attachment, + attachment: opt_attachment, }, }; this.send_ctrl_message(data_message); @@ -156,6 +164,15 @@ export class RemoteSession { let channel: SimpleChannel = new SimpleChannel(); this.get_receiver.set(uuid, channel); + let opt_payload = undefined; + if (payload != undefined) { + opt_payload = b64_str_from_bytes(new Uint8Array(payload)) + } + let opt_attachment = undefined; + if (attachment != undefined) { + opt_attachment = b64_str_from_bytes(new Uint8Array(attachment)) + } + let control_message: ControlMsg = { Get: { key_expr: key_expr, @@ -167,8 +184,8 @@ export class RemoteSession { priority: priority, express: express, encoding: encoding, - payload: payload, - attachment: attachment + payload: opt_payload, + attachment: opt_attachment }, }; this.send_ctrl_message(control_message); @@ -184,13 +201,17 @@ export class RemoteSession { attachment?: Array ): Promise { let owned_keyexpr: OwnedKeyExprWrapper = key_expr; + let opt_attachment = undefined; + if (attachment != undefined) { + opt_attachment = b64_str_from_bytes(new Uint8Array(attachment)) + } let data_message: ControlMsg = { Delete: { key_expr: owned_keyexpr, congestion_control: congestion_control, priority: priority, express: express, - attachment: attachment, + attachment: opt_attachment, } }; this.send_ctrl_message(data_message); diff --git a/zenoh-ts/src/sample.ts b/zenoh-ts/src/sample.ts index 6999d7f..932f191 100644 --- a/zenoh-ts/src/sample.ts +++ b/zenoh-ts/src/sample.ts @@ -1,3 +1,6 @@ +// External +import { encode as b64_str_from_bytes, decode as b64_bytes_from_str, } from "base64-arraybuffer"; +// Internal import { KeyExpr } from "./key_expr"; import { OwnedKeyExprWrapper } from "./remote_api/interface/OwnedKeyExprWrapper"; import { SampleKindWS } from "./remote_api/interface/SampleKindWS"; @@ -286,7 +289,7 @@ export function Sample_from_SampleWS(sample_ws: SampleWS) { sample_kind = SampleKind.PUT; } - let payload = ZBytes.new(sample_ws.value); + let payload = ZBytes.new(new Uint8Array(b64_bytes_from_str(sample_ws.value))); let key_exr = KeyExpr.new(sample_ws.key_expr); @@ -304,7 +307,7 @@ export function Sample_from_SampleWS(sample_ws: SampleWS) { let attachment = undefined; if (sample_ws.attachement != undefined) { - attachment = ZBytes.new(sample_ws.attachement); + attachment = ZBytes.new(new Uint8Array(b64_bytes_from_str(sample_ws.attachement))); } return Sample.new( @@ -332,7 +335,7 @@ export function SampleWS_from_Sample( attachement: ZBytes | undefined, ): SampleWS { let key_expr: OwnedKeyExprWrapper = sample.keyexpr().toString(); - let value: Array = Array.from(sample.payload().payload()); + let value: Array = Array.from(sample.payload().buffer()); let sample_kind: SampleKindWS; if (sample.kind() == SampleKind.DELETE) { @@ -349,12 +352,12 @@ export function SampleWS_from_Sample( let attach = null; if (attachement != null) { - attach = Array.from(attachement.payload()); + attach = b64_str_from_bytes(new Uint8Array(attachement.buffer())); } let sample_ws: SampleWS = { key_expr: key_expr, - value: value, + value: b64_str_from_bytes(new Uint8Array(value)), kind: sample_kind, encoding: encoding.toString(), timestamp: null, diff --git a/zenoh-ts/src/session.ts b/zenoh-ts/src/session.ts index cc9c486..869c038 100644 --- a/zenoh-ts/src/session.ts +++ b/zenoh-ts/src/session.ts @@ -205,12 +205,12 @@ export class Session { _express = put_opts?.express?.valueOf(); if (put_opts?.attachment != undefined) { - _attachment = Array.from(ZBytes.new(put_opts?.attachment).payload()) + _attachment = Array.from(ZBytes.new(put_opts?.attachment).buffer()) } this.remote_session.put( key_expr.toString(), - Array.from(z_bytes.payload()), + Array.from(z_bytes.buffer()), _encoding, _congestion_control, _priority, @@ -238,7 +238,7 @@ export class Session { let _attachment if (delete_opts?.attachment != undefined) { - _attachment = Array.from(ZBytes.new(delete_opts?.attachment).payload()) + _attachment = Array.from(ZBytes.new(delete_opts?.attachment).buffer()) } this.remote_session.delete( @@ -323,10 +323,10 @@ export class Session { let _payload; if (get_options?.attachment != undefined) { - _attachment = Array.from(ZBytes.new(get_options?.attachment).payload()) + _attachment = Array.from(ZBytes.new(get_options?.attachment).buffer()) } if (get_options?.payload != undefined) { - _payload = Array.from(ZBytes.new(get_options?.payload).payload()) + _payload = Array.from(ZBytes.new(get_options?.payload).buffer()) } let chan: SimpleChannel = await this.remote_session.get( diff --git a/zenoh-ts/src/z_bytes.ts b/zenoh-ts/src/z_bytes.ts index bfea569..196d6f5 100644 --- a/zenoh-ts/src/z_bytes.ts +++ b/zenoh-ts/src/z_bytes.ts @@ -14,10 +14,10 @@ export type IntoZBytes = * Class to represent an Array of Bytes received from Zenoh */ export class ZBytes { - private buffer: Uint8Array; + private _buffer: Uint8Array; private constructor(buffer: Uint8Array) { - this.buffer = buffer; + this._buffer = buffer; } /** @@ -26,7 +26,7 @@ export class ZBytes { * @returns number */ len(): number { - return this.buffer.length; + return this._buffer.length; } /** @@ -43,8 +43,8 @@ export class ZBytes { * * @returns Uint8Array */ - payload(): Uint8Array { - return this.buffer + buffer(): Uint8Array { + return this._buffer } /** @@ -57,7 +57,7 @@ export class ZBytes { // } deserialize(func: (buffer: Uint8Array) => T): T { - return func(this.buffer); + return func(this._buffer); } /** diff --git a/zenoh-ts/yarn.lock b/zenoh-ts/yarn.lock index 2c2adcb..1b72d85 100644 --- a/zenoh-ts/yarn.lock +++ b/zenoh-ts/yarn.lock @@ -102,7 +102,7 @@ "@types/node@20.9.1": version "20.9.1" - resolved "https://registry.npmjs.org/@types/node/-/node-20.9.1.tgz" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.1.tgz#9d578c610ce1e984adda087f685ace940954fe19" integrity sha512-HhmzZh5LSJNS5O8jQKpJ/3ZcrrlG6L70hpGqMIAoM9YVD0YBRNWYsfwcXq8VnSjlNpCpgLzMXdiPo+dxcvSmiA== dependencies: undici-types "~5.26.4" @@ -159,6 +159,11 @@ balanced-match@^1.0.0: resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-arraybuffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz" + integrity sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" @@ -669,11 +674,6 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -ts-log@^2.2.5: - version "2.2.5" - resolved "https://registry.npmjs.org/ts-log/-/ts-log-2.2.5.tgz" - integrity sha512-PGcnJoTBnVGy6yYNFxWVNkdcAuAMstvutN9MgDJIV6L0oG8fB+ZNNy1T+wJzah8RPGor1mZuPQkVfXNDpy9eHA== - tslog@^4.9.3: version "4.9.3" resolved "https://registry.npmjs.org/tslog/-/tslog-4.9.3.tgz" @@ -709,7 +709,7 @@ uc.micro@^2.0.0, uc.micro@^2.1.0: undici-types@~5.26.4: version "5.26.5" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== uri-js@^4.2.2: