openvibers/openvibe.today Commits
openvibe-shared v4.186.0 (was v4.183.0) (#151)
Changes
@@@ -269,5 +269,5 @@ AGPL-3.0-only. See [LICENSE](LICENSE).<!-- versions:start -->- openvibe-contracts: v0.384.0- openvibe-sdk: v0.125.0--- openvibe-shared: v4.183.0++- openvibe-shared: v4.186.0<!-- versions:end -->@@@ -10,11 +10,11 @@"domain": "openvibe.today","contracts": "openvibe-contracts v0.384.0","sdk": "openvibe-sdk v0.125.0",-- "shared": "openvibe-shared v4.183.0",++ "shared": "openvibe-shared v4.186.0","packages": ["openvibe-contracts v0.384.0","openvibe-sdk v0.125.0",-- "openvibe-shared v4.179.0"++ "openvibe-shared v4.186.0"],"summary": "OpenVibe.Today is the network's time bus and calendar authority. A person schedules a stream (on their Live channel) or a plain event; the public schedule and a channel's ICS feed are readable without an account, a private token feed is one URL per person and rotation invalidates the old one, and reminders arrive through OpenVibe.Network. Events move from scheduled to live and done as OpenVibe.Live says so over OpenVibe.Events, while the daily brief is built from the agenda, today's reminders and OpenVibe.Live's public Rundown.","works": [@@@ -17,7 +17,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0","pg": "^8.23.0"},"devDependencies": {@@@ -1194,9 +1194,9 @@}},"node_modules/openvibe-shared": {-- "version": "4.183.0",-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",-- "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",++ "version": "4.186.0",++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",++ "integrity": "sha512-wD4net+UjO0a6OG73W+RR1z5MIWtPgj407xLEWphiVWgLTQ4V1r76+DtLOfSf6RfEda/ALizRu1zmxbvuGGZOw==","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0",@@@ -25,7 +25,7 @@"iovalkey": "^0.4.0","openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0","openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",-- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",++ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0","pg": "^8.23.0"},"engines": {@@@ -29,7 +29,7 @@ function jsonLd(html) {assert.strictEqual(r.status, 200);assert.strictEqual(r.headers.get('cache-control'), 'public, max-age=60');assert.strictEqual(r.headers.get('vary'), 'Cookie');-- for (const marker of ['id="td-home"', 'id="td-upcoming"', 'id="main"', '<noscript><nav', '<footer id="ov-footer"', 'Public stream']) assert.ok(r.text.includes(marker), marker);++ for (const marker of ['id="td-home"', 'id="td-upcoming"', 'id="main"', '<div id="navbar-mount"><nav', '<footer id="ov-footer"', 'Public stream']) assert.ok(r.text.includes(marker), marker);assert.strictEqual(scripts(r.text).length, 1, 'the page carries exactly one JSON-LD script');const types = jsonLd(r.text).map((x) => x['@type']);assert.ok(types.includes('WebSite'), types.join(','));@@@ -128,11 +128,11 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');});-- await check('public pages are complete without JavaScript', async () => {++ await check('public pages are complete without JavaScript (server-rendered nav, SSR footer)', async () => {for (const p of ['/', '/developers']) {const r = await t.get(p);assert.strictEqual(r.status, 200, p);-- assert.match(r.text, /<noscript><nav/);++ assert.match(r.text, /<div id="navbar-mount"><nav class="openvibe-navbar"[^>]*data-ov-server-nav="true"/, `${p}: the server-rendered navbar is in the first HTML`);assert.match(r.text, /<footer id="ov-footer"/);assert.match(r.text, /<main id="main"/);}
@@ -269,5 +269,5 @@ AGPL-3.0-only. See [LICENSE](LICENSE).
@@ -269,5 +269,5 @@ AGPL-3.0-only. See [LICENSE](LICENSE).
<!-- versions:start -->
<!-- versions:start -->
- openvibe-contracts: v0.384.0
- openvibe-contracts: v0.384.0
- openvibe-sdk: v0.125.0
- openvibe-sdk: v0.125.0
-- openvibe-shared: v4.183.0
+- openvibe-shared: v4.186.0
<!-- versions:end -->
<!-- versions:end -->
@@ -10,11 +10,11 @@
@@ -10,11 +10,11 @@
"domain": "openvibe.today",
"domain": "openvibe.today",
"contracts": "openvibe-contracts v0.384.0",
"contracts": "openvibe-contracts v0.384.0",
"sdk": "openvibe-sdk v0.125.0",
"sdk": "openvibe-sdk v0.125.0",
- "shared": "openvibe-shared v4.183.0",
+ "shared": "openvibe-shared v4.186.0",
"packages": [
"packages": [
"openvibe-contracts v0.384.0",
"openvibe-contracts v0.384.0",
"openvibe-sdk v0.125.0",
"openvibe-sdk v0.125.0",
- "openvibe-shared v4.179.0"
+ "openvibe-shared v4.186.0"
],
],
"summary": "OpenVibe.Today is the network's time bus and calendar authority. A person schedules a stream (on their Live channel) or a plain event; the public schedule and a channel's ICS feed are readable without an account, a private token feed is one URL per person and rotation invalidates the old one, and reminders arrive through OpenVibe.Network. Events move from scheduled to live and done as OpenVibe.Live says so over OpenVibe.Events, while the daily brief is built from the agenda, today's reminders and OpenVibe.Live's public Rundown.",
"summary": "OpenVibe.Today is the network's time bus and calendar authority. A person schedules a stream (on their Live channel) or a plain event; the public schedule and a channel's ICS feed are readable without an account, a private token feed is one URL per person and rotation invalidates the old one, and reminders arrive through OpenVibe.Network. Events move from scheduled to live and done as OpenVibe.Live says so over OpenVibe.Events, while the daily brief is built from the agenda, today's reminders and OpenVibe.Live's public Rundown.",
"works": [
"works": [
@@ -17,7 +17,7 @@
@@ -17,7 +17,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"devDependencies": {
"devDependencies": {
@@ -1194,9 +1194,9 @@
@@ -1194,9 +1194,9 @@
}
}
},
},
"node_modules/openvibe-shared": {
"node_modules/openvibe-shared": {
- "version": "4.183.0",
- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
- "integrity": "sha512-vp9gg++Dhyj3h0cwvBjujM6dSFYoeXdh1UXdZ6OXP/NjG672Fs7uRANV4MjT467JtFDN7r7qLI3OJAwGQxOuQw==",
+ "version": "4.186.0",
+ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
+ "integrity": "sha512-wD4net+UjO0a6OG73W+RR1z5MIWtPgj407xLEWphiVWgLTQ4V1r76+DtLOfSf6RfEda/ALizRu1zmxbvuGGZOw==",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0",
"jsonwebtoken": "^9.0.0",
@@ -25,7 +25,7 @@
@@ -25,7 +25,7 @@
"iovalkey": "^0.4.0",
"iovalkey": "^0.4.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.384.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.125.0",
- "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.183.0",
+ "openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.186.0",
"pg": "^8.23.0"
"pg": "^8.23.0"
},
},
"engines": {
"engines": {
@@ -29,7 +29,7 @@ function jsonLd(html) {
@@ -29,7 +29,7 @@ function jsonLd(html) {
assert.strictEqual(r.status, 200);
assert.strictEqual(r.status, 200);
assert.strictEqual(r.headers.get('cache-control'), 'public, max-age=60');
assert.strictEqual(r.headers.get('cache-control'), 'public, max-age=60');
assert.strictEqual(r.headers.get('vary'), 'Cookie');
assert.strictEqual(r.headers.get('vary'), 'Cookie');
- for (const marker of ['id="td-home"', 'id="td-upcoming"', 'id="main"', '<noscript><nav', '<footer id="ov-footer"', 'Public stream']) assert.ok(r.text.includes(marker), marker);
+ for (const marker of ['id="td-home"', 'id="td-upcoming"', 'id="main"', '<div id="navbar-mount"><nav', '<footer id="ov-footer"', 'Public stream']) assert.ok(r.text.includes(marker), marker);
assert.strictEqual(scripts(r.text).length, 1, 'the page carries exactly one JSON-LD script');
assert.strictEqual(scripts(r.text).length, 1, 'the page carries exactly one JSON-LD script');
const types = jsonLd(r.text).map((x) => x['@type']);
const types = jsonLd(r.text).map((x) => x['@type']);
assert.ok(types.includes('WebSite'), types.join(','));
assert.ok(types.includes('WebSite'), types.join(','));
@@ -128,11 +128,11 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]
@@ -128,11 +128,11 @@ const cookieJar = (res) => res.headers.getSetCookie().map((c) => c.split(';')[0]
assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');
assert.notStrictEqual(proxied.status, 200, 'a proxied request is not loopback');
});
});
- await check('public pages are complete without JavaScript', async () => {
+ await check('public pages are complete without JavaScript (server-rendered nav, SSR footer)', async () => {
for (const p of ['/', '/developers']) {
for (const p of ['/', '/developers']) {
const r = await t.get(p);
const r = await t.get(p);
assert.strictEqual(r.status, 200, p);
assert.strictEqual(r.status, 200, p);
- assert.match(r.text, /<noscript><nav/);
+ assert.match(r.text, /<div id="navbar-mount"><nav class="openvibe-navbar"[^>]*data-ov-server-nav="true"/, `${p}: the server-rendered navbar is in the first HTML`);
assert.match(r.text, /<footer id="ov-footer"/);
assert.match(r.text, /<footer id="ov-footer"/);
assert.match(r.text, /<main id="main"/);
assert.match(r.text, /<main id="main"/);
}
}