@mocanetwork/airkit 0.5.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +177 -0
  2. package/dist/airkit.cjs.js +2662 -0
  3. package/dist/airkit.esm.js +2468 -0
  4. package/dist/airkit.umd.min.js +2 -0
  5. package/dist/airkit.umd.min.js.LICENSE.txt +12 -0
  6. package/dist/lib.cjs/common/src/error.js +25 -0
  7. package/dist/lib.cjs/common/src/realm/messaging/auth.js +28 -0
  8. package/dist/lib.cjs/common/src/realm/messaging/types.js +15 -0
  9. package/dist/lib.cjs/ws-embed/src/PopupHandler.js +64 -0
  10. package/dist/lib.cjs/ws-embed/src/airService.js +364 -0
  11. package/dist/lib.cjs/ws-embed/src/baseProvider.js +178 -0
  12. package/dist/lib.cjs/ws-embed/src/communicationProvider.js +346 -0
  13. package/dist/lib.cjs/ws-embed/src/embed.js +735 -0
  14. package/dist/lib.cjs/ws-embed/src/error.js +21 -0
  15. package/dist/lib.cjs/ws-embed/src/iframeController.js +68 -0
  16. package/dist/lib.cjs/ws-embed/src/inPageProvider.js +307 -0
  17. package/dist/lib.cjs/ws-embed/src/index.js +20 -0
  18. package/dist/lib.cjs/ws-embed/src/interfaces.js +29 -0
  19. package/dist/lib.cjs/ws-embed/src/isStream.js +20 -0
  20. package/dist/lib.cjs/ws-embed/src/loglevel.js +7 -0
  21. package/dist/lib.cjs/ws-embed/src/messageService.js +212 -0
  22. package/dist/lib.cjs/ws-embed/src/messages.js +22 -0
  23. package/dist/lib.cjs/ws-embed/src/siteMetadata.js +77 -0
  24. package/dist/lib.cjs/ws-embed/src/utils.js +95 -0
  25. package/dist/lib.esm/common/src/error.js +23 -0
  26. package/dist/lib.esm/common/src/realm/messaging/auth.js +26 -0
  27. package/dist/lib.esm/common/src/realm/messaging/types.js +13 -0
  28. package/dist/lib.esm/ws-embed/src/PopupHandler.js +62 -0
  29. package/dist/lib.esm/ws-embed/src/airService.js +362 -0
  30. package/dist/lib.esm/ws-embed/src/baseProvider.js +176 -0
  31. package/dist/lib.esm/ws-embed/src/communicationProvider.js +344 -0
  32. package/dist/lib.esm/ws-embed/src/embed.js +730 -0
  33. package/dist/lib.esm/ws-embed/src/error.js +18 -0
  34. package/dist/lib.esm/ws-embed/src/iframeController.js +66 -0
  35. package/dist/lib.esm/ws-embed/src/inPageProvider.js +302 -0
  36. package/dist/lib.esm/ws-embed/src/index.js +5 -0
  37. package/dist/lib.esm/ws-embed/src/interfaces.js +21 -0
  38. package/dist/lib.esm/ws-embed/src/isStream.js +15 -0
  39. package/dist/lib.esm/ws-embed/src/loglevel.js +5 -0
  40. package/dist/lib.esm/ws-embed/src/messageService.js +210 -0
  41. package/dist/lib.esm/ws-embed/src/messages.js +20 -0
  42. package/dist/lib.esm/ws-embed/src/siteMetadata.js +75 -0
  43. package/dist/lib.esm/ws-embed/src/utils.js +88 -0
  44. package/dist/types/PopupHandler.d.ts +24 -0
  45. package/dist/types/airService.d.ts +34 -0
  46. package/dist/types/baseProvider.d.ts +66 -0
  47. package/dist/types/common/custom.d.ts +4 -0
  48. package/dist/types/common/error.d.ts +17 -0
  49. package/dist/types/common/realm/error/auth.d.ts +1 -0
  50. package/dist/types/common/realm/error/types.d.ts +1 -0
  51. package/dist/types/common/realm/messaging/auth.d.ts +138 -0
  52. package/dist/types/common/realm/messaging/types.d.ts +95 -0
  53. package/dist/types/common/realm/partner/config.d.ts +68 -0
  54. package/dist/types/common/realm/user/types.d.ts +78 -0
  55. package/dist/types/common/realm/wallet/bybit/bybit.d.ts +2 -0
  56. package/dist/types/common/realm/wallet/coinbase/coinbase.d.ts +2 -0
  57. package/dist/types/common/realm/wallet/cryptoCom/cryptoCom.d.ts +2 -0
  58. package/dist/types/common/realm/wallet/index.d.ts +22 -0
  59. package/dist/types/common/realm/wallet/metamask/metamask.d.ts +2 -0
  60. package/dist/types/common/realm/wallet/okx/okx.d.ts +2 -0
  61. package/dist/types/common/realm/wallet/phantom/phantom.d.ts +2 -0
  62. package/dist/types/common/realm/wallet/rabby/rabby.d.ts +2 -0
  63. package/dist/types/common/realm/wallet/rainbow/rainbow.d.ts +2 -0
  64. package/dist/types/common/realm/wallet/trust/trust.d.ts +2 -0
  65. package/dist/types/common/types.d.ts +8 -0
  66. package/dist/types/common/utils.d.ts +2 -0
  67. package/dist/types/communicationProvider.d.ts +82 -0
  68. package/dist/types/embed.d.ts +42 -0
  69. package/dist/types/error.d.ts +9 -0
  70. package/dist/types/iframeController.d.ts +18 -0
  71. package/dist/types/inPageProvider.d.ts +106 -0
  72. package/dist/types/index.d.ts +4 -0
  73. package/dist/types/interfaces.d.ts +261 -0
  74. package/dist/types/isStream.d.ts +4 -0
  75. package/dist/types/loglevel.d.ts +3 -0
  76. package/dist/types/messageService.d.ts +51 -0
  77. package/dist/types/messages.d.ts +19 -0
  78. package/dist/types/siteMetadata.d.ts +9 -0
  79. package/dist/types/utils.d.ts +24 -0
  80. package/package.json +76 -0
package/README.md ADDED
@@ -0,0 +1,177 @@
1
+ # Air Kit
2
+
3
+ This SDK is part of the [Moca Network](https://moca.network/) offering and provides a convenient way to add Air Account Login, Air Id Minting and Air Account Management to your DApp.
4
+
5
+ ## ⚡ Quick Start
6
+
7
+ ```shell
8
+ npm install path/to/mocanetwork-airkit-0.5.0.tgz
9
+ ```
10
+
11
+ ### Initialize & Login
12
+
13
+ ```ts
14
+ import AirService, { EMBED_BUILD_ENV } from "@mocanetwork/airkit";
15
+
16
+ const service = new AirService({
17
+ partnerId: YOUR_PARTNER_ID,
18
+ });
19
+ await service.init({
20
+ buildEnv: EMBED_BUILD_ENV.STAGING,
21
+ enableLogging: true,
22
+ });
23
+ await embed.login();
24
+ ```
25
+
26
+ The AirService creates an iframe that loads the login flow and sets up communication streams between
27
+ the iframe and the DApp's javascript context.
28
+
29
+ ## 🔗 Installation
30
+
31
+ ### Bundling
32
+
33
+ This module is distributed in 3 formats
34
+
35
+ - `esm` build `dist/airkit.esm.js` is es6 format
36
+ - `commonjs` build `dist/airkit.cjs.js` in es5 format
37
+ - `umd` build `dist/airkit.umd.min.js` in es5 format without polyfilling corejs minified
38
+
39
+ By default, the appropriate format is used for your specified use case.
40
+ You can use a different format (if you know what you're doing) by referencing the correct file.
41
+
42
+ ### Dynamic Import
43
+
44
+ If not already, some node libraries need to be polyfilled.
45
+
46
+ <details>
47
+ <summary>Webpack</summary>
48
+ Install dev packages:
49
+
50
+ ```shell
51
+ npm install --save-dev node-polyfill-webpack-plugin
52
+ ```
53
+ Add following to your Webpack config:
54
+
55
+ ```js
56
+ const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
57
+
58
+ module.exports = {
59
+ webpack: {
60
+ plugins: [
61
+ new NodePolyfillPlugin({
62
+ additionalAliases: [
63
+ "buffer",
64
+ "crypto",
65
+ "assert",
66
+ "http",
67
+ "https",
68
+ "os",
69
+ "url",
70
+ "zlib",
71
+ "stream",
72
+ "_stream_duplex",
73
+ "_stream_passthrough",
74
+ "_stream_readable",
75
+ "_stream_writable",
76
+ "_stream_transform",
77
+ "process",
78
+ ],
79
+ }),
80
+ ],
81
+ },
82
+ };
83
+ ```
84
+ </details>
85
+
86
+ <details>
87
+ <summary>Vite</summary>
88
+ Install dev packages:
89
+
90
+ ```shell
91
+ npm install --save-dev vite-plugin-node-polyfills
92
+ ```
93
+ Add following to your Vite config:
94
+
95
+ ```js
96
+ import react from "@vitejs/plugin-react";
97
+ import { defineConfig } from "vite";
98
+ import { nodePolyfills } from "vite-plugin-node-polyfills";
99
+
100
+ // https://vitejs.dev/config/
101
+ export default defineConfig({
102
+ plugins: [
103
+ react(),
104
+ nodePolyfills({
105
+ include: [
106
+ "buffer",
107
+ "crypto",
108
+ "assert",
109
+ "http",
110
+ "https",
111
+ "os",
112
+ "url",
113
+ "zlib",
114
+ "stream",
115
+ "_stream_duplex",
116
+ "_stream_passthrough",
117
+ "_stream_readable",
118
+ "_stream_writable",
119
+ "_stream_transform",
120
+ ],
121
+ }),
122
+ ],
123
+ });
124
+ ```
125
+ </details>
126
+
127
+ ## Usage
128
+ Once the SDK is installed and the `AirService` successfully initialized, it can be used to authenticate users. Further, the native provider given by the embed instance can be used to let users interact with the blockchain.
129
+
130
+ ### Signing Example
131
+
132
+ <details open>
133
+ <summary>Using ethers</summary>
134
+
135
+ ```ts
136
+ const ethProvider = new BrowserProvider(service.provider, 'any');
137
+ const signer = await ethProvider.getSigner();
138
+ const signedMessage = await signer.signMessage('Your message');
139
+ ```
140
+ </details>
141
+
142
+ <details>
143
+ <summary>Using web3</summary>
144
+
145
+ ```ts
146
+ const web3 = new Web3(service.provider);
147
+ const signedMessage = await web3.eth.personal.sign(
148
+ 'Your message',
149
+ eoaAccount,
150
+ 'password',
151
+ );
152
+ ```
153
+ </details>
154
+
155
+ ### Sending Transaction Example
156
+
157
+ <details open>
158
+ <summary>Using ethers</summary>
159
+
160
+ ```ts
161
+ const transactionParams: TransactionRequest = {...};
162
+ const ethProvider = new BrowserProvider(service.provider, 'any');
163
+ const signer = await ethProvider.getSigner();
164
+ const response = signer.sendTransaction(transactionParams);
165
+ ```
166
+ </details>
167
+
168
+ <details>
169
+ <summary>Using web3</summary>
170
+
171
+ ```ts
172
+ const transactionParams: Transaction = {...};
173
+ const web3 = new Web3(service.provider);
174
+ const response = await web3.eth.sendTransaction(transactionParams);
175
+ ```
176
+ </details>
177
+