@nokecy/qc-ui 1.1.36 → 1.1.38
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.
- package/README.md +25 -25
- package/dist/cjs/ConfirmPro/index.js +4 -4
- package/dist/cjs/RuleBuilder/LogicSelector.js +7 -7
- package/dist/cjs/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/cjs/RuleBuilder/RuleCard.js +6 -6
- package/dist/cjs/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/cjs/RuleBuilder/constants/operators.js +18 -18
- package/dist/cjs/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/cjs/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/cjs/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/cjs/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/cjs/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/cjs/RuleBuilder/styles/index.module.less +443 -443
- package/dist/cjs/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/cjs/RuleBuilder/types/index.js +42 -42
- package/dist/cjs/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/cjs/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/cjs/RuleBuilder/utils/validation.js +22 -22
- package/dist/cjs/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/cjs/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/cjs/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/cjs/ag-grid-plus/ag-gridPlus.js +83 -89
- package/dist/cjs/ag-grid-plus/context/gridContext.d.ts +1 -5
- package/dist/cjs/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/cjs/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/cjs/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/cjs/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/cjs/ag-grid-plus/errors/types.js +14 -14
- package/dist/cjs/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/cjs/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/cjs/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/cjs/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/cjs/ag-grid-plus/index.less +50 -50
- package/dist/cjs/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/cjs/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/cjs/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/cjs/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/cjs/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/cjs/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/cjs/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/cjs/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/cjs/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/cjs/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/cjs/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/cjs/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/cjs/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/cjs/ag-grid-plus/theme.js +3 -3
- package/dist/cjs/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/cjs/ag-grid-plus/types.d.ts +2 -22
- package/dist/cjs/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/cjs/ag-grid-plus/utils/constants.js +22 -22
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
- package/dist/cjs/ag-grid-plus/utils/entityExtensionColumns.js +22 -20
- package/dist/cjs/ag-grid-plus/utils/logger.js +2 -2
- package/dist/cjs/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/cjs/ag-grid-plus/utils.js +3 -3
- package/dist/cjs/array-table/columnHelper.js +43 -43
- package/dist/cjs/array-table/hooks.js +11 -9
- package/dist/cjs/array-table/index.js +40 -41
- package/dist/cjs/array-table/utils.js +4 -3
- package/dist/cjs/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/cjs/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/cjs/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/cjs/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/cjs/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/cjs/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/cjs/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/cjs/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/cjs/components/RegexEditor/templates/storage.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/cjs/components/RegexEditor/templates/types.js +74 -74
- package/dist/cjs/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/cjs/components/RegexEditor/validation/parser.js +47 -47
- package/dist/cjs/components/RegexEditor/validation/validator.js +54 -54
- package/dist/cjs/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/cjs/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/cjs/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/cjs/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/cjs/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/cjs/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/cjs/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/cjs/dashboard/dashboard/index.less +173 -173
- package/dist/cjs/dashboard/dashboard/utils.js +4 -4
- package/dist/cjs/dashboard/utils.js +8 -8
- package/dist/cjs/dashboard/widget/index.less +7 -7
- package/dist/cjs/dashboard/widget/selector/index.less +172 -172
- package/dist/cjs/deleteConfirm/index.js +17 -17
- package/dist/cjs/draggableModal/index.js +4 -4
- package/dist/cjs/draggableModal/style.less +122 -122
- package/dist/cjs/editable/index.js +16 -1
- package/dist/cjs/formDesigner/arrayTable/styles.less +2 -2
- package/dist/cjs/formDesigner/index.less +2 -2
- package/dist/cjs/fullScreenAlert/index.js +13 -13
- package/dist/cjs/fullScreenAlert/index.less +133 -133
- package/dist/cjs/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/cjs/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/cjs/generatedListPage/OptionsColumn.js +3 -3
- package/dist/cjs/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/cjs/generatedListPage/RequestManager.js +39 -39
- package/dist/cjs/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/cjs/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/cjs/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/cjs/generatedListPage/useRequestManager.js +20 -20
- package/dist/cjs/importModal/index.js +4 -4
- package/dist/cjs/standardFormDialog/FormValidation.js +45 -45
- package/dist/cjs/standardFormDialog/PortalManager.js +46 -46
- package/dist/cjs/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/cjs/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/cjs/toolBar/index.less +25 -25
- package/dist/cjs/types/railroad-diagrams.d.ts +59 -59
- package/dist/cjs/types/regexp-tree.d.ts +175 -175
- package/dist/esm/ConfirmPro/index.js +4 -4
- package/dist/esm/RuleBuilder/LogicSelector.js +7 -7
- package/dist/esm/RuleBuilder/RuleBuilderContainer.js +27 -27
- package/dist/esm/RuleBuilder/RuleCard.js +6 -6
- package/dist/esm/RuleBuilder/RuleGroupEditor.js +7 -7
- package/dist/esm/RuleBuilder/constants/operators.js +18 -18
- package/dist/esm/RuleBuilder/context/RuleBuilderContext.js +38 -38
- package/dist/esm/RuleBuilder/index.js +6 -6
- package/dist/esm/RuleBuilder/inputs/BetweenValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/MultiValueInput.js +5 -5
- package/dist/esm/RuleBuilder/inputs/SingleValueInput.js +8 -8
- package/dist/esm/RuleBuilder/inputs/ValueInput.js +8 -8
- package/dist/esm/RuleBuilder/selectors/FieldSelector.js +5 -5
- package/dist/esm/RuleBuilder/selectors/OperatorSelector.js +5 -5
- package/dist/esm/RuleBuilder/styles/index.module.less +443 -443
- package/dist/esm/RuleBuilder/styles/index.module.less.d.ts +43 -43
- package/dist/esm/RuleBuilder/types/index.js +42 -42
- package/dist/esm/RuleBuilder/utils/pathHelpers.js +47 -47
- package/dist/esm/RuleBuilder/utils/ruleHelpers.js +31 -31
- package/dist/esm/RuleBuilder/utils/validation.js +22 -22
- package/dist/esm/ag-grid-plus/_utils/boolSelect.js +5 -5
- package/dist/esm/ag-grid-plus/_utils/processColumnGroups.js +9 -9
- package/dist/esm/ag-grid-plus/ag-grid-theme-builder.css +352 -352
- package/dist/esm/ag-grid-plus/ag-gridPlus.js +83 -89
- package/dist/esm/ag-grid-plus/context/gridContext.d.ts +1 -5
- package/dist/esm/ag-grid-plus/context/gridContext.js +19 -19
- package/dist/esm/ag-grid-plus/context/useSchemeDataFlow.js +56 -56
- package/dist/esm/ag-grid-plus/context/useSchemeManager.js +93 -93
- package/dist/esm/ag-grid-plus/errors/ErrorBoundary.js +8 -8
- package/dist/esm/ag-grid-plus/errors/types.js +14 -14
- package/dist/esm/ag-grid-plus/hooks/index.js +2 -2
- package/dist/esm/ag-grid-plus/hooks/useAgGridCalculation.js +45 -45
- package/dist/esm/ag-grid-plus/hooks/useAgGridData.js +44 -44
- package/dist/esm/ag-grid-plus/hooks/useGridPlusColumnState.js +3 -3
- package/dist/esm/ag-grid-plus/hooks/useGridState.js +36 -36
- package/dist/esm/ag-grid-plus/index.less +50 -50
- package/dist/esm/ag-grid-plus/queryForm/index.less +72 -72
- package/dist/esm/ag-grid-plus/setting/ColumnConfigForm.js +11 -11
- package/dist/esm/ag-grid-plus/setting/ColumnConfigTable.js +3 -3
- package/dist/esm/ag-grid-plus/setting/ColumnNameCellRenderer.js +10 -10
- package/dist/esm/ag-grid-plus/setting/ColumnSetting.js +29 -29
- package/dist/esm/ag-grid-plus/setting/DebounceInputs.js +9 -9
- package/dist/esm/ag-grid-plus/setting/MoveNodeModal.js +7 -7
- package/dist/esm/ag-grid-plus/setting/NameColumnRenderer.js +6 -6
- package/dist/esm/ag-grid-plus/setting/QuerySchemeManager.js +34 -34
- package/dist/esm/ag-grid-plus/setting/columnGroupUtils.js +76 -76
- package/dist/esm/ag-grid-plus/setting/performanceMonitor.js +5 -5
- package/dist/esm/ag-grid-plus/shared/storage/backendApiAdapter.js +46 -46
- package/dist/esm/ag-grid-plus/shared/storage/localStorageAdapter.js +39 -39
- package/dist/esm/ag-grid-plus/shared/utils/schemeDataMigration.js +18 -18
- package/dist/esm/ag-grid-plus/theme.js +3 -3
- package/dist/esm/ag-grid-plus/toolBar/index.js +4 -4
- package/dist/esm/ag-grid-plus/types.d.ts +2 -22
- package/dist/esm/ag-grid-plus/utils/columnProcessors.js +52 -52
- package/dist/esm/ag-grid-plus/utils/constants.js +22 -22
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.d.ts +1 -0
- package/dist/esm/ag-grid-plus/utils/entityExtensionColumns.js +29 -34
- package/dist/esm/ag-grid-plus/utils/logger.js +2 -2
- package/dist/esm/ag-grid-plus/utils/sanitize.js +10 -10
- package/dist/esm/ag-grid-plus/utils.js +3 -3
- package/dist/esm/array-table/columnHelper.js +43 -43
- package/dist/esm/array-table/hooks.js +11 -9
- package/dist/esm/array-table/index.js +40 -41
- package/dist/esm/array-table/utils.js +4 -3
- package/dist/esm/components/RegexEditor/core/RegexEditor.js +32 -32
- package/dist/esm/components/RegexEditor/core/RegexEditor.less +119 -119
- package/dist/esm/components/RegexEditor/core/extensions/errorMarker.js +52 -52
- package/dist/esm/components/RegexEditor/hooks/index.js +4 -4
- package/dist/esm/components/RegexEditor/hooks/useRegexTester.js +48 -48
- package/dist/esm/components/RegexEditor/hooks/useRegexValidation.js +54 -54
- package/dist/esm/components/RegexEditor/hooks/useTemplateManager.js +5 -5
- package/dist/esm/components/RegexEditor/templates/TemplateSelector.js +28 -28
- package/dist/esm/components/RegexEditor/templates/builtinTemplates.js +24 -24
- package/dist/esm/components/RegexEditor/templates/index.js +2 -2
- package/dist/esm/components/RegexEditor/templates/storage.js +29 -29
- package/dist/esm/components/RegexEditor/templates/templateManager.js +29 -29
- package/dist/esm/components/RegexEditor/templates/types.js +74 -74
- package/dist/esm/components/RegexEditor/validation/complexity.js +40 -40
- package/dist/esm/components/RegexEditor/validation/parser.js +47 -47
- package/dist/esm/components/RegexEditor/validation/validator.js +54 -54
- package/dist/esm/components/RegexEditor/visualizer/FlagsSelector.js +19 -19
- package/dist/esm/components/RegexEditor/visualizer/MatchItem.js +20 -20
- package/dist/esm/components/RegexEditor/visualizer/RegexRailroadDiagram.js +15 -15
- package/dist/esm/components/RegexEditor/visualizer/RegexTester.js +17 -17
- package/dist/esm/components/RegexEditor/visualizer/astToRailroad.js +11 -11
- package/dist/esm/components/RegexEditor/visualizer/index.js +5 -5
- package/dist/esm/components/RegexEditor/visualizer/utils.js +92 -92
- package/dist/esm/dashboard/dashboard/components/toolbar/style/index.less +49 -49
- package/dist/esm/dashboard/dashboard/index.less +173 -173
- package/dist/esm/dashboard/dashboard/utils.js +4 -4
- package/dist/esm/dashboard/utils.js +8 -8
- package/dist/esm/dashboard/widget/index.less +7 -7
- package/dist/esm/dashboard/widget/selector/index.less +172 -172
- package/dist/esm/deleteConfirm/index.js +17 -17
- package/dist/esm/draggableModal/index.js +4 -4
- package/dist/esm/draggableModal/style.less +122 -122
- package/dist/esm/editable/index.js +16 -1
- package/dist/esm/formDesigner/arrayTable/styles.less +2 -2
- package/dist/esm/formDesigner/index.less +2 -2
- package/dist/esm/fullScreenAlert/index.js +13 -13
- package/dist/esm/fullScreenAlert/index.less +133 -133
- package/dist/esm/generatedListPage/ConfigurableToolbar.js +2 -2
- package/dist/esm/generatedListPage/GeneratedListPage.js +20 -20
- package/dist/esm/generatedListPage/OptionsColumn.js +3 -3
- package/dist/esm/generatedListPage/PerformanceMonitor.js +9 -9
- package/dist/esm/generatedListPage/RequestManager.js +39 -39
- package/dist/esm/generatedListPage/_utils/AccessWrapper.js +6 -6
- package/dist/esm/generatedListPage/_utils/defaultHandlers.js +14 -14
- package/dist/esm/generatedListPage/index.js +9 -9
- package/dist/esm/generatedListPage/usePermissionCheck.js +27 -27
- package/dist/esm/generatedListPage/useRequestManager.js +20 -20
- package/dist/esm/importModal/index.js +4 -4
- package/dist/esm/standardFormDialog/FormValidation.js +45 -45
- package/dist/esm/standardFormDialog/PortalManager.js +46 -46
- package/dist/esm/standardFormDialog/StandardFormDialog.js +20 -20
- package/dist/esm/standardFormDialog/useStandardFormSchema.js +24 -24
- package/dist/esm/standardFormDialog/withStandardForm.d.ts +2 -2
- package/dist/esm/toolBar/index.less +25 -25
- package/dist/esm/types/railroad-diagrams.d.ts +59 -59
- package/dist/esm/types/regexp-tree.d.ts +175 -175
- package/dist/umd/qc-ui.min.js +1 -1
- package/package.json +90 -90
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/cjs/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -648
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.d.ts +0 -66
- package/dist/esm/ag-grid-plus/shared/hooks/useSchemeManager.js +0 -643
|
@@ -18,12 +18,12 @@ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread n
|
|
|
18
18
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
19
19
|
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
20
20
|
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
21
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /**
|
|
22
|
-
* 模板管理器
|
|
23
|
-
* 统一管理内置模板和自定义模板
|
|
21
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /**
|
|
22
|
+
* 模板管理器
|
|
23
|
+
* 统一管理内置模板和自定义模板
|
|
24
24
|
*/
|
|
25
|
-
/**
|
|
26
|
-
* 获取所有模板(内置 + 自定义)
|
|
25
|
+
/**
|
|
26
|
+
* 获取所有模板(内置 + 自定义)
|
|
27
27
|
*/
|
|
28
28
|
var getAllTemplates = exports.getAllTemplates = function getAllTemplates() {
|
|
29
29
|
var builtinTemplates = (0, _builtinTemplates.getAllBuiltinTemplates)();
|
|
@@ -31,8 +31,8 @@ var getAllTemplates = exports.getAllTemplates = function getAllTemplates() {
|
|
|
31
31
|
return [].concat(_toConsumableArray(builtinTemplates), _toConsumableArray(customTemplates));
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
/**
|
|
35
|
-
* 根据 ID 获取模板(优先查找自定义模板)
|
|
34
|
+
/**
|
|
35
|
+
* 根据 ID 获取模板(优先查找自定义模板)
|
|
36
36
|
*/
|
|
37
37
|
var getTemplateById = exports.getTemplateById = function getTemplateById(id) {
|
|
38
38
|
// 先查找自定义模板
|
|
@@ -48,8 +48,8 @@ var getTemplateById = exports.getTemplateById = function getTemplateById(id) {
|
|
|
48
48
|
return (0, _builtinTemplates.getTemplateById)(id);
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
/**
|
|
52
|
-
* 根据分类获取模板
|
|
51
|
+
/**
|
|
52
|
+
* 根据分类获取模板
|
|
53
53
|
*/
|
|
54
54
|
var getTemplatesByCategory = exports.getTemplatesByCategory = function getTemplatesByCategory(category) {
|
|
55
55
|
var allTemplates = getAllTemplates();
|
|
@@ -58,8 +58,8 @@ var getTemplatesByCategory = exports.getTemplatesByCategory = function getTempla
|
|
|
58
58
|
});
|
|
59
59
|
};
|
|
60
60
|
|
|
61
|
-
/**
|
|
62
|
-
* 搜索模板(支持关键词搜索)
|
|
61
|
+
/**
|
|
62
|
+
* 搜索模板(支持关键词搜索)
|
|
63
63
|
*/
|
|
64
64
|
var searchTemplates = exports.searchTemplates = function searchTemplates(keyword) {
|
|
65
65
|
if (!keyword.trim()) {
|
|
@@ -74,8 +74,8 @@ var searchTemplates = exports.searchTemplates = function searchTemplates(keyword
|
|
|
74
74
|
});
|
|
75
75
|
};
|
|
76
76
|
|
|
77
|
-
/**
|
|
78
|
-
* 获取最常用的模板
|
|
77
|
+
/**
|
|
78
|
+
* 获取最常用的模板
|
|
79
79
|
*/
|
|
80
80
|
var getMostUsedTemplates = exports.getMostUsedTemplates = function getMostUsedTemplates() {
|
|
81
81
|
var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
|
|
@@ -87,8 +87,8 @@ var getMostUsedTemplates = exports.getMostUsedTemplates = function getMostUsedTe
|
|
|
87
87
|
}).slice(0, limit);
|
|
88
88
|
};
|
|
89
89
|
|
|
90
|
-
/**
|
|
91
|
-
* 获取最近使用的模板
|
|
90
|
+
/**
|
|
91
|
+
* 获取最近使用的模板
|
|
92
92
|
*/
|
|
93
93
|
var getRecentlyUsedTemplates = exports.getRecentlyUsedTemplates = function getRecentlyUsedTemplates() {
|
|
94
94
|
var limit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
|
|
@@ -103,8 +103,8 @@ var getRecentlyUsedTemplates = exports.getRecentlyUsedTemplates = function getRe
|
|
|
103
103
|
}).slice(0, limit);
|
|
104
104
|
};
|
|
105
105
|
|
|
106
|
-
/**
|
|
107
|
-
* 创建新的自定义模板
|
|
106
|
+
/**
|
|
107
|
+
* 创建新的自定义模板
|
|
108
108
|
*/
|
|
109
109
|
var createCustomTemplate = exports.createCustomTemplate = function createCustomTemplate(template) {
|
|
110
110
|
var newTemplate = _objectSpread(_objectSpread({}, template), {}, {
|
|
@@ -117,8 +117,8 @@ var createCustomTemplate = exports.createCustomTemplate = function createCustomT
|
|
|
117
117
|
return newTemplate;
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
/**
|
|
121
|
-
* 更新自定义模板
|
|
120
|
+
/**
|
|
121
|
+
* 更新自定义模板
|
|
122
122
|
*/
|
|
123
123
|
var updateCustomTemplate = exports.updateCustomTemplate = function updateCustomTemplate(id, updates) {
|
|
124
124
|
var template = getTemplateById(id);
|
|
@@ -134,8 +134,8 @@ var updateCustomTemplate = exports.updateCustomTemplate = function updateCustomT
|
|
|
134
134
|
return _storage.TemplateStorage.saveCustomTemplate(updatedTemplate);
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
-
/**
|
|
138
|
-
* 删除自定义模板
|
|
137
|
+
/**
|
|
138
|
+
* 删除自定义模板
|
|
139
139
|
*/
|
|
140
140
|
var deleteCustomTemplate = exports.deleteCustomTemplate = function deleteCustomTemplate(id) {
|
|
141
141
|
var template = getTemplateById(id);
|
|
@@ -146,8 +146,8 @@ var deleteCustomTemplate = exports.deleteCustomTemplate = function deleteCustomT
|
|
|
146
146
|
return _storage.TemplateStorage.deleteCustomTemplate(id);
|
|
147
147
|
};
|
|
148
148
|
|
|
149
|
-
/**
|
|
150
|
-
* 复制模板(创建副本)
|
|
149
|
+
/**
|
|
150
|
+
* 复制模板(创建副本)
|
|
151
151
|
*/
|
|
152
152
|
var duplicateTemplate = exports.duplicateTemplate = function duplicateTemplate(id, newName) {
|
|
153
153
|
var template = getTemplateById(id);
|
|
@@ -170,8 +170,8 @@ var duplicateTemplate = exports.duplicateTemplate = function duplicateTemplate(i
|
|
|
170
170
|
return createCustomTemplate(duplicated);
|
|
171
171
|
};
|
|
172
172
|
|
|
173
|
-
/**
|
|
174
|
-
* 使用模板(更新使用统计)
|
|
173
|
+
/**
|
|
174
|
+
* 使用模板(更新使用统计)
|
|
175
175
|
*/
|
|
176
176
|
var useTemplate = exports.useTemplate = function useTemplate(id) {
|
|
177
177
|
var template = getTemplateById(id);
|
|
@@ -190,8 +190,8 @@ var useTemplate = exports.useTemplate = function useTemplate(id) {
|
|
|
190
190
|
return template;
|
|
191
191
|
};
|
|
192
192
|
|
|
193
|
-
/**
|
|
194
|
-
* 获取模板统计信息
|
|
193
|
+
/**
|
|
194
|
+
* 获取模板统计信息
|
|
195
195
|
*/
|
|
196
196
|
var getTemplateStats = exports.getTemplateStats = function getTemplateStats() {
|
|
197
197
|
var allTemplates = getAllTemplates();
|
|
@@ -219,8 +219,8 @@ var getTemplateStats = exports.getTemplateStats = function getTemplateStats() {
|
|
|
219
219
|
};
|
|
220
220
|
};
|
|
221
221
|
|
|
222
|
-
/**
|
|
223
|
-
* 验证模板是否有效
|
|
222
|
+
/**
|
|
223
|
+
* 验证模板是否有效
|
|
224
224
|
*/
|
|
225
225
|
var validateTemplate = exports.validateTemplate = function validateTemplate(template) {
|
|
226
226
|
var _template$name, _template$pattern, _template$description;
|
|
@@ -4,82 +4,82 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.TemplateCategory = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* 正则表达式模板系统 - 类型定义
|
|
9
|
-
*
|
|
10
|
-
* @module RegexEditor/templates/types
|
|
11
|
-
* @description 定义正则表达式模板库相关的核心类型
|
|
7
|
+
/**
|
|
8
|
+
* 正则表达式模板系统 - 类型定义
|
|
9
|
+
*
|
|
10
|
+
* @module RegexEditor/templates/types
|
|
11
|
+
* @description 定义正则表达式模板库相关的核心类型
|
|
12
12
|
*/
|
|
13
|
-
/**
|
|
14
|
-
* 正则表达式模板
|
|
15
|
-
*
|
|
16
|
-
* @interface RegexTemplate
|
|
17
|
-
* @property {string} id - 模板唯一标识符
|
|
18
|
-
* @property {string} name - 模板名称(显示用)
|
|
19
|
-
* @property {string} pattern - 正则表达式字符串
|
|
20
|
-
* @property {string} description - 模板详细描述
|
|
21
|
-
* @property {TemplateCategory} category - 模板分类
|
|
22
|
-
* @property {string[]} tags - 标签列表(用于搜索和过滤)
|
|
23
|
-
* @property {Object} examples - 匹配示例
|
|
24
|
-
* @property {string[]} examples.valid - 有效匹配示例
|
|
25
|
-
* @property {string[]} examples.invalid - 无效匹配示例
|
|
26
|
-
* @property {'simple' | 'medium' | 'complex'} complexity - 复杂度等级
|
|
27
|
-
* @property {number} [useCount] - 使用次数(用于热门排序)
|
|
28
|
-
* @property {Date} [lastUsed] - 最后使用时间
|
|
29
|
-
* @property {boolean} [isCustom] - 是否为用户自定义模板
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const lotNumberTemplate: RegexTemplate = {
|
|
34
|
-
* id: 'lot-number',
|
|
35
|
-
* name: '批次号',
|
|
36
|
-
* pattern: '^LOT\\d{6}$',
|
|
37
|
-
* description: '标准批次号格式:LOT + 6位数字',
|
|
38
|
-
* category: TemplateCategory.BUSINESS,
|
|
39
|
-
* tags: ['批次', 'LOT', '业务'],
|
|
40
|
-
* examples: {
|
|
41
|
-
* valid: ['LOT123456', 'LOT000001'],
|
|
42
|
-
* invalid: ['LOT12345', 'lot123456', 'LOT1234567']
|
|
43
|
-
* },
|
|
44
|
-
* complexity: 'simple',
|
|
45
|
-
* useCount: 42,
|
|
46
|
-
* lastUsed: new Date('2025-01-27'),
|
|
47
|
-
* isCustom: false
|
|
48
|
-
* };
|
|
49
|
-
* ```
|
|
13
|
+
/**
|
|
14
|
+
* 正则表达式模板
|
|
15
|
+
*
|
|
16
|
+
* @interface RegexTemplate
|
|
17
|
+
* @property {string} id - 模板唯一标识符
|
|
18
|
+
* @property {string} name - 模板名称(显示用)
|
|
19
|
+
* @property {string} pattern - 正则表达式字符串
|
|
20
|
+
* @property {string} description - 模板详细描述
|
|
21
|
+
* @property {TemplateCategory} category - 模板分类
|
|
22
|
+
* @property {string[]} tags - 标签列表(用于搜索和过滤)
|
|
23
|
+
* @property {Object} examples - 匹配示例
|
|
24
|
+
* @property {string[]} examples.valid - 有效匹配示例
|
|
25
|
+
* @property {string[]} examples.invalid - 无效匹配示例
|
|
26
|
+
* @property {'simple' | 'medium' | 'complex'} complexity - 复杂度等级
|
|
27
|
+
* @property {number} [useCount] - 使用次数(用于热门排序)
|
|
28
|
+
* @property {Date} [lastUsed] - 最后使用时间
|
|
29
|
+
* @property {boolean} [isCustom] - 是否为用户自定义模板
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const lotNumberTemplate: RegexTemplate = {
|
|
34
|
+
* id: 'lot-number',
|
|
35
|
+
* name: '批次号',
|
|
36
|
+
* pattern: '^LOT\\d{6}$',
|
|
37
|
+
* description: '标准批次号格式:LOT + 6位数字',
|
|
38
|
+
* category: TemplateCategory.BUSINESS,
|
|
39
|
+
* tags: ['批次', 'LOT', '业务'],
|
|
40
|
+
* examples: {
|
|
41
|
+
* valid: ['LOT123456', 'LOT000001'],
|
|
42
|
+
* invalid: ['LOT12345', 'lot123456', 'LOT1234567']
|
|
43
|
+
* },
|
|
44
|
+
* complexity: 'simple',
|
|
45
|
+
* useCount: 42,
|
|
46
|
+
* lastUsed: new Date('2025-01-27'),
|
|
47
|
+
* isCustom: false
|
|
48
|
+
* };
|
|
49
|
+
* ```
|
|
50
50
|
*/
|
|
51
|
-
/**
|
|
52
|
-
* 模板分类枚举
|
|
53
|
-
*
|
|
54
|
-
* @enum TemplateCategory
|
|
55
|
-
* @property {string} BUSINESS - 业务相关(批次号、订单号等)
|
|
56
|
-
* @property {string} COMMON - 通用模式(邮箱、电话等)
|
|
57
|
-
* @property {string} DATE_TIME - 日期时间格式
|
|
58
|
-
* @property {string} NUMBER - 数字格式(整数、小数、科学计数法等)
|
|
59
|
-
* @property {string} TEXT - 文本格式(中文、英文、特殊字符等)
|
|
60
|
-
* @property {string} VALIDATION - 数据验证(长度、范围等)
|
|
61
|
-
* @property {string} EXTRACTION - 数据提取(提取特定部分)
|
|
62
|
-
* @property {string} CUSTOM - 用户自定义
|
|
63
|
-
*
|
|
64
|
-
* @example
|
|
65
|
-
* ```typescript
|
|
66
|
-
* // 按分类过滤模板
|
|
67
|
-
* const businessTemplates = allTemplates.filter(
|
|
68
|
-
* t => t.category === TemplateCategory.BUSINESS
|
|
69
|
-
* );
|
|
70
|
-
*
|
|
71
|
-
* // 获取分类显示名称
|
|
72
|
-
* const categoryNames = {
|
|
73
|
-
* [TemplateCategory.BUSINESS]: '业务模板',
|
|
74
|
-
* [TemplateCategory.COMMON]: '通用模板',
|
|
75
|
-
* [TemplateCategory.DATE_TIME]: '日期时间',
|
|
76
|
-
* [TemplateCategory.NUMBER]: '数字格式',
|
|
77
|
-
* [TemplateCategory.TEXT]: '文本格式',
|
|
78
|
-
* [TemplateCategory.VALIDATION]: '数据验证',
|
|
79
|
-
* [TemplateCategory.EXTRACTION]: '数据提取',
|
|
80
|
-
* [TemplateCategory.CUSTOM]: '自定义'
|
|
81
|
-
* };
|
|
82
|
-
* ```
|
|
51
|
+
/**
|
|
52
|
+
* 模板分类枚举
|
|
53
|
+
*
|
|
54
|
+
* @enum TemplateCategory
|
|
55
|
+
* @property {string} BUSINESS - 业务相关(批次号、订单号等)
|
|
56
|
+
* @property {string} COMMON - 通用模式(邮箱、电话等)
|
|
57
|
+
* @property {string} DATE_TIME - 日期时间格式
|
|
58
|
+
* @property {string} NUMBER - 数字格式(整数、小数、科学计数法等)
|
|
59
|
+
* @property {string} TEXT - 文本格式(中文、英文、特殊字符等)
|
|
60
|
+
* @property {string} VALIDATION - 数据验证(长度、范围等)
|
|
61
|
+
* @property {string} EXTRACTION - 数据提取(提取特定部分)
|
|
62
|
+
* @property {string} CUSTOM - 用户自定义
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```typescript
|
|
66
|
+
* // 按分类过滤模板
|
|
67
|
+
* const businessTemplates = allTemplates.filter(
|
|
68
|
+
* t => t.category === TemplateCategory.BUSINESS
|
|
69
|
+
* );
|
|
70
|
+
*
|
|
71
|
+
* // 获取分类显示名称
|
|
72
|
+
* const categoryNames = {
|
|
73
|
+
* [TemplateCategory.BUSINESS]: '业务模板',
|
|
74
|
+
* [TemplateCategory.COMMON]: '通用模板',
|
|
75
|
+
* [TemplateCategory.DATE_TIME]: '日期时间',
|
|
76
|
+
* [TemplateCategory.NUMBER]: '数字格式',
|
|
77
|
+
* [TemplateCategory.TEXT]: '文本格式',
|
|
78
|
+
* [TemplateCategory.VALIDATION]: '数据验证',
|
|
79
|
+
* [TemplateCategory.EXTRACTION]: '数据提取',
|
|
80
|
+
* [TemplateCategory.CUSTOM]: '自定义'
|
|
81
|
+
* };
|
|
82
|
+
* ```
|
|
83
83
|
*/
|
|
84
84
|
var TemplateCategory = exports.TemplateCategory = /*#__PURE__*/function (TemplateCategory) {
|
|
85
85
|
TemplateCategory["BUSINESS"] = "business";
|
|
@@ -5,49 +5,49 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.analyzeComplexity = void 0;
|
|
7
7
|
var _parser = require("./parser");
|
|
8
|
-
/**
|
|
9
|
-
* 正则表达式复杂度分析器
|
|
10
|
-
*
|
|
11
|
-
* @module RegexEditor/validation/complexity
|
|
12
|
-
* @description 分析正则表达式的复杂度,评估性能风险并提供优化建议
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* 该模块通过遍历 AST 来统计以下复杂度指标:
|
|
16
|
-
* - 节点总数
|
|
17
|
-
* - 最大嵌套深度
|
|
18
|
-
* - 分支数量(alternation)
|
|
19
|
-
* - 量词数量(quantifier)
|
|
20
|
-
* - 捕获组数量
|
|
21
|
-
* - 字符类数量
|
|
22
|
-
*
|
|
23
|
-
* 基于这些指标计算:
|
|
24
|
-
* - 回溯风险等级(low/medium/high)
|
|
25
|
-
* - 性能评分(0-100分)
|
|
26
|
-
* - 优化建议列表
|
|
8
|
+
/**
|
|
9
|
+
* 正则表达式复杂度分析器
|
|
10
|
+
*
|
|
11
|
+
* @module RegexEditor/validation/complexity
|
|
12
|
+
* @description 分析正则表达式的复杂度,评估性能风险并提供优化建议
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* 该模块通过遍历 AST 来统计以下复杂度指标:
|
|
16
|
+
* - 节点总数
|
|
17
|
+
* - 最大嵌套深度
|
|
18
|
+
* - 分支数量(alternation)
|
|
19
|
+
* - 量词数量(quantifier)
|
|
20
|
+
* - 捕获组数量
|
|
21
|
+
* - 字符类数量
|
|
22
|
+
*
|
|
23
|
+
* 基于这些指标计算:
|
|
24
|
+
* - 回溯风险等级(low/medium/high)
|
|
25
|
+
* - 性能评分(0-100分)
|
|
26
|
+
* - 优化建议列表
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
/**
|
|
30
|
-
* 分析正则表达式复杂度
|
|
31
|
-
*
|
|
32
|
-
* @param ast - 正则表达式的抽象语法树
|
|
33
|
-
* @returns {ComplexityMetrics} 复杂度指标
|
|
34
|
-
*
|
|
35
|
-
* @example
|
|
36
|
-
* ```typescript
|
|
37
|
-
* const result = parseRegex('(a+)+b');
|
|
38
|
-
* const metrics = analyzeComplexity(result.ast!);
|
|
39
|
-
*
|
|
40
|
-
* if (metrics.backtrackingRisk === 'high') {
|
|
41
|
-
* console.warn('警告: 高回溯风险');
|
|
42
|
-
* console.log('建议:', metrics.suggestions);
|
|
43
|
-
* }
|
|
44
|
-
*
|
|
45
|
-
* console.log('性能评分:', metrics.performanceScore);
|
|
46
|
-
* ```
|
|
29
|
+
/**
|
|
30
|
+
* 分析正则表达式复杂度
|
|
31
|
+
*
|
|
32
|
+
* @param ast - 正则表达式的抽象语法树
|
|
33
|
+
* @returns {ComplexityMetrics} 复杂度指标
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const result = parseRegex('(a+)+b');
|
|
38
|
+
* const metrics = analyzeComplexity(result.ast!);
|
|
39
|
+
*
|
|
40
|
+
* if (metrics.backtrackingRisk === 'high') {
|
|
41
|
+
* console.warn('警告: 高回溯风险');
|
|
42
|
+
* console.log('建议:', metrics.suggestions);
|
|
43
|
+
* }
|
|
44
|
+
*
|
|
45
|
+
* console.log('性能评分:', metrics.performanceScore);
|
|
46
|
+
* ```
|
|
47
47
|
*/
|
|
48
|
-
/**
|
|
49
|
-
* 计算节点深度
|
|
50
|
-
* 通过递归遍历 parentPath 计算从根节点到当前节点的深度
|
|
48
|
+
/**
|
|
49
|
+
* 计算节点深度
|
|
50
|
+
* 通过递归遍历 parentPath 计算从根节点到当前节点的深度
|
|
51
51
|
*/
|
|
52
52
|
var calculateDepth = function calculateDepth(path) {
|
|
53
53
|
var depth = 1;
|
|
@@ -5,38 +5,38 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.traverseAST = exports.parseRegex = void 0;
|
|
7
7
|
var _regexpTree = require("regexp-tree");
|
|
8
|
-
/**
|
|
9
|
-
* 正则表达式解析器
|
|
10
|
-
*
|
|
11
|
-
* @module RegexEditor/validation/parser
|
|
12
|
-
* @description 基于 regexp-tree 的正则表达式解析器,提供 AST 解析和遍历功能
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* 该模块封装了 regexp-tree 库,提供类型安全的解析和遍历功能。
|
|
16
|
-
* 主要功能:
|
|
17
|
-
* - 将正则表达式字符串解析为抽象语法树(AST)
|
|
18
|
-
* - 统一的错误处理和转换
|
|
19
|
-
* - AST 节点遍历工具
|
|
20
|
-
*
|
|
21
|
-
* @see https://github.com/DmitrySoshnikov/regexp-tree
|
|
8
|
+
/**
|
|
9
|
+
* 正则表达式解析器
|
|
10
|
+
*
|
|
11
|
+
* @module RegexEditor/validation/parser
|
|
12
|
+
* @description 基于 regexp-tree 的正则表达式解析器,提供 AST 解析和遍历功能
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* 该模块封装了 regexp-tree 库,提供类型安全的解析和遍历功能。
|
|
16
|
+
* 主要功能:
|
|
17
|
+
* - 将正则表达式字符串解析为抽象语法树(AST)
|
|
18
|
+
* - 统一的错误处理和转换
|
|
19
|
+
* - AST 节点遍历工具
|
|
20
|
+
*
|
|
21
|
+
* @see https://github.com/DmitrySoshnikov/regexp-tree
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* 解析正则表达式
|
|
26
|
-
*
|
|
27
|
-
* @param pattern - 正则表达式字符串
|
|
28
|
-
* @param flags - 可选的正则表达式标志(g, i, m, s, u, y)
|
|
29
|
-
* @returns {ParseResult} 解析结果,包含 AST 或错误信息
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```typescript
|
|
33
|
-
* const result = parseRegex('^LOT\\d{6}$');
|
|
34
|
-
* if (result.success) {
|
|
35
|
-
* console.log('AST:', result.ast);
|
|
36
|
-
* } else {
|
|
37
|
-
* console.error('Error:', result.error);
|
|
38
|
-
* }
|
|
39
|
-
* ```
|
|
24
|
+
/**
|
|
25
|
+
* 解析正则表达式
|
|
26
|
+
*
|
|
27
|
+
* @param pattern - 正则表达式字符串
|
|
28
|
+
* @param flags - 可选的正则表达式标志(g, i, m, s, u, y)
|
|
29
|
+
* @returns {ParseResult} 解析结果,包含 AST 或错误信息
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const result = parseRegex('^LOT\\d{6}$');
|
|
34
|
+
* if (result.success) {
|
|
35
|
+
* console.log('AST:', result.ast);
|
|
36
|
+
* } else {
|
|
37
|
+
* console.error('Error:', result.error);
|
|
38
|
+
* }
|
|
39
|
+
* ```
|
|
40
40
|
*/
|
|
41
41
|
var parseRegex = exports.parseRegex = function parseRegex(pattern, flags) {
|
|
42
42
|
try {
|
|
@@ -97,23 +97,23 @@ var parseRegex = exports.parseRegex = function parseRegex(pattern, flags) {
|
|
|
97
97
|
}
|
|
98
98
|
};
|
|
99
99
|
|
|
100
|
-
/**
|
|
101
|
-
* 遍历 AST 节点
|
|
102
|
-
*
|
|
103
|
-
* @param ast - 抽象语法树节点
|
|
104
|
-
* @param handlers - 节点类型处理器映射
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* ```typescript
|
|
108
|
-
* const result = parseRegex('(\\d+)');
|
|
109
|
-
* const groups: any[] = [];
|
|
110
|
-
*
|
|
111
|
-
* traverseAST(result.ast!, {
|
|
112
|
-
* Group(path) {
|
|
113
|
-
* groups.push(path.node);
|
|
114
|
-
* }
|
|
115
|
-
* });
|
|
116
|
-
* ```
|
|
100
|
+
/**
|
|
101
|
+
* 遍历 AST 节点
|
|
102
|
+
*
|
|
103
|
+
* @param ast - 抽象语法树节点
|
|
104
|
+
* @param handlers - 节点类型处理器映射
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const result = parseRegex('(\\d+)');
|
|
109
|
+
* const groups: any[] = [];
|
|
110
|
+
*
|
|
111
|
+
* traverseAST(result.ast!, {
|
|
112
|
+
* Group(path) {
|
|
113
|
+
* groups.push(path.node);
|
|
114
|
+
* }
|
|
115
|
+
* });
|
|
116
|
+
* ```
|
|
117
117
|
*/
|
|
118
118
|
var traverseAST = exports.traverseAST = function traverseAST(ast, handlers) {
|
|
119
119
|
// 安全处理空 AST
|
|
@@ -5,40 +5,40 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.validateRegex = exports.validatePattern = void 0;
|
|
7
7
|
var _parser = require("./parser");
|
|
8
|
-
/**
|
|
9
|
-
* 正则表达式语法验证器
|
|
10
|
-
*
|
|
11
|
-
* @module RegexEditor/validation/validator
|
|
12
|
-
* @description 检测正则表达式的常见语法错误和安全问题
|
|
13
|
-
*
|
|
14
|
-
* @remarks
|
|
15
|
-
* 该模块基于 regexp-tree AST 提供以下验证规则:
|
|
16
|
-
* 1. 空捕获组检测 - 检测 () 并建议使用 (?:)
|
|
17
|
-
* 2. 无效量词检测 - 检测 {min,max} 中 min > max
|
|
18
|
-
* 3. 嵌套量词检测 - 检测 (a+)+ 等导致灾难性回溯的模式
|
|
19
|
-
* 4. 未闭合组检测 - 通过解析错误自动检测
|
|
20
|
-
*
|
|
21
|
-
* @see {@link parseRegex} 用于解析正则表达式
|
|
8
|
+
/**
|
|
9
|
+
* 正则表达式语法验证器
|
|
10
|
+
*
|
|
11
|
+
* @module RegexEditor/validation/validator
|
|
12
|
+
* @description 检测正则表达式的常见语法错误和安全问题
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* 该模块基于 regexp-tree AST 提供以下验证规则:
|
|
16
|
+
* 1. 空捕获组检测 - 检测 () 并建议使用 (?:)
|
|
17
|
+
* 2. 无效量词检测 - 检测 {min,max} 中 min > max
|
|
18
|
+
* 3. 嵌套量词检测 - 检测 (a+)+ 等导致灾难性回溯的模式
|
|
19
|
+
* 4. 未闭合组检测 - 通过解析错误自动检测
|
|
20
|
+
*
|
|
21
|
+
* @see {@link parseRegex} 用于解析正则表达式
|
|
22
22
|
*/
|
|
23
23
|
|
|
24
|
-
/**
|
|
25
|
-
* 验证正则表达式 AST
|
|
26
|
-
*
|
|
27
|
-
* @param ast - 抽象语法树节点
|
|
28
|
-
* @returns {RegexError[]} 错误和警告列表
|
|
29
|
-
*
|
|
30
|
-
* @remarks
|
|
31
|
-
* 该函数遍历 AST 节点,应用以下验证规则:
|
|
32
|
-
* - 空捕获组 (警告)
|
|
33
|
-
* - 无效量词 (错误)
|
|
34
|
-
* - 嵌套量词/灾难性回溯 (错误)
|
|
35
|
-
*
|
|
36
|
-
* @example
|
|
37
|
-
* ```typescript
|
|
38
|
-
* const result = parseRegex('()test');
|
|
39
|
-
* const errors = validateRegex(result.ast!);
|
|
40
|
-
* console.log(errors); // [{ type: 'empty_group', severity: 'warning', ... }]
|
|
41
|
-
* ```
|
|
24
|
+
/**
|
|
25
|
+
* 验证正则表达式 AST
|
|
26
|
+
*
|
|
27
|
+
* @param ast - 抽象语法树节点
|
|
28
|
+
* @returns {RegexError[]} 错误和警告列表
|
|
29
|
+
*
|
|
30
|
+
* @remarks
|
|
31
|
+
* 该函数遍历 AST 节点,应用以下验证规则:
|
|
32
|
+
* - 空捕获组 (警告)
|
|
33
|
+
* - 无效量词 (错误)
|
|
34
|
+
* - 嵌套量词/灾难性回溯 (错误)
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const result = parseRegex('()test');
|
|
39
|
+
* const errors = validateRegex(result.ast!);
|
|
40
|
+
* console.log(errors); // [{ type: 'empty_group', severity: 'warning', ... }]
|
|
41
|
+
* ```
|
|
42
42
|
*/
|
|
43
43
|
var validateRegex = exports.validateRegex = function validateRegex(ast) {
|
|
44
44
|
var errors = [];
|
|
@@ -156,28 +156,28 @@ var validateRegex = exports.validateRegex = function validateRegex(ast) {
|
|
|
156
156
|
return errors;
|
|
157
157
|
};
|
|
158
158
|
|
|
159
|
-
/**
|
|
160
|
-
* 整合验证流程: 解析 + 语法验证
|
|
161
|
-
*
|
|
162
|
-
* @param pattern - 正则表达式字符串
|
|
163
|
-
* @param flags - 可选的正则表达式标志
|
|
164
|
-
* @returns {ValidationResult} 完整的验证结果
|
|
165
|
-
*
|
|
166
|
-
* @remarks
|
|
167
|
-
* 该函数整合了以下步骤:
|
|
168
|
-
* 1. 解析正则表达式 {@link parseRegex}
|
|
169
|
-
* 2. 语法验证 {@link validateRegex}
|
|
170
|
-
* 3. 分类错误、警告和信息
|
|
171
|
-
*
|
|
172
|
-
* @example
|
|
173
|
-
* ```typescript
|
|
174
|
-
* const result = validatePattern('^LOT\\d{6}$');
|
|
175
|
-
* if (result.valid) {
|
|
176
|
-
* console.log('验证通过');
|
|
177
|
-
* } else {
|
|
178
|
-
* console.error('错误:', result.errors);
|
|
179
|
-
* }
|
|
180
|
-
* ```
|
|
159
|
+
/**
|
|
160
|
+
* 整合验证流程: 解析 + 语法验证
|
|
161
|
+
*
|
|
162
|
+
* @param pattern - 正则表达式字符串
|
|
163
|
+
* @param flags - 可选的正则表达式标志
|
|
164
|
+
* @returns {ValidationResult} 完整的验证结果
|
|
165
|
+
*
|
|
166
|
+
* @remarks
|
|
167
|
+
* 该函数整合了以下步骤:
|
|
168
|
+
* 1. 解析正则表达式 {@link parseRegex}
|
|
169
|
+
* 2. 语法验证 {@link validateRegex}
|
|
170
|
+
* 3. 分类错误、警告和信息
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const result = validatePattern('^LOT\\d{6}$');
|
|
175
|
+
* if (result.valid) {
|
|
176
|
+
* console.log('验证通过');
|
|
177
|
+
* } else {
|
|
178
|
+
* console.error('错误:', result.errors);
|
|
179
|
+
* }
|
|
180
|
+
* ```
|
|
181
181
|
*/
|
|
182
182
|
var validatePattern = exports.validatePattern = function validatePattern(pattern, flags) {
|
|
183
183
|
// 1. 解析正则表达式
|