perimeterx-js-core 0.21.1 → 0.21.2

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 (21) hide show
  1. package/lib/cjs/products/bot_defender/BotDefender.js +1 -1
  2. package/lib/cjs/products/bot_defender/block/DefaultBotDefenderBlocker.js +11 -2
  3. package/lib/cjs/products/bot_defender/block/captcha/CaptchaBlocker.js +8 -5
  4. package/lib/cjs/products/bot_defender/block/captcha/HtmlCaptchaBlocker.js +5 -4
  5. package/lib/cjs/products/bot_defender/block/captcha/JsonCaptchaBlocker.js +3 -3
  6. package/lib/cjs/products/bot_defender/block/captcha/MobileCaptchaBlocker.js +2 -2
  7. package/lib/cjs/utils/constants.js +1 -1
  8. package/lib/esm/products/bot_defender/BotDefender.js +1 -1
  9. package/lib/esm/products/bot_defender/block/DefaultBotDefenderBlocker.js +12 -3
  10. package/lib/esm/products/bot_defender/block/captcha/CaptchaBlocker.js +8 -5
  11. package/lib/esm/products/bot_defender/block/captcha/HtmlCaptchaBlocker.js +6 -4
  12. package/lib/esm/products/bot_defender/block/captcha/JsonCaptchaBlocker.js +3 -3
  13. package/lib/esm/products/bot_defender/block/captcha/MobileCaptchaBlocker.js +2 -2
  14. package/lib/esm/utils/constants.js +1 -1
  15. package/lib/types/products/bot_defender/block/DefaultBotDefenderBlocker.d.ts +6 -1
  16. package/lib/types/products/bot_defender/block/captcha/CaptchaBlocker.d.ts +21 -9
  17. package/lib/types/products/bot_defender/block/captcha/HtmlCaptchaBlocker.d.ts +7 -1
  18. package/lib/types/products/bot_defender/block/captcha/JsonCaptchaBlocker.d.ts +5 -1
  19. package/lib/types/products/bot_defender/block/captcha/MobileCaptchaBlocker.d.ts +6 -1
  20. package/lib/types/utils/constants.d.ts +1 -1
  21. package/package.json +3 -3
@@ -67,7 +67,7 @@ var BotDefender = /** @class */ (function () {
67
67
  this.firstParty =
68
68
  (_a = options.firstParty) !== null && _a !== void 0 ? _a : new first_party_1.DefaultBotDefenderFirstParty(config, { urlUtils: options.urlUtils });
69
69
  this.filter = (_b = options.filter) !== null && _b !== void 0 ? _b : new filter_1.DefaultBotDefenderFilter(config, options.ipRangeChecker);
70
- this.blocker = (_c = options.blocker) !== null && _c !== void 0 ? _c : new block_1.DefaultBotDefenderBlocker(config, options.base64Utils);
70
+ this.blocker = (_c = options.blocker) !== null && _c !== void 0 ? _c : new block_1.DefaultBotDefenderBlocker(config, { base64Utils: options.base64Utils });
71
71
  }
72
72
  BotDefender.prototype.handleFirstPartyRequest = function (context) {
73
73
  return __awaiter(this, void 0, void 0, function () {
@@ -8,9 +8,18 @@ var utils_1 = require("../../utils");
8
8
  var captcha_1 = require("./captcha");
9
9
  var templates_1 = require("./templates");
10
10
  var DefaultBotDefenderBlocker = /** @class */ (function () {
11
- function DefaultBotDefenderBlocker(config, base64Utils) {
11
+ function DefaultBotDefenderBlocker(config, options) {
12
12
  this.config = config;
13
- this.captchaBlocker = new captcha_1.CaptchaBlocker(config, base64Utils);
13
+ if ('captchaBlocker' in options) {
14
+ this.captchaBlocker = options.captchaBlocker;
15
+ }
16
+ else {
17
+ this.captchaBlocker = new captcha_1.CaptchaBlocker({
18
+ config: config,
19
+ base64Utils: options.base64Utils,
20
+ captchaTemplate: templates_1.CAPTCHA_TEMPLATE,
21
+ });
22
+ }
14
23
  }
15
24
  DefaultBotDefenderBlocker.prototype.shouldBlock = function (_a) {
16
25
  var action = _a.action, reasons = _a.reasons, productData = _a.productData;
@@ -5,11 +5,14 @@ var JsonCaptchaBlocker_1 = require("./JsonCaptchaBlocker");
5
5
  var MobileCaptchaBlocker_1 = require("./MobileCaptchaBlocker");
6
6
  var HtmlCaptchaBlocker_1 = require("./HtmlCaptchaBlocker");
7
7
  var CaptchaBlocker = /** @class */ (function () {
8
- function CaptchaBlocker(config, base64Utils) {
9
- this.config = config;
10
- this.jsonCaptchaBlocker = new JsonCaptchaBlocker_1.JsonCaptchaBlocker(config, base64Utils);
11
- this.mobileCaptchaBlocker = new MobileCaptchaBlocker_1.MobileCaptchaBlocker(config, base64Utils);
12
- this.htmlCaptchaBlocker = new HtmlCaptchaBlocker_1.HtmlCaptchaBlocker(config, base64Utils);
8
+ function CaptchaBlocker(options) {
9
+ this.config = options.config;
10
+ this.jsonCaptchaBlocker =
11
+ 'jsonCaptchaBlocker' in options ? options.jsonCaptchaBlocker : new JsonCaptchaBlocker_1.JsonCaptchaBlocker(options);
12
+ this.mobileCaptchaBlocker =
13
+ 'mobileCaptchaBlocker' in options ? options.mobileCaptchaBlocker : new MobileCaptchaBlocker_1.MobileCaptchaBlocker(options);
14
+ this.htmlCaptchaBlocker =
15
+ 'htmlCaptchaBlocker' in options ? options.htmlCaptchaBlocker : new HtmlCaptchaBlocker_1.HtmlCaptchaBlocker(options);
13
16
  }
14
17
  CaptchaBlocker.prototype.createBlockResponse = function (context) {
15
18
  if (this.mobileCaptchaBlocker.shouldBlock(context)) {
@@ -21,14 +21,15 @@ var blocker_1 = require("../../../../blocker");
21
21
  var templates_1 = require("../templates");
22
22
  var HtmlCaptchaBlocker = /** @class */ (function (_super) {
23
23
  __extends(HtmlCaptchaBlocker, _super);
24
- function HtmlCaptchaBlocker(config, base64Utils) {
24
+ function HtmlCaptchaBlocker(options) {
25
25
  var _this = _super.call(this, http_1.ContentType.TEXT_HTML) || this;
26
- _this.config = config;
27
- _this.base64Utils = base64Utils;
26
+ _this.config = options.config;
27
+ _this.base64Utils = options.base64Utils;
28
+ _this.captchaTemplate = options.captchaTemplate || templates_1.CAPTCHA_TEMPLATE;
28
29
  return _this;
29
30
  }
30
31
  HtmlCaptchaBlocker.prototype.createBlockBody = function (context) {
31
- return (0, blocker_1.renderHtml)(templates_1.CAPTCHA_TEMPLATE, (0, blocker_1.createBlockData)(this.config, context, this.base64Utils));
32
+ return (0, blocker_1.renderHtml)(this.captchaTemplate, (0, blocker_1.createBlockData)(this.config, context, this.base64Utils));
32
33
  };
33
34
  return HtmlCaptchaBlocker;
34
35
  }(blocker_1.BlockerBase));
@@ -19,10 +19,10 @@ exports.JsonCaptchaBlocker = void 0;
19
19
  var blocker_1 = require("../../../../blocker");
20
20
  var JsonCaptchaBlocker = /** @class */ (function (_super) {
21
21
  __extends(JsonCaptchaBlocker, _super);
22
- function JsonCaptchaBlocker(config, base64Utils) {
22
+ function JsonCaptchaBlocker(options) {
23
23
  var _this = _super.call(this) || this;
24
- _this.config = config;
25
- _this.base64Utils = base64Utils;
24
+ _this.config = options.config;
25
+ _this.base64Utils = options.base64Utils;
26
26
  return _this;
27
27
  }
28
28
  JsonCaptchaBlocker.prototype.shouldBlock = function (context) {
@@ -20,8 +20,8 @@ var blocker_1 = require("../../../../blocker");
20
20
  var templates_1 = require("../templates");
21
21
  var MobileCaptchaBlocker = /** @class */ (function (_super) {
22
22
  __extends(MobileCaptchaBlocker, _super);
23
- function MobileCaptchaBlocker(config, base64Utils) {
24
- return _super.call(this, config, base64Utils, templates_1.CAPTCHA_TEMPLATE) || this;
23
+ function MobileCaptchaBlocker(options) {
24
+ return _super.call(this, options.config, options.base64Utils, options.captchaTemplate || templates_1.CAPTCHA_TEMPLATE) || this;
25
25
  }
26
26
  return MobileCaptchaBlocker;
27
27
  }(blocker_1.MobileBlocker));
@@ -14,4 +14,4 @@ exports.PUSH_DATA_FEATURE_HEADER_NAME = 'x-px-feature';
14
14
  exports.EMAIL_ADDRESS_REGEX = /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$/;
15
15
  exports.URL_REGEX = /^(https?\:)\/\/(([^@\s:]+):?([^@\s]*)@)?(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/;
16
16
  exports.REGEX_STRUCTURE = /^\/(.+?)\/([gimsuyvd]*)$/;
17
- exports.CORE_MODULE_VERSION = 'JS Core 0.21.1';
17
+ exports.CORE_MODULE_VERSION = 'JS Core 0.21.2';
@@ -20,7 +20,7 @@ export class BotDefender {
20
20
  this.firstParty =
21
21
  options.firstParty ?? new DefaultBotDefenderFirstParty(config, { urlUtils: options.urlUtils });
22
22
  this.filter = options.filter ?? new DefaultBotDefenderFilter(config, options.ipRangeChecker);
23
- this.blocker = options.blocker ?? new DefaultBotDefenderBlocker(config, options.base64Utils);
23
+ this.blocker = options.blocker ?? new DefaultBotDefenderBlocker(config, { base64Utils: options.base64Utils });
24
24
  }
25
25
  async handleFirstPartyRequest(context) {
26
26
  return this.firstParty.handleFirstPartyRequest(context);
@@ -3,13 +3,22 @@ import { BlockAction } from '../../../blocker';
3
3
  import { ContentType, CONTENT_TYPE_HEADER_NAME, MinimalResponseImpl } from '../../../http';
4
4
  import { ProductName } from '../../utils';
5
5
  import { CaptchaBlocker } from './captcha';
6
- import { RATE_LIMIT_TEMPLATE } from './templates';
6
+ import { CAPTCHA_TEMPLATE, RATE_LIMIT_TEMPLATE } from './templates';
7
7
  export class DefaultBotDefenderBlocker {
8
8
  config;
9
9
  captchaBlocker;
10
- constructor(config, base64Utils) {
10
+ constructor(config, options) {
11
11
  this.config = config;
12
- this.captchaBlocker = new CaptchaBlocker(config, base64Utils);
12
+ if ('captchaBlocker' in options) {
13
+ this.captchaBlocker = options.captchaBlocker;
14
+ }
15
+ else {
16
+ this.captchaBlocker = new CaptchaBlocker({
17
+ config,
18
+ base64Utils: options.base64Utils,
19
+ captchaTemplate: CAPTCHA_TEMPLATE,
20
+ });
21
+ }
13
22
  }
14
23
  shouldBlock({ action, reasons, productData }) {
15
24
  return action === Action.BLOCK && !!reasons?.[ProductName.BOT_DEFENDER];
@@ -6,11 +6,14 @@ export class CaptchaBlocker {
6
6
  jsonCaptchaBlocker;
7
7
  mobileCaptchaBlocker;
8
8
  htmlCaptchaBlocker;
9
- constructor(config, base64Utils) {
10
- this.config = config;
11
- this.jsonCaptchaBlocker = new JsonCaptchaBlocker(config, base64Utils);
12
- this.mobileCaptchaBlocker = new MobileCaptchaBlocker(config, base64Utils);
13
- this.htmlCaptchaBlocker = new HtmlCaptchaBlocker(config, base64Utils);
9
+ constructor(options) {
10
+ this.config = options.config;
11
+ this.jsonCaptchaBlocker =
12
+ 'jsonCaptchaBlocker' in options ? options.jsonCaptchaBlocker : new JsonCaptchaBlocker(options);
13
+ this.mobileCaptchaBlocker =
14
+ 'mobileCaptchaBlocker' in options ? options.mobileCaptchaBlocker : new MobileCaptchaBlocker(options);
15
+ this.htmlCaptchaBlocker =
16
+ 'htmlCaptchaBlocker' in options ? options.htmlCaptchaBlocker : new HtmlCaptchaBlocker(options);
14
17
  }
15
18
  createBlockResponse(context) {
16
19
  if (this.mobileCaptchaBlocker.shouldBlock(context)) {
@@ -4,12 +4,14 @@ import { CAPTCHA_TEMPLATE } from '../templates';
4
4
  export class HtmlCaptchaBlocker extends BlockerBase {
5
5
  config;
6
6
  base64Utils;
7
- constructor(config, base64Utils) {
7
+ captchaTemplate;
8
+ constructor(options) {
8
9
  super(ContentType.TEXT_HTML);
9
- this.config = config;
10
- this.base64Utils = base64Utils;
10
+ this.config = options.config;
11
+ this.base64Utils = options.base64Utils;
12
+ this.captchaTemplate = options.captchaTemplate || CAPTCHA_TEMPLATE;
11
13
  }
12
14
  createBlockBody(context) {
13
- return renderHtml(CAPTCHA_TEMPLATE, createBlockData(this.config, context, this.base64Utils));
15
+ return renderHtml(this.captchaTemplate, createBlockData(this.config, context, this.base64Utils));
14
16
  }
15
17
  }
@@ -2,10 +2,10 @@ import { BlockAction, createBlockData, JsonBlockerBase } from '../../../../block
2
2
  export class JsonCaptchaBlocker extends JsonBlockerBase {
3
3
  config;
4
4
  base64Utils;
5
- constructor(config, base64Utils) {
5
+ constructor(options) {
6
6
  super();
7
- this.config = config;
8
- this.base64Utils = base64Utils;
7
+ this.config = options.config;
8
+ this.base64Utils = options.base64Utils;
9
9
  }
10
10
  shouldBlock(context) {
11
11
  if (!this.config.advancedBlockingResponseEnabled) {
@@ -1,7 +1,7 @@
1
1
  import { MobileBlocker } from '../../../../blocker';
2
2
  import { CAPTCHA_TEMPLATE } from '../templates';
3
3
  export class MobileCaptchaBlocker extends MobileBlocker {
4
- constructor(config, base64Utils) {
5
- super(config, base64Utils, CAPTCHA_TEMPLATE);
4
+ constructor(options) {
5
+ super(options.config, options.base64Utils, options.captchaTemplate || CAPTCHA_TEMPLATE);
6
6
  }
7
7
  }
@@ -11,4 +11,4 @@ export const PUSH_DATA_FEATURE_HEADER_NAME = 'x-px-feature';
11
11
  export const EMAIL_ADDRESS_REGEX = /^[a-zA-Z0-9_+&*-]+(?:\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\.)+[a-zA-Z]{2,7}$/;
12
12
  export const URL_REGEX = /^(https?\:)\/\/(([^@\s:]+):?([^@\s]*)@)?(([^:\/?#]*)(?:\:([0-9]+))?)([\/]{0,1}[^?#]*)(\?[^#]*|)(#.*|)$/;
13
13
  export const REGEX_STRUCTURE = /^\/(.+?)\/([gimsuyvd]*)$/;
14
- export const CORE_MODULE_VERSION = 'JS Core 0.21.1';
14
+ export const CORE_MODULE_VERSION = 'JS Core 0.21.2';
@@ -3,10 +3,15 @@ import { IConfiguration } from '../../../config';
3
3
  import { IBase64Utils } from '../../../utils';
4
4
  import { IBlocker, IConditionalBlocker } from '../../../blocker';
5
5
  import { IMinimalResponse } from '../../../http';
6
+ export type DefaultBotDefenderBlockerConstructorOptions<Req, Res> = {
7
+ base64Utils: IBase64Utils;
8
+ } | {
9
+ captchaBlocker: IBlocker<Req, Res>;
10
+ };
6
11
  export declare class DefaultBotDefenderBlocker<Req, Res> implements IConditionalBlocker<Req, Res> {
7
12
  protected readonly config: IConfiguration<Req, Res>;
8
13
  protected readonly captchaBlocker: IBlocker<Req, Res>;
9
- constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
14
+ constructor(config: IConfiguration<Req, Res>, options: DefaultBotDefenderBlockerConstructorOptions<Req, Res>);
10
15
  shouldBlock({ action, reasons, productData }: ReadonlyContext<Req, Res>): boolean;
11
16
  createBlockResponse(context: ReadonlyContext<Req, Res>): IMinimalResponse;
12
17
  protected createRateLimitResponse(): IMinimalResponse;
@@ -1,16 +1,28 @@
1
1
  import { IConfiguration } from '../../../../config';
2
2
  import { ReadonlyContext } from '../../../../context';
3
- import { IBase64Utils } from '../../../../utils';
4
- import { IBlocker } from '../../../../blocker';
3
+ import { IBlocker, IConditionalBlocker } from '../../../../blocker';
5
4
  import { IMinimalResponse } from '../../../../http';
6
- import { JsonCaptchaBlocker } from './JsonCaptchaBlocker';
7
- import { MobileCaptchaBlocker } from './MobileCaptchaBlocker';
8
- import { HtmlCaptchaBlocker } from './HtmlCaptchaBlocker';
5
+ import { JsonCaptchaBlockerConstructorOptions } from './JsonCaptchaBlocker';
6
+ import { MobileCaptchaBlockerConstructorOptions } from './MobileCaptchaBlocker';
7
+ import { HtmlCaptchaBlockerConstructorOptions } from './HtmlCaptchaBlocker';
8
+ type JsonBlockerOptions<Req, Res> = {
9
+ jsonCaptchaBlocker: IConditionalBlocker<Req, Res>;
10
+ } | JsonCaptchaBlockerConstructorOptions<Req, Res>;
11
+ type MobileCaptchaBlockerOptions<Req, Res> = {
12
+ mobileCaptchaBlocker: IConditionalBlocker<Req, Res>;
13
+ } | MobileCaptchaBlockerConstructorOptions<Req, Res>;
14
+ type HtmlCaptchaBlockerOptions<Req, Res> = {
15
+ htmlCaptchaBlocker: IBlocker<Req, Res>;
16
+ } | HtmlCaptchaBlockerConstructorOptions<Req, Res>;
17
+ export type CaptchaBlockerConstructorOptions<Req, Res> = {
18
+ config: IConfiguration<Req, Res>;
19
+ } & JsonBlockerOptions<Req, Res> & MobileCaptchaBlockerOptions<Req, Res> & HtmlCaptchaBlockerOptions<Req, Res>;
9
20
  export declare class CaptchaBlocker<Req, Res> implements IBlocker<Req, Res> {
10
21
  protected readonly config: IConfiguration<Req, Res>;
11
- protected readonly jsonCaptchaBlocker: JsonCaptchaBlocker<Req, Res>;
12
- protected readonly mobileCaptchaBlocker: MobileCaptchaBlocker<Req, Res>;
13
- protected readonly htmlCaptchaBlocker: HtmlCaptchaBlocker<Req, Res>;
14
- constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
22
+ protected readonly jsonCaptchaBlocker: IConditionalBlocker<Req, Res>;
23
+ protected readonly mobileCaptchaBlocker: IConditionalBlocker<Req, Res>;
24
+ protected readonly htmlCaptchaBlocker: IBlocker<Req, Res>;
25
+ constructor(options: CaptchaBlockerConstructorOptions<Req, Res>);
15
26
  createBlockResponse(context: ReadonlyContext<Req, Res>): IMinimalResponse;
16
27
  }
28
+ export {};
@@ -2,9 +2,15 @@ import { IConfiguration } from '../../../../config';
2
2
  import { ReadonlyContext } from '../../../../context';
3
3
  import { IBase64Utils } from '../../../../utils';
4
4
  import { BlockerBase } from '../../../../blocker';
5
+ export type HtmlCaptchaBlockerConstructorOptions<Req, Res> = {
6
+ config: IConfiguration<Req, Res>;
7
+ base64Utils: IBase64Utils;
8
+ captchaTemplate?: string;
9
+ };
5
10
  export declare class HtmlCaptchaBlocker<Req, Res> extends BlockerBase<Req, Res> {
6
11
  protected readonly config: IConfiguration<Req, Res>;
7
12
  protected readonly base64Utils: IBase64Utils;
8
- constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
13
+ protected readonly captchaTemplate: string;
14
+ constructor(options: HtmlCaptchaBlockerConstructorOptions<Req, Res>);
9
15
  protected createBlockBody(context: ReadonlyContext<Req, Res>): string;
10
16
  }
@@ -3,10 +3,14 @@ import { ReadonlyContext } from '../../../../context';
3
3
  import { IConditionalBlocker, JsonBlockerBase } from '../../../../blocker';
4
4
  import { JsonCaptchaBlockPayload } from '../model';
5
5
  import { IBase64Utils } from '../../../../utils';
6
+ export type JsonCaptchaBlockerConstructorOptions<Req, Res> = {
7
+ config: IConfiguration<Req, Res>;
8
+ base64Utils: IBase64Utils;
9
+ };
6
10
  export declare class JsonCaptchaBlocker<Req, Res> extends JsonBlockerBase<Req, Res, JsonCaptchaBlockPayload> implements IConditionalBlocker<Req, Res> {
7
11
  protected readonly config: IConfiguration<Req, Res>;
8
12
  protected readonly base64Utils: IBase64Utils;
9
- constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
13
+ constructor(options: JsonCaptchaBlockerConstructorOptions<Req, Res>);
10
14
  shouldBlock(context: ReadonlyContext<Req, Res>): boolean;
11
15
  protected createJsonPayload(context: ReadonlyContext<Req, Res>): JsonCaptchaBlockPayload;
12
16
  }
@@ -1,6 +1,11 @@
1
1
  import { IConfiguration } from '../../../../config';
2
2
  import { IBase64Utils } from '../../../../utils';
3
3
  import { MobileBlocker } from '../../../../blocker';
4
+ export type MobileCaptchaBlockerConstructorOptions<Req, Res> = {
5
+ config: IConfiguration<Req, Res>;
6
+ base64Utils: IBase64Utils;
7
+ captchaTemplate?: string;
8
+ };
4
9
  export declare class MobileCaptchaBlocker<Req, Res> extends MobileBlocker<Req, Res> {
5
- constructor(config: IConfiguration<Req, Res>, base64Utils: IBase64Utils);
10
+ constructor(options: MobileCaptchaBlockerConstructorOptions<Req, Res>);
6
11
  }
@@ -11,4 +11,4 @@ export declare const PUSH_DATA_FEATURE_HEADER_NAME = "x-px-feature";
11
11
  export declare const EMAIL_ADDRESS_REGEX: RegExp;
12
12
  export declare const URL_REGEX: RegExp;
13
13
  export declare const REGEX_STRUCTURE: RegExp;
14
- export declare const CORE_MODULE_VERSION = "JS Core 0.21.1";
14
+ export declare const CORE_MODULE_VERSION = "JS Core 0.21.2";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perimeterx-js-core",
3
- "version": "0.21.1",
3
+ "version": "0.21.2",
4
4
  "description": "",
5
5
  "type": "module",
6
6
  "typesVersions": {
@@ -48,7 +48,7 @@
48
48
  "js-base64": "^3.7.2",
49
49
  "phin": "^3.7.0",
50
50
  "ts-essentials": "^10.0.0",
51
- "uuid": "^9.0.0"
51
+ "uuid": "^10.0.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "@types/chai": "^4.3.3",
@@ -56,7 +56,7 @@
56
56
  "@types/crypto-js": "^4.1.1",
57
57
  "@types/mocha": "^10.0.0",
58
58
  "@types/sinon": "^17.0.1",
59
- "@types/uuid": "^9.0.2",
59
+ "@types/uuid": "^10.0.0",
60
60
  "@typescript-eslint/eslint-plugin": "^5.40.0",
61
61
  "@typescript-eslint/parser": "^5.40.0",
62
62
  "chai": "^4.3.6",