A client/server for Brave sync
Yarn must be installed first, though npm and yarn will both work for the commands below. If you're adding packages to package.json, please yarn install
and commit changes to yarn.lock.
Install dependencies:
yarn install
Build a bundled JS library for the client:
yarn run build
Run the server:
yarn run start
The sync client uses Browserify to transform Node js into browser js. To unittest
the library in a browser (default: electron), run yarn browsertest
.
To test in a different browser run yarn browsertest -- --browser chrome
.
Results appear in both the browser inspector and your terminal.
To run tests in Node, just do yarn test
.
To do a basic client/server integration test against the production server, run
npm run client
and navigate to http://localhost:8000/
). The page
should not show any 'ERROR' messages and should end with 'success'.
server/config
contains settings; defaults in defaults.json and environment variable mappings in custom-environment-variables.json.
To configure locally you can create a file config-dev.sh
and source config-dev.sh
when needed:
#!/bin/bash
export AWS_ACCESS_KEY_ID="{stuff}"
export AWS_SECRET_ACCESS_KEY="{secret stuff}"
Run the server with file watching and autoreloading:
yarn run start-dev
To integrate Brave sync on a platform (iOS, Android, Laptop):
- Make a new branch.
- In the main browser process, implement an IPC message handler as specified
in
client/constants/messages.js
. - If webviews on your platform do not support
chrome.ipcRenderer.{send, on}
, editclient/polyfill/chrome.js
as needed to polyfill this functionality.
- Make sure this repo is checked out next to
browser-laptop/
- Checkout the
feature/syncing
branch in browser-laptop npm run dist
- If developing, do
npm start
in browser-laptop. Console messages from the sync client will be logged inLibrary/Application Support/brave-development/chrome-debug.log
.
To run tests you need to configure these environment variables:
- AWS_REGION
- AWS_S3_BUCKET
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY