Compare commits

..
180 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
github-actions[bot] b29f959dda [CI Skip] release/stable 6.1.3
skip-checks: true
2022-06-21 16:09:09 +00:00
Jaco 7a5ec9d347 6.1.3 (#371) 2022-06-21 19:03:53 +03:00
github-actions[bot] 28ddad0549 [CI Skip] release/stable 6.1.2
skip-checks: true
2022-06-21 15:42:22 +00:00
Jaco 615746a323 6.1.2 (#370) 2022-06-21 18:36:19 +03:00
Jaco e49d5a3219 6.1.2 (#369) 2022-06-21 18:22:51 +03:00
github-actions[bot] a31f7cac0d [CI Skip] release/beta 6.1.2-15
skip-checks: true
2022-06-21 13:41:20 +00:00
Jaco 9b65fe6c86 CHANGELOG & additional comments (#368) 2022-06-21 16:35:45 +03:00
github-actions[bot] 3b5dcd41d9 [CI Skip] release/beta 6.1.2-14
skip-checks: true
2022-06-21 12:49:22 +00:00
Jaco f4db1385fc Bump dev (w/ stable deno publish) (#367) 2022-06-21 15:43:49 +03:00
github-actions[bot] 1b844254fe [CI Skip] release/beta 6.1.2-13
skip-checks: true
2022-06-21 05:26:46 +00:00
Jaco bf924e5da0 Adjust WebAssembly init (#365)
* Adjust WebAssembly init

* Adjust

* Re-add length check
2022-06-21 08:21:29 +03:00
github-actions[bot] da37be391e [CI Skip] release/beta 6.1.2-12
skip-checks: true
2022-06-21 04:54:13 +00:00
Jaco 2a44054387 Bump TS to 4.7.4 (#364) 2022-06-21 07:47:51 +03:00
github-actions[bot] 4c85c4d336 [CI Skip] release/beta 6.1.2-11
skip-checks: true
2022-06-18 10:33:32 +00:00
Jaco 03030ae93f Adjust assert inside withWasm (#363) 2022-06-18 13:26:50 +03:00
github-actions[bot] ed438e8877 [CI Skip] release/beta 6.1.2-10
skip-checks: true
2022-06-13 19:27:43 +00:00
Jaco e7700787b2 Bump dev (#362) 2022-06-13 22:22:41 +03:00
github-actions[bot] 6cccb7b9b0 [CI Skip] release/beta 6.1.2-9
skip-checks: true
2022-06-13 05:23:33 +00:00
Jaco f8678ed024 Bump dev deps (#361) 2022-06-13 08:18:37 +03:00
github-actions[bot] 9b48e3dd36 [CI Skip] release/beta 6.1.2-8
skip-checks: true
2022-06-12 08:20:04 +00:00
Jaco f5db698705 Update issue template (#360) 2022-06-12 11:15:01 +03:00
github-actions[bot] 2a24642220 [CI Skip] release/beta 6.1.2-7
skip-checks: true
2022-06-11 07:20:21 +00:00
Jaco 5cd8ea6926 Sprinkle in comments on the actual code (#359) 2022-06-11 10:15:03 +03:00
github-actions[bot] 633b33430a [CI Skip] release/beta 6.1.2-6
skip-checks: true
2022-06-11 05:27:28 +00:00
Jaco 341e57eeb5 Bump deps (w/ issue template) (#358)
* Bump deps (w/ issue template)

* Adjust

* Adjust
2022-06-11 08:22:18 +03:00
github-actions[bot] 2a9b79f086 [CI Skip] release/beta 6.1.2-5
skip-checks: true
2022-06-04 05:22:54 +00:00
Jaco fc5a7bf9ce Bump @polkadot/util (#357) 2022-06-04 08:17:13 +03:00
github-actions[bot] fbb57dc9ca [CI Skip] release/beta 6.1.2-4
skip-checks: true
2022-06-04 04:51:04 +00:00
Jaco 2358984605 Bump deps (#356) 2022-06-04 07:45:46 +03:00
github-actions[bot] 28ae0b8963 [CI Skip] release/beta 6.1.2-3
skip-checks: true
2022-05-30 07:32:00 +00:00
Jaco 4e316440b9 Bump TS (#355) 2022-05-30 10:26:43 +03:00
github-actions[bot] f9c65c8fb2 [CI Skip] release/beta 6.1.2-2
skip-checks: true
2022-05-29 08:57:09 +00:00
Jaco d3c5d1a617 Adjust eslint ignore (#354)
* Adjust eslint ignore

* Update .eslintrc.js
2022-05-29 11:50:17 +03:00
github-actions[bot] b57cdaef14 [CI Skip] release/beta 6.1.2-1
skip-checks: true
2022-05-29 08:37:22 +00:00
Jaco 1f2ad4ea36 Bump deps (#353) 2022-05-29 11:32:02 +03:00
github-actions[bot] 4c3537d869 [CI Skip] release/beta 6.1.2-0
skip-checks: true
2022-05-13 19:38:44 +00:00
Jaco 6f1ff9f276 Bump base common (#351) 2022-05-13 22:32:01 +03:00
82 changed files with 4531 additions and 2190 deletions
-8
View File
@@ -1,8 +0,0 @@
7
3.2.2
3.2.3
3.2.4
4.0.2
4.1.2
+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/*',
'packages/bytes/*'
'**/test/*.ts'
],
parserOptions: {
...base.parserOptions,
+86
View File
@@ -0,0 +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.
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 ...**
<!---
REQUIRED:
Classify the type of report your are submitting
-->
- [ ] Bug report
- [ ] Feature request
- [ ] Support request
- [ ] Other
* **What is the current behavior and expected behavior?**
<!---
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?**
<!---
OPTIONAL:
Suggest a motivation for the request or ideas how to implement the
addition or change
-->
* **Please tell us about your environment:**
<!---
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)
- Language:
- [ ] JavaScript
- [ ] 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 -5
View File
@@ -1,18 +1,16 @@
binaryen/
bindgen/
build/
build-cjs/
build-esm/
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
+69
View File
@@ -1,5 +1,74 @@
# 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:
- Fix bundle publish (from dev bump)
## 6.1.2 Jun 21, 2022
Changes:
- Adjust assert usage in all internal non-test code
- Additional comments where missing
## 6.1.1 May 13, 2022
Changes:
+1 -1
View File
@@ -1,4 +1,4 @@
417 Jaco 6.1.1 (#350)
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.1",
"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.17.10",
"@polkadot/dev": "^0.66.21",
"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.6.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.1",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.17.9"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.1.1",
"@polkadot/x-randomvalues": "^9.1.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*",
+67 -6
View File
@@ -1,14 +1,27 @@
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
// SPDX-License-Identifier: Apache-2.0
// A number of functions are "unsafe" and purposefully so - it is
// assumed that where the bridge is used, it is correctly wrapped
// in a safeguard (see withWasm in the wasm-crypto package) which
// 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';
import { Wbg } from './wbg';
/**
* @name Bridge
* @description
* Creates a bridge between the JS and WASM environments.
*
* For any bridge it is passed an function white is then called internally at the
* time of initialization. This affectively implements the layer between WASM and
* the native environment, providing all the plumbing needed for the Wbg classes.
*/
export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
#cachegetInt32: Int32Array | null;
#cachegetUint8: Uint8Array | null;
@@ -18,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>) {
@@ -36,22 +49,22 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
this.#wbg = { ...new Wbg(this) };
}
/** @description Returns the init error */
get error (): string | null {
return this.#wasmError;
}
/** @description Returns the init type */
get type (): 'asm' | 'wasm' | 'none' {
return this.#type;
}
get wbg (): WebAssembly.ModuleImports {
return this.#wbg;
}
/** @description Returns the created wasm interface */
get wasm (): C | null {
return this.#wasm;
}
/** @description Performs the wasm initialization */
async init (createWasm?: InitFn<C>): Promise<C | null> {
if (!this.#wasmPromise || createWasm) {
this.#wasmPromise = (createWasm || this.#createWasm)(this.#wbg);
@@ -66,10 +79,18 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return this.#wasm;
}
/**
* @internal
* @description Gets an object from the heap
*/
getObject (idx: number): unknown {
return this.#heap[idx];
}
/**
* @internal
* @description Removes an object from the heap
*/
dropObject (idx: number) {
if (idx < 36) {
return;
@@ -79,6 +100,10 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
this.#heapNext = idx;
}
/**
* @internal
* @description Retrieves and removes an object to the heap
*/
takeObject (idx: number): unknown {
const ret = this.getObject(idx);
@@ -87,6 +112,10 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return ret;
}
/**
* @internal
* @description Adds an object to the heap
*/
addObject (obj: unknown): number {
if (this.#heapNext === this.#heap.length) {
this.#heap.push(this.#heap.length + 1);
@@ -100,6 +129,10 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return idx;
}
/**
* @internal
* @description Retrieve an Int32 in the WASM interface
*/
getInt32 (): Int32Array {
if (this.#cachegetInt32 === null || this.#cachegetInt32.buffer !== this.#wasm!.memory.buffer) {
this.#cachegetInt32 = new Int32Array(this.#wasm!.memory.buffer);
@@ -108,6 +141,10 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return this.#cachegetInt32;
}
/**
* @internal
* @description Retrieve an Uint8Array in the WASM interface
*/
getUint8 (): Uint8Array {
if (this.#cachegetUint8 === null || this.#cachegetUint8.buffer !== this.#wasm!.memory.buffer) {
this.#cachegetUint8 = new Uint8Array(this.#wasm!.memory.buffer);
@@ -116,14 +153,26 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return this.#cachegetUint8;
}
/**
* @internal
* @description Retrieves an Uint8Array in the WASM interface
*/
getU8a (ptr: number, len: number): Uint8Array {
return this.getUint8().subarray(ptr / 1, ptr / 1 + len);
}
/**
* @internal
* @description Retrieves a string in the WASM interface
*/
getString (ptr: number, len: number): string {
return u8aToString(this.getU8a(ptr, len));
}
/**
* @internal
* @description Allocates an Uint8Array in the WASM interface
*/
allocU8a (arg: Uint8Array): [number, number] {
const ptr = this.#wasm!.__wbindgen_malloc(arg.length * 1);
@@ -132,10 +181,18 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return [ptr, arg.length];
}
/**
* @internal
* @description Allocates a string in the WASM interface
*/
allocString (arg: string): [number, number] {
return this.allocU8a(stringToU8a(arg));
}
/**
* @internal
* @description Retrieves an Uint8Array from the WASM interface
*/
resultU8a (): Uint8Array {
const r0 = this.getInt32()[8 / 4 + 0];
const r1 = this.getInt32()[8 / 4 + 1];
@@ -146,6 +203,10 @@ export class Bridge<C extends WasmBaseInstance> implements BridgeBase<C> {
return ret;
}
/**
* @internal
* @description Retrieve a string from the WASM interface
*/
resultString (): string {
return u8aToString(this.resultU8a());
}
-1
View File
@@ -3,4 +3,3 @@
export * from './bridge';
export * from './init';
export * from './wbg';
+17 -7
View File
@@ -1,12 +1,18 @@
// 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';
import { assert } from '@polkadot/util';
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> => {
/**
* @name createWasmFn
* @description
* Create a WASM (or ASM.js) creator interface based on the supplied information.
*
* 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: WasmImports) => C)): InitFn<C> {
return async (wbg: WasmImports): InitPromise<C> => {
const result: InitResult<C> = {
error: null,
type: 'none',
@@ -14,7 +20,11 @@ export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmByt
};
try {
assert(typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function' && wasmBytes && wasmBytes.length, 'WebAssembly is not available in your environment');
if (!wasmBytes || !wasmBytes.length) {
throw new Error('No WebAssembly provided for initialization');
} else if (typeof WebAssembly !== 'object' || typeof WebAssembly.instantiate !== 'function') {
throw new Error('WebAssembly is not available in your environment');
}
const source = await WebAssembly.instantiate(wasmBytes, { wbg });
@@ -22,7 +32,7 @@ export function createWasmFn <C extends WasmBaseInstance> (root: string, wasmByt
result.type = 'wasm';
} catch (error) {
// if we have a valid supplied asm.js, return that
if (asmFn) {
if (typeof asmFn === 'function') {
result.wasm = asmFn(wbg);
result.type = 'asm';
} else {
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
// SPDX-License-Identifier: Apache-2.0
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-bridge', path: 'auto', type: 'auto', version: '6.1.1' };
export const packageInfo = { name: '@polkadot/wasm-bridge', path: 'auto', type: 'auto', version: '6.4.1' };
+9 -5
View File
@@ -1,7 +1,13 @@
// Copyright 2019-2022 @polkadot/wasm-bridge authors & contributors
// SPDX-License-Identifier: Apache-2.0
/* eslint-disable camelcase */
// 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;
@@ -11,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;
@@ -32,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)
+21 -4
View File
@@ -8,6 +8,17 @@ import { getRandomValues } from '@polkadot/x-randomvalues';
const DEFAULT_CRYPTO = { getRandomValues };
const DEFAULT_SELF = { crypto: DEFAULT_CRYPTO };
/**
* @name Wbg
* @description
* This defines the internal interfaces that wasm-bindgen used to communicate
* with the host layer. None of these functions are available to the user, rather
* they are called internally from the WASM code itself.
*
* The interfaces here are exposed in the imports on the created WASM interfaces.
*
* Internally the implementation does a thin layer into the supplied bridge.
*/
export class Wbg<C extends WasmBaseInstance> {
#bridge: BridgeBase<C>;
@@ -15,41 +26,50 @@ export class Wbg<C extends WasmBaseInstance> {
this.#bridge = bridge;
}
/** @internal */
abort = (): never => {
throw new Error('abort');
};
/** @internal */
__wbindgen_is_undefined = (idx: number): boolean => {
return this.#bridge.getObject(idx) === undefined;
};
/** @internal */
__wbindgen_throw = (ptr: number, len: number): boolean => {
throw new Error(this.#bridge.getString(ptr, len));
};
/** @internal */
__wbg_self_1b7a39e3a92c949c = (): number => {
return this.#bridge.addObject(DEFAULT_SELF);
};
/** @internal */
__wbg_require_604837428532a733 = (ptr: number, len: number): never => {
throw new Error(`Unable to require ${this.#bridge.getString(ptr, len)}`);
};
/** @internal */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
__wbg_crypto_968f1772287e2df0 = (_idx: number): number => {
return this.#bridge.addObject(DEFAULT_CRYPTO);
};
/** @internal */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
__wbg_getRandomValues_a3d34b4fee3c2869 = (_idx: number): number => {
return this.#bridge.addObject(DEFAULT_CRYPTO.getRandomValues);
};
/** @internal */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
__wbg_getRandomValues_f5e14ab7ac8e995d = (_arg0: number, ptr: number, len: number): void => {
DEFAULT_CRYPTO.getRandomValues(this.#bridge.getU8a(ptr, len));
};
/** @internal */
// eslint-disable-next-line @typescript-eslint/no-unused-vars
__wbg_randomFillSync_d5bd2d655fdf256a = (_idx: number, _ptr: number, _len: number): never => {
throw new Error('randomFillsync is not available');
@@ -57,11 +77,8 @@ export class Wbg<C extends WasmBaseInstance> {
// getObject(idx).randomFillSync(getU8a(ptr, len));
};
/** @internal */
__wbindgen_object_drop_ref = (idx: number): void => {
this.#bridge.takeObject(idx);
};
}
export function initWbg <C extends WasmBaseInstance> (bridge: BridgeBase<C>): Wbg<C> {
return new Wbg(bridge);
}
+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.1",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.17.9"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.1.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-asmjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export declare const asmJsInit: null;
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-asmjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const asmJsInit = null;
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-asmjs authors & contributors
// SPDX-License-Identifier: Apache-2.0
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.1' };
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.1",
"version": "6.4.1",
"browser": "wasm.js",
"main": "wasm.js",
"react-native": "asm.js",
"dependencies": {
"@babel/runtime": "^7.17.9",
"@polkadot/wasm-bridge": "6.1.1",
"@polkadot/wasm-crypto-asmjs": "6.1.1",
"@polkadot/wasm-crypto-wasm": "6.1.1"
"@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.1.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+6 -1
View File
@@ -9,4 +9,9 @@ import { asmJsInit } from '@polkadot/wasm-crypto-asmjs';
export { packageInfo } from './packageInfo';
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', null, asmJsInit);
/**
* @name createWasm
* @description
* Creates an interface using only ASM.js
*/
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', null, asmJsInit);
+6 -1
View File
@@ -10,4 +10,9 @@ import { wasmBytes } from '@polkadot/wasm-crypto-wasm';
export { packageInfo } from './packageInfo';
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', wasmBytes, asmJsInit);
/**
* @name createWasm
* @description
* Creates an interface using WASM and a fallback ASM.js
*/
export const createWasm: InitFn<WasmCryptoInstance> = /*#__PURE__*/ createWasmFn('crypto', wasmBytes, asmJsInit);
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-init authors & contributors
// SPDX-License-Identifier: Apache-2.0
export * from './wasm';
+6 -1
View File
@@ -8,4 +8,9 @@ import { createWasmFn } from '@polkadot/wasm-bridge';
export { packageInfo } from './packageInfo';
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', null, null);
/**
* @name createWasm
* @description
* Creates an interface using no WASM and no ASM.js
*/
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.1' };
export const packageInfo = { name: '@polkadot/wasm-crypto-init', path: 'auto', type: 'auto', version: '6.4.1' };
+6 -1
View File
@@ -9,4 +9,9 @@ import { wasmBytes } from '@polkadot/wasm-crypto-wasm';
export { packageInfo } from './packageInfo';
export const createWasm: InitFn<WasmCryptoInstance> = createWasmFn('crypto', wasmBytes, null);
/**
* @name createWasm
* @description
* Creates an interface using only WASM
*/
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.1",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.17.9",
"@polkadot/wasm-util": "6.1.1"
"@babel/runtime": "^7.20.6",
"@polkadot/wasm-util": "6.4.1"
},
"devDependencies": {
"@polkadot/util": "^9.1.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
+11 -2
View File
@@ -3,8 +3,17 @@
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';
export const wasmBytes = unzlibSync(base64Decode(bytes), new Uint8Array(sizeUncompressed));
/**
* @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 = /*#__PURE__*/ unzlibSync(base64Decode(bytes, new Uint8Array(lenIn)), new Uint8Array(lenOut));
+5 -3
View File
@@ -1,6 +1,8 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
export declare const bytes = '';
export declare const sizeCompressed = 0;
export declare const sizeUncompressed = 0;
export declare const bytes: string;
export declare const lenIn: 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;
+8
View File
@@ -0,0 +1,8 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
export declare const bytes: string;
export declare const lenIn: number;
export declare const lenOut: number;
@@ -0,0 +1,8 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
export const bytes = '';
export const lenIn = 0;
export const lenOut = 0;
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto-wasm authors & contributors
// SPDX-License-Identifier: Apache-2.0
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.1' };
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.1",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.17.9",
"@polkadot/wasm-bridge": "6.1.1",
"@polkadot/wasm-crypto-asmjs": "6.1.1",
"@polkadot/wasm-crypto-init": "6.1.1",
"@polkadot/wasm-crypto-wasm": "6.1.1",
"@polkadot/wasm-util": "6.1.1"
"@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.1.1"
"@polkadot/util": "^10.1.14",
"@polkadot/x-randomvalues": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
"@polkadot/util": "*",
"@polkadot/x-randomvalues": "*"
}
}
+52 -35
View File
@@ -3,213 +3,230 @@
import type { WasmCryptoInstance } from '@polkadot/wasm-crypto-init/types';
import { assert } from '@polkadot/util';
import { bridge, initBridge } from './init';
export { packageInfo } from './packageInfo';
export { bridge };
// Removes the first parameter (expected as WasmCryptoInstance) and leaves the
// rest of the parameters in-tack. This allows us to dynamically create a function
// return from the withWasm helper
type PopFirst<T extends unknown[]> =
T extends [WasmCryptoInstance, ...infer N]
? N
: [];
/**
* @internal
* @description
* This create an extenal interface function from the signature, all the while checking
* the actual bridge wasm interface to ensure it has been initialized.
*
* This means that we can call it
*
* withWasm(wasm: WasmCryptoInstance, a: number, b: string) => Uint8Array
*
* and in this case it will create an interface function with the signarure
*
* (a: number, b: string) => Uint8Array
*/
function withWasm <T, F extends (wasm: WasmCryptoInstance, ...params: never[]) => T> (fn: F): (...params: PopFirst<Parameters<F>>) => ReturnType<F> {
return (...params: PopFirst<Parameters<F>>): ReturnType<F> => {
assert(bridge.wasm, 'The WASM interface has not been initialized. Ensure that you wait for the initialization Promise with waitReady() from @polkadot/wasm-crypto (or cryptoWaitReady() from @polkadot/util-crypto) before attempting to use WASM-only interfaces.');
if (!bridge.wasm) {
throw new Error('The WASM interface has not been initialized. Ensure that you wait for the initialization Promise with waitReady() from @polkadot/wasm-crypto (or cryptoWaitReady() from @polkadot/util-crypto) before attempting to use WASM-only interfaces.');
}
return fn(bridge.wasm, ...params) as ReturnType<F>;
};
}
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();
+11
View File
@@ -7,8 +7,19 @@ import type { WasmCryptoInstance } from '@polkadot/wasm-crypto-init/types';
import { Bridge } from '@polkadot/wasm-bridge';
import { createWasm } from '@polkadot/wasm-crypto-init';
/**
* @name bridge
* @description
* The JS <-> WASM bridge that is in operation. For the specific package
* it is a global, i.e. all operations happens on this specific bridge
*/
export const bridge = new Bridge<WasmCryptoInstance>(createWasm);
/**
* @name initBridge
* @description
* Creates a new bridge interface with the (optional) initialization function
*/
export async function initBridge (createWasm?: InitFn<WasmCryptoInstance>): Promise<WasmCryptoInstance | null> {
return bridge.init(createWasm);
}
+9
View File
@@ -5,6 +5,15 @@ import { createWasm } from '@polkadot/wasm-crypto-init/none';
import { initBridge } from './init';
/**
* @name initWasm
* @description
* For historic purposes and for tighter control on init, specifically performing
* a WASM initialization with no interface whatsoever (no WASM, no ASM.js)
*
* Generally should not be used unless you want explicit control over which
* interfaces are initialized.
*/
export async function initWasm (): Promise<void> {
await initBridge(createWasm);
}
+9
View File
@@ -5,6 +5,15 @@ import { createWasm } from '@polkadot/wasm-crypto-init/asm';
import { initBridge } from './init';
/**
* @name initWasm
* @description
* For historic purposes and for tighter control on init, specifically performing
* a WASM initialization with only ASM.js
*
* Generally should not be used unless you want explicit control over which
* interfaces are initialized.
*/
export async function initWasm (): Promise<void> {
await initBridge(createWasm);
}
+9
View File
@@ -5,6 +5,15 @@ import { createWasm } from '@polkadot/wasm-crypto-init/wasm';
import { initBridge } from './init';
/**
* @name initWasm
* @description
* For historic purposes and for tighter control on init, specifically performing
* a WASM initialization with only WASM (generally the default for most platforms)
*
* Generally should not be used unless you want explicit control over which
* interfaces are initialized.
*/
export async function initWasm (): Promise<void> {
await initBridge(createWasm);
}
+9
View File
@@ -5,6 +5,15 @@ import { createWasm } from '@polkadot/wasm-crypto-init/both';
import { initBridge } from './init';
/**
* @name initWasm
* @description
* For historic purposes and for tighter control on init, specifically performing
* a WASM initialization with ASM and an ASM.js fallback
*
* Generally should not be used unless you want explicit control over which
* interfaces are initialized.
*/
export async function initWasm (): Promise<void> {
await initBridge(createWasm);
}
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-crypto authors & contributors
// SPDX-License-Identifier: Apache-2.0
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', path: 'auto', type: 'auto', version: '6.1.1' };
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.1",
"version": "6.4.1",
"main": "index.js",
"dependencies": {
"@babel/runtime": "^7.17.9"
"@babel/runtime": "^7.20.6"
},
"devDependencies": {
"@polkadot/util": "^9.1.1"
"@polkadot/util": "^10.1.14"
},
"peerDependencies": {
"@polkadot/util": "*"
+29 -7
View File
@@ -1,22 +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);
export function base64Decode (data: string): Uint8Array {
const bytes = [];
// 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 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, 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;
}
+4
View File
@@ -0,0 +1,4 @@
// Copyright 2019-2022 @polkadot/wasm-util authors & contributors
// SPDX-License-Identifier: Apache-2.0
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-util', path: 'auto', type: 'auto', version: '6.1.1' };
export const packageInfo = { name: '@polkadot/wasm-util', path: 'auto', type: 'auto', version: '6.4.1' };
+13
View File
@@ -10,6 +10,8 @@ source ../scripts/rust-version.sh
WSM=$PKG_NAME/build-wasm/wasm_bg.wasm
OPT=$PKG_NAME/build-wasm/wasm_opt.wasm
ASM=$PKG_NAME-asmjs/build/cjs/data.js
DENO_DIR=$PKG_NAME-asmjs/build-deno/deno
DENO_ASM=$DENO_DIR/data.js
# build new via wasm-pack
echo "*** Building Rust sources"
@@ -36,11 +38,22 @@ node ../scripts/pack-wasm-base.cjs
echo "*** Building asm.js version"
../binaryen/bin/wasm2js -Oz --output $ASM $OPT
# copy the deno version
mkdir -p $DENO_DIR
cp $ASM $DENO_ASM
# cleanup the generated asm, converting to cjs
sed -i -e '/import {/d' $ASM
sed -i -e '1,/var retasmFunc = /!d' $ASM
sed -i -e 's/var retasmFunc = .*/const asmJsInit = (wbg) => asmFunc(wbg);\n\nmodule.exports = { asmJsInit };/g' $ASM
# same as the cjs version, this time for deno
sed -i -e '/import {/d' $DENO_ASM
sed -i -e '1,/var retasmFunc = /!d' $DENO_ASM
sed -i -e 's/var retasmFunc = .*/export const asmJsInit = (wbg) => asmFunc(wbg);/g' $DENO_ASM
# cleanups
rm -rf $PKG_NAME-asmjs/build/cjs/*-e
rm -rf $PKG_NAME-asmjs/build-deno/deno/*-e
rm -rf $PKG_NAME-wasm/build/cjs/*-e
rm -rf $PKG_NAME-wasm/build-deno/deno/*-e
+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
+21 -9
View File
@@ -3,21 +3,33 @@
const fflate = require('fflate/node');
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 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)}`);
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
mkdirp.sync(DIR_DENO);
// Generated as part of the build, do not edit
fs.writeFileSync(`${DIR_CJS}/bytes.js`, `${HDR}
const lenIn = ${compressed.length};
const lenOut = ${data.length};
const bytes = '${base64}';
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(`${DIR_DENO}/bytes.js`, `${HDR}
export const lenIn = ${compressed.length};
export const lenOut = ${data.length};
export const bytes = '${base64}';
`);
+3799 -1952
View File
File diff suppressed because it is too large Load Diff