@memberjunction/core-actions 2.55.0 → 2.56.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.
|
@@ -18,7 +18,7 @@ export interface SearchResponse {
|
|
|
18
18
|
* Adaptive rate limiter for DuckDuckGo searches
|
|
19
19
|
* - Starts with immediate execution (no queue)
|
|
20
20
|
* - Activates queue on rate limit errors (202, 403, 429)
|
|
21
|
-
* - Automatically deactivates queue after success period
|
|
21
|
+
* - Automatically deactivates queue after success period or when empty
|
|
22
22
|
*/
|
|
23
23
|
export declare class DuckDuckGoRateLimiter {
|
|
24
24
|
private requestQueue$;
|
|
@@ -26,6 +26,8 @@ export declare class DuckDuckGoRateLimiter {
|
|
|
26
26
|
private lastRateLimitTime;
|
|
27
27
|
private resetQueueTimer?;
|
|
28
28
|
private activeRequests;
|
|
29
|
+
private queuedRequests;
|
|
30
|
+
private requestCounter;
|
|
29
31
|
private readonly config;
|
|
30
32
|
private readonly rateLimitStatusCodes;
|
|
31
33
|
constructor(config?: Partial<RateLimitConfig>);
|
|
@@ -34,9 +36,17 @@ export declare class DuckDuckGoRateLimiter {
|
|
|
34
36
|
*/
|
|
35
37
|
private setupQueueProcessor;
|
|
36
38
|
/**
|
|
37
|
-
*
|
|
39
|
+
* Check if queue is empty and deactivate if so
|
|
38
40
|
*/
|
|
39
|
-
private
|
|
41
|
+
private checkQueueEmpty;
|
|
42
|
+
/**
|
|
43
|
+
* Execute a single request attempt
|
|
44
|
+
*/
|
|
45
|
+
private executeSingleRequest;
|
|
46
|
+
/**
|
|
47
|
+
* Execute request with retry logic
|
|
48
|
+
*/
|
|
49
|
+
private executeRequestWithRetries;
|
|
40
50
|
/**
|
|
41
51
|
* Activate the request queue due to rate limiting
|
|
42
52
|
*/
|
|
@@ -55,6 +65,9 @@ export declare class DuckDuckGoRateLimiter {
|
|
|
55
65
|
getStatus(): {
|
|
56
66
|
isQueueActive: boolean;
|
|
57
67
|
activeRequests: number;
|
|
68
|
+
queuedRequests: number;
|
|
69
|
+
totalProcessed: number;
|
|
70
|
+
lastRateLimitTime: number;
|
|
58
71
|
};
|
|
59
72
|
/**
|
|
60
73
|
* Force queue activation (for testing)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckduckgo-rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/custom/web/duckduckgo-rate-limiter.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"duckduckgo-rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/custom/web/duckduckgo-rate-limiter.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,qBAAa,qBAAqB;IAC9B,OAAO,CAAC,aAAa,CAKhB;IAEL,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMrB;IAEF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAmB;gBAE5C,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC;IAK7C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA8B3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAavB;;OAEG;YACW,oBAAoB;IAwBlC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAwCjC;;OAEG;IACH,OAAO,CAAC,aAAa;IAiBrB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAgD7D;;OAEG;IACH,SAAS,IAAI;QACT,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC7B;IAUD;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAI1B;;OAEG;IACH,oBAAoB,IAAI,IAAI;CAO/B;AAKD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,qBAAqB,CAKjG"}
|
|
@@ -7,7 +7,7 @@ const operators_1 = require("rxjs/operators");
|
|
|
7
7
|
* Adaptive rate limiter for DuckDuckGo searches
|
|
8
8
|
* - Starts with immediate execution (no queue)
|
|
9
9
|
* - Activates queue on rate limit errors (202, 403, 429)
|
|
10
|
-
* - Automatically deactivates queue after success period
|
|
10
|
+
* - Automatically deactivates queue after success period or when empty
|
|
11
11
|
*/
|
|
12
12
|
class DuckDuckGoRateLimiter {
|
|
13
13
|
requestQueue$ = new rxjs_1.Subject();
|
|
@@ -15,12 +15,14 @@ class DuckDuckGoRateLimiter {
|
|
|
15
15
|
lastRateLimitTime = 0;
|
|
16
16
|
resetQueueTimer;
|
|
17
17
|
activeRequests = 0;
|
|
18
|
+
queuedRequests = 0;
|
|
19
|
+
requestCounter = 0;
|
|
18
20
|
config = {
|
|
19
21
|
maxConcurrent: 1, // When queue is active, serialize requests
|
|
20
22
|
queueTimeout: 30000, // 30 seconds timeout for queued requests
|
|
21
23
|
retryDelay: 2000, // 2 seconds between retries
|
|
22
24
|
maxRetries: 4,
|
|
23
|
-
resetQueueAfterMs:
|
|
25
|
+
resetQueueAfterMs: 5000 // Reset queue after 5 seconds of success
|
|
24
26
|
};
|
|
25
27
|
rateLimitStatusCodes = [202, 403, 429];
|
|
26
28
|
constructor(config) {
|
|
@@ -31,52 +33,97 @@ class DuckDuckGoRateLimiter {
|
|
|
31
33
|
* Process requests through the queue when active
|
|
32
34
|
*/
|
|
33
35
|
setupQueueProcessor() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
error: (error) =>
|
|
36
|
+
// Only process queued requests when queue is active
|
|
37
|
+
this.requestQueue$.pipe((0, operators_1.concatMap)(({ request, resolver, rejecter, requestId }) => {
|
|
38
|
+
this.activeRequests++;
|
|
39
|
+
console.log(` ⚙️ Processing queued request ${requestId} - Active: ${this.activeRequests}, Remaining in queue: ${this.queuedRequests - 1}`);
|
|
40
|
+
return this.executeRequestWithRetries(request, requestId).pipe((0, operators_1.tap)({
|
|
41
|
+
next: (result) => {
|
|
42
|
+
this.activeRequests--;
|
|
43
|
+
this.queuedRequests--;
|
|
44
|
+
console.log(` ✅ Queued request ${requestId} completed - Remaining in queue: ${this.queuedRequests}`);
|
|
45
|
+
resolver(result);
|
|
46
|
+
this.checkQueueEmpty();
|
|
47
|
+
},
|
|
48
|
+
error: (error) => {
|
|
49
|
+
this.activeRequests--;
|
|
50
|
+
this.queuedRequests--;
|
|
51
|
+
console.log(` ❌ Queued request ${requestId} failed: ${error.message} - Remaining in queue: ${this.queuedRequests}`);
|
|
52
|
+
rejecter(error);
|
|
53
|
+
this.checkQueueEmpty();
|
|
54
|
+
}
|
|
47
55
|
}), (0, operators_1.catchError)(() => rxjs_1.EMPTY) // Prevent stream termination
|
|
48
|
-
)
|
|
49
|
-
}
|
|
56
|
+
);
|
|
57
|
+
})).subscribe();
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if queue is empty and deactivate if so
|
|
61
|
+
*/
|
|
62
|
+
checkQueueEmpty() {
|
|
63
|
+
if (this.isQueueActive && this.queuedRequests === 0 && this.activeRequests === 0) {
|
|
64
|
+
console.log(`\n 🟢🟢🟢 QUEUE DEACTIVATED 🟢🟢🟢`);
|
|
65
|
+
console.log(` Queue is empty - returning to immediate execution mode`);
|
|
66
|
+
console.log(` 🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢\n`);
|
|
67
|
+
this.isQueueActive = false;
|
|
68
|
+
if (this.resetQueueTimer) {
|
|
69
|
+
clearTimeout(this.resetQueueTimer);
|
|
70
|
+
this.resetQueueTimer = undefined;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
50
73
|
}
|
|
51
74
|
/**
|
|
52
|
-
* Execute a
|
|
75
|
+
* Execute a single request attempt
|
|
53
76
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
77
|
+
async executeSingleRequest(request, requestId) {
|
|
78
|
+
const startTime = Date.now();
|
|
79
|
+
try {
|
|
80
|
+
const response = await fetch(request.url, request.options);
|
|
56
81
|
const text = await response.text();
|
|
82
|
+
const duration = Date.now() - startTime;
|
|
57
83
|
// Check for rate limit status codes
|
|
58
84
|
if (this.rateLimitStatusCodes.includes(response.status)) {
|
|
59
|
-
|
|
85
|
+
console.log(`\n 🚨🚨🚨 RATE LIMIT DETECTED 🚨🚨🚨`);
|
|
86
|
+
console.log(` Request ${requestId} got ${response.status} status`);
|
|
87
|
+
console.log(` URL: ${request.url.substring(0, 100)}...`);
|
|
88
|
+
console.log(` Duration: ${duration}ms`);
|
|
89
|
+
console.log(` 🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨\n`);
|
|
60
90
|
throw new Error(`Rate limited: ${response.status}`);
|
|
61
91
|
}
|
|
62
|
-
// Success - consider deactivating queue
|
|
63
|
-
if (response.ok) {
|
|
64
|
-
this.scheduleQueueReset();
|
|
65
|
-
}
|
|
66
92
|
return { response, text };
|
|
67
|
-
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Execute request with retry logic
|
|
100
|
+
*/
|
|
101
|
+
executeRequestWithRetries(request, requestId) {
|
|
102
|
+
let attemptCount = 0;
|
|
103
|
+
return (0, rxjs_1.from)(this.executeSingleRequest(request, requestId)).pipe((0, operators_1.timeout)(this.config.queueTimeout), (0, operators_1.retry)({
|
|
68
104
|
count: this.config.maxRetries,
|
|
69
105
|
delay: (error, retryCount) => {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
106
|
+
attemptCount = retryCount;
|
|
107
|
+
// Check if it's a rate limit error
|
|
108
|
+
const isRateLimit = error.message?.includes('Rate limited');
|
|
109
|
+
if (isRateLimit) {
|
|
110
|
+
const delayMs = this.config.retryDelay * Math.pow(2, retryCount - 1);
|
|
111
|
+
console.log(` ⏳ Rate limit retry ${retryCount}/${this.config.maxRetries} - waiting ${delayMs}ms before retry`);
|
|
112
|
+
return (0, rxjs_1.timer)(delayMs);
|
|
113
|
+
}
|
|
114
|
+
// For other errors, retry immediately
|
|
115
|
+
return (0, rxjs_1.timer)(0);
|
|
116
|
+
}
|
|
117
|
+
}), (0, operators_1.tap)({
|
|
118
|
+
next: () => {
|
|
119
|
+
if (attemptCount > 0) {
|
|
120
|
+
console.log(` ✅ Request ${requestId} succeeded after ${attemptCount} retries`);
|
|
121
|
+
}
|
|
122
|
+
this.scheduleQueueReset();
|
|
75
123
|
}
|
|
76
124
|
}), (0, operators_1.catchError)((error) => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
return (0, rxjs_1.throwError)(() => new Error('Rate limited and queueing is disabled'));
|
|
125
|
+
if (error.message?.includes('Rate limited')) {
|
|
126
|
+
console.log(` ❌ Request ${requestId} failed after all retries - still rate limited`);
|
|
80
127
|
}
|
|
81
128
|
return (0, rxjs_1.throwError)(() => error);
|
|
82
129
|
}));
|
|
@@ -86,7 +133,10 @@ class DuckDuckGoRateLimiter {
|
|
|
86
133
|
*/
|
|
87
134
|
activateQueue() {
|
|
88
135
|
if (!this.isQueueActive) {
|
|
89
|
-
console.log(
|
|
136
|
+
console.log(`\n 🔴🔴🔴 QUEUE ACTIVATED 🔴🔴🔴`);
|
|
137
|
+
console.log(` Rate limiting detected - all future requests will be queued`);
|
|
138
|
+
console.log(` Queue will deactivate when empty or after ${this.config.resetQueueAfterMs}ms of success`);
|
|
139
|
+
console.log(` 🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴🔴\n`);
|
|
90
140
|
this.isQueueActive = true;
|
|
91
141
|
this.lastRateLimitTime = Date.now();
|
|
92
142
|
}
|
|
@@ -109,7 +159,9 @@ class DuckDuckGoRateLimiter {
|
|
|
109
159
|
// Schedule queue reset
|
|
110
160
|
this.resetQueueTimer = setTimeout(() => {
|
|
111
161
|
if (Date.now() - this.lastRateLimitTime >= this.config.resetQueueAfterMs) {
|
|
112
|
-
console.log(
|
|
162
|
+
console.log(`\n 🟢🟢🟢 QUEUE DEACTIVATED (TIMEOUT) 🟢🟢🟢`);
|
|
163
|
+
console.log(` No rate limits for ${this.config.resetQueueAfterMs}ms - returning to immediate execution`);
|
|
164
|
+
console.log(` 🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢\n`);
|
|
113
165
|
this.isQueueActive = false;
|
|
114
166
|
this.resetQueueTimer = undefined;
|
|
115
167
|
}
|
|
@@ -119,18 +171,45 @@ class DuckDuckGoRateLimiter {
|
|
|
119
171
|
* Execute a search request through the rate limiter
|
|
120
172
|
*/
|
|
121
173
|
async search(request) {
|
|
174
|
+
const requestId = `REQ-${++this.requestCounter}`;
|
|
122
175
|
return new Promise((resolve, reject) => {
|
|
123
176
|
// If queueing is disabled and queue is active, fail immediately
|
|
124
177
|
if (request.disableQueueing && this.isQueueActive) {
|
|
178
|
+
console.log(` 🚫 Request ${requestId} rejected - rate limiting active and queueing disabled`);
|
|
125
179
|
reject(new Error('Rate limiting active and queueing is disabled'));
|
|
126
180
|
return;
|
|
127
181
|
}
|
|
128
|
-
//
|
|
129
|
-
this.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
182
|
+
// If queue is not active, execute immediately
|
|
183
|
+
if (!this.isQueueActive) {
|
|
184
|
+
this.activeRequests++;
|
|
185
|
+
this.executeRequestWithRetries(request, requestId)
|
|
186
|
+
.subscribe({
|
|
187
|
+
next: (result) => {
|
|
188
|
+
this.activeRequests--;
|
|
189
|
+
resolve(result);
|
|
190
|
+
},
|
|
191
|
+
error: (error) => {
|
|
192
|
+
this.activeRequests--;
|
|
193
|
+
// Check if we got rate limited
|
|
194
|
+
if (error.message?.includes('Rate limited')) {
|
|
195
|
+
console.log(` 🔄 Request ${requestId} was rate limited, activating queue for future requests`);
|
|
196
|
+
this.activateQueue();
|
|
197
|
+
}
|
|
198
|
+
reject(error);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// Queue is active, add to queue
|
|
204
|
+
console.log(` 📥 Request ${requestId} added to queue (position: ${this.queuedRequests + 1})`);
|
|
205
|
+
this.queuedRequests++;
|
|
206
|
+
this.requestQueue$.next({
|
|
207
|
+
request,
|
|
208
|
+
resolver: resolve,
|
|
209
|
+
rejecter: reject,
|
|
210
|
+
requestId
|
|
211
|
+
});
|
|
212
|
+
}
|
|
134
213
|
});
|
|
135
214
|
}
|
|
136
215
|
/**
|
|
@@ -139,7 +218,10 @@ class DuckDuckGoRateLimiter {
|
|
|
139
218
|
getStatus() {
|
|
140
219
|
return {
|
|
141
220
|
isQueueActive: this.isQueueActive,
|
|
142
|
-
activeRequests: this.activeRequests
|
|
221
|
+
activeRequests: this.activeRequests,
|
|
222
|
+
queuedRequests: this.queuedRequests,
|
|
223
|
+
totalProcessed: this.requestCounter,
|
|
224
|
+
lastRateLimitTime: this.lastRateLimitTime
|
|
143
225
|
};
|
|
144
226
|
}
|
|
145
227
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckduckgo-rate-limiter.js","sourceRoot":"","sources":["../../../src/custom/web/duckduckgo-rate-limiter.ts"],"names":[],"mappings":";;;AAAA,+BAA+E;AAC/E,8CAA6F;AAqB7F;;;;;GAKG;AACH,MAAa,qBAAqB;IACtB,aAAa,GAAG,IAAI,cAAO,
|
|
1
|
+
{"version":3,"file":"duckduckgo-rate-limiter.js","sourceRoot":"","sources":["../../../src/custom/web/duckduckgo-rate-limiter.ts"],"names":[],"mappings":";;;AAAA,+BAA+E;AAC/E,8CAA6F;AAqB7F;;;;;GAKG;AACH,MAAa,qBAAqB;IACtB,aAAa,GAAG,IAAI,cAAO,EAK/B,CAAC;IAEG,aAAa,GAAG,KAAK,CAAC;IACtB,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,CAAkB;IACjC,cAAc,GAAG,CAAC,CAAC;IACnB,cAAc,GAAG,CAAC,CAAC;IACnB,cAAc,GAAG,CAAC,CAAC;IAEV,MAAM,GAAoB;QACvC,aAAa,EAAE,CAAC,EAAE,2CAA2C;QAC7D,YAAY,EAAE,KAAK,EAAE,yCAAyC;QAC9D,UAAU,EAAE,IAAI,EAAE,4BAA4B;QAC9C,UAAU,EAAE,CAAC;QACb,iBAAiB,EAAE,IAAI,CAAC,yCAAyC;KACpE,CAAC;IAEe,oBAAoB,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAExD,YAAY,MAAiC;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QAC5C,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACK,mBAAmB;QACvB,oDAAoD;QACpD,IAAI,CAAC,aAAa,CAAC,IAAI,CACnB,IAAA,qBAAS,EAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;YACrD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,cAAc,IAAI,CAAC,cAAc,yBAAyB,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC;YAEnJ,OAAO,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,IAAI,CAC1D,IAAA,eAAG,EAAC;gBACA,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;oBACb,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,oCAAoC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;oBAC5G,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACjB,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;gBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;oBACb,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,SAAS,YAAY,KAAK,CAAC,OAAO,0BAA0B,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;oBAC3H,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAChB,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;aACJ,CAAC,EACF,IAAA,sBAAU,EAAC,GAAG,EAAE,CAAC,YAAK,CAAC,CAAC,6BAA6B;aACxD,CAAC;QACN,CAAC,CAAC,CACL,CAAC,SAAS,EAAE,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,eAAe;QACnB,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACrC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAAC,OAAsB,EAAE,SAAiB;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAExC,oCAAoC;YACpC,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,QAAQ,QAAQ,CAAC,MAAM,SAAS,CAAC,CAAC;gBAC1E,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChE,OAAO,CAAC,GAAG,CAAC,qBAAqB,QAAQ,IAAI,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YACxD,CAAC;YAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,yBAAyB,CAAC,OAAsB,EAAE,SAAiB;QACvE,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,OAAO,IAAA,WAAI,EAAC,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3D,IAAA,mBAAO,EAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EACjC,IAAA,iBAAK,EAAC;YACF,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;gBACzB,YAAY,GAAG,UAAU,CAAC;gBAE1B,mCAAmC;gBACnC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;gBAE5D,IAAI,WAAW,EAAE,CAAC;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;oBACrE,OAAO,CAAC,GAAG,CAAC,8BAA8B,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,cAAc,OAAO,iBAAiB,CAAC,CAAC;oBACtH,OAAO,IAAA,YAAK,EAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;gBAED,sCAAsC;gBACtC,OAAO,IAAA,YAAK,EAAC,CAAC,CAAC,CAAC;YACpB,CAAC;SACJ,CAAC,EACF,IAAA,eAAG,EAAC;YACA,IAAI,EAAE,GAAG,EAAE;gBACP,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;oBACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,oBAAoB,YAAY,UAAU,CAAC,CAAC;gBAC1F,CAAC;gBACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC9B,CAAC;SACJ,CAAC,EACF,IAAA,sBAAU,EAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,qBAAqB,SAAS,gDAAgD,CAAC,CAAC;YAChG,CAAC;YACD,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,CAAC,CACL,CAAC;IACN,CAAC;IAED;;OAEG;IACK,aAAa;QACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;YACnF,OAAO,CAAC,GAAG,CAAC,qDAAqD,IAAI,CAAC,MAAM,CAAC,iBAAiB,eAAe,CAAC,CAAC;YAC/G,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,CAAC;QAED,iCAAiC;QACjC,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,uBAAuB;QACvB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACvC,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACvE,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,CAAC,MAAM,CAAC,iBAAiB,uCAAuC,CAAC,CAAC;gBAChH,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;gBAC1D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;YACrC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,OAAsB;QAC/B,MAAM,SAAS,GAAG,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QAEjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,gEAAgE;YAChE,IAAI,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChD,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,wDAAwD,CAAC,CAAC;gBACrG,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBACnE,OAAO;YACX,CAAC;YAED,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtB,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,CAAC,yBAAyB,CAAC,OAAO,EAAE,SAAS,CAAC;qBAC7C,SAAS,CAAC;oBACP,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE;wBACb,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC;oBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;wBACb,IAAI,CAAC,cAAc,EAAE,CAAC;wBAEtB,+BAA+B;wBAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;4BAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,yDAAyD,CAAC,CAAC;4BACtG,IAAI,CAAC,aAAa,EAAE,CAAC;wBACzB,CAAC;wBAED,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC;iBACJ,CAAC,CAAC;YACX,CAAC;iBAAM,CAAC;gBACJ,gCAAgC;gBAChC,OAAO,CAAC,GAAG,CAAC,sBAAsB,SAAS,8BAA8B,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrG,IAAI,CAAC,cAAc,EAAE,CAAC;gBAEtB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;oBACpB,OAAO;oBACP,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,MAAM;oBAChB,SAAS;iBACZ,CAAC,CAAC;YACP,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,SAAS;QAOL,OAAO;YACH,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC5C,CAAC;IACN,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,oBAAoB;QAChB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACrC,CAAC;IACL,CAAC;CACJ;AAvRD,sDAuRC;AAED,qBAAqB;AACrB,IAAI,mBAAmB,GAAiC,IAAI,CAAC;AAE7D;;GAEG;AACH,SAAgB,wBAAwB,CAAC,MAAiC;IACtE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvB,mBAAmB,GAAG,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AALD,4DAKC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@memberjunction/core-actions",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.56.0",
|
|
4
4
|
"description": "Library of generated and custom actions for the core MemberJunction framework. This library is maintained by MemberJunction and includes actions for use within the framework itself.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
"typescript": "^5.4.5"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@memberjunction/global": "2.
|
|
23
|
-
"@memberjunction/core": "2.
|
|
24
|
-
"@memberjunction/core-entities": "2.
|
|
25
|
-
"@memberjunction/actions": "2.
|
|
26
|
-
"@memberjunction/communication-engine": "2.
|
|
27
|
-
"@memberjunction/external-change-detection": "2.
|
|
28
|
-
"@memberjunction/ai-vector-sync": "2.
|
|
29
|
-
"@memberjunction/content-autotagging": "2.
|
|
22
|
+
"@memberjunction/global": "2.56.0",
|
|
23
|
+
"@memberjunction/core": "2.56.0",
|
|
24
|
+
"@memberjunction/core-entities": "2.56.0",
|
|
25
|
+
"@memberjunction/actions": "2.56.0",
|
|
26
|
+
"@memberjunction/communication-engine": "2.56.0",
|
|
27
|
+
"@memberjunction/external-change-detection": "2.56.0",
|
|
28
|
+
"@memberjunction/ai-vector-sync": "2.56.0",
|
|
29
|
+
"@memberjunction/content-autotagging": "2.56.0",
|
|
30
30
|
"axios": "^1.6.8",
|
|
31
31
|
"rxjs": "^7.8.1",
|
|
32
32
|
"nunjucks": "^3.2.4",
|