@crawlee/core 4.0.0-beta.38 → 4.0.0-beta.39
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": "@crawlee/core",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.39",
|
|
4
4
|
"description": "The scalable web crawling and scraping library for JavaScript/Node.js. Enables development of data extraction and web automation jobs (not only) with headless Chrome and Puppeteer.",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=22.0.0"
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"@apify/pseudo_url": "^2.0.59",
|
|
54
54
|
"@apify/timeout": "^0.3.2",
|
|
55
55
|
"@apify/utilities": "^2.15.5",
|
|
56
|
-
"@crawlee/memory-storage": "4.0.0-beta.
|
|
57
|
-
"@crawlee/types": "4.0.0-beta.
|
|
58
|
-
"@crawlee/utils": "4.0.0-beta.
|
|
56
|
+
"@crawlee/memory-storage": "4.0.0-beta.39",
|
|
57
|
+
"@crawlee/types": "4.0.0-beta.39",
|
|
58
|
+
"@crawlee/utils": "4.0.0-beta.39",
|
|
59
59
|
"@sapphire/async-queue": "^1.5.5",
|
|
60
60
|
"@vladfrangu/async_event_emitter": "^2.4.6",
|
|
61
61
|
"csv-stringify": "^6.5.2",
|
|
@@ -76,5 +76,5 @@
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
},
|
|
79
|
-
"gitHead": "
|
|
79
|
+
"gitHead": "ff8def8b3b99fd2d34ac97ff58961df2c47eec67"
|
|
80
80
|
}
|
|
@@ -51,9 +51,8 @@ export interface SessionPoolOptions {
|
|
|
51
51
|
* When some session is marked as blocked, it is removed and new one is created instead (the pool never returns an unusable session).
|
|
52
52
|
* Learn more in the {@doclink guides/session-management | Session management guide}.
|
|
53
53
|
*
|
|
54
|
-
* You can create one by calling the {@link SessionPool.open} function.
|
|
55
|
-
*
|
|
56
54
|
* Session pool is already integrated into crawlers and is always active.
|
|
55
|
+
* All public methods are lazy-initialized — the pool initializes itself on first use.
|
|
57
56
|
*
|
|
58
57
|
* You can configure the pool with many options. See the {@link SessionPoolOptions}.
|
|
59
58
|
* Session pool is by default persisted in default {@link KeyValueStore}.
|
|
@@ -63,7 +62,7 @@ export interface SessionPoolOptions {
|
|
|
63
62
|
* **Advanced usage:**
|
|
64
63
|
*
|
|
65
64
|
* ```javascript
|
|
66
|
-
* const sessionPool =
|
|
65
|
+
* const sessionPool = new SessionPool({
|
|
67
66
|
* maxPoolSize: 25,
|
|
68
67
|
* sessionOptions:{
|
|
69
68
|
* maxAgeSecs: 10,
|
|
@@ -103,34 +102,32 @@ export declare class SessionPool extends EventEmitter {
|
|
|
103
102
|
protected log: CrawleeLogger;
|
|
104
103
|
protected maxPoolSize: number;
|
|
105
104
|
protected createSessionFunction: CreateSession;
|
|
106
|
-
protected keyValueStore
|
|
105
|
+
protected keyValueStore?: KeyValueStore;
|
|
107
106
|
protected sessions: Session[];
|
|
108
107
|
protected sessionMap: Map<string, Session>;
|
|
109
108
|
protected sessionOptions: SessionOptions;
|
|
110
109
|
protected persistStateKeyValueStoreId?: string;
|
|
111
110
|
protected persistStateKey: string;
|
|
112
|
-
protected _listener
|
|
111
|
+
protected _listener?: () => Promise<void>;
|
|
113
112
|
protected events: EventManager;
|
|
114
113
|
protected persistenceOptions: PersistenceOptions;
|
|
115
|
-
|
|
114
|
+
private initPromise?;
|
|
116
115
|
private queue;
|
|
117
|
-
/**
|
|
118
|
-
* @internal
|
|
119
|
-
*/
|
|
120
116
|
constructor(options?: SessionPoolOptions);
|
|
121
117
|
/**
|
|
122
118
|
* Gets count of usable sessions in the pool.
|
|
123
119
|
*/
|
|
124
|
-
|
|
120
|
+
usableSessionsCount(): Promise<number>;
|
|
125
121
|
/**
|
|
126
122
|
* Gets count of retired sessions in the pool.
|
|
127
123
|
*/
|
|
128
|
-
|
|
124
|
+
retiredSessionsCount(): Promise<number>;
|
|
129
125
|
/**
|
|
130
126
|
* Starts periodic state persistence and potentially loads SessionPool state from {@link KeyValueStore}.
|
|
131
|
-
*
|
|
127
|
+
* Called automatically on first use of any public method.
|
|
132
128
|
*/
|
|
133
|
-
|
|
129
|
+
protected ensureInitialized(): Promise<void>;
|
|
130
|
+
private setupPool;
|
|
134
131
|
/**
|
|
135
132
|
* Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
|
|
136
133
|
* but this allows you to add more sessions once the max pool size is reached.
|
|
@@ -164,12 +161,12 @@ export declare class SessionPool extends EventEmitter {
|
|
|
164
161
|
* Returns an object representing the internal state of the `SessionPool` instance.
|
|
165
162
|
* Note that the object's fields can change in future releases.
|
|
166
163
|
*/
|
|
167
|
-
getState(): {
|
|
164
|
+
getState(): Promise<{
|
|
168
165
|
usableSessionsCount: number;
|
|
169
166
|
retiredSessionsCount: number;
|
|
170
167
|
// @ts-ignore optional peer dependency or compatibility with es2022
|
|
171
168
|
sessions: import("@crawlee/types").SessionState[];
|
|
172
|
-
}
|
|
169
|
+
}>;
|
|
173
170
|
/**
|
|
174
171
|
* Persists the current state of the `SessionPool` into the default {@link KeyValueStore}.
|
|
175
172
|
* The state is persisted automatically in regular intervals.
|
|
@@ -181,10 +178,6 @@ export declare class SessionPool extends EventEmitter {
|
|
|
181
178
|
* This function should be called after you are done with using the `SessionPool` instance.
|
|
182
179
|
*/
|
|
183
180
|
teardown(): Promise<void>;
|
|
184
|
-
/**
|
|
185
|
-
* SessionPool should not work before initialization.
|
|
186
|
-
*/
|
|
187
|
-
protected _throwIfNotInitialized(): void;
|
|
188
181
|
/**
|
|
189
182
|
* Removes retired `Session` instances from `SessionPool`.
|
|
190
183
|
*/
|
|
@@ -227,12 +220,5 @@ export declare class SessionPool extends EventEmitter {
|
|
|
227
220
|
* If the state was persisted it loads the `SessionPool` from the persisted state.
|
|
228
221
|
*/
|
|
229
222
|
protected _maybeLoadSessionPool(): Promise<void>;
|
|
230
|
-
/**
|
|
231
|
-
* Opens a SessionPool and returns a promise resolving to an instance
|
|
232
|
-
* of the {@link SessionPool} class that is already initialized.
|
|
233
|
-
*
|
|
234
|
-
* For more details and code examples, see the {@link SessionPool} class.
|
|
235
|
-
*/
|
|
236
|
-
static open(options?: SessionPoolOptions): Promise<SessionPool>;
|
|
237
223
|
}
|
|
238
224
|
//# sourceMappingURL=session_pool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session_pool.d.ts","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kEAAkE;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,6EAA6E;IAC7E,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;IAEtC,gBAAgB;IAChB,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED
|
|
1
|
+
{"version":3,"file":"session_pool.d.ts","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B;;;OAGG;IACH,CAAC,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzG;AAED,MAAM,WAAW,kBAAkB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,kEAAkE;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,6EAA6E;IAC7E,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAErC;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,aAAa,CAAC;IAEtC,gBAAgB;IAChB,GAAG,CAAC,EAAE,aAAa,CAAC;IAEpB;;OAEG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AACH,qBAAa,WAAY,SAAQ,YAAY;IACzC,SAAS,CAAC,GAAG,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,qBAAqB,EAAE,aAAa,CAAC;IAC/C,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAM;IACnC,SAAS,CAAC,UAAU,uBAA8B;IAClD,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IACzC,SAAS,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAC;IAC/C,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC;IAC/B,SAAS,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAEjD,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,KAAK,CAAoB;gBAErB,OAAO,GAAE,kBAAuB;IAiD5C;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK5C;;OAEG;IACG,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7C;;;OAGG;cACa,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;YAOpC,SAAS;IAsBvB;;;;;OAKG;IACG,UAAU,CAAC,OAAO,GAAE,OAAO,GAAG,cAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvE;;;;;OAKG;IACG,UAAU,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IASnE;;;;;OAKG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAEpC;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoCrD;;OAEG;IACG,UAAU,CAAC,OAAO,CAAC,EAAE,kBAAkB;IAS7C;;;OAGG;IACG,QAAQ;;;;;IASd;;;;OAIG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/D;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAS/B;;OAEG;IACH,SAAS,CAAC,sBAAsB;IAWhC;;;OAGG;IACH,SAAS,CAAC,WAAW,CAAC,UAAU,EAAE,OAAO;IAKzC;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC;;;;;;OAMG;cACa,6BAA6B,CACzC,WAAW,EAAE,WAAW,EACxB,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,cAAc,CAAA;KAAO,GAClD,OAAO,CAAC,OAAO,CAAC;IAWnB;;;OAGG;cACa,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAQlD;;OAEG;IACH,SAAS,CAAC,mBAAmB,IAAI,OAAO;IAIxC;;;OAGG;IACH,SAAS,CAAC,YAAY,IAAI,OAAO;IAIjC;;;OAGG;cACa,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;CAwBzD"}
|
|
@@ -11,9 +11,8 @@ import { Session } from './session.js';
|
|
|
11
11
|
* When some session is marked as blocked, it is removed and new one is created instead (the pool never returns an unusable session).
|
|
12
12
|
* Learn more in the {@doclink guides/session-management | Session management guide}.
|
|
13
13
|
*
|
|
14
|
-
* You can create one by calling the {@link SessionPool.open} function.
|
|
15
|
-
*
|
|
16
14
|
* Session pool is already integrated into crawlers and is always active.
|
|
15
|
+
* All public methods are lazy-initialized — the pool initializes itself on first use.
|
|
17
16
|
*
|
|
18
17
|
* You can configure the pool with many options. See the {@link SessionPoolOptions}.
|
|
19
18
|
* Session pool is by default persisted in default {@link KeyValueStore}.
|
|
@@ -23,7 +22,7 @@ import { Session } from './session.js';
|
|
|
23
22
|
* **Advanced usage:**
|
|
24
23
|
*
|
|
25
24
|
* ```javascript
|
|
26
|
-
* const sessionPool =
|
|
25
|
+
* const sessionPool = new SessionPool({
|
|
27
26
|
* maxPoolSize: 25,
|
|
28
27
|
* sessionOptions:{
|
|
29
28
|
* maxAgeSecs: 10,
|
|
@@ -72,11 +71,8 @@ export class SessionPool extends EventEmitter {
|
|
|
72
71
|
_listener;
|
|
73
72
|
events;
|
|
74
73
|
persistenceOptions;
|
|
75
|
-
|
|
74
|
+
initPromise;
|
|
76
75
|
queue = new AsyncQueue();
|
|
77
|
-
/**
|
|
78
|
-
* @internal
|
|
79
|
-
*/
|
|
80
76
|
constructor(options = {}) {
|
|
81
77
|
super();
|
|
82
78
|
ow(options, ow.object.exactShape({
|
|
@@ -111,30 +107,34 @@ export class SessionPool extends EventEmitter {
|
|
|
111
107
|
/**
|
|
112
108
|
* Gets count of usable sessions in the pool.
|
|
113
109
|
*/
|
|
114
|
-
|
|
110
|
+
async usableSessionsCount() {
|
|
111
|
+
await this.ensureInitialized();
|
|
115
112
|
return this.sessions.filter((session) => session.isUsable()).length;
|
|
116
113
|
}
|
|
117
114
|
/**
|
|
118
115
|
* Gets count of retired sessions in the pool.
|
|
119
116
|
*/
|
|
120
|
-
|
|
117
|
+
async retiredSessionsCount() {
|
|
118
|
+
await this.ensureInitialized();
|
|
121
119
|
return this.sessions.filter((session) => !session.isUsable()).length;
|
|
122
120
|
}
|
|
123
121
|
/**
|
|
124
122
|
* Starts periodic state persistence and potentially loads SessionPool state from {@link KeyValueStore}.
|
|
125
|
-
*
|
|
123
|
+
* Called automatically on first use of any public method.
|
|
126
124
|
*/
|
|
127
|
-
async
|
|
128
|
-
if (this.
|
|
125
|
+
async ensureInitialized() {
|
|
126
|
+
if (!this.initPromise) {
|
|
127
|
+
this.initPromise = this.setupPool();
|
|
128
|
+
}
|
|
129
|
+
return this.initPromise;
|
|
130
|
+
}
|
|
131
|
+
async setupPool() {
|
|
132
|
+
if (!this.persistenceOptions.enable) {
|
|
129
133
|
return;
|
|
130
134
|
}
|
|
131
135
|
this.keyValueStore = await KeyValueStore.open(this.persistStateKeyValueStoreId, {
|
|
132
136
|
config: serviceLocator.getConfiguration(),
|
|
133
137
|
});
|
|
134
|
-
if (!this.persistenceOptions.enable) {
|
|
135
|
-
this.isInitialized = true;
|
|
136
|
-
return;
|
|
137
|
-
}
|
|
138
138
|
if (!this.persistStateKeyValueStoreId) {
|
|
139
139
|
this.log.debug(`No 'persistStateKeyValueStoreId' options specified, this session pool's data has been saved in the KeyValueStore with the id: ${this.keyValueStore.id}`);
|
|
140
140
|
}
|
|
@@ -142,7 +142,6 @@ export class SessionPool extends EventEmitter {
|
|
|
142
142
|
await this._maybeLoadSessionPool();
|
|
143
143
|
this._listener = this.persistState.bind(this);
|
|
144
144
|
this.events.on("persistState" /* EventType.PERSIST_STATE */, this._listener);
|
|
145
|
-
this.isInitialized = true;
|
|
146
145
|
}
|
|
147
146
|
/**
|
|
148
147
|
* Adds a new session to the session pool. The pool automatically creates sessions up to the maximum size of the pool,
|
|
@@ -151,7 +150,7 @@ export class SessionPool extends EventEmitter {
|
|
|
151
150
|
* @param [options] The configuration options for the session being added to the session pool.
|
|
152
151
|
*/
|
|
153
152
|
async addSession(options = {}) {
|
|
154
|
-
this.
|
|
153
|
+
await this.ensureInitialized();
|
|
155
154
|
const { id } = options;
|
|
156
155
|
if (id) {
|
|
157
156
|
const sessionExists = this.sessionMap.has(id);
|
|
@@ -173,7 +172,7 @@ export class SessionPool extends EventEmitter {
|
|
|
173
172
|
* @param [options] The configuration options for the session being added to the session pool.
|
|
174
173
|
*/
|
|
175
174
|
async newSession(sessionOptions) {
|
|
176
|
-
this.
|
|
175
|
+
await this.ensureInitialized();
|
|
177
176
|
const newSession = await this.createSessionFunction(this, { sessionOptions });
|
|
178
177
|
this._addSession(newSession);
|
|
179
178
|
return newSession;
|
|
@@ -186,9 +185,9 @@ export class SessionPool extends EventEmitter {
|
|
|
186
185
|
* @param [sessionId] If provided, it returns the usable session with this id, `undefined` otherwise.
|
|
187
186
|
*/
|
|
188
187
|
async getSession(sessionId) {
|
|
188
|
+
await this.ensureInitialized();
|
|
189
189
|
await this.queue.wait();
|
|
190
190
|
try {
|
|
191
|
-
this._throwIfNotInitialized();
|
|
192
191
|
if (sessionId) {
|
|
193
192
|
const session = this.sessionMap.get(sessionId);
|
|
194
193
|
if (session && session.isUsable())
|
|
@@ -216,16 +215,18 @@ export class SessionPool extends EventEmitter {
|
|
|
216
215
|
if (!this.persistenceOptions.enable && !options?.enable) {
|
|
217
216
|
return;
|
|
218
217
|
}
|
|
218
|
+
await this.ensureInitialized();
|
|
219
219
|
await this.keyValueStore?.setValue(this.persistStateKey, null);
|
|
220
220
|
}
|
|
221
221
|
/**
|
|
222
222
|
* Returns an object representing the internal state of the `SessionPool` instance.
|
|
223
223
|
* Note that the object's fields can change in future releases.
|
|
224
224
|
*/
|
|
225
|
-
getState() {
|
|
225
|
+
async getState() {
|
|
226
|
+
await this.ensureInitialized();
|
|
226
227
|
return {
|
|
227
|
-
usableSessionsCount: this.usableSessionsCount,
|
|
228
|
-
retiredSessionsCount: this.retiredSessionsCount,
|
|
228
|
+
usableSessionsCount: await this.usableSessionsCount(),
|
|
229
|
+
retiredSessionsCount: await this.retiredSessionsCount(),
|
|
229
230
|
sessions: this.sessions.map((session) => session.getState()),
|
|
230
231
|
};
|
|
231
232
|
}
|
|
@@ -238,6 +239,7 @@ export class SessionPool extends EventEmitter {
|
|
|
238
239
|
if (!this.persistenceOptions.enable && !options?.enable) {
|
|
239
240
|
return;
|
|
240
241
|
}
|
|
242
|
+
await this.ensureInitialized();
|
|
241
243
|
this.log.debug('Persisting state', {
|
|
242
244
|
persistStateKeyValueStoreId: this.persistStateKeyValueStoreId,
|
|
243
245
|
persistStateKey: this.persistStateKey,
|
|
@@ -246,7 +248,7 @@ export class SessionPool extends EventEmitter {
|
|
|
246
248
|
const persistStateIntervalMillis = serviceLocator.getConfiguration().get('persistStateIntervalMillis');
|
|
247
249
|
const timeoutSecs = persistStateIntervalMillis / 2_000;
|
|
248
250
|
await this.keyValueStore
|
|
249
|
-
|
|
251
|
+
?.setValue(this.persistStateKey, await this.getState(), {
|
|
250
252
|
timeoutSecs,
|
|
251
253
|
doNotRetryTimeouts: true,
|
|
252
254
|
})
|
|
@@ -257,16 +259,14 @@ export class SessionPool extends EventEmitter {
|
|
|
257
259
|
* This function should be called after you are done with using the `SessionPool` instance.
|
|
258
260
|
*/
|
|
259
261
|
async teardown() {
|
|
260
|
-
|
|
262
|
+
if (!this.initPromise)
|
|
263
|
+
return;
|
|
264
|
+
await this.ensureInitialized();
|
|
265
|
+
if (this._listener) {
|
|
266
|
+
this.events.off("persistState" /* EventType.PERSIST_STATE */, this._listener);
|
|
267
|
+
}
|
|
261
268
|
await this.persistState();
|
|
262
269
|
}
|
|
263
|
-
/**
|
|
264
|
-
* SessionPool should not work before initialization.
|
|
265
|
-
*/
|
|
266
|
-
_throwIfNotInitialized() {
|
|
267
|
-
if (!this.isInitialized)
|
|
268
|
-
throw new Error('SessionPool is not initialized.');
|
|
269
|
-
}
|
|
270
270
|
/**
|
|
271
271
|
* Removes retired `Session` instances from `SessionPool`.
|
|
272
272
|
*/
|
|
@@ -337,7 +337,7 @@ export class SessionPool extends EventEmitter {
|
|
|
337
337
|
* If the state was persisted it loads the `SessionPool` from the persisted state.
|
|
338
338
|
*/
|
|
339
339
|
async _maybeLoadSessionPool() {
|
|
340
|
-
const loadedSessionPool = await this.keyValueStore
|
|
340
|
+
const loadedSessionPool = await this.keyValueStore?.getValue(this.persistStateKey);
|
|
341
341
|
if (!loadedSessionPool)
|
|
342
342
|
return;
|
|
343
343
|
// Invalidate old sessions and load active sessions only
|
|
@@ -354,18 +354,7 @@ export class SessionPool extends EventEmitter {
|
|
|
354
354
|
this._addSession(recreatedSession);
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
|
-
this.log.debug(`${this.
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Opens a SessionPool and returns a promise resolving to an instance
|
|
361
|
-
* of the {@link SessionPool} class that is already initialized.
|
|
362
|
-
*
|
|
363
|
-
* For more details and code examples, see the {@link SessionPool} class.
|
|
364
|
-
*/
|
|
365
|
-
static async open(options) {
|
|
366
|
-
const sessionPool = new SessionPool(options);
|
|
367
|
-
await sessionPool.initialize();
|
|
368
|
-
return sessionPool;
|
|
357
|
+
this.log.debug(`${this.sessions.length} active sessions loaded from KeyValueStore`);
|
|
369
358
|
}
|
|
370
359
|
}
|
|
371
360
|
//# sourceMappingURL=session_pool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session_pool.js","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,MAAM,IAAI,CAAC;AAMpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAgDvC
|
|
1
|
+
{"version":3,"file":"session_pool.js","sourceRoot":"","sources":["../../src/session_pool/session_pool.ts"],"names":[],"mappings":"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"}
|