@keplr-wallet/stores-core 0.12.32-rc.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/.eslintignore +2 -0
- package/.prettierignore +2 -0
- package/LICENSE +209 -0
- package/build/core/index.d.ts +4 -0
- package/build/core/index.js +21 -0
- package/build/core/index.js.map +1 -0
- package/build/core/interaction/chain-suggest.d.ts +35 -0
- package/build/core/interaction/chain-suggest.js +106 -0
- package/build/core/interaction/chain-suggest.js.map +1 -0
- package/build/core/interaction/eth-sign.d.ts +25 -0
- package/build/core/interaction/eth-sign.js +60 -0
- package/build/core/interaction/eth-sign.js.map +1 -0
- package/build/core/interaction/icns.d.ts +32 -0
- package/build/core/interaction/icns.js +58 -0
- package/build/core/interaction/icns.js.map +1 -0
- package/build/core/interaction/index.d.ts +6 -0
- package/build/core/interaction/index.js +23 -0
- package/build/core/interaction/index.js.map +1 -0
- package/build/core/interaction/interaction.d.ts +64 -0
- package/build/core/interaction/interaction.js +232 -0
- package/build/core/interaction/interaction.js.map +1 -0
- package/build/core/interaction/permission.d.ts +22 -0
- package/build/core/interaction/permission.js +108 -0
- package/build/core/interaction/permission.js.map +1 -0
- package/build/core/interaction/sign.d.ts +49 -0
- package/build/core/interaction/sign.js +78 -0
- package/build/core/interaction/sign.js.map +1 -0
- package/build/core/keyring.d.ts +132 -0
- package/build/core/keyring.js +278 -0
- package/build/core/keyring.js.map +1 -0
- package/build/core/permission-manager.d.ts +15 -0
- package/build/core/permission-manager.js +122 -0
- package/build/core/permission-manager.js.map +1 -0
- package/build/core/tokens.d.ts +39 -0
- package/build/core/tokens.js +225 -0
- package/build/core/tokens.js.map +1 -0
- package/build/index.d.ts +1 -0
- package/build/index.js +18 -0
- package/build/index.js.map +1 -0
- package/jest.config.js +5 -0
- package/package.json +31 -0
- package/src/core/index.ts +4 -0
- package/src/core/interaction/chain-suggest.ts +136 -0
- package/src/core/interaction/eth-sign.ts +71 -0
- package/src/core/interaction/icns.ts +68 -0
- package/src/core/interaction/index.ts +6 -0
- package/src/core/interaction/interaction.ts +290 -0
- package/src/core/interaction/permission.ts +121 -0
- package/src/core/interaction/sign.ts +124 -0
- package/src/core/keyring.ts +354 -0
- package/src/core/permission-manager.ts +114 -0
- package/src/core/tokens.ts +275 -0
- package/src/index.ts +1 -0
- package/tsconfig.json +12 -0
@@ -0,0 +1,64 @@
|
|
1
|
+
import { Router, MessageRequester } from "@keplr-wallet/router";
|
2
|
+
import { InteractionForegroundHandler, InteractionWaitingData } from "@keplr-wallet/background";
|
3
|
+
export declare class InteractionStore implements InteractionForegroundHandler {
|
4
|
+
protected readonly router: Router;
|
5
|
+
protected readonly msgRequester: MessageRequester;
|
6
|
+
protected data: InteractionWaitingData[];
|
7
|
+
protected obsoleteData: Map<string, boolean>;
|
8
|
+
constructor(router: Router, msgRequester: MessageRequester);
|
9
|
+
getAllData: <T = unknown>(type: string) => InteractionWaitingData<T>[];
|
10
|
+
getData: <T = unknown>(id: string) => InteractionWaitingData<T> | undefined;
|
11
|
+
onInteractionDataReceived(data: InteractionWaitingData): void;
|
12
|
+
onEventDataReceived(): void;
|
13
|
+
/**
|
14
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
15
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
16
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
17
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
18
|
+
* @param type
|
19
|
+
* @param id
|
20
|
+
* @param result
|
21
|
+
* @param afterFn
|
22
|
+
*/
|
23
|
+
approveWithProceedNext(id: string, result: unknown, afterFn: (proceedNext: boolean) => void | Promise<void>): Generator<void | Promise<void>, void, unknown>;
|
24
|
+
/**
|
25
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
26
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
27
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
28
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
29
|
+
* @param type
|
30
|
+
* @param id
|
31
|
+
* @param result
|
32
|
+
* @param afterFn
|
33
|
+
*/
|
34
|
+
approveWithProceedNextV2(ids: string | string[], result: unknown, afterFn: (proceedNext: boolean) => void | Promise<void>, options?: {
|
35
|
+
preDelay?: number;
|
36
|
+
postDelay?: number;
|
37
|
+
}): Generator<void | Promise<unknown>, void, unknown>;
|
38
|
+
/**
|
39
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
40
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
41
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
42
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
43
|
+
* @param type
|
44
|
+
* @param id
|
45
|
+
* @param afterFn
|
46
|
+
*/
|
47
|
+
rejectWithProceedNext(id: string, afterFn: (proceedNext: boolean) => void | Promise<void>): Generator<void | Promise<void>, void, unknown>;
|
48
|
+
/**
|
49
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
50
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
51
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
52
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
53
|
+
* @param type
|
54
|
+
* @param id
|
55
|
+
* @param afterFn
|
56
|
+
*/
|
57
|
+
rejectWithProceedNextV2(ids: string | string[], afterFn: (proceedNext: boolean) => void | Promise<void>): Generator<void | Promise<void> | Promise<unknown[]>, void, unknown>;
|
58
|
+
protected delay(ms: number): Promise<void>;
|
59
|
+
rejectAll(type: string): Generator<Promise<void>, void, unknown>;
|
60
|
+
isObsoleteInteraction(id: string | undefined): boolean;
|
61
|
+
protected removeData(ids: string | string[]): void;
|
62
|
+
protected markAsObsolete(id: string): void;
|
63
|
+
protected hasOtherData(ids: string | string[]): boolean;
|
64
|
+
}
|
@@ -0,0 +1,232 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
9
|
+
exports.InteractionStore = void 0;
|
10
|
+
const router_1 = require("@keplr-wallet/router");
|
11
|
+
const background_1 = require("@keplr-wallet/background");
|
12
|
+
const mobx_1 = require("mobx");
|
13
|
+
const mobx_utils_1 = require("mobx-utils");
|
14
|
+
class InteractionStore {
|
15
|
+
constructor(router, msgRequester) {
|
16
|
+
this.router = router;
|
17
|
+
this.msgRequester = msgRequester;
|
18
|
+
this.data = [];
|
19
|
+
// 원래 obsolete에 대한 정보를 data 밑의 field에 포함시켰는데
|
20
|
+
// obsolete 처리가 추가되기 전에는 data는 한번 받으면 그 이후에 변화되지 않는다는 가정으로 다른 로직이 짜여졌었다.
|
21
|
+
// ref도 변하면 안됐기 때문에 obsolete가 data 밑에 있으면 이러한 요구사항을 이루면서 처리할 수가 없다.
|
22
|
+
// (특히 서명 페이지에서 문제가 될 수 있음)
|
23
|
+
// 기존의 로직과의 호환성을 위해서 아예 분리되었음.
|
24
|
+
this.obsoleteData = new Map();
|
25
|
+
this.getAllData = (0, mobx_utils_1.computedFn)((type) => {
|
26
|
+
return (0, mobx_1.toJS)(this.data.filter((d) => d.type === type));
|
27
|
+
});
|
28
|
+
this.getData = (0, mobx_utils_1.computedFn)((id) => {
|
29
|
+
return this.data.find((d) => d.id === id);
|
30
|
+
});
|
31
|
+
(0, mobx_1.makeObservable)(this);
|
32
|
+
const service = new background_1.InteractionForegroundService(this);
|
33
|
+
(0, background_1.interactionForegroundInit)(router, service);
|
34
|
+
}
|
35
|
+
onInteractionDataReceived(data) {
|
36
|
+
this.data.push(data);
|
37
|
+
}
|
38
|
+
onEventDataReceived() {
|
39
|
+
// noop
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
43
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
44
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
45
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
46
|
+
* @param type
|
47
|
+
* @param id
|
48
|
+
* @param result
|
49
|
+
* @param afterFn
|
50
|
+
*/
|
51
|
+
*approveWithProceedNext(id, result, afterFn) {
|
52
|
+
const d = this.getData(id);
|
53
|
+
if (!d || this.isObsoleteInteraction(id)) {
|
54
|
+
return;
|
55
|
+
}
|
56
|
+
this.markAsObsolete(id);
|
57
|
+
yield this.msgRequester.sendMessage(router_1.BACKGROUND_PORT, new background_1.ApproveInteractionMsg(id, result));
|
58
|
+
yield this.delay(100);
|
59
|
+
yield afterFn(this.hasOtherData(id));
|
60
|
+
this.removeData(id);
|
61
|
+
}
|
62
|
+
/**
|
63
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
64
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
65
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
66
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
67
|
+
* @param type
|
68
|
+
* @param id
|
69
|
+
* @param result
|
70
|
+
* @param afterFn
|
71
|
+
*/
|
72
|
+
*approveWithProceedNextV2(ids, result, afterFn, options = {}) {
|
73
|
+
var _a;
|
74
|
+
if (typeof ids === "string") {
|
75
|
+
ids = [ids];
|
76
|
+
}
|
77
|
+
const fresh = [];
|
78
|
+
for (const id of ids) {
|
79
|
+
const d = this.getData(id);
|
80
|
+
if (!d || this.isObsoleteInteraction(id)) {
|
81
|
+
continue;
|
82
|
+
}
|
83
|
+
this.markAsObsolete(id);
|
84
|
+
fresh.push(id);
|
85
|
+
}
|
86
|
+
if (options.preDelay && options.preDelay > 0) {
|
87
|
+
yield new Promise((resolve) => setTimeout(resolve, options.preDelay));
|
88
|
+
}
|
89
|
+
const promises = [];
|
90
|
+
for (const id of fresh) {
|
91
|
+
promises.push(this.msgRequester.sendMessage(router_1.BACKGROUND_PORT, new background_1.ApproveInteractionV2Msg(id, result)));
|
92
|
+
}
|
93
|
+
yield Promise.all(promises);
|
94
|
+
if (options.postDelay == null || options.postDelay > 0) {
|
95
|
+
yield this.delay((_a = options.postDelay) !== null && _a !== void 0 ? _a : 50);
|
96
|
+
}
|
97
|
+
yield afterFn(this.hasOtherData(ids));
|
98
|
+
this.removeData(ids);
|
99
|
+
}
|
100
|
+
/**
|
101
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
102
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
103
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
104
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
105
|
+
* @param type
|
106
|
+
* @param id
|
107
|
+
* @param afterFn
|
108
|
+
*/
|
109
|
+
*rejectWithProceedNext(id, afterFn) {
|
110
|
+
const d = this.getData(id);
|
111
|
+
if (!d || this.isObsoleteInteraction(id)) {
|
112
|
+
return;
|
113
|
+
}
|
114
|
+
this.markAsObsolete(id);
|
115
|
+
yield this.msgRequester.sendMessage(router_1.BACKGROUND_PORT, new background_1.RejectInteractionMsg(id));
|
116
|
+
yield this.delay(100);
|
117
|
+
yield afterFn(this.hasOtherData(id));
|
118
|
+
this.removeData(id);
|
119
|
+
}
|
120
|
+
/**
|
121
|
+
* 웹페이지에서 어떤 API를 요청해서 extension이 켜졌을때
|
122
|
+
* extension에서 요청을 처리하고 바로 팝업을 닫으면
|
123
|
+
* 이후에 연속적인 api 요청의 경우 다시 페이지가 열려야하는데 이게 은근히 어색한 UX를 만들기 때문에
|
124
|
+
* 이를 대충 해결하기 위해서 approve 이후에 대충 조금 기다리고 남은 interaction이 있느냐 아니냐에 따라 다른 처리를 한다.
|
125
|
+
* @param type
|
126
|
+
* @param id
|
127
|
+
* @param afterFn
|
128
|
+
*/
|
129
|
+
*rejectWithProceedNextV2(ids, afterFn) {
|
130
|
+
if (typeof ids === "string") {
|
131
|
+
ids = [ids];
|
132
|
+
}
|
133
|
+
const fresh = [];
|
134
|
+
for (const id of ids) {
|
135
|
+
const d = this.getData(id);
|
136
|
+
if (!d || this.isObsoleteInteraction(id)) {
|
137
|
+
continue;
|
138
|
+
}
|
139
|
+
this.markAsObsolete(id);
|
140
|
+
fresh.push(id);
|
141
|
+
}
|
142
|
+
const promises = [];
|
143
|
+
for (const id of fresh) {
|
144
|
+
promises.push(this.msgRequester.sendMessage(router_1.BACKGROUND_PORT, new background_1.RejectInteractionV2Msg(id)));
|
145
|
+
}
|
146
|
+
yield Promise.all(promises);
|
147
|
+
yield this.delay(50);
|
148
|
+
yield afterFn(this.hasOtherData(ids));
|
149
|
+
this.removeData(ids);
|
150
|
+
}
|
151
|
+
delay(ms) {
|
152
|
+
return new Promise((resolve) => {
|
153
|
+
setTimeout(resolve, ms);
|
154
|
+
});
|
155
|
+
}
|
156
|
+
*rejectAll(type) {
|
157
|
+
const data = this.getAllData(type);
|
158
|
+
for (const d of data) {
|
159
|
+
if (this.isObsoleteInteraction(d.id)) {
|
160
|
+
continue;
|
161
|
+
}
|
162
|
+
yield this.msgRequester.sendMessage(router_1.BACKGROUND_PORT, new background_1.RejectInteractionMsg(d.id));
|
163
|
+
this.removeData(d.id);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
// UI에서 좀 더 편하게 쓸 수 있게 하려고 undefined도 파라미터로 허용함.
|
167
|
+
isObsoleteInteraction(id) {
|
168
|
+
var _a;
|
169
|
+
if (!id) {
|
170
|
+
return false;
|
171
|
+
}
|
172
|
+
return (_a = this.obsoleteData.get(id)) !== null && _a !== void 0 ? _a : false;
|
173
|
+
}
|
174
|
+
removeData(ids) {
|
175
|
+
if (typeof ids === "string") {
|
176
|
+
ids = [ids];
|
177
|
+
}
|
178
|
+
for (const id of ids) {
|
179
|
+
this.data = this.data.filter((d) => d.id !== id);
|
180
|
+
this.obsoleteData.delete(id);
|
181
|
+
}
|
182
|
+
}
|
183
|
+
markAsObsolete(id) {
|
184
|
+
if (this.getData(id)) {
|
185
|
+
this.obsoleteData.set(id, true);
|
186
|
+
}
|
187
|
+
}
|
188
|
+
hasOtherData(ids) {
|
189
|
+
if (typeof ids === "string") {
|
190
|
+
ids = [ids];
|
191
|
+
}
|
192
|
+
const find = this.data.find((data) => {
|
193
|
+
return !ids.includes(data.id);
|
194
|
+
});
|
195
|
+
return !!find;
|
196
|
+
}
|
197
|
+
}
|
198
|
+
__decorate([
|
199
|
+
mobx_1.observable.shallow
|
200
|
+
], InteractionStore.prototype, "data", void 0);
|
201
|
+
__decorate([
|
202
|
+
mobx_1.observable.shallow
|
203
|
+
], InteractionStore.prototype, "obsoleteData", void 0);
|
204
|
+
__decorate([
|
205
|
+
mobx_1.action
|
206
|
+
], InteractionStore.prototype, "onInteractionDataReceived", null);
|
207
|
+
__decorate([
|
208
|
+
mobx_1.action
|
209
|
+
], InteractionStore.prototype, "onEventDataReceived", null);
|
210
|
+
__decorate([
|
211
|
+
mobx_1.flow
|
212
|
+
], InteractionStore.prototype, "approveWithProceedNext", null);
|
213
|
+
__decorate([
|
214
|
+
mobx_1.flow
|
215
|
+
], InteractionStore.prototype, "approveWithProceedNextV2", null);
|
216
|
+
__decorate([
|
217
|
+
mobx_1.flow
|
218
|
+
], InteractionStore.prototype, "rejectWithProceedNext", null);
|
219
|
+
__decorate([
|
220
|
+
mobx_1.flow
|
221
|
+
], InteractionStore.prototype, "rejectWithProceedNextV2", null);
|
222
|
+
__decorate([
|
223
|
+
mobx_1.flow
|
224
|
+
], InteractionStore.prototype, "rejectAll", null);
|
225
|
+
__decorate([
|
226
|
+
mobx_1.action
|
227
|
+
], InteractionStore.prototype, "removeData", null);
|
228
|
+
__decorate([
|
229
|
+
mobx_1.action
|
230
|
+
], InteractionStore.prototype, "markAsObsolete", null);
|
231
|
+
exports.InteractionStore = InteractionStore;
|
232
|
+
//# sourceMappingURL=interaction.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../../src/core/interaction/interaction.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { InteractionStore } from "./interaction";
|
2
|
+
import { GlobalPermissionData, PermissionData } from "@keplr-wallet/background";
|
3
|
+
import { MessageRequester } from "@keplr-wallet/router";
|
4
|
+
export declare class PermissionStore {
|
5
|
+
protected readonly interactionStore: InteractionStore;
|
6
|
+
protected readonly requester: MessageRequester;
|
7
|
+
constructor(interactionStore: InteractionStore, requester: MessageRequester);
|
8
|
+
get waitingPermissionData(): import("@keplr-wallet/background").InteractionWaitingData<PermissionData> | undefined;
|
9
|
+
get waitingPermissionDatas(): import("@keplr-wallet/background").InteractionWaitingData<PermissionData>[];
|
10
|
+
get waitingPermissionMergedData(): ({
|
11
|
+
ids: string[];
|
12
|
+
} & PermissionData) | undefined;
|
13
|
+
get waitingGlobalPermissionData(): import("@keplr-wallet/background").InteractionWaitingData<GlobalPermissionData> | undefined;
|
14
|
+
get waitingGlobalPermissionDatas(): import("@keplr-wallet/background").InteractionWaitingData<GlobalPermissionData>[];
|
15
|
+
approvePermissionWithProceedNext(id: string | string[], afterFn: (proceedNext: boolean) => void | Promise<void>): Promise<void>;
|
16
|
+
rejectPermissionWithProceedNext(id: string | string[], afterFn: (proceedNext: boolean) => void | Promise<void>): Promise<void>;
|
17
|
+
rejectPermissionAll(): Promise<void>;
|
18
|
+
approveGlobalPermissionWithProceedNext(id: string, afterFn: (proceedNext: boolean) => void | Promise<void>): Promise<void>;
|
19
|
+
rejectGlobalPermissionWithProceedNext(id: string, afterFn: (proceedNext: boolean) => void | Promise<void>): Promise<void>;
|
20
|
+
rejectGlobalPermissionAll(): Promise<void>;
|
21
|
+
isObsoleteInteraction(id: string | undefined): boolean;
|
22
|
+
}
|
@@ -0,0 +1,108 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
15
|
+
});
|
16
|
+
};
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
+
exports.PermissionStore = void 0;
|
19
|
+
const background_1 = require("@keplr-wallet/background");
|
20
|
+
const mobx_1 = require("mobx");
|
21
|
+
class PermissionStore {
|
22
|
+
constructor(interactionStore, requester) {
|
23
|
+
this.interactionStore = interactionStore;
|
24
|
+
this.requester = requester;
|
25
|
+
(0, mobx_1.makeObservable)(this);
|
26
|
+
}
|
27
|
+
get waitingPermissionData() {
|
28
|
+
if (this.waitingPermissionDatas.length > 0) {
|
29
|
+
return this.waitingPermissionDatas[0];
|
30
|
+
}
|
31
|
+
}
|
32
|
+
get waitingPermissionDatas() {
|
33
|
+
return this.interactionStore.getAllData(background_1.INTERACTION_TYPE_PERMISSION);
|
34
|
+
}
|
35
|
+
get waitingPermissionMergedData() {
|
36
|
+
const data = this.waitingPermissionDatas;
|
37
|
+
if (data.length === 0) {
|
38
|
+
return;
|
39
|
+
}
|
40
|
+
const first = data[0];
|
41
|
+
const res = {
|
42
|
+
ids: [first.id],
|
43
|
+
chainIds: first.data.chainIds,
|
44
|
+
type: first.data.type,
|
45
|
+
origins: first.data.origins,
|
46
|
+
};
|
47
|
+
for (let i = 1; i < data.length; i++) {
|
48
|
+
const d = data[i];
|
49
|
+
if (d.data.type !== first.data.type) {
|
50
|
+
break;
|
51
|
+
}
|
52
|
+
if (d.data.origins.join(",") !== first.data.origins.join(",")) {
|
53
|
+
break;
|
54
|
+
}
|
55
|
+
res.ids.push(d.id);
|
56
|
+
res.chainIds.push(...d.data.chainIds);
|
57
|
+
}
|
58
|
+
// Remove duplicated chain ids.
|
59
|
+
res.chainIds = [...new Set(res.chainIds)];
|
60
|
+
return res;
|
61
|
+
}
|
62
|
+
get waitingGlobalPermissionData() {
|
63
|
+
if (this.waitingGlobalPermissionDatas.length > 0) {
|
64
|
+
return this.waitingGlobalPermissionDatas[0];
|
65
|
+
}
|
66
|
+
}
|
67
|
+
get waitingGlobalPermissionDatas() {
|
68
|
+
return this.interactionStore.getAllData(background_1.INTERACTION_TYPE_GLOBAL_PERMISSION);
|
69
|
+
}
|
70
|
+
approvePermissionWithProceedNext(id, afterFn) {
|
71
|
+
return __awaiter(this, void 0, void 0, function* () {
|
72
|
+
yield this.interactionStore.approveWithProceedNextV2(id, {}, afterFn);
|
73
|
+
});
|
74
|
+
}
|
75
|
+
rejectPermissionWithProceedNext(id, afterFn) {
|
76
|
+
return __awaiter(this, void 0, void 0, function* () {
|
77
|
+
yield this.interactionStore.rejectWithProceedNextV2(id, afterFn);
|
78
|
+
});
|
79
|
+
}
|
80
|
+
rejectPermissionAll() {
|
81
|
+
return __awaiter(this, void 0, void 0, function* () {
|
82
|
+
yield this.interactionStore.rejectAll(background_1.INTERACTION_TYPE_PERMISSION);
|
83
|
+
});
|
84
|
+
}
|
85
|
+
approveGlobalPermissionWithProceedNext(id, afterFn) {
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
87
|
+
yield this.interactionStore.approveWithProceedNextV2(id, {}, afterFn);
|
88
|
+
});
|
89
|
+
}
|
90
|
+
rejectGlobalPermissionWithProceedNext(id, afterFn) {
|
91
|
+
return __awaiter(this, void 0, void 0, function* () {
|
92
|
+
yield this.interactionStore.rejectWithProceedNextV2(id, afterFn);
|
93
|
+
});
|
94
|
+
}
|
95
|
+
rejectGlobalPermissionAll() {
|
96
|
+
return __awaiter(this, void 0, void 0, function* () {
|
97
|
+
yield this.interactionStore.rejectAll(background_1.INTERACTION_TYPE_GLOBAL_PERMISSION);
|
98
|
+
});
|
99
|
+
}
|
100
|
+
isObsoleteInteraction(id) {
|
101
|
+
return this.interactionStore.isObsoleteInteraction(id);
|
102
|
+
}
|
103
|
+
}
|
104
|
+
__decorate([
|
105
|
+
mobx_1.computed
|
106
|
+
], PermissionStore.prototype, "waitingPermissionMergedData", null);
|
107
|
+
exports.PermissionStore = PermissionStore;
|
108
|
+
//# sourceMappingURL=permission.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../src/core/interaction/permission.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
import { InteractionStore } from "./interaction";
|
2
|
+
import { SignDocWrapper } from "@keplr-wallet/cosmos";
|
3
|
+
import { KeplrSignOptions, StdSignDoc } from "@keplr-wallet/types";
|
4
|
+
import { InteractionWaitingData, PlainObject } from "@keplr-wallet/background";
|
5
|
+
export type SignInteractionData = {
|
6
|
+
origin: string;
|
7
|
+
chainId: string;
|
8
|
+
mode: "amino";
|
9
|
+
signer: string;
|
10
|
+
pubKey: Uint8Array;
|
11
|
+
signDoc: StdSignDoc;
|
12
|
+
signOptions: KeplrSignOptions & {
|
13
|
+
isADR36WithString?: boolean;
|
14
|
+
};
|
15
|
+
keyType: string;
|
16
|
+
keyInsensitive: PlainObject;
|
17
|
+
eip712?: {
|
18
|
+
types: Record<string, {
|
19
|
+
name: string;
|
20
|
+
type: string;
|
21
|
+
}[] | undefined>;
|
22
|
+
domain: Record<string, any>;
|
23
|
+
primaryType: string;
|
24
|
+
};
|
25
|
+
} | {
|
26
|
+
origin: string;
|
27
|
+
chainId: string;
|
28
|
+
mode: "direct";
|
29
|
+
signer: string;
|
30
|
+
pubKey: Uint8Array;
|
31
|
+
signDocBytes: Uint8Array;
|
32
|
+
signOptions: KeplrSignOptions;
|
33
|
+
keyType: string;
|
34
|
+
keyInsensitive: PlainObject;
|
35
|
+
};
|
36
|
+
export declare class SignInteractionStore {
|
37
|
+
protected readonly interactionStore: InteractionStore;
|
38
|
+
constructor(interactionStore: InteractionStore);
|
39
|
+
get waitingDatas(): InteractionWaitingData<SignInteractionData>[];
|
40
|
+
get waitingData(): InteractionWaitingData<SignInteractionData & {
|
41
|
+
signDocWrapper: SignDocWrapper;
|
42
|
+
}> | undefined;
|
43
|
+
approveWithProceedNext(id: string, newSignDocWrapper: SignDocWrapper, signature: Uint8Array | undefined, afterFn: (proceedNext: boolean) => void | Promise<void>, options?: {
|
44
|
+
preDelay?: number;
|
45
|
+
}): Promise<void>;
|
46
|
+
rejectWithProceedNext(id: string, afterFn: (proceedNext: boolean) => void | Promise<void>): Promise<void>;
|
47
|
+
rejectAll(): Promise<void>;
|
48
|
+
isObsoleteInteraction(id: string | undefined): boolean;
|
49
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
7
|
+
};
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
15
|
+
});
|
16
|
+
};
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
18
|
+
exports.SignInteractionStore = void 0;
|
19
|
+
const mobx_1 = require("mobx");
|
20
|
+
const cosmos_1 = require("@keplr-wallet/cosmos");
|
21
|
+
class SignInteractionStore {
|
22
|
+
constructor(interactionStore) {
|
23
|
+
this.interactionStore = interactionStore;
|
24
|
+
(0, mobx_1.makeObservable)(this);
|
25
|
+
}
|
26
|
+
get waitingDatas() {
|
27
|
+
return this.interactionStore.getAllData("request-sign-cosmos");
|
28
|
+
}
|
29
|
+
get waitingData() {
|
30
|
+
const datas = this.waitingDatas;
|
31
|
+
if (datas.length === 0) {
|
32
|
+
return undefined;
|
33
|
+
}
|
34
|
+
const data = datas[0];
|
35
|
+
const wrapper = data.data.mode === "amino"
|
36
|
+
? cosmos_1.SignDocWrapper.fromAminoSignDoc(data.data.signDoc)
|
37
|
+
: cosmos_1.SignDocWrapper.fromDirectSignDocBytes(data.data.signDocBytes);
|
38
|
+
return {
|
39
|
+
id: data.id,
|
40
|
+
type: data.type,
|
41
|
+
isInternal: data.isInternal,
|
42
|
+
data: Object.assign(Object.assign({}, data.data), { signDocWrapper: wrapper }),
|
43
|
+
};
|
44
|
+
}
|
45
|
+
approveWithProceedNext(id, newSignDocWrapper, signature, afterFn, options = {}) {
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
47
|
+
const res = (() => {
|
48
|
+
if (newSignDocWrapper.mode === "amino") {
|
49
|
+
return {
|
50
|
+
newSignDoc: newSignDocWrapper.aminoSignDoc,
|
51
|
+
};
|
52
|
+
}
|
53
|
+
return {
|
54
|
+
newSignDocBytes: newSignDocWrapper.protoSignDoc.toBytes(),
|
55
|
+
};
|
56
|
+
})();
|
57
|
+
yield this.interactionStore.approveWithProceedNextV2(id, Object.assign(Object.assign({}, res), { signature }), afterFn, options);
|
58
|
+
});
|
59
|
+
}
|
60
|
+
rejectWithProceedNext(id, afterFn) {
|
61
|
+
return __awaiter(this, void 0, void 0, function* () {
|
62
|
+
yield this.interactionStore.rejectWithProceedNext(id, afterFn);
|
63
|
+
});
|
64
|
+
}
|
65
|
+
rejectAll() {
|
66
|
+
return __awaiter(this, void 0, void 0, function* () {
|
67
|
+
yield this.interactionStore.rejectAll("request-sign-cosmos");
|
68
|
+
});
|
69
|
+
}
|
70
|
+
isObsoleteInteraction(id) {
|
71
|
+
return this.interactionStore.isObsoleteInteraction(id);
|
72
|
+
}
|
73
|
+
}
|
74
|
+
__decorate([
|
75
|
+
mobx_1.computed
|
76
|
+
], SignInteractionStore.prototype, "waitingData", null);
|
77
|
+
exports.SignInteractionStore = SignInteractionStore;
|
78
|
+
//# sourceMappingURL=sign.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/core/interaction/sign.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AACA,+BAAgD;AAChD,iDAAsD;AAoCtD,MAAa,oBAAoB;IAC/B,YAA+B,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAC/D,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CACrC,qBAAqB,CACtB,CAAC;IACJ,CAAC;IAGD,IAAI,WAAW;QAKb,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAEhC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO;YACxB,CAAC,CAAC,uBAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YACpD,CAAC,CAAC,uBAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpE,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,IAAI,kCACC,IAAI,CAAC,IAAI,KACZ,cAAc,EAAE,OAAO,GACxB;SACF,CAAC;IACJ,CAAC;IAEK,sBAAsB,CAC1B,EAAU,EACV,iBAAiC,EACjC,SAAiC,EACjC,OAAuD,EACvD,UAEI,EAAE;;YAEN,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE;gBAChB,IAAI,iBAAiB,CAAC,IAAI,KAAK,OAAO,EAAE;oBACtC,OAAO;wBACL,UAAU,EAAE,iBAAiB,CAAC,YAAY;qBAC3C,CAAC;iBACH;gBACD,OAAO;oBACL,eAAe,EAAE,iBAAiB,CAAC,YAAY,CAAC,OAAO,EAAE;iBAC1D,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;YAEL,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAClD,EAAE,kCAEG,GAAG,KACN,SAAS,KAEX,OAAO,EACP,OAAO,CACR,CAAC;QACJ,CAAC;KAAA;IAEK,qBAAqB,CACzB,EAAU,EACV,OAAuD;;YAEvD,MAAM,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;KAAA;IAEK,SAAS;;YACb,MAAM,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAC/D,CAAC;KAAA;IAED,qBAAqB,CAAC,EAAsB;QAC1C,OAAO,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;CACF;AAzEC;IADC,eAAQ;uDA2BR;AAtCH,oDAqFC"}
|