Project Overview
A collection of shared JavaScript and HTML projects that are used within our Browsers.
Child Projects
Injected
A library of features/protections that are executed within our browsers.
Features have a deep integration with privacy-configuration, to allow dynamic enabling or disabling of features at runtime.
Special Pages
This project contains a set of isolated JavaScript applications that end up being embedded directly into our browsers. A 'special page' can be as simple as a single-screen, or as complex as a New Tab Page.
Messaging
This project serves as an abstraction layer for seamless web-to-native and native-to-web communications, inspired by the JSON-RPC format.
The module provides three core methods: notify for fire-and-forget messages, request for asynchronous request-response
interactions, and subscribe for handling push-based data updates.
Types-generator
Utilities to automatically generate TypeScript types from JSON Schema files.
NPM commands
Consider using nvm to manage node versions, after installing in the project directory run:
From the top-level root folder of this npm workspace, you can run the following npm commands:
Install dependencies:
Will install all the dependencies we need to build and run the project:
Build all workspaces:
Use this to produce the same output as a release. The build directory will be populated with
various artifacts.
Tip
You can run the build command from within any sub-project too, the artifacts will always be
lifted out to the root-level build folder.
Run unit tests for all workspaces:
Run integration tests for all workspaces:
Run extended integration tests for all workspaces:
Clean tree and check for changes:
Generate documentation using TypeDoc:
Generate and watch documentation using TypeDoc:
Compile TypeScript files:
Watch and compile TypeScript files:
Lint the codebase using ESLint:
Lint and automatically fix issues:
Serve integration test pages on port 3220:
Serve special pages on port 3221:
npm run serve-special-pages