unwallet-client-sdk 0.14.0 → 0.15.0

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.
package/README.md CHANGED
@@ -1,22 +1,8 @@
1
1
  # unWallet client-side SDK
2
2
 
3
- :warning: This SDK works correctly only on web browsers.
4
-
5
- ## Installation
6
-
7
- ```
8
- npm install unwallet-client-sdk
9
- ```
3
+ [![npm version](https://badgen.net/npm/v/unwallet-client-sdk)](https://npm.im/unwallet-client-sdk)
10
4
 
11
- ## Initialization
12
-
13
- ```js
14
- import { UnWallet } from "unwallet-client-sdk";
15
-
16
- const unWallet = await UnWallet.init({
17
- clientID: "CLIENT_ID_OF_YOUR_APPLICATION",
18
- });
19
- ```
5
+ :warning: This SDK works correctly only on web browsers.
20
6
 
21
7
  ## Usage
22
8
 
@@ -1,5 +1,29 @@
1
- import { Config, UnWalletConfig, SignResult, SendTransactionResult } from "./types";
2
- export declare class UnWallet {
1
+ declare const VALID_ENVS: readonly ["prod", "dev"];
2
+
3
+ type Env = (typeof VALID_ENVS)[number];
4
+ interface Config {
5
+ clientID: string;
6
+ env?: Env;
7
+ }
8
+ interface UnWalletConfig {
9
+ frontend: UnWalletFrontendConfig;
10
+ xapi: UnWalletXAPIConfig;
11
+ }
12
+ interface UnWalletFrontendConfig {
13
+ baseURL: string;
14
+ }
15
+ interface UnWalletXAPIConfig {
16
+ url: string;
17
+ }
18
+ interface SignResult {
19
+ digest: string;
20
+ signature: string;
21
+ }
22
+ interface SendTransactionResult {
23
+ transactionID: string;
24
+ }
25
+
26
+ declare class UnWallet {
3
27
  private config;
4
28
  private unWalletConfig;
5
29
  private ws;
@@ -32,4 +56,5 @@ export declare class UnWallet {
32
56
  private handleWSMessage;
33
57
  private openWindow;
34
58
  }
35
- //# sourceMappingURL=unwallet.d.ts.map
59
+
60
+ export { type Config, type SendTransactionResult, type SignResult, UnWallet };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,60 @@
1
- export { Config, SignResult, SendTransactionResult } from "./types";
2
- export { UnWallet } from "./unwallet";
3
- //# sourceMappingURL=index.d.ts.map
1
+ declare const VALID_ENVS: readonly ["prod", "dev"];
2
+
3
+ type Env = (typeof VALID_ENVS)[number];
4
+ interface Config {
5
+ clientID: string;
6
+ env?: Env;
7
+ }
8
+ interface UnWalletConfig {
9
+ frontend: UnWalletFrontendConfig;
10
+ xapi: UnWalletXAPIConfig;
11
+ }
12
+ interface UnWalletFrontendConfig {
13
+ baseURL: string;
14
+ }
15
+ interface UnWalletXAPIConfig {
16
+ url: string;
17
+ }
18
+ interface SignResult {
19
+ digest: string;
20
+ signature: string;
21
+ }
22
+ interface SendTransactionResult {
23
+ transactionID: string;
24
+ }
25
+
26
+ declare class UnWallet {
27
+ private config;
28
+ private unWalletConfig;
29
+ private ws;
30
+ private connectionID;
31
+ private resolve;
32
+ private reject;
33
+ constructor(config: Config, unWalletConfig: UnWalletConfig, ws: WebSocket);
34
+ private initPromiseArgs;
35
+ static init(config: Config): Promise<UnWallet>;
36
+ authorize(args: {
37
+ responseMode?: string;
38
+ redirectURL: string;
39
+ nonce?: string;
40
+ isVirtual?: boolean;
41
+ chainID?: number;
42
+ }): void;
43
+ sign(args: {
44
+ message: string;
45
+ ticketToken: string;
46
+ }): Promise<SignResult>;
47
+ sendTransaction(args: {
48
+ chainID: number;
49
+ toAddress: string;
50
+ value?: string;
51
+ data?: string;
52
+ ticketToken: string;
53
+ }): Promise<SendTransactionResult>;
54
+ private getConnectionID;
55
+ private sendWSMessage;
56
+ private handleWSMessage;
57
+ private openWindow;
58
+ }
59
+
60
+ export { type Config, type SendTransactionResult, type SignResult, UnWallet };
package/dist/index.js CHANGED
@@ -1,5 +1,218 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnWallet = void 0;
4
- var unwallet_1 = require("./unwallet");
5
- Object.defineProperty(exports, "UnWallet", { enumerable: true, get: function () { return unwallet_1.UnWallet; } });
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ UnWallet: () => UnWallet
24
+ });
25
+ module.exports = __toCommonJS(index_exports);
26
+
27
+ // src/unwallet.ts
28
+ var import_ethers = require("ethers");
29
+
30
+ // src/consts.ts
31
+ var UNWALLET_CONFIG_PROD = {
32
+ frontend: {
33
+ baseURL: "https://id.unwallet.world"
34
+ },
35
+ xapi: {
36
+ url: "wss://xapi.id.unwallet.world"
37
+ }
38
+ };
39
+ var UNWALLET_CONFIG_DEV = {
40
+ frontend: {
41
+ baseURL: "http://localhost:4200"
42
+ },
43
+ xapi: {
44
+ url: "wss://xapi.id.test.unwallet.dev"
45
+ }
46
+ };
47
+
48
+ // src/unwallet.ts
49
+ var UnWallet = class _UnWallet {
50
+ constructor(config, unWalletConfig, ws) {
51
+ this.resolve = null;
52
+ this.reject = null;
53
+ this.config = config;
54
+ this.unWalletConfig = unWalletConfig;
55
+ this.ws = ws;
56
+ this.connectionID = "";
57
+ this.initPromiseArgs();
58
+ }
59
+ initPromiseArgs() {
60
+ this.resolve = () => {
61
+ };
62
+ this.reject = () => {
63
+ };
64
+ }
65
+ static init(config) {
66
+ return new Promise((resolve, reject) => {
67
+ if (config.env === void 0) {
68
+ config.env = "prod";
69
+ }
70
+ let unWalletConfig;
71
+ {
72
+ switch (config.env) {
73
+ case "prod":
74
+ unWalletConfig = UNWALLET_CONFIG_PROD;
75
+ break;
76
+ case "dev":
77
+ unWalletConfig = UNWALLET_CONFIG_DEV;
78
+ break;
79
+ }
80
+ }
81
+ const ws = new WebSocket(unWalletConfig.xapi.url);
82
+ {
83
+ ws.onerror = () => {
84
+ reject("websocket connection failed");
85
+ };
86
+ ws.onopen = () => {
87
+ unWallet.getConnectionID();
88
+ };
89
+ ws.onmessage = (event) => {
90
+ const msg = JSON.parse(event.data);
91
+ if (msg.type === "connectionID") {
92
+ unWallet.connectionID = msg.value;
93
+ resolve(unWallet);
94
+ return;
95
+ }
96
+ unWallet.handleWSMessage(msg);
97
+ };
98
+ }
99
+ const unWallet = new _UnWallet(config, unWalletConfig, ws);
100
+ });
101
+ }
102
+ authorize(args) {
103
+ if (!args.responseMode) {
104
+ args.responseMode = "fragment";
105
+ }
106
+ let url = new URL(
107
+ `${this.unWalletConfig.frontend.baseURL}/${args.isVirtual === false ? "" : "v"}authorize`
108
+ );
109
+ {
110
+ url.searchParams.set("response_type", "id_token");
111
+ url.searchParams.set("response_mode", args.responseMode);
112
+ url.searchParams.set("client_id", this.config.clientID);
113
+ url.searchParams.set("scope", "openid");
114
+ url.searchParams.set("redirect_uri", args.redirectURL);
115
+ if (args.nonce !== void 0) {
116
+ url.searchParams.set("nonce", args.nonce);
117
+ }
118
+ if (args.chainID !== void 0) {
119
+ url.searchParams.set("chain_id", args.chainID.toString());
120
+ }
121
+ }
122
+ location.assign(url.toString());
123
+ }
124
+ sign(args) {
125
+ return new Promise((resolve, reject) => {
126
+ this.resolve = (sig) => {
127
+ resolve({
128
+ digest: import_ethers.ethers.sha256(import_ethers.ethers.toUtf8Bytes(args.message)),
129
+ signature: sig
130
+ });
131
+ };
132
+ this.reject = reject;
133
+ const url = new URL(`${this.unWalletConfig.frontend.baseURL}/x/sign`);
134
+ {
135
+ url.searchParams.set("connectionID", this.connectionID);
136
+ url.searchParams.set("clientID", this.config.clientID);
137
+ url.searchParams.set("message", args.message);
138
+ url.searchParams.set("ticketToken", args.ticketToken);
139
+ }
140
+ this.openWindow(url);
141
+ });
142
+ }
143
+ sendTransaction(args) {
144
+ return new Promise((resolve, reject) => {
145
+ if (args.value === void 0 && args.data === void 0) {
146
+ throw new Error("either value or data required");
147
+ }
148
+ this.resolve = (txID) => {
149
+ resolve({ transactionID: txID });
150
+ };
151
+ this.reject = reject;
152
+ const url = new URL(
153
+ `${this.unWalletConfig.frontend.baseURL}/x/sendTransaction`
154
+ );
155
+ {
156
+ url.searchParams.set("connectionID", this.connectionID);
157
+ url.searchParams.set("clientID", this.config.clientID);
158
+ url.searchParams.set("chainID", args.chainID.toString());
159
+ url.searchParams.set("toAddress", args.toAddress);
160
+ url.searchParams.set(
161
+ "value",
162
+ args.value !== void 0 ? args.value : "0x0"
163
+ );
164
+ url.searchParams.set(
165
+ "data",
166
+ args.data !== void 0 ? args.data : "0x"
167
+ );
168
+ url.searchParams.set("ticketToken", args.ticketToken);
169
+ }
170
+ this.openWindow(url);
171
+ });
172
+ }
173
+ getConnectionID() {
174
+ this.sendWSMessage({
175
+ action: "getConnectionID"
176
+ });
177
+ }
178
+ sendWSMessage(msg) {
179
+ this.ws.send(JSON.stringify(msg));
180
+ }
181
+ handleWSMessage(msg) {
182
+ switch (msg.type) {
183
+ case "signature":
184
+ this.resolve(msg.value);
185
+ break;
186
+ case "transactionID":
187
+ this.resolve(msg.value);
188
+ break;
189
+ case "error":
190
+ switch (msg.value) {
191
+ case "rejected":
192
+ this.reject("canceled");
193
+ break;
194
+ default:
195
+ throw new Error(msg.value);
196
+ }
197
+ break;
198
+ default:
199
+ throw new Error(`unexpected message type: ${msg.type}`);
200
+ }
201
+ this.initPromiseArgs();
202
+ }
203
+ openWindow(url) {
204
+ const width = screen.width / 2;
205
+ const height = screen.height;
206
+ const left = screen.width / 4;
207
+ const top = 0;
208
+ window.open(
209
+ url.toString(),
210
+ "_blank",
211
+ `width=${width},height=${height},left=${left},top=${top}`
212
+ );
213
+ }
214
+ };
215
+ // Annotate the CommonJS export names for ESM import in node:
216
+ 0 && (module.exports = {
217
+ UnWallet
218
+ });
@@ -1,59 +1,65 @@
1
+ // src/unwallet.ts
1
2
  import { ethers } from "ethers";
2
3
 
3
- import { unWalletConfigs } from "./configs";
4
- import {
5
- Config,
6
- UnWalletConfig,
7
- SignResult,
8
- SendTransactionResult,
9
- } from "./types";
10
-
11
- export class UnWallet {
12
- private config: Config;
13
- private unWalletConfig: UnWalletConfig;
14
-
15
- private ws: WebSocket;
16
- private connectionID: string;
17
-
18
- private resolve: ((result: any) => void) | null = null;
19
- private reject: ((reason: any) => void) | null = null;
4
+ // src/consts.ts
5
+ var UNWALLET_CONFIG_PROD = {
6
+ frontend: {
7
+ baseURL: "https://id.unwallet.world"
8
+ },
9
+ xapi: {
10
+ url: "wss://xapi.id.unwallet.world"
11
+ }
12
+ };
13
+ var UNWALLET_CONFIG_DEV = {
14
+ frontend: {
15
+ baseURL: "http://localhost:4200"
16
+ },
17
+ xapi: {
18
+ url: "wss://xapi.id.test.unwallet.dev"
19
+ }
20
+ };
20
21
 
21
- constructor(config: Config, unWalletConfig: UnWalletConfig, ws: WebSocket) {
22
+ // src/unwallet.ts
23
+ var UnWallet = class _UnWallet {
24
+ constructor(config, unWalletConfig, ws) {
25
+ this.resolve = null;
26
+ this.reject = null;
22
27
  this.config = config;
23
28
  this.unWalletConfig = unWalletConfig;
24
-
25
29
  this.ws = ws;
26
30
  this.connectionID = "";
27
-
28
31
  this.initPromiseArgs();
29
32
  }
30
-
31
- private initPromiseArgs(): void {
32
- this.resolve = (result: any) => {};
33
- this.reject = (reason: any) => {};
33
+ initPromiseArgs() {
34
+ this.resolve = () => {
35
+ };
36
+ this.reject = () => {
37
+ };
34
38
  }
35
-
36
- public static init(config: Config): Promise<UnWallet> {
39
+ static init(config) {
37
40
  return new Promise((resolve, reject) => {
38
- if (config.env === undefined) {
41
+ if (config.env === void 0) {
39
42
  config.env = "prod";
40
43
  }
41
- if (!(config.env in unWalletConfigs)) {
42
- throw Error("invalid env");
44
+ let unWalletConfig;
45
+ {
46
+ switch (config.env) {
47
+ case "prod":
48
+ unWalletConfig = UNWALLET_CONFIG_PROD;
49
+ break;
50
+ case "dev":
51
+ unWalletConfig = UNWALLET_CONFIG_DEV;
52
+ break;
53
+ }
43
54
  }
44
-
45
- const unWalletConfig = unWalletConfigs[config.env];
46
-
47
55
  const ws = new WebSocket(unWalletConfig.xapi.url);
48
56
  {
49
- ws.onerror = (event) => {
57
+ ws.onerror = () => {
50
58
  reject("websocket connection failed");
51
59
  };
52
-
53
- ws.onopen = (event) => {
60
+ ws.onopen = () => {
54
61
  unWallet.getConnectionID();
55
62
  };
56
-
57
63
  ws.onmessage = (event) => {
58
64
  const msg = JSON.parse(event.data);
59
65
  if (msg.type === "connectionID") {
@@ -61,31 +67,18 @@ export class UnWallet {
61
67
  resolve(unWallet);
62
68
  return;
63
69
  }
64
-
65
70
  unWallet.handleWSMessage(msg);
66
71
  };
67
72
  }
68
-
69
- // should be run after ws setup
70
- const unWallet = new UnWallet(config, unWalletConfig, ws);
73
+ const unWallet = new _UnWallet(config, unWalletConfig, ws);
71
74
  });
72
75
  }
73
-
74
- public authorize(args: {
75
- responseMode?: string;
76
- redirectURL: string;
77
- nonce?: string;
78
- isVirtual?: boolean;
79
- chainID?: number;
80
- }): void {
76
+ authorize(args) {
81
77
  if (!args.responseMode) {
82
78
  args.responseMode = "fragment";
83
79
  }
84
-
85
80
  let url = new URL(
86
- `${this.unWalletConfig.frontend.baseURL}/${
87
- args.isVirtual === false ? "" : "v"
88
- }authorize`
81
+ `${this.unWalletConfig.frontend.baseURL}/${args.isVirtual === false ? "" : "v"}authorize`
89
82
  );
90
83
  {
91
84
  url.searchParams.set("response_type", "id_token");
@@ -93,30 +86,24 @@ export class UnWallet {
93
86
  url.searchParams.set("client_id", this.config.clientID);
94
87
  url.searchParams.set("scope", "openid");
95
88
  url.searchParams.set("redirect_uri", args.redirectURL);
96
- if (args.nonce !== undefined) {
89
+ if (args.nonce !== void 0) {
97
90
  url.searchParams.set("nonce", args.nonce);
98
91
  }
99
- if (args.chainID !== undefined) {
92
+ if (args.chainID !== void 0) {
100
93
  url.searchParams.set("chain_id", args.chainID.toString());
101
94
  }
102
95
  }
103
-
104
96
  location.assign(url.toString());
105
97
  }
106
-
107
- public sign(args: {
108
- message: string;
109
- ticketToken: string;
110
- }): Promise<SignResult> {
98
+ sign(args) {
111
99
  return new Promise((resolve, reject) => {
112
- this.resolve = (sig: string) => {
100
+ this.resolve = (sig) => {
113
101
  resolve({
114
102
  digest: ethers.sha256(ethers.toUtf8Bytes(args.message)),
115
- signature: sig,
103
+ signature: sig
116
104
  });
117
105
  };
118
106
  this.reject = reject;
119
-
120
107
  const url = new URL(`${this.unWalletConfig.frontend.baseURL}/x/sign`);
121
108
  {
122
109
  url.searchParams.set("connectionID", this.connectionID);
@@ -124,28 +111,18 @@ export class UnWallet {
124
111
  url.searchParams.set("message", args.message);
125
112
  url.searchParams.set("ticketToken", args.ticketToken);
126
113
  }
127
-
128
114
  this.openWindow(url);
129
115
  });
130
116
  }
131
-
132
- public sendTransaction(args: {
133
- chainID: number;
134
- toAddress: string;
135
- value?: string;
136
- data?: string;
137
- ticketToken: string;
138
- }): Promise<SendTransactionResult> {
117
+ sendTransaction(args) {
139
118
  return new Promise((resolve, reject) => {
140
- if (args.value === undefined && args.data === undefined) {
119
+ if (args.value === void 0 && args.data === void 0) {
141
120
  throw new Error("either value or data required");
142
121
  }
143
-
144
- this.resolve = (txID: string) => {
122
+ this.resolve = (txID) => {
145
123
  resolve({ transactionID: txID });
146
124
  };
147
125
  this.reject = reject;
148
-
149
126
  const url = new URL(
150
127
  `${this.unWalletConfig.frontend.baseURL}/x/sendTransaction`
151
128
  );
@@ -156,67 +133,59 @@ export class UnWallet {
156
133
  url.searchParams.set("toAddress", args.toAddress);
157
134
  url.searchParams.set(
158
135
  "value",
159
- args.value !== undefined ? args.value : "0x0"
136
+ args.value !== void 0 ? args.value : "0x0"
160
137
  );
161
138
  url.searchParams.set(
162
139
  "data",
163
- args.data !== undefined ? args.data : "0x"
140
+ args.data !== void 0 ? args.data : "0x"
164
141
  );
165
142
  url.searchParams.set("ticketToken", args.ticketToken);
166
143
  }
167
-
168
144
  this.openWindow(url);
169
145
  });
170
146
  }
171
-
172
- private getConnectionID(): void {
147
+ getConnectionID() {
173
148
  this.sendWSMessage({
174
- action: "getConnectionID",
149
+ action: "getConnectionID"
175
150
  });
176
151
  }
177
-
178
- private sendWSMessage(msg: any): void {
152
+ sendWSMessage(msg) {
179
153
  this.ws.send(JSON.stringify(msg));
180
154
  }
181
-
182
- private handleWSMessage(msg: any): void {
155
+ handleWSMessage(msg) {
183
156
  switch (msg.type) {
184
157
  case "signature":
185
- this.resolve!(msg.value);
158
+ this.resolve(msg.value);
186
159
  break;
187
-
188
160
  case "transactionID":
189
- this.resolve!(msg.value);
161
+ this.resolve(msg.value);
190
162
  break;
191
-
192
163
  case "error":
193
164
  switch (msg.value) {
194
165
  case "rejected":
195
- this.reject!("canceled");
166
+ this.reject("canceled");
196
167
  break;
197
-
198
168
  default:
199
169
  throw new Error(msg.value);
200
170
  }
201
171
  break;
202
-
203
172
  default:
204
173
  throw new Error(`unexpected message type: ${msg.type}`);
205
174
  }
206
-
207
175
  this.initPromiseArgs();
208
176
  }
209
-
210
- private openWindow(url: URL): void {
177
+ openWindow(url) {
211
178
  const width = screen.width / 2;
212
179
  const height = screen.height;
213
180
  const left = screen.width / 4;
214
181
  const top = 0;
215
-
216
182
  window.open(
217
183
  url.toString(),
218
184
  "_blank",
219
185
  `width=${width},height=${height},left=${left},top=${top}`
220
186
  );
221
187
  }
222
- }
188
+ };
189
+ export {
190
+ UnWallet
191
+ };
package/package.json CHANGED
@@ -1,32 +1,48 @@
1
1
  {
2
2
  "name": "unwallet-client-sdk",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "unWallet client-side SDK",
5
5
  "license": "MIT",
6
6
  "author": "SIVIRA",
7
- "main": "dist/index.js",
8
- "repository": {
9
- "type": "git",
10
- "url": "git://github.com/SIVIRA/unwallet-client-sdk-js.git"
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "exports": {
11
+ ".": {
12
+ "require": {
13
+ "types": "./dist/index.d.ts",
14
+ "default": "./dist/index.js"
15
+ },
16
+ "import": {
17
+ "types": "./dist/index.d.mts",
18
+ "default": "./dist/index.mjs"
19
+ }
20
+ }
11
21
  },
22
+ "main": "dist/index.js",
23
+ "module": "dist/index.mjs",
24
+ "types": "dist/index.d.ts",
25
+ "repository": "github:SIVIRA/unwallet-client-sdk-js",
12
26
  "config": {
13
27
  "commitizen": {
14
28
  "path": "./node_modules/cz-conventional-changelog"
15
29
  }
16
30
  },
17
31
  "dependencies": {
18
- "ethers": "6.13.5"
32
+ "ethers": "6.14.0"
19
33
  },
20
34
  "devDependencies": {
21
- "@commitlint/cli": "19.7.1",
22
- "@commitlint/config-conventional": "19.7.1",
35
+ "@commitlint/cli": "19.8.1",
36
+ "@commitlint/config-conventional": "19.8.1",
37
+ "@commitlint/types": "19.8.1",
38
+ "@tsconfig/strictest": "2.0.5",
23
39
  "commitizen": "4.3.1",
24
40
  "cz-conventional-changelog": "3.3.0",
25
41
  "husky": "9.1.7",
26
- "typescript": "5.7.3"
42
+ "tsup": "8.4.0"
27
43
  },
28
44
  "scripts": {
29
- "build": "tsc",
45
+ "build": "tsup",
30
46
  "commit": "cz"
31
47
  }
32
48
  }
@@ -1,29 +0,0 @@
1
- name: publish
2
- on:
3
- release:
4
- types: [published]
5
- jobs:
6
- publish:
7
- runs-on: ubuntu-latest
8
- steps:
9
- - name: Checkout
10
- uses: actions/checkout@v4
11
- - name: Set up pnpm
12
- uses: pnpm/action-setup@v4
13
- - name: Prepare to cache dependencies
14
- shell: bash
15
- run: |
16
- echo "PNPM_STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
17
- - name: Cache dependencies
18
- uses: actions/cache@v4
19
- with:
20
- path: ${{ env.PNPM_STORE_PATH }}
21
- key: pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
22
- - name: Install dependencies
23
- run: pnpm install
24
- - name: Build
25
- run: pnpm build
26
- - name: Prepare to publish
27
- run: pnpm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}"
28
- - name: Publish
29
- run: pnpm publish --access public --no-git-checks
package/.husky/commit-msg DELETED
@@ -1 +0,0 @@
1
- pnpm --no -- commitlint --edit $1
@@ -1 +0,0 @@
1
- module.exports = { extends: ["@commitlint/config-conventional"] };
package/dist/configs.d.ts DELETED
@@ -1,5 +0,0 @@
1
- import { UnWalletConfig } from "./types";
2
- export declare const unWalletConfigs: {
3
- [env: string]: UnWalletConfig;
4
- };
5
- //# sourceMappingURL=configs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configs.d.ts","sourceRoot":"","sources":["../src/configs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAiB5D,CAAC"}
package/dist/configs.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.unWalletConfigs = void 0;
4
- exports.unWalletConfigs = {
5
- prod: {
6
- frontend: {
7
- baseURL: "https://id.unwallet.world",
8
- },
9
- xapi: {
10
- url: "wss://xapi.id.unwallet.world",
11
- },
12
- },
13
- dev: {
14
- frontend: {
15
- baseURL: "http://localhost:4200",
16
- },
17
- xapi: {
18
- url: "wss://xapi.id.test.unwallet.dev",
19
- },
20
- },
21
- };
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
package/dist/types.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export interface Config {
2
- clientID: string;
3
- env?: string;
4
- }
5
- export interface UnWalletConfig {
6
- frontend: UnWalletFrontendConfig;
7
- xapi: UnWalletXAPIConfig;
8
- }
9
- export interface UnWalletFrontendConfig {
10
- baseURL: string;
11
- }
12
- export interface UnWalletXAPIConfig {
13
- url: string;
14
- }
15
- export interface SignResult {
16
- digest: string;
17
- signature: string;
18
- }
19
- export interface SendTransactionResult {
20
- transactionID: string;
21
- }
22
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,IAAI,EAAE,kBAAkB,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,CAAC;CACvB"}
package/dist/types.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1 +0,0 @@
1
- {"version":3,"file":"unwallet.d.ts","sourceRoot":"","sources":["../src/unwallet.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,MAAM,EACN,cAAc,EACd,UAAU,EACV,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAiB;IAEvC,OAAO,CAAC,EAAE,CAAY;IACtB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,MAAM,CAAwC;gBAE1C,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,EAAE,EAAE,SAAS;IAUzE,OAAO,CAAC,eAAe;WAKT,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsC9C,SAAS,CAAC,IAAI,EAAE;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI;IA2BD,IAAI,CAAC,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsBhB,eAAe,CAAC,IAAI,EAAE;QAC3B,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkClC,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,UAAU;CAYnB"}
package/dist/unwallet.js DELETED
@@ -1,150 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.UnWallet = void 0;
4
- const ethers_1 = require("ethers");
5
- const configs_1 = require("./configs");
6
- class UnWallet {
7
- constructor(config, unWalletConfig, ws) {
8
- this.resolve = null;
9
- this.reject = null;
10
- this.config = config;
11
- this.unWalletConfig = unWalletConfig;
12
- this.ws = ws;
13
- this.connectionID = "";
14
- this.initPromiseArgs();
15
- }
16
- initPromiseArgs() {
17
- this.resolve = (result) => { };
18
- this.reject = (reason) => { };
19
- }
20
- static init(config) {
21
- return new Promise((resolve, reject) => {
22
- if (config.env === undefined) {
23
- config.env = "prod";
24
- }
25
- if (!(config.env in configs_1.unWalletConfigs)) {
26
- throw Error("invalid env");
27
- }
28
- const unWalletConfig = configs_1.unWalletConfigs[config.env];
29
- const ws = new WebSocket(unWalletConfig.xapi.url);
30
- {
31
- ws.onerror = (event) => {
32
- reject("websocket connection failed");
33
- };
34
- ws.onopen = (event) => {
35
- unWallet.getConnectionID();
36
- };
37
- ws.onmessage = (event) => {
38
- const msg = JSON.parse(event.data);
39
- if (msg.type === "connectionID") {
40
- unWallet.connectionID = msg.value;
41
- resolve(unWallet);
42
- return;
43
- }
44
- unWallet.handleWSMessage(msg);
45
- };
46
- }
47
- // should be run after ws setup
48
- const unWallet = new UnWallet(config, unWalletConfig, ws);
49
- });
50
- }
51
- authorize(args) {
52
- if (!args.responseMode) {
53
- args.responseMode = "fragment";
54
- }
55
- let url = new URL(`${this.unWalletConfig.frontend.baseURL}/${args.isVirtual === false ? "" : "v"}authorize`);
56
- {
57
- url.searchParams.set("response_type", "id_token");
58
- url.searchParams.set("response_mode", args.responseMode);
59
- url.searchParams.set("client_id", this.config.clientID);
60
- url.searchParams.set("scope", "openid");
61
- url.searchParams.set("redirect_uri", args.redirectURL);
62
- if (args.nonce !== undefined) {
63
- url.searchParams.set("nonce", args.nonce);
64
- }
65
- if (args.chainID !== undefined) {
66
- url.searchParams.set("chain_id", args.chainID.toString());
67
- }
68
- }
69
- location.assign(url.toString());
70
- }
71
- sign(args) {
72
- return new Promise((resolve, reject) => {
73
- this.resolve = (sig) => {
74
- resolve({
75
- digest: ethers_1.ethers.sha256(ethers_1.ethers.toUtf8Bytes(args.message)),
76
- signature: sig,
77
- });
78
- };
79
- this.reject = reject;
80
- const url = new URL(`${this.unWalletConfig.frontend.baseURL}/x/sign`);
81
- {
82
- url.searchParams.set("connectionID", this.connectionID);
83
- url.searchParams.set("clientID", this.config.clientID);
84
- url.searchParams.set("message", args.message);
85
- url.searchParams.set("ticketToken", args.ticketToken);
86
- }
87
- this.openWindow(url);
88
- });
89
- }
90
- sendTransaction(args) {
91
- return new Promise((resolve, reject) => {
92
- if (args.value === undefined && args.data === undefined) {
93
- throw new Error("either value or data required");
94
- }
95
- this.resolve = (txID) => {
96
- resolve({ transactionID: txID });
97
- };
98
- this.reject = reject;
99
- const url = new URL(`${this.unWalletConfig.frontend.baseURL}/x/sendTransaction`);
100
- {
101
- url.searchParams.set("connectionID", this.connectionID);
102
- url.searchParams.set("clientID", this.config.clientID);
103
- url.searchParams.set("chainID", args.chainID.toString());
104
- url.searchParams.set("toAddress", args.toAddress);
105
- url.searchParams.set("value", args.value !== undefined ? args.value : "0x0");
106
- url.searchParams.set("data", args.data !== undefined ? args.data : "0x");
107
- url.searchParams.set("ticketToken", args.ticketToken);
108
- }
109
- this.openWindow(url);
110
- });
111
- }
112
- getConnectionID() {
113
- this.sendWSMessage({
114
- action: "getConnectionID",
115
- });
116
- }
117
- sendWSMessage(msg) {
118
- this.ws.send(JSON.stringify(msg));
119
- }
120
- handleWSMessage(msg) {
121
- switch (msg.type) {
122
- case "signature":
123
- this.resolve(msg.value);
124
- break;
125
- case "transactionID":
126
- this.resolve(msg.value);
127
- break;
128
- case "error":
129
- switch (msg.value) {
130
- case "rejected":
131
- this.reject("canceled");
132
- break;
133
- default:
134
- throw new Error(msg.value);
135
- }
136
- break;
137
- default:
138
- throw new Error(`unexpected message type: ${msg.type}`);
139
- }
140
- this.initPromiseArgs();
141
- }
142
- openWindow(url) {
143
- const width = screen.width / 2;
144
- const height = screen.height;
145
- const left = screen.width / 4;
146
- const top = 0;
147
- window.open(url.toString(), "_blank", `width=${width},height=${height},left=${left},top=${top}`);
148
- }
149
- }
150
- exports.UnWallet = UnWallet;
package/src/configs.ts DELETED
@@ -1,20 +0,0 @@
1
- import { UnWalletConfig } from "./types";
2
-
3
- export const unWalletConfigs: { [env: string]: UnWalletConfig } = {
4
- prod: {
5
- frontend: {
6
- baseURL: "https://id.unwallet.world",
7
- },
8
- xapi: {
9
- url: "wss://xapi.id.unwallet.world",
10
- },
11
- },
12
- dev: {
13
- frontend: {
14
- baseURL: "http://localhost:4200",
15
- },
16
- xapi: {
17
- url: "wss://xapi.id.test.unwallet.dev",
18
- },
19
- },
20
- };
package/src/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export { Config, SignResult, SendTransactionResult } from "./types";
2
- export { UnWallet } from "./unwallet";
package/src/types.ts DELETED
@@ -1,26 +0,0 @@
1
- export interface Config {
2
- clientID: string;
3
- env?: string;
4
- }
5
-
6
- export interface UnWalletConfig {
7
- frontend: UnWalletFrontendConfig;
8
- xapi: UnWalletXAPIConfig;
9
- }
10
-
11
- export interface UnWalletFrontendConfig {
12
- baseURL: string;
13
- }
14
-
15
- export interface UnWalletXAPIConfig {
16
- url: string;
17
- }
18
-
19
- export interface SignResult {
20
- digest: string;
21
- signature: string;
22
- }
23
-
24
- export interface SendTransactionResult {
25
- transactionID: string;
26
- }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "declaration": true,
4
- "declarationMap": true,
5
- "forceConsistentCasingInFileNames": true,
6
- "esModuleInterop": true,
7
- "lib": ["dom", "es2015"],
8
- "module": "commonjs",
9
- "outDir": "./dist",
10
- "skipLibCheck": true,
11
- "strict": true,
12
- "target": "es6"
13
- },
14
- "include": ["./src"]
15
- }