{"version":3,"file":"params-factory.mjs","sources":["../../../../../src/core/http/limiters/params-factory.ts"],"sourcesContent":["import type { RestrictionParams } from '../../../types/limiters'\n\n/**\n * Factory for creating constraint parameters\n */\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport class ParamsFactory {\n  /**\n   * Default parameters for regular tariffs\n   *\n   * @see Http.#restrictionParams\n   */\n  static getDefault(): RestrictionParams {\n    return {\n      rateLimit: {\n        burstLimit: 50,\n        drainRate: 2,\n        adaptiveEnabled: true\n      },\n      operatingLimit: {\n        windowMs: 600_000, // 10 min\n        limitMs: 480_000, // 480 sec\n        heavyPercent: 80\n      },\n      adaptiveConfig: {\n        enabled: true,\n        thresholdPercent: 80,\n        coefficient: 0.01,\n        maxDelay: 7_000\n      },\n      maxRetries: 3,\n      retryDelay: 1_000\n    }\n  }\n\n  /**\n   * Parameters for the Enterprise plan\n   */\n  static getEnterprise(): RestrictionParams {\n    return {\n      ...this.getDefault(),\n      rateLimit: {\n        burstLimit: 250,\n        drainRate: 5,\n        adaptiveEnabled: true\n      }\n    }\n  }\n\n  /**\n   * Parameters for bulk data processing\n   */\n  static getBatchProcessing(): RestrictionParams {\n    return {\n      ...this.getDefault(),\n      rateLimit: {\n        burstLimit: 30,\n        drainRate: 1,\n        adaptiveEnabled: true\n      },\n      operatingLimit: {\n        windowMs: 600_000,\n        limitMs: 480_000,\n        heavyPercent: 50 // Higher threshold for notifications\n      },\n      adaptiveConfig: {\n        enabled: true,\n        thresholdPercent: 50, // More threshold\n        coefficient: 0.015, // More pause\n        maxDelay: 10_000 // Max 10 seconds\n      },\n      maxRetries: 5 // More attempts\n    }\n  }\n\n  /**\n   * Real-time parameters\n   */\n  static getRealtime(): RestrictionParams {\n    return {\n      ...this.getDefault(),\n      adaptiveConfig: {\n        enabled: false, // Off\n        thresholdPercent: 100,\n        coefficient: 0.001,\n        maxDelay: 480_000\n      },\n      maxRetries: 1\n    }\n  }\n\n  /**\n   * Tariff plan based parameters\n   */\n  static fromTariffPlan(plan: string): RestrictionParams {\n    switch (plan.toLowerCase()) {\n      case 'enterprise':\n        return this.getEnterprise()\n      case 'company':\n      case 'start':\n      case 'standard':\n      case 'basic':\n      default:\n        return this.getDefault()\n    }\n  }\n}\n"],"names":[],"mappings":";;;;;;;;;;AAMO,MAAM,aAAA,CAAc;AAAA,EAN3B;AAM2B,IAAA,MAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzB,OAAO,UAAA,GAAgC;AACrC,IAAA,OAAO;AAAA,MACL,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,EAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,GAAA;AAAA;AAAA,QACV,OAAA,EAAS,IAAA;AAAA;AAAA,QACT,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,gBAAA,EAAkB,EAAA;AAAA,QAClB,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,UAAA,EAAY,CAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,aAAA,GAAmC;AACxC,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,GAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA;AACnB,KACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,kBAAA,GAAwC;AAC7C,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,SAAA,EAAW;AAAA,QACT,UAAA,EAAY,EAAA;AAAA,QACZ,SAAA,EAAW,CAAA;AAAA,QACX,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,QAAA,EAAU,GAAA;AAAA,QACV,OAAA,EAAS,IAAA;AAAA,QACT,YAAA,EAAc;AAAA;AAAA,OAChB;AAAA,MACA,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,IAAA;AAAA,QACT,gBAAA,EAAkB,EAAA;AAAA;AAAA,QAClB,WAAA,EAAa,KAAA;AAAA;AAAA,QACb,QAAA,EAAU;AAAA;AAAA,OACZ;AAAA,MACA,UAAA,EAAY;AAAA;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,WAAA,GAAiC;AACtC,IAAA,OAAO;AAAA,MACL,GAAG,KAAK,UAAA,EAAW;AAAA,MACnB,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,KAAA;AAAA;AAAA,QACT,gBAAA,EAAkB,GAAA;AAAA,QAClB,WAAA,EAAa,IAAA;AAAA,QACb,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,eAAe,IAAA,EAAiC;AACrD,IAAA,QAAQ,IAAA,CAAK,aAAY;AAAG,MAC1B,KAAK,YAAA;AACH,QAAA,OAAO,KAAK,aAAA,EAAc;AAAA,MAC5B,KAAK,SAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL;AACE,QAAA,OAAO,KAAK,UAAA,EAAW;AAAA;AAC3B,EACF;AACF;;;;"}