perimeterx-js-core 0.31.0 → 0.32.1

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.
Files changed (98) hide show
  1. package/lib/cjs/config/ConfigurationBase.js +1 -0
  2. package/lib/cjs/config/params/CreateHumanSecurityConfigurationParams.js +2 -0
  3. package/lib/cjs/config/params/index.js +1 -0
  4. package/lib/cjs/context/DefaultContext.js +1 -0
  5. package/lib/cjs/utils/constants.js +1 -1
  6. package/lib/esm/config/ConfigurationBase.js +1 -0
  7. package/lib/esm/config/params/CreateHumanSecurityConfigurationParams.js +1 -0
  8. package/lib/esm/config/params/index.js +1 -0
  9. package/lib/esm/context/DefaultContext.js +2 -1
  10. package/lib/esm/utils/constants.js +1 -1
  11. package/lib/types/activities/HttpActivityClient.d.ts +3 -3
  12. package/lib/types/activities/HttpBatchedActivityClient.d.ts +2 -2
  13. package/lib/types/activities/utils.d.ts +5 -5
  14. package/lib/types/additional_activity_handler/AdditionalActivityHandler.d.ts +1 -1
  15. package/lib/types/additional_activity_handler/AdditionalActivityHandlerUtils.d.ts +1 -1
  16. package/lib/types/blocker/MobileBlocker.d.ts +3 -3
  17. package/lib/types/blocker/utils.d.ts +1 -1
  18. package/lib/types/config/ConfigurationBase.d.ts +22 -22
  19. package/lib/types/config/IConfiguration.d.ts +9 -9
  20. package/lib/types/config/defaults/DefaultConfigurationParams.d.ts +1 -1
  21. package/lib/types/config/params/ActiveConfigurationParams.d.ts +8 -2
  22. package/lib/types/config/params/AllConfigurationParams.d.ts +6 -3
  23. package/lib/types/config/params/CoreConfigurationParams.d.ts +24 -7
  24. package/lib/types/config/params/CreateHumanSecurityConfigurationParams.d.ts +2 -0
  25. package/lib/types/config/params/RemoteConfigurationParams.d.ts +3 -2
  26. package/lib/types/config/params/StaticConfigurationParams.d.ts +5 -3
  27. package/lib/types/config/params/index.d.ts +1 -0
  28. package/lib/types/config/remote_config/RemoteConfigUtils.d.ts +1 -1
  29. package/lib/types/config/remote_config/manager/DefaultRemoteConfigManager.d.ts +10 -10
  30. package/lib/types/config/remote_config/model/RemoteConfigData.d.ts +2 -2
  31. package/lib/types/config/remote_config/service_client/HttpRemoteConfigServiceClient.d.ts +5 -5
  32. package/lib/types/config/remote_config/service_client/IRemoteConfigServiceClient.d.ts +2 -2
  33. package/lib/types/config/remote_config/storage_client/IRemoteConfigStorageClient.d.ts +3 -3
  34. package/lib/types/config/remote_config/update_parser/DefaultNotifyRemoteConfigUpdateParser.d.ts +3 -3
  35. package/lib/types/context/DefaultContext.d.ts +8 -8
  36. package/lib/types/context/SerializedContext.d.ts +4 -4
  37. package/lib/types/cors/DefaultCors.d.ts +2 -2
  38. package/lib/types/custom_parameters/CustomParametersFunction.d.ts +2 -2
  39. package/lib/types/custom_parameters/CustomParametersUtils.d.ts +2 -2
  40. package/lib/types/enforcer/EnforcerBase.d.ts +8 -8
  41. package/lib/types/enforcer/EnforcerOptions.d.ts +3 -3
  42. package/lib/types/enforcer/utils.d.ts +6 -6
  43. package/lib/types/flow/EndEnforcerFlow.d.ts +2 -2
  44. package/lib/types/flow/EnforceFlow.d.ts +2 -2
  45. package/lib/types/flow/FilterFlow.d.ts +2 -2
  46. package/lib/types/flow/PostEnforceFlow.d.ts +2 -2
  47. package/lib/types/graphql/DefaultGraphQLParser.d.ts +3 -3
  48. package/lib/types/logger/HttpLogServiceClient.d.ts +3 -3
  49. package/lib/types/monitored_request/MonitoredRequestUtils.d.ts +3 -3
  50. package/lib/types/phase/impl/AdditionalActivityHandlerPhase.d.ts +3 -3
  51. package/lib/types/phase/impl/CreateBlockResponsePhase.d.ts +3 -3
  52. package/lib/types/phase/impl/EnrichContextFromRequestPhase.d.ts +3 -3
  53. package/lib/types/phase/impl/EnrichContextFromResponsePhase.d.ts +3 -3
  54. package/lib/types/phase/impl/FirstPartyPhase.d.ts +3 -3
  55. package/lib/types/phase/impl/ModifyOutgoingResponsePhase.d.ts +3 -3
  56. package/lib/types/phase/impl/PreflightPhase.d.ts +2 -2
  57. package/lib/types/phase/impl/SendAsyncActivitiesPhase.d.ts +3 -3
  58. package/lib/types/phase/impl/SendLogsPhase.d.ts +2 -2
  59. package/lib/types/phase/impl/SendTelemetryActivityPhase.d.ts +3 -3
  60. package/lib/types/phase/impl/UpdateRemoteConfigPhase.d.ts +3 -3
  61. package/lib/types/products/account_defender/AccountDefender.d.ts +3 -3
  62. package/lib/types/products/bot_defender/BotDefender.d.ts +3 -3
  63. package/lib/types/products/bot_defender/block/DefaultBotDefenderBlocker.d.ts +3 -3
  64. package/lib/types/products/bot_defender/block/captcha/CaptchaBlocker.d.ts +12 -12
  65. package/lib/types/products/bot_defender/block/captcha/HtmlCaptchaBlocker.d.ts +5 -5
  66. package/lib/types/products/bot_defender/block/captcha/JsonCaptchaBlocker.d.ts +5 -5
  67. package/lib/types/products/bot_defender/block/captcha/MobileCaptchaBlocker.d.ts +4 -4
  68. package/lib/types/products/bot_defender/filter/DefaultBotDefenderFilter.d.ts +2 -2
  69. package/lib/types/products/bot_defender/first_party/DefaultBotDefenderFirstParty.d.ts +3 -3
  70. package/lib/types/products/bot_defender/first_party/utils.d.ts +7 -7
  71. package/lib/types/products/credential_intelligence/CredentialIntelligence.d.ts +4 -4
  72. package/lib/types/products/credential_intelligence/endpoint/login_successful/LoginSuccessfulParserFactory.d.ts +1 -1
  73. package/lib/types/products/hype_sale_challenge/HypeSaleChallenge.d.ts +3 -3
  74. package/lib/types/products/hype_sale_challenge/block/JsonHypeSaleChallengeBlocker.d.ts +3 -3
  75. package/lib/types/products/hype_sale_challenge/block/MobileHypeSaleChallengeBlocker.d.ts +2 -2
  76. package/lib/types/pxde/DefaultDataEnrichment.d.ts +2 -2
  77. package/lib/types/pxhd/PXHDUtils.d.ts +2 -2
  78. package/lib/types/risk_api/client/GetRiskApiClientV2.d.ts +2 -2
  79. package/lib/types/risk_api/client/PostRiskApiClientV2.d.ts +3 -3
  80. package/lib/types/risk_api/client/PostRiskApiClientV3.d.ts +3 -3
  81. package/lib/types/risk_api/client/abstract/PostRiskApiClientBase.d.ts +2 -1
  82. package/lib/types/risk_api/client/abstract/RiskApiClientBase.d.ts +3 -3
  83. package/lib/types/risk_api/utils.d.ts +2 -2
  84. package/lib/types/risk_token/parser/DefaultTokenV2Parser.d.ts +4 -4
  85. package/lib/types/risk_token/parser/DefaultTokenV3Parser.d.ts +4 -4
  86. package/lib/types/risk_token/parser/TokenParserBase.d.ts +5 -5
  87. package/lib/types/risk_token/token/TokenBase.d.ts +3 -3
  88. package/lib/types/risk_token/token/serialize/SerializedToken.d.ts +2 -2
  89. package/lib/types/risk_token/token/v2/DefaultTokenV2.d.ts +2 -2
  90. package/lib/types/risk_token/token/v3/DefaultTokenV3.d.ts +2 -2
  91. package/lib/types/sensitive_request/SensitiveRequestUtils.d.ts +2 -2
  92. package/lib/types/snippet_injection/CustomSnippetFunction.d.ts +1 -1
  93. package/lib/types/snippet_injection/snippet_retriever/DefaultSnippetRetriever.d.ts +3 -3
  94. package/lib/types/telemetry/DefaultTelemetry.d.ts +5 -5
  95. package/lib/types/telemetry/model/TelemetryActivity.d.ts +9 -9
  96. package/lib/types/utils/constants.d.ts +1 -1
  97. package/lib/types/utils/timestamp_hmac_header_validator/DefaultTimestampHmacHeaderValidator.d.ts +3 -3
  98. package/package.json +1 -1
@@ -123,6 +123,7 @@ var ConfigurationBase = /** @class */ (function () {
123
123
  // @ts-ignore
124
124
  delete activeConfig[key];
125
125
  }
126
+ // Runtime filtering ensures only supported configs remain
126
127
  return activeConfig;
127
128
  };
128
129
  ConfigurationBase.prototype.getStaticConfig = function () {
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -19,3 +19,4 @@ __exportStar(require("./AllConfigurationParams.js"), exports);
19
19
  __exportStar(require("./CoreConfigurationParams.js"), exports);
20
20
  __exportStar(require("./RemoteConfigurationParams.js"), exports);
21
21
  __exportStar(require("./StaticConfigurationParams.js"), exports);
22
+ __exportStar(require("./CreateHumanSecurityConfigurationParams.js"), exports);
@@ -150,6 +150,7 @@ var DefaultContext = /** @class */ (function () {
150
150
  var vidValue = this.requestData.cookies[utils_1.PXVID_COOKIE_NAME];
151
151
  if ((0, utils_1.isValidUuid)(vidValue)) {
152
152
  this.vid = vidValue;
153
+ this.vidSource = utils_1.VidSource.VID_COOKIE;
153
154
  }
154
155
  var pxhdCookie = this.requestData.cookies[utils_1.PXHD_COOKIE_NAME];
155
156
  if (pxhdCookie) {
@@ -15,4 +15,4 @@ exports.PUSH_DATA_FEATURE_HEADER_NAME = 'x-px-feature';
15
15
  exports.EMAIL_ADDRESS_REGEX = /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$/;
16
16
  exports.URL_REGEX = /^(https?:)\/\/(([^@\s:\/]+):?([^@\s\/]*)@)?(([^:\/?#]*)(?:\:([0-9]+))?)(\/?[^?#]*)(\?[^#]*|)(#.*|)$/;
17
17
  exports.REGEX_STRUCTURE = /^\/(.+?)\/([gimsuyvd]*)$/;
18
- exports.CORE_MODULE_VERSION = 'JS Core 0.31.0';
18
+ exports.CORE_MODULE_VERSION = 'JS Core 0.32.1';
@@ -117,6 +117,7 @@ export class ConfigurationBase {
117
117
  // @ts-ignore
118
118
  delete activeConfig[key];
119
119
  }
120
+ // Runtime filtering ensures only supported configs remain
120
121
  return activeConfig;
121
122
  }
122
123
  getStaticConfig() {
@@ -3,3 +3,4 @@ export * from './AllConfigurationParams.js';
3
3
  export * from './CoreConfigurationParams.js';
4
4
  export * from './RemoteConfigurationParams.js';
5
5
  export * from './StaticConfigurationParams.js';
6
+ export * from './CreateHumanSecurityConfigurationParams.js';
@@ -3,7 +3,7 @@ import { PXHDSource } from '../pxhd/index.js';
3
3
  import { TokenOrigin, TokenParseResult } from '../risk_token/index.js';
4
4
  import { RiskApiCallResult } from '../risk_api/index.js';
5
5
  import { COOKIE_HEADER_NAME, toReadonlyHeaders, USER_AGENT_HEADER_NAME, } from '../http/index.js';
6
- import { isValidUuid, PXHD_COOKIE_NAME, PXVID_COOKIE_NAME, StringSplitCookieParser, X_PX_AUTHORIZATION_HEADER_NAME, } from '../utils/index.js';
6
+ import { isValidUuid, PXHD_COOKIE_NAME, PXVID_COOKIE_NAME, StringSplitCookieParser, VidSource, X_PX_AUTHORIZATION_HEADER_NAME, } from '../utils/index.js';
7
7
  import { Action } from '../action/index.js';
8
8
  import { DefaultLogger, X_PX_ENFORCER_LOG_HEADER } from '../logger/index.js';
9
9
  /**
@@ -152,6 +152,7 @@ export class DefaultContext {
152
152
  const vidValue = this.requestData.cookies[PXVID_COOKIE_NAME];
153
153
  if (isValidUuid(vidValue)) {
154
154
  this.vid = vidValue;
155
+ this.vidSource = VidSource.VID_COOKIE;
155
156
  }
156
157
  const pxhdCookie = this.requestData.cookies[PXHD_COOKIE_NAME];
157
158
  if (pxhdCookie) {
@@ -12,4 +12,4 @@ export const PUSH_DATA_FEATURE_HEADER_NAME = 'x-px-feature';
12
12
  export const EMAIL_ADDRESS_REGEX = /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$/;
13
13
  export const URL_REGEX = /^(https?:)\/\/(([^@\s:\/]+):?([^@\s\/]*)@)?(([^:\/?#]*)(?:\:([0-9]+))?)(\/?[^?#]*)(\?[^#]*|)(#.*|)$/;
14
14
  export const REGEX_STRUCTURE = /^\/(.+?)\/([gimsuyvd]*)$/;
15
- export const CORE_MODULE_VERSION = 'JS Core 0.31.0';
15
+ export const CORE_MODULE_VERSION = 'JS Core 0.32.1';
@@ -7,15 +7,15 @@ import { ILogger } from '../logger';
7
7
  /**
8
8
  * The HttpActivityClient is responsible for sending async activities to the backend via HTTP.
9
9
  */
10
- export declare class HttpActivityClient<Req, Res, Added, Removed> implements IActivityClient<Req, Res> {
11
- protected readonly config: IConfiguration<Req, Res, Added, Removed>;
10
+ export declare class HttpActivityClient<Req, Res, Supported extends string, Added> implements IActivityClient<Req, Res> {
11
+ protected readonly config: IConfiguration<Req, Res, Supported, Added>;
12
12
  protected readonly httpClient: IHttpClient;
13
13
  /**
14
14
  * Creates an instance of HttpActivityClient.
15
15
  * @param config
16
16
  * @param httpClient
17
17
  */
18
- constructor(config: IConfiguration<Req, Res, Added, Removed>, httpClient: IHttpClient);
18
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, httpClient: IHttpClient);
19
19
  /**
20
20
  * Creates and sends all necessary async activities to the backend.
21
21
  * @param context - The context containing the request (and possibly response).
@@ -10,14 +10,14 @@ import { ILogger } from '../logger';
10
10
  * This class uses setTimeout and clearTimeout for managing the timeout for sending activities. It also exposes the stop()
11
11
  * method to stop the timer and prevent further activity sending, which should be called on shutdown.
12
12
  */
13
- export declare class HttpBatchedActivityClient<Req, Res, Added, Removed> extends HttpActivityClient<Req, Res, Added, Removed> {
13
+ export declare class HttpBatchedActivityClient<Req, Res, Supported extends string, Added> extends HttpActivityClient<Req, Res, Supported, Added> {
14
14
  private readonly batchSize;
15
15
  private readonly timeoutMs;
16
16
  private readonly maxBufferSize;
17
17
  private buffer;
18
18
  private timeoutId;
19
19
  private shouldKill;
20
- constructor(config: IConfiguration<Req, Res, Added, Removed>, httpClient: IHttpClient);
20
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, httpClient: IHttpClient);
21
21
  stop(): void;
22
22
  protected postActivities(activities: AsyncActivity[], logger: ILogger): Promise<boolean>;
23
23
  protected addToBuffer(activities: AsyncActivity[]): void;
@@ -12,7 +12,7 @@ import { CustomParameters, ResponseCustomParameters } from '../custom_parameters
12
12
  * @param context - The request context.
13
13
  * @returns {AsyncActivity} - The complete async activity payload.
14
14
  */
15
- export declare const createAsyncActivity: <Req, Res, Added, Removed>(activityType: ActivityType, config: IConfiguration<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>) => AsyncActivity;
15
+ export declare const createAsyncActivity: <Req, Res, Supported extends string, Added>(activityType: ActivityType, config: IConfiguration<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>) => AsyncActivity;
16
16
  /**
17
17
  * Creates activity details based on the provided parameters.
18
18
  * @param activityType - The activity type to create.
@@ -20,12 +20,12 @@ export declare const createAsyncActivity: <Req, Res, Added, Removed>(activityTyp
20
20
  * @param context - The request context.
21
21
  * @returns {AsyncActivityDetails} - The activity details.
22
22
  */
23
- export declare const createActivityDetails: <Req, Res, Added, Removed>(activityType: ActivityType, config: IConfiguration<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>) => AsyncActivityDetails;
23
+ export declare const createActivityDetails: <Req, Res, Supported extends string, Added>(activityType: ActivityType, config: IConfiguration<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>) => AsyncActivityDetails;
24
24
  export declare const createAsyncActivityCommonDetails: <Req, Res>(context: ReadonlyContext<Req, Res>) => AsyncActivityCommonDetails;
25
- export declare const createCommonActivityDetails: <Req, Res, Added, Removed>(config: IConfiguration<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>) => CommonActivityDetails;
25
+ export declare const createCommonActivityDetails: <Req, Res, Supported extends string, Added>(config: IConfiguration<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>) => CommonActivityDetails;
26
26
  export declare const addRootContextDataToDetails: <Req, Res>(details: CommonActivityDetails, context: ReadonlyContext<Req, Res>) => void;
27
27
  export declare function redactCookieSecret(secret: string): string;
28
- export declare const addConfigDataToDetails: <Req, Res, Added, Removed>(details: CommonActivityDetails, config: IConfiguration<Req, Res, Added, Removed>) => void;
28
+ export declare const addConfigDataToDetails: <Req, Res, Supported extends string, Added>(details: CommonActivityDetails, config: IConfiguration<Req, Res, Supported, Added>) => void;
29
29
  export declare const addCustomParametersToDetails: (details: CommonActivityDetails, customParameters: CustomParameters | null, responseCustomParameters: ResponseCustomParameters | null) => void;
30
30
  export declare const addProductDataToDetails: (details: CommonActivityDetails, productData: DeepReadonly<ProductData>) => void;
31
31
  export declare const addTlsDataToDetails: (details: CommonActivityDetails, tlsData: DeepReadonly<TlsData>) => void;
@@ -36,5 +36,5 @@ export declare const addRiskApiDataToAsyncActivityCommonDetails: <Req, Res>(deta
36
36
  export declare const addResponseDataToAsyncActivityCommonDetails: <Req, Res>(details: AsyncActivityCommonDetails, context: ReadonlyContext<Req, Res>) => void;
37
37
  export declare const createPageRequestedActivityDetails: <Req, Res>(context: ReadonlyContext<Req, Res>) => PageRequestedActivityDetails;
38
38
  export declare const createBlockActivityDetails: <Req, Res>(context: ReadonlyContext<Req, Res>) => BlockActivityDetails;
39
- export declare const createAdditionalS2SActivityDetails: <Req, Res, Added, Removed>({ ciSendRawUsernameOnAdditionalS2SActivity }: IConfiguration<Req, Res, Added, Removed>, { productData }: ReadonlyContext<Req, Res>) => AdditionalS2SActivityDetails;
39
+ export declare const createAdditionalS2SActivityDetails: <Req, Res, Supported extends string, Added>({ ciSendRawUsernameOnAdditionalS2SActivity }: IConfiguration<Req, Res, Supported, Added>, { productData }: ReadonlyContext<Req, Res>) => AdditionalS2SActivityDetails;
40
40
  export declare const toHeaderEntryArray: (headers: Record<string, string[]>) => HeaderEntry[];
@@ -1,3 +1,3 @@
1
1
  import { ReadonlyContext } from '../context';
2
2
  import { ActiveConfigurationParams } from '../config';
3
- export type AdditionalActivityHandler<Req, Res, Added, Removed> = (config: ActiveConfigurationParams<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>, request: Req) => void | Promise<void>;
3
+ export type AdditionalActivityHandler<Req, Res, Supported extends string, Added> = (config: ActiveConfigurationParams<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>, request: Req) => void | Promise<void>;
@@ -7,5 +7,5 @@ export declare namespace AdditionalActivityHandlerUtils {
7
7
  * @param context - The request context.
8
8
  * @returns {Promise<void>} - A promise that resolves when the additional activity handler is complete.
9
9
  */
10
- const invokeAdditionalActivityHandler: <Req, Res, Added, Removed>(config: IConfiguration<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>) => Promise<void>;
10
+ const invokeAdditionalActivityHandler: <Req, Res, Supported extends string, Added>(config: IConfiguration<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>) => Promise<void>;
11
11
  }
@@ -3,11 +3,11 @@ import { ReadonlyContext } from '../context';
3
3
  import { IBase64Utils } from '../utils';
4
4
  import { IConditionalBlocker } from '../blocker';
5
5
  import { BlockerBase } from './BlockerBase';
6
- export declare class MobileBlocker<Req, Res, Added, Removed> extends BlockerBase<Req, Res> implements IConditionalBlocker<Req, Res> {
7
- protected readonly config: IConfiguration<Req, Res, Added, Removed>;
6
+ export declare class MobileBlocker<Req, Res, Supported extends string, Added> extends BlockerBase<Req, Res> implements IConditionalBlocker<Req, Res> {
7
+ protected readonly config: IConfiguration<Req, Res, Supported, Added>;
8
8
  protected readonly base64Utils: IBase64Utils;
9
9
  protected readonly template: string;
10
- constructor(config: IConfiguration<Req, Res, Added, Removed>, base64Utils: IBase64Utils, template: string);
10
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, base64Utils: IBase64Utils, template: string);
11
11
  shouldBlock(context: ReadonlyContext<Req, Res>): boolean;
12
12
  protected createBlockBody(context: ReadonlyContext<Req, Res>): string;
13
13
  }
@@ -16,4 +16,4 @@ export declare const renderHtml: (htmlTemplate: string, blockData?: BlockData) =
16
16
  * @param base64Utils - The base64 utility functions.
17
17
  * @returns {BlockData} - The block data object.
18
18
  */
19
- export declare const createBlockData: <Req, Res, Added, Removed>(config: IConfiguration<Req, Res, Added, Removed>, context: ReadonlyContext<Req, Res>, base64Utils: IBase64Utils) => BlockData;
19
+ export declare const createBlockData: <Req, Res, Supported extends string, Added>(config: IConfiguration<Req, Res, Supported, Added>, context: ReadonlyContext<Req, Res>, base64Utils: IBase64Utils) => BlockData;
@@ -14,12 +14,12 @@ import { CustomSnippetFunction } from '../snippet_injection';
14
14
  /**
15
15
  * Base class for the enforcer configuration.
16
16
  */
17
- export declare abstract class ConfigurationBase<Req, Res, Added, Removed extends string> implements IConfiguration<Req, Res, Added, Removed> {
18
- protected configParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>;
19
- protected readonly staticConfigParams: StaticConfigurationParams<Req, Res, Added, Removed>;
20
- protected remoteConfigData?: RemoteConfigData<Req, Res, Added, Removed>;
21
- protected readonly defaultConfigParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>;
22
- protected readonly removedParams: Record<Removed, undefined>;
17
+ export declare abstract class ConfigurationBase<Req, Res, Supported extends string, Added> implements IConfiguration<Req, Res, Supported, Added> {
18
+ protected configParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>;
19
+ protected readonly staticConfigParams: StaticConfigurationParams<Req, Res, Supported, Added>;
20
+ protected remoteConfigData?: RemoteConfigData<Req, Res, Supported, Added>;
21
+ protected readonly defaultConfigParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>;
22
+ protected readonly removedParams: Record<Exclude<keyof CoreConfigurationParams<Req, Res, Supported, Added>, Supported>, undefined>;
23
23
  private internalLogger;
24
24
  /**
25
25
  * Returns the module version of the enforcer.
@@ -40,18 +40,18 @@ export declare abstract class ConfigurationBase<Req, Res, Added, Removed extends
40
40
  * @param removedParams - A map of all removed (unsupported) configuration parameters set to undefined. This parameter can be generated automatically by your IDE.
41
41
  * @protected
42
42
  */
43
- protected constructor(params: StaticConfigurationParams<Req, Res, Added, Removed>, defaultParams: Required<Added> & Partial<CoreConfigurationParams<Req, Res, Added, Removed>>, removedParams: Record<Removed, undefined>);
44
- protected createActiveConfiguration(params: AllConfigurationParams<Req, Res, Added, Removed>, defaultParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>): RequiredAllConfigurationParams<Req, Res, Added, Removed>;
45
- protected throwIfMissingRequiredField(params: AllConfigurationParams<Req, Res, Added, Removed>): void;
46
- protected getValidConfigValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Added, Removed>, V extends RequiredAllConfigurationParams<Req, Res, Added, Removed>[K]>(params: AllConfigurationParams<Req, Res, Added, Removed>, defaultParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>, key: K): V;
47
- protected isValidConfigValue(params: AllConfigurationParams<Req, Res, Added, Removed>, defaultParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>, key: keyof RequiredAllConfigurationParams<Req, Res, Added, Removed>): boolean;
48
- protected getDefaultConfigurationValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Added, Removed>, V extends RequiredAllConfigurationParams<Req, Res, Added, Removed>[K]>(params: AllConfigurationParams<Req, Res, Added, Removed>, defaultParams: RequiredAllConfigurationParams<Req, Res, Added, Removed>, key: K): V;
49
- protected normalizeConfigurationValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Added, Removed>, V extends RequiredAllConfigurationParams<Req, Res, Added, Removed>[K]>(params: AllConfigurationParams<Req, Res, Added, Removed>, key: K): V;
50
- protected createInternalLogger(params: RequiredAllConfigurationParams<Req, Res, Added, Removed>): ILogger;
51
- setRemoteConfigData(remoteConfigData: RemoteConfigData<Req, Res, Added, Removed>): void;
52
- getActiveConfig(): ActiveConfigurationParams<Req, Res, Added, Removed>;
53
- getStaticConfig(): StaticConfigurationParams<Req, Res, Added, Removed>;
54
- getRemoteConfig(): RemoteConfigurationParams<Req, Res, Added, Removed>;
43
+ protected constructor(params: StaticConfigurationParams<Req, Res, Supported, Added>, defaultParams: Required<Added> & Partial<CoreConfigurationParams<Req, Res, Supported, Added>>, removedParams: Record<Exclude<keyof CoreConfigurationParams<Req, Res, Supported, Added>, Supported>, undefined>);
44
+ protected createActiveConfiguration(params: AllConfigurationParams<Req, Res, Supported, Added>, defaultParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>): RequiredAllConfigurationParams<Req, Res, Supported, Added>;
45
+ protected throwIfMissingRequiredField(params: AllConfigurationParams<Req, Res, Supported, Added>): void;
46
+ protected getValidConfigValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Supported, Added>, V extends RequiredAllConfigurationParams<Req, Res, Supported, Added>[K]>(params: AllConfigurationParams<Req, Res, Supported, Added>, defaultParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>, key: K): V;
47
+ protected isValidConfigValue(params: AllConfigurationParams<Req, Res, Supported, Added>, defaultParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>, key: keyof RequiredAllConfigurationParams<Req, Res, Supported, Added>): boolean;
48
+ protected getDefaultConfigurationValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Supported, Added>, V extends RequiredAllConfigurationParams<Req, Res, Supported, Added>[K]>(params: AllConfigurationParams<Req, Res, Supported, Added>, defaultParams: RequiredAllConfigurationParams<Req, Res, Supported, Added>, key: K): V;
49
+ protected normalizeConfigurationValue<K extends keyof RequiredAllConfigurationParams<Req, Res, Supported, Added>, V extends RequiredAllConfigurationParams<Req, Res, Supported, Added>[K]>(params: AllConfigurationParams<Req, Res, Supported, Added>, key: K): V;
50
+ protected createInternalLogger(params: RequiredAllConfigurationParams<Req, Res, Supported, Added>): ILogger;
51
+ setRemoteConfigData(remoteConfigData: RemoteConfigData<Req, Res, Supported, Added>): void;
52
+ getActiveConfig(): ActiveConfigurationParams<Req, Res, Supported, Added>;
53
+ getStaticConfig(): StaticConfigurationParams<Req, Res, Supported, Added>;
54
+ getRemoteConfig(): RemoteConfigurationParams<Req, Res, Supported, Added>;
55
55
  get moduleVersion(): string;
56
56
  get logger(): ILogger;
57
57
  get appId(): string;
@@ -105,9 +105,9 @@ export declare abstract class ConfigurationBase<Req, Res, Added, Removed extends
105
105
  get extractGraphQLKeywords(): ExtractGraphQLKeywordsFunction | null;
106
106
  get sensitiveGraphqlOperationNames(): Array<string | RegExp>;
107
107
  get sensitiveGraphqlOperationTypes(): string[];
108
- get enrichCustomParameters(): CustomParametersFunction<Req, Res, Added, Removed> | null;
109
- get enrichResponseCustomParameters(): ResponseCustomParametersFunction<Req, Res, Added, Removed> | null;
110
- get additionalActivityHandler(): AdditionalActivityHandler<Req, Res, Added, Removed> | null;
108
+ get enrichCustomParameters(): CustomParametersFunction<Req, Res, Supported, Added> | null;
109
+ get enrichResponseCustomParameters(): ResponseCustomParametersFunction<Req, Res, Supported, Added> | null;
110
+ get additionalActivityHandler(): AdditionalActivityHandler<Req, Res, Supported, Added> | null;
111
111
  get altBackendCaptchaUrl(): string;
112
112
  get corsSupportEnabled(): boolean;
113
113
  get corsCustomPreflightHandler(): CustomPreflightHandler<Req> | null;
@@ -142,7 +142,7 @@ export declare abstract class ConfigurationBase<Req, Res, Added, Removed extends
142
142
  get securedPxhdEnabled(): boolean;
143
143
  get tokenVersion(): `${TokenVersion}`;
144
144
  get snippetInjectionEnabled(): boolean;
145
- get createCustomSnippet(): CustomSnippetFunction<Req, Res, Added, Removed> | null;
145
+ get createCustomSnippet(): CustomSnippetFunction<Req, Res, Supported, Added> | null;
146
146
  get dataEnrichmentHeaderName(): string;
147
147
  get enableBlockedUrlOnCaptchaBlockPage(): boolean;
148
148
  get awaitAsyncHttpRequests(): boolean;
@@ -10,7 +10,7 @@ import { ExtractGraphQLKeywordsFunction } from '../graphql';
10
10
  import { TokenVersion } from '../risk_token';
11
11
  import { CustomSnippetFunction } from '../snippet_injection';
12
12
  import { RemoteConfigData } from './remote_config';
13
- export interface IConfiguration<Req, Res, Added, Removed> {
13
+ export interface IConfiguration<Req, Res, Supported extends string, Added> {
14
14
  /**
15
15
  * The application ID.
16
16
  */
@@ -246,15 +246,15 @@ export interface IConfiguration<Req, Res, Added, Removed> {
246
246
  /**
247
247
  * A function returning CustomParameters that will be added to the enforcer activities.
248
248
  */
249
- readonly enrichCustomParameters: CustomParametersFunction<Req, Res, Added, Removed> | null;
249
+ readonly enrichCustomParameters: CustomParametersFunction<Req, Res, Supported, Added> | null;
250
250
  /**
251
251
  * A function returning ResponseCustomParameters that will be added to the enforcer activities.
252
252
  */
253
- readonly enrichResponseCustomParameters: ResponseCustomParametersFunction<Req, Res, Added, Removed> | null;
253
+ readonly enrichResponseCustomParameters: ResponseCustomParametersFunction<Req, Res, Supported, Added> | null;
254
254
  /**
255
255
  * A function that will be called after the asynchronous activities are sent to the backend.
256
256
  */
257
- readonly additionalActivityHandler: AdditionalActivityHandler<Req, Res, Added, Removed> | null;
257
+ readonly additionalActivityHandler: AdditionalActivityHandler<Req, Res, Supported, Added> | null;
258
258
  /**
259
259
  * Whether cors support feature should be enabled.
260
260
  */
@@ -387,7 +387,7 @@ export interface IConfiguration<Req, Res, Added, Removed> {
387
387
  /**
388
388
  * A custom function that returns a string representing the snippet to be injected.
389
389
  */
390
- readonly createCustomSnippet: CustomSnippetFunction<Req, Res, Added, Removed> | null;
390
+ readonly createCustomSnippet: CustomSnippetFunction<Req, Res, Supported, Added> | null;
391
391
  /**
392
392
  * Whether to include the request url in captcha block page
393
393
  */
@@ -411,17 +411,17 @@ export interface IConfiguration<Req, Res, Added, Removed> {
411
411
  /**
412
412
  * Returns an object representation of the current configuration.
413
413
  */
414
- getActiveConfig(): ActiveConfigurationParams<Req, Res, Added, Removed>;
414
+ getActiveConfig(): ActiveConfigurationParams<Req, Res, Supported, Added>;
415
415
  /**
416
416
  * Returns an object representation of the static configuration.
417
417
  */
418
- getStaticConfig(): StaticConfigurationParams<Req, Res, Added, Removed>;
418
+ getStaticConfig(): StaticConfigurationParams<Req, Res, Supported, Added>;
419
419
  /**
420
420
  * Returns an object representation of the remote configuration.
421
421
  */
422
- getRemoteConfig(): RemoteConfigurationParams<Req, Res, Added, Removed>;
422
+ getRemoteConfig(): RemoteConfigurationParams<Req, Res, Supported, Added>;
423
423
  /**
424
424
  * Sets the remote configuration data.
425
425
  */
426
- setRemoteConfigData(remoteConfigData: RemoteConfigData<Req, Res, Added, Removed>): void;
426
+ setRemoteConfigData(remoteConfigData: RemoteConfigData<Req, Res, Supported, Added>): void;
427
427
  }
@@ -1,2 +1,2 @@
1
1
  import { CoreConfigurationParams } from '../params';
2
- export declare const defaultConfigurationParams: <Req, Res, Added, Removed>() => Required<CoreConfigurationParams<Req, Res, Added, Removed>>;
2
+ export declare const defaultConfigurationParams: <Req, Res, Supported extends string, Added>() => Required<CoreConfigurationParams<Req, Res, Supported, Added>>;
@@ -1,2 +1,8 @@
1
- import { RequiredAllConfigurationParams } from './AllConfigurationParams';
2
- export type ActiveConfigurationParams<Req, Res, Added, Removed> = [Removed] extends [never] ? RequiredAllConfigurationParams<Req, Res, Added, Removed> : Removed extends string ? Omit<RequiredAllConfigurationParams<Req, Res, Added, Removed>, Removed> : never;
1
+ import { CoreConfigurationParams, CoreConfigurationParamsKeys } from './CoreConfigurationParams';
2
+ /**
3
+ * Active configuration parameters representing the runtime-filtered configuration.
4
+ * Only includes the supported subset of core configurations plus added configurations.
5
+ */
6
+ export type ActiveConfigurationParams<Req, Res, Supported extends string, Added> = [Supported] extends [
7
+ CoreConfigurationParamsKeys
8
+ ] ? Required<Added> & Required<Pick<CoreConfigurationParams<Req, Res, string, Added>, Supported>> : never;
@@ -1,4 +1,7 @@
1
1
  import { CoreConfigurationParams } from './CoreConfigurationParams';
2
- export type AllConfigurationParams<Req, Res, Added, Removed> = Added & CoreConfigurationParams<Req, Res, Added, Removed>;
3
- export type RequiredAllConfigurationParams<Req, Res, Added, Removed> = Required<Added> & Required<CoreConfigurationParams<Req, Res, Added, Removed>>;
4
- export type CreateHumanSecurityConfigurationParams<Req, Res, Added, Removed> = [Removed] extends [never] ? Added & CoreConfigurationParams<Req, Res, Added, Removed> : Removed extends keyof CoreConfigurationParams<Req, Res, Added, Removed> ? Added & Omit<CoreConfigurationParams<Req, Res, Added, Removed>, Removed> : never;
2
+ /**
3
+ * Combined configuration parameters (Added + Core) with optional fields.
4
+ * Used for input parameters where not all fields are required.
5
+ */
6
+ export type AllConfigurationParams<Req, Res, Supported extends string, Added> = Added & CoreConfigurationParams<Req, Res, Supported, Added>;
7
+ export type RequiredAllConfigurationParams<Req, Res, Supported extends string, Added> = Required<Added> & Required<CoreConfigurationParams<Req, Res, Supported, Added>>;
@@ -50,14 +50,14 @@ export type TokenV3ConfigurationParamsOnly = {
50
50
  /**
51
51
  * The configuration parameters relevant to the snippet injection feature.
52
52
  */
53
- export type SnippetInjectionParamsOnly<Req, Res, Added, Removed> = {
53
+ export type SnippetInjectionParamsOnly<Req, Res, Supported extends string, Added> = {
54
54
  px_snippet_injection_enabled?: boolean;
55
- px_create_custom_snippet?: CustomSnippetFunction<Req, Res, Added, Removed> | null;
55
+ px_create_custom_snippet?: CustomSnippetFunction<Req, Res, Supported, Added> | null;
56
56
  };
57
57
  /**
58
58
  * The configuration parameters that can be set via either the static or remote configuration.
59
59
  */
60
- export type CommonConfigurationParams<Req, Res, Added, Removed> = TokenV3ConfigurationParamsOnly & BatchedActivitiesConfigParamsOnly & SnippetInjectionParamsOnly<Req, Res, Added, Removed> & {
60
+ export type CommonConfigurationParams<Req, Res, Supported extends string, Added> = TokenV3ConfigurationParamsOnly & BatchedActivitiesConfigParamsOnly & SnippetInjectionParamsOnly<Req, Res, Supported, Added> & {
61
61
  px_s2s_timeout?: number;
62
62
  px_async_timeout?: number;
63
63
  px_backend_url?: string;
@@ -121,9 +121,9 @@ export type CommonConfigurationParams<Req, Res, Added, Removed> = TokenV3Configu
121
121
  px_url_decode_reserved_characters?: boolean;
122
122
  px_secured_pxhd_enabled?: boolean;
123
123
  px_data_enrichment_header_name?: string;
124
- px_additional_activity_handler?: AdditionalActivityHandler<Req, Res, Added, Removed> | null;
125
- px_enrich_custom_parameters?: CustomParametersFunction<Req, Res, Added, Removed> | null;
126
- px_enrich_response_custom_parameters?: ResponseCustomParametersFunction<Req, Res, Added, Removed> | null;
124
+ px_additional_activity_handler?: AdditionalActivityHandler<Req, Res, Supported, Added> | null;
125
+ px_enrich_custom_parameters?: CustomParametersFunction<Req, Res, Supported, Added> | null;
126
+ px_enrich_response_custom_parameters?: ResponseCustomParametersFunction<Req, Res, Supported, Added> | null;
127
127
  px_login_successful_custom_callback?: CustomLoginSuccessfulCallback<Res> | null;
128
128
  px_cors_custom_preflight_handler?: CustomPreflightHandler<Req> | null;
129
129
  px_cors_create_custom_block_response_headers?: CustomBlockResponseHeadersHandler<Req> | null;
@@ -136,4 +136,21 @@ export type CommonConfigurationParams<Req, Res, Added, Removed> = TokenV3Configu
136
136
  /**
137
137
  * All configuration parameters supported by JS Core.
138
138
  */
139
- export type CoreConfigurationParams<Req, Res, Added, Removed> = StaticConfigurationParamsOnly & RemoteConfigurationParamsOnly & CommonConfigurationParams<Req, Res, Added, Removed>;
139
+ export type CoreConfigurationParams<Req, Res, Supported extends string, Added> = StaticConfigurationParamsOnly & RemoteConfigurationParamsOnly & CommonConfigurationParams<Req, Res, Supported, Added>;
140
+ export type CoreConfigurationParamsKeys = keyof CoreConfigurationParams<any, any, any, any>;
141
+ /**
142
+ * Utility type to validate that enforcer-supported configurations are valid core configuration keys.
143
+ * This provides compile-time type safety to ensure wrapper libraries only reference existing core configs.
144
+ *
145
+ * @template T - Union of core configuration parameter keys to validate
146
+ * @example
147
+ * ```typescript
148
+ * // In wrapper library:
149
+ * export type SupportedCoreConfigs = ValidateSupportedConfigurations<
150
+ * | 'px_app_id'
151
+ * | 'px_auth_token'
152
+ * | 'px_blocking_score'
153
+ * >;
154
+ * ```
155
+ */
156
+ export type ValidateSupportedConfigurations<T extends CoreConfigurationParamsKeys> = T;
@@ -0,0 +1,2 @@
1
+ import { CoreConfigurationParamsKeys, CoreConfigurationParams } from './CoreConfigurationParams';
2
+ export type CreateHumanSecurityConfigurationParams<Req, Res, Supported extends CoreConfigurationParamsKeys, Added> = Added & Pick<CoreConfigurationParams<Req, Res, Supported, Added>, Supported>;
@@ -1,5 +1,6 @@
1
1
  import { CoreConfigurationParams, StaticConfigurationParamsOnly } from './CoreConfigurationParams';
2
2
  /**
3
- * All configurations that can be set via the remote configurations, taking into account any added or removed configurations.
3
+ * All core configurations that can be set via the remote configurations.
4
+ * Note: Only core configs can be set remotely, not wrapper-specific Added configs.
4
5
  */
5
- export type RemoteConfigurationParams<Req, Res, Added, Removed> = Omit<CoreConfigurationParams<Req, Res, Added, Removed>, keyof StaticConfigurationParamsOnly>;
6
+ export type RemoteConfigurationParams<Req, Res, Supported extends string, Added> = Omit<CoreConfigurationParams<Req, Res, Supported, Added>, keyof StaticConfigurationParamsOnly>;
@@ -1,6 +1,8 @@
1
- import { RemoteConfigurationParamsOnly } from './CoreConfigurationParams';
2
- import { CreateHumanSecurityConfigurationParams } from './AllConfigurationParams';
1
+ import { CoreConfigurationParamsKeys, RemoteConfigurationParamsOnly } from './CoreConfigurationParams';
2
+ import { CreateHumanSecurityConfigurationParams } from './CreateHumanSecurityConfigurationParams';
3
3
  /**
4
4
  * All configurations that can be set via the static configurations, taking into account any added or removed configurations.
5
5
  */
6
- export type StaticConfigurationParams<Req, Res, Added = {}, Removed = never> = Omit<CreateHumanSecurityConfigurationParams<Req, Res, Added, Removed>, keyof RemoteConfigurationParamsOnly>;
6
+ export type StaticConfigurationParams<Req, Res, Supported extends string, Added> = [Supported] extends [
7
+ CoreConfigurationParamsKeys
8
+ ] ? Omit<CreateHumanSecurityConfigurationParams<Req, Res, Supported, Added>, keyof RemoteConfigurationParamsOnly> : never;
@@ -3,3 +3,4 @@ export * from './AllConfigurationParams';
3
3
  export * from './CoreConfigurationParams';
4
4
  export * from './RemoteConfigurationParams';
5
5
  export * from './StaticConfigurationParams';
6
+ export * from './CreateHumanSecurityConfigurationParams';
@@ -4,6 +4,6 @@ import { RemoteConfigurationParams } from '../params';
4
4
  import { RemoteConfigData } from './model';
5
5
  export declare namespace RemoteConfigUtils {
6
6
  const isRemoteConfigUpdateRequest: <Req>(request: IIncomingRequest<Req>) => boolean;
7
- const prepareRemoteConfigParams: <Req, Res, Added, Removed>({ version, configValue }: RemoteConfigData<Req, Res, Added, Removed>, logger: ILogger) => RemoteConfigurationParams<Req, Res, Added, Removed>;
7
+ const prepareRemoteConfigParams: <Req, Res, Supported extends string, Added>({ version, configValue }: RemoteConfigData<Req, Res, Supported, Added>, logger: ILogger) => RemoteConfigurationParams<Req, Res, Supported, Added>;
8
8
  const mergeStringRegexConfigurationValues: (stringFields: Array<string | RegExp> | undefined, regexFields: string[] | undefined, logger: ILogger) => Array<string | RegExp>;
9
9
  }
@@ -4,20 +4,20 @@ import { RemoteConfigData } from '../model';
4
4
  import { IRemoteConfigServiceClient } from '../service_client';
5
5
  import { IRemoteConfigStorageClient } from '../storage_client';
6
6
  import { IRemoteConfigManager } from './IRemoteConfigManager';
7
- export type DefaultRemoteConfigManagerOptions<Req, Res, Added, Removed> = {
8
- serviceClient: IRemoteConfigServiceClient<Req, Res, Added, Removed>;
9
- storageClient: IRemoteConfigStorageClient<Req, Res, Added, Removed>;
7
+ export type DefaultRemoteConfigManagerOptions<Req, Res, Supported extends string, Added> = {
8
+ serviceClient: IRemoteConfigServiceClient<Req, Res, Supported, Added>;
9
+ storageClient: IRemoteConfigStorageClient<Req, Res, Supported, Added>;
10
10
  };
11
- export declare class DefaultRemoteConfigManager<Req, Res, Added, Removed> implements IRemoteConfigManager<Req, Res> {
12
- protected readonly config: IConfiguration<Req, Res, Added, Removed>;
13
- protected serviceClient: IRemoteConfigServiceClient<Req, Res, Added, Removed>;
14
- protected storageClient: IRemoteConfigStorageClient<Req, Res, Added, Removed>;
15
- constructor(config: IConfiguration<Req, Res, Added, Removed>, options: DefaultRemoteConfigManagerOptions<Req, Res, Added, Removed>);
11
+ export declare class DefaultRemoteConfigManager<Req, Res, Supported extends string, Added> implements IRemoteConfigManager<Req, Res> {
12
+ protected readonly config: IConfiguration<Req, Res, Supported, Added>;
13
+ protected serviceClient: IRemoteConfigServiceClient<Req, Res, Supported, Added>;
14
+ protected storageClient: IRemoteConfigStorageClient<Req, Res, Supported, Added>;
15
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, options: DefaultRemoteConfigManagerOptions<Req, Res, Supported, Added>);
16
16
  loadRemoteConfig(): Promise<void>;
17
- protected loadRemoteConfigData(): Promise<RemoteConfigData<Req, Res, Added, Removed> | null>;
17
+ protected loadRemoteConfigData(): Promise<RemoteConfigData<Req, Res, Supported, Added> | null>;
18
18
  protected isValidRemoteConfigId(remoteConfigId: string): boolean;
19
19
  shouldUpdateRemoteConfig(context: IContext<Req, Res>): boolean;
20
20
  updateRemoteConfig(context: ReadonlyContext<Req, Res>): Promise<void>;
21
- protected fetchRemoteConfigData(desiredVersion: number, context: ReadonlyContext<Req, Res>): Promise<RemoteConfigData<Req, Res, Added, Removed> | null>;
21
+ protected fetchRemoteConfigData(desiredVersion: number, context: ReadonlyContext<Req, Res>): Promise<RemoteConfigData<Req, Res, Supported, Added> | null>;
22
22
  protected sleepBetweenFetchAttempts(ms: number): Promise<void>;
23
23
  }
@@ -1,7 +1,7 @@
1
1
  import { RemoteConfigurationParams } from '../../params';
2
- export type RemoteConfigData<Req, Res, Added, Removed> = {
2
+ export type RemoteConfigData<Req, Res, Supported extends string, Added> = {
3
3
  id: string;
4
- configValue: RemoteConfigurationParams<Req, Res, Added, Removed>;
4
+ configValue: RemoteConfigurationParams<Req, Res, Supported, Added>;
5
5
  lastUpdated: number;
6
6
  version: number;
7
7
  };
@@ -2,11 +2,11 @@ import { IHttpClient, IIncomingResponse, IOutgoingRequest } from '../../../http'
2
2
  import { IConfiguration } from '../../IConfiguration';
3
3
  import { RemoteConfigData, RemoteConfigNotifyRequestPayload } from '../model';
4
4
  import { IRemoteConfigServiceClient } from './IRemoteConfigServiceClient';
5
- export declare class HttpRemoteConfigServiceClient<Req, Res, Added, Removed> implements IRemoteConfigServiceClient<Req, Res, Added, Removed> {
6
- protected readonly config: IConfiguration<Req, Res, Added, Removed>;
5
+ export declare class HttpRemoteConfigServiceClient<Req, Res, Supported extends string, Added> implements IRemoteConfigServiceClient<Req, Res, Supported, Added> {
6
+ protected readonly config: IConfiguration<Req, Res, Supported, Added>;
7
7
  protected readonly httpClient: IHttpClient;
8
- constructor(config: IConfiguration<Req, Res, Added, Removed>, httpClient: IHttpClient);
9
- fetch(_updateRequestData: RemoteConfigNotifyRequestPayload): Promise<RemoteConfigData<Req, Res, Added, Removed>>;
8
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, httpClient: IHttpClient);
9
+ fetch(_updateRequestData: RemoteConfigNotifyRequestPayload): Promise<RemoteConfigData<Req, Res, Supported, Added>>;
10
10
  protected createFetchRemoteConfigRequest(): IOutgoingRequest;
11
- protected extractConfigFromResponse(response: IIncomingResponse): Promise<RemoteConfigData<Req, Res, Added, Removed>>;
11
+ protected extractConfigFromResponse(response: IIncomingResponse): Promise<RemoteConfigData<Req, Res, Supported, Added>>;
12
12
  }
@@ -1,5 +1,5 @@
1
1
  import { AsyncOrSync } from 'ts-essentials';
2
2
  import { RemoteConfigData, RemoteConfigNotifyRequestPayload } from '../model';
3
- export interface IRemoteConfigServiceClient<Req, Res, Added, Removed> {
4
- fetch(updateRequestData: RemoteConfigNotifyRequestPayload): AsyncOrSync<RemoteConfigData<Req, Res, Added, Removed>>;
3
+ export interface IRemoteConfigServiceClient<Req, Res, Supported extends string, Added> {
4
+ fetch(updateRequestData: RemoteConfigNotifyRequestPayload): AsyncOrSync<RemoteConfigData<Req, Res, Supported, Added>>;
5
5
  }
@@ -1,6 +1,6 @@
1
1
  import { AsyncOrSync } from 'ts-essentials';
2
2
  import { RemoteConfigData } from '../model';
3
- export interface IRemoteConfigStorageClient<Req, Res, Added, Removed> {
4
- load(): AsyncOrSync<RemoteConfigData<Req, Res, Added, Removed> | null>;
5
- save(remoteConfigData: RemoteConfigData<Req, Res, Added, Removed>): AsyncOrSync<void>;
3
+ export interface IRemoteConfigStorageClient<Req, Res, Supported extends string, Added> {
4
+ load(): AsyncOrSync<RemoteConfigData<Req, Res, Supported, Added> | null>;
5
+ save(remoteConfigData: RemoteConfigData<Req, Res, Supported, Added>): AsyncOrSync<void>;
6
6
  }
@@ -11,10 +11,10 @@ export type DefaultNotifyRemoteConfigUpdateParserOptions = {
11
11
  hmacUtils?: never;
12
12
  timestampHmacHeaderValidator: ITimestampHmacHeaderValidator;
13
13
  };
14
- export declare class DefaultNotifyRemoteConfigUpdateParser<Req, Res, Added, Removed> implements IRemoteConfigUpdateParser<Req, Res> {
15
- protected readonly config: IConfiguration<Req, Res, Added, Removed>;
14
+ export declare class DefaultNotifyRemoteConfigUpdateParser<Req, Res, Supported extends string, Added> implements IRemoteConfigUpdateParser<Req, Res> {
15
+ protected readonly config: IConfiguration<Req, Res, Supported, Added>;
16
16
  protected readonly timestampHmacHeaderValidator: ITimestampHmacHeaderValidator;
17
- constructor(config: IConfiguration<Req, Res, Added, Removed>, options: DefaultNotifyRemoteConfigUpdateParserOptions);
17
+ constructor(config: IConfiguration<Req, Res, Supported, Added>, options: DefaultNotifyRemoteConfigUpdateParserOptions);
18
18
  isUpdateRequest({ requestData: { request } }: ReadonlyContext<Req, Res>): Promise<boolean>;
19
19
  parseUpdate(context: ReadonlyContext<Req, Res>): Promise<RemoteConfigUpdateData>;
20
20
  protected isNotifyRequestValid(context: ReadonlyContext<Req, Res>): Promise<boolean>;