@qrvey/utils 1.15.0-9 → 1.16.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/dist/cjs/columns/constants/COLUMN_ICON.js +32 -32
  2. package/dist/cjs/columns/helpers/index.d.ts +1 -0
  3. package/dist/cjs/columns/helpers/index.js +1 -0
  4. package/dist/cjs/columns/helpers/isNumericalColumn.d.ts +1 -1
  5. package/dist/cjs/columns/helpers/isNumericalColumn.js +1 -1
  6. package/dist/cjs/columns/helpers/isStringColumn.d.ts +7 -0
  7. package/dist/cjs/columns/helpers/isStringColumn.js +19 -0
  8. package/dist/cjs/dates/constants/DATE_DISTINCT_PROPERTY.d.ts +2 -1
  9. package/dist/cjs/dates/constants/DATE_DISTINCT_PROPERTY.js +1 -0
  10. package/dist/cjs/dates/relative/RelativeStatementAdapter.js +2 -1
  11. package/dist/cjs/elements/helpers/fixed.d.ts +96 -0
  12. package/dist/cjs/elements/helpers/fixed.js +248 -0
  13. package/dist/cjs/elements/helpers/gridStrategy.d.ts +29 -0
  14. package/dist/cjs/elements/helpers/gridStrategy.js +83 -0
  15. package/dist/cjs/elements/helpers/index.d.ts +3 -0
  16. package/dist/cjs/elements/helpers/index.js +22 -0
  17. package/dist/cjs/elements/helpers/responsive.d.ts +87 -0
  18. package/dist/cjs/elements/helpers/responsive.js +166 -0
  19. package/dist/cjs/elements/index.d.ts +2 -0
  20. package/dist/cjs/elements/index.js +18 -0
  21. package/dist/cjs/elements/interfaces/ICanvasGrid.d.ts +5 -0
  22. package/dist/cjs/elements/interfaces/ICanvasGrid.js +9 -0
  23. package/dist/cjs/elements/interfaces/IFixedPosition.d.ts +5 -0
  24. package/dist/cjs/elements/interfaces/IFixedPosition.js +2 -0
  25. package/dist/cjs/elements/interfaces/IVemCore.d.ts +29 -0
  26. package/dist/cjs/elements/interfaces/IVemCore.js +3 -0
  27. package/dist/cjs/elements/interfaces/IVemPosition.d.ts +44 -0
  28. package/dist/cjs/elements/interfaces/IVemPosition.js +8 -0
  29. package/dist/cjs/elements/interfaces/index.d.ts +4 -0
  30. package/dist/cjs/elements/interfaces/index.js +20 -0
  31. package/dist/cjs/elements/utils/element.d.ts +4 -0
  32. package/dist/cjs/elements/utils/element.js +28 -0
  33. package/dist/cjs/elements/utils/fixed.position.d.ts +12 -0
  34. package/dist/cjs/elements/utils/fixed.position.js +86 -0
  35. package/dist/cjs/elements/utils/general.d.ts +15 -0
  36. package/dist/cjs/elements/utils/general.js +20 -0
  37. package/dist/cjs/elements/utils/overlap.d.ts +63 -0
  38. package/dist/cjs/elements/utils/overlap.js +99 -0
  39. package/dist/cjs/elements/utils/position.d.ts +4 -0
  40. package/dist/cjs/elements/utils/position.js +5 -0
  41. package/dist/cjs/filters/adapters/FDToLogic.js +2 -1
  42. package/dist/cjs/filters/helpers/backend/buildExpression.js +1 -0
  43. package/dist/cjs/filters/helpers/backend/buildFilters.d.ts +5 -0
  44. package/dist/cjs/filters/helpers/backend/buildFilters.js +23 -1
  45. package/dist/cjs/filters/helpers/backend/getBackendValues.js +4 -1
  46. package/dist/cjs/filters/helpers/getAvailableScopesIDsByConfig.js +1 -0
  47. package/dist/cjs/filters/interfaces/backend/IFBExpression.js +0 -1
  48. package/dist/cjs/general/array/getUniqueSimpleArray.d.ts +6 -0
  49. package/dist/cjs/general/array/getUniqueSimpleArray.js +14 -0
  50. package/dist/cjs/general/array/index.d.ts +1 -0
  51. package/dist/cjs/general/array/index.js +1 -0
  52. package/dist/cjs/general/string/index.d.ts +4 -0
  53. package/dist/cjs/general/string/index.js +4 -0
  54. package/dist/cjs/general/string/secureHTML.d.ts +8 -0
  55. package/dist/cjs/general/string/secureHTML.js +13 -0
  56. package/dist/cjs/general/string/strategies/XSSEstrictedSanitizer.d.ts +8 -0
  57. package/dist/cjs/general/string/strategies/XSSEstrictedSanitizer.js +23 -0
  58. package/dist/cjs/general/string/strategies/XSSSanitizer.d.ts +8 -0
  59. package/dist/cjs/general/string/strategies/XSSSanitizer.js +19 -0
  60. package/dist/cjs/general/string/urlValidator.d.ts +10 -0
  61. package/dist/cjs/general/string/urlValidator.js +38 -0
  62. package/dist/cjs/globalization/helpers/getI18nDateGroupLabel.d.ts +6 -0
  63. package/dist/cjs/globalization/helpers/getI18nDateGroupLabel.js +120 -0
  64. package/dist/cjs/globalization/interfaces/chart_builder/II18nChartBuilderSorting.d.ts +2 -0
  65. package/dist/cjs/globalization/interfaces/export/II18nExportingModal.d.ts +6 -0
  66. package/dist/cjs/globalization/interfaces/export/II18nExportingModalApplyButtonLabel.d.ts +1 -0
  67. package/dist/cjs/globalization/labels/chart_builder/I18N_CHART_BUILDER_GENERAL_OPTIONS.js +2 -0
  68. package/dist/cjs/globalization/labels/export/I18N_EXPORT_MODAL.js +10 -1
  69. package/dist/cjs/index.d.ts +1 -0
  70. package/dist/cjs/index.js +1 -0
  71. package/dist/cjs/interfaces/SatinizerStrategy.d.ts +3 -0
  72. package/dist/cjs/interfaces/SatinizerStrategy.js +2 -0
  73. package/dist/cjs/themes/constants/AUTOMATIC_GLOBAL_CSS_VARIABLES_FOR_LIGHT.js +3 -3
  74. package/dist/columns/constants/COLUMN_ICON.js +32 -32
  75. package/dist/columns/helpers/index.d.ts +1 -0
  76. package/dist/columns/helpers/index.js +1 -0
  77. package/dist/columns/helpers/isNumericalColumn.d.ts +1 -1
  78. package/dist/columns/helpers/isNumericalColumn.js +1 -1
  79. package/dist/columns/helpers/isStringColumn.d.ts +7 -0
  80. package/dist/columns/helpers/isStringColumn.js +15 -0
  81. package/dist/dates/constants/DATE_DISTINCT_PROPERTY.d.ts +2 -1
  82. package/dist/dates/constants/DATE_DISTINCT_PROPERTY.js +1 -0
  83. package/dist/dates/relative/RelativeStatementAdapter.js +2 -1
  84. package/dist/elements/helpers/fixed.d.ts +96 -0
  85. package/dist/elements/helpers/fixed.js +236 -0
  86. package/dist/elements/helpers/gridStrategy.d.ts +29 -0
  87. package/dist/elements/helpers/gridStrategy.js +78 -0
  88. package/dist/elements/helpers/index.d.ts +3 -0
  89. package/dist/elements/helpers/index.js +3 -0
  90. package/dist/elements/helpers/responsive.d.ts +87 -0
  91. package/dist/elements/helpers/responsive.js +155 -0
  92. package/dist/elements/index.d.ts +2 -0
  93. package/dist/elements/index.js +2 -0
  94. package/dist/elements/interfaces/ICanvasGrid.d.ts +5 -0
  95. package/dist/elements/interfaces/ICanvasGrid.js +6 -0
  96. package/dist/elements/interfaces/IFixedPosition.d.ts +5 -0
  97. package/dist/elements/interfaces/IFixedPosition.js +1 -0
  98. package/dist/elements/interfaces/IVemCore.d.ts +29 -0
  99. package/dist/elements/interfaces/IVemCore.js +1 -0
  100. package/dist/elements/interfaces/IVemPosition.d.ts +44 -0
  101. package/dist/elements/interfaces/IVemPosition.js +5 -0
  102. package/dist/elements/interfaces/index.d.ts +4 -0
  103. package/dist/elements/interfaces/index.js +4 -0
  104. package/dist/elements/utils/element.d.ts +4 -0
  105. package/dist/elements/utils/element.js +24 -0
  106. package/dist/elements/utils/fixed.position.d.ts +12 -0
  107. package/dist/elements/utils/fixed.position.js +72 -0
  108. package/dist/elements/utils/general.d.ts +15 -0
  109. package/dist/elements/utils/general.js +16 -0
  110. package/dist/elements/utils/overlap.d.ts +63 -0
  111. package/dist/elements/utils/overlap.js +95 -0
  112. package/dist/elements/utils/position.d.ts +4 -0
  113. package/dist/elements/utils/position.js +1 -0
  114. package/dist/filters/adapters/FDToLogic.js +2 -1
  115. package/dist/filters/helpers/backend/buildExpression.js +1 -0
  116. package/dist/filters/helpers/backend/buildFilters.d.ts +5 -0
  117. package/dist/filters/helpers/backend/buildFilters.js +23 -1
  118. package/dist/filters/helpers/backend/getBackendValues.js +4 -1
  119. package/dist/filters/helpers/getAvailableScopesIDsByConfig.js +1 -0
  120. package/dist/filters/interfaces/backend/IFBExpression.js +0 -1
  121. package/dist/general/array/getUniqueSimpleArray.d.ts +6 -0
  122. package/dist/general/array/getUniqueSimpleArray.js +10 -0
  123. package/dist/general/array/index.d.ts +1 -0
  124. package/dist/general/array/index.js +1 -0
  125. package/dist/general/string/index.d.ts +4 -0
  126. package/dist/general/string/index.js +4 -0
  127. package/dist/general/string/secureHTML.d.ts +8 -0
  128. package/dist/general/string/secureHTML.js +9 -0
  129. package/dist/general/string/strategies/XSSEstrictedSanitizer.d.ts +8 -0
  130. package/dist/general/string/strategies/XSSEstrictedSanitizer.js +19 -0
  131. package/dist/general/string/strategies/XSSSanitizer.d.ts +8 -0
  132. package/dist/general/string/strategies/XSSSanitizer.js +15 -0
  133. package/dist/general/string/urlValidator.d.ts +10 -0
  134. package/dist/general/string/urlValidator.js +34 -0
  135. package/dist/globalization/helpers/getI18nDateGroupLabel.d.ts +6 -0
  136. package/dist/globalization/helpers/getI18nDateGroupLabel.js +120 -0
  137. package/dist/globalization/interfaces/chart_builder/II18nChartBuilderSorting.d.ts +2 -0
  138. package/dist/globalization/interfaces/export/II18nExportingModal.d.ts +6 -0
  139. package/dist/globalization/interfaces/export/II18nExportingModalApplyButtonLabel.d.ts +1 -0
  140. package/dist/globalization/labels/chart_builder/I18N_CHART_BUILDER_GENERAL_OPTIONS.js +2 -0
  141. package/dist/globalization/labels/export/I18N_EXPORT_MODAL.js +10 -1
  142. package/dist/index.d.ts +1 -0
  143. package/dist/index.js +1 -0
  144. package/dist/interfaces/SatinizerStrategy.d.ts +3 -0
  145. package/dist/interfaces/SatinizerStrategy.js +1 -0
  146. package/dist/themes/constants/AUTOMATIC_GLOBAL_CSS_VARIABLES_FOR_LIGHT.js +3 -3
  147. package/package.json +3 -2
@@ -0,0 +1,63 @@
1
+ interface OverlapNode {
2
+ startX: number;
3
+ endX: number;
4
+ startY: number;
5
+ endY: number;
6
+ maxEndX: number;
7
+ maxEndY: number;
8
+ left?: OverlapNode;
9
+ right?: OverlapNode;
10
+ }
11
+ /**
12
+ *
13
+ */
14
+ export declare class OverlapIntervalTree {
15
+ root?: OverlapNode;
16
+ /**
17
+ *
18
+ */
19
+ constructor();
20
+ /**
21
+ *
22
+ * @param startX
23
+ * @param endX
24
+ * @param startY
25
+ * @param endY
26
+ */
27
+ insert(startX: number, endX: number, startY: number, endY: number): void;
28
+ /**
29
+ *
30
+ * @param startX
31
+ * @param endX
32
+ * @param startY
33
+ * @param endY
34
+ */
35
+ private _initNode;
36
+ /**
37
+ *
38
+ * @param node
39
+ * @param startX
40
+ * @param endX
41
+ * @param startY
42
+ * @param endY
43
+ */
44
+ private _insert;
45
+ /**
46
+ *
47
+ * @param startX
48
+ * @param endX
49
+ * @param startY
50
+ * @param endY
51
+ */
52
+ overlaps(startX: number, endX: number, startY: number, endY: number): boolean;
53
+ /**
54
+ *
55
+ * @param node
56
+ * @param startX
57
+ * @param endX
58
+ * @param startY
59
+ * @param endY
60
+ */
61
+ private _overlaps;
62
+ }
63
+ export {};
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OverlapIntervalTree = void 0;
4
+ /**
5
+ *
6
+ */
7
+ class OverlapIntervalTree {
8
+ /**
9
+ *
10
+ */
11
+ constructor() {
12
+ this.root = undefined;
13
+ }
14
+ /**
15
+ *
16
+ * @param startX
17
+ * @param endX
18
+ * @param startY
19
+ * @param endY
20
+ */
21
+ insert(startX, endX, startY, endY) {
22
+ this.root = this._insert(this.root, startX, endX, startY, endY);
23
+ }
24
+ /**
25
+ *
26
+ * @param startX
27
+ * @param endX
28
+ * @param startY
29
+ * @param endY
30
+ */
31
+ _initNode(startX, endX, startY, endY) {
32
+ return {
33
+ startX,
34
+ endX,
35
+ startY,
36
+ endY,
37
+ maxEndX: endX,
38
+ maxEndY: endY,
39
+ left: undefined,
40
+ right: undefined,
41
+ };
42
+ }
43
+ /**
44
+ *
45
+ * @param node
46
+ * @param startX
47
+ * @param endX
48
+ * @param startY
49
+ * @param endY
50
+ */
51
+ _insert(node, startX, endX, startY, endY) {
52
+ if (node === undefined) {
53
+ return this._initNode(startX, endX, startY, endY);
54
+ }
55
+ if (startY < node.startY) {
56
+ node.left = this._insert(node.left, startX, endX, startY, endY);
57
+ }
58
+ else {
59
+ node.right = this._insert(node.right, startX, endX, startY, endY);
60
+ }
61
+ node.maxEndX = Math.max(node.maxEndX, endX);
62
+ node.maxEndY = Math.max(node.maxEndY, endY);
63
+ return node;
64
+ }
65
+ /**
66
+ *
67
+ * @param startX
68
+ * @param endX
69
+ * @param startY
70
+ * @param endY
71
+ */
72
+ overlaps(startX, endX, startY, endY) {
73
+ return this._overlaps(this.root, startX, endX, startY, endY);
74
+ }
75
+ /**
76
+ *
77
+ * @param node
78
+ * @param startX
79
+ * @param endX
80
+ * @param startY
81
+ * @param endY
82
+ */
83
+ _overlaps(node, startX, endX, startY, endY) {
84
+ if (node === undefined) {
85
+ return false;
86
+ }
87
+ if (startX <= node.endX &&
88
+ endX >= node.startX &&
89
+ startY <= node.endY &&
90
+ endY >= node.startY) {
91
+ return true;
92
+ }
93
+ if (node.left !== undefined && node.left.maxEndY >= startY) {
94
+ return this._overlaps(node.left, startX, endX, startY, endY);
95
+ }
96
+ return this._overlaps(node.right, startX, endX, startY, endY);
97
+ }
98
+ }
99
+ exports.OverlapIntervalTree = OverlapIntervalTree;
@@ -0,0 +1,4 @@
1
+ import { CanvasDevice } from "../interfaces/ICanvasGrid";
2
+ import { Vem } from "../interfaces/IVemCore";
3
+ import { VemPosition, VemPositionType } from "../interfaces/IVemPosition";
4
+ export declare const setElementPosition: <T extends VemPositionType = VemPositionType>(baseElement: Vem<unknown, T>, type: T, device: CanvasDevice, position: VemPosition) => Vem<unknown, T>;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setElementPosition = void 0;
4
+ const setElementPosition = (baseElement, type, device, position) => (Object.assign(Object.assign({}, baseElement), { position: Object.assign(Object.assign({}, baseElement.position), { [type]: Object.assign(Object.assign({}, baseElement.position[type]), { [device]: position }) }) }));
5
+ exports.setElementPosition = setElementPosition;
@@ -38,7 +38,8 @@ function getLogicBodyFromFD21(filterData) {
38
38
  filters = filters.concat(expressions);
39
39
  });
40
40
  }
41
- logics.push(Object.assign(Object.assign({}, logic), { filters }));
41
+ if (!(0, isEmpty_1.isEmpty)(filters))
42
+ logics.push(Object.assign(Object.assign({}, logic), { filters }));
42
43
  return logics;
43
44
  }, []);
44
45
  }
@@ -16,6 +16,7 @@ function buildExpression(filter) {
16
16
  const expression = {
17
17
  groupValue: (0, getBackendGroupValue_1.getBackendGroupValue)(filter),
18
18
  questionid: filter.column.id,
19
+ qrveyid: filter.column.qrveyid,
19
20
  questionType: filter.column.type,
20
21
  property: (0, getBackendProperty_1.getBackendProperty)(filter),
21
22
  validationType: (0, getBackendValidator_1.getBackendValidator)(filter),
@@ -1,3 +1,8 @@
1
1
  import { IFBFilter } from "../../interfaces/backend/IFBFilter";
2
2
  import { IFSFilter } from "../../interfaces/common/IFSFilter";
3
+ /**
4
+ *
5
+ * @param filters
6
+ * @param groupColumns
7
+ */
3
8
  export declare function buildFilters(filters: IFSFilter[], groupColumns?: boolean): IFBFilter[];
@@ -1,10 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildFilters = void 0;
4
+ const buildExpression_1 = require("./buildExpression");
4
5
  const isEmpty_1 = require("../../../general/mix/isEmpty");
5
6
  const hasProperty_1 = require("../../../general/object/hasProperty");
6
7
  const FILTER_OPERATOR_1 = require("../../constants/common/FILTER_OPERATOR");
7
- const buildExpression_1 = require("./buildExpression");
8
+ /**
9
+ *
10
+ * @param filters
11
+ * @param groupColumns
12
+ */
8
13
  function buildFilters(filters, groupColumns = false) {
9
14
  const expression = numericExpression(filters, groupColumns);
10
15
  const orOperators = expression.split("+");
@@ -28,6 +33,8 @@ function buildFilters(filters, groupColumns = false) {
28
33
  return getColumnExpressions(group, getFilter);
29
34
  })
30
35
  .filter(Boolean);
36
+ if ((0, isEmpty_1.isEmpty)(expressions))
37
+ return [];
31
38
  if (orOperators.length > 1) {
32
39
  return [
33
40
  {
@@ -42,6 +49,11 @@ function buildFilters(filters, groupColumns = false) {
42
49
  return [{ operator: FILTER_OPERATOR_1.FILTER_OPERATOR.AND, expressions }];
43
50
  }
44
51
  exports.buildFilters = buildFilters;
52
+ /**
53
+ *
54
+ * @param group
55
+ * @param getFilter
56
+ */
45
57
  function getColumnExpressions(group, getFilter) {
46
58
  const columnOrOperators = group.split("/");
47
59
  if (columnOrOperators.length > 1) {
@@ -54,12 +66,22 @@ function getColumnExpressions(group, getFilter) {
54
66
  }
55
67
  return getFilter(group);
56
68
  }
69
+ /**
70
+ *
71
+ * @param operator
72
+ * @param priority
73
+ */
57
74
  function logicToNumeric(operator, priority = false) {
58
75
  if (operator === FILTER_OPERATOR_1.FILTER_OPERATOR.AND) {
59
76
  return "*";
60
77
  }
61
78
  return priority ? "/" : "+";
62
79
  }
80
+ /**
81
+ *
82
+ * @param filters
83
+ * @param groupColumns
84
+ */
63
85
  function numericExpression(filters, groupColumns = false) {
64
86
  let expression = "";
65
87
  filters.forEach((item, index) => {
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getBackendValues = void 0;
4
4
  const COLUMN_1 = require("../../../columns/constants/COLUMN");
5
5
  const flattenDeep_1 = require("../../../general/array/flattenDeep");
6
+ const isEmpty_1 = require("../../../general/mix/isEmpty");
6
7
  const FILTER_VALIDATOR_1 = require("../../constants/common/FILTER_VALIDATOR");
7
8
  const FILTER_VALIDATOR_INFO_1 = require("../../constants/common/FILTER_VALIDATOR_INFO");
8
9
  const isRankingFilter_1 = require("../common/isRankingFilter");
@@ -86,7 +87,9 @@ function getNullValues(values, filter) {
86
87
  return addValue ? [FILTER_VALIDATOR_INFO_1.FILTER_VALIDATOR_INFO[filter.validator].label] : [];
87
88
  }
88
89
  function getInValues(values) {
89
- return values.map((value) => getValue(value, value)).filter(Boolean);
90
+ return values
91
+ .map((value) => (Object.assign(Object.assign({}, getValue(value, value)), { anchor: (0, isEmpty_1.isEmpty)(value.anchor) ? undefined : value.anchor })))
92
+ .filter(Boolean);
90
93
  }
91
94
  function getValue(objectValue, value) {
92
95
  return objectValue.enabled ? value : undefined;
@@ -15,6 +15,7 @@ function getAvailableScopesIDsByConfig(config = {}) {
15
15
  tabid: (0, getAttribute_1.getAttribute)(config, "tab_id") || config.tabid,
16
16
  pageid: (0, getAttribute_1.getAttribute)(config, "page_id") || config.pageid,
17
17
  defaultid: (0, getAttribute_1.getAttribute)(config, "default_id") || config.defaultid,
18
+ panelid: (0, getAttribute_1.getAttribute)(config, "panel_id") || config.panelid,
18
19
  };
19
20
  }
20
21
  exports.getAvailableScopesIDsByConfig = getAvailableScopesIDsByConfig;
@@ -4,4 +4,3 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  //
5
5
  // formulaType?: string;
6
6
  // linkid?: string;
7
- // qrveyid?: string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Get unique vaues from an Array of primitive JS types
3
+ * @param arr Array of primitive types
4
+ * @returns the new array with unique items
5
+ */
6
+ export declare function getUniqueSimpleArray<T = unknown>(arr: T[]): T[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getUniqueSimpleArray = void 0;
4
+ /**
5
+ * Get unique vaues from an Array of primitive JS types
6
+ * @param arr Array of primitive types
7
+ * @returns the new array with unique items
8
+ */
9
+ function getUniqueSimpleArray(arr) {
10
+ if (!Array.isArray(arr))
11
+ return arr;
12
+ return Array.from(new Set(arr));
13
+ }
14
+ exports.getUniqueSimpleArray = getUniqueSimpleArray;
@@ -5,6 +5,7 @@ export * from "./getArrayByProperty";
5
5
  export * from "./filterNestedTree";
6
6
  export * from "./getFirstIndexFromArray";
7
7
  export * from "./getUniqueArray";
8
+ export * from "./getUniqueSimpleArray";
8
9
  export * from "./howManyByParam";
9
10
  export * from "./getLastIndexFromArray";
10
11
  export * from "./intersectObjectArrays";
@@ -21,6 +21,7 @@ __exportStar(require("./getArrayByProperty"), exports);
21
21
  __exportStar(require("./filterNestedTree"), exports);
22
22
  __exportStar(require("./getFirstIndexFromArray"), exports);
23
23
  __exportStar(require("./getUniqueArray"), exports);
24
+ __exportStar(require("./getUniqueSimpleArray"), exports);
24
25
  __exportStar(require("./howManyByParam"), exports);
25
26
  __exportStar(require("./getLastIndexFromArray"), exports);
26
27
  __exportStar(require("./intersectObjectArrays"), exports);
@@ -2,3 +2,7 @@ export * from "./capitalize";
2
2
  export * from "./padLeadingZeros";
3
3
  export * from "./parseUrl";
4
4
  export * from "./camelize";
5
+ export * from "./secureHTML";
6
+ export * from "./strategies/XSSSanitizer";
7
+ export * from "./strategies/XSSEstrictedSanitizer";
8
+ export * from "./urlValidator";
@@ -18,3 +18,7 @@ __exportStar(require("./capitalize"), exports);
18
18
  __exportStar(require("./padLeadingZeros"), exports);
19
19
  __exportStar(require("./parseUrl"), exports);
20
20
  __exportStar(require("./camelize"), exports);
21
+ __exportStar(require("./secureHTML"), exports);
22
+ __exportStar(require("./strategies/XSSSanitizer"), exports);
23
+ __exportStar(require("./strategies/XSSEstrictedSanitizer"), exports);
24
+ __exportStar(require("./urlValidator"), exports);
@@ -0,0 +1,8 @@
1
+ import { SanitizerStrategy } from "../../interfaces/SatinizerStrategy";
2
+ /**
3
+ * Sanitizes HTML using the provided strategy.
4
+ * @param {string} html - HTML to sanitize.
5
+ * @param {SanitizerStrategy} sanitizer - Sanitization strategy.
6
+ * @returns {string} - Sanitized HTML.
7
+ */
8
+ export declare const secureHTML: (html: string, sanitizer: SanitizerStrategy) => string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.secureHTML = void 0;
4
+ /**
5
+ * Sanitizes HTML using the provided strategy.
6
+ * @param {string} html - HTML to sanitize.
7
+ * @param {SanitizerStrategy} sanitizer - Sanitization strategy.
8
+ * @returns {string} - Sanitized HTML.
9
+ */
10
+ const secureHTML = (html, sanitizer) => {
11
+ return sanitizer.sanitize(html);
12
+ };
13
+ exports.secureHTML = secureHTML;
@@ -0,0 +1,8 @@
1
+ import { IFilterXSSOptions } from "xss";
2
+ import { SanitizerStrategy } from "../../../interfaces/SatinizerStrategy";
3
+ export declare class XSSEstrictedSanitizer implements SanitizerStrategy {
4
+ private attributesBlackList;
5
+ private options;
6
+ constructor(options?: IFilterXSSOptions, attributesBlackList?: string[]);
7
+ sanitize(html: string): string;
8
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XSSEstrictedSanitizer = void 0;
4
+ const xss_1 = require("xss");
5
+ class XSSEstrictedSanitizer {
6
+ constructor(options, attributesBlackList = []) {
7
+ this.attributesBlackList = attributesBlackList;
8
+ this.options = Object.assign({ css: false, onIgnoreTagAttr: (_tag, name, value) => {
9
+ if (this.attributesBlackList.includes(name)) {
10
+ return ""; // Elimina el atributo si está en la lista negra
11
+ }
12
+ return `${name}="${value}"`; // Mantiene el atributo si no está en la lista negra
13
+ }, onIgnoreTag: (tag, _html, _options) => {
14
+ if (["script", "iframe"].includes(tag)) {
15
+ return ""; // Elimina los <script>
16
+ }
17
+ }, escapeHtml: (str) => str }, options);
18
+ }
19
+ sanitize(html) {
20
+ return (0, xss_1.filterXSS)(html, this.options);
21
+ }
22
+ }
23
+ exports.XSSEstrictedSanitizer = XSSEstrictedSanitizer;
@@ -0,0 +1,8 @@
1
+ import { IFilterXSSOptions } from "xss";
2
+ import { SanitizerStrategy } from "../../../interfaces/SatinizerStrategy";
3
+ export declare class XSSSanitizer implements SanitizerStrategy {
4
+ private attributesBlackList;
5
+ private options;
6
+ constructor(options?: IFilterXSSOptions, attributesBlackList?: string[]);
7
+ sanitize(html: string): string;
8
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XSSSanitizer = void 0;
4
+ const xss_1 = require("xss");
5
+ class XSSSanitizer {
6
+ constructor(options, attributesBlackList = []) {
7
+ this.attributesBlackList = attributesBlackList;
8
+ this.options = Object.assign({ css: false, onIgnoreTagAttr: (tag, name, value) => {
9
+ if (!this.attributesBlackList.includes(name)) {
10
+ return `${name}="${value}"`;
11
+ }
12
+ return "";
13
+ } }, options);
14
+ }
15
+ sanitize(html) {
16
+ return (0, xss_1.filterXSS)(html, this.options);
17
+ }
18
+ }
19
+ exports.XSSSanitizer = XSSSanitizer;
@@ -0,0 +1,10 @@
1
+ export declare class URLValidator {
2
+ private validDomains;
3
+ private validProtocols;
4
+ constructor(domains?: string[], protocols?: string[]);
5
+ setValidDomains(domains?: string[]): this;
6
+ setValidProtocols(protocols?: string[]): this;
7
+ validate(url: string): boolean;
8
+ private isValidProtocol;
9
+ private isValidDomain;
10
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.URLValidator = void 0;
4
+ class URLValidator {
5
+ constructor(domains = [], protocols = ["http", "https"]) {
6
+ this.validDomains = domains;
7
+ this.validProtocols = protocols;
8
+ }
9
+ setValidDomains(domains = []) {
10
+ this.validDomains = domains;
11
+ return this;
12
+ }
13
+ setValidProtocols(protocols = []) {
14
+ this.validProtocols = protocols;
15
+ return this;
16
+ }
17
+ validate(url) {
18
+ try {
19
+ const urlObj = new URL(url);
20
+ return (this.isValidProtocol(urlObj.protocol) &&
21
+ (this.validDomains.length === 0 || this.isValidDomain(urlObj.hostname)));
22
+ }
23
+ catch (_a) {
24
+ return false;
25
+ }
26
+ }
27
+ isValidProtocol(protocol) {
28
+ const normalizedProtocol = protocol.replace(":", "").toLowerCase();
29
+ return this.validProtocols.includes(normalizedProtocol);
30
+ }
31
+ isValidDomain(domain) {
32
+ if (this.validDomains.length === 0) {
33
+ return true;
34
+ }
35
+ return this.validDomains.some((validDomain) => domain.endsWith(validDomain));
36
+ }
37
+ }
38
+ exports.URLValidator = URLValidator;
@@ -1,3 +1,9 @@
1
1
  import { IDateColumnPropertyType } from "../../columns/interfaces/IDateColumnPropertyType";
2
2
  import { II18nServiceTranslate } from "../interfaces/II18nServiceTranslate";
3
+ /**
4
+ *
5
+ * @param label
6
+ * @param dateGroup
7
+ * @param translate
8
+ */
3
9
  export declare function getI18nDateGroupLabel(label: string, dateGroup: IDateColumnPropertyType, translate?: II18nServiceTranslate): string;