@konemono/nostr-login 1.9.0 → 1.9.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@konemono/nostr-login",
3
- "version": "1.9.0",
3
+ "version": "1.9.1",
4
4
  "description": "",
5
5
  "main": "./dist/index.esm.js",
6
6
  "types": "./dist/index.d.ts",
@@ -30,12 +30,14 @@ export class AmberDirectSigner implements Signer {
30
30
  public async getPublicKey(id?: string): Promise<string> {
31
31
  id = id || Math.random().toString(36).substring(7);
32
32
  const url = this.generateUrl('', 'get_public_key', id);
33
- console.log('Amber redirecting to:', url);
33
+ console.log('[AmberDirectSigner] Requesting public key, URL:', url.substring(0, 100) + '...');
34
34
  window.open(url, '_blank', 'width=400,height=600');
35
35
  return new Promise((resolve, reject) => {
36
36
  const timer = setTimeout(() => {
37
37
  AmberDirectSigner.pendingResolves.delete(id!);
38
- reject(new Error('AmberDirectSigner timeout'));
38
+ const error = new Error('[AmberDirectSigner] getPublicKey timeout after 20s');
39
+ console.error(error.message);
40
+ reject(error);
39
41
  }, 20000);
40
42
  AmberDirectSigner.pendingResolves.set(id!, { resolve, timer });
41
43
  });
@@ -208,9 +210,11 @@ export class AmberDirectSigner implements Signer {
208
210
  if (entry) {
209
211
  this.pendingResolves.delete(id);
210
212
  if (entry.timer) clearTimeout(entry.timer);
213
+ console.log('[AmberDirectSigner] Resolving pending:', { id, type, resultLen: result.length });
211
214
  entry.resolve(result);
212
215
  return true;
213
216
  }
217
+ console.warn('[AmberDirectSigner] No pending resolve found for:', id);
214
218
  return false;
215
219
  }
216
220
 
@@ -76,26 +76,31 @@ class AuthNostrService extends EventEmitter implements Signer {
76
76
  decrypt: this.decrypt44.bind(this),
77
77
  };
78
78
 
79
- setTimeout(() => this.checkAmberResponse(), 100);
80
-
79
+ // Amberレスポンス検出: ポップアップから戻った時
81
80
  const check = () => {
81
+ console.log('[AuthNostrService] Checking Amber response');
82
82
  this.checkAmberResponse();
83
83
  };
84
84
 
85
+ // 主要なイベントで検出(ポーリングは廃止)
85
86
  window.addEventListener('focus', check);
86
87
  window.addEventListener('visibilitychange', () => {
87
- if (document.visibilityState === 'visible') check();
88
+ if (document.visibilityState === 'visible') {
89
+ console.log('[AuthNostrService] Page visible, checking Amber response');
90
+ check();
91
+ }
88
92
  });
89
93
  window.addEventListener('popstate', check);
90
94
  window.addEventListener('hashchange', check);
91
95
 
92
- // Periodic check as a safety net
93
- setInterval(check, 1000);
96
+ // 初期チェック
97
+ setTimeout(check, 100);
94
98
 
99
+ // ポップアップからのメッセージ受信
95
100
  window.addEventListener('message', event => {
96
101
  if (event.data && event.data.method === 'amberResponse') {
97
102
  const { id, type, result } = event.data;
98
- console.log('Amber response received via message', { id, type, result });
103
+ console.log('[AuthNostrService] Amber response received via message', { id, type, result });
99
104
  this.handleAmberResponse({ id, type, result });
100
105
  }
101
106
  });
@@ -104,9 +109,11 @@ class AuthNostrService extends EventEmitter implements Signer {
104
109
  private checkAmberResponse() {
105
110
  const response = AmberDirectSigner.parseResponse();
106
111
  if (response) {
112
+ console.log('[AuthNostrService] Amber response detected', response);
113
+
107
114
  // If we have an opener and it's not the same window, we are in a popup
108
115
  if (window.opener && window.opener !== window) {
109
- console.log('Amber response in popup, sending back to opener');
116
+ console.log('[AuthNostrService] In popup, sending response back to opener');
110
117
  window.opener.postMessage({ method: 'amberResponse', ...response }, window.location.origin);
111
118
  window.close();
112
119
  return;
@@ -119,10 +126,13 @@ class AuthNostrService extends EventEmitter implements Signer {
119
126
  private handledAmberIds: Set<string> = new Set();
120
127
 
121
128
  private handleAmberResponse(response: { id: string; type: string; result: string }) {
122
- if (this.handledAmberIds.has(response.id)) return;
129
+ if (this.handledAmberIds.has(response.id)) {
130
+ console.log('[AuthNostrService] Amber response already handled:', response.id);
131
+ return;
132
+ }
123
133
  this.handledAmberIds.add(response.id);
124
134
 
125
- console.log('Handling Amber response', response);
135
+ console.log('[AuthNostrService] Handling Amber response:', response);
126
136
 
127
137
  // Stop the "Connecting..." spinner
128
138
  this.emit('onAuthUrl', { url: '' });
@@ -130,7 +140,7 @@ class AuthNostrService extends EventEmitter implements Signer {
130
140
  // Resolve pending promises if any (for non-reload cases)
131
141
  const resolved = AmberDirectSigner.resolvePending(response.id, response.type, response.result);
132
142
  if (resolved) {
133
- console.log('Resolved pending Amber promise via resolvePending');
143
+ console.log('[AuthNostrService] Resolved pending Amber promise');
134
144
  }
135
145
 
136
146
  if (response.type === 'get_public_key' || response.type.includes('pub')) {
@@ -141,7 +151,7 @@ class AuthNostrService extends EventEmitter implements Signer {
141
151
  relays: [],
142
152
  signerPubkey: '',
143
153
  };
144
- console.log('Amber login success', info);
154
+ console.log('[AuthNostrService] Amber login success:', info);
145
155
  this.onAuth('login', info);
146
156
  }
147
157
 
@@ -162,7 +172,7 @@ class AuthNostrService extends EventEmitter implements Signer {
162
172
  }
163
173
 
164
174
  if (changed) {
165
- console.log('Cleaning up Amber response URL', url.toString());
175
+ console.log('[AuthNostrService] Cleaning up Amber response URL');
166
176
  window.history.replaceState({}, '', url.toString());
167
177
  }
168
178
  }
@@ -419,8 +429,16 @@ class AuthNostrService extends EventEmitter implements Signer {
419
429
  }
420
430
 
421
431
  public async setAmber(info: Info) {
432
+ console.log('setAmber', info);
433
+
434
+ // クリア
422
435
  this.releaseSigner();
423
436
  this.amberSigner = new AmberDirectSigner(info.pubkey);
437
+
438
+ // Amberは署名リクエストをウォレットに投げるだけなので、特別な初期化は不要
439
+ // signEventなどが直接amberSignerを使用する
440
+
441
+ // 認証完了
424
442
  this.onAuth('login', info);
425
443
  }
426
444