diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 00000000..d206228b --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,43 @@ +name: Pages + +on: + push: + branches: [master] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 + with: + node-version: 20 + - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2 + with: + bun-version: 1.3.8 + - run: bun install --ignore-scripts --frozen-lockfile + - run: make pages + - uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5 + - uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3 + with: + path: build/pages + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - id: deployment + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4 diff --git a/Makefile b/Makefile index 716f8aea..fd1f458a 100644 --- a/Makefile +++ b/Makefile @@ -11,10 +11,13 @@ check: verify: bun scripts/release.ts verify +pages: + bun scripts/pages.ts + release: bun scripts/release.ts bump $(v) release-dry: bun scripts/release.ts bump $(v) --dry-run -.PHONY: check verify release release-dry +.PHONY: check verify pages release release-dry diff --git a/README.md b/README.md index 02b84df1..60a2899a 100644 --- a/README.md +++ b/README.md @@ -5,21 +5,34 @@ Monorepo for the `@wharfkit/*` TypeScript packages. Every member package lives u ## Layout - `packages//` holds one npm package per directory, imported with full history from its standalone repository. -- `scripts/` holds the workspace tooling: `release.ts` (version bump and publish), `import-package.ts` (standalone repo import), `check-closure.ts` (membership closure check). +- `scripts/` holds the workspace tooling: `release.ts` (version bump, verify, and publish), `import-package.ts` (standalone repo import), and the `check-*.ts` scripts behind `make check`. - `scripts/vendor/git-filter-repo` is a vendored, version-pinned copy of [git-filter-repo](https://github.com/newren/git-filter-repo) (v2.47.0, byte-identical to the upstream release, MIT licensed with the notice at `scripts/vendor/COPYING.mit`), invoked by `import-package.ts` via `python3`. No system install is required. +- `common.mk` is the Makefile every library member includes. It defines the build, test, lint, format, docs, coverage, and browser-bundle targets once, so a member's own Makefile is a few variable settings. `web-renderer`, `web-ui`, `svelte-components`, and `bundle` carry their own Svelte or Vite toolchains behind the same target names. ## Toolchain - Package manager: bun workspaces with the isolated linker (`bunfig.toml`). Install with `bun install --ignore-scripts`. -- Tests run under node, not bun's test runner. -- Each package keeps its own build setup (Makefile, rollup, mocha, eslint) as imported. Shared root tooling is a later normalization pass. -- Stable releases are blocked while `.prerelease-only` exists at the repo root: every publish carries an rc suffix and lands on the npm dist-tag `next`. The go/no-go checkpoint removes the file. +- Third-party development dependencies are declared once at the root. Members declare only their runtime dependencies and their `workspace:*` references. +- Build: rolldown, with declarations from `tsc`. Lint and format: oxlint and oxfmt, configured at the root. +- Tests run under node with mocha, not bun's test runner. Node 20.19 is the supported floor. +- Stable releases are blocked while `.prerelease-only` exists at the repo root: every publish carries an rc suffix and lands on the npm dist-tag `next`. + +## Branches + +`dev` is the default branch and the integration branch: pull requests target it. `master` holds exactly what is published on npm. A release is one reviewed promotion pull request from `dev` to `master`, and the push to `master` publishes every member. ## Commands ``` -make check # membership closure check -make verify # install, ordered build, checks, tests across the workspace +make check # membership closure, dependency, single-instance, license, and formatting checks +make verify # install, ordered build, per-member checks and tests across the workspace +make pages # API documentation, coverage, and browser tests for every member under build/pages/ make release v= # bump to and open a release PR make release-dry v= ``` + +Inside a member directory, `make` builds it, `make test` runs its tests, and `make check` lints it. + +## Documentation + +Consumer documentation is on [wharfkit.com](https://wharfkit.com). API documentation, coverage reports, and browser test suites for every member are published from `master` to [wharfkit.github.io/js](https://wharfkit.github.io/js/), one directory per package. diff --git a/browser-test.rolldown.config.mjs b/browser-test.rolldown.config.mjs index e5508cc6..d192a21e 100644 --- a/browser-test.rolldown.config.mjs +++ b/browser-test.rolldown.config.mjs @@ -23,7 +23,10 @@ const MEMBERS = { hyperion: {testsDir: '.'}, msigs: {testsDir: '.'}, 'protocol-esr': {browserFetch: true}, - 'protocol-scatter': {browserFetch: true}, + 'protocol-scatter': { + browserFetch: true, + aliases: [{find: '$lib/create-hash', replacement: '../src/create-hash.ts'}], + }, roborovski: {testsDir: '.'}, 'sealed-messages': {browserProvider: true}, 'transact-plugin-autocorrect': {browserFetch: true}, diff --git a/bun.lock b/bun.lock index fd912709..b4e2528d 100644 --- a/bun.lock +++ b/bun.lock @@ -32,7 +32,7 @@ }, "packages/abicache": { "name": "@wharfkit/abicache", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/signing-request": "workspace:*", @@ -44,7 +44,7 @@ }, "packages/account": { "name": "@wharfkit/account", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/common": "workspace:*", @@ -60,7 +60,7 @@ }, "packages/account-creation-plugin-anchor": { "name": "@wharfkit/account-creation-plugin-anchor", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -71,7 +71,7 @@ }, "packages/account-creation-plugin-jungle4": { "name": "@wharfkit/account-creation-plugin-jungle4", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -82,7 +82,7 @@ }, "packages/account-creation-plugin-metamask": { "name": "@wharfkit/account-creation-plugin-metamask", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@metamask/providers": "^17.0.0", "@wharfkit/session": "workspace:*", @@ -94,7 +94,7 @@ }, "packages/actionstream": { "name": "@wharfkit/actionstream", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, @@ -105,7 +105,7 @@ }, "packages/antelope": { "name": "@wharfkit/antelope", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@noble/curves": "^2.2.0", "@noble/hashes": "^2.2.0", @@ -115,7 +115,7 @@ }, "packages/atomicassets": { "name": "@wharfkit/atomicassets", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/common": "workspace:*", @@ -128,7 +128,7 @@ }, "packages/bundle": { "name": "@wharfkit/bundle", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "devDependencies": { "@wharfkit/account": "workspace:*", "@wharfkit/antelope": "workspace:*", @@ -154,7 +154,7 @@ }, "packages/cli": { "name": "@wharfkit/cli", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "bin": { "wharfkit": "./lib/cli.js", }, @@ -178,7 +178,7 @@ }, "packages/common": { "name": "@wharfkit/common", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, @@ -189,7 +189,7 @@ }, "packages/conformance": { "name": "@wharfkit/conformance", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "devDependencies": { "@greymass/vert": "^3.0.0", "@types/bun": "^1.0.4", @@ -200,7 +200,7 @@ }, "packages/contract": { "name": "@wharfkit/contract", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/abicache": "workspace:*", "@wharfkit/antelope": "workspace:*", @@ -214,7 +214,7 @@ }, "packages/hyperion": { "name": "@wharfkit/hyperion", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, @@ -224,7 +224,7 @@ }, "packages/mock-data": { "name": "@wharfkit/mock-data", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/session": "workspace:*", @@ -233,7 +233,7 @@ }, "packages/msigs": { "name": "@wharfkit/msigs", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, @@ -243,7 +243,7 @@ }, "packages/protocol-esr": { "name": "@wharfkit/protocol-esr", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@greymass/buoy": "catalog:", "@wharfkit/sealed-messages": "workspace:*", @@ -262,21 +262,22 @@ }, "packages/protocol-scatter": { "name": "@wharfkit/protocol-scatter", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { + "@wharfkit/antelope": "workspace:*", "@wharfkit/session": "workspace:*", "eosjs": "20.0.0", - "scatter-ts": "^0.1.9", }, "devDependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/common": "workspace:*", "@wharfkit/session": "workspace:*", + "scatter-ts": "^0.1.9", }, }, "packages/resources": { "name": "@wharfkit/resources", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "bn.js": "catalog:", @@ -288,7 +289,7 @@ }, "packages/roborovski": { "name": "@wharfkit/roborovski", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, @@ -298,7 +299,7 @@ }, "packages/sealed-messages": { "name": "@wharfkit/sealed-messages", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@greymass/miniaes": "^1.0.0", "@wharfkit/antelope": "workspace:*", @@ -309,7 +310,7 @@ }, "packages/session": { "name": "@wharfkit/session", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/abicache": "workspace:*", "@wharfkit/antelope": "workspace:*", @@ -326,14 +327,14 @@ }, "packages/signing-request": { "name": "@wharfkit/signing-request", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", }, }, "packages/svelte-components": { "name": "@wharfkit/svelte-components", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@lucide/svelte": "^0.516.0", "@melt-ui/svelte": "^0.86.6", @@ -380,7 +381,7 @@ }, "packages/token": { "name": "@wharfkit/token", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/contract": "workspace:*", @@ -391,7 +392,7 @@ }, "packages/transact-plugin-autocorrect": { "name": "@wharfkit/transact-plugin-autocorrect", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/resources": "workspace:*", "@wharfkit/session": "workspace:*", @@ -404,7 +405,7 @@ }, "packages/transact-plugin-cosigner": { "name": "@wharfkit/transact-plugin-cosigner", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -416,7 +417,7 @@ }, "packages/transact-plugin-explorerlink": { "name": "@wharfkit/transact-plugin-explorerlink", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -428,7 +429,7 @@ }, "packages/transact-plugin-finality-callback": { "name": "@wharfkit/transact-plugin-finality-callback", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -439,7 +440,7 @@ }, "packages/transact-plugin-finality-checker": { "name": "@wharfkit/transact-plugin-finality-checker", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -451,7 +452,7 @@ }, "packages/transact-plugin-mock": { "name": "@wharfkit/transact-plugin-mock", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -463,7 +464,7 @@ }, "packages/transact-plugin-msig-propose": { "name": "@wharfkit/transact-plugin-msig-propose", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -475,7 +476,7 @@ }, "packages/transact-plugin-resource-provider": { "name": "@wharfkit/transact-plugin-resource-provider", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/resources": "workspace:*", "@wharfkit/session": "workspace:*", @@ -490,7 +491,7 @@ }, "packages/wallet-plugin-anchor": { "name": "@wharfkit/wallet-plugin-anchor", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@greymass/buoy": "catalog:", "@wharfkit/antelope": "workspace:*", @@ -511,7 +512,7 @@ }, "packages/wallet-plugin-cleos": { "name": "@wharfkit/wallet-plugin-cleos", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -522,7 +523,7 @@ }, "packages/wallet-plugin-cloudwallet": { "name": "@wharfkit/wallet-plugin-cloudwallet", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -533,7 +534,7 @@ }, "packages/wallet-plugin-gatewallet": { "name": "@wharfkit/wallet-plugin-gatewallet", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/protocol-scatter": "workspace:*", "@wharfkit/session": "workspace:*", @@ -546,7 +547,7 @@ }, "packages/wallet-plugin-imtoken": { "name": "@wharfkit/wallet-plugin-imtoken", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/protocol-scatter": "workspace:*", "@wharfkit/session": "workspace:*", @@ -559,7 +560,7 @@ }, "packages/wallet-plugin-metamask": { "name": "@wharfkit/wallet-plugin-metamask", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@metamask/providers": "^17.0.0", "@wharfkit/session": "workspace:*", @@ -571,7 +572,7 @@ }, "packages/wallet-plugin-mimic": { "name": "@wharfkit/wallet-plugin-mimic", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -582,7 +583,7 @@ }, "packages/wallet-plugin-mock": { "name": "@wharfkit/wallet-plugin-mock", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -594,7 +595,7 @@ }, "packages/wallet-plugin-paycash": { "name": "@wharfkit/wallet-plugin-paycash", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/protocol-esr": "workspace:*", "@wharfkit/session": "workspace:*", @@ -606,7 +607,7 @@ }, "packages/wallet-plugin-privatekey": { "name": "@wharfkit/wallet-plugin-privatekey", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -618,7 +619,7 @@ }, "packages/wallet-plugin-scatter": { "name": "@wharfkit/wallet-plugin-scatter", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/protocol-scatter": "workspace:*", "@wharfkit/session": "workspace:*", @@ -630,7 +631,7 @@ }, "packages/wallet-plugin-tokenpocket": { "name": "@wharfkit/wallet-plugin-tokenpocket", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/protocol-scatter": "workspace:*", "@wharfkit/session": "workspace:*", @@ -642,7 +643,7 @@ }, "packages/wallet-plugin-web-authenticator": { "name": "@wharfkit/wallet-plugin-web-authenticator", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@greymass/buoy": "catalog:", "@wharfkit/antelope": "workspace:*", @@ -661,7 +662,7 @@ }, "packages/web-renderer": { "name": "@wharfkit/web-renderer", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/session": "workspace:*", }, @@ -712,7 +713,7 @@ }, "packages/web-ui": { "name": "@wharfkit/web-ui", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/common": "workspace:*", "@wharfkit/session": "workspace:*", @@ -744,7 +745,7 @@ }, "packages/webauthn": { "name": "@wharfkit/webauthn", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "dependencies": { "@wharfkit/antelope": "workspace:*", "cborg": "^4.5.8", diff --git a/common.mk b/common.mk index 33fcb19a..1f775a8f 100644 --- a/common.mk +++ b/common.mk @@ -77,7 +77,7 @@ format: $(ROOT)/node_modules build/docs: $(SRC_FILES) $(ROOT)/node_modules @$(BIN)/typedoc --out build/docs \ --excludeInternal --excludePrivate --excludeProtected \ - --includeVersion --hideGenerator --readme none \ + --includeVersion --hideGenerator --readme none --skipErrorChecking \ $(DOCS_ENTRY) .PHONY: docs @@ -100,10 +100,11 @@ browser: @echo '$(notdir $(CURDIR)) has no browser bundle' endif -build/pages: build/docs build/coverage $(BROWSER_OUT) +COVERAGE_OUT := $(if $(strip $(TEST_FILES)),build/coverage,) +build/pages: build/docs $(COVERAGE_OUT) $(BROWSER_OUT) @mkdir -p build/pages @cp -r build/docs/* build/pages/ - @cp -r build/coverage build/pages/coverage + @$(if $(COVERAGE_OUT),cp -r build/coverage build/pages/coverage,true) @$(if $(BROWSER_OUT),cp $(BROWSER_OUT) build/pages/tests.html,true) .PHONY: deploy-pages diff --git a/package.json b/package.json index dc77b4e3..24cfb6a7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "wharfkit-js", "private": true, - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "workspaces": { "packages": [ "packages/*" diff --git a/packages/abicache/README.md b/packages/abicache/README.md index caeba744..793d720d 100644 --- a/packages/abicache/README.md +++ b/packages/abicache/README.md @@ -12,22 +12,14 @@ yarn add @wharfkit/abicache npm install --save @wharfkit/abicache ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -**All development should be done based on the [dev](https://github.com/wharfkit/session/tree/dev) branch.** - -Clone the repository and run `make` to checkout all dependencies and build the project. The tests can be run using `make test` and can be continously tested during development with `make test/watch`. - -See the [Makefile](./Makefile) for other useful targets. - -Before submitting a pull request make sure to run `make check` and `make format`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. ## Dependencies -- [@wharfkit/antelope](https://github.com/wharfkit/antelope): Core library to provide Antelope data types. -- [@wharfkit/signing-request](https://github.com/@wharfkit/signing-request): Antelope Signing Request Protocol. +- [@wharfkit/antelope](https://github.com/wharfkit/js/tree/master/packages/antelope): Core library to provide Antelope data types. +- [@wharfkit/signing-request](https://github.com/wharfkit/js/tree/master/packages/signing-request): Antelope Signing Request Protocol. --- diff --git a/packages/abicache/package.json b/packages/abicache/package.json index ec604ff9..410651f7 100644 --- a/packages/abicache/package.json +++ b/packages/abicache/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/abicache", "description": "ABI Caching Mechanism for use in Session and Contract Kits", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/abicache", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/account-creation-plugin-anchor/README.md b/packages/account-creation-plugin-anchor/README.md index d9d84dbe..b509f6da 100644 --- a/packages/account-creation-plugin-anchor/README.md +++ b/packages/account-creation-plugin-anchor/README.md @@ -11,11 +11,9 @@ A template to create a `WalletPlugin` for use within the `@wharfkit/session` lib - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/account-creation-plugin-anchor/package.json b/packages/account-creation-plugin-anchor/package.json index 3fc8ffdc..97171dfe 100644 --- a/packages/account-creation-plugin-anchor/package.json +++ b/packages/account-creation-plugin-anchor/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/account-creation-plugin-anchor", "description": "An account creation plugin using the Greymass account creation service", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/account-creation-plugin-anchor", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/account-creation-plugin-anchor", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/account-creation-plugin-jungle4/README.md b/packages/account-creation-plugin-jungle4/README.md index 5a2e6e30..0d029c20 100644 --- a/packages/account-creation-plugin-jungle4/README.md +++ b/packages/account-creation-plugin-jungle4/README.md @@ -11,11 +11,9 @@ A template to create a `account-creationPlugin` for use within the `@wharfkit/se - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/account-creation-plugin-jungle4/package.json b/packages/account-creation-plugin-jungle4/package.json index c70d0194..f959a2fa 100644 --- a/packages/account-creation-plugin-jungle4/package.json +++ b/packages/account-creation-plugin-jungle4/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/account-creation-plugin-jungle4", "description": "Plugin to create a Jungle4 Testnet acccount.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/account-creation-plugin-jungle4", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/account-creation-plugin-jungle4", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/account-creation-plugin-metamask/README.md b/packages/account-creation-plugin-metamask/README.md index 3115527b..540cb48d 100644 --- a/packages/account-creation-plugin-metamask/README.md +++ b/packages/account-creation-plugin-metamask/README.md @@ -8,11 +8,9 @@ Wharfkit Plugin to create EOS accounts using Metamask public key. [Read the Wharf account creation plugin documentation](https://wharfkit.com/docs/session-kit/plugin-account-creation) -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/account-creation-plugin-metamask/package.json b/packages/account-creation-plugin-metamask/package.json index ab67a065..be71cfaf 100644 --- a/packages/account-creation-plugin-metamask/package.json +++ b/packages/account-creation-plugin-metamask/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/account-creation-plugin-metamask", "description": "A MetaMask plugin to create EOS accounts using Metamask public keys.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-metamask", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/account-creation-plugin-metamask", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/account/README.md b/packages/account/README.md index d1f28fde..377e3864 100644 --- a/packages/account/README.md +++ b/packages/account/README.md @@ -15,18 +15,16 @@ npm install --save @wharfkit/account TODO -See [unit tests](https://github.com/wharfkit/account/tree/main/test) for usage examples during early development. +See [unit tests](https://github.com/wharfkit/js/tree/master/packages/account/test) for usage examples during early development. ## Autodocs -- [API Documentation](https://wharfkit.github.io/account/) -- [Code Coverage Report](https://wharfkit.github.io/account/coverage/) +- [API Documentation](https://wharfkit.github.io/js/account/) +- [Code Coverage Report](https://wharfkit.github.io/js/account/coverage/) -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/account/package.json b/packages/account/package.json index a5ebda49..1e6e437d 100644 --- a/packages/account/package.json +++ b/packages/account/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/account", "description": "Account kit for Wharf Kit", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/account", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/docs/account-kit", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/actionstream/package.json b/packages/actionstream/package.json index 7d52de5b..9eb655d4 100644 --- a/packages/actionstream/package.json +++ b/packages/actionstream/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/actionstream", "description": "Client library for subscribing to Roborovski action streams", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/actionstream", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/antelope/README.md b/packages/antelope/README.md index 51400cb5..e5d0b0b5 100644 --- a/packages/antelope/README.md +++ b/packages/antelope/README.md @@ -22,20 +22,20 @@ npm install @wharfkit/antelope@1 ## API Documentation -https://wharfkit.github.io/antelope/ +https://wharfkit.github.io/js/antelope/ ## Documentation Documentation beyond the automatically generated API documentation above is currently incomplete. Until full documentation is complete, the tests themselves provide good reference material on how to do nearly everything. -https://github.com/wharfkit/antelope/tree/master/test +https://github.com/wharfkit/js/tree/master/packages/antelope/test More: -- Using APIs: https://github.com/wharfkit/antelope/blob/master/test/api.ts -- Serialization: https://github.com/wharfkit/antelope/blob/master/test/serializer.ts -- Crypto Operations: https://github.com/wharfkit/antelope/blob/master/test/crypto.ts -- Primitive Data Types: https://github.com/wharfkit/antelope/blob/master/test/chain.ts +- Using APIs: https://github.com/wharfkit/js/tree/master/packages/antelope/test/api.ts +- Serialization: https://github.com/wharfkit/js/tree/master/packages/antelope/test/serializer.ts +- Crypto Operations: https://github.com/wharfkit/js/tree/master/packages/antelope/test/crypto.ts +- Primitive Data Types: https://github.com/wharfkit/js/tree/master/packages/antelope/test/chain.ts ## Reporting Issues @@ -77,7 +77,7 @@ make test make coverage ``` -The report for the current version can also be found at: https://wharfkit.github.io/antelope/coverage/ +The report for the current version can also be found at: https://wharfkit.github.io/js/antelope/coverage/ ### Run the test suite in a browser: @@ -85,7 +85,7 @@ The report for the current version can also be found at: https://wharfkit.github make browser-test ``` -The browser test suite for the current version of the library is available at: https://wharfkit.github.io/antelope/tests.html +The browser test suite for the current version of the library is available at: https://wharfkit.github.io/js/antelope/tests.html ## Debugging diff --git a/packages/antelope/package.json b/packages/antelope/package.json index 63b99d9f..6b7de774 100644 --- a/packages/antelope/package.json +++ b/packages/antelope/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/antelope", "description": "Library for working with Antelope powered blockchains.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/antelope", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/docs/antelope", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/atomicassets/package.json b/packages/atomicassets/package.json index 3f9472cf..27370830 100644 --- a/packages/atomicassets/package.json +++ b/packages/atomicassets/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/atomicassets", "description": "AtomicAsset library for Wharf", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/atomicassets", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/bundle/README.md b/packages/bundle/README.md index 0e271ca2..e1a0fc8c 100644 --- a/packages/bundle/README.md +++ b/packages/bundle/README.md @@ -5,7 +5,7 @@ A prepackaged bundle of common Wharf libraries, built as a self-contained IIFE ( ## Usage ```html - + ``` @@ -30,7 +30,7 @@ Both URLs above name an exact version and the full file path. jsDelivr serves th Use `https://cdn.jsdelivr.net/npm/@wharfkit/bundle@4/dist/wharf.bundle.js` if you want patch releases without editing the page. The trade is that the bytes are no longer the package's own and no longer eligible for Subresource Integrity. -To add an `integrity` attribute, take the hash for the exact version from `https://data.jsdelivr.com/v1/packages/npm/@wharfkit/bundle@4.0.0-rc6?structure=flat`, and pair it with `crossorigin="anonymous"`, which SRI requires. An `integrity` attribute on a ` ``` -Mixing versions across imports, or adding a package still on the `1.x` line, splits it again. esm.sh takes an explicit pin against that: `?deps=@wharfkit/antelope@4.0.0-rc6` on each top-level URL rewrites the antelope import to one concrete build and propagates into every transitive `@wharfkit/*` request, so it costs one query parameter per import rather than one entry per transitive package. jsDelivr's `+esm` route has no query-parameter equivalent, and its output carries jsDelivr's own warning against pairing it with Subresource Integrity. +Mixing versions across imports, or adding a package still on the `1.x` line, splits it again. esm.sh takes an explicit pin against that: `?deps=@wharfkit/antelope@4.0.0-rc7` on each top-level URL rewrites the antelope import to one concrete build and propagates into every transitive `@wharfkit/*` request, so it costs one query parameter per import rather than one entry per transitive package. jsDelivr's `+esm` route has no query-parameter equivalent, and its output carries jsDelivr's own warning against pairing it with Subresource Integrity. The bundle stays the recommended browser artifact. It is the only one that guarantees a single antelope without a resolver. ## Examples -`public/bundle.html` and `public/esm.html` are runnable examples of both forms, loading the built files next to them. `make` copies them into `dist/`, so open them from there after a build. The same pages ship in the package, at `https://cdn.jsdelivr.net/npm/@wharfkit/bundle@4.0.0-rc6/dist/bundle.html` and `.../dist/esm.html`. +`public/bundle.html` and `public/esm.html` are runnable examples of both forms, loading the built files next to them. `make` copies them into `dist/`, so open them from there after a build. The same pages ship in the package, at `https://cdn.jsdelivr.net/npm/@wharfkit/bundle@4.0.0-rc7/dist/bundle.html` and `.../dist/esm.html`. ## Types diff --git a/packages/bundle/package.json b/packages/bundle/package.json index 3bf607f8..2a40cb60 100644 --- a/packages/bundle/package.json +++ b/packages/bundle/package.json @@ -1,6 +1,7 @@ { "name": "@wharfkit/bundle", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "description": "A prepackaged bundle of common Wharf libraries re-exported for IIFE or ESM", "license": "BSD-3-Clause", "type": "module", diff --git a/packages/cli/README.md b/packages/cli/README.md index 0c2e458d..7cdba6aa 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -52,7 +52,7 @@ To generate the code for the `eosio.token` contract on the Jungle 4 testnet: npx @wharfkit/cli generate -u https://jungle4.greymass.com eosio.token ``` -This will output the code directly into the console window similar to [this example code](https://github.com/wharfkit/cli/blob/master/test/data/contracts/mock-eosio.token.ts). +This will output the code directly into the console window similar to [this example code](https://github.com/wharfkit/js/tree/master/packages/cli/test/data/contracts/mock-eosio.token.ts). If you'd prefer to save this as a file, use the `-f` flag followed by a filename: diff --git a/packages/cli/package.json b/packages/cli/package.json index 69424a8e..88a73c37 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/cli", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "license": "BSD-3-Clause", - "homepage": "https://github.com/wharfkit/cli#readme", + "homepage": "https://wharfkit.com/docs/utilities/cli", "description": "Command line utilities for Wharf", "scripts": {}, "engines": { diff --git a/packages/common/package.json b/packages/common/package.json index ab15cdce..8e280c62 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/common", "description": "Common data and functions shared across WharfKit packages", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/common", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/docs/utilities/common-library", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/conformance/package.json b/packages/conformance/package.json index 52c95de2..881a7639 100644 --- a/packages/conformance/package.json +++ b/packages/conformance/package.json @@ -1,6 +1,6 @@ { "name": "@wharfkit/conformance", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "type": "module", "license": "BSD-3-Clause", "engines": { diff --git a/packages/contract/README.md b/packages/contract/README.md index f8f700ee..87d92d3c 100644 --- a/packages/contract/README.md +++ b/packages/contract/README.md @@ -20,11 +20,9 @@ yarn add @wharfkit/contract npm install --save @wharfkit/contract ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/contract/package.json b/packages/contract/package.json index dd3107ec..f3c9f048 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/contract", "description": "ContractKit for Wharf", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/contract", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/docs/contract-kit", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/hyperion/package.json b/packages/hyperion/package.json index 126c1db2..4f27e515 100644 --- a/packages/hyperion/package.json +++ b/packages/hyperion/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/hyperion", "description": "API Client to access Hyperion API endpoints", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/hyperion", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/mock-data/package.json b/packages/mock-data/package.json index c92dec14..ad5bf278 100644 --- a/packages/mock-data/package.json +++ b/packages/mock-data/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/mock-data", "description": "Sample data for usage in tests throughout @wharfkit", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/mock-data", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/msigs/package.json b/packages/msigs/package.json index 281c9ebc..abf47b72 100644 --- a/packages/msigs/package.json +++ b/packages/msigs/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/msigs", "description": "API Client to access Roborovski msigs API endpoints", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/msigs", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/protocol-esr/README.md b/packages/protocol-esr/README.md index 2fc9b987..61c1a766 100644 --- a/packages/protocol-esr/README.md +++ b/packages/protocol-esr/README.md @@ -2,11 +2,9 @@ Abstract functions for use by various ESR-based wallet plugins. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/protocol-esr/package.json b/packages/protocol-esr/package.json index f4253a9f..046adf6f 100644 --- a/packages/protocol-esr/package.json +++ b/packages/protocol-esr/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/protocol-esr", "description": "Abstract methods useful to all ESR-based wallet plugins", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/protocol-esr", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/protocol-scatter/README.md b/packages/protocol-scatter/README.md index c98d9c74..389060d4 100644 --- a/packages/protocol-scatter/README.md +++ b/packages/protocol-scatter/README.md @@ -2,11 +2,15 @@ Abstract functions for use by various Scatter-based wallet plugins. -## Developing +## Browser only -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. +The Scatter protocol runs in a browser. Importing this package is safe in any environment, including Node.js, and the browser dependencies load only when `getScatter` runs. Calling `getScatter`, `handleLogin`, `handleLogout` or `handleSignatureRequest` outside a browser throws. -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +A wallet plugin built on this package can therefore import it directly and let the error surface, rather than guarding the import itself. + +## Contributing + +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/protocol-scatter/package.json b/packages/protocol-scatter/package.json index e92d7c16..0d1da70f 100644 --- a/packages/protocol-scatter/package.json +++ b/packages/protocol-scatter/package.json @@ -1,15 +1,15 @@ { "name": "@wharfkit/protocol-scatter", "description": "Abstract methods useful to all Scatter-based wallet plugins", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/protocol-scatter", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" }, - "main": "lib/protocol-scatter.js", - "module": "lib/protocol-scatter.m.js", - "types": "lib/protocol-scatter.d.ts", + "main": "lib/cjs/index.js", + "module": "lib/esm/index.js", + "types": "lib/types/index.d.ts", "sideEffects": false, "files": [ "lib/*", @@ -18,13 +18,14 @@ "scripts": {}, "dependencies": { "eosjs": "20.0.0", - "scatter-ts": "^0.1.9", + "@wharfkit/antelope": "workspace:*", "@wharfkit/session": "workspace:*" }, "devDependencies": { "@wharfkit/antelope": "workspace:*", "@wharfkit/common": "workspace:*", - "@wharfkit/session": "workspace:*" + "@wharfkit/session": "workspace:*", + "scatter-ts": "^0.1.9" }, "repository": { "type": "git", diff --git a/packages/protocol-scatter/src/create-hash.ts b/packages/protocol-scatter/src/create-hash.ts new file mode 100644 index 00000000..aa5041bc --- /dev/null +++ b/packages/protocol-scatter/src/create-hash.ts @@ -0,0 +1,27 @@ +import {Bytes, Checksum256} from '@wharfkit/antelope' + +// Aliased over the `create-hash` package when scatter-ts is bundled: its one sha256 call site +// otherwise drags in cipher-base and readable-stream, which require the `stream` and `events` +// Node builtins and break bundlers targeting runtimes without them. +export default function createHash(algorithm: string) { + if (algorithm !== 'sha256') { + throw new Error(`create-hash shim: unsupported algorithm '${algorithm}'`) + } + let buffer = '' + const hash = { + update(data: string) { + if (typeof data !== 'string') { + throw new Error('create-hash shim: only string input is supported') + } + buffer += data + return hash + }, + digest(encoding: string) { + if (encoding !== 'hex') { + throw new Error(`create-hash shim: unsupported encoding '${encoding}'`) + } + return Checksum256.hash(Bytes.fromString(buffer, 'utf8')).hexString + }, + } + return hash +} diff --git a/packages/protocol-scatter/src/index.ts b/packages/protocol-scatter/src/index.ts index 61316031..a21de7f8 100644 --- a/packages/protocol-scatter/src/index.ts +++ b/packages/protocol-scatter/src/index.ts @@ -14,10 +14,20 @@ import { WalletPluginSignResponse, } from '@wharfkit/session' -import {Api, JsonRpc} from 'eosjs' -import {ScatterAccount, ScatterEOS, ScatterIdentity, ScatterJS} from 'scatter-ts' +import type {ScatterAccount, ScatterIdentity} from 'scatter-ts' export async function getScatter(context): Promise<{scatter: any; connector: any}> { + if (typeof window === 'undefined') { + throw new Error( + 'The Scatter protocol requires a browser environment and cannot be used in Node.js.' + ) + } + + const [{Api, JsonRpc}, {ScatterEOS, ScatterJS}] = await Promise.all([ + import('eosjs'), + import('scatter-ts'), + ]) + // register scatter plugins ScatterJS.plugins(new ScatterEOS()) diff --git a/packages/protocol-scatter/test/tests/contract.ts b/packages/protocol-scatter/test/tests/contract.ts new file mode 100644 index 00000000..b86b44b3 --- /dev/null +++ b/packages/protocol-scatter/test/tests/contract.ts @@ -0,0 +1,32 @@ +import {assert} from 'chai' + +import * as protocolScatter from '$lib' + +const mockContext = { + appName: 'unittests', + chain: { + id: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906', + name: 'eos', + url: 'https://eos.greymass.com', + }, +} + +suite('browser-only contract', function () { + test('importing the package outside a browser succeeds', function () { + assert.isFunction(protocolScatter.getScatter) + assert.isFunction(protocolScatter.handleLogin) + assert.isFunction(protocolScatter.handleLogout) + assert.isFunction(protocolScatter.handleSignatureRequest) + }) + + test('getScatter outside a browser throws an error the package chooses', async function () { + assert.isUndefined((globalThis as any).window) + try { + await protocolScatter.getScatter(mockContext) + assert.fail('getScatter resolved outside a browser') + } catch (error) { + assert.instanceOf(error, Error) + assert.match(String((error as Error).message), /requires a browser environment/) + } + }) +}) diff --git a/packages/protocol-scatter/test/tests/create-hash.ts b/packages/protocol-scatter/test/tests/create-hash.ts new file mode 100644 index 00000000..313e7d7d --- /dev/null +++ b/packages/protocol-scatter/test/tests/create-hash.ts @@ -0,0 +1,32 @@ +import {assert} from 'chai' + +import createHash from '$lib/create-hash' + +const VECTORS: [string, string][] = [ + ['', 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'], + ['abc', 'ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad'], + ['ünïcødé ✓ 漢字', '6e7be13c677639cb50e8f6fa7b1d007152b2f0b29a4e580e694192ed844017b6'], + ['x'.repeat(5000), 'c59d3c0480cc2d71d8f646e735e92da65450311eec46e81a5db8c7e6e8a92054'], +] + +suite('create-hash shim', function () { + test('matches the published sha256 vectors', function () { + for (const [input, expected] of VECTORS) { + assert.equal(createHash('sha256').update(input).digest('hex'), expected) + } + }) + + test('update chains and accumulates', function () { + const chained = createHash('sha256').update('foo').update('bar').digest('hex') + assert.equal(chained, createHash('sha256').update('foobar').digest('hex')) + }) + + test('rejects the surface it does not implement', function () { + assert.throws(() => createHash('sha512'), /unsupported algorithm/) + assert.throws(() => createHash('sha256').update(new Uint8Array(1) as any), /only string/) + assert.throws( + () => createHash('sha256').update('x').digest('base64'), + /unsupported encoding/ + ) + }) +}) diff --git a/packages/protocol-scatter/test/tsconfig.json b/packages/protocol-scatter/test/tsconfig.json index ddb1e0cc..5e3252bd 100644 --- a/packages/protocol-scatter/test/tsconfig.json +++ b/packages/protocol-scatter/test/tsconfig.json @@ -4,6 +4,7 @@ "baseUrl": "..", "paths": { "$lib": ["src"], + "$lib/*": ["src/*"], "$test": ["test"], "$test/*": ["test/*"] } diff --git a/packages/resources/README.md b/packages/resources/README.md index a9e93308..3582f6a1 100644 --- a/packages/resources/README.md +++ b/packages/resources/README.md @@ -14,11 +14,9 @@ npm install --save @wharfkit/resources TODO -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/resources/package.json b/packages/resources/package.json index 3766ca31..51408eab 100644 --- a/packages/resources/package.json +++ b/packages/resources/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/resources", "description": "Library to assist in Antelope-blockchain resource calculations.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/resources", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/roborovski/package.json b/packages/roborovski/package.json index f0958a9c..2ef406a6 100644 --- a/packages/roborovski/package.json +++ b/packages/roborovski/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/roborovski", "description": "API Client to access Roborovski API endpoints", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/roborovski", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/sealed-messages/README.md b/packages/sealed-messages/README.md index ed4b0642..a8366f22 100644 --- a/packages/sealed-messages/README.md +++ b/packages/sealed-messages/README.md @@ -1,6 +1,6 @@ # Sealed Messages -Use [Shamir's secret sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) with [@wharfkit/antelope](https://github.com/wharfkit/antelope) Public/Private Keys to encrypt and decrypt a message. +Use [Shamir's secret sharing](https://en.wikipedia.org/wiki/Shamir%27s_secret_sharing) with [@wharfkit/antelope](https://github.com/wharfkit/js/tree/master/packages/antelope) Public/Private Keys to encrypt and decrypt a message. In a real world scenario, the sender of the message needs to have a private key and known the public key of the receiver. They then take their message and a nonce to encode the message using the `sealMessage` function. The receiver needs to take the message and decrypt it with their private key, the public key of the sender, as well as the nonce of the message. diff --git a/packages/sealed-messages/package.json b/packages/sealed-messages/package.json index 939027ee..b22c8582 100644 --- a/packages/sealed-messages/package.json +++ b/packages/sealed-messages/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/sealed-messages", "description": "", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/sealed-messages", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/session/README.md b/packages/session/README.md index fa5cfb6d..99cc7717 100644 --- a/packages/session/README.md +++ b/packages/session/README.md @@ -1,7 +1,5 @@ # @wharfkit/session -[![Unit Tests](https://github.com/wharfkit/session/actions/workflows/test.yml/badge.svg)](https://github.com/wharfkit/session/actions/workflows/test.yml?query=branch%3Amaster) - ###### Session Kit - An Antelope blockchain session management toolkit Authenticate and persist sessions using blockchain accounts within JavaScript and TypeScript applications. Each session can be used to interact with smart contracts using the authenticated account. @@ -18,29 +16,21 @@ npm install --save @wharfkit/session ## Usage -Please refer to the documentation on [wharfkit.com](https://dev.wharfkit-website.pages.dev/docs). +Please refer to the documentation on [wharfkit.com](https://wharfkit.com/docs). ## Autodocs -- [API Documentation](https://wharfkit.github.io/session/) -- [Code Coverage Report](https://wharfkit.github.io/session/coverage/) - -## Developing - -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -The [`master`](https://github.com/wharfkit/session) branch will contain production release builds of the Session Kit. The [`dev`](https://github.com/wharfkit/session/tree/dev) branch will be where all development is performed and act as the staging area for the next release. All pull requests should be made against [`dev`](https://github.com/wharfkit/session/tree/dev). - -Clone the repository and run `make` to checkout all dependencies and build the project. The tests can be run using `make test` and can be continuously tested during development with `make test/watch`. +- [API Documentation](https://wharfkit.github.io/js/session/) +- [Code Coverage Report](https://wharfkit.github.io/js/session/coverage/) -See the [Makefile](./Makefile) for other useful targets. +## Contributing -Before submitting a pull request make sure to run `make check` and `make format`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. ## Dependencies -- [@wharfkit/antelope](https://github.com/wharfkit/antelope): Core library to provide Antelope data types. -- [@wharfkit/signing-request](https://github.com/wharfkit/signing-request): Signing request protocol for Antelope blockchains. +- [@wharfkit/antelope](https://github.com/wharfkit/js/tree/master/packages/antelope): Core library to provide Antelope data types. +- [@wharfkit/signing-request](https://github.com/wharfkit/js/tree/master/packages/signing-request): Signing request protocol for Antelope blockchains. - [pako](https://github.com/nodeca/pako): zlib javascript port, used to compress signing requests. --- diff --git a/packages/session/package.json b/packages/session/package.json index 40d59db0..1f1a7f98 100644 --- a/packages/session/package.json +++ b/packages/session/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/session", "description": "Create account-based sessions, perform transactions, and allow users to login using Antelope-based blockchains.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/session", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/docs/session-kit", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/session/src/kit.ts b/packages/session/src/kit.ts index d4cfff0a..696e7ec6 100644 --- a/packages/session/src/kit.ts +++ b/packages/session/src/kit.ts @@ -579,7 +579,7 @@ export class SessionKit { for (const hook of context.hooks.afterLogin) await hook(context) // Save the session to storage if it has a storage instance. - this.persistSession(session, { + await this.persistSession(session, { setAsDefault: options?.setAsDefault, equalityFn: options?.equalityFn, }) @@ -807,7 +807,7 @@ export class SessionKit { if (serializedSession) { const session = this.serializedToSession(serializedSession, options) - this.persistSession(session, { + await this.persistSession(session, { setAsDefault: options?.setAsDefault, equalityFn: options?.equalityFn, }) @@ -816,16 +816,10 @@ export class SessionKit { } } + /** Build a live session for every stored session with a registered wallet plugin. Reads storage without writing to it. */ async restoreAll(): Promise { - const sessions: Session[] = [] const serializedSessions = await this.getSessions() - for (const serializedSession of serializedSessions) { - const session = await this.restore(serializedSession) - if (session) { - sessions.push(session) - } - } - return sessions + return serializedSessions.map((s) => this.serializedToSession(s)) } async persistSession(session: Session, options: PersistOptions = {}) { @@ -845,7 +839,7 @@ export class SessionKit { const equalityFn = options.equalityFn || this.equalityFn if (serialized.default) { - this.storage.write('session', JSON.stringify(serialized)) + await this.storage.write('session', JSON.stringify(serialized)) } // Add the current session to the list of sessions, preventing duplication. @@ -871,7 +865,7 @@ export class SessionKit { return chain || actor || permission }) - this.storage.write('sessions', JSON.stringify(orderedSessions)) + await this.storage.write('sessions', JSON.stringify(orderedSessions)) } /** diff --git a/packages/session/test/tests/kit.ts b/packages/session/test/tests/kit.ts index 07a6e2d9..23e45e7e 100644 --- a/packages/session/test/tests/kit.ts +++ b/packages/session/test/tests/kit.ts @@ -14,6 +14,7 @@ import { Chains, ExplorerDefinition, Logo, + SerializedSession, Session, SessionArgs, SessionKit, @@ -819,6 +820,95 @@ suite('kit', function () { assert.instanceOf(sessions[2], Session) assert.isTrue(sessions[2].actor.equals('mock3')) }) + test('leaves storage unchanged', async function () { + const storage = new MockStorage() + const sessionKit = new SessionKit(mockSessionKitArgs, { + ...mockSessionKitOptions, + storage, + }) + await sessionKit.login({ + chain: mockChainDefinition.id, + permissionLevel: PermissionLevel.from('aaa@interface'), + }) + await sessionKit.login({ + chain: mockChainDefinition.id, + permissionLevel: PermissionLevel.from('zzz@interface'), + setAsDefault: false, + }) + const before = {...storage.data} + const sessions = await sessionKit.restoreAll() + assert.lengthOf(sessions, 2) + assert.deepEqual(storage.data, before) + const stored: SerializedSession[] = JSON.parse(storage.data.sessions) + assert.deepEqual( + stored.map((s) => [String(s.actor), s.default]), + [ + ['aaa', true], + ['zzz', false], + ] + ) + assert.equal(JSON.parse(storage.data.session).actor, 'aaa') + }) + }) + suite('storage that resolves later', function () { + class SlowStorage extends MockStorage { + private delay() { + return new Promise((resolve) => setTimeout(resolve, 2)) + } + async write(key: string, data: string) { + await this.delay() + return super.write(key, data) + } + async read(key: string) { + await this.delay() + return super.read(key) + } + } + test('login resolves after the session is stored', async function () { + const storage = new SlowStorage() + const sessionKit = new SessionKit(mockSessionKitArgs, { + ...mockSessionKitOptions, + storage, + }) + await sessionKit.login({ + permissionLevel: PermissionLevel.from('mock1@interface'), + }) + assert.equal(JSON.parse(String(storage.data.session)).actor, 'mock1') + assert.lengthOf(JSON.parse(String(storage.data.sessions)), 1) + }) + test('consecutive logins keep every session', async function () { + const storage = new SlowStorage() + const sessionKit = new SessionKit(mockSessionKitArgs, { + ...mockSessionKitOptions, + storage, + }) + await sessionKit.login({ + permissionLevel: PermissionLevel.from('mock1@interface'), + }) + await sessionKit.login({ + permissionLevel: PermissionLevel.from('mock2@interface'), + }) + const stored: SerializedSession[] = JSON.parse(String(storage.data.sessions)) + assert.deepEqual( + stored.map((s) => String(s.actor)), + ['mock1', 'mock2'] + ) + }) + test('restore resolves after the session is stored', async function () { + const storage = new SlowStorage() + const sessionKit = new SessionKit(mockSessionKitArgs, { + ...mockSessionKitOptions, + storage, + }) + const {session} = await sessionKit.login({ + permissionLevel: PermissionLevel.from('mock1@interface'), + }) + await sessionKit.login({ + permissionLevel: PermissionLevel.from('mock2@interface'), + }) + await sessionKit.restore(session.serialize()) + assert.equal(JSON.parse(String(storage.data.session)).actor, 'mock1') + }) }) suite('persistSession', function () { test('persists session data', async function () { diff --git a/packages/signing-request/package.json b/packages/signing-request/package.json index bb3a352b..5e5c5a01 100644 --- a/packages/signing-request/package.json +++ b/packages/signing-request/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/signing-request", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "description": "Signing Request (ESR / EEP-7) encoder and decoder for Antelope blockchains", - "homepage": "https://github.com/wharfkit/signing-request", + "homepage": "https://wharfkit.com/docs/utilities/signing-request-library", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/svelte-components/README.md b/packages/svelte-components/README.md index b2e6d5b0..3ad78cd2 100644 --- a/packages/svelte-components/README.md +++ b/packages/svelte-components/README.md @@ -2,7 +2,7 @@ Svelte 5 and Tailwind v4 component library for Antelope applications. -[Component showcase →](https://wharfkit.github.io/svelte-components) +[Component showcase →](https://wharfkit.github.io/js/svelte-components/) ## Requirements @@ -169,34 +169,9 @@ Stated plainly, so nothing here is a surprise: - **No support commitment.** Issues may go unanswered. - **No external contribution process.** There is no `CONTRIBUTING` guide and no review workflow for outside PRs. -## Developing +## Contributing -```bash -bun install -bun run dev # showcase at src/routes -bun run check # svelte-check -bun run lint # prettier + eslint -bun run build # showcase + package -``` - -`make`, `make check` and `make format` forward to the same scripts. - -Everything in `src/lib` is the published library; `src/routes` is the showcase. - -## Releasing - -[release-please](https://github.com/googleapis/release-please) opens a release PR from conventional commits and tags the release when it merges. **Publishing is manual**, from a maintainer's machine: - -```bash -git pull # get the release commit release-please merged -bun install -bun run build -npm publish # not bun publish -``` - -> **Never run `bun publish`** — it ignores the `files` field and would ship `src/`, `.svelte-kit/`, `build/` and `bun.lock`: about 2.9 MB across 506 files. Version 0.6.1 shipped that way. A `prepublishOnly` guard now refuses bun and aborts if the tarball exceeds 400 kB or contains any of those paths, but the guard is a backstop, not a licence to guess. - -Publishing locally means releases carry **no npm provenance** — provenance requires CI's OIDC token and cannot be generated from a laptop. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. ## License diff --git a/packages/svelte-components/package.json b/packages/svelte-components/package.json index acd9e86d..bb96cec5 100644 --- a/packages/svelte-components/package.json +++ b/packages/svelte-components/package.json @@ -1,6 +1,6 @@ { "name": "@wharfkit/svelte-components", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "description": "Svelte 5 and Tailwind v4 component library for Antelope applications", "license": "BSD-3-Clause", "repository": { @@ -8,7 +8,7 @@ "url": "git+https://github.com/wharfkit/js.git", "directory": "packages/svelte-components" }, - "homepage": "https://wharfkit.github.io/svelte-components", + "homepage": "https://wharfkit.github.io/js/svelte-components/", "bugs": { "url": "https://github.com/wharfkit/svelte-components/issues" }, @@ -31,9 +31,9 @@ "**/*.css" ], "svelte": "./dist/index.js", - "engines": { - "node": ">=20.19.0" - }, + "engines": { + "node": ">=20.19.0" + }, "types": "./dist/index.d.ts", "type": "module", "exports": { diff --git a/packages/token/README.md b/packages/token/README.md index 5bf5d1d2..b54db148 100644 --- a/packages/token/README.md +++ b/packages/token/README.md @@ -14,11 +14,9 @@ npm install --save @wharfkit/token TODO -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/token/package.json b/packages/token/package.json index 5e464d2f..a9096610 100644 --- a/packages/token/package.json +++ b/packages/token/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/token", "description": "Library to work with Antelope-blockchain system tokens.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/token", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-autocorrect/README.md b/packages/transact-plugin-autocorrect/README.md index d97cfaa0..fd3234fd 100644 --- a/packages/transact-plugin-autocorrect/README.md +++ b/packages/transact-plugin-autocorrect/README.md @@ -40,11 +40,9 @@ const session = new Session( ) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-autocorrect/package.json b/packages/transact-plugin-autocorrect/package.json index db6c10f9..7897a63b 100644 --- a/packages/transact-plugin-autocorrect/package.json +++ b/packages/transact-plugin-autocorrect/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-autocorrect", "description": "A plugin to correct common issues users experience while performing transactions.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-autocorrect", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-autocorrect", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-cosigner/README.md b/packages/transact-plugin-cosigner/README.md index 77b223aa..11031d6b 100644 --- a/packages/transact-plugin-cosigner/README.md +++ b/packages/transact-plugin-cosigner/README.md @@ -36,11 +36,9 @@ const session = new Session( Any transaction initiated with this session will automatically prepend a `greymassnoop:noop` action and sign it using the permissions specified for the `TransactPluginCosigner`. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-cosigner/package.json b/packages/transact-plugin-cosigner/package.json index 70176656..8118de4b 100644 --- a/packages/transact-plugin-cosigner/package.json +++ b/packages/transact-plugin-cosigner/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-cosigner", "description": "Automatically cosign transactions to assume resource costs using a noop action.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-cosigner", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-cosigner", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-explorerlink/README.md b/packages/transact-plugin-explorerlink/README.md index 9ac47dee..6d7c40aa 100644 --- a/packages/transact-plugin-explorerlink/README.md +++ b/packages/transact-plugin-explorerlink/README.md @@ -29,11 +29,9 @@ const kit = new SessionKit( ) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-explorerlink/package.json b/packages/transact-plugin-explorerlink/package.json index 09607234..deb213e2 100644 --- a/packages/transact-plugin-explorerlink/package.json +++ b/packages/transact-plugin-explorerlink/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-explorerlink", "description": "A transact plugin to display a link to a block explorer after a transaction is broadcast.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-explorerlink", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-explorerlink", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-finality-callback/README.md b/packages/transact-plugin-finality-callback/README.md index 2f2c14af..38fa28a0 100644 --- a/packages/transact-plugin-finality-callback/README.md +++ b/packages/transact-plugin-finality-callback/README.md @@ -26,11 +26,9 @@ new SessionKit(sessionArgs, { ], }) -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-finality-callback/package.json b/packages/transact-plugin-finality-callback/package.json index ba80afa5..35b00bdb 100644 --- a/packages/transact-plugin-finality-callback/package.json +++ b/packages/transact-plugin-finality-callback/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-finality-callback", "description": "A template to create plugins for use with @wharfkit/session transact method.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-finality-callback", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-finality-callback", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-finality-checker/README.md b/packages/transact-plugin-finality-checker/README.md index 4aa2c49a..1f58a92a 100644 --- a/packages/transact-plugin-finality-checker/README.md +++ b/packages/transact-plugin-finality-checker/README.md @@ -20,11 +20,9 @@ new SessionKit(sessionArgs, { ], }) -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-finality-checker/package.json b/packages/transact-plugin-finality-checker/package.json index cc550030..1d37ce3f 100644 --- a/packages/transact-plugin-finality-checker/package.json +++ b/packages/transact-plugin-finality-checker/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-finality-checker", "description": "A template to create plugins for use with @wharfkit/session transact method.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-finality-checker", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-finality-checker", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-mock/README.md b/packages/transact-plugin-mock/README.md index 93ed8931..551c2a75 100644 --- a/packages/transact-plugin-mock/README.md +++ b/packages/transact-plugin-mock/README.md @@ -6,11 +6,9 @@ A mock TransactPlugin to simulate specific event types in testing environments. TODO -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-mock/package.json b/packages/transact-plugin-mock/package.json index 7b2a74cc..6a03ee88 100644 --- a/packages/transact-plugin-mock/package.json +++ b/packages/transact-plugin-mock/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-mock", "description": "A mock TransactPlugin to simulate specific events.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-mock", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-mock", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-msig-propose/README.md b/packages/transact-plugin-msig-propose/README.md index 645d1753..0069fadf 100644 --- a/packages/transact-plugin-msig-propose/README.md +++ b/packages/transact-plugin-msig-propose/README.md @@ -9,11 +9,9 @@ A template to create a `transactPlugin` for use during a `transact` call within - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-msig-propose/package.json b/packages/transact-plugin-msig-propose/package.json index 1f8dd201..3a4caa96 100644 --- a/packages/transact-plugin-msig-propose/package.json +++ b/packages/transact-plugin-msig-propose/package.json @@ -1,9 +1,8 @@ { "name": "@wharfkit/transact-plugin-msig-propose", "description": "A template to create plugins for use with @wharfkit/session transact method.", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "private": true, - "homepage": "https://github.com/wharfkit/transact-plugin-msig-propose", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/transact-plugin-resource-provider/README.md b/packages/transact-plugin-resource-provider/README.md index 640b27a8..5761786b 100644 --- a/packages/transact-plugin-resource-provider/README.md +++ b/packages/transact-plugin-resource-provider/README.md @@ -88,11 +88,9 @@ interface ResourceProviderOptions { } ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/transact-plugin-resource-provider/package.json b/packages/transact-plugin-resource-provider/package.json index f99eccb7..a22a19ec 100644 --- a/packages/transact-plugin-resource-provider/package.json +++ b/packages/transact-plugin-resource-provider/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/transact-plugin-resource-provider", "description": "Plugin to automatically provide network resources for transactions using the Resource Provider implementation standard.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/transact-plugin-resource-provider", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/transact-plugin-resource-provider", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-anchor/README.md b/packages/wallet-plugin-anchor/README.md index 346bbe8c..e159aabd 100644 --- a/packages/wallet-plugin-anchor/README.md +++ b/packages/wallet-plugin-anchor/README.md @@ -34,11 +34,9 @@ const kit = new SessionKit({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-anchor/package.json b/packages/wallet-plugin-anchor/package.json index aaf9c5d7..f1f73487 100644 --- a/packages/wallet-plugin-anchor/package.json +++ b/packages/wallet-plugin-anchor/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-anchor", "description": "An Anchor plugin for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-anchor", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-anchor", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-cleos/README.md b/packages/wallet-plugin-cleos/README.md index a64ec59a..398e0c6b 100644 --- a/packages/wallet-plugin-cleos/README.md +++ b/packages/wallet-plugin-cleos/README.md @@ -9,11 +9,9 @@ A template to create a `WalletPlugin` for use within the `@wharfkit/session` lib - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-cleos/package.json b/packages/wallet-plugin-cleos/package.json index 0908c011..a42ae6d5 100644 --- a/packages/wallet-plugin-cleos/package.json +++ b/packages/wallet-plugin-cleos/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-cleos", "description": "A template to create wallet plugins for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-cleos", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-cleos", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-cloudwallet/README.md b/packages/wallet-plugin-cloudwallet/README.md index a2da52a6..b57aec1c 100644 --- a/packages/wallet-plugin-cloudwallet/README.md +++ b/packages/wallet-plugin-cloudwallet/README.md @@ -39,11 +39,9 @@ const kit = new SessionKit({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-cloudwallet/package.json b/packages/wallet-plugin-cloudwallet/package.json index 9e871541..3795aaf3 100644 --- a/packages/wallet-plugin-cloudwallet/package.json +++ b/packages/wallet-plugin-cloudwallet/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-cloudwallet", "description": "A WalletPlugin for My Cloud Wallet for use within the @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-cloudwallet", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-cloudwallet", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-gatewallet/README.md b/packages/wallet-plugin-gatewallet/README.md index cd6d673c..b71704bf 100644 --- a/packages/wallet-plugin-gatewallet/README.md +++ b/packages/wallet-plugin-gatewallet/README.md @@ -9,11 +9,9 @@ A template to create a `WalletPlugin` for use within the `@wharfkit/session` lib - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-gatewallet/package.json b/packages/wallet-plugin-gatewallet/package.json index 1c8274c6..0f893013 100644 --- a/packages/wallet-plugin-gatewallet/package.json +++ b/packages/wallet-plugin-gatewallet/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-gatewallet", "description": "A template to create wallet plugins for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-template", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-gatewallet", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-gatewallet/src/index.ts b/packages/wallet-plugin-gatewallet/src/index.ts index b254980a..01b07b11 100644 --- a/packages/wallet-plugin-gatewallet/src/index.ts +++ b/packages/wallet-plugin-gatewallet/src/index.ts @@ -8,6 +8,7 @@ import { WalletPluginConfig, WalletPluginMetadata, } from '@wharfkit/session' +import {handleLogin, handleLogout, handleSignatureRequest} from '@wharfkit/protocol-scatter' export class WalletPluginGateWallet extends AbstractWalletPlugin implements WalletPlugin { id = 'gatewallet' @@ -28,18 +29,6 @@ export class WalletPluginGateWallet extends AbstractWalletPlugin implements Wall super() } - private async loadScatterProtocol() { - let protocolScatter - if (typeof window !== 'undefined') { - protocolScatter = await import('@wharfkit/protocol-scatter') - } - - if (!protocolScatter) { - throw new Error('Scatter protocol is not available in this environment') - } - - return protocolScatter - } /** * The metadata for the wallet plugin to be displayed in the user interface. */ @@ -58,8 +47,7 @@ export class WalletPluginGateWallet extends AbstractWalletPlugin implements Wall * @returns Promise */ async login(context: LoginContext) { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogin(context) + return handleLogin(context) } /** @@ -70,8 +58,7 @@ export class WalletPluginGateWallet extends AbstractWalletPlugin implements Wall */ async logout(context: LogoutContext): Promise { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogout(context) + return handleLogout(context) } /** @@ -82,8 +69,6 @@ export class WalletPluginGateWallet extends AbstractWalletPlugin implements Wall * @returns Promise */ async sign(resolved: ResolvedSigningRequest, context: TransactContext) { - const protocolScatter = await this.loadScatterProtocol() - - return protocolScatter.handleSignatureRequest(resolved, context) + return handleSignatureRequest(resolved, context) } } diff --git a/packages/wallet-plugin-imtoken/README.md b/packages/wallet-plugin-imtoken/README.md index 5293ac1a..efd9d252 100644 --- a/packages/wallet-plugin-imtoken/README.md +++ b/packages/wallet-plugin-imtoken/README.md @@ -17,11 +17,9 @@ const kit = new SessionKit({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-imtoken/package.json b/packages/wallet-plugin-imtoken/package.json index 38d9d6af..12cb0cc0 100644 --- a/packages/wallet-plugin-imtoken/package.json +++ b/packages/wallet-plugin-imtoken/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-imtoken", "description": "A template to create wallet plugins for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-imtoken", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-imtoken", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-imtoken/src/index.ts b/packages/wallet-plugin-imtoken/src/index.ts index 0b172bb7..690976f7 100644 --- a/packages/wallet-plugin-imtoken/src/index.ts +++ b/packages/wallet-plugin-imtoken/src/index.ts @@ -8,6 +8,7 @@ import { WalletPluginConfig, WalletPluginMetadata, } from '@wharfkit/session' +import {handleLogin, handleLogout, handleSignatureRequest} from '@wharfkit/protocol-scatter' export class WalletPluginIMToken extends AbstractWalletPlugin implements WalletPlugin { id = 'imtoken' @@ -29,19 +30,6 @@ export class WalletPluginIMToken extends AbstractWalletPlugin implements WalletP super() } - private async loadScatterProtocol() { - let protocolScatter - if (typeof window !== 'undefined') { - protocolScatter = await import('@wharfkit/protocol-scatter') - } - - if (!protocolScatter) { - throw new Error('Scatter protocol is not available in this environment') - } - - return protocolScatter - } - /** * The metadata for the wallet plugin to be displayed in the user interface. */ @@ -60,8 +48,7 @@ export class WalletPluginIMToken extends AbstractWalletPlugin implements WalletP * @returns Promise */ async login(context: LoginContext) { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogin(context) + return handleLogin(context) } /** @@ -72,8 +59,7 @@ export class WalletPluginIMToken extends AbstractWalletPlugin implements WalletP */ async logout(context: LogoutContext): Promise { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogout(context) + return handleLogout(context) } /** @@ -84,8 +70,6 @@ export class WalletPluginIMToken extends AbstractWalletPlugin implements WalletP * @returns Promise */ async sign(resolved: ResolvedSigningRequest, context: TransactContext) { - const protocolScatter = await this.loadScatterProtocol() - - return protocolScatter.handleSignatureRequest(resolved, context) + return handleSignatureRequest(resolved, context) } } diff --git a/packages/wallet-plugin-metamask/README.md b/packages/wallet-plugin-metamask/README.md index fcab6464..9f39f800 100644 --- a/packages/wallet-plugin-metamask/README.md +++ b/packages/wallet-plugin-metamask/README.md @@ -9,11 +9,9 @@ A template to create a `WalletPlugin` for use within the `@wharfkit/session` lib - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-metamask/package.json b/packages/wallet-plugin-metamask/package.json index 23e5f245..017d7991 100644 --- a/packages/wallet-plugin-metamask/package.json +++ b/packages/wallet-plugin-metamask/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-metamask", "description": "A MetaMask plugin for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-metamask", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-metamask", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-mimic/README.md b/packages/wallet-plugin-mimic/README.md index cd6d673c..b71704bf 100644 --- a/packages/wallet-plugin-mimic/README.md +++ b/packages/wallet-plugin-mimic/README.md @@ -9,11 +9,9 @@ A template to create a `WalletPlugin` for use within the `@wharfkit/session` lib - Publish it on Github or npmjs.com - Include it in your project and use it. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-mimic/package.json b/packages/wallet-plugin-mimic/package.json index 1c1c9513..866ebee7 100644 --- a/packages/wallet-plugin-mimic/package.json +++ b/packages/wallet-plugin-mimic/package.json @@ -1,9 +1,8 @@ { "name": "@wharfkit/wallet-plugin-mimic", "description": "A template to create wallet plugins for use with @wharfkit/session.", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "private": true, - "homepage": "https://github.com/wharfkit/wallet-plugin-mimic", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-mock/README.md b/packages/wallet-plugin-mock/README.md index 27f85171..35305ea0 100644 --- a/packages/wallet-plugin-mock/README.md +++ b/packages/wallet-plugin-mock/README.md @@ -2,11 +2,9 @@ A wallet plugin designed for testing. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-mock/package.json b/packages/wallet-plugin-mock/package.json index 6e96b023..41193cbb 100644 --- a/packages/wallet-plugin-mock/package.json +++ b/packages/wallet-plugin-mock/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-mock", "description": "A mock wallet for developers to use while building web applications.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-mock", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-mock", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-paycash/README.md b/packages/wallet-plugin-paycash/README.md index ddc4cb65..a72a77ea 100644 --- a/packages/wallet-plugin-paycash/README.md +++ b/packages/wallet-plugin-paycash/README.md @@ -134,7 +134,7 @@ For support and questions: ## Related -- [WharfKit Session Kit](https://github.com/wharfkit/session) +- [WharfKit Session Kit](https://github.com/wharfkit/js/tree/master/packages/session) - [PayCash Wallet](https://paycash.app) - [Antelope Blockchain](https://antelope.io) diff --git a/packages/wallet-plugin-paycash/package.json b/packages/wallet-plugin-paycash/package.json index b1461130..823c051e 100644 --- a/packages/wallet-plugin-paycash/package.json +++ b/packages/wallet-plugin-paycash/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-paycash", "description": "A Wharf wallet plugin for the PayCash wallet", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-paycash", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-paycash", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-privatekey/README.md b/packages/wallet-plugin-privatekey/README.md index 0744196f..d3f9d71f 100644 --- a/packages/wallet-plugin-privatekey/README.md +++ b/packages/wallet-plugin-privatekey/README.md @@ -26,11 +26,9 @@ const result = session.transact({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-privatekey/package.json b/packages/wallet-plugin-privatekey/package.json index 88134fb1..1b6b9c25 100644 --- a/packages/wallet-plugin-privatekey/package.json +++ b/packages/wallet-plugin-privatekey/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-privatekey", "description": "A template to create wallet plugins for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-privatekey", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-privatekey", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-privatekey/test/tests/common.ts b/packages/wallet-plugin-privatekey/test/tests/common.ts index 0b5d0db1..8a65f5c5 100644 --- a/packages/wallet-plugin-privatekey/test/tests/common.ts +++ b/packages/wallet-plugin-privatekey/test/tests/common.ts @@ -24,6 +24,7 @@ const mockSessionKitArgs = { const mockSessionKitOptions = { fetch: mockFetch, // Required for unit tests + storage: new MockStorage(), } suite('wallet plugin', function () { diff --git a/packages/wallet-plugin-scatter/README.md b/packages/wallet-plugin-scatter/README.md index 46a9d54f..62d59902 100644 --- a/packages/wallet-plugin-scatter/README.md +++ b/packages/wallet-plugin-scatter/README.md @@ -17,11 +17,9 @@ const kit = new SessionKit({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-scatter/package.json b/packages/wallet-plugin-scatter/package.json index eba74d7c..295eb239 100644 --- a/packages/wallet-plugin-scatter/package.json +++ b/packages/wallet-plugin-scatter/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-scatter", "description": "A WalletPlugin for the Scatter wallet for use within the @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-scatter", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-scatter", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-scatter/src/index.ts b/packages/wallet-plugin-scatter/src/index.ts index 667ebc3b..6084ceec 100644 --- a/packages/wallet-plugin-scatter/src/index.ts +++ b/packages/wallet-plugin-scatter/src/index.ts @@ -10,6 +10,7 @@ import { WalletPluginMetadata, WalletPluginSignResponse, } from '@wharfkit/session' +import {handleLogin, handleLogout, handleSignatureRequest} from '@wharfkit/protocol-scatter' export class WalletPluginScatter extends AbstractWalletPlugin implements WalletPlugin { id = 'scatter' @@ -42,19 +43,6 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP download: 'https://github.com/GetScatter/ScatterDesktop/releases', }) - private async loadScatterProtocol() { - let protocolScatter - if (typeof window !== 'undefined') { - protocolScatter = await import('@wharfkit/protocol-scatter') - } - - if (!protocolScatter) { - throw new Error('Scatter protocol is not available in this environment') - } - - return protocolScatter - } - /** * Performs the wallet logic required to login and return the chain and permission level to use. * @@ -62,8 +50,7 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP * @returns Promise */ async login(context: LoginContext): Promise { - const scatterProtocol = await this.loadScatterProtocol() - return scatterProtocol.handleLogin(context) + return handleLogin(context) } /** @@ -74,8 +61,7 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP */ async logout(context: LogoutContext): Promise { - const scatterProtocol = await this.loadScatterProtocol() - return scatterProtocol.handleLogout(context) + return handleLogout(context) } /** @@ -89,7 +75,6 @@ export class WalletPluginScatter extends AbstractWalletPlugin implements WalletP resolved: ResolvedSigningRequest, context: TransactContext ): Promise { - const scatterProtocol = await this.loadScatterProtocol() - return scatterProtocol.handleSignatureRequest(resolved, context) + return handleSignatureRequest(resolved, context) } } diff --git a/packages/wallet-plugin-tokenpocket/README.md b/packages/wallet-plugin-tokenpocket/README.md index 5f5dda7c..4d072cb7 100644 --- a/packages/wallet-plugin-tokenpocket/README.md +++ b/packages/wallet-plugin-tokenpocket/README.md @@ -17,11 +17,9 @@ const kit = new SessionKit({ }) ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make lint`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/wallet-plugin-tokenpocket/package.json b/packages/wallet-plugin-tokenpocket/package.json index 8e64dbeb..0b6ca150 100644 --- a/packages/wallet-plugin-tokenpocket/package.json +++ b/packages/wallet-plugin-tokenpocket/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-tokenpocket", "description": "A WalletPlugin for the TokenPocket wallet for use within the @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-tokenpocket", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-tokenpocket", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/wallet-plugin-tokenpocket/src/index.ts b/packages/wallet-plugin-tokenpocket/src/index.ts index f8d64274..5610ce67 100644 --- a/packages/wallet-plugin-tokenpocket/src/index.ts +++ b/packages/wallet-plugin-tokenpocket/src/index.ts @@ -8,6 +8,7 @@ import { WalletPluginConfig, WalletPluginMetadata, } from '@wharfkit/session' +import {handleLogin, handleLogout, handleSignatureRequest} from '@wharfkit/protocol-scatter' export class WalletPluginTokenPocket extends AbstractWalletPlugin implements WalletPlugin { id = 'tokenpocket' @@ -29,19 +30,6 @@ export class WalletPluginTokenPocket extends AbstractWalletPlugin implements Wal super() } - private async loadScatterProtocol() { - let protocolScatter - if (typeof window !== 'undefined') { - protocolScatter = await import('@wharfkit/protocol-scatter') - } - - if (!protocolScatter) { - throw new Error('Scatter protocol is not available in this environment') - } - - return protocolScatter - } - /** * The metadata for the wallet plugin to be displayed in the user interface. */ @@ -62,8 +50,7 @@ export class WalletPluginTokenPocket extends AbstractWalletPlugin implements Wal * @returns Promise */ async login(context: LoginContext) { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogin(context) + return handleLogin(context) } /** @@ -74,8 +61,7 @@ export class WalletPluginTokenPocket extends AbstractWalletPlugin implements Wal */ async logout(context: LogoutContext): Promise { - const protocolScatter = await this.loadScatterProtocol() - return protocolScatter.handleLogout(context) + return handleLogout(context) } /** @@ -86,8 +72,6 @@ export class WalletPluginTokenPocket extends AbstractWalletPlugin implements Wal * @returns Promise */ async sign(resolved: ResolvedSigningRequest, context: TransactContext) { - const protocolScatter = await this.loadScatterProtocol() - - return protocolScatter.handleSignatureRequest(resolved, context) + return handleSignatureRequest(resolved, context) } } diff --git a/packages/wallet-plugin-web-authenticator/package.json b/packages/wallet-plugin-web-authenticator/package.json index 93edfe4c..6793393f 100644 --- a/packages/wallet-plugin-web-authenticator/package.json +++ b/packages/wallet-plugin-web-authenticator/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/wallet-plugin-web-authenticator", "description": "A Web Authenticator wallet plugin for use with @wharfkit/session.", - "version": "4.0.0-rc6", - "homepage": "https://github.com/wharfkit/wallet-plugin-web-authenticator", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com/plugins/wallet-plugin-web-authenticator", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/packages/web-renderer/package.json b/packages/web-renderer/package.json index 56cce7fc..8a373c52 100644 --- a/packages/web-renderer/package.json +++ b/packages/web-renderer/package.json @@ -1,6 +1,6 @@ { "name": "@wharfkit/web-renderer", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", "description": "", "license": "BSD-3-Clause", "engines": { @@ -30,7 +30,7 @@ "bugs": { "url": "https://github.com/wharfkit/web-renderer/issues" }, - "homepage": "https://github.com/wharfkit/web-renderer", + "homepage": "https://wharfkit.com/docs/session-kit/web-renderer", "files": [ "lib/*", "src/*" diff --git a/packages/web-ui/README.md b/packages/web-ui/README.md index 19f5a80f..15caa5df 100644 --- a/packages/web-ui/README.md +++ b/packages/web-ui/README.md @@ -2,7 +2,7 @@ ###### Web UI - An embedded UI renderer for WharfKit SessionKit -A modern, Shadow DOM-based user interface for [SessionKit](https://github.com/wharfkit/session). It renders the login, transact, and prompt flows as a modal layer inside your web application. The default palette is neutral, so the modal sits cleanly on any host site, and every color can be themed to match your brand. Successor to [`@wharfkit/web-renderer`](https://github.com/wharfkit/web-renderer). +A modern, Shadow DOM-based user interface for [SessionKit](https://github.com/wharfkit/js/tree/master/packages/session). It renders the login, transact, and prompt flows as a modal layer inside your web application. The default palette is neutral, so the modal sits cleanly on any host site, and every color can be themed to match your brand. Successor to [`@wharfkit/web-renderer`](https://github.com/wharfkit/js/tree/master/packages/web-renderer). ## Installation @@ -117,21 +117,9 @@ This suits projects whose theming already lives in CSS, such as design tokens th WebUI ships with translations for English (`en`), Korean (`ko`), Simplified and Traditional Chinese (`zh-Hans`, `zh-Hant`), and Turkish (`tr`). The locale can be set at construction time (`locale` option) or changed at runtime with `ui.setLocale()`. Wallet plugin translations can be registered with `ui.addTranslations()`. -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/) and [Bun](https://bun.sh) installed. - -Clone the repository and run `make` to install dependencies and build the library. `make dev` starts a Vite dev server with a sample host app (`dev/`) exercising every view against both real wallet plugins and mock flows. - -``` -make # install deps + build lib/ -make dev # dev server with HMR -make test # unit tests (Vitest) -make check # lint (Biome + Prettier) -make format # auto-fix formatting -``` - -Before submitting a pull request make sure to run `make check` and `make format`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. ## Reporting Issues @@ -141,8 +129,8 @@ To do this, fork this repository and create your own branch. In this new branch, ## Dependencies -- [@wharfkit/session](https://github.com/wharfkit/session): SessionKit, which this package renders a UI for (peer dependency). -- [@wharfkit/common](https://github.com/wharfkit/common): Shared types and utilities (peer dependency). +- [@wharfkit/session](https://github.com/wharfkit/js/tree/master/packages/session): SessionKit, which this package renders a UI for (peer dependency). +- [@wharfkit/common](https://github.com/wharfkit/js/tree/master/packages/common): Shared types and utilities (peer dependency). - [Svelte 5](https://svelte.dev): Compiled away at build time; your app takes on no runtime framework dependency. --- diff --git a/packages/web-ui/package.json b/packages/web-ui/package.json index 61060c05..598ebce6 100644 --- a/packages/web-ui/package.json +++ b/packages/web-ui/package.json @@ -1,6 +1,7 @@ { "name": "@wharfkit/web-ui", - "version": "4.0.0-rc6", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "description": "Modern embedded UI renderer for WharfKit SessionKit", "type": "module", "license": "BSD-3-Clause", diff --git a/packages/webauthn/README.md b/packages/webauthn/README.md index cb007bbe..497f2e0d 100644 --- a/packages/webauthn/README.md +++ b/packages/webauthn/README.md @@ -1,6 +1,6 @@ # eosio-webauthn -Helpers for creating WebAuthn PublicKeys and Signatures using [@wharfkit/antelope](https://github.com/wharfkit/antelope). +Helpers for creating WebAuthn PublicKeys and Signatures using [@wharfkit/antelope](https://github.com/wharfkit/js/tree/master/packages/antelope). ## Installation @@ -76,11 +76,9 @@ const signedTransaction = SignedTransaction.from({...transaction, signatures: [s ``` -## Developing +## Contributing -You need [Make](https://www.gnu.org/software/make/), [node.js](https://nodejs.org/en/) and [yarn](https://classic.yarnpkg.com/en/docs/install) installed. - -Clone the repository and run `make` to checkout all dependencies and build the project. See the [Makefile](./Makefile) for other useful targets. Before submitting a pull request make sure to run `make format`. +This package is developed in the [wharfkit/js](https://github.com/wharfkit/js) monorepo. See its README for how to build and test. --- diff --git a/packages/webauthn/package.json b/packages/webauthn/package.json index 89e484b2..9f4228fd 100644 --- a/packages/webauthn/package.json +++ b/packages/webauthn/package.json @@ -1,8 +1,8 @@ { "name": "@wharfkit/webauthn", "description": "WebAuthn helpers for antelope core", - "version": "4.0.0-rc6", - "homepage": "https://github.com/greymass/eosio-webauthn", + "version": "4.0.0-rc7", + "homepage": "https://wharfkit.com", "license": "BSD-3-Clause", "engines": { "node": ">=20.19.0" diff --git a/rolldown.base.mjs b/rolldown.base.mjs index 7cf1e34b..c6923ead 100644 --- a/rolldown.base.mjs +++ b/rolldown.base.mjs @@ -70,6 +70,7 @@ function closeDtsExports() { * @param {boolean} [o.replaceVersion] substitute __ver with pkg.version * @param {boolean} [o.browser] platform browser * @param {boolean} [o.bundleDeps] resolve node_modules; external is the declared list only + * @param {object} [o.alias] resolve.alias entries applied to every build * @param {string[]} [o.cjsExternal] override the CJS external list * @param {boolean} [o.dir] emit to output.dir rather than output.file * @param {boolean} [o.types] emit declarations (default true) @@ -118,8 +119,12 @@ export function libraryConfig(dir, o = {}) { tsconfig: path.join(dir, 'tsconfig.json'), transform: define ? {...target, define} : target, ...(o.browser ? {platform: 'browser'} : {}), + ...(o.alias ? {resolve: {alias: o.alias}} : {}), } - const place = o.dir ? (f) => ({dir: outDir(f)}) : (f) => ({file: out(f)}) + // stable chunk names so a rebuild overwrites rather than leaving the old hash behind to publish + const place = o.dir + ? (f) => ({dir: outDir(f), chunkFileNames: '[name].js'}) + : (f) => ({file: out(f)}) const configs = [ { @@ -153,7 +158,7 @@ export function libraryConfig(dir, o = {}) { for (const extra of o.extraOutputs ?? []) { configs.push({ ...shared, - ...(extra.alias ? {resolve: {alias: extra.alias}} : {}), + ...(extra.alias ? {resolve: {alias: {...o.alias, ...extra.alias}}} : {}), output: { banner, file: out(extra.file), diff --git a/rolldown.config.mjs b/rolldown.config.mjs index 8494501c..56308949 100644 --- a/rolldown.config.mjs +++ b/rolldown.config.mjs @@ -30,7 +30,14 @@ const MEMBERS = { ], }, 'protocol-esr': {stripInternal: true, replaceVersion: true}, - 'protocol-scatter': {browser: true, bundleDeps: true}, + 'protocol-scatter': { + browser: true, + bundleDeps: true, + dir: true, + alias: { + 'create-hash': path.join(root, 'packages/protocol-scatter/src/create-hash.ts'), + }, + }, 'wallet-plugin-anchor': {stripInternal: true, replaceVersion: true}, 'wallet-plugin-scatter': {browser: true, bundleDeps: true, dir: true}, 'wallet-plugin-tokenpocket': {browser: true, bundleDeps: true, dir: true}, diff --git a/scripts/check-deps.ts b/scripts/check-deps.ts index e8bf25a8..5a85475c 100644 --- a/scripts/check-deps.ts +++ b/scripts/check-deps.ts @@ -28,6 +28,7 @@ const ALLOW_UNDECLARED: Record = { '@wharfkit/web-renderer:svelte': 'framework supplied by the consuming application', '@wharfkit/web-renderer:@wharfkit/antelope': 'type-only import in src/lib/translations.ts', '@wharfkit/web-renderer:sveltekit-i18n': 'not external to rollup, so it is bundled into lib', + '@wharfkit/protocol-scatter:scatter-ts': 'not external to rolldown, so it is bundled into lib', '@wharfkit/web-ui:svelte': 'framework supplied by the consuming application', '@wharfkit/web-ui:wuchale': 'compiled away by the wuchale vite plugin at build time', '@wharfkit/svelte-components:svelte': 'framework supplied by the consuming application', diff --git a/scripts/pages.ts b/scripts/pages.ts new file mode 100644 index 00000000..38df80c9 --- /dev/null +++ b/scripts/pages.ts @@ -0,0 +1,82 @@ +#!/usr/bin/env bun +// Assembles every member's API docs, coverage report, and browser test page +// into build/pages// for GitHub Pages. +import {execFileSync} from 'node:child_process' +import { + cpSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + writeFileSync, +} from 'node:fs' +import {join} from 'node:path' + +const ROOT = join(import.meta.dir, '..') +const OUT = join(ROOT, 'build', 'pages') +const BASE = '/js' + +function run(cmd: string, args: string[], opts: {cwd?: string; env?: Record} = {}) { + execFileSync(cmd, args, { + cwd: opts.cwd ?? ROOT, + stdio: 'inherit', + env: {...process.env, ...opts.env}, + }) +} + +run('bun', ['scripts/release.ts', 'build']) +rmSync(OUT, {recursive: true, force: true}) +mkdirSync(OUT, {recursive: true}) + +const published: {name: string; description: string; coverage: boolean; tests: boolean}[] = [] +for (const name of readdirSync(join(ROOT, 'packages')).sort()) { + const dir = join(ROOT, 'packages', name) + const manifest = join(dir, 'package.json') + if (!existsSync(manifest)) continue + const json = JSON.parse(readFileSync(manifest, 'utf8')) + const makefile = existsSync(join(dir, 'Makefile')) + ? readFileSync(join(dir, 'Makefile'), 'utf8') + : '' + let source: string + if (makefile.includes('common.mk')) { + run('make', ['-C', dir, 'build/pages']) + source = join(dir, 'build', 'pages') + } else if (name === 'svelte-components') { + run('bun', ['run', 'build'], {cwd: dir, env: {BASE_PATH: `${BASE}/${name}`}}) + source = join(dir, 'build') + } else { + continue + } + cpSync(source, join(OUT, name), {recursive: true}) + published.push({ + name, + description: json.description ?? '', + coverage: existsSync(join(OUT, name, 'coverage')), + tests: existsSync(join(OUT, name, 'tests.html')), + }) +} + +const rows = published + .map( + ({name, description, coverage, tests}) => + `${name}${description}` + + [ + coverage ? `coverage` : '', + tests ? `browser tests` : '', + ] + .filter(Boolean) + .join(' · ') + + `` + ) + .join('\n') +writeFileSync( + join(OUT, 'index.html'), + `WharfKit JS` + + `` + + `

WharfKit JS

API documentation, coverage reports, and browser test suites for every package in ` + + `wharfkit/js. Consumer documentation is on wharfkit.com.

` + + `${rows}
\n` +) +console.log(`pages assembled for ${published.length} member(s) in ${OUT}`) diff --git a/scripts/release.ts b/scripts/release.ts index b0001187..a2beb564 100644 --- a/scripts/release.ts +++ b/scripts/release.ts @@ -419,8 +419,11 @@ function main() { case 'verify': verify({install: !flags.has('--no-install')}) break + case 'build': + for (const member of topological(members())) runScript(member, 'build') + break default: - fail('usage: release.ts [...]') + fail('usage: release.ts [...]') } }