openvibers/openvibe.events Commits

openvibe-contracts v0.312.0 (was v0.289.1) (#247)

OP OpenVibers committed 6 days ago · a22e12a304 · 7 files, +13 −11

* openvibe-contracts v0.312.0 (was v0.289.1)

Opened by scripts/pin-bump.js in OpenVibers/OpenVibe.Shared after the v0.312.0 release.

* share.* is a network-wide event prefix: accept the sharing family Network publishes (Contracts 0.312.0)

Changes

ddiff --git a/README.md b/README.md
iindex dd53884..6570b40 100644
---- a/README.md
++++ b/README.md
@@@ -406,7 +406,7 @@ implemented service.
Part of the [OpenVibe network](https://openvibe.network). Built in the open by [OpenVibers](https://github.com/OpenVibers).
<!-- versions:start -->
--- openvibe-contracts: v0.289.1
++- openvibe-contracts: v0.312.0
- openvibe-sdk: v0.93.0
- openvibe-shared: v4.124.0
<!-- versions:end -->
ddiff --git a/STATUS.json b/STATUS.json
iindex adaabcd..3cc8b69 100644
---- a/STATUS.json
++++ b/STATUS.json
@@@ -7,7 +7,7 @@
"runtime": "node 22, express, PostgreSQL 18 (openvibe-sdk/db, async) + Valkey 9",
"port": 4300,
"domain": "openvibe.events",
-- "contracts": "openvibe-contracts v0.289.1",
++ "contracts": "openvibe-contracts v0.312.0",
"sdk": "openvibe-sdk v0.93.0",
"shared": "openvibe-shared v4.124.0",
"capabilities": [
ddiff --git a/package-lock.json b/package-lock.json
iindex 74effd2..0c3eee7 100644
---- a/package-lock.json
++++ b/package-lock.json
@@@ -12,7 +12,7 @@
"dotenv": "^16.4.7",
"express": "^4.21.2",
"iovalkey": "^0.4.0",
-- "openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.289.1",
++ "openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.312.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.93.0",
"openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",
"pg": "^8.23.0"
@@@ -1103,9 +1103,9 @@
}
},
"node_modules/openvibe-contracts": {
-- "version": "0.289.1",
-- "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.289.1",
-- "integrity": "sha512-LrKTwe8VPCWn+b0MTNmfjAYEJ0rtgLxeM6EHONBDl0ynt/Igndz+ruDEpwuz5SZ9HYCIMkCqSV5ujhedh6zmzQ==",
++ "version": "0.312.0",
++ "resolved": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.312.0",
++ "integrity": "sha512-2GsD53zuIedL3eW2LBlYQ68ODTHzoZJHrAmVnZCpiL7ZWnAXGwPW9dpQagLI9Zdkh3LQuuU5ae1YJI0K+acXbA==",
"license": "AGPL-3.0-only",
"dependencies": {
"ajv": "^8.17.1",
ddiff --git a/package.json b/package.json
iindex 5c9a84b..1cf6820 100644
---- a/package.json
++++ b/package.json
@@@ -24,7 +24,7 @@
"dotenv": "^16.4.7",
"express": "^4.21.2",
"iovalkey": "^0.4.0",
-- "openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.289.1",
++ "openvibe-contracts": "https://codeload.github.com/OpenVibers/OpenVibe.Contracts/tar.gz/refs/tags/v0.312.0",
"openvibe-sdk": "https://codeload.github.com/OpenVibers/OpenVibe.SDK/tar.gz/refs/tags/v0.93.0",
"openvibe-shared": "https://codeload.github.com/OpenVibers/OpenVibe.Shared/tar.gz/refs/tags/v4.124.0",
"pg": "^8.23.0"
ddiff --git a/server/config.js b/server/config.js
iindex 2e34d11..9b50321 100644
---- a/server/config.js
++++ b/server/config.js
@@@ -63,11 +63,13 @@ const DEFAULT_SOURCES = ['live', 'media', 'network', 'community', 'chat', 'openr
/**
* Namespaces that belong to the network rather than to one service. `provider.*` carries storage
* provider health/capacity telemetry, which whichever first-party service observes a provider
-- * publishes (Media, Sources, Host, ...), so any service token may publish into it. Sources still
++ * publishes (Media, Sources, Host, ...), so any service token may publish into it. `share.*` is
++ * the sharing family Network publishes (share.granted, share.revoked, share.transfer.*), named by
++ * its family rather than by the network namespace in Contracts' network manifest. Sources still
* own their own namespace first; a shared prefix never replaces `<source>.`. Developer apps can
* never publish a shared prefix. EVENTS_SHARED_PREFIXES (comma-separated) replaces the default.
*/
--const DEFAULT_SHARED_PREFIXES = ['provider.'];
++const DEFAULT_SHARED_PREFIXES = ['provider.', 'share.'];
function sourcePrefixes(env) {
let map = Object.fromEntries(DEFAULT_SOURCES.map(s => [s, [`${namespaceOf(s)}.`]]));
ddiff --git a/test/pull-health.test.js b/test/pull-health.test.js
iindex d6e0826..fa419ae 100644
---- a/test/pull-health.test.js
++++ b/test/pull-health.test.js
@@@ -43,7 +43,7 @@ t('config: every source prefix must start with the source', () => {
});
t('config: network-wide prefixes are shared, source namespaces stay owned', () => {
-- assert.deepStrictEqual(load({}).sharedPrefixes, ['provider.']);
++ assert.deepStrictEqual(load({}).sharedPrefixes, ['provider.', 'share.']);
const c = load({ EVENTS_SHARED_PREFIXES: 'provider.,storage.' });
assert.deepStrictEqual(c.sharedPrefixes, ['provider.', 'storage.']);
assert.throws(() => load({ EVENTS_SHARED_PREFIXES: 'provider' }), /bad prefix/);
ddiff --git a/test/sources-cover-producers.test.js b/test/sources-cover-producers.test.js
iindex 8c72c78..787edfd 100644
---- a/test/sources-cover-producers.test.js
++++ b/test/sources-cover-producers.test.js
@@@ -12,6 +12,6 @@ const manifests = fs.readdirSync(dir).filter((f) => f.endsWith('.json')).map((f)
const producers = manifests.filter((m) => (m.eventsProduced || []).length).map((m) => m.id || m.service).filter((id) => id !== 'events');
const missing = producers.filter((id) => !DEFAULT_SOURCES.includes(id));
assert.deepStrictEqual(missing, [], `producers that may not publish: ${missing.join(', ')}`);
--const outside = manifests.flatMap((m) => (m.eventsProduced || []).filter((t) => (m.id || m.service) !== 'events' && t.split('.')[0] !== namespaceOf(m.id || m.service) && !t.startsWith('provider.')).map((t) => `${m.id || m.service}: ${t}`));
++const outside = manifests.flatMap((m) => (m.eventsProduced || []).filter((t) => (m.id || m.service) !== 'events' && t.split('.')[0] !== namespaceOf(m.id || m.service) && !t.startsWith('provider.') && !t.startsWith('share.')).map((t) => `${m.id || m.service}: ${t}`));
assert.deepStrictEqual(outside, [], 'every produced event type is in its producer\'s own namespace');
console.log(`sources cover producers: ${producers.length} producers, all allowed`);