0xsequence / sequence.js

Sequence: a modular web3 stack and smart wallet for Ethereum chains
https://docs.sequence.xyz
Other
305 stars 59 forks source link

0xsequence

Sequence: a modular web3 stack and smart wallet for Ethereum chains

Usage

npm install 0xsequence ethers

or

pnpm install 0xsequence ethers

or

yarn add 0xsequence ethers

Packages

Development Environment

Below are notes and instructions on how to get your development environment up and running, and enjoyable.

  1. Install dependencies Run, pnpm install

  2. Workflow -- we use the amazing preconstruct package to handle our monorepo build system.

  3. Local dev -- when you're working on the code in this repository, you can safely run pnpm dev at the root-level, which will link all packages/ together, so that when a local dependency from packages/ is used by another, it will automatically be linked without having to run a build command. Just remember: run pnpm dev anytime you developing in this repo. Note, that when you run pnpm build it will clear the dev environment, so you will need to run pnpm dev again after a build. However, pnpm build should only be used when making a release.

  4. Testing -- to test the system, you can run pnpm test at the top-level or at an individual package-level.

  5. Type-checking -- to typecheck the system you can run pnpm typecheck at any level.

  6. Building -- to compile the project to dist files for a release, run pnpm build at the root-level. Note building packages repeatedly during development is unnecessary with preconstruct. During local development run pnpm dev and when building to make a release, run pnpm build.

  7. Versioning -- this repository uses the handy changesets package for package versioning across the monorepo, as well as changelogs. See Releasing section below.

Releasing to NPM

0xsequence uses changesets to do versioning. This makes releasing really easy and changelogs are automatically generated.

How to do a release

Authorization on https://www.npmjs.com/ to push to the 0xsequence organization's packages is required.

  1. (first time) pnpm login
  2. check that master is passing tests on github
  3. (warning: destructive) start from a clean repo: git checkout master && git reset --hard && git clean -dfx && pnpm i
  4. for each new change: a. pnpm changeset b. select all packages c. update all packages with either a minor or patch bump according to semver d. add a summary of the form: package: description of a single change e. repeat a-d until all changes are accounted for
  5. pnpm changeset:version && pnpm i && pnpm build && pnpm i
  6. git diff and copy the newest version according to the changelogs
  7. git commit -a -m <new version here>
  8. git push
  9. pnpm changeset:publish and enter your 2fa totp token when prompted
  10. git push --tags

How to do a snapshot release

Authorization on https://www.npmjs.com/ to push to the 0xsequence organization's packages is required.

Snapshot releases are versioned as 0.0.0-YYYYmmddHHMMSS and are intended for testing builds only.

  1. (first time) pnpm login
  2. (warning: destructive) start from a clean repo: git checkout <branch or commit to snapshot> && git reset --hard && git clean -dfx && pnpm i
  3. pnpm changeset:snapshot a. select all packages b. update all packages with a patch bump c. any summary is ok d. enter your 2fa totp token when prompted e. note the snapshot version 0.0.0-YYYYmmddHHMMSS
  4. git reset --hard

NOTES

  1. Browser tests can be run with pnpm test or, separately pnpm test:server and pnpm test:run
  2. To run a specific test, run pnpm test:only <test-file-basename>, ie. pnpm test:only window-transport

TIPS

LICENSE

Apache-2.0

Copyright (c) 2017-present Horizon Blockchain Games Inc. / https://horizon.io