effect 4.0.0-beta.87 → 4.0.0-beta.88

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.
@@ -52,6 +52,8 @@ export const make = /*#__PURE__*/Effect.gen(function* () {
52
52
  const store = yield* RateLimiterStore;
53
53
  return identity({
54
54
  [TypeId]: TypeId,
55
+ adaptiveConsume: store.adaptiveConsume,
56
+ adaptiveFeedback: store.adaptiveFeedback,
55
57
  consume(options) {
56
58
  const tokens = options.tokens ?? 1;
57
59
  const onExceeded = options.onExceeded ?? "fail";
@@ -317,17 +319,23 @@ export class RateLimiterError extends /*#__PURE__*/Schema.ErrorClass(ErrorTypeId
317
319
  }
318
320
  }
319
321
  /**
320
- * Defines the low-level backing store for fixed-window counters and token-bucket state.
322
+ * Defines the low-level backing store for rate-limit state.
321
323
  *
322
324
  * **When to use**
323
325
  *
324
- * Use to provide the shared counter storage used by persistent rate-limit
325
- * checks.
326
+ * Use to provide the shared counter storage and adaptive feedback state used by
327
+ * persistent rate-limit checks.
326
328
  *
327
329
  * @category store
328
330
  * @since 4.0.0
329
331
  */
330
332
  export class RateLimiterStore extends /*#__PURE__*/Context.Service()("effect/persistence/RateLimiter/RateLimiterStore") {}
333
+ const adaptiveStateTtlGraceMillis = 60_000;
334
+ const adaptiveStateMaxWindowMillis = 60 * 60 * 1_000;
335
+ const clampAdaptiveDurationMillis = millis => {
336
+ if (Number.isNaN(millis) || millis <= 0) return 1;
337
+ return Math.min(millis, adaptiveStateMaxWindowMillis);
338
+ };
331
339
  /**
332
340
  * Provides a process-local in-memory `RateLimiterStore`.
333
341
  *
@@ -337,6 +345,19 @@ export class RateLimiterStore extends /*#__PURE__*/Context.Service()("effect/per
337
345
  export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () => {
338
346
  const fixedCounters = new Map();
339
347
  const tokenBuckets = new Map();
348
+ const adaptiveStates = new Map();
349
+ const getAdaptiveState = (key, now) => {
350
+ const state = adaptiveStates.get(key);
351
+ if (!state) return undefined;
352
+ if (state.expiresAt <= now) {
353
+ adaptiveStates.delete(key);
354
+ return undefined;
355
+ }
356
+ return state;
357
+ };
358
+ const cooldownExpiresAt = cooldownUntil => cooldownUntil + adaptiveStateTtlGraceMillis;
359
+ const learningExpiresAt = (now, fallbackWindow) => now + Duration.toMillis(fallbackWindow) + adaptiveStateTtlGraceMillis;
360
+ const learnedExpiresAt = (now, learnedWindowMillis) => now + learnedWindowMillis + adaptiveStateTtlGraceMillis;
340
361
  return RateLimiterStore.of({
341
362
  fixedWindow: options => Effect.clockWith(clock => Effect.sync(() => {
342
363
  const refillRateMillis = Duration.toMillis(options.refillRate);
@@ -379,6 +400,126 @@ export const layerStoreMemory = /*#__PURE__*/Layer.sync(RateLimiterStore, () =>
379
400
  bucket.tokens = newTokenCount;
380
401
  }
381
402
  return newTokenCount;
403
+ })),
404
+ adaptiveConsume: options => Effect.clockWith(clock => Effect.sync(() => {
405
+ const now = clock.currentTimeMillisUnsafe();
406
+ const state = getAdaptiveState(options.key, now);
407
+ if (!state) {
408
+ return {
409
+ delay: Duration.zero,
410
+ epoch: 0,
411
+ phase: "inactive"
412
+ };
413
+ }
414
+ if (state.phase === "cooldown") {
415
+ if (state.cooldownUntil > now) {
416
+ return {
417
+ delay: Duration.millis(state.cooldownUntil - now),
418
+ epoch: state.epoch,
419
+ phase: "cooldown"
420
+ };
421
+ }
422
+ state.phase = "learning";
423
+ state.epoch += 1;
424
+ state.learningStartedAt = now;
425
+ state.observedTokens = options.tokens;
426
+ state.expiresAt = learningExpiresAt(now, options.fallbackWindow);
427
+ return {
428
+ delay: Duration.zero,
429
+ epoch: state.epoch,
430
+ phase: "learning"
431
+ };
432
+ }
433
+ if (state.phase === "learning") {
434
+ state.observedTokens += options.tokens;
435
+ return {
436
+ delay: Duration.zero,
437
+ epoch: state.epoch,
438
+ phase: state.phase
439
+ };
440
+ }
441
+ if (state.phase === "learned") {
442
+ const refillRateMillis = state.learnedWindowMillis / state.learnedLimit;
443
+ if (state.cooldownUntil <= now) {
444
+ state.observedTokens = 0;
445
+ state.cooldownUntil = now;
446
+ }
447
+ state.observedTokens += options.tokens;
448
+ state.cooldownUntil += refillRateMillis * options.tokens;
449
+ const ttl = state.cooldownUntil - now;
450
+ const ttlTotal = state.observedTokens * refillRateMillis;
451
+ const elapsed = ttlTotal - ttl;
452
+ const windowNumber = Math.floor((state.observedTokens - 1) / state.learnedLimit);
453
+ const remaining = windowNumber * state.learnedWindowMillis - elapsed;
454
+ return {
455
+ delay: remaining <= 0 ? Duration.zero : Duration.millis(remaining),
456
+ epoch: state.epoch,
457
+ phase: state.phase
458
+ };
459
+ }
460
+ return {
461
+ delay: Duration.zero,
462
+ epoch: state.epoch,
463
+ phase: state.phase
464
+ };
465
+ })),
466
+ adaptiveFeedback: options => Effect.clockWith(clock => Effect.sync(() => {
467
+ if (options.status !== 429 || options.retryAfter === undefined) return;
468
+ const retryAfterMillis = clampAdaptiveDurationMillis(Duration.toMillis(options.retryAfter));
469
+ const now = clock.currentTimeMillisUnsafe();
470
+ const cooldownUntil = now + retryAfterMillis;
471
+ const state = getAdaptiveState(options.key, now);
472
+ if (!state) {
473
+ if (options.epoch !== 0) return;
474
+ adaptiveStates.set(options.key, {
475
+ phase: "cooldown",
476
+ epoch: 0,
477
+ cooldownUntil,
478
+ learningStartedAt: 0,
479
+ observedTokens: 0,
480
+ learnedLimit: 0,
481
+ learnedWindowMillis: 0,
482
+ expiresAt: cooldownExpiresAt(cooldownUntil)
483
+ });
484
+ return;
485
+ }
486
+ if (state.epoch !== options.epoch) return;
487
+ if (state.phase === "cooldown") {
488
+ state.cooldownUntil = Math.max(state.cooldownUntil, cooldownUntil);
489
+ state.expiresAt = cooldownExpiresAt(state.cooldownUntil);
490
+ return;
491
+ }
492
+ if (state.phase === "learning") {
493
+ const acceptedTokens = state.observedTokens - options.tokens;
494
+ if (acceptedTokens <= 0) {
495
+ state.phase = "cooldown";
496
+ state.cooldownUntil = cooldownUntil;
497
+ state.learningStartedAt = 0;
498
+ state.observedTokens = 0;
499
+ state.learnedLimit = 0;
500
+ state.learnedWindowMillis = 0;
501
+ state.expiresAt = cooldownExpiresAt(cooldownUntil);
502
+ return;
503
+ }
504
+ const learnedWindowMillis = clampAdaptiveDurationMillis(now - state.learningStartedAt + retryAfterMillis);
505
+ state.phase = "learned";
506
+ state.epoch += 1;
507
+ state.cooldownUntil = state.learningStartedAt + learnedWindowMillis;
508
+ state.observedTokens = acceptedTokens;
509
+ state.learnedLimit = acceptedTokens;
510
+ state.learnedWindowMillis = learnedWindowMillis;
511
+ state.expiresAt = learnedExpiresAt(now, learnedWindowMillis);
512
+ return;
513
+ }
514
+ if (state.phase === "learned") {
515
+ state.phase = "cooldown";
516
+ state.cooldownUntil = cooldownUntil;
517
+ state.learningStartedAt = 0;
518
+ state.observedTokens = 0;
519
+ state.learnedLimit = 0;
520
+ state.learnedWindowMillis = 0;
521
+ state.expiresAt = cooldownExpiresAt(cooldownUntil);
522
+ }
382
523
  }))
383
524
  });
384
525
  });
@@ -394,6 +535,8 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
394
535
  const redis = yield* Redis.Redis;
395
536
  const fixedWindow = redis.eval(fixedWindowScript);
396
537
  const tokenBucket = redis.eval(tokenBucketScript);
538
+ const adaptiveConsume = redis.eval(adaptiveConsumeScript);
539
+ const adaptiveFeedback = redis.eval(adaptiveFeedbackScript);
397
540
  return RateLimiterStore.of({
398
541
  fixedWindow(options) {
399
542
  const key = `${prefix}${options.key}`;
@@ -415,6 +558,30 @@ export const makeStoreRedis = /*#__PURE__*/Effect.fnUntraced(function* (options)
415
558
  cause
416
559
  })
417
560
  })));
561
+ },
562
+ adaptiveConsume(options) {
563
+ const key = `${prefix}${options.key}:adaptive`;
564
+ return Effect.map(Effect.mapError(adaptiveConsume(key, options.tokens, Duration.toMillis(options.fallbackWindow), adaptiveStateTtlGraceMillis), cause => new RateLimiterError({
565
+ reason: new RateLimitStoreError({
566
+ message: `Failed to execute adaptiveConsume rate limiting command`,
567
+ cause: cause.cause
568
+ })
569
+ })), ([delayMillis, epoch, phase]) => ({
570
+ delay: delayMillis <= 0 ? Duration.zero : Duration.millis(delayMillis),
571
+ epoch,
572
+ phase
573
+ }));
574
+ },
575
+ adaptiveFeedback(options) {
576
+ if (options.status !== 429 || options.retryAfter === undefined) return Effect.void;
577
+ const retryAfterMillis = clampAdaptiveDurationMillis(Duration.toMillis(options.retryAfter));
578
+ const key = `${prefix}${options.key}:adaptive`;
579
+ return Effect.asVoid(Effect.mapError(adaptiveFeedback(key, options.epoch, options.tokens, retryAfterMillis, adaptiveStateTtlGraceMillis, adaptiveStateMaxWindowMillis), cause => new RateLimiterError({
580
+ reason: new RateLimitStoreError({
581
+ message: `Failed to execute adaptiveFeedback rate limiting command`,
582
+ cause: cause.cause
583
+ })
584
+ })));
418
585
  }
419
586
  });
420
587
  });
@@ -428,7 +595,7 @@ local limit = tonumber(ARGV[3])
428
595
  local current = tonumber(redis.call("GET", key))
429
596
 
430
597
  if not current then
431
- local nextpttl = refillms * tokens
598
+ local nextpttl = math.max(1, math.ceil(refillms * tokens))
432
599
  redis.call("SET", key, tokens, "PX", nextpttl)
433
600
  return { tokens, nextpttl }
434
601
  end
@@ -439,7 +606,7 @@ if limit and next > limit then
439
606
  return { next, currentpttl }
440
607
  end
441
608
 
442
- local nextpttl = currentpttl + (refillms * tokens)
609
+ local nextpttl = math.max(1, math.ceil(currentpttl + (refillms * tokens)))
443
610
  redis.call("SET", key, next, "PX", nextpttl)
444
611
  return { next, nextpttl }
445
612
  `
@@ -480,6 +647,231 @@ redis.call("SET", last_refill_key, last_refill, "PX", ttl)
480
647
  return next
481
648
  `
482
649
  }).withReturnType();
650
+ const adaptiveConsumeScript = /*#__PURE__*/Redis.script((key, tokens, fallbackWindowMillis, ttlGraceMillis) => [key, tokens, fallbackWindowMillis, ttlGraceMillis], {
651
+ numberOfKeys: 1,
652
+ lua: `
653
+ local key = KEYS[1]
654
+ local tokens = tonumber(ARGV[1])
655
+ local fallback_window_ms = tonumber(ARGV[2])
656
+ local ttl_grace_ms = tonumber(ARGV[3])
657
+
658
+ local time = redis.call("TIME")
659
+ local now = (tonumber(time[1]) * 1000) + math.floor(tonumber(time[2]) / 1000)
660
+
661
+ local phase = redis.call("HGET", key, "phase")
662
+ if not phase then
663
+ return { 0, 0, "inactive" }
664
+ end
665
+
666
+ local epoch = tonumber(redis.call("HGET", key, "epoch") or "0")
667
+
668
+ if phase == "cooldown" then
669
+ local cooldown_until = tonumber(redis.call("HGET", key, "cooldownUntil") or "0")
670
+ if cooldown_until > now then
671
+ return { math.ceil(cooldown_until - now), epoch, "cooldown" }
672
+ end
673
+
674
+ epoch = epoch + 1
675
+ redis.call(
676
+ "HSET",
677
+ key,
678
+ "phase",
679
+ "learning",
680
+ "epoch",
681
+ epoch,
682
+ "cooldownUntil",
683
+ 0,
684
+ "learningStartedAt",
685
+ now,
686
+ "observedTokens",
687
+ tokens,
688
+ "learnedLimit",
689
+ 0,
690
+ "learnedWindowMillis",
691
+ 0
692
+ )
693
+ redis.call("PEXPIRE", key, math.max(1, math.ceil(fallback_window_ms + ttl_grace_ms)))
694
+ return { 0, epoch, "learning" }
695
+ end
696
+
697
+ if phase == "learning" then
698
+ local observed_tokens = tonumber(redis.call("HGET", key, "observedTokens") or "0") + tokens
699
+ redis.call("HSET", key, "observedTokens", observed_tokens)
700
+ return { 0, epoch, "learning" }
701
+ end
702
+
703
+ if phase == "learned" then
704
+ local cooldown_until = tonumber(redis.call("HGET", key, "cooldownUntil") or "0")
705
+ local observed_tokens = tonumber(redis.call("HGET", key, "observedTokens") or "0")
706
+ local learned_limit = tonumber(redis.call("HGET", key, "learnedLimit") or "0")
707
+ local learned_window_ms = tonumber(redis.call("HGET", key, "learnedWindowMillis") or "0")
708
+ local refill_rate_ms = learned_window_ms / learned_limit
709
+
710
+ if cooldown_until <= now then
711
+ observed_tokens = 0
712
+ cooldown_until = now
713
+ end
714
+
715
+ observed_tokens = observed_tokens + tokens
716
+ cooldown_until = cooldown_until + (refill_rate_ms * tokens)
717
+
718
+ local ttl = cooldown_until - now
719
+ local ttl_total = observed_tokens * refill_rate_ms
720
+ local elapsed = ttl_total - ttl
721
+ local window_number = math.floor((observed_tokens - 1) / learned_limit)
722
+ local remaining = (window_number * learned_window_ms) - elapsed
723
+
724
+ redis.call("HSET", key, "observedTokens", observed_tokens, "cooldownUntil", cooldown_until)
725
+
726
+ if remaining <= 0 then
727
+ return { 0, epoch, "learned" }
728
+ end
729
+ return { math.ceil(remaining), epoch, "learned" }
730
+ end
731
+
732
+ return { 0, epoch, phase }
733
+ `
734
+ }).withReturnType();
735
+ const adaptiveFeedbackScript = /*#__PURE__*/Redis.script((key, epoch, tokens, retryAfterMillis, ttlGraceMillis, maxWindowMillis) => [key, epoch, tokens, retryAfterMillis, ttlGraceMillis, maxWindowMillis], {
736
+ numberOfKeys: 1,
737
+ lua: `
738
+ local key = KEYS[1]
739
+ local feedback_epoch = tonumber(ARGV[1])
740
+ local tokens = tonumber(ARGV[2])
741
+ local retry_after_ms = tonumber(ARGV[3])
742
+ local ttl_grace_ms = tonumber(ARGV[4])
743
+ local max_window_ms = tonumber(ARGV[5])
744
+
745
+ if retry_after_ms <= 0 then
746
+ retry_after_ms = 1
747
+ end
748
+ if retry_after_ms > max_window_ms then
749
+ retry_after_ms = max_window_ms
750
+ end
751
+
752
+ local time = redis.call("TIME")
753
+ local now = (tonumber(time[1]) * 1000) + math.floor(tonumber(time[2]) / 1000)
754
+ local cooldown_until = now + retry_after_ms
755
+
756
+ local phase = redis.call("HGET", key, "phase")
757
+ if not phase then
758
+ if feedback_epoch ~= 0 then
759
+ return 0
760
+ end
761
+ redis.call(
762
+ "HSET",
763
+ key,
764
+ "phase",
765
+ "cooldown",
766
+ "epoch",
767
+ 0,
768
+ "cooldownUntil",
769
+ cooldown_until,
770
+ "learningStartedAt",
771
+ 0,
772
+ "observedTokens",
773
+ 0,
774
+ "learnedLimit",
775
+ 0,
776
+ "learnedWindowMillis",
777
+ 0
778
+ )
779
+ redis.call("PEXPIRE", key, math.max(1, math.ceil(retry_after_ms + ttl_grace_ms)))
780
+ return 1
781
+ end
782
+
783
+ local epoch = tonumber(redis.call("HGET", key, "epoch") or "0")
784
+ if epoch ~= feedback_epoch then
785
+ return 0
786
+ end
787
+
788
+ if phase == "cooldown" then
789
+ local current_cooldown_until = tonumber(redis.call("HGET", key, "cooldownUntil") or "0")
790
+ if current_cooldown_until > cooldown_until then
791
+ cooldown_until = current_cooldown_until
792
+ end
793
+ redis.call("HSET", key, "cooldownUntil", cooldown_until)
794
+ redis.call("PEXPIRE", key, math.max(1, math.ceil((cooldown_until - now) + ttl_grace_ms)))
795
+ return 1
796
+ end
797
+
798
+ if phase == "learning" then
799
+ local observed_tokens = tonumber(redis.call("HGET", key, "observedTokens") or "0")
800
+ local accepted_tokens = observed_tokens - tokens
801
+ if accepted_tokens <= 0 then
802
+ redis.call(
803
+ "HSET",
804
+ key,
805
+ "phase",
806
+ "cooldown",
807
+ "cooldownUntil",
808
+ cooldown_until,
809
+ "learningStartedAt",
810
+ 0,
811
+ "observedTokens",
812
+ 0,
813
+ "learnedLimit",
814
+ 0,
815
+ "learnedWindowMillis",
816
+ 0
817
+ )
818
+ redis.call("PEXPIRE", key, math.max(1, math.ceil(retry_after_ms + ttl_grace_ms)))
819
+ return 1
820
+ end
821
+
822
+ local learning_started_at = tonumber(redis.call("HGET", key, "learningStartedAt") or now)
823
+ local learned_window_ms = (now - learning_started_at) + retry_after_ms
824
+ if learned_window_ms <= 0 then
825
+ learned_window_ms = 1
826
+ end
827
+ if learned_window_ms > max_window_ms then
828
+ learned_window_ms = max_window_ms
829
+ end
830
+ local next_epoch = epoch + 1
831
+ redis.call(
832
+ "HSET",
833
+ key,
834
+ "phase",
835
+ "learned",
836
+ "epoch",
837
+ next_epoch,
838
+ "cooldownUntil",
839
+ learning_started_at + learned_window_ms,
840
+ "observedTokens",
841
+ accepted_tokens,
842
+ "learnedLimit",
843
+ accepted_tokens,
844
+ "learnedWindowMillis",
845
+ learned_window_ms
846
+ )
847
+ redis.call("PEXPIRE", key, math.max(1, math.ceil(learned_window_ms + ttl_grace_ms)))
848
+ return 1
849
+ end
850
+
851
+ if phase == "learned" then
852
+ redis.call(
853
+ "HSET",
854
+ key,
855
+ "phase",
856
+ "cooldown",
857
+ "cooldownUntil",
858
+ cooldown_until,
859
+ "learningStartedAt",
860
+ 0,
861
+ "observedTokens",
862
+ 0,
863
+ "learnedLimit",
864
+ 0,
865
+ "learnedWindowMillis",
866
+ 0
867
+ )
868
+ redis.call("PEXPIRE", key, math.max(1, math.ceil(retry_after_ms + ttl_grace_ms)))
869
+ return 1
870
+ end
871
+
872
+ return 0
873
+ `
874
+ }).withReturnType();
483
875
  /**
484
876
  * Provides a Redis-backed `RateLimiterStore` using `makeStoreRedis`.
485
877
  *
@@ -1 +1 @@
1
- {"version":3,"file":"RateLimiter.js","names":["Config","Context","Duration","Effect","flow","identity","Layer","Schema","Redis","TypeId","RateLimiter","Service","make","gen","store","RateLimiterStore","consume","options","tokens","onExceeded","algorithm","window","max","fromInputUnsafe","millis","windowMillis","toMillis","refillRate","divideUnsafe","limit","refillRateMillis","fail","RateLimiterError","reason","RateLimitExceeded","key","retryAfter","remaining","succeed","delay","resetAfter","flatMap","fixedWindow","undefined","count","ttl","zero","ttlTotal","elapsed","windowNumber","Math","floor","times","ceil","tokenBucket","allowOverflow","layer","effect","makeWithRateLimiter","use","limiter","isZero","makeSleep","result","as","sleep","ErrorTypeId","ErrorClass","_tag","tag","DurationFromMillis","String","Number","message","RateLimitStoreError","cause","optional","Defect","RateLimiterErrorReason","Union","constructor","props","layerStoreMemory","sync","fixedCounters","Map","tokenBuckets","of","clockWith","clock","now","currentTimeMillisUnsafe","counter","get","expiresAt","set","bucket","lastRefill","tokensToAdd","min","newTokenCount","makeStoreRedis","fnUntraced","prefix","redis","eval","fixedWindowScript","tokenBucketScript","refillMillis","mapError","lastRefillKey","script","numberOfKeys","lua","withReturnType","overflow","layerStoreRedis","layerStoreRedisConfig","unwrap"],"sources":["../../../src/unstable/persistence/RateLimiter.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;AAYA,OAAO,KAAKA,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,OAAO,MAAM,kBAAkB;AAC3C,OAAO,KAAKC,QAAQ,MAAM,mBAAmB;AAC7C,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,SAASC,IAAI,EAAEC,QAAQ,QAAQ,mBAAmB;AAClD,OAAO,KAAKC,KAAK,MAAM,gBAAgB;AACvC,OAAO,KAAKC,MAAM,MAAM,iBAAiB;AACzC,OAAO,KAAKC,KAAK,MAAM,YAAY;AAEnC;;;;;;AAMA,OAAO,MAAMC,MAAM,GAAW,iCAAiC;AA8B/D;;;;;;;;;;;AAWA,OAAO,MAAMC,WAAW,gBAA8CT,OAAO,CAACU,OAAO,CAAcF,MAAM,CAAC;AAE1G;;;;;;;;;;;AAWA,OAAO,MAAMG,IAAI,gBAIbT,MAAM,CAACU,GAAG,CAAC,aAAS;EACtB,MAAMC,KAAK,GAAG,OAAOC,gBAAgB;EAErC,OAAOV,QAAQ,CAAc;IAC3B,CAACI,MAAM,GAAGA,MAAM;IAChBO,OAAOA,CAACC,OAAO;MACb,MAAMC,MAAM,GAAGD,OAAO,CAACC,MAAM,IAAI,CAAC;MAClC,MAAMC,UAAU,GAAGF,OAAO,CAACE,UAAU,IAAI,MAAM;MAC/C,MAAMC,SAAS,GAAGH,OAAO,CAACG,SAAS,IAAI,cAAc;MACrD,MAAMC,MAAM,GAAGnB,QAAQ,CAACoB,GAAG,CAACpB,QAAQ,CAACqB,eAAe,CAACN,OAAO,CAACI,MAAM,CAAC,EAAEnB,QAAQ,CAACsB,MAAM,CAAC,CAAC,CAAC,CAAC;MACzF,MAAMC,YAAY,GAAGvB,QAAQ,CAACwB,QAAQ,CAACL,MAAM,CAAC;MAC9C,MAAMM,UAAU,GAAGzB,QAAQ,CAAC0B,YAAY,CAACP,MAAM,EAAEJ,OAAO,CAACY,KAAK,CAAC;MAC/D,MAAMC,gBAAgB,GAAG5B,QAAQ,CAACwB,QAAQ,CAACC,UAAU,CAAC;MAEtD,IAAIT,MAAM,GAAGD,OAAO,CAACY,KAAK,EAAE;QAC1B,OAAOV,UAAU,KAAK,MAAM,GACxBhB,MAAM,CAAC4B,IAAI,CACX,IAAIC,gBAAgB,CAAC;UACnBC,MAAM,EAAE,IAAIC,iBAAiB,CAAC;YAC5BC,GAAG,EAAElB,OAAO,CAACkB,GAAG;YAChBC,UAAU,EAAEf,MAAM;YAClBQ,KAAK,EAAEZ,OAAO,CAACY,KAAK;YACpBQ,SAAS,EAAE;WACZ;SACF,CAAC,CACH,GACClC,MAAM,CAACmC,OAAO,CAAgB;UAC9BC,KAAK,EAAElB,MAAM;UACbQ,KAAK,EAAEZ,OAAO,CAACY,KAAK;UACpBQ,SAAS,EAAE,CAAC;UACZG,UAAU,EAAEnB;SACb,CAAC;MACN;MAEA,IAAID,SAAS,KAAK,cAAc,EAAE;QAChC,OAAOjB,MAAM,CAACsC,OAAO,CACnB3B,KAAK,CAAC4B,WAAW,CAAC;UAChBP,GAAG,EAAElB,OAAO,CAACkB,GAAG;UAChBjB,MAAM;UACNS,UAAU;UACVE,KAAK,EAAEV,UAAU,KAAK,MAAM,GAAGF,OAAO,CAACY,KAAK,GAAGc;SAChD,CAAC,EACF,CAAC,CAACC,KAAK,EAAEC,GAAG,CAAC,KAAI;UACf,IAAI1B,UAAU,KAAK,MAAM,EAAE;YACzB,MAAMkB,SAAS,GAAGpB,OAAO,CAACY,KAAK,GAAGe,KAAK;YACvC,IAAIP,SAAS,GAAG,CAAC,EAAE;cACjB,OAAOlC,MAAM,CAAC4B,IAAI,CAChB,IAAIC,gBAAgB,CAAC;gBACnBC,MAAM,EAAE,IAAIC,iBAAiB,CAAC;kBAC5BC,GAAG,EAAElB,OAAO,CAACkB,GAAG;kBAChBC,UAAU,EAAElC,QAAQ,CAACsB,MAAM,CAACqB,GAAG,CAAC;kBAChChB,KAAK,EAAEZ,OAAO,CAACY,KAAK;kBACpBQ,SAAS,EAAE;iBACZ;eACF,CAAC,CACH;YACH;YACA,OAAOlC,MAAM,CAACmC,OAAO,CAAgB;cACnCC,KAAK,EAAErC,QAAQ,CAAC4C,IAAI;cACpBjB,KAAK,EAAEZ,OAAO,CAACY,KAAK;cACpBQ,SAAS;cACTG,UAAU,EAAEtC,QAAQ,CAACsB,MAAM,CAACqB,GAAG;aAChC,CAAC;UACJ;UACA,MAAME,QAAQ,GAAGH,KAAK,GAAGd,gBAAgB;UACzC,MAAMkB,OAAO,GAAGD,QAAQ,GAAGF,GAAG;UAC9B,MAAMI,YAAY,GAAGC,IAAI,CAACC,KAAK,CAAC,CAACP,KAAK,GAAG,CAAC,IAAI3B,OAAO,CAACY,KAAK,CAAC;UAC5D,MAAMQ,SAAS,GAAIY,YAAY,GAAGxB,YAAY,GAAIuB,OAAO;UACzD,MAAMT,KAAK,GAAGF,SAAS,IAAI,CAAC,GAAGnC,QAAQ,CAAC4C,IAAI,GAAG5C,QAAQ,CAACsB,MAAM,CAACa,SAAS,CAAC;UACzE,OAAOlC,MAAM,CAACmC,OAAO,CAAgB;YACnCC,KAAK;YACLV,KAAK,EAAEZ,OAAO,CAACY,KAAK;YACpBQ,SAAS,EAAEpB,OAAO,CAACY,KAAK,GAAGe,KAAK;YAChCJ,UAAU,EAAEtC,QAAQ,CAACkD,KAAK,CAAC/B,MAAM,EAAE6B,IAAI,CAACG,IAAI,CAACR,GAAG,GAAGpB,YAAY,CAAC;WACjE,CAAC;QACJ,CAAC,CACF;MACH;MAEA,OAAOtB,MAAM,CAACsC,OAAO,CACnB3B,KAAK,CAACwC,WAAW,CAAC;QAChBnB,GAAG,EAAElB,OAAO,CAACkB,GAAG;QAChBjB,MAAM;QACNW,KAAK,EAAEZ,OAAO,CAACY,KAAK;QACpBF,UAAU;QACV4B,aAAa,EAAEpC,UAAU,KAAK;OAC/B,CAAC,EACDkB,SAAS,IAAI;QACZ,IAAIlB,UAAU,KAAK,MAAM,EAAE;UACzB,IAAIkB,SAAS,GAAG,CAAC,EAAE;YACjB,OAAOlC,MAAM,CAAC4B,IAAI,CAChB,IAAIC,gBAAgB,CAAC;cACnBC,MAAM,EAAE,IAAIC,iBAAiB,CAAC;gBAC5BC,GAAG,EAAElB,OAAO,CAACkB,GAAG;gBAChBC,UAAU,EAAElC,QAAQ,CAACkD,KAAK,CAACzB,UAAU,EAAE,CAACU,SAAS,CAAC;gBAClDR,KAAK,EAAEZ,OAAO,CAACY,KAAK;gBACpBQ,SAAS,EAAE;eACZ;aACF,CAAC,CACH;UACH;UACA,OAAOlC,MAAM,CAACmC,OAAO,CAAgB;YACnCC,KAAK,EAAErC,QAAQ,CAAC4C,IAAI;YACpBjB,KAAK,EAAEZ,OAAO,CAACY,KAAK;YACpBQ,SAAS;YACTG,UAAU,EAAEtC,QAAQ,CAACkD,KAAK,CAACzB,UAAU,EAAEV,OAAO,CAACY,KAAK,GAAGQ,SAAS;WACjE,CAAC;QACJ;QACA,IAAIA,SAAS,IAAI,CAAC,EAAE;UAClB,OAAOlC,MAAM,CAACmC,OAAO,CAAgB;YACnCC,KAAK,EAAErC,QAAQ,CAAC4C,IAAI;YACpBjB,KAAK,EAAEZ,OAAO,CAACY,KAAK;YACpBQ,SAAS;YACTG,UAAU,EAAEtC,QAAQ,CAACkD,KAAK,CAACzB,UAAU,EAAEV,OAAO,CAACY,KAAK,GAAGQ,SAAS;WACjE,CAAC;QACJ;QACA,OAAOlC,MAAM,CAACmC,OAAO,CAAgB;UACnCC,KAAK,EAAErC,QAAQ,CAACkD,KAAK,CAACzB,UAAU,EAAE,CAACU,SAAS,CAAC;UAC7CR,KAAK,EAAEZ,OAAO,CAACY,KAAK;UACpBQ,SAAS;UACTG,UAAU,EAAEtC,QAAQ,CAACkD,KAAK,CAACzB,UAAU,EAAEV,OAAO,CAACY,KAAK,GAAGQ,SAAS;SACjE,CAAC;MACJ,CAAC,CACF;IACH;GACD,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;AAMA,OAAO,MAAMmB,KAAK,gBAIdlD,KAAK,CAACmD,MAAM,CAAC/C,WAAW,EAAEE,IAAI,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,OAAO,MAAM8C,mBAAmB,gBAW5BhD,WAAW,CAACiD,GAAG,CAAEC,OAAO,IAC1BzD,MAAM,CAACmC,OAAO,CAAErB,OAAO,IAAMwC,MAAM,IACjCtD,MAAM,CAACsC,OAAO,CAACmB,OAAO,CAAC5C,OAAO,CAACC,OAAO,CAAC,EAAE,CAAC;EAAEsB;AAAK,CAAE,KAAI;EACrD,IAAIrC,QAAQ,CAAC2D,MAAM,CAACtB,KAAK,CAAC,EAAE,OAAOkB,MAAM;EACzC,OAAOtD,MAAM,CAACoC,KAAK,CAACkB,MAAM,EAAElB,KAAK,CAAC;AACpC,CAAC,CAAC,CACH,CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA,OAAO,MAAMuB,SAAS,gBAUlBpD,WAAW,CAACiD,GAAG,CAAEC,OAAO,IAC1BzD,MAAM,CAACmC,OAAO,CAAErB,OAAO,IACrBd,MAAM,CAACsC,OAAO,CACZmB,OAAO,CAAC5C,OAAO,CAAC;EACd,GAAGC,OAAO;EACVE,UAAU,EAAE;CACb,CAAC,EACD4C,MAAM,IAAI;EACT,IAAI7D,QAAQ,CAAC2D,MAAM,CAACE,MAAM,CAACxB,KAAK,CAAC,EAAE,OAAOpC,MAAM,CAACmC,OAAO,CAACyB,MAAM,CAAC;EAChE,OAAO5D,MAAM,CAAC6D,EAAE,CAAC7D,MAAM,CAAC8D,KAAK,CAACF,MAAM,CAACxB,KAAK,CAAC,EAAEwB,MAAM,CAAC;AACtD,CAAC,CACF,CACF,CACF;AAED;;;;;;AAMA,OAAO,MAAMG,WAAW,GAAgB,oDAAoD;AAU5F;;;;;;;;;;AAUA,OAAM,MAAOhC,iBAAkB,sBAAQ3B,MAAM,CAAC4D,UAAU,CACtD,kDAAkD,CACnD,CAAC;EACAC,IAAI,eAAE7D,MAAM,CAAC8D,GAAG,CAAC,mBAAmB,CAAC;EACrCjC,UAAU,EAAE7B,MAAM,CAAC+D,kBAAkB;EACrCnC,GAAG,EAAE5B,MAAM,CAACgE,MAAM;EAClB1C,KAAK,EAAEtB,MAAM,CAACiE,MAAM;EACpBnC,SAAS,EAAE9B,MAAM,CAACiE;CACnB,CAAC;EACA;;;;;EAKA,IAAaC,OAAOA,CAAA;IAClB,OAAO,qBAAqB;EAC9B;;AAGF;;;;;;AAMA,OAAM,MAAOC,mBAAoB,sBAAQnE,MAAM,CAAC4D,UAAU,CACxD,oDAAoD,CACrD,CAAC;EACAC,IAAI,eAAE7D,MAAM,CAAC8D,GAAG,CAAC,qBAAqB,CAAC;EACvCI,OAAO,EAAElE,MAAM,CAACgE,MAAM;EACtBI,KAAK,eAAEpE,MAAM,CAACqE,QAAQ,cAACrE,MAAM,CAACsE,MAAM,EAAE;CACvC,CAAC;AAUF;;;;;;AAMA,OAAO,MAAMC,sBAAsB,gBAG9BvE,MAAM,CAACwE,KAAK,CAAC,CAAC7C,iBAAiB,EAAEwC,mBAAmB,CAAC,CAAC;AAE3D;;;;;;;AAOA,OAAM,MAAO1C,gBAAiB,sBAAQzB,MAAM,CAAC4D,UAAU,CAAmBD,WAAW,CAAC,CAAC;EACrFE,IAAI,eAAE7D,MAAM,CAAC8D,GAAG,CAAC,kBAAkB,CAAC;EACpCpC,MAAM,EAAE6C;CACT,CAAC;EACA;EACAE,YAAYC,KAEX;IACC,IAAI,OAAO,IAAIA,KAAK,CAAChD,MAAM,EAAE;MAC3B,KAAK,CAAC;QACJ,GAAGgD,KAAK;QACRN,KAAK,EAAEM,KAAK,CAAChD,MAAM,CAAC0C;OACd,CAAC;IACX,CAAC,MAAM;MACL,KAAK,CAACM,KAAK,CAAC;IACd;EACF;EAEA;;;;;EAKS,CAACf,WAAW,IAAiBA,WAAW;EAEjD,IAAaO,OAAOA,CAAA;IAClB,OAAO,IAAI,CAACxC,MAAM,CAACwC,OAAO;EAC5B;;AAiCF;;;;;;;;;;;AAWA,OAAM,MAAO1D,gBAAiB,sBAAQd,OAAO,CAACU,OAAO,EAsClD,CAAC,iDAAiD,CAAC;AAEtD;;;;;;AAMA,OAAO,MAAMuE,gBAAgB,gBAEzB5E,KAAK,CAAC6E,IAAI,CAACpE,gBAAgB,EAAE,MAAK;EACpC,MAAMqE,aAAa,GAAG,IAAIC,GAAG,EAAgD;EAC7E,MAAMC,YAAY,GAAG,IAAID,GAAG,EAAkD;EAE9E,OAAOtE,gBAAgB,CAACwE,EAAE,CAAC;IACzB7C,WAAW,EAAGzB,OAAO,IACnBd,MAAM,CAACqF,SAAS,CAAEC,KAAK,IACrBtF,MAAM,CAACgF,IAAI,CAAC,MAAK;MACf,MAAMrD,gBAAgB,GAAG5B,QAAQ,CAACwB,QAAQ,CAACT,OAAO,CAACU,UAAU,CAAC;MAC9D,MAAM+D,GAAG,GAAGD,KAAK,CAACE,uBAAuB,EAAE;MAC3C,IAAIC,OAAO,GAAGR,aAAa,CAACS,GAAG,CAAC5E,OAAO,CAACkB,GAAG,CAAC;MAC5C,IAAI,CAACyD,OAAO,IAAIA,OAAO,CAACE,SAAS,IAAIJ,GAAG,EAAE;QACxCE,OAAO,GAAG;UAAEhD,KAAK,EAAE,CAAC;UAAEkD,SAAS,EAAEJ;QAAG,CAAE;QACtCN,aAAa,CAACW,GAAG,CAAC9E,OAAO,CAACkB,GAAG,EAAEyD,OAAO,CAAC;MACzC;MACA,IAAI3E,OAAO,CAACY,KAAK,IAAI+D,OAAO,CAAChD,KAAK,GAAG3B,OAAO,CAACC,MAAM,GAAGD,OAAO,CAACY,KAAK,EAAE;QACnE,OAAO,CAAC+D,OAAO,CAAChD,KAAK,GAAG3B,OAAO,CAACC,MAAM,EAAE0E,OAAO,CAACE,SAAS,GAAGJ,GAAG,CAAU;MAC3E;MACAE,OAAO,CAAChD,KAAK,IAAI3B,OAAO,CAACC,MAAM;MAC/B0E,OAAO,CAACE,SAAS,IAAIhE,gBAAgB,GAAGb,OAAO,CAACC,MAAM;MACtD,OAAO,CAAC0E,OAAO,CAAChD,KAAK,EAAEgD,OAAO,CAACE,SAAS,GAAGJ,GAAG,CAAU;IAC1D,CAAC,CAAC,CACH;IACHpC,WAAW,EAAGrC,OAAO,IACnBd,MAAM,CAACqF,SAAS,CAAEC,KAAK,IACrBtF,MAAM,CAACgF,IAAI,CAAC,MAAK;MACf,MAAMrD,gBAAgB,GAAG5B,QAAQ,CAACwB,QAAQ,CAACT,OAAO,CAACU,UAAU,CAAC;MAC9D,MAAM+D,GAAG,GAAGD,KAAK,CAACE,uBAAuB,EAAE;MAC3C,IAAIK,MAAM,GAAGV,YAAY,CAACO,GAAG,CAAC5E,OAAO,CAACkB,GAAG,CAAC;MAC1C,IAAI,CAAC6D,MAAM,EAAE;QACXA,MAAM,GAAG;UAAE9E,MAAM,EAAED,OAAO,CAACY,KAAK;UAAEoE,UAAU,EAAEP;QAAG,CAAE;QACnDJ,YAAY,CAACS,GAAG,CAAC9E,OAAO,CAACkB,GAAG,EAAE6D,MAAM,CAAC;MACvC,CAAC,MAAM;QACL,MAAMhD,OAAO,GAAG0C,GAAG,GAAGM,MAAM,CAACC,UAAU;QACvC,MAAMC,WAAW,GAAGhD,IAAI,CAACC,KAAK,CAACH,OAAO,GAAGlB,gBAAgB,CAAC;QAC1D,IAAIoE,WAAW,GAAG,CAAC,EAAE;UACnBF,MAAM,CAAC9E,MAAM,GAAGgC,IAAI,CAACiD,GAAG,CAAClF,OAAO,CAACY,KAAK,EAAEmE,MAAM,CAAC9E,MAAM,GAAGgF,WAAW,CAAC;UACpEF,MAAM,CAACC,UAAU,IAAIC,WAAW,GAAGpE,gBAAgB;QACrD;MACF;MAEA,MAAMsE,aAAa,GAAGJ,MAAM,CAAC9E,MAAM,GAAGD,OAAO,CAACC,MAAM;MACpD,IAAID,OAAO,CAACsC,aAAa,IAAI6C,aAAa,IAAI,CAAC,EAAE;QAC/CJ,MAAM,CAAC9E,MAAM,GAAGkF,aAAa;MAC/B;MACA,OAAOA,aAAa;IACtB,CAAC,CAAC;GAEP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;;;AAOA,OAAO,MAAMC,cAAc,gBAAGlG,MAAM,CAACmG,UAAU,CAAC,WAC9CrF,OAEC;EAED,MAAMsF,MAAM,GAAGtF,OAAO,EAAEsF,MAAM,IAAI,cAAc;EAChD,MAAMC,KAAK,GAAG,OAAOhG,KAAK,CAACA,KAAK;EAEhC,MAAMkC,WAAW,GAAG8D,KAAK,CAACC,IAAI,CAACC,iBAAiB,CAAC;EACjD,MAAMpD,WAAW,GAAGkD,KAAK,CAACC,IAAI,CAACE,iBAAiB,CAAC;EAEjD,OAAO5F,gBAAgB,CAACwE,EAAE,CAAC;IACzB7C,WAAWA,CAACzB,OAAO;MACjB,MAAMkB,GAAG,GAAG,GAAGoE,MAAM,GAAGtF,OAAO,CAACkB,GAAG,EAAE;MACrC,MAAMyE,YAAY,GAAG1G,QAAQ,CAACwB,QAAQ,CAACT,OAAO,CAACU,UAAU,CAAC;MAC1D,OAAOxB,MAAM,CAAC0G,QAAQ,CACpBnE,WAAW,CAACP,GAAG,EAAElB,OAAO,CAACC,MAAM,EAAE0F,YAAY,EAAE3F,OAAO,CAACY,KAAK,CAAC,EAC5D8C,KAAK,IACJ,IAAI3C,gBAAgB,CAAC;QACnBC,MAAM,EAAE,IAAIyC,mBAAmB,CAAC;UAC9BD,OAAO,EAAE,qDAAqD;UAC9DE,KAAK,EAAEA,KAAK,CAACA;SACd;OACF,CAAC,CACL;IACH,CAAC;IACDrB,WAAWA,CAACrC,OAAO;MACjB,MAAMkB,GAAG,GAAG,GAAGoE,MAAM,GAAGtF,OAAO,CAACkB,GAAG,EAAE;MACrC,MAAM2E,aAAa,GAAG,GAAG3E,GAAG,SAAS;MACrC,MAAMyE,YAAY,GAAG1G,QAAQ,CAACwB,QAAQ,CAACT,OAAO,CAACU,UAAU,CAAC;MAC1D,OAAOxB,MAAM,CAACqF,SAAS,CAAEC,KAAK,IAC5BtF,MAAM,CAAC0G,QAAQ,CACbvD,WAAW,CACTnB,GAAG,EACH2E,aAAa,EACb7F,OAAO,CAACC,MAAM,EACd0F,YAAY,EACZ3F,OAAO,CAACY,KAAK,EACb4D,KAAK,CAACE,uBAAuB,EAAE,EAC/B1E,OAAO,CAACsC,aAAa,GAAG,CAAC,GAAG,CAAC,CAC9B,EACAoB,KAAK,IACJ,IAAI3C,gBAAgB,CAAC;QACnBC,MAAM,EAAE,IAAIyC,mBAAmB,CAAC;UAC9BD,OAAO,EAAE,qDAAqD;UAC9DE;SACD;OACF,CAAC,CACL,CACF;IACH;GACD,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM+B,iBAAiB,gBAAGlG,KAAK,CAACuG,MAAM,CACpC,CAAC5E,GAAW,EAAEjB,MAAc,EAAE0F,YAAoB,EAAE/E,KAAc,KAAK,CAACM,GAAG,EAAEjB,MAAM,EAAE0F,YAAY,EAAE/E,KAAK,CAAC,EACzG;EACEmF,YAAY,EAAE,CAAC;EACfC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;CAuBN,CACF,CAACC,cAAc,EAAsD;AAEtE,MAAMP,iBAAiB,gBAAGnG,KAAK,CAACuG,MAAM,CACpC,CACE5E,GAAW,EACX2E,aAAqB,EACrB5F,MAAc,EACd0F,YAAoB,EACpB/E,KAAa,EACb6D,GAAW,EACXyB,QAAe,KACZ,CAAChF,GAAG,EAAE2E,aAAa,EAAE5F,MAAM,EAAE0F,YAAY,EAAE/E,KAAK,EAAE6D,GAAG,EAAEyB,QAAQ,CAAC,EACrE;EACEH,YAAY,EAAE,CAAC;EACfC,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCN,CACF,CAACC,cAAc,EAAU;AAE1B;;;;;;AAMA,OAAO,MAAME,eAAe,gBAMxBhH,IAAI,CAACiG,cAAc,eAAE/F,KAAK,CAACmD,MAAM,CAAC1C,gBAAgB,CAAC,CAAC;AAExD;;;;;;;AAOA,OAAO,MAAMsG,qBAAqB,GAChCpG,OAA8D,IAE9DX,KAAK,CAACmD,MAAM,CACV1C,gBAAgB,EAChBZ,MAAM,CAACsC,OAAO,CAACzC,MAAM,CAACsH,MAAM,CAACrG,OAAO,CAAC,EAAEoF,cAAc,CAAC,CACvD","ignoreList":[]}
1
+ {"version":3,"file":"RateLimiter.js","names":["Config","Context","Duration","Effect","flow","identity","Layer","Schema","Redis","TypeId","RateLimiter","Service","make","gen","store","RateLimiterStore","adaptiveConsume","adaptiveFeedback","consume","options","tokens","onExceeded","algorithm","window","max","fromInputUnsafe","millis","windowMillis","toMillis","refillRate","divideUnsafe","limit","refillRateMillis","fail","RateLimiterError","reason","RateLimitExceeded","key","retryAfter","remaining","succeed","delay","resetAfter","flatMap","fixedWindow","undefined","count","ttl","zero","ttlTotal","elapsed","windowNumber","Math","floor","times","ceil","tokenBucket","allowOverflow","layer","effect","makeWithRateLimiter","use","limiter","isZero","makeSleep","result","as","sleep","ErrorTypeId","ErrorClass","_tag","tag","DurationFromMillis","String","Number","message","RateLimitStoreError","cause","optional","Defect","RateLimiterErrorReason","Union","constructor","props","adaptiveStateTtlGraceMillis","adaptiveStateMaxWindowMillis","clampAdaptiveDurationMillis","isNaN","min","layerStoreMemory","sync","fixedCounters","Map","tokenBuckets","adaptiveStates","getAdaptiveState","now","state","get","expiresAt","delete","cooldownExpiresAt","cooldownUntil","learningExpiresAt","fallbackWindow","learnedExpiresAt","learnedWindowMillis","of","clockWith","clock","currentTimeMillisUnsafe","counter","set","bucket","lastRefill","tokensToAdd","newTokenCount","epoch","phase","learningStartedAt","observedTokens","learnedLimit","status","retryAfterMillis","acceptedTokens","makeStoreRedis","fnUntraced","prefix","redis","eval","fixedWindowScript","tokenBucketScript","adaptiveConsumeScript","adaptiveFeedbackScript","refillMillis","mapError","lastRefillKey","map","delayMillis","void","asVoid","script","numberOfKeys","lua","withReturnType","overflow","fallbackWindowMillis","ttlGraceMillis","maxWindowMillis","layerStoreRedis","layerStoreRedisConfig","unwrap"],"sources":["../../../src/unstable/persistence/RateLimiter.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -447,10 +447,6 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (group, options) {
447
447
  case "Request":
448
448
  {
449
449
  const tag = Predicate.hasProperty(request, "tag") ? request.tag : "";
450
- const rpc = group.requests.get(tag);
451
- if (!rpc) {
452
- return sendDefect(client, `Unknown request tag: ${tag}`);
453
- }
454
450
  let requestId;
455
451
  switch (typeof request.id) {
456
452
  case "bigint":
@@ -464,6 +460,10 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (group, options) {
464
460
  return sendDefect(client, `Invalid request id: ${request.id}`);
465
461
  }
466
462
  }
463
+ const rpc = group.requests.get(tag);
464
+ if (!rpc) {
465
+ return sendRequestDefect(client, requestId, defect => Effect.succeed(defect), `Unknown request tag: ${tag}`);
466
+ }
467
467
  const schemas = getSchemas(rpc);
468
468
  return Effect.matchEffect(Effect.provideContext(schemas.decode(request.payload), schemas.context), {
469
469
  onFailure: error => sendRequestDefect(client, requestId, schemas.encodeDefect, error.issue.toString()),