openvibers/openvibe.tools Commits

Whois and RDAP lookups work again: rdap.org answered every request with 403 because Node's fetch sends no real User-Agent. Domains now go straight to their TLD's own RDAP server from IANA's bootstrap file (kept a day), with a descriptive User-Agent; rdap.org, with the same header, is the fallback and serves IPs. Input that is neither a domain nor an IP gets 'Enter a full domain name (like example.com) or an IP address', and a registry's 404 reads 'No registration record for <name>' instead of a bare status. openvibe-shared v1.28.1 in all eight apps (from v1.23.0): the account panel on phones, no empty space under the footer on phones. npm test 55/55.

OP OpenVibers committed 28 Sept 2026 · 7c8af018fd · 18 files, +73 −44


Changes

ddiff --git a/apps/audio/package-lock.json b/apps/audio/package-lock.json
iindex 5d4c5b0..1ac4afb 100644
---- a/apps/audio/package-lock.json
++++ b/apps/audio/package-lock.json
@@@ -21,7 +21,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"uuid": "^11.1.0"
}
},
@@@ -1184,9 +1184,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/audio/package.json b/apps/audio/package.json
iindex 6fd2c1e..ccfdd7a 100644
---- a/apps/audio/package.json
++++ b/apps/audio/package.json
@@@ -23,7 +23,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"uuid": "^11.1.0"
}
}
ddiff --git a/apps/docs/package-lock.json b/apps/docs/package-lock.json
iindex fcef55b..fe3aeba 100644
---- a/apps/docs/package-lock.json
++++ b/apps/docs/package-lock.json
@@@ -20,7 +20,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"pdf-lib": "^1.17.1",
"sharp": "^0.33.5",
"uuid": "^11.1.0"
@@@ -1263,9 +1263,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/docs/package.json b/apps/docs/package.json
iindex cc98f9a..67e361d 100644
---- a/apps/docs/package.json
++++ b/apps/docs/package.json
@@@ -22,7 +22,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"pdf-lib": "^1.17.1",
"sharp": "^0.33.5",
"uuid": "^11.1.0"
ddiff --git a/apps/food/package-lock.json b/apps/food/package-lock.json
iindex 09286c3..53bac6f 100644
---- a/apps/food/package-lock.json
++++ b/apps/food/package-lock.json
@@@ -16,7 +16,7 @@
"express-rate-limit": "^7.1.5",
"helmet": "^7.1.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
},
"node_modules/accepts": {
@@@ -978,9 +978,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/food/package.json b/apps/food/package.json
iindex d3a91b0..0a260a6 100644
---- a/apps/food/package.json
++++ b/apps/food/package.json
@@@ -18,6 +18,6 @@
"express-rate-limit": "^7.1.5",
"helmet": "^7.1.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
}
ddiff --git a/apps/gateway/package-lock.json b/apps/gateway/package-lock.json
iindex 046fd3b..31d4603 100644
---- a/apps/gateway/package-lock.json
++++ b/apps/gateway/package-lock.json
@@@ -19,7 +19,7 @@
"jsonwebtoken": "^9.0.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
},
"node_modules/accepts": {
@@@ -1061,9 +1061,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/gateway/package.json b/apps/gateway/package.json
iindex 4b80d4d..405555c 100644
---- a/apps/gateway/package.json
++++ b/apps/gateway/package.json
@@@ -21,6 +21,6 @@
"jsonwebtoken": "^9.0.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
}
ddiff --git a/apps/gateway/server/net/config.js b/apps/gateway/server/net/config.js
iindex bdc0673..01ced1a 100644
---- a/apps/gateway/server/net/config.js
++++ b/apps/gateway/server/net/config.js
@@@ -37,9 +37,13 @@ function getNetConfig(db) {
ipapi: {
baseUrl: 'http://ip-api.com', // ip-api.com — free (non-commercial), HTTP only
},
-- // RDAP is keyless (IANA standard, public registries)
++ // RDAP is keyless (IANA standard, public registries). Domains go straight to the TLD's own RDAP server from
++ // IANA's bootstrap file; rdap.org (a redirector) is the fallback and serves IPs. Registries and rdap.org
++ // refuse requests without a real User-Agent (rdap.org answered Node's default with 403).
rdap: {
baseUrl: 'https://rdap.org',
++ bootstrapUrl: 'https://data.iana.org/rdap/dns.json',
++ userAgent: 'OpenVibe.Tools/1.0 (+https://openvibe.tools; whois and RDAP lookups)',
},
// Google DNS-over-HTTPS (public, no key)
doh: {
ddiff --git a/apps/gateway/server/net/routes.js b/apps/gateway/server/net/routes.js
iindex ed08d7e..344fb46 100644
---- a/apps/gateway/server/net/routes.js
++++ b/apps/gateway/server/net/routes.js
@@@ -218,10 +218,34 @@ module.exports = function createNetRoutes(db, requireAuth, opts = {}) {
}, (d) => (d && d.status === 'success' ? HOUR : 0));
}
-- /** RDAP for a domain or an IP. → { ok, status, data }. 200s are kept an hour, 404s ten minutes. */
++ /** IANA's RDAP bootstrap for domains: TLD → the registry's RDAP base URL. Kept a day; an empty map if it fails. */
++ function rdapBootstrap() {
++ return cache.wrap('rdap:bootstrap:dns', async () => {
++ const r = await timedFetch(cfg().rdap.bootstrapUrl, { headers: { Accept: 'application/json', 'User-Agent': cfg().rdap.userAgent } });
++ if (!r.ok) return {};
++ const map = {};
++ for (const [tlds, urls] of (await r.json()).services || []) {
++ const base = (urls || []).find((u) => /^https:/i.test(u)) || (urls || [])[0];
++ if (base) for (const t of tlds) map[String(t).toLowerCase()] = base.replace(/\/?$/, '/');
++ }
++ return map;
++ }, (m) => (Object.keys(m).length ? 24 * HOUR : 0));
++ }
++
++ /**
++ * RDAP for a domain or an IP. → { ok, status, data }. A domain is asked of its TLD's registry directly (IANA
++ * bootstrap), else rdap.org; an IP through rdap.org. 200s are kept an hour, 404s ten minutes.
++ */
function rdapLookup(type, target) {
return cache.wrap(`rdap:${type}:${target}`, async () => {
-- const r = await timedFetch(`${cfg().rdap.baseUrl}/${type}/${encodeURIComponent(target)}`, { headers: { Accept: 'application/rdap+json, application/json' } });
++ const headers = { Accept: 'application/rdap+json, application/json', 'User-Agent': cfg().rdap.userAgent };
++ let url = `${cfg().rdap.baseUrl}/${type}/${encodeURIComponent(target)}`;
++ if (type === 'domain') {
++ const tld = target.toLowerCase().split('.').pop();
++ const base = (await rdapBootstrap())[tld];
++ if (base) url = `${base}domain/${encodeURIComponent(target)}`;
++ }
++ const r = await timedFetch(url, { headers });
return { ok: r.ok, status: r.status, data: r.ok ? await r.json() : null };
}, (v) => (v.ok ? HOUR : v.status === 404 ? 10 * 60_000 : 0));
}
@@@ -518,9 +542,10 @@ module.exports = function createNetRoutes(db, requireAuth, opts = {}) {
if (!target) return fail(res, 'Please provide a domain or IP');
// RDAP queries: domain → /domain/, IP → /ip/ (cached)
const rdapType = isIP(target) ? 'ip' : 'domain';
++ if (rdapType === 'domain' && !/^[^\s./]+(\.[^\s./]+)+$/u.test(target)) return fail(res, 'Enter a full domain name (like example.com) or an IP address');
const r = await rdapLookup(rdapType, target);
-- if (!r.ok) return fail(res, `RDAP lookup failed (${r.status})`, r.status >= 500 ? 502 : 404);
++ if (!r.ok) return fail(res, r.status === 404 ? `No registration record for ${target}` : `RDAP lookup failed (${r.status})`, r.status >= 500 ? 502 : 404);
const data = r.data;
// Extract key fields from RDAP response
ddiff --git a/apps/img/package-lock.json b/apps/img/package-lock.json
iindex 5e68f84..4eb0050 100644
---- a/apps/img/package-lock.json
++++ b/apps/img/package-lock.json
@@@ -20,7 +20,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"sharp": "^0.33.5",
"to-ico": "^1.1.5",
"uuid": "^11.1.0"
@@@ -1776,9 +1776,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/img/package.json b/apps/img/package.json
iindex 054f700..58ed8ff 100644
---- a/apps/img/package.json
++++ b/apps/img/package.json
@@@ -22,7 +22,7 @@
"multer": "^1.4.5-lts.1",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.63.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"sharp": "^0.33.5",
"to-ico": "^1.1.5",
"uuid": "^11.1.0"
ddiff --git a/apps/maps/package-lock.json b/apps/maps/package-lock.json
iindex 1ee8d90..df2d69c 100644
---- a/apps/maps/package-lock.json
++++ b/apps/maps/package-lock.json
@@@ -20,7 +20,7 @@
"helmet": "^8.1.0",
"node-cache": "^5.1.2",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
},
"node_modules/accepts": {
@@@ -1393,9 +1393,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/maps/package.json b/apps/maps/package.json
iindex 8d78964..c15d855 100644
---- a/apps/maps/package.json
++++ b/apps/maps/package.json
@@@ -13,7 +13,7 @@
"axios": "^1.7.0",
"better-sqlite3": "^11.0.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"cheerio": "^1.0.0-rc.12",
"cookie-parser": "^1.4.7",
"cors": "^2.8.5",
ddiff --git a/apps/text/package-lock.json b/apps/text/package-lock.json
iindex 95970ef..a6dd609 100644
---- a/apps/text/package-lock.json
++++ b/apps/text/package-lock.json
@@@ -17,7 +17,7 @@
"express-rate-limit": "^7.1.5",
"helmet": "^7.1.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
}
},
"node_modules/accepts": {
@@@ -979,9 +979,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/text/package.json b/apps/text/package.json
iindex 769dde9..2400fcc 100644
---- a/apps/text/package.json
++++ b/apps/text/package.json
@@@ -18,7 +18,7 @@
"express-rate-limit": "^7.1.5",
"dotenv": "^16.3.1",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0"
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1"
},
"license": "MIT"
}
ddiff --git a/apps/yt/package-lock.json b/apps/yt/package-lock.json
iindex 50045d0..24b8589 100644
---- a/apps/yt/package-lock.json
++++ b/apps/yt/package-lock.json
@@@ -18,7 +18,7 @@
"helmet": "^8.1.0",
"jsonwebtoken": "^9.0.2",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"uuid": "^11.1.0"
}
},
@@@ -810,9 +810,9 @@
}
},
"node_modules/openvibe-shared": {
-- "version": "1.23.0",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
-- "integrity": "sha512-9B3vXn5P7JjHWrp3cNh7ZynLOmCUgw9cuz6moksU3fyuIfy7uoepa2wJmQeSyLoPU8q/zKRJVeBVzPfdhr0z3g==",
++ "version": "1.28.1",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
++ "integrity": "sha512-AV39sRi9hm8QETRLM1c6q7nrU8XWPUZzCxZP+h7Cho+LsJ47szHtMk3YdCQHT8+aSC5Hpu68EU8sCvbagR+a0g==",
"license": "MIT",
"dependencies": {
"jsonwebtoken": "^9.0.0"
ddiff --git a/apps/yt/package.json b/apps/yt/package.json
iindex 1a95ab7..2d5e6f0 100644
---- a/apps/yt/package.json
++++ b/apps/yt/package.json
@@@ -19,7 +19,7 @@
"helmet": "^8.1.0",
"better-sqlite3": "^11.0.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.12.0",
-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.23.0",
++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v1.28.1",
"jsonwebtoken": "^9.0.2",
"uuid": "^11.1.0"
}