Compare commits

...
143 Commits
Author SHA1 Message Date
github-actions[bot] a27a5ccf3c [CI Skip] release/stable 6.4.1
skip-checks: true
2022-12-03 07:54:59 +00:00
Jaco 8e47fb20a1 6.4.1 (#445) 2022-12-03 09:47:40 +02:00
github-actions[bot] a014aea1b4 [CI Skip] bump/beta 6.3.2-37-x
skip-checks: true
2022-12-02 11:51:59 +00:00
Jaco 18cb000218 Apply /*#__PURE__*/ annotations (#444) 2022-12-02 13:46:17 +02:00
github-actions[bot] 0cb6566bab [CI Skip] bump/beta 6.3.2-36-x
skip-checks: true
2022-11-27 14:41:05 +00:00
Jaco 9ae9de4ac9 Bump util (#443) 2022-11-27 16:34:07 +02:00
github-actions[bot] 04ac7dd00d [CI Skip] bump/beta 6.3.2-35-x
skip-checks: true
2022-11-20 09:38:34 +00:00
Jaco 5a4a2fde71 Bump TS (#442) 2022-11-20 11:33:02 +02:00
github-actions[bot] 71237d7df7 [CI Skip] bump/beta 6.3.2-34-x
skip-checks: true
2022-11-13 09:39:03 +00:00
Jaco 424b3fe653 Bump util (#441) 2022-11-13 11:33:24 +02:00
github-actions[bot] 7b56956fdd [CI Skip] bump/beta 6.3.2-33-x
skip-checks: true
2022-11-05 15:42:58 +00:00
Jaco a991236fa3 Bump dev deps (#440) 2022-11-05 17:36:20 +02:00
github-actions[bot] 168e862e3a [CI Skip] bump/beta 6.3.2-32-x
skip-checks: true
2022-10-30 08:16:55 +00:00
Jaco 1dfc6660ba Bump dev (#439) 2022-10-30 10:11:24 +02:00
github-actions[bot] 21b47e7924 [CI Skip] bump/beta 6.3.2-31-x
skip-checks: true
2022-10-22 07:26:39 +00:00
Jaco d6ce0d1bf8 Bump dev (#438) 2022-10-22 10:21:29 +03:00
github-actions[bot] c5cd242033 [CI Skip] bump/beta 6.3.2-30-x
skip-checks: true
2022-10-19 05:16:34 +00:00
Jaco 73d21079a4 Bump deps (#437) 2022-10-19 08:11:15 +03:00
github-actions[bot] e0edfa3cec [CI Skip] bump/beta 6.3.2-29-x
skip-checks: true
2022-10-15 10:22:55 +00:00
Jaco 674b3c7c12 Bump util (#436) 2022-10-15 13:16:36 +03:00
github-actions[bot] 16ecd2b8c2 [CI Skip] bump/beta 6.3.2-28-x
skip-checks: true
2022-10-14 07:25:35 +00:00
Jaco ee575c2589 Bump dev (#435) 2022-10-14 10:19:10 +03:00
github-actions[bot] 57c6b454f6 [CI Skip] bump/beta 6.3.2-27-x
skip-checks: true
2022-10-07 05:08:03 +00:00
Jaco e66f1830b0 Bump util (#434) 2022-10-07 08:01:50 +03:00
github-actions[bot] ea93565e11 [CI Skip] bump/beta 6.3.2-26-x
skip-checks: true
2022-10-06 07:38:57 +00:00
Jaco 8eabfef781 Bump deps (#433) 2022-10-06 10:32:39 +03:00
github-actions[bot] 9bb9e8d241 [CI Skip] bump/beta 6.3.2-25-x
skip-checks: true
2022-09-30 06:08:42 +00:00
Jaco 6da8edae2c Bump deps (#432) 2022-09-30 09:04:02 +03:00
github-actions[bot] eae8054c0e [CI Skip] bump/beta 6.3.2-24-x
skip-checks: true
2022-09-28 10:50:38 +00:00
Jaco fd7f9caca9 Bump TS (#431) 2022-09-28 13:45:00 +03:00
github-actions[bot] e12cffa958 [CI Skip] bump/beta 6.3.2-23-x
skip-checks: true
2022-09-24 06:11:40 +00:00
Jaco 7519e48482 Bump deps (#430) 2022-09-24 09:07:11 +03:00
github-actions[bot] 24780d5723 [CI Skip] bump/beta 6.3.2-22-x
skip-checks: true
2022-09-22 07:16:24 +00:00
Jaco 06d74925ec Bump deps (#429) 2022-09-22 10:11:29 +03:00
github-actions[bot] 6144148bc3 [CI Skip] bump/beta 6.3.2-21-x
skip-checks: true
2022-09-17 07:21:23 +00:00
Jaco 39d8fd81e0 Bump common (#428)
* Bump common

* Bump deps
2022-09-17 10:15:51 +03:00
github-actions[bot] a90ccb9718 [CI Skip] bump/beta 6.3.2-20-x
skip-checks: true
2022-09-12 08:39:09 +00:00
Jaco 2a28c02965 Bump deps (#427) 2022-09-12 11:34:25 +03:00
github-actions[bot] b032b2baf0 [CI Skip] bump/beta 6.3.2-19-x
skip-checks: true
2022-09-09 06:11:02 +00:00
Jaco e111622377 Bump deps (#426) 2022-09-09 09:05:29 +03:00
github-actions[bot] 21a5e14552 [CI Skip] bump/beta 6.3.2-18-x
skip-checks: true
2022-09-02 08:55:26 +00:00
Jaco 71d23d0d34 Bump common (#425) 2022-09-02 11:50:10 +03:00
github-actions[bot] 650320a18b [CI Skip] bump/beta 6.3.2-17-x
skip-checks: true
2022-08-31 05:51:09 +00:00
Jaco e0172f3a7d Adjust test execution (#424) 2022-08-31 08:45:32 +03:00
github-actions[bot] 8db05486c0 [CI Skip] bump/beta 6.3.2-16-x
skip-checks: true
2022-08-26 15:02:57 +00:00
Jaco 22328a1368 Pin Github actions (#422) 2022-08-26 17:57:59 +03:00
github-actions[bot] 7dd2cf97e6 [CI Skip] bump/beta 6.3.2-15-x
skip-checks: true
2022-08-26 12:58:45 +00:00
Jaco 2191a78e19 Bump TS (#421) 2022-08-26 15:52:55 +03:00
github-actions[bot] 856d97740e [CI Skip] bump/beta 6.3.2-14-x
skip-checks: true
2022-08-24 08:59:26 +00:00
Jaco b80f22abae Bump deps (#420) 2022-08-24 11:54:16 +03:00
github-actions[bot] 9dfc893309 [CI Skip] bump/beta 6.3.2-13-x
skip-checks: true
2022-08-21 05:50:29 +00:00
Jaco 1087c5b1cf Bump common (#419) 2022-08-21 08:45:51 +03:00
github-actions[bot] 781632d134 [CI Skip] bump/beta 6.3.2-12-x
skip-checks: true
2022-08-19 08:46:11 +00:00
Jaco 1e149c5844 Bump pjs/dev (#418) 2022-08-19 11:41:21 +03:00
github-actions[bot] 8ba4a5afb3 [CI Skip] bump/beta 6.3.2-11-x
skip-checks: true
2022-08-16 12:10:05 +00:00
Jaco 5ec9f9f52e Bump deps (#417) 2022-08-16 15:04:17 +03:00
github-actions[bot] 1a343bc065 [CI Skip] bump/beta 6.3.2-10-x
skip-checks: true
2022-08-12 09:09:07 +00:00
Jaco 3eff5e7a18 Bump deps (#416) 2022-08-12 12:03:12 +03:00
github-actions[bot] ed5f749d38 [CI Skip] bump/beta 6.3.2-9-x
skip-checks: true
2022-08-12 05:48:39 +00:00
Jaco ab02a865b0 Bump dev (#415) 2022-08-12 08:42:44 +03:00
github-actions[bot] 16fb3fe24c [CI Skip] bump/beta 6.3.2-8-x
skip-checks: true
2022-08-07 08:59:11 +00:00
Jaco 0378fba23c Bump dev (#414) 2022-08-07 11:53:14 +03:00
github-actions[bot] 429eff7c2e [CI Skip] bump/beta 6.3.2-7-x
skip-checks: true
2022-08-05 13:55:44 +00:00
Jaco 068343a2cb Bump dev deps (#413) 2022-08-05 16:50:43 +03:00
github-actions[bot] 5f91e4da6e [CI Skip] bump/beta 6.3.2-6-x
skip-checks: true
2022-08-05 06:04:47 +00:00
Jaco d73f3598e4 Bump dev (#412) 2022-08-05 09:00:16 +03:00
github-actions[bot] a8e512a3d3 [CI Skip] bump/beta 6.3.2-5-x
skip-checks: true
2022-08-02 04:38:56 +00:00
Jaco e35ceda7db Bump deps (#411) 2022-08-02 07:33:25 +03:00
github-actions[bot] 2fc192f2d4 [CI Skip] bump/beta 6.3.2-4-x
skip-checks: true
2022-07-30 05:18:06 +00:00
Jaco 7c1c54a413 Adjust CC ignores (#410) 2022-07-30 08:12:44 +03:00
github-actions[bot] b2bf04e475 [CI Skip] bump/beta 6.3.2-3-x
skip-checks: true
2022-07-30 04:51:42 +00:00
Jaco f0d95d63ad Allow errors on GH actions (#409) 2022-07-30 07:47:10 +03:00
github-actions[bot] c2aba270ff [CI Skip] bump/beta 6.3.2-2-x
skip-checks: true
2022-07-29 10:28:04 +00:00
Jaco 59a2ba5135 Bump common (#408) 2022-07-29 13:23:06 +03:00
github-actions[bot] 77b3674d01 [CI Skip] bump/beta 6.3.2-1-x
skip-checks: true
2022-07-26 11:57:21 +00:00
Jaco 34779964ce Bump deps (#407) 2022-07-26 14:51:40 +03:00
github-actions[bot] a9aa786332 [CI Skip] bump/beta 6.3.2-0-x
skip-checks: true
2022-07-21 07:37:39 +00:00
Jaco cd86d0bf35 Bump common (#406) 2022-07-21 10:32:55 +03:00
github-actions[bot] 6ce3e3d67c [CI Skip] release/stable 6.3.1
skip-checks: true
2022-07-21 05:20:47 +00:00
Jaco af4ed8a1db 6.3.1 (#405) 2022-07-21 08:15:29 +03:00
github-actions[bot] 57248e7ce4 [CI Skip] bump/beta 6.2.4-10-x
skip-checks: true
2022-07-19 06:50:16 +00:00
Jaco fe91118385 Optimize packed WASM base64 decoding loop (#404) 2022-07-19 09:45:11 +03:00
github-actions[bot] b36cd04348 [CI Skip] bump/beta 6.2.4-9-x
skip-checks: true
2022-07-19 05:50:20 +00:00
Jaco 8ae4176af6 Bump dev deps (#403) 2022-07-19 08:45:50 +03:00
github-actions[bot] 775b64f1bd [CI Skip] bump/beta 6.2.4-8-x
skip-checks: true
2022-07-15 10:02:49 +00:00
Jaco 66ebae8c62 Slight adjustment to tests (#402)
* Slight adjustment to tests

* beforeAll adjustment

* Adjust test forEach

* Test import map removal

* Adjust

* Remove input import_map template
2022-07-15 12:57:59 +03:00
github-actions[bot] c925bcf8d9 [CI Skip] bump/beta 6.2.4-7-x
skip-checks: true
2022-07-11 13:43:28 +00:00
Jaco beb995d507 Adjust import_map.in.json (#401) 2022-07-11 16:36:57 +03:00
github-actions[bot] 1523a53e10 [CI Skip] bump/beta 6.2.4-6-x
skip-checks: true
2022-07-11 06:08:08 +00:00
Jaco 188f7d3edc Bump common (#400) 2022-07-11 09:02:04 +03:00
github-actions[bot] 6da14ce25b [CI Skip] bump/beta 6.2.4-5-x
skip-checks: true
2022-07-11 05:25:44 +00:00
Jaco 9cacf07fe3 Bump dev (#399) 2022-07-11 08:20:04 +03:00
github-actions[bot] d0258cb3f3 [CI Skip] bump/beta 6.2.4-4-x
skip-checks: true
2022-07-09 08:01:12 +00:00
Jaco b5ae0089d1 Single deno step (aligning with other repos) (#396)
* Single deno step (aligning with other repos)

* skip root mod.ts
2022-07-09 10:56:18 +03:00
github-actions[bot] e07bd1eb00 [CI Skip] bump/beta 6.2.4-3-x
skip-checks: true
2022-07-08 21:41:19 +00:00
Jaco 6d79a71d93 Bump dev deps (#395) 2022-07-09 00:36:12 +03:00
github-actions[bot] c3289ca919 [CI Skip] bump/beta 6.2.4-2-x
skip-checks: true
2022-07-08 13:37:31 +00:00
Jaco b7648e5883 Adjust eslint config (#394) 2022-07-08 16:32:39 +03:00
github-actions[bot] 03b487ae81 [CI Skip] bump/beta 6.2.4-1-x
skip-checks: true
2022-07-08 07:46:21 +00:00
Jaco b1350bd8b4 Adjust size stats output on build (#393) 2022-07-08 10:41:42 +03:00
github-actions[bot] 1516d23ea4 [CI Skip] bump/beta 6.2.4-0-x
skip-checks: true
2022-07-08 04:50:05 +00:00
Jaco 9abaae980f Bump dev (#392)
* Bump dev

* Rebump
2022-07-08 07:44:57 +03:00
github-actions[bot] 370a529668 [CI Skip] release/stable 6.2.3
skip-checks: true
2022-07-07 06:42:17 +00:00
Jaco b7486f4f3b 6.2.3 (w/ dev publish fix) (#391) 2022-07-07 09:37:32 +03:00
Jaco ff4a877ef9 6.2.3 (#390)
* 6.2.3

* Skip extra installs on linting (non-build)
2022-07-07 09:19:49 +03:00
github-actions[bot] e0f741db37 [CI Skip] bump/beta 6.2.3-4-x
skip-checks: true
2022-07-06 11:09:51 +00:00
Jaco 3107861322 Adjust issue template (#389) 2022-07-06 14:04:54 +03:00
github-actions[bot] 7eff345003 [CI Skip] bump/beta 6.2.3-3-x
skip-checks: true
2022-07-06 10:24:19 +00:00
Jaco 00f7da2136 Bump depv deps (#388) 2022-07-06 13:19:14 +03:00
github-actions[bot] 150a143163 [CI Skip] bump/beta 6.2.3-2-x
skip-checks: true
2022-07-06 09:51:51 +00:00
Jaco f31ec881ef Additional platform-specific tests (#387)
* Additional platform-specific tests

* align casing

* Step rename

* lenIn/lenOut for deno

* Remove install ls

* Run deno tests on full suite

* trigger
2022-07-06 12:46:38 +03:00
github-actions[bot] 0b838d2055 [CI Skip] bump/beta 6.2.3-1-x
skip-checks: true
2022-07-05 21:27:10 +00:00
Jaco b68aefe64d Additional CI actions (#386) 2022-07-06 00:21:24 +03:00
github-actions[bot] 9340c296ee [CI Skip] bump/beta 6.2.3-0-x
skip-checks: true
2022-07-04 06:40:44 +00:00
Jaco 132ed20d18 Bump common (#385) 2022-07-04 09:33:42 +03:00
github-actions[bot] 2927c37776 [CI Skip] release/stable 6.2.2
skip-checks: true
2022-07-04 05:57:19 +00:00
Jaco ac63788ecd 6.2.2 (#384) 2022-07-04 08:51:08 +03:00
github-actions[bot] 0a64c9d329 [CI Skip] bump/beta 6.2.2-2-x
skip-checks: true
2022-07-04 05:01:04 +00:00
Jaco 81c9f3aa33 Bump deps (#383) 2022-07-04 07:55:37 +03:00
github-actions[bot] 6fae33074a [CI Skip] bump/beta 6.2.2-1-x
skip-checks: true
2022-07-03 18:45:43 +00:00
Jaco 679b282061 Remove extra serialize/deseralize on ed pair creation (#382) 2022-07-03 21:40:11 +03:00
github-actions[bot] 396b4cb598 [CI Skip] bump/beta 6.2.2-0-x
skip-checks: true
2022-07-03 18:26:17 +00:00
Jaco 8b67b82047 ed25519 signing leaks (#381) 2022-07-03 21:20:41 +03:00
github-actions[bot] da7d771898 [CI Skip] release/stable 6.2.1
skip-checks: true
2022-07-01 14:26:19 +00:00
Jaco 42b5942886 6.2.1 (#380) 2022-07-01 17:20:16 +03:00
github-actions[bot] d848c42bd3 [CI Skip] bump/beta 6.1.6-5-x
skip-checks: true
2022-07-01 14:07:29 +00:00
Jaco e9d034928f Adjust WebAssembly.{Memory, ModuleImports} usage to cater for non-dom TS (#379)
* Adjust `WebAssembly.{Memory, ModuleImports}` usage to cater for non-dom TS

* Remove wbg getter (only internal access required)

* Additional peerDeps for wasm-crypto-init

* Bump @polkadot/dev

* Remove never cast & comment, imports are functions
2022-07-01 17:01:56 +03:00
github-actions[bot] 2f042819ac [CI Skip] bump/beta 6.1.6-4-x
skip-checks: true
2022-06-30 11:41:53 +00:00
Jaco 2177d2f2cc Bump dev deps (#378) 2022-06-30 14:36:28 +03:00
github-actions[bot] 4d974e4d7f [CI Skip] bump/beta 6.1.6-3-x
skip-checks: true
2022-06-25 06:14:51 +00:00
Jaco cb05a1782a Bump common (dev deps) (#377)
* Bump common (dev deps)

* Add missing peerDependencies

* CHANGELOG
2022-06-25 09:09:15 +03:00
github-actions[bot] 5f7cb7641a [CI Skip] bump/beta 6.1.6-2-x
skip-checks: true
2022-06-23 17:10:26 +00:00
Jaco ff62f24cd4 Bump dev (w/ deno build fix) (#376) 2022-06-23 20:04:42 +03:00
github-actions[bot] d45dfb7dd2 [CI Skip] bump/beta 6.1.6-1-x
skip-checks: true
2022-06-23 11:22:09 +00:00
Jaco 1d4de873cb Bump dev 2022-06-23 14:15:28 +03:00
github-actions[bot] edfc1f0610 [CI Skip] release/beta 6.1.6-0
skip-checks: true
2022-06-23 08:37:41 +00:00
Jaco a662a23d19 README updates (#375)
* README updates

* Bump polkadot deps
2022-06-23 11:31:01 +03:00
github-actions[bot] 7cff1c8736 [CI Skip] release/stable 6.1.5
skip-checks: true
2022-06-23 07:36:43 +00:00
Jaco 6bfdebcff5 6.1.5 (#374) 2022-06-23 10:31:14 +03:00
github-actions[bot] 5b3158cb15 [CI Skip] release/stable 6.1.4
skip-checks: true
2022-06-22 05:59:18 +00:00
Jaco baa3439646 6.1.4 (#373) 2022-06-22 08:54:08 +03:00
github-actions[bot] ac040bd62b [CI Skip] release/beta 6.1.4-0
skip-checks: true
2022-06-21 17:39:22 +00:00
Jaco e0a9e33623 Adjust cjs -> deno path rewrites (#372) 2022-06-21 20:33:07 +03:00
70 changed files with 4037 additions and 2122 deletions
-11
View File
@@ -1,11 +0,0 @@
7
3.2.2
3.2.3
3.2.4
4.0.2
4.1.2
6.1.2
6.1.3
+2 -1
View File
@@ -17,4 +17,5 @@ exclude_patterns:
- "**/*.spec.ts"
- "docs/**/*.js"
- "**/test/**/*.js"
- "packages/wasm-crypto-wasm/src/fflate.ts"
- "packages/wasm-crypto/src/bundle.ts"
- "packages/wasm-util/src/fflate.ts"
+1 -1
View File
@@ -8,7 +8,7 @@ module.exports = {
ignorePatterns: [
...base.ignorePatterns,
'**/target/*',
'**/build-wasm/*'
'**/test/*.ts'
],
parserOptions: {
...base.parserOptions,
+49 -13
View File
@@ -1,50 +1,86 @@
<!--
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
For general support, howto, coding and bundling questions, please
use the Substrate & Polkadot StackExchange at
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
https://substrate.stackexchange.com/
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
and get other ecosystem developers involved. This issues in this
repository are meant for the tracking of feature requests and bug
reports.
While all issues are looked at non-bug and non-features would take
quite a bit longer to get to and may yield less than satisfactory
responses in this format.
Additionally, please ensure you have done a search on the existing
and closed issues before logging a new request. This saves time on
all sides.
-->
* **I'm submitting a ...**
<!--- Try and classify your actual report -->
<!---
REQUIRED:
Classify the type of report your are submitting
-->
- [ ] Bug report
- [ ] Feature request
- [ ] Support request (please bear the comments above in mind)
- [ ] Support request
- [ ] Other
* **What is the current behavior and expected behavior?**
<!--- If you're describing a bug, tell us what should happen -->
<!--- If you're suggesting a change/improvement, tell us how it should work -->
<!---
REQUIRED:
If you're describing a bug, tell us what should happen. If you're
suggesting a change/improvement, tell us how it should work.
-->
* **What is the motivation for changing the behavior?**
<!--- Not obligatory, but suggest a motivation for the request -->
<!--- or ideas how to implement the addition or change -->
<!---
OPTIONAL:
Suggest a motivation for the request or ideas how to implement the
addition or change
-->
* **Please tell us about your environment:**
<!--- Include as many relevant details about the environment you experienced the issue in -->
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
<!---
REQUIRED:
Include as many relevant details about the environment in which you
experienced the issue. Also ensure that you have tested against the
latest stable releases if you believe this to be a bug
-->
- Version:
- Environment:
- [ ] Node.js
- [ ] Browser
- [ ] Other (limited support for other environments available)
- [ ] Other (limited support for other environments)
- Language:
- [ ] JavaScript
- [ ] TypeScript
- [ ] TypeScript (include tsc --version)
- [ ] Other
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
runs-on: ubuntu-latest
steps:
- uses: jacogr/action-approve@master
- uses: jacogr/action-approve@9d6ce78d26f23ad29d009d034822cf773f2cb50e
with:
authors: jacogr
labels: -auto
+1 -1
View File
@@ -8,7 +8,7 @@ jobs:
merge:
runs-on: ubuntu-latest
steps:
- uses: jacogr/action-merge@master
- uses: jacogr/action-merge@3b4b49af8a8644bf5cbb5409ee236abe04eeb1b0
with:
checks: build,lint,test
labels: -auto
+1 -1
View File
@@ -10,7 +10,7 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: dessant/lock-threads@v2
- uses: dessant/lock-threads@f1a42f0f44eb83361d617a014663e1a76cf282d2
with:
github-token: ${{ secrets.GH_PAT_BOT }}
issue-lock-inactive-days: '7'
+11 -3
View File
@@ -5,15 +5,23 @@ jobs:
pr:
strategy:
matrix:
step: ['lint', 'test', 'build']
step: ['lint', 'test', 'build', 'deno']
name: ${{ matrix.step }}
runs-on: ubuntu-latest
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
- uses: denoland/setup-deno@004814556e37c54a2f6e31384c9e18e983317366
with:
deno-version: vx.x.x
- name: ${{ matrix.step }}
if: always()
continue-on-error: true
run: |
yarn install --immutable | grep -v 'YN0013'
./scripts/install-build-deps.sh
if [ "${{ matrix.step }}" != "lint" ]; then
./scripts/install-build-deps.sh
fi
yarn polkadot-dev-deno-map
yarn ${{ matrix.step }}
+1 -1
View File
@@ -19,7 +19,7 @@ jobs:
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
with:
fetch-depth: 0
token: ${{ secrets.GH_PAT }}
+2 -2
View File
@@ -12,8 +12,8 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/checkout@v2
- uses: returntocorp/semgrep-action@v1
- uses: actions/checkout@7884fcad6b5d53d10323aee724dc68d8b9096a2e
- uses: returntocorp/semgrep-action@aeafd770072c4f48798b991e3449592bddc2c435
with:
auditOn: push
publishToken: ${{ secrets.SEMGREP_APP_TOKEN }}
+1 -1
View File
@@ -9,7 +9,7 @@ jobs:
env:
YARN_ENABLE_SCRIPTS: false
steps:
- uses: actions/stale@v3
- uses: actions/stale@98ed4cb500039dbcccf4bd9bedada4d0187f2757
with:
repo-token: ${{ secrets.GH_PAT_BOT }}
stale-issue-message: 'This issue has been open for 21 days with no activity and is not labelled as an enhancement. It will be closed in 7 days.'
+3 -6
View File
@@ -1,19 +1,16 @@
binaryen/
bindgen/
build/
build-cjs/
build-esm/
build-deno/
build-docs/
build-wasm/
build-*/
bytes/
coverage/
docs/.vuepress/dist/
node_modules/
pkg/
target/
tmp/
wabt/
/import_map.json
/mod.ts
.DS_Store
.env.local
.env.development.local
+54
View File
@@ -1,5 +1,59 @@
# CHANGELOG
## 6.4.1 Dec 3, 2022
Changes:
- Add `/*#__PURE__*/` annotations for specific `export const something = someFunction(...)`
## 6.3.1 Jul 21, 2022
Changes:
- Optimize packed WASM base64 decoding loop
- Adjust test environment (no duplication)
- Adjust CI check steps, align with other org repos
- Remove unneeded `import_map.in.json` for Deno tests
## 6.2.3 Jul 7, 2022
Changes:
- Optimize WASM init with pre-allocated buffers
- Additional platform-specific tests
## 6.2.2 Jul 4, 2022
Changes:
- Protect against potential low-level double-sign leak in dalek-ed25519 (Don't use provided input pubKey, see https://github.com/MystenLabs/ed25519-unsafe-libs)
## 6.2.1 Jul 1, 2022
Changes:
- Add missing `peerDependencies` to `wasm-crypto` (`bridge` requirement)
- Adjust `WebAssembly.{Memory, ModuleImports}` usage to cater for non-dom TS
## 6.1.5 Jun 23, 2022
Changes:
- Adjust build outputs for Deno targets
## 6.1.4 Jun 22, 2022
Changes:
- Adjust build outputs for Deno targets
## 6.1.3 Jun 21, 2022
Changes:
+1 -1
View File
@@ -1,4 +1,4 @@
436 Jaco 6.1.3 (#371)
508 Jaco 6.4.1 (#445)
1 Evgeny Fixed type (#121)
1 Shunfan Zhou Support sr25519 agreement (#209)
1 Steve Degosserie Expose Schnorrkel's VRF capabilities (#170)
+5
View File
@@ -0,0 +1,5 @@
{
"imports": {
"https://esm.sh/v90/@types/bn.js@~5.2/index.d.ts": "https://esm.sh/v90/@types/bn.js@5.1.0/index.d.ts"
}
}
+17 -5
View File
@@ -10,7 +10,12 @@
"url": "https://github.com/polkadot-js/wasm.git"
},
"sideEffects": false,
"version": "6.1.3",
"type": "module",
"version": "6.4.1",
"versions": {
"git": "6.4.1",
"npm": "6.4.1"
},
"workspaces": [
"packages/*"
],
@@ -22,21 +27,28 @@
"build:rollup": "polkadot-exec-rollup --config",
"build:wasm": "./scripts/build.sh",
"clean": "./scripts/clean.sh",
"deno": "yarn deno:build && yarn deno:check",
"deno:build": "WITH_DENO=1 yarn build",
"deno:check": "deno check --import-map=import_map.json mod.ts",
"lint": "polkadot-dev-run-lint",
"postinstall": "polkadot-dev-yarn-only",
"test": "yarn test:wasm-crypto:rust",
"test:wasm-crypto:deno": "deno test --allow-read --import-map=import_map.json packages/wasm-crypto/test/deno.ts",
"test:wasm-crypto:js": "yarn test:wasm-crypto:js:jest && yarn test:wasm-crypto:js:node",
"test:wasm-crypto:js:jest": "polkadot-dev-run-test ./test/jest.spec.js",
"test:wasm-crypto:js:node": "cd packages/wasm-crypto && node ./test/wasm.cjs && node ./test/asm.cjs",
"test:wasm-crypto:rust": "cd packages/wasm-crypto && RUST_BACKTRACE=full cargo test --release -- --test-threads=1 --nocapture"
},
"devDependencies": {
"@babel/core": "^7.18.5",
"@polkadot/dev": "^0.67.20",
"fflate": "^0.7.3",
"@babel/core": "^7.20.5",
"@polkadot/dev": "^0.67.167",
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14",
"@types/jest": "^29.2.3",
"fflate": "^0.7.4",
"override-require": "^1.1.1"
},
"resolutions": {
"typescript": "^4.7.4"
"typescript": "^4.9.3"
}
}
+2
View File
@@ -1 +1,3 @@
# @polkadot/wasm-bridge
A re-usable bridge between JS & WASM interfaces. It is used internally by `@polkadot/wasm-crypto`.
+4 -4
View File
@@ -20,14 +20,14 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1",
"@polkadot/x-randomvalues": "^9.5.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*",
+2 -7
View File
@@ -7,7 +7,7 @@
// then ensures that the internal wasm instance here is available
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance } from './types';
import type { BridgeBase, InitFn, InitPromise, WasmBaseInstance, WasmImports } from './types';
import { stringToU8a, u8aToString } from '@polkadot/util';
@@ -31,7 +31,7 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
#wasm: C | null;
#wasmError: string | null;
#wasmPromise: InitPromise<C> | null;
#wbg: WebAssembly.ModuleImports;
#wbg: WasmImports;
#type: 'asm' | 'wasm' | 'none';
constructor (createWasm: InitFn<C>) {
@@ -59,11 +59,6 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return this.#type;
}
/** @description Returns the created wbg interface */
get wbg (): WebAssembly.ModuleImports {
return this.#wbg;
}
/** @description Returns the created wasm interface */
get wasm (): C | null {
return this.#wasm;
+3 -3
View File
@@ -1,7 +1,7 @@
// Copyright 2019-2022 @polkadot/wasm-bundle authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types';
import type { InitFn, InitPromise, InitResult, WasmBaseInstance, WasmImports } from './types';
/**
* @name createWasmFn
@@ -11,8 +11,8 @@ import type { InitFn, InitPromise, InitResult, WasmBaseInstance } from './types'
* It will attempt to create a WASM interface first and if this fails or is not available in
* the environment, will fallback to attempting to create an ASM.js interface.
*/
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WebAssembly.ModuleImports) => C)): InitFn<C> {
return async (wbg: WebAssembly.ModuleImports): InitPromise<C> => {
export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmBytes: null | Uint8Array, asmFn: null | ((wbg: WasmImports) => C)): InitFn<C> {
return async (wbg: WasmImports): InitPromise<C> => {
const result: InitResult<C> = {
error: null,
type: 'none',
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.4.1' };
+10 -4
View File
@@ -1,6 +1,14 @@
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
// SPDX-License-Identifier: Apache-2.0
// Use non-strong types instead of WasmImports which may not
// be available as part of the TS environment types (it needs dom)
export type WasmImports = Record<string, (...args: never[]) => unknown>;
// Use non-strong types instead of WebAssembly.Memory which may not
// be available as part of the TS environment types (it needs dom)
export type WasmMemory = { buffer: ArrayBuffer };
export declare interface InitResult<C extends WasmBaseInstance> {
error: string | null;
type: 'asm' | 'wasm' | 'none';
@@ -9,11 +17,9 @@ export declare interface InitResult<C extends WasmBaseInstance> {
export type InitPromise <C extends WasmBaseInstance> = Promise<InitResult<C>>;
export type InitFn <C extends WasmBaseInstance> = (wbg: WebAssembly.ModuleImports) => InitPromise<C>;
export type InitFn <C extends WasmBaseInstance> = (wbg: WasmImports) => InitPromise<C>;
export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
wbg: WebAssembly.ModuleImports;
init (createWasm?: InitFn<C>): Promise<C | null>;
getObject (idx: number): unknown;
dropObject (idx: number): void;
@@ -30,7 +36,7 @@ export interface BridgeBase<C extends WasmBaseInstance> extends InitResult<C> {
}
export interface WasmBaseInstance {
memory: WebAssembly.Memory;
memory: WasmMemory;
// wbindgen functions (required and used internally)
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-asmjs
Asm.js build outputs.
+3 -3
View File
@@ -17,13 +17,13 @@
},
"sideEffects": false,
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
@@ -1,4 +0,0 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from '../data.js';
+1 -2
View File
@@ -1,5 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-asmjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export { asmJsInit } from './deno/data.js';
export { packageInfo } from './packageInfo';
export * from './index';
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-crypto-asmjs', path: 'auto', type: 'auto', version: '6.4.1' };
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-init
Internal `@polkadot/wasm-crypto` initialization functions for Browser, Node & RN.
+9 -7
View File
@@ -20,20 +20,22 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"browser": "wasm.js",
"main": "wasm.js",
"react-native": "asm.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-bridge": "6.1.3",
"@polkadot/wasm-crypto-asmjs": "6.1.3",
"@polkadot/wasm-crypto-wasm": "6.1.3"
"@babel/runtime": "^7.20.6",
"@polkadot/wasm-bridge": "6.4.1",
"@polkadot/wasm-crypto-asmjs": "6.4.1",
"@polkadot/wasm-crypto-wasm": "6.4.1"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+1 -1
View File
@@ -14,4 +14,4 @@ export { packageInfo } from './packageInfo';
* @description
* Creates an interface using only ASM.js
*/
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', null, asmJsInit);
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', null, asmJsInit);
+1 -1
View File
@@ -15,4 +15,4 @@ export { packageInfo } from './packageInfo';
* @description
* Creates an interface using WASM and a fallback ASM.js
*/
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', wasmBytes, asmJsInit);
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', wasmBytes, asmJsInit);
+1 -1
View File
@@ -13,4 +13,4 @@ export { packageInfo } from './packageInfo';
* @description
* Creates an interface using no WASM and no ASM.js
*/
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', null, null);
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', null, null);
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.4.1' };
+1 -1
View File
@@ -14,4 +14,4 @@ export { packageInfo } from './packageInfo';
* @description
* Creates an interface using only WASM
*/
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', wasmBytes, null);
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', wasmBytes, null);
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-crypto-wasm
Wasm build outputs.
+4 -4
View File
@@ -17,14 +17,14 @@
},
"sideEffects": false,
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-util": "6.1.3"
"@babel/runtime": "^7.20.6",
"@polkadot/wasm-util": "6.4.1"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
+2 -2
View File
@@ -3,7 +3,7 @@
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
import { bytes, sizeUncompressed } from './cjs/bytes';
import { bytes, lenIn, lenOut } from './cjs/bytes.js';
export { packageInfo } from './packageInfo';
@@ -16,4 +16,4 @@ export { packageInfo } from './packageInfo';
* Upon loading the exposed bytes will be decoded and decompressed form this
* specific format and returned.
*/
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
export const wasmBytes = /*#__PURE__*/ unzlibSync(base64Decode(bytes, new Uint8Array(lenIn)), new Uint8Array(lenOut));
+2 -2
View File
@@ -3,6 +3,6 @@
export declare const bytes: string;
export declare const sizeCompressed: number;
export declare const lenIn: number;
export declare const sizeUncompressed: number;
export declare const lenOut: number;
+2 -2
View File
@@ -3,6 +3,6 @@
module.exports.bytes = '';
module.exports.sizeCompressed = 0;
module.exports.lenIn = 0;
module.exports.sizeUncompressed = 0;
module.exports.lenOut = 0;
+2 -2
View File
@@ -3,6 +3,6 @@
export declare const bytes: string;
export declare const sizeCompressed: number;
export declare const lenIn: number;
export declare const sizeUncompressed: number;
export declare const lenOut: number;
+2 -2
View File
@@ -3,6 +3,6 @@
export const bytes = '';
export const sizeCompressed = 0;
export const lenIn = 0;
export const sizeUncompressed = 0;
export const lenOut = 0;
@@ -1,4 +0,0 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from '../bytes.js';
+1 -18
View File
@@ -1,21 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
import './detectPackage';
import { base64Decode, unzlibSync } from '@polkadot/wasm-util';
import { bytes, sizeUncompressed } from './deno/bytes.js';
export { packageInfo } from './packageInfo';
/**
* @name wasmBytes
* @description
* The decoded WASM interface as exposed by this package.
*
* The build process will output into cjs/* into a compressed base64 format.
* Upon loading the exposed bytes will be decoded and decompressed form this
* specific format and returned.
*/
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
export * from './index';
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-crypto-wasm', path: 'auto', type: 'auto', version: '6.4.1' };
+11 -13
View File
@@ -11,21 +11,19 @@ Install the package (also requires `@polkadot/util` for `TextEncoder` polyfills
Use it -
```js
const { u8aToHex } = require('@polkadot/util');
const { bip39Generate, bip39ToSeed, waitReady } = require('@polkadot/wasm-crypto');
import { u8aToHex } from '@polkadot/util';
import { bip39Generate, bip39ToSeed, waitReady } from '@polkadot/wasm-crypto';
async function main () {
// first wait until the WASM has been loaded (async init)
await waitReady();
// first wait until the WASM has been loaded (async init)
await waitReady();
// generate phrase
const phrase = bip39Generate(12);
// generate phrase
const phrase = bip39Generate(12);
// get ed25519 seed from phrase
const seed = bip39ToSeed(phrase, '');
// get ed25519 seed from phrase
const seed = bip39ToSeed(phrase, '');
// display
console.log('phrase:', phrase);
console.log('seed:', u8aToHex(seed));
}
// display
console.log('phrase:', phrase);
console.log('seed:', u8aToHex(seed));
```
+11 -9
View File
@@ -28,20 +28,22 @@
"./initWasmAsm.cjs"
],
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3",
"@polkadot/wasm-bridge": "6.1.3",
"@polkadot/wasm-crypto-asmjs": "6.1.3",
"@polkadot/wasm-crypto-init": "6.1.3",
"@polkadot/wasm-crypto-wasm": "6.1.3",
"@polkadot/wasm-util": "6.1.3"
"@babel/runtime": "^7.20.6",
"@polkadot/wasm-bridge": "6.4.1",
"@polkadot/wasm-crypto-asmjs": "6.4.1",
"@polkadot/wasm-crypto-init": "6.4.1",
"@polkadot/wasm-crypto-wasm": "6.4.1",
"@polkadot/wasm-util": "6.4.1"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+32 -32
View File
@@ -40,193 +40,193 @@ function withWasm <T, F extends (wasm: WasmCryptoInstance, ...params: never[]) =
};
}
export const bip39Generate = withWasm((wasm, words: 12 | 15 | 18 | 21 | 24): string => {
export const bip39Generate = /*#__PURE__*/ withWasm((wasm, words: 12 | 15 | 18 | 21 | 24): string => {
wasm.ext_bip39_generate(8, words);
return bridge.resultString();
});
export const bip39ToEntropy = withWasm((wasm, phrase: string): Uint8Array => {
export const bip39ToEntropy = /*#__PURE__*/ withWasm((wasm, phrase: string): Uint8Array => {
wasm.ext_bip39_to_entropy(8, ...bridge.allocString(phrase));
return bridge.resultU8a();
});
export const bip39ToMiniSecret = withWasm((wasm, phrase: string, password: string): Uint8Array => {
export const bip39ToMiniSecret = /*#__PURE__*/ withWasm((wasm, phrase: string, password: string): Uint8Array => {
wasm.ext_bip39_to_mini_secret(8, ...bridge.allocString(phrase), ...bridge.allocString(password));
return bridge.resultU8a();
});
export const bip39ToSeed = withWasm((wasm, phrase: string, password: string): Uint8Array => {
export const bip39ToSeed = /*#__PURE__*/ withWasm((wasm, phrase: string, password: string): Uint8Array => {
wasm.ext_bip39_to_seed(8, ...bridge.allocString(phrase), ...bridge.allocString(password));
return bridge.resultU8a();
});
export const bip39Validate = withWasm((wasm, phrase: string): boolean => {
export const bip39Validate = /*#__PURE__*/ withWasm((wasm, phrase: string): boolean => {
const ret = wasm.ext_bip39_validate(...bridge.allocString(phrase));
return ret !== 0;
});
export const ed25519KeypairFromSeed = withWasm((wasm, seed: Uint8Array): Uint8Array => {
export const ed25519KeypairFromSeed = /*#__PURE__*/ withWasm((wasm, seed: Uint8Array): Uint8Array => {
wasm.ext_ed_from_seed(8, ...bridge.allocU8a(seed));
return bridge.resultU8a();
});
export const ed25519Sign = withWasm((wasm, pubkey: Uint8Array, seckey: Uint8Array, message: Uint8Array): Uint8Array => {
export const ed25519Sign = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array, seckey: Uint8Array, message: Uint8Array): Uint8Array => {
wasm.ext_ed_sign(8, ...bridge.allocU8a(pubkey), ...bridge.allocU8a(seckey), ...bridge.allocU8a(message));
return bridge.resultU8a();
});
export const ed25519Verify = withWasm((wasm, signature: Uint8Array, message: Uint8Array, pubkey: Uint8Array): boolean => {
export const ed25519Verify = /*#__PURE__*/ withWasm((wasm, signature: Uint8Array, message: Uint8Array, pubkey: Uint8Array): boolean => {
const ret = wasm.ext_ed_verify(...bridge.allocU8a(signature), ...bridge.allocU8a(message), ...bridge.allocU8a(pubkey));
return ret !== 0;
});
export const secp256k1FromSeed = withWasm((wasm, seckey: Uint8Array): Uint8Array => {
export const secp256k1FromSeed = /*#__PURE__*/ withWasm((wasm, seckey: Uint8Array): Uint8Array => {
wasm.ext_secp_from_seed(8, ...bridge.allocU8a(seckey));
return bridge.resultU8a();
});
export const secp256k1Compress = withWasm((wasm, pubkey: Uint8Array): Uint8Array => {
export const secp256k1Compress = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array): Uint8Array => {
wasm.ext_secp_pub_compress(8, ...bridge.allocU8a(pubkey));
return bridge.resultU8a();
});
export const secp256k1Expand = withWasm((wasm, pubkey: Uint8Array): Uint8Array => {
export const secp256k1Expand = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array): Uint8Array => {
wasm.ext_secp_pub_expand(8, ...bridge.allocU8a(pubkey));
return bridge.resultU8a();
});
export const secp256k1Recover = withWasm((wasm, msgHash: Uint8Array, sig: Uint8Array, recovery: number): Uint8Array => {
export const secp256k1Recover = /*#__PURE__*/ withWasm((wasm, msgHash: Uint8Array, sig: Uint8Array, recovery: number): Uint8Array => {
wasm.ext_secp_recover(8, ...bridge.allocU8a(msgHash), ...bridge.allocU8a(sig), recovery);
return bridge.resultU8a();
});
export const secp256k1Sign = withWasm((wasm, msgHash: Uint8Array, seckey: Uint8Array): Uint8Array => {
export const secp256k1Sign = /*#__PURE__*/ withWasm((wasm, msgHash: Uint8Array, seckey: Uint8Array): Uint8Array => {
wasm.ext_secp_sign(8, ...bridge.allocU8a(msgHash), ...bridge.allocU8a(seckey));
return bridge.resultU8a();
});
export const sr25519DeriveKeypairHard = withWasm((wasm, pair: Uint8Array, cc: Uint8Array): Uint8Array => {
export const sr25519DeriveKeypairHard = /*#__PURE__*/ withWasm((wasm, pair: Uint8Array, cc: Uint8Array): Uint8Array => {
wasm.ext_sr_derive_keypair_hard(8, ...bridge.allocU8a(pair), ...bridge.allocU8a(cc));
return bridge.resultU8a();
});
export const sr25519DeriveKeypairSoft = withWasm((wasm, pair: Uint8Array, cc: Uint8Array): Uint8Array => {
export const sr25519DeriveKeypairSoft = /*#__PURE__*/ withWasm((wasm, pair: Uint8Array, cc: Uint8Array): Uint8Array => {
wasm.ext_sr_derive_keypair_soft(8, ...bridge.allocU8a(pair), ...bridge.allocU8a(cc));
return bridge.resultU8a();
});
export const sr25519DerivePublicSoft = withWasm((wasm, pubkey: Uint8Array, cc: Uint8Array): Uint8Array => {
export const sr25519DerivePublicSoft = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array, cc: Uint8Array): Uint8Array => {
wasm.ext_sr_derive_public_soft(8, ...bridge.allocU8a(pubkey), ...bridge.allocU8a(cc));
return bridge.resultU8a();
});
export const sr25519KeypairFromSeed = withWasm((wasm, seed: Uint8Array): Uint8Array => {
export const sr25519KeypairFromSeed = /*#__PURE__*/ withWasm((wasm, seed: Uint8Array): Uint8Array => {
wasm.ext_sr_from_seed(8, ...bridge.allocU8a(seed));
return bridge.resultU8a();
});
export const sr25519Sign = withWasm((wasm, pubkey: Uint8Array, secret: Uint8Array, message: Uint8Array): Uint8Array => {
export const sr25519Sign = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array, secret: Uint8Array, message: Uint8Array): Uint8Array => {
wasm.ext_sr_sign(8, ...bridge.allocU8a(pubkey), ...bridge.allocU8a(secret), ...bridge.allocU8a(message));
return bridge.resultU8a();
});
export const sr25519Verify = withWasm((wasm, signature: Uint8Array, message: Uint8Array, pubkey: Uint8Array): boolean => {
export const sr25519Verify = /*#__PURE__*/ withWasm((wasm, signature: Uint8Array, message: Uint8Array, pubkey: Uint8Array): boolean => {
const ret = wasm.ext_sr_verify(...bridge.allocU8a(signature), ...bridge.allocU8a(message), ...bridge.allocU8a(pubkey));
return ret !== 0;
});
export const sr25519Agree = withWasm((wasm, pubkey: Uint8Array, secret: Uint8Array): Uint8Array => {
export const sr25519Agree = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array, secret: Uint8Array): Uint8Array => {
wasm.ext_sr_agree(8, ...bridge.allocU8a(pubkey), ...bridge.allocU8a(secret));
return bridge.resultU8a();
});
export const vrfSign = withWasm((wasm, secret: Uint8Array, context: Uint8Array, message: Uint8Array, extra: Uint8Array): Uint8Array => {
export const vrfSign = /*#__PURE__*/ withWasm((wasm, secret: Uint8Array, context: Uint8Array, message: Uint8Array, extra: Uint8Array): Uint8Array => {
wasm.ext_vrf_sign(8, ...bridge.allocU8a(secret), ...bridge.allocU8a(context), ...bridge.allocU8a(message), ...bridge.allocU8a(extra));
return bridge.resultU8a();
});
export const vrfVerify = withWasm((wasm, pubkey: Uint8Array, context: Uint8Array, message: Uint8Array, extra: Uint8Array, outAndProof: Uint8Array): boolean => {
export const vrfVerify = /*#__PURE__*/ withWasm((wasm, pubkey: Uint8Array, context: Uint8Array, message: Uint8Array, extra: Uint8Array, outAndProof: Uint8Array): boolean => {
const ret = wasm.ext_vrf_verify(...bridge.allocU8a(pubkey), ...bridge.allocU8a(context), ...bridge.allocU8a(message), ...bridge.allocU8a(extra), ...bridge.allocU8a(outAndProof));
return ret !== 0;
});
export const blake2b = withWasm((wasm, data: Uint8Array, key: Uint8Array, size: number): Uint8Array => {
export const blake2b = /*#__PURE__*/ withWasm((wasm, data: Uint8Array, key: Uint8Array, size: number): Uint8Array => {
wasm.ext_blake2b(8, ...bridge.allocU8a(data), ...bridge.allocU8a(key), size);
return bridge.resultU8a();
});
export const hmacSha256 = withWasm((wasm, key: Uint8Array, data: Uint8Array): Uint8Array => {
export const hmacSha256 = /*#__PURE__*/ withWasm((wasm, key: Uint8Array, data: Uint8Array): Uint8Array => {
wasm.ext_hmac_sha256(8, ...bridge.allocU8a(key), ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const hmacSha512 = withWasm((wasm, key: Uint8Array, data: Uint8Array): Uint8Array => {
export const hmacSha512 = /*#__PURE__*/ withWasm((wasm, key: Uint8Array, data: Uint8Array): Uint8Array => {
wasm.ext_hmac_sha512(8, ...bridge.allocU8a(key), ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const keccak256 = withWasm((wasm, data: Uint8Array): Uint8Array => {
export const keccak256 = /*#__PURE__*/ withWasm((wasm, data: Uint8Array): Uint8Array => {
wasm.ext_keccak256(8, ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const keccak512 = withWasm((wasm, data: Uint8Array): Uint8Array => {
export const keccak512 = /*#__PURE__*/ withWasm((wasm, data: Uint8Array): Uint8Array => {
wasm.ext_keccak512(8, ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const pbkdf2 = withWasm((wasm, data: Uint8Array, salt: Uint8Array, rounds: number): Uint8Array => {
export const pbkdf2 = /*#__PURE__*/ withWasm((wasm, data: Uint8Array, salt: Uint8Array, rounds: number): Uint8Array => {
wasm.ext_pbkdf2(8, ...bridge.allocU8a(data), ...bridge.allocU8a(salt), rounds);
return bridge.resultU8a();
});
export const scrypt = withWasm((wasm, password: Uint8Array, salt: Uint8Array, log2n: number, r: number, p: number): Uint8Array => {
export const scrypt = /*#__PURE__*/ withWasm((wasm, password: Uint8Array, salt: Uint8Array, log2n: number, r: number, p: number): Uint8Array => {
wasm.ext_scrypt(8, ...bridge.allocU8a(password), ...bridge.allocU8a(salt), log2n, r, p);
return bridge.resultU8a();
});
export const sha256 = withWasm((wasm, data: Uint8Array): Uint8Array => {
export const sha256 = /*#__PURE__*/ withWasm((wasm, data: Uint8Array): Uint8Array => {
wasm.ext_sha256(8, ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const sha512 = withWasm((wasm, data: Uint8Array): Uint8Array => {
export const sha512 = /*#__PURE__*/ withWasm((wasm, data: Uint8Array): Uint8Array => {
wasm.ext_sha512(8, ...bridge.allocU8a(data));
return bridge.resultU8a();
});
export const twox = withWasm((wasm, data: Uint8Array, rounds: number) => {
export const twox = /*#__PURE__*/ withWasm((wasm, data: Uint8Array, rounds: number) => {
wasm.ext_twox(8, ...bridge.allocU8a(data), rounds);
return bridge.resultU8a();
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-crypto', path: 'auto', type: 'auto', version: '6.4.1' };
+15 -21
View File
@@ -6,15 +6,14 @@ use ed25519_dalek::{Keypair, PublicKey, SecretKey, Signature, Signer as _, Verif
use wasm_bindgen::prelude::*;
/// Keypair helper function
fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
let mut pair = vec![];
fn new_from_seed(seed: &[u8]) -> Keypair {
match SecretKey::from_bytes(seed) {
Ok(secret) => {
let public: PublicKey = (&secret).into();
pair.extend_from_slice(seckey);
pair.extend_from_slice(pubkey);
match Keypair::from_bytes(&pair) {
Ok(p) => p,
_ => panic!("Provided pair is invalid.")
Keypair { secret: secret, public: public }
},
_ => panic!("Invalid seed provided.")
}
}
@@ -26,16 +25,9 @@ fn new_from_parts(pubkey: &[u8], seckey: &[u8]) -> Keypair {
/// followed by the public key (32) bytes, as the full secret keys.
#[wasm_bindgen]
pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
match &SecretKey::from_bytes(seed) {
Ok(s) => {
let pubkey: PublicKey = s.into();
new_from_parts(pubkey.as_bytes(), seed)
.to_bytes()
.to_vec()
},
_ => panic!("Invalid seed provided.")
}
new_from_seed(seed)
.to_bytes()
.to_vec()
}
/// Sign a message
@@ -43,14 +35,16 @@ pub fn ext_ed_from_seed(seed: &[u8]) -> Vec<u8> {
/// The combination of both public and private key must be provided.
/// This is effectively equivalent to a keypair.
///
/// * pubkey: UIntArray with 32 element
/// * _: UIntArray with 32 element (was pubkey, now ignored)
/// * private: UIntArray with 64 element
/// * message: Arbitrary length UIntArray
///
/// * returned vector is the signature consisting of 64 bytes.
#[wasm_bindgen]
pub fn ext_ed_sign(pubkey: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
new_from_parts(pubkey, seckey)
pub fn ext_ed_sign(_: &[u8], seckey: &[u8], message: &[u8]) -> Vec<u8> {
// https://github.com/MystenLabs/ed25519-unsafe-libs
// we never use the provided pubkey
new_from_seed(seckey)
.sign(message)
.to_bytes()
.to_vec()
@@ -3,13 +3,12 @@
const { assert } = require('@polkadot/util');
const wasm = require('../../build');
const bip39 = require('./bip39.cjs');
const ed25519 = require('./ed25519.cjs');
const hashing = require('./hashing.cjs');
const secp256k1 = require('./secp256k1.cjs');
const sr25519 = require('./sr25519.cjs');
const vrf = require('./vrf.cjs');
const bip39 = require('./bip39.js');
const ed25519 = require('./ed25519.js');
const hashing = require('./hashing.js');
const secp256k1 = require('./secp256k1.js');
const sr25519 = require('./sr25519.js');
const vrf = require('./vrf.js');
const tests = {
// We place secp256k1 first, this allows the interaction with it in the
@@ -23,51 +22,53 @@ const tests = {
...hashing
};
async function beforeAll (name) {
async function beforeAll (name, wasm) {
const result = await wasm.waitReady();
console.log(`*** waitReady()=${result} for ${wasm.bridge.type}`);
assert(name.toLowerCase() === wasm.bridge.type, `Incorrect environment laucnhed, expected ${name.toLowerCase()}, found ${wasm.bridge.type}`);
assert(name.toLowerCase() === wasm.bridge.type, `Incorrect environment launched, expected ${name.toLowerCase()}, found ${wasm.bridge.type}`);
return result;
}
function runAll (name) {
function runAll (name, wasm) {
const failed = [];
let count = 0;
Object.keys(tests).forEach((name) => {
const timerId = `\t${name}`;
Object
.entries(tests)
.forEach(([name, test]) => {
const timerId = `\t${name}`;
count++;
count++;
try {
console.time(timerId);
console.log();
console.log(timerId);
try {
console.time(timerId);
console.log();
console.log(timerId);
tests[name](wasm);
test(wasm);
console.timeEnd(timerId);
} catch (error) {
console.error();
console.error(error);
console.timeEnd(timerId);
} catch (error) {
console.error();
console.error(error);
failed.push(name);
}
});
failed.push(name);
}
});
if (failed.length) {
throw new Error(`\n*** ${name}: FAILED: ${failed.length} of ${count}: ${failed.join(', ')}`);
}
}
function runUnassisted (name) {
function runUnassisted (name, wasm) {
console.log(`\n*** ${name}: Running tests`);
beforeAll(name)
.then(() => runAll(name))
beforeAll(name, wasm)
.then(() => runAll(name, wasm))
.then(() => {
console.log(`\n*** ${name}: All passed`);
process.exit(0);
@@ -82,6 +83,5 @@ module.exports = {
beforeAll,
runAll,
runUnassisted,
tests,
wasm
tests
};
@@ -0,0 +1 @@
{ "type": "commonjs" }
+3 -2
View File
@@ -4,6 +4,7 @@
require('./alias-imports.cjs');
require('@polkadot/wasm-crypto/initOnlyAsm');
const { runUnassisted } = require('./all/index.cjs');
const wasm = require('../build');
const { runUnassisted } = require('./all/index.js');
runUnassisted('ASM');
runUnassisted('ASM', wasm);
+23
View File
@@ -0,0 +1,23 @@
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
import { createRequire } from 'https://deno.land/std@0.107.0/node/module.ts';
import * as wasm from '../build-deno/mod.ts';
declare const globalThis: Record<string, unknown>;
declare const Deno: {
test: (name: string, test: () => unknown) => unknown;
}
// ensure we set require on globalThis, it is used is all/*.js
const require = globalThis.require = createRequire(import.meta.url);
const { beforeAll, tests } = require('./all/index.js');
await beforeAll('wasm', wasm);
Object
.entries<(wasm: unknown) => void>(tests)
.forEach(([name, test]) => {
Deno.test(name, () => test(wasm));
});
+6 -5
View File
@@ -5,14 +5,15 @@
* @jest-environment jsdom
*/
import { beforeAll as beforeAllFn, tests, wasm } from './all/index.cjs';
import * as wasm from '../build';
import { beforeAll as beforeAllFn, tests } from './all/index.js';
describe('wasm-crypto', () => {
beforeAll(async () => {
await beforeAllFn('wasm');
await beforeAllFn('wasm', wasm);
});
Object.keys(tests).forEach((name) => {
it(name, () => tests[name](wasm));
});
it.each(Object.keys(tests))('%s', (name) =>
tests[name](wasm)
);
});
+3 -2
View File
@@ -3,6 +3,7 @@
require('./alias-imports.cjs');
const { runUnassisted } = require('./all/index.cjs');
const wasm = require('../build');
const { runUnassisted } = require('./all/index.js');
runUnassisted('WASM');
runUnassisted('WASM', wasm);
+3
View File
@@ -5,6 +5,9 @@
"outDir": "./build",
"rootDir": "./src"
},
"exclude": [
"**/test/*.ts"
],
"references": [
{ "path": "../wasm-bridge/tsconfig.build.json" },
{ "path": "../wasm-crypto-init/tsconfig.build.json" },
+2
View File
@@ -1 +1,3 @@
## @polkadot/wasm-util
Wasm utility functions, used internally in `@polkadot/wasm-crypto`.
+3 -3
View File
@@ -20,13 +20,13 @@
"./detectPackage.cjs"
],
"type": "module",
"version": "6.1.3",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.18.3"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.5.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
+25 -12
View File
@@ -1,31 +1,44 @@
// Copyright 2019-2022 @polkadot/wasm-util authors & contributors
// SPDX-License-Identifier: Apache-2.0
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
// Use an array for our indexer - this is faster than using map access. In
// this case we assume ASCII-only inputs, so we cannot overflow the array
const chr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const map = new Array<number>(256);
// We use charCodeAt for access here and in the decoder loop - this is faster
// on lookups (array + numbers) and also faster than accessing the specific
// character via data[i]
for (let i = 0; i < chr.length; i++) {
map[chr.charCodeAt(i)] = i;
}
/**
* @name base64Decode
* @description
* A fail-safe base64Decoding function that operates in all environments. Unlike
* decoding from Buffer (Node.js only) or atob (browser-only) this implementation
* is slightly slower, but it is platform independent.
* A base64Decoding function that operates in all environments. Unlike decoding
* from Buffer (Node.js only) or atob (browser-only) this implementation is
* slightly slower, but it is platform independent.
*
* For our usage, since we have access to the static final size (where used), we
* decode to a specified output buffer. This also means we have applied a number
* of optimizations based on this - checking output position instead of chars.
*/
export function base64Decode (data: string): Uint8Array {
// TODO: For Node.js speedups, we could add an explicit base64Node.ts implementation
// that would be (via export maps) be available in that environment only
const bytes = [];
export function base64Decode (data: string, out: Uint8Array): Uint8Array {
const len = out.length;
let byte = 0;
let bits = 0;
let pos = -1;
for (let i = 0; i < data.length && data[i] !== '='; i++) {
for (let i = 0; pos < len; i++) {
// each character represents 6 bits
byte = (byte << 6) | chars.indexOf(data[i]);
byte = (byte << 6) | map[data.charCodeAt(i)];
// each byte needs to contain 8 bits
if ((bits += 6) >= 8) {
bytes.push((byte >>> (bits -= 8)) & 0xff);
out[++pos] = (byte >>> (bits -= 8)) & 0xff;
}
}
return Uint8Array.from(bytes);
return out;
}
+1 -1
View File
@@ -3,4 +3,4 @@
// Do not edit, auto-generated by @polkadot/dev
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.1.3' };
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.4.1' };
+17 -11
View File
@@ -13,18 +13,24 @@ cd packages
PKG_NAME=wasm-crypto ../scripts/build-wasm.sh
yarn test:wasm-crypto:js
if [ -z "$WITH_DENO" ]; then
yarn test:wasm-crypto:js
else
yarn test:wasm-crypto:deno
fi
echo ""
echo "*** wasm-crypto"
ls -alR wasm-crypto/build
echo ""
echo "*** wasm-crypto-asmjs"
ls -alR wasm-crypto-asmjs/build
echo ""
echo "*** wasm-crypto-wasm"
ls -alR wasm-crypto-wasm/build
# echo ""
# echo "*** wasm-crypto"
# ls -alR wasm-crypto/build
# echo ""
# echo "*** wasm-crypto-asmjs"
# ls -alR wasm-crypto-asmjs/build
# echo ""
# echo "*** wasm-crypto-wasm"
# ls -alR wasm-crypto-wasm/build
cd ..
yarn build:rollup
if [ -z "$WITH_DENO" ]; then
yarn build:rollup
fi
+2 -2
View File
@@ -48,12 +48,12 @@ if [ ! -d "binaryen" ]; then
echo "*** Downloading binaryen"
curl -L $BINARYEN_REPO/releases/download/$BINARYEN_VER/$BINARYEN_ZIP.tar.gz | tar xz
mv binaryen-$BINARYEN_VER binaryen
ls -alR binaryen
# ls -alR binaryen
fi
if [ ! -d "bindgen" ]; then
echo "*** Downloading bindgen"
curl -L $BINDGEN_REPO/releases/download/$BINDGEN_VER/$BINDGEN_ZIP.tar.gz | tar xz
mv $BINDGEN_ZIP bindgen
ls -alR bindgen
# ls -alR bindgen
fi
+16 -20
View File
@@ -6,34 +6,30 @@ const fs = require('fs');
const mkdirp = require('mkdirp');
const { formatNumber } = require('@polkadot/util');
const DIR_DENO = `./${process.env.PKG_NAME}-wasm/build-deno/deno`;
const DIR_CJS = `./${process.env.PKG_NAME}-wasm/build/cjs`;
const HDR = `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors\n// SPDX-License-Identifier: Apache-2.0\n\n// Generated as part of the build, do not edit\n`;
const data = fs.readFileSync(`./${process.env.PKG_NAME}/build-wasm/wasm_opt.wasm`);
const compressed = Buffer.from(fflate.zlibSync(data, { level: 9 }));
const denoDir = `./${process.env.PKG_NAME}-wasm/build-deno/deno`;
const base64 = compressed.toString('base64');
console.log(`*** Compressed WASM: ${formatNumber(data.length)} -> ${formatNumber(compressed.length)} (${(100 * compressed.length / data.length).toFixed(2)}%)`);
console.log(`*** Compressed WASM: in=${formatNumber(data.length)}, out=${formatNumber(compressed.length)}, opt=${(100 * compressed.length / data.length).toFixed(2)}%, base64=${formatNumber(base64.length)}`);
mkdirp.sync(denoDir);
mkdirp.sync(DIR_DENO);
fs.writeFileSync(`./${process.env.PKG_NAME}-wasm/build/cjs/bytes.js`, `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
fs.writeFileSync(`${DIR_CJS}/bytes.js`, `${HDR}
const lenIn = ${compressed.length};
const lenOut = ${data.length};
const bytes = '${base64}';
// Generated as part of the build, do not edit
const sizeCompressed = ${compressed.length};
const sizeUncompressed = ${data.length};
const bytes = '${compressed.toString('base64')}';
module.exports = { bytes, sizeCompressed, sizeUncompressed };
module.exports = { bytes, lenIn, lenOut };
`);
fs.writeFileSync(`${denoDir}/bytes.js`, `// Copyright 2019-${new Date().getFullYear()} @polkadot/${process.env.PKG_NAME}-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
fs.writeFileSync(`${DIR_DENO}/bytes.js`, `${HDR}
export const lenIn = ${compressed.length};
// Generated as part of the build, do not edit
export const lenOut = ${data.length};
export const sizeCompressed = ${compressed.length};
export const sizeUncompressed = ${data.length};
export const bytes = '${compressed.toString('base64')}';
export const bytes = '${base64}';
`);
+3619 -1832
View File
File diff suppressed because it is too large Load Diff