609798db5d
build(deps): bump http-proxy-middleware from 2.0.6 to 2.0.7 |
||
---|---|---|
.config/cranko | ||
.yarn | ||
astro | ||
ci | ||
docs | ||
embed | ||
embed-common | ||
embed-creator | ||
engine | ||
engine-helpers | ||
engine-pinia | ||
engine-types | ||
research-app | ||
research-app-messages | ||
tests | ||
.eslintignore | ||
.eslintrc.js | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.yarnrc.yml | ||
LICENSE | ||
README.md | ||
package.json | ||
yarn.lock |
README.md
The WorldWide Telescope WebGL engine
The “WebGL engine” of the WorldWide Telescope (WWT) is a JavaScript/TypeScript framework that powers the Web-based versions of the WWT visualization software, as exemplified by the WWT web client.
Learn more about WWT here.
The WorldWide Telescope project uses an open governance model and is fiscally sponsored by NumFOCUS. Consider making a tax-deductible donation to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.
Developers’ quick start
- Check out this repository to a machine with Node.js and Yarn.
- Builds with versions of Node.js around 18.17 may fail with an Invalid URL error.
- There have also been reports of builds that hang on Linux with Node 20.x.
git submodule update --init
yarn install
yarn lint
(uses ESLint)yarn build
creates:- Commands to serve the web apps:
yarn run serve-embed
to serve the embed appyarn run serve-research
to serve the research appyarn run serve-creator
to serve the embed creator app
yarn test
(mainly uses mocha and chai; see also Integration Testing below)yarn doc
(uses TypeDoc)
Repository structure
This repository is a monorepo containing the source for several interlocking TypeScript packages that together comprise the core of the WWT web framework. The most important subdirectories are:
@wwtelescope/engine
inengine/
, the core engine code with TypeScript annotations@wwtelescope/engine-pinia
inengine-pinia/
, a higher-level package that turns the engine into a reusable Vue/Pinia component@wwtelescope/embed
inembed/
, a web application that turns WWT into a configurable, embeddable iframe@wwtelescope/research-app
inresearch-app/
, an embeddable web application for astrophysics research using WWT.- The narrative documentation in
docs/
README files inside the individual subdirectories give more information about their contents and development workflows.
Previous versions used Vuex instead of Pinia in the engine-vuex/
subdirectory. That module has been superseded by the Pinia version.
Building the code
Code in this repository is built using standard Node.js/Yarn tooling. These tools must be installed before you can do anything else. To set up your checkout, follow the instructions in the Developers’ Quick Start above.
Once setup is complete, the following commands will be useful:
yarn build
to build the subpackagesyarn lint
to lint the subpackages (using eslint with TypeScript extensions)yarn test
to run the tests (mainly using mocha and chai)yarn doc
to build most of the documentation (using TypeDoc) — but see belowyarn clean
to remove built files
You can run these commands from the top level, which will run them for all of the packages, or from the subdirectory of the package you’re interested in.
Building the full documentation
Documentation is maintained in subdirectories of docs/
. The documentation is a
Frankenstein combination of the autogenerated API documentation and narrative
material written in CommonMark Markdown. The final HTML is assembled with the
static site generator Zola.
- Zola is fast and self-contained and ridiculously easy to install.
- The
yarn doc
command will install the autogenerated documentation intodocs/engine/static/
- Running
zola build
in a subdirectory ofdocs
will assembled the final HTML intodocs/{subdir}/public/
. - The command
zola check
will check the narrative docs for broken links. - The command
zola serve
will serve the documentation using a local server with autoreload.
Continuous Integration and Deployment
This repository uses Cranko to automate release workflows. This automation is essential to the smooth and reproducible deployment of the WWT web services.
Integration Testing
Integration testing of the apps is done using Selenium, Nightwatch, and
BrowserStack. For the main branch, this is triggered automatically with each
commit/pull request. However, the test suite can also be run using a version of
the app on your local machine, either locally (using the Nightwatch binary) or
using BrowserStack (provided that you have a BrowserStack account). In either
case, you may need to modify the url
in tests/page_objects/researchApp.js
to
point to the localhost port that you will be using (the default is
http://localhost:8080
).
To run the test suite on a local version of the app with ChromeDriver:
yarn run serve-research & # or equivalent
cd tests
yarn build
yarn local
To run tests on a local version of the app via BrowserStack's multi-browser, multi-platform infrastructure, do the following:
- Set the variables
BROWSERSTACK_USERNAME
andBROWSERSTACK_ACCESS_KEY
to your BrowserStack username and access key, respectively. You can find these values in your BrowserStack Account Settings.
- Run the test suite as above but with the final command:
yarn bs-local
By default, both of these local options will run the tests in Chrome. You can
adjust the testing environments adding the -e
option, which can be
accomplished with syntax such as
yarn bs-local -e firefox,edge
Getting involved
We love it when people get involved in the WWT community! You can get started by participating in our user forum or by signing up for our low-traffic newsletter. If you would like to help make WWT better, our Contributor Hub aims to be your one-stop shop for information about how to contribute to the project, with the Contributors’ Guide being the first thing you should read. Here on GitHub we operate with a standard fork-and-pull model.
All participation in WWT communities is conditioned on your adherence to the WWT Code of Conduct, which basically says that you should not be a jerk.
Acknowledgments
Work on the WorldWide Telescope system has been supported by the American Astronomical Society (AAS), the .NET Foundation, and other partners. See the WWT user website for details.
Legalities
The WWT code is licensed under the MIT License. The copyright to the code is owned by the .NET Foundation.