Giter VIP home page Giter VIP logo

nmos-js's Introduction

An NMOS Client in JavaScript Build Status

Introduction

This repository contains a client implementation of the AMWA Networked Media Open Specifications in JavaScript, licensed under the terms of the Apache License 2.0.

For more information about AMWA, NMOS and the Networked Media Incubator, please refer to http://amwa.tv/.

The repository structure, and the external dependencies, are outlined in the documentation.

Getting Started With NMOS

The Easy-NMOS starter kit allows the user to launch a simple NMOS setup with minimal installation steps. It relies on nmos-js to provide an NMOS Client that works with an NMOS Registry and a virtual NMOS Node in a Docker Compose network, along with the AMWA NMOS Testing Tool and supporting services.

Getting Started For Developers

Easy-NMOS is also a great first way to explore the relationship between NMOS services.

The nmos-js codebase is intended to work with any NMOS Registry, but can take advantage of the features of the nmos-cpp implementation.

After setting up the dependencies, follow these instructions to build and deploy the nmos-js client itself.

The web application can also be packaged and deployed with the nmos-cpp-registry application. Copy the contents of the nmos-js build directory into the admin directory next to the nmos-cpp-registry executable.

Agile Development

JT-NM Tested 03/20 NMOS & TR-1001-1 Controller

The nmos-js client, like the NMOS Specifications, is intended to be always ready, but steadily developing. The nmos-js client works as both an NMOS Registry browser, using the IS-04 Query API, and provides connection management, using the IS-05 Connection API. When used with the nmos-cpp-registry, it also provides access to registry log messages. It has been successfully tested in many AMWA Networked Media Incubator workshops, and in the JT-NM Tested programme.

Recent Activity

The implementation is designed to be extended. Development is ongoing, following the evolution of the NMOS specifications in the AMWA Networked Media Incubator.

Recent activity on the project (newest first):

  • Read-only support for IS-08 Audio Channel Mapping
  • Support for BCP-004-01 Receiver Capabilities
  • JT-NM Tested 03/20 badge (packaged and deployed on a Mellanox SN2010 Switch)
  • Improved and simplified connection management
  • Periodic refresh
  • Lots of other incremental improvements
  • Added support for multi-homed Nodes
  • Added connection management support for RTP, WebSocket and MQTT transports
  • Added a dark theme
  • Switched to react-admin framework from ng-admin

Contributing

We welcome bug reports, feature requests and contributions to the implementation and documentation. Please have a look at the simple Contribution Guidelines.

Thank you for your interest!

This project was formerly known as sea-lion.

nmos-js's People

Contributors

aaronpereira-sony avatar alanb-sony avatar dependabot[bot] avatar garethsb avatar jonathan-r-thorpe avatar lo-simon avatar orfar1994 avatar rhastie avatar rufusutt avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nmos-js's Issues

Fall back to core RQL operators or Basic Query Syntax when necessary

The client now makes id queries using Basic Query Syntax and others using the Advanced RQL Syntax, of the form:

and(matches(<property>,string:<escaped-value>,i),...)

That works well to provide partial string matching with nmos-cpp-registry, but the support for RQL in other registry implementations (e.g. the BBC Joint RI) doesn't seem to be there and even if it is, the matches operator is currently unique to the nmos-cpp implementation. There is current work to more clearly define a useful core set of RQL operators for NMOS.

The NMOS spec says that implementations should respond with a HTTP 501 error if they don't support RQL or an RQL operator used in the query (although the BBC Joint RI doesn't do that yet).

Therefore it would be nice if the client were modified to try the current syntax, fall back to simple eq or contains RQL operators, and if that still results in a 501, try Basic Query Syntax. (Or as a first step, this could be controlled in the client-side settings.)

Thanks to Uvjal Lodha, AJA Video Systems, for reporting this issue.

Implement pagination support for GET_MANY and GET_MANY_REFERENCE

Pagination is implemented in the dataProvider for GET_LIST, but not for GET_MANY and GET_MANY_REFERENCE. It's an acceptable shortcut, because the page limit is unlikely to be encountered in practice, but worth examining how to apply pagination for these too.

Persist filters in list views

This has been on the "wouldn't it be nice" list for a long time...
Filters in all the List views (top-level ones and the Receiver Connect tab) are really useful.
But when you click on an item and then go back to the list, they all reset.
It would be useful if they persisted in the session.

Additional / (slash) character in HTTP requests

I've noticed whilst attempting to connect a sender to a receiver (Immediate Activation) that there are additional "/" characters in the HTTP Requests. To be clear, I'm not referring to trailing slashes (as previously raised in other tickets) but duplicate "/" in the middle of a URL.

When pressing "Activate", a GET request is sent to the sender and a little later the receiver - however a pcap reveals that there is an additional "/" after the API version number - resulting in HTTP 404 error message. For example:
GET /x-nmos/connection/v1.0//single/receivers/70b3d504-2d09-1000-8000-000000000099

image

Manually performing this request (without the extra slash) is successful:
GET /x-nmos/connection/v1.0/single/receivers/70b3d504-2d09-1000-8000-000000000099

Apologies if I'm missing something obvious here, but so far as I can tell this is a bug?

Feature Request - Option to patch a chosen leg to single legged receiver

Currently nmos-js always patches the primary leg to a single legged receiver. It would be great for a single-legged receiver to have the option to patch either a senders primary or secondary leg to it...

This is particularly useful for monitoring or analysis receivers...

I'm not sure how best to implement this but possibly a Connect-Pri/Connect-Sec etc. approach for dual-legged senders connecting to single-legged receivers?

An alternative, which is less flexible but might be easier to do? If the primary leg is rtp_enabled:false on the sender then secondary leg is patched to the single-legged receiver on connection...?

Query for all API versions

Hello folks,
We're using this client in a docker image bundled by @rhastie. Our registered end devices supports different versions of NMOS APIs but they may not overlap. So we need to go back and forth in the setting page to modify the Query API version to see them appear in the Node list.
Would it make more sense to use all the Query API versions by default to see all these Nodes simultaneously?
Thanks
PK

Yarn Install / Build failing inside container based on Ubuntu Xenial and Disco

Previously this worked with compile done on 27-Sep 2019...

Now during build inside Ubuntu Disco container the following Dockerfile command I'm getting errors. It appears to be any issue with the new package.json under Yarn

Am I doing something wrong now? Is there a different dependencies needed?

Thanks,
Rich.

Command:

RUN cd /home/ && git init && git config --global http.sslVerify false && git clone https://github.com/sony/nmos-js.git && cd /home/nmos-js/Development && yarn install && yarn build && cp -rf /home/nmos-js/Development/build/ /home/admin*

Output and errors:

---> Running in 3a2b6bdc22e9
Reinitialized existing Git repository in /home/.git/
Cloning into 'nmos-js'...
yarn install v1.19.1
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "aor-xmysql > admin-on-rest > [email protected]" has incorrect peer dependency "react@^15".
warning "aor-xmysql > admin-on-rest > [email protected]" has incorrect peer dependency "react@^15".
warning "material-table > @date-io/[email protected]" has incorrect peer dependency "[email protected]".
warning "material-table > @material-ui/[email protected]" has unmet peer dependency "@date-io/core@^1.3.6".
warning " > [email protected]" has incorrect peer dependency "@material-ui/core@^3.2.0".
warning " > [email protected]" has incorrect peer dependency "@material-ui/icons@^3.0.1".
warning " > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/plugin-proposal-object-rest-spread > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > [email protected]" has unmet peer dependency "@babel/core@^7.0.0".
warning " > [email protected]" has unmet peer dependency "[email protected]".
warning " > [email protected]" has incorrect peer dependency "[email protected]".
warning " > [email protected]" has incorrect peer dependency "eslint@>=6.0.0".
[4/4] Building fresh packages...
Done in 49.08s.
yarn run v1.19.1
$ react-scripts build
Creating an optimized production build...
Failed to compile.

Failed to minify the code from this file:

    ./node_modules/t-a-i/src/build.js:9

Read more here: http://bit.ly/2tRViJ9

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The command '/bin/sh -c cd /home/ && git init && git config --global http.sslVerify false && git clone https://github.com/sony/nmos-js.git && cd /home/nmos-js/Development && yarn install && yarn build && cp -rf /home/nmos-js/Development/build/* /home/admin' returned a non-zero code: 1
Makefile:9: recipe for target 'build' failed
make: *** [build] Error 1

Additionally build fails on native Ubuntu Xenial host following yarn install / yarn build process.

rhastie@ubuntu:/nmos-js/nmos-js/Development$ yarn install
yarn install v1.19.1
[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "aor-xmysql > admin-on-rest > [email protected]" has incorrect peer dependency "react@^15".
warning "aor-xmysql > admin-on-rest > [email protected]" has incorrect peer dependency "react@^15".
warning "material-table > @date-io/[email protected]" has incorrect peer dependency "[email protected]".
warning "material-table > @material-ui/[email protected]" has unmet peer dependency "@date-io/core@^1.3.6".
warning " > [email protected]" has incorrect peer dependency "@material-ui/core@^3.2.0".
warning " > [email protected]" has incorrect peer dependency "@material-ui/icons@^3.0.1".
warning " > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/plugin-proposal-object-rest-spread > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > [email protected]" has unmet peer dependency "@babel/core@^7.0.0".
warning " > [email protected]" has unmet peer dependency "[email protected]".
warning " > [email protected]" has incorrect peer dependency "[email protected]".
warning " > [email protected]" has incorrect peer dependency "eslint@>=6.0.0".
[4/4] Building fresh packages...
Done in 37.43s.
rhastie@ubuntu:
/nmos-js/nmos-js/Development$ yarn build
yarn run v1.19.1
$ react-scripts build
Creating an optimized production build...
Failed to compile.

Failed to minify the code from this file:

    ./node_modules/t-a-i/src/build.js:9

Read more here: http://bit.ly/2tRViJ9

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
rhastie@ubuntu:~/nmos-js/nmos-js/Development$

Am i doing something wrong now? Is there a change to the build process? Am I missing a dependency?

Thanks,
Rich,

Custom names for more resource types

#53 introduced ability for user to specify custom names for Inputs and Outputs and their channels, in the IS-08 Audio Channel Mapping implementation, saved in Local Storage. This feature would also be useful for other resources, such as Nodes, Senders and Receivers.

The complication is that the Channel Mapping filtering is performed entirely client-side, whereas the List views for the IS-04 resource types use server-side queries. A possible approach for searching for labels could be to make a server-side query on both label and id, based on a client-side pass through a mapping in local storage.

Node.js v18.x build error

I'm currently using Node.js v16 LTS for production but testing Node.js v18. I am seeing build errors under Node.js v18.x... Any suggestions welcome?

[1/4] Resolving packages...
[2/4] Fetching packages...
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
info [email protected]: The platform "linux" is incompatible with this module.
info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning "react-admin > [email protected]" has unmet peer dependency "immutable@^3.8.1 || ^4.0.0-rc.1".
warning "react-admin > [email protected]" has unmet peer dependency "history@^4.7.2".
warning "react-admin > [email protected]" has incorrect peer dependency "react@^16.4.0".
warning "react-admin > [email protected]" has unmet peer dependency "seamless-immutable@^7.1.3".
[4/4] Building fresh packages...
success Saved lockfile.
Done in 129.12s.
yarn run v1.22.15
$ react-scripts build
node:internal/modules/cjs/loader:489
      throw e;
      ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/tokenize' is not defined by "exports" in /home/nmos-js/Development/node_modules/postcss-safe-parser/node_modules/postcss/package.json
    at new NodeError (node:internal/errors:372:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:440:9)
    at packageExportsResolve (node:internal/modules/esm/resolve:719:3)
    at resolveExports (node:internal/modules/cjs/loader:483:36)
    at Module._findPath (node:internal/modules/cjs/loader:523:31)
    at Module._resolveFilename (node:internal/modules/cjs/loader:925:27)
    at Module._load (node:internal/modules/cjs/loader:780:27)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:102:18)
    at Object.<anonymous> (/home/nmos-js/Development/node_modules/postcss-safe-parser/lib/safe-parser.js:1:17) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Node.js v18.0.0
error Command failed with exit code 1.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.