@kevisual/kv-login 0.1.15 → 0.1.17

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/dist/app.js CHANGED
@@ -16,6 +16,184 @@ var __toESM = (mod, isNodeMode, target) => {
16
16
  };
17
17
  var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
18
18
 
19
+ // node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.js
20
+ var require_eventemitter32 = __commonJS((exports, module) => {
21
+ var has = Object.prototype.hasOwnProperty;
22
+ var prefix = "~";
23
+ function Events() {}
24
+ if (Object.create) {
25
+ Events.prototype = Object.create(null);
26
+ if (!new Events().__proto__)
27
+ prefix = false;
28
+ }
29
+ function EE(fn, context, once) {
30
+ this.fn = fn;
31
+ this.context = context;
32
+ this.once = once || false;
33
+ }
34
+ function addListener(emitter, event, fn, context, once) {
35
+ if (typeof fn !== "function") {
36
+ throw new TypeError("The listener must be a function");
37
+ }
38
+ var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
39
+ if (!emitter._events[evt])
40
+ emitter._events[evt] = listener, emitter._eventsCount++;
41
+ else if (!emitter._events[evt].fn)
42
+ emitter._events[evt].push(listener);
43
+ else
44
+ emitter._events[evt] = [emitter._events[evt], listener];
45
+ return emitter;
46
+ }
47
+ function clearEvent(emitter, evt) {
48
+ if (--emitter._eventsCount === 0)
49
+ emitter._events = new Events;
50
+ else
51
+ delete emitter._events[evt];
52
+ }
53
+ function EventEmitter4() {
54
+ this._events = new Events;
55
+ this._eventsCount = 0;
56
+ }
57
+ EventEmitter4.prototype.eventNames = function eventNames() {
58
+ var names = [], events, name;
59
+ if (this._eventsCount === 0)
60
+ return names;
61
+ for (name in events = this._events) {
62
+ if (has.call(events, name))
63
+ names.push(prefix ? name.slice(1) : name);
64
+ }
65
+ if (Object.getOwnPropertySymbols) {
66
+ return names.concat(Object.getOwnPropertySymbols(events));
67
+ }
68
+ return names;
69
+ };
70
+ EventEmitter4.prototype.listeners = function listeners(event) {
71
+ var evt = prefix ? prefix + event : event, handlers = this._events[evt];
72
+ if (!handlers)
73
+ return [];
74
+ if (handlers.fn)
75
+ return [handlers.fn];
76
+ for (var i = 0, l = handlers.length, ee = new Array(l);i < l; i++) {
77
+ ee[i] = handlers[i].fn;
78
+ }
79
+ return ee;
80
+ };
81
+ EventEmitter4.prototype.listenerCount = function listenerCount(event) {
82
+ var evt = prefix ? prefix + event : event, listeners = this._events[evt];
83
+ if (!listeners)
84
+ return 0;
85
+ if (listeners.fn)
86
+ return 1;
87
+ return listeners.length;
88
+ };
89
+ EventEmitter4.prototype.emit = function emit2(event, a1, a2, a3, a4, a5) {
90
+ var evt = prefix ? prefix + event : event;
91
+ if (!this._events[evt])
92
+ return false;
93
+ var listeners = this._events[evt], len = arguments.length, args, i;
94
+ if (listeners.fn) {
95
+ if (listeners.once)
96
+ this.removeListener(event, listeners.fn, undefined, true);
97
+ switch (len) {
98
+ case 1:
99
+ return listeners.fn.call(listeners.context), true;
100
+ case 2:
101
+ return listeners.fn.call(listeners.context, a1), true;
102
+ case 3:
103
+ return listeners.fn.call(listeners.context, a1, a2), true;
104
+ case 4:
105
+ return listeners.fn.call(listeners.context, a1, a2, a3), true;
106
+ case 5:
107
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
108
+ case 6:
109
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
110
+ }
111
+ for (i = 1, args = new Array(len - 1);i < len; i++) {
112
+ args[i - 1] = arguments[i];
113
+ }
114
+ listeners.fn.apply(listeners.context, args);
115
+ } else {
116
+ var length = listeners.length, j;
117
+ for (i = 0;i < length; i++) {
118
+ if (listeners[i].once)
119
+ this.removeListener(event, listeners[i].fn, undefined, true);
120
+ switch (len) {
121
+ case 1:
122
+ listeners[i].fn.call(listeners[i].context);
123
+ break;
124
+ case 2:
125
+ listeners[i].fn.call(listeners[i].context, a1);
126
+ break;
127
+ case 3:
128
+ listeners[i].fn.call(listeners[i].context, a1, a2);
129
+ break;
130
+ case 4:
131
+ listeners[i].fn.call(listeners[i].context, a1, a2, a3);
132
+ break;
133
+ default:
134
+ if (!args)
135
+ for (j = 1, args = new Array(len - 1);j < len; j++) {
136
+ args[j - 1] = arguments[j];
137
+ }
138
+ listeners[i].fn.apply(listeners[i].context, args);
139
+ }
140
+ }
141
+ }
142
+ return true;
143
+ };
144
+ EventEmitter4.prototype.on = function on(event, fn, context) {
145
+ return addListener(this, event, fn, context, false);
146
+ };
147
+ EventEmitter4.prototype.once = function once(event, fn, context) {
148
+ return addListener(this, event, fn, context, true);
149
+ };
150
+ EventEmitter4.prototype.removeListener = function removeListener(event, fn, context, once) {
151
+ var evt = prefix ? prefix + event : event;
152
+ if (!this._events[evt])
153
+ return this;
154
+ if (!fn) {
155
+ clearEvent(this, evt);
156
+ return this;
157
+ }
158
+ var listeners = this._events[evt];
159
+ if (listeners.fn) {
160
+ if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
161
+ clearEvent(this, evt);
162
+ }
163
+ } else {
164
+ for (var i = 0, events = [], length = listeners.length;i < length; i++) {
165
+ if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
166
+ events.push(listeners[i]);
167
+ }
168
+ }
169
+ if (events.length)
170
+ this._events[evt] = events.length === 1 ? events[0] : events;
171
+ else
172
+ clearEvent(this, evt);
173
+ }
174
+ return this;
175
+ };
176
+ EventEmitter4.prototype.removeAllListeners = function removeAllListeners(event) {
177
+ var evt;
178
+ if (event) {
179
+ evt = prefix ? prefix + event : event;
180
+ if (this._events[evt])
181
+ clearEvent(this, evt);
182
+ } else {
183
+ this._events = new Events;
184
+ this._eventsCount = 0;
185
+ }
186
+ return this;
187
+ };
188
+ EventEmitter4.prototype.off = EventEmitter4.prototype.removeListener;
189
+ EventEmitter4.prototype.addListener = EventEmitter4.prototype.on;
190
+ EventEmitter4.prefixed = prefix;
191
+ EventEmitter4.EventEmitter = EventEmitter4;
192
+ if (typeof module !== "undefined") {
193
+ module.exports = EventEmitter4;
194
+ }
195
+ });
196
+
19
197
  // node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js
20
198
  var require_can_promise = __commonJS((exports, module) => {
21
199
  module.exports = function() {
@@ -2972,7 +3150,7 @@ UnsafeHTMLDirective.directiveName = "unsafeHTML";
2972
3150
  UnsafeHTMLDirective.resultType = HTML_RESULT2;
2973
3151
  var unsafeHTML = directive(UnsafeHTMLDirective);
2974
3152
 
2975
- // node_modules/.pnpm/@kevisual+query@0.0.49/node_modules/@kevisual/query/dist/query-browser.js
3153
+ // node_modules/.pnpm/@kevisual+query@0.0.52/node_modules/@kevisual/query/dist/query-browser.js
2976
3154
  var isTextForContentType = (contentType) => {
2977
3155
  if (!contentType)
2978
3156
  return false;
@@ -3285,7 +3463,200 @@ class BaseQuery {
3285
3463
  }
3286
3464
  }
3287
3465
 
3288
- // node_modules/.pnpm/@kevisual+api@0.0.59_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-login.js
3466
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/dist/query-login.js
3467
+ var __create2 = Object.create;
3468
+ var __getProtoOf2 = Object.getPrototypeOf;
3469
+ var __defProp2 = Object.defineProperty;
3470
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
3471
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
3472
+ var __toESM2 = (mod, isNodeMode, target) => {
3473
+ target = mod != null ? __create2(__getProtoOf2(mod)) : {};
3474
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target;
3475
+ for (let key of __getOwnPropNames2(mod))
3476
+ if (!__hasOwnProp2.call(to, key))
3477
+ __defProp2(to, key, {
3478
+ get: () => mod[key],
3479
+ enumerable: true
3480
+ });
3481
+ return to;
3482
+ };
3483
+ var __commonJS2 = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
3484
+ var require_eventemitter3 = __commonJS2((exports, module) => {
3485
+ var has = Object.prototype.hasOwnProperty;
3486
+ var prefix = "~";
3487
+ function Events() {}
3488
+ if (Object.create) {
3489
+ Events.prototype = Object.create(null);
3490
+ if (!new Events().__proto__)
3491
+ prefix = false;
3492
+ }
3493
+ function EE(fn, context, once) {
3494
+ this.fn = fn;
3495
+ this.context = context;
3496
+ this.once = once || false;
3497
+ }
3498
+ function addListener(emitter, event, fn, context, once) {
3499
+ if (typeof fn !== "function") {
3500
+ throw new TypeError("The listener must be a function");
3501
+ }
3502
+ var listener = new EE(fn, context || emitter, once), evt = prefix ? prefix + event : event;
3503
+ if (!emitter._events[evt])
3504
+ emitter._events[evt] = listener, emitter._eventsCount++;
3505
+ else if (!emitter._events[evt].fn)
3506
+ emitter._events[evt].push(listener);
3507
+ else
3508
+ emitter._events[evt] = [emitter._events[evt], listener];
3509
+ return emitter;
3510
+ }
3511
+ function clearEvent(emitter, evt) {
3512
+ if (--emitter._eventsCount === 0)
3513
+ emitter._events = new Events;
3514
+ else
3515
+ delete emitter._events[evt];
3516
+ }
3517
+ function EventEmitter2() {
3518
+ this._events = new Events;
3519
+ this._eventsCount = 0;
3520
+ }
3521
+ EventEmitter2.prototype.eventNames = function eventNames() {
3522
+ var names = [], events, name;
3523
+ if (this._eventsCount === 0)
3524
+ return names;
3525
+ for (name in events = this._events) {
3526
+ if (has.call(events, name))
3527
+ names.push(prefix ? name.slice(1) : name);
3528
+ }
3529
+ if (Object.getOwnPropertySymbols) {
3530
+ return names.concat(Object.getOwnPropertySymbols(events));
3531
+ }
3532
+ return names;
3533
+ };
3534
+ EventEmitter2.prototype.listeners = function listeners(event) {
3535
+ var evt = prefix ? prefix + event : event, handlers = this._events[evt];
3536
+ if (!handlers)
3537
+ return [];
3538
+ if (handlers.fn)
3539
+ return [handlers.fn];
3540
+ for (var i = 0, l = handlers.length, ee = new Array(l);i < l; i++) {
3541
+ ee[i] = handlers[i].fn;
3542
+ }
3543
+ return ee;
3544
+ };
3545
+ EventEmitter2.prototype.listenerCount = function listenerCount(event) {
3546
+ var evt = prefix ? prefix + event : event, listeners = this._events[evt];
3547
+ if (!listeners)
3548
+ return 0;
3549
+ if (listeners.fn)
3550
+ return 1;
3551
+ return listeners.length;
3552
+ };
3553
+ EventEmitter2.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
3554
+ var evt = prefix ? prefix + event : event;
3555
+ if (!this._events[evt])
3556
+ return false;
3557
+ var listeners = this._events[evt], len = arguments.length, args, i;
3558
+ if (listeners.fn) {
3559
+ if (listeners.once)
3560
+ this.removeListener(event, listeners.fn, undefined, true);
3561
+ switch (len) {
3562
+ case 1:
3563
+ return listeners.fn.call(listeners.context), true;
3564
+ case 2:
3565
+ return listeners.fn.call(listeners.context, a1), true;
3566
+ case 3:
3567
+ return listeners.fn.call(listeners.context, a1, a2), true;
3568
+ case 4:
3569
+ return listeners.fn.call(listeners.context, a1, a2, a3), true;
3570
+ case 5:
3571
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
3572
+ case 6:
3573
+ return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
3574
+ }
3575
+ for (i = 1, args = new Array(len - 1);i < len; i++) {
3576
+ args[i - 1] = arguments[i];
3577
+ }
3578
+ listeners.fn.apply(listeners.context, args);
3579
+ } else {
3580
+ var length = listeners.length, j;
3581
+ for (i = 0;i < length; i++) {
3582
+ if (listeners[i].once)
3583
+ this.removeListener(event, listeners[i].fn, undefined, true);
3584
+ switch (len) {
3585
+ case 1:
3586
+ listeners[i].fn.call(listeners[i].context);
3587
+ break;
3588
+ case 2:
3589
+ listeners[i].fn.call(listeners[i].context, a1);
3590
+ break;
3591
+ case 3:
3592
+ listeners[i].fn.call(listeners[i].context, a1, a2);
3593
+ break;
3594
+ case 4:
3595
+ listeners[i].fn.call(listeners[i].context, a1, a2, a3);
3596
+ break;
3597
+ default:
3598
+ if (!args)
3599
+ for (j = 1, args = new Array(len - 1);j < len; j++) {
3600
+ args[j - 1] = arguments[j];
3601
+ }
3602
+ listeners[i].fn.apply(listeners[i].context, args);
3603
+ }
3604
+ }
3605
+ }
3606
+ return true;
3607
+ };
3608
+ EventEmitter2.prototype.on = function on(event, fn, context) {
3609
+ return addListener(this, event, fn, context, false);
3610
+ };
3611
+ EventEmitter2.prototype.once = function once(event, fn, context) {
3612
+ return addListener(this, event, fn, context, true);
3613
+ };
3614
+ EventEmitter2.prototype.removeListener = function removeListener(event, fn, context, once) {
3615
+ var evt = prefix ? prefix + event : event;
3616
+ if (!this._events[evt])
3617
+ return this;
3618
+ if (!fn) {
3619
+ clearEvent(this, evt);
3620
+ return this;
3621
+ }
3622
+ var listeners = this._events[evt];
3623
+ if (listeners.fn) {
3624
+ if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {
3625
+ clearEvent(this, evt);
3626
+ }
3627
+ } else {
3628
+ for (var i = 0, events = [], length = listeners.length;i < length; i++) {
3629
+ if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {
3630
+ events.push(listeners[i]);
3631
+ }
3632
+ }
3633
+ if (events.length)
3634
+ this._events[evt] = events.length === 1 ? events[0] : events;
3635
+ else
3636
+ clearEvent(this, evt);
3637
+ }
3638
+ return this;
3639
+ };
3640
+ EventEmitter2.prototype.removeAllListeners = function removeAllListeners(event) {
3641
+ var evt;
3642
+ if (event) {
3643
+ evt = prefix ? prefix + event : event;
3644
+ if (this._events[evt])
3645
+ clearEvent(this, evt);
3646
+ } else {
3647
+ this._events = new Events;
3648
+ this._eventsCount = 0;
3649
+ }
3650
+ return this;
3651
+ };
3652
+ EventEmitter2.prototype.off = EventEmitter2.prototype.removeListener;
3653
+ EventEmitter2.prototype.addListener = EventEmitter2.prototype.on;
3654
+ EventEmitter2.prefixed = prefix;
3655
+ EventEmitter2.EventEmitter = EventEmitter2;
3656
+ if (typeof module !== "undefined") {
3657
+ module.exports = EventEmitter2;
3658
+ }
3659
+ });
3289
3660
  var isTextForContentType2 = (contentType) => {
3290
3661
  if (!contentType)
3291
3662
  return false;
@@ -3597,6 +3968,15 @@ class BaseQuery2 {
3597
3968
  return this.query.get(data, options);
3598
3969
  }
3599
3970
  }
3971
+ var defaultCacheData = {
3972
+ loginUsers: [],
3973
+ user: undefined,
3974
+ id: undefined,
3975
+ accessToken: undefined,
3976
+ refreshToken: undefined,
3977
+ accessTokenExpiresIn: undefined,
3978
+ createdAt: undefined
3979
+ };
3600
3980
 
3601
3981
  class LoginCacheStore {
3602
3982
  cache;
@@ -3607,13 +3987,7 @@ class LoginCacheStore {
3607
3987
  throw new Error("cache is required");
3608
3988
  }
3609
3989
  this.cache = opts.cache;
3610
- this.cacheData = {
3611
- loginUsers: [],
3612
- user: undefined,
3613
- id: undefined,
3614
- accessToken: undefined,
3615
- refreshToken: undefined
3616
- };
3990
+ this.cacheData = { ...defaultCacheData };
3617
3991
  this.name = opts.name;
3618
3992
  }
3619
3993
  async setValue(value) {
@@ -3623,51 +3997,39 @@ class LoginCacheStore {
3623
3997
  }
3624
3998
  async delValue() {
3625
3999
  await this.cache.del();
3626
- this.cacheData = {
3627
- loginUsers: [],
3628
- user: undefined,
3629
- id: undefined,
3630
- accessToken: undefined,
3631
- refreshToken: undefined
3632
- };
4000
+ this.cacheData = { ...defaultCacheData };
3633
4001
  }
3634
4002
  getValue() {
3635
4003
  return this.cache.get(this.name);
3636
4004
  }
3637
4005
  async init() {
3638
- const defaultData = {
3639
- loginUsers: [],
3640
- user: undefined,
3641
- id: undefined,
3642
- accessToken: undefined,
3643
- refreshToken: undefined,
3644
- accessTokenExpiresIn: undefined,
3645
- createdAt: undefined
3646
- };
3647
- if (this.cache.init) {
3648
- try {
3649
- const cacheData = await this.cache.init();
3650
- this.cacheData = cacheData || defaultData;
3651
- } catch (error) {
3652
- console.log("cacheInit error", error);
4006
+ const defaultData = { ...this.cacheData };
4007
+ return new Promise(async (resolve) => {
4008
+ if (this.cache.init) {
4009
+ try {
4010
+ const cacheData = await this.cache.init();
4011
+ this.cacheData = cacheData || defaultData;
4012
+ } catch (error) {
4013
+ console.log("cacheInit error", error);
4014
+ }
4015
+ } else {
4016
+ this.cacheData = await this.getValue() || defaultData;
3653
4017
  }
3654
- } else {
3655
- this.cacheData = await this.getValue() || defaultData;
3656
- }
3657
- return this.cacheData;
4018
+ resolve(this.cacheData);
4019
+ });
3658
4020
  }
3659
- async setLoginUser(user) {
3660
- const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
4021
+ async setLoginUser(loginUser) {
4022
+ const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
3661
4023
  if (has) {
3662
- this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
3663
- }
3664
- this.cacheData.loginUsers.push(user);
3665
- this.cacheData.user = user.user;
3666
- this.cacheData.id = user.id;
3667
- this.cacheData.accessToken = user.accessToken;
3668
- this.cacheData.refreshToken = user.refreshToken;
3669
- this.cacheData.accessTokenExpiresIn = user.accessTokenExpiresIn;
3670
- this.cacheData.createdAt = user.createdAt;
4024
+ this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== loginUser.id);
4025
+ }
4026
+ this.cacheData.loginUsers.push(loginUser);
4027
+ this.cacheData.user = loginUser.user;
4028
+ this.cacheData.id = loginUser.id;
4029
+ this.cacheData.accessToken = loginUser.accessToken;
4030
+ this.cacheData.refreshToken = loginUser.refreshToken;
4031
+ this.cacheData.accessTokenExpiresIn = loginUser.accessTokenExpiresIn;
4032
+ this.cacheData.createdAt = loginUser.createdAt;
3671
4033
  await this.setValue(this.cacheData);
3672
4034
  }
3673
4035
  getCurrentUser() {
@@ -3703,22 +4065,22 @@ class LoginCacheStore {
3703
4065
  if (has) {
3704
4066
  this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
3705
4067
  }
3706
- this.cacheData.user = undefined;
3707
- this.cacheData.id = undefined;
3708
- this.cacheData.accessToken = undefined;
3709
- this.cacheData.refreshToken = undefined;
3710
- this.cacheData.accessTokenExpiresIn = undefined;
3711
- this.cacheData.createdAt = undefined;
4068
+ const hasOther = this.cacheData.loginUsers.length > 0;
4069
+ const current = this.cacheData.loginUsers[this.cacheData.loginUsers.length - 1];
4070
+ if (hasOther && current) {
4071
+ this.cacheData.user = current.user;
4072
+ this.cacheData.id = current.id;
4073
+ this.cacheData.accessToken = current.accessToken;
4074
+ this.cacheData.refreshToken = current.refreshToken;
4075
+ this.cacheData.accessTokenExpiresIn = current.accessTokenExpiresIn;
4076
+ this.cacheData.createdAt = current.createdAt;
4077
+ } else {
4078
+ this.cacheData = { ...defaultCacheData };
4079
+ }
3712
4080
  await this.setValue(this.cacheData);
3713
4081
  }
3714
4082
  async clearAll() {
3715
- this.cacheData.loginUsers = [];
3716
- this.cacheData.user = undefined;
3717
- this.cacheData.id = undefined;
3718
- this.cacheData.accessToken = undefined;
3719
- this.cacheData.refreshToken = undefined;
3720
- this.cacheData.accessTokenExpiresIn = undefined;
3721
- this.cacheData.createdAt = undefined;
4083
+ this.cacheData = { ...defaultCacheData };
3722
4084
  await this.setValue(this.cacheData);
3723
4085
  }
3724
4086
  }
@@ -4170,13 +4532,16 @@ class BaseLoad {
4170
4532
  }
4171
4533
  }
4172
4534
  }
4535
+ var import__ = __toESM2(require_eventemitter3(), 1);
4173
4536
 
4174
4537
  class QueryLogin extends BaseQuery2 {
4175
4538
  cacheStore;
4176
4539
  isBrowser;
4177
- load;
4178
4540
  storage;
4541
+ load = false;
4542
+ status = "init";
4179
4543
  onLoad;
4544
+ emitter = new import__.default;
4180
4545
  constructor(opts) {
4181
4546
  super({
4182
4547
  query: opts?.query || new Query2
@@ -4189,14 +4554,29 @@ class QueryLogin extends BaseQuery2 {
4189
4554
  if (!this.storage) {
4190
4555
  throw new Error("storage is required");
4191
4556
  }
4557
+ this.cacheStore.init().then(() => {
4558
+ this.onLoad?.();
4559
+ this.load = true;
4560
+ this.emitter.emit("load");
4561
+ });
4192
4562
  }
4193
4563
  setQuery(query) {
4194
4564
  this.query = query;
4195
4565
  }
4196
4566
  async init() {
4197
- await this.cacheStore.init();
4198
- this.load = true;
4199
- this.onLoad?.();
4567
+ if (this.load) {
4568
+ return this.cacheStore.cacheData;
4569
+ }
4570
+ return new Promise(async (resolve) => {
4571
+ const timer = setTimeout(() => {
4572
+ resolve(this.cacheStore.cacheData);
4573
+ }, 1000 * 20);
4574
+ const listener = () => {
4575
+ clearTimeout(timer);
4576
+ resolve(this.cacheStore.cacheData);
4577
+ };
4578
+ this.emitter.once("load", listener);
4579
+ });
4200
4580
  }
4201
4581
  async post(data, opts) {
4202
4582
  try {
@@ -4306,7 +4686,7 @@ class QueryLogin extends BaseQuery2 {
4306
4686
  async queryRefreshToken(opts) {
4307
4687
  const refreshToken = opts?.refreshToken;
4308
4688
  let accessToken = opts?.accessToken;
4309
- const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
4689
+ const _refreshToken = refreshToken ?? await this.cacheStore.getRefreshToken();
4310
4690
  let data = {};
4311
4691
  if (accessToken) {
4312
4692
  data.accessToken = accessToken;
@@ -4417,6 +4797,7 @@ class QueryLogin extends BaseQuery2 {
4417
4797
  }
4418
4798
  const isExpired = await this.cacheStore.getIsExpired();
4419
4799
  if (isExpired) {
4800
+ console.log("token过期,正在刷新token", this.cacheStore.cacheData);
4420
4801
  const res = await this.refreshLoginUser();
4421
4802
  if (res.code === 200) {
4422
4803
  return res.data?.accessToken || null;
@@ -4772,8 +5153,8 @@ class MyCache extends CacheStore2 {
4772
5153
  super(rest);
4773
5154
  this.key = key || "my-cache";
4774
5155
  }
4775
- async getData() {
4776
- return super.getCheckData(this.key);
5156
+ async getData(key = this.key) {
5157
+ return super.getCheckData(key);
4777
5158
  }
4778
5159
  async setData(data, opts) {
4779
5160
  super.setCheckData(this.key, data, opts);
@@ -5168,7 +5549,17 @@ class EventEmitter2 {
5168
5549
  var eventEmitter = new EventEmitter2;
5169
5550
  var emit = (event) => eventEmitter.emit(event);
5170
5551
 
5171
- // node_modules/.pnpm/@kevisual+api@0.0.59_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-cache.ts
5552
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/login-cache.ts
5553
+ var defaultCacheData2 = {
5554
+ loginUsers: [],
5555
+ user: undefined,
5556
+ id: undefined,
5557
+ accessToken: undefined,
5558
+ refreshToken: undefined,
5559
+ accessTokenExpiresIn: undefined,
5560
+ createdAt: undefined
5561
+ };
5562
+
5172
5563
  class LoginCacheStore2 {
5173
5564
  cache;
5174
5565
  name;
@@ -5178,13 +5569,7 @@ class LoginCacheStore2 {
5178
5569
  throw new Error("cache is required");
5179
5570
  }
5180
5571
  this.cache = opts.cache;
5181
- this.cacheData = {
5182
- loginUsers: [],
5183
- user: undefined,
5184
- id: undefined,
5185
- accessToken: undefined,
5186
- refreshToken: undefined
5187
- };
5572
+ this.cacheData = { ...defaultCacheData2 };
5188
5573
  this.name = opts.name;
5189
5574
  }
5190
5575
  async setValue(value) {
@@ -5194,51 +5579,39 @@ class LoginCacheStore2 {
5194
5579
  }
5195
5580
  async delValue() {
5196
5581
  await this.cache.del();
5197
- this.cacheData = {
5198
- loginUsers: [],
5199
- user: undefined,
5200
- id: undefined,
5201
- accessToken: undefined,
5202
- refreshToken: undefined
5203
- };
5582
+ this.cacheData = { ...defaultCacheData2 };
5204
5583
  }
5205
5584
  getValue() {
5206
5585
  return this.cache.get(this.name);
5207
5586
  }
5208
5587
  async init() {
5209
- const defaultData = {
5210
- loginUsers: [],
5211
- user: undefined,
5212
- id: undefined,
5213
- accessToken: undefined,
5214
- refreshToken: undefined,
5215
- accessTokenExpiresIn: undefined,
5216
- createdAt: undefined
5217
- };
5218
- if (this.cache.init) {
5219
- try {
5220
- const cacheData = await this.cache.init();
5221
- this.cacheData = cacheData || defaultData;
5222
- } catch (error) {
5223
- console.log("cacheInit error", error);
5588
+ const defaultData = { ...this.cacheData };
5589
+ return new Promise(async (resolve) => {
5590
+ if (this.cache.init) {
5591
+ try {
5592
+ const cacheData = await this.cache.init();
5593
+ this.cacheData = cacheData || defaultData;
5594
+ } catch (error) {
5595
+ console.log("cacheInit error", error);
5596
+ }
5597
+ } else {
5598
+ this.cacheData = await this.getValue() || defaultData;
5224
5599
  }
5225
- } else {
5226
- this.cacheData = await this.getValue() || defaultData;
5227
- }
5228
- return this.cacheData;
5600
+ resolve(this.cacheData);
5601
+ });
5229
5602
  }
5230
- async setLoginUser(user) {
5231
- const has = this.cacheData.loginUsers.find((u) => u.id === user.id);
5603
+ async setLoginUser(loginUser) {
5604
+ const has = this.cacheData.loginUsers.find((u) => u.id === loginUser.id);
5232
5605
  if (has) {
5233
- this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
5234
- }
5235
- this.cacheData.loginUsers.push(user);
5236
- this.cacheData.user = user.user;
5237
- this.cacheData.id = user.id;
5238
- this.cacheData.accessToken = user.accessToken;
5239
- this.cacheData.refreshToken = user.refreshToken;
5240
- this.cacheData.accessTokenExpiresIn = user.accessTokenExpiresIn;
5241
- this.cacheData.createdAt = user.createdAt;
5606
+ this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== loginUser.id);
5607
+ }
5608
+ this.cacheData.loginUsers.push(loginUser);
5609
+ this.cacheData.user = loginUser.user;
5610
+ this.cacheData.id = loginUser.id;
5611
+ this.cacheData.accessToken = loginUser.accessToken;
5612
+ this.cacheData.refreshToken = loginUser.refreshToken;
5613
+ this.cacheData.accessTokenExpiresIn = loginUser.accessTokenExpiresIn;
5614
+ this.cacheData.createdAt = loginUser.createdAt;
5242
5615
  await this.setValue(this.cacheData);
5243
5616
  }
5244
5617
  getCurrentUser() {
@@ -5274,22 +5647,22 @@ class LoginCacheStore2 {
5274
5647
  if (has) {
5275
5648
  this.cacheData.loginUsers = this.cacheData?.loginUsers?.filter((u) => u?.id && u.id !== user.id);
5276
5649
  }
5277
- this.cacheData.user = undefined;
5278
- this.cacheData.id = undefined;
5279
- this.cacheData.accessToken = undefined;
5280
- this.cacheData.refreshToken = undefined;
5281
- this.cacheData.accessTokenExpiresIn = undefined;
5282
- this.cacheData.createdAt = undefined;
5650
+ const hasOther = this.cacheData.loginUsers.length > 0;
5651
+ const current = this.cacheData.loginUsers[this.cacheData.loginUsers.length - 1];
5652
+ if (hasOther && current) {
5653
+ this.cacheData.user = current.user;
5654
+ this.cacheData.id = current.id;
5655
+ this.cacheData.accessToken = current.accessToken;
5656
+ this.cacheData.refreshToken = current.refreshToken;
5657
+ this.cacheData.accessTokenExpiresIn = current.accessTokenExpiresIn;
5658
+ this.cacheData.createdAt = current.createdAt;
5659
+ } else {
5660
+ this.cacheData = { ...defaultCacheData2 };
5661
+ }
5283
5662
  await this.setValue(this.cacheData);
5284
5663
  }
5285
5664
  async clearAll() {
5286
- this.cacheData.loginUsers = [];
5287
- this.cacheData.user = undefined;
5288
- this.cacheData.id = undefined;
5289
- this.cacheData.accessToken = undefined;
5290
- this.cacheData.refreshToken = undefined;
5291
- this.cacheData.accessTokenExpiresIn = undefined;
5292
- this.cacheData.createdAt = undefined;
5665
+ this.cacheData = { ...defaultCacheData2 };
5293
5666
  await this.setValue(this.cacheData);
5294
5667
  }
5295
5668
  }
@@ -5744,13 +6117,18 @@ class BaseLoad2 {
5744
6117
  }
5745
6118
  }
5746
6119
 
5747
- // node_modules/.pnpm/@kevisual+api@0.0.59_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login.ts
6120
+ // node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.mjs
6121
+ var import__2 = __toESM(require_eventemitter32(), 1);
6122
+
6123
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login.ts
5748
6124
  class QueryLogin2 extends BaseQuery {
5749
6125
  cacheStore;
5750
6126
  isBrowser;
5751
- load;
5752
6127
  storage;
6128
+ load = false;
6129
+ status = "init";
5753
6130
  onLoad;
6131
+ emitter = new import__2.default;
5754
6132
  constructor(opts) {
5755
6133
  super({
5756
6134
  query: opts?.query || new Query
@@ -5763,14 +6141,29 @@ class QueryLogin2 extends BaseQuery {
5763
6141
  if (!this.storage) {
5764
6142
  throw new Error("storage is required");
5765
6143
  }
6144
+ this.cacheStore.init().then(() => {
6145
+ this.onLoad?.();
6146
+ this.load = true;
6147
+ this.emitter.emit("load");
6148
+ });
5766
6149
  }
5767
6150
  setQuery(query2) {
5768
6151
  this.query = query2;
5769
6152
  }
5770
6153
  async init() {
5771
- await this.cacheStore.init();
5772
- this.load = true;
5773
- this.onLoad?.();
6154
+ if (this.load) {
6155
+ return this.cacheStore.cacheData;
6156
+ }
6157
+ return new Promise(async (resolve) => {
6158
+ const timer = setTimeout(() => {
6159
+ resolve(this.cacheStore.cacheData);
6160
+ }, 1000 * 20);
6161
+ const listener = () => {
6162
+ clearTimeout(timer);
6163
+ resolve(this.cacheStore.cacheData);
6164
+ };
6165
+ this.emitter.once("load", listener);
6166
+ });
5774
6167
  }
5775
6168
  async post(data, opts) {
5776
6169
  try {
@@ -5880,7 +6273,7 @@ class QueryLogin2 extends BaseQuery {
5880
6273
  async queryRefreshToken(opts) {
5881
6274
  const refreshToken = opts?.refreshToken;
5882
6275
  let accessToken = opts?.accessToken;
5883
- const _refreshToken = refreshToken || await this.cacheStore.getRefreshToken();
6276
+ const _refreshToken = refreshToken ?? await this.cacheStore.getRefreshToken();
5884
6277
  let data = {};
5885
6278
  if (accessToken) {
5886
6279
  data.accessToken = accessToken;
@@ -5991,6 +6384,7 @@ class QueryLogin2 extends BaseQuery {
5991
6384
  }
5992
6385
  const isExpired = await this.cacheStore.getIsExpired();
5993
6386
  if (isExpired) {
6387
+ console.log("token过期,正在刷新token", this.cacheStore.cacheData);
5994
6388
  const res = await this.refreshLoginUser();
5995
6389
  if (res.code === 200) {
5996
6390
  return res.data?.accessToken || null;
@@ -6135,7 +6529,7 @@ class QueryLogin2 extends BaseQuery {
6135
6529
  }
6136
6530
  }
6137
6531
 
6138
- // node_modules/.pnpm/@kevisual+cache@0.0.5/node_modules/@kevisual/cache/dist/cache.js
6532
+ // node_modules/.pnpm/idb-keyval@6.2.2/node_modules/idb-keyval/dist/index.js
6139
6533
  function promisifyRequest2(request) {
6140
6534
  return new Promise((resolve, reject) => {
6141
6535
  request.oncomplete = request.onsuccess = () => resolve(request.result);
@@ -6252,6 +6646,7 @@ function entries2(customStore = defaultGetStore2()) {
6252
6646
  });
6253
6647
  }
6254
6648
 
6649
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/browser-cache/cache-store.ts
6255
6650
  class BaseCacheStore2 {
6256
6651
  store;
6257
6652
  constructor(opts) {
@@ -6340,7 +6735,7 @@ class CacheStore3 extends BaseCacheStore2 {
6340
6735
  return this.del(key);
6341
6736
  }
6342
6737
  }
6343
-
6738
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/browser-cache/cache.ts
6344
6739
  class MyCache2 extends CacheStore3 {
6345
6740
  key;
6346
6741
  constructor(opts) {
@@ -6348,8 +6743,8 @@ class MyCache2 extends CacheStore3 {
6348
6743
  super(rest);
6349
6744
  this.key = key || "my-cache";
6350
6745
  }
6351
- async getData() {
6352
- return super.getCheckData(this.key);
6746
+ async getData(key = this.key) {
6747
+ return super.getCheckData(key);
6353
6748
  }
6354
6749
  async setData(data, opts) {
6355
6750
  super.setCheckData(this.key, data, opts);
@@ -6359,7 +6754,7 @@ class MyCache2 extends CacheStore3 {
6359
6754
  }
6360
6755
  }
6361
6756
 
6362
- // node_modules/.pnpm/@kevisual+api@0.0.59_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login-browser.ts
6757
+ // node_modules/.pnpm/@kevisual+api@0.0.62_react-dom@19.2.4_react@19.2.4__react@19.2.4/node_modules/@kevisual/api/query/query-login/query-login-browser.ts
6363
6758
  class QueryLoginBrowser2 extends QueryLogin2 {
6364
6759
  constructor(opts) {
6365
6760
  super({
@@ -6378,6 +6773,7 @@ var redirectHome = () => {
6378
6773
  if (redirect) {
6379
6774
  setTimeout(() => {
6380
6775
  const href2 = decodeURIComponent(redirect);
6776
+ window.open(href2, "_self");
6381
6777
  console.log("重定向到:", href2);
6382
6778
  }, 2000);
6383
6779
  return;
@@ -6777,11 +7173,11 @@ function requireEventemitter33() {
6777
7173
  else
6778
7174
  delete emitter._events[evt];
6779
7175
  }
6780
- function EventEmitter4() {
7176
+ function EventEmitter5() {
6781
7177
  this._events = new Events;
6782
7178
  this._eventsCount = 0;
6783
7179
  }
6784
- EventEmitter4.prototype.eventNames = function eventNames() {
7180
+ EventEmitter5.prototype.eventNames = function eventNames() {
6785
7181
  var names = [], events, name;
6786
7182
  if (this._eventsCount === 0)
6787
7183
  return names;
@@ -6794,7 +7190,7 @@ function requireEventemitter33() {
6794
7190
  }
6795
7191
  return names;
6796
7192
  };
6797
- EventEmitter4.prototype.listeners = function listeners(event) {
7193
+ EventEmitter5.prototype.listeners = function listeners(event) {
6798
7194
  var evt = prefix ? prefix + event : event, handlers = this._events[evt];
6799
7195
  if (!handlers)
6800
7196
  return [];
@@ -6805,7 +7201,7 @@ function requireEventemitter33() {
6805
7201
  }
6806
7202
  return ee;
6807
7203
  };
6808
- EventEmitter4.prototype.listenerCount = function listenerCount(event) {
7204
+ EventEmitter5.prototype.listenerCount = function listenerCount(event) {
6809
7205
  var evt = prefix ? prefix + event : event, listeners = this._events[evt];
6810
7206
  if (!listeners)
6811
7207
  return 0;
@@ -6813,7 +7209,7 @@ function requireEventemitter33() {
6813
7209
  return 1;
6814
7210
  return listeners.length;
6815
7211
  };
6816
- EventEmitter4.prototype.emit = function emit2(event, a1, a2, a3, a4, a5) {
7212
+ EventEmitter5.prototype.emit = function emit2(event, a1, a2, a3, a4, a5) {
6817
7213
  var evt = prefix ? prefix + event : event;
6818
7214
  if (!this._events[evt])
6819
7215
  return false;
@@ -6868,13 +7264,13 @@ function requireEventemitter33() {
6868
7264
  }
6869
7265
  return true;
6870
7266
  };
6871
- EventEmitter4.prototype.on = function on(event, fn, context) {
7267
+ EventEmitter5.prototype.on = function on(event, fn, context) {
6872
7268
  return addListener(this, event, fn, context, false);
6873
7269
  };
6874
- EventEmitter4.prototype.once = function once(event, fn, context) {
7270
+ EventEmitter5.prototype.once = function once(event, fn, context) {
6875
7271
  return addListener(this, event, fn, context, true);
6876
7272
  };
6877
- EventEmitter4.prototype.removeListener = function removeListener(event, fn, context, once) {
7273
+ EventEmitter5.prototype.removeListener = function removeListener(event, fn, context, once) {
6878
7274
  var evt = prefix ? prefix + event : event;
6879
7275
  if (!this._events[evt])
6880
7276
  return this;
@@ -6900,7 +7296,7 @@ function requireEventemitter33() {
6900
7296
  }
6901
7297
  return this;
6902
7298
  };
6903
- EventEmitter4.prototype.removeAllListeners = function removeAllListeners(event) {
7299
+ EventEmitter5.prototype.removeAllListeners = function removeAllListeners(event) {
6904
7300
  var evt;
6905
7301
  if (event) {
6906
7302
  evt = prefix ? prefix + event : event;
@@ -6912,18 +7308,18 @@ function requireEventemitter33() {
6912
7308
  }
6913
7309
  return this;
6914
7310
  };
6915
- EventEmitter4.prototype.off = EventEmitter4.prototype.removeListener;
6916
- EventEmitter4.prototype.addListener = EventEmitter4.prototype.on;
6917
- EventEmitter4.prefixed = prefix;
6918
- EventEmitter4.EventEmitter = EventEmitter4;
7311
+ EventEmitter5.prototype.off = EventEmitter5.prototype.removeListener;
7312
+ EventEmitter5.prototype.addListener = EventEmitter5.prototype.on;
7313
+ EventEmitter5.prefixed = prefix;
7314
+ EventEmitter5.EventEmitter = EventEmitter5;
6919
7315
  {
6920
- module.exports = EventEmitter4;
7316
+ module.exports = EventEmitter5;
6921
7317
  }
6922
7318
  })(eventemitter33);
6923
7319
  return eventemitter33.exports;
6924
7320
  }
6925
7321
  var eventemitter3Exports3 = requireEventemitter33();
6926
- var EventEmitter4 = /* @__PURE__ */ getDefaultExportFromCjs3(eventemitter3Exports3);
7322
+ var EventEmitter5 = /* @__PURE__ */ getDefaultExportFromCjs3(eventemitter3Exports3);
6927
7323
  var reRunFn3 = (promiseOpts) => {
6928
7324
  const timeout = promiseOpts.timeout || 5 * 60 * 1000;
6929
7325
  const interval = promiseOpts.interval || 1000;
@@ -6983,7 +7379,7 @@ class BaseLoad3 {
6983
7379
  static reRunFn = reRunFn3;
6984
7380
  timeout = 5 * 60 * 1000;
6985
7381
  constructor() {
6986
- this.event = new EventEmitter4;
7382
+ this.event = new EventEmitter5;
6987
7383
  this.loading = false;
6988
7384
  }
6989
7385
  listenKey(key, listenOpts) {
@@ -7333,10 +7729,10 @@ var getLoginMethodByDomain = () => {
7333
7729
  methods = ["password", "wechat-mp-ticket", "wechat"];
7334
7730
  break;
7335
7731
  case "localhost":
7336
- methods = ["password", "web"];
7732
+ methods = ["web", "password"];
7337
7733
  break;
7338
7734
  case "cnb.run":
7339
- methods = ["password", "web"];
7735
+ methods = ["web", "password"];
7340
7736
  break;
7341
7737
  default:
7342
7738
  methods = ["password", "web", "phone", "wechat", "wechat-mp", "wechat-mp-ticket"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kevisual/kv-login",
3
- "version": "0.1.15",
3
+ "version": "0.1.17",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "dev": "vite",
@@ -8,7 +8,7 @@
8
8
  "postbuild": "dts -i src/main.ts -o app.d.ts",
9
9
  "build:test": "vite build",
10
10
  "prepub": "rm -rf ./dist && pnpm run build:test",
11
- "pub": "ev deploy ./dist -k login -v 0.1.15 -u -y yes"
11
+ "pub": "ev deploy ./dist -k login -v 0.1.17 -u -y yes"
12
12
  },
13
13
  "keywords": [],
14
14
  "files": [
@@ -29,12 +29,12 @@
29
29
  "devDependencies": {
30
30
  "@kevisual/cache": "^0.0.5",
31
31
  "@kevisual/context": "^0.0.8",
32
- "@kevisual/query": "^0.0.49",
32
+ "@kevisual/query": "^0.0.52",
33
33
  "crypto-js": "^4.2.0",
34
34
  "lit-html": "^3.3.2",
35
35
  "qrcode": "^1.5.4",
36
- "@kevisual/api": "^0.0.59",
37
- "@types/bun": "^1.3.9",
36
+ "@kevisual/api": "^0.0.62",
37
+ "@types/bun": "^1.3.10",
38
38
  "vite": "^7.3.1"
39
39
  }
40
40
  }
@@ -17,7 +17,7 @@ export const redirectHome = () => {
17
17
  if (redirect) {
18
18
  setTimeout(() => {
19
19
  const href = decodeURIComponent(redirect);
20
- // window.open(href, '_self');
20
+ window.open(href, '_self');
21
21
  console.log('重定向到:', href);
22
22
  }, 2000);
23
23
  return;
@@ -60,10 +60,10 @@ const getLoginMethodByDomain = (): LoginMethod[] => {
60
60
  methods = ['password', 'wechat-mp-ticket', 'wechat',]
61
61
  break;
62
62
  case 'localhost':
63
- methods = ['password', 'web']
63
+ methods = ['web', 'password']
64
64
  break
65
65
  case 'cnb.run':
66
- methods = ['password', 'web']
66
+ methods = ['web', 'password']
67
67
  break;
68
68
  default:
69
69
  methods = ['password', 'web', 'phone', 'wechat', 'wechat-mp', 'wechat-mp-ticket']