@nordcraft/search 1.0.93 → 1.0.95
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/dist/findProblems.js.map +1 -1
- package/dist/findSearch.d.ts +6 -0
- package/dist/findSearch.js +102 -0
- package/dist/findSearch.js.map +1 -0
- package/dist/fixProblems.js.map +1 -1
- package/dist/fixProject.js.map +1 -1
- package/dist/problems.worker.js.map +1 -1
- package/dist/rules/issues/actions/actionRules.index.d.ts +1 -1
- package/dist/rules/issues/actions/createActionNameRule.d.ts +2 -2
- package/dist/rules/issues/actions/createActionNameRule.js.map +1 -1
- package/dist/rules/issues/actions/duplicateActionArgumentNameRule.d.ts +2 -2
- package/dist/rules/issues/actions/duplicateActionArgumentNameRule.js.map +1 -1
- package/dist/rules/issues/actions/legacyActionRule.d.ts +2 -2
- package/dist/rules/issues/actions/legacyActionRule.fix.js.map +1 -1
- package/dist/rules/issues/actions/legacyActionRule.js.map +1 -1
- package/dist/rules/issues/actions/noReferenceProjectActionRule.d.ts +2 -2
- package/dist/rules/issues/actions/noReferenceProjectActionRule.js.map +1 -1
- package/dist/rules/issues/actions/projectActionIsReferenced.memo.js.map +1 -1
- package/dist/rules/issues/actions/unknownActionArgumentRule.d.ts +2 -2
- package/dist/rules/issues/actions/unknownActionArgumentRule.js.map +1 -1
- package/dist/rules/issues/actions/unknownActionEventRule.d.ts +2 -2
- package/dist/rules/issues/actions/unknownActionEventRule.js.map +1 -1
- package/dist/rules/issues/actions/unknownProjectActionRule.d.ts +2 -2
- package/dist/rules/issues/actions/unknownProjectActionRule.js.map +1 -1
- package/dist/rules/issues/apis/apiRules.index.d.ts +4 -4
- package/dist/rules/issues/apis/invalidApiParserModeRule.d.ts +2 -2
- package/dist/rules/issues/apis/invalidApiParserModeRule.js.map +1 -1
- package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.d.ts +2 -2
- package/dist/rules/issues/apis/invalidApiProxyBodySettingRule.js.map +1 -1
- package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.d.ts +2 -2
- package/dist/rules/issues/apis/invalidApiProxyCookieSettingRule.js.map +1 -1
- package/dist/rules/issues/apis/legacyApiRule.d.ts +2 -2
- package/dist/rules/issues/apis/legacyApiRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiInputRule.d.ts +2 -2
- package/dist/rules/issues/apis/noReferenceApiInputRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiRule.d.ts +2 -2
- package/dist/rules/issues/apis/noReferenceApiRule.js.map +1 -1
- package/dist/rules/issues/apis/noReferenceApiServiceRule.d.ts +2 -2
- package/dist/rules/issues/apis/noReferenceApiServiceRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiInputRule.d.ts +2 -2
- package/dist/rules/issues/apis/unknownApiInputRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiRule.d.ts +2 -2
- package/dist/rules/issues/apis/unknownApiRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownApiServiceRule.d.ts +2 -2
- package/dist/rules/issues/apis/unknownApiServiceRule.js.map +1 -1
- package/dist/rules/issues/apis/unknownFetchInputRule.d.ts +2 -2
- package/dist/rules/issues/apis/unknownFetchInputRule.js.map +1 -1
- package/dist/rules/issues/attributes/attributeRules.index.d.ts +2 -2
- package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.d.ts +2 -2
- package/dist/rules/issues/attributes/noReferenceAttributeInInstanceRule.js.map +1 -1
- package/dist/rules/issues/attributes/noReferenceAttributeRule.d.ts +2 -2
- package/dist/rules/issues/attributes/noReferenceAttributeRule.js.map +1 -1
- package/dist/rules/issues/attributes/unknownAttributeRule.d.ts +2 -2
- package/dist/rules/issues/attributes/unknownAttributeRule.js.map +1 -1
- package/dist/rules/issues/attributes/unknownComponentAttributeRule.d.ts +2 -2
- package/dist/rules/issues/attributes/unknownComponentAttributeRule.js.map +1 -1
- package/dist/rules/issues/components/componentIsReferenced.memo.js.map +1 -1
- package/dist/rules/issues/components/componentRules.index.d.ts +1 -1
- package/dist/rules/issues/components/invalidComponentStructureRule.d.ts +2 -2
- package/dist/rules/issues/components/invalidComponentStructureRule.js.map +1 -1
- package/dist/rules/issues/components/noReferenceComponentRule.d.ts +2 -2
- package/dist/rules/issues/components/noReferenceComponentRule.js.map +1 -1
- package/dist/rules/issues/components/unknownComponentRule.d.ts +2 -2
- package/dist/rules/issues/components/unknownComponentRule.js.map +1 -1
- package/dist/rules/issues/context/contextRules.index.d.ts +3 -3
- package/dist/rules/issues/context/noContextConsumersRule.d.ts +2 -2
- package/dist/rules/issues/context/noContextConsumersRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextFormulaRule.d.ts +2 -2
- package/dist/rules/issues/context/unknownContextFormulaRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextProviderFormulaRule.d.ts +2 -2
- package/dist/rules/issues/context/unknownContextProviderFormulaRule.js.map +1 -1
- package/dist/rules/issues/context/unknownContextProviderRule.d.ts +2 -2
- package/dist/rules/issues/context/unknownContextProviderRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredDirectChildRule.d.ts +2 -2
- package/dist/rules/issues/dom/createRequiredDirectChildRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredDirectParentRule.d.ts +2 -2
- package/dist/rules/issues/dom/createRequiredDirectParentRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredElementAttributeRule.d.ts +2 -2
- package/dist/rules/issues/dom/createRequiredElementAttributeRule.js.map +1 -1
- package/dist/rules/issues/dom/createRequiredMetaTagRule.d.ts +2 -2
- package/dist/rules/issues/dom/createRequiredMetaTagRule.js.map +1 -1
- package/dist/rules/issues/dom/domRules.index.d.ts +5 -5
- package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.d.ts +2 -2
- package/dist/rules/issues/dom/elementWithoutInteractiveContentRule.js.map +1 -1
- package/dist/rules/issues/dom/imageWithoutDimensionRule.d.ts +2 -2
- package/dist/rules/issues/dom/imageWithoutDimensionRule.js.map +1 -1
- package/dist/rules/issues/dom/nonEmptyVoidElementRule.d.ts +2 -2
- package/dist/rules/issues/dom/nonEmptyVoidElementRule.js.map +1 -1
- package/dist/rules/issues/events/duplicateEventTriggerRule.d.ts +2 -2
- package/dist/rules/issues/events/duplicateEventTriggerRule.js.map +1 -1
- package/dist/rules/issues/events/eventRules.index.d.ts +2 -2
- package/dist/rules/issues/events/noReferenceEventRule.d.ts +2 -2
- package/dist/rules/issues/events/noReferenceEventRule.js.map +1 -1
- package/dist/rules/issues/events/unknownEventRule.d.ts +2 -2
- package/dist/rules/issues/events/unknownEventRule.js.map +1 -1
- package/dist/rules/issues/events/unknownTriggerEventRule.d.ts +2 -2
- package/dist/rules/issues/events/unknownTriggerEventRule.js.map +1 -1
- package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.d.ts +2 -2
- package/dist/rules/issues/formulas/duplicateFormulaArgumentNameRule.js.map +1 -1
- package/dist/rules/issues/formulas/formulaRules.index.d.ts +2 -2
- package/dist/rules/issues/formulas/legacyFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/legacyFormulaRule.fix.js +2 -2
- package/dist/rules/issues/formulas/legacyFormulaRule.fix.js.map +1 -1
- package/dist/rules/issues/formulas/legacyFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/noReferenceComponentFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/noReferenceProjectFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/projectFormulaIsReferenced.memo.js.map +1 -1
- package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownComponentFormulaInputRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownProjectFormulaInputRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownProjectFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownProjectFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownRepeatIndexFormulaRule.js.map +1 -1
- package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.d.ts +2 -2
- package/dist/rules/issues/formulas/unknownRepeatItemFormulaRule.js.map +1 -1
- package/dist/rules/issues/logic/logicRules.index.d.ts +2 -2
- package/dist/rules/issues/logic/noStaticNodeCondition.d.ts +2 -2
- package/dist/rules/issues/logic/noStaticNodeCondition.js.map +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.d.ts +2 -2
- package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionFalsy.js.map +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.d.ts +2 -2
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.js.map +1 -1
- package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.d.ts +2 -2
- package/dist/rules/issues/miscellaneous/createStaticSizeConstraintRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/miscRules.index.d.ts +3 -3
- package/dist/rules/issues/miscellaneous/noReferenceNodeRule.d.ts +2 -2
- package/dist/rules/issues/miscellaneous/noReferenceNodeRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/noReferencePackageRule.d.ts +2 -2
- package/dist/rules/issues/miscellaneous/noReferencePackageRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/requireExtensionRule.d.ts +2 -2
- package/dist/rules/issues/miscellaneous/requireExtensionRule.js.map +1 -1
- package/dist/rules/issues/miscellaneous/unknownCookieRule.d.ts +2 -2
- package/dist/rules/issues/miscellaneous/unknownCookieRule.js +5 -2
- package/dist/rules/issues/miscellaneous/unknownCookieRule.js.map +1 -1
- package/dist/rules/issues/routing/duplicateRouteRule.d.ts +2 -2
- package/dist/rules/issues/routing/duplicateRouteRule.js.map +1 -1
- package/dist/rules/issues/routing/duplicateUrlParameterRule.d.ts +2 -2
- package/dist/rules/issues/routing/duplicateUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/routing/routingRules.index.d.ts +2 -2
- package/dist/rules/issues/routing/unknownSetUrlParameterRule.d.ts +2 -2
- package/dist/rules/issues/routing/unknownSetUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/routing/unknownSetUrlParametersRule.d.ts +2 -2
- package/dist/rules/issues/routing/unknownSetUrlParametersRule.js.map +1 -1
- package/dist/rules/issues/routing/unknownUrlParameterRule.d.ts +2 -2
- package/dist/rules/issues/routing/unknownUrlParameterRule.js.map +1 -1
- package/dist/rules/issues/slots/slotRules.index.d.ts +1 -1
- package/dist/rules/issues/slots/unknownComponentSlotRule.d.ts +2 -2
- package/dist/rules/issues/slots/unknownComponentSlotRule.js.map +1 -1
- package/dist/rules/issues/style/invalidStyleSyntaxRule.d.ts +2 -2
- package/dist/rules/issues/style/invalidStyleSyntaxRule.js.map +1 -1
- package/dist/rules/issues/style/legacyStyleVariableRule.d.ts +2 -2
- package/dist/rules/issues/style/legacyStyleVariableRule.js.map +1 -1
- package/dist/rules/issues/style/legacyThemeRule.d.ts +2 -2
- package/dist/rules/issues/style/legacyThemeRule.js.map +1 -1
- package/dist/rules/issues/style/noReferenceAnimationRule.d.ts +2 -2
- package/dist/rules/issues/style/noReferenceAnimationRule.js.map +1 -1
- package/dist/rules/issues/style/noReferenceGlobalCSSVariable.d.ts +2 -2
- package/dist/rules/issues/style/noReferenceGlobalCSSVariable.js.map +1 -1
- package/dist/rules/issues/style/styleRules.index.d.ts +3 -3
- package/dist/rules/issues/style/unknownCSSVariable.d.ts +2 -2
- package/dist/rules/issues/style/unknownCSSVariable.js.map +1 -1
- package/dist/rules/issues/style/unknownClassnameRule.d.ts +2 -2
- package/dist/rules/issues/style/unknownClassnameRule.js.map +1 -1
- package/dist/rules/issues/variables/noReferenceVariableRule.d.ts +2 -2
- package/dist/rules/issues/variables/noReferenceVariableRule.js.map +1 -1
- package/dist/rules/issues/variables/unknownVariableRule.d.ts +2 -2
- package/dist/rules/issues/variables/unknownVariableRule.js.map +1 -1
- package/dist/rules/issues/variables/unknownVariableSetterRule.d.ts +2 -2
- package/dist/rules/issues/variables/unknownVariableSetterRule.js.map +1 -1
- package/dist/rules/issues/variables/variableRules.index.d.ts +1 -1
- package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.d.ts +2 -2
- package/dist/rules/issues/workflows/duplicateWorkflowParameterRule.js.map +1 -1
- package/dist/rules/issues/workflows/noPostNavigateAction.d.ts +2 -2
- package/dist/rules/issues/workflows/noPostNavigateAction.js.map +1 -1
- package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.d.ts +2 -2
- package/dist/rules/issues/workflows/noReferenceComponentWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.d.ts +2 -2
- package/dist/rules/issues/workflows/unknownContextProviderWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownContextWorkflowRule.d.ts +2 -2
- package/dist/rules/issues/workflows/unknownContextWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.d.ts +2 -2
- package/dist/rules/issues/workflows/unknownTriggerWorkflowParameterRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.d.ts +2 -2
- package/dist/rules/issues/workflows/unknownTriggerWorkflowRule.js.map +1 -1
- package/dist/rules/issues/workflows/unknownWorkflowParameterRule.d.ts +2 -2
- package/dist/rules/issues/workflows/unknownWorkflowParameterRule.js.map +1 -1
- package/dist/rules/issues/workflows/workflowRules.index.d.ts +3 -3
- package/dist/rules/search/fieldSearchRule.d.ts +8 -0
- package/dist/rules/search/fieldSearchRule.js +293 -0
- package/dist/rules/search/fieldSearchRule.js.map +1 -0
- package/dist/search.worker.d.ts +1 -11
- package/dist/search.worker.js +17 -6
- package/dist/search.worker.js.map +1 -1
- package/dist/searchProject.d.ts +11 -5
- package/dist/searchProject.js +11 -12
- package/dist/searchProject.js.map +1 -1
- package/dist/types.d.ts +33 -3
- package/dist/util/contextlessEvaluateFormula.js +4 -4
- package/dist/util/contextlessEvaluateFormula.js.map +1 -1
- package/dist/util/helpers.js.map +1 -1
- package/dist/util/parseSearchQuery.d.ts +24 -0
- package/dist/util/parseSearchQuery.js +81 -0
- package/dist/util/parseSearchQuery.js.map +1 -0
- package/dist/util/removeUnused.fix.js.map +1 -1
- package/package.json +6 -5
- package/src/findProblems.ts +7 -3
- package/src/findSearch.ts +134 -0
- package/src/rules/issues/actions/createActionNameRule.ts +2 -2
- package/src/rules/issues/actions/duplicateActionArgumentNameRule.ts +2 -2
- package/src/rules/issues/actions/legacyActionRule.ts +2 -2
- package/src/rules/issues/actions/noReferenceProjectActionRule.ts +2 -2
- package/src/rules/issues/actions/unknownActionArgumentRule.ts +2 -2
- package/src/rules/issues/actions/unknownActionEventRule.ts +2 -2
- package/src/rules/issues/actions/unknownProjectActionRule.ts +2 -2
- package/src/rules/issues/apis/invalidApiParserModeRule.ts +2 -2
- package/src/rules/issues/apis/invalidApiProxyBodySettingRule.ts +2 -2
- package/src/rules/issues/apis/invalidApiProxyCookieSettingRule.ts +2 -2
- package/src/rules/issues/apis/legacyApiRule.ts +2 -2
- package/src/rules/issues/apis/noReferenceApiInputRule.ts +2 -2
- package/src/rules/issues/apis/noReferenceApiRule.ts +2 -2
- package/src/rules/issues/apis/noReferenceApiServiceRule.ts +2 -2
- package/src/rules/issues/apis/unknownApiInputRule.ts +2 -2
- package/src/rules/issues/apis/unknownApiRule.ts +2 -2
- package/src/rules/issues/apis/unknownApiServiceRule.ts +2 -2
- package/src/rules/issues/apis/unknownFetchInputRule.ts +2 -2
- package/src/rules/issues/attributes/noReferenceAttributeInInstanceRule.ts +2 -2
- package/src/rules/issues/attributes/noReferenceAttributeRule.ts +2 -2
- package/src/rules/issues/attributes/unknownAttributeRule.ts +2 -2
- package/src/rules/issues/attributes/unknownComponentAttributeRule.ts +2 -2
- package/src/rules/issues/components/invalidComponentStructureRule.ts +2 -2
- package/src/rules/issues/components/noReferenceComponentRule.ts +2 -2
- package/src/rules/issues/components/unknownComponentRule.ts +2 -2
- package/src/rules/issues/context/noContextConsumersRule.ts +2 -2
- package/src/rules/issues/context/unknownContextFormulaRule.ts +2 -2
- package/src/rules/issues/context/unknownContextProviderFormulaRule.ts +2 -2
- package/src/rules/issues/context/unknownContextProviderRule.ts +32 -31
- package/src/rules/issues/dom/createRequiredDirectChildRule.ts +2 -2
- package/src/rules/issues/dom/createRequiredDirectParentRule.ts +2 -2
- package/src/rules/issues/dom/createRequiredElementAttributeRule.ts +2 -2
- package/src/rules/issues/dom/createRequiredMetaTagRule.ts +2 -2
- package/src/rules/issues/dom/elementWithoutInteractiveContentRule.ts +2 -2
- package/src/rules/issues/dom/imageWithoutDimensionRule.ts +2 -2
- package/src/rules/issues/dom/nonEmptyVoidElementRule.ts +2 -2
- package/src/rules/issues/events/duplicateEventTriggerRule.ts +2 -2
- package/src/rules/issues/events/noReferenceEventRule.ts +2 -2
- package/src/rules/issues/events/unknownEventRule.ts +2 -2
- package/src/rules/issues/events/unknownTriggerEventRule.ts +2 -2
- package/src/rules/issues/formulas/duplicateFormulaArgumentNameRule.ts +2 -2
- package/src/rules/issues/formulas/legacyFormulaRule.fix.ts +2 -2
- package/src/rules/issues/formulas/legacyFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/noReferenceComponentFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/noReferenceProjectFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/unknownComponentFormulaInputRule.ts +2 -2
- package/src/rules/issues/formulas/unknownFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/unknownProjectFormulaInputRule.ts +2 -2
- package/src/rules/issues/formulas/unknownProjectFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/unknownRepeatIndexFormulaRule.ts +2 -2
- package/src/rules/issues/formulas/unknownRepeatItemFormulaRule.ts +2 -2
- package/src/rules/issues/logic/noStaticNodeCondition.ts +2 -2
- package/src/rules/issues/logic/noUnnecessaryConditionFalsy.ts +3 -3
- package/src/rules/issues/logic/noUnnecessaryConditionTruthy.ts +3 -3
- package/src/rules/issues/miscellaneous/createStaticSizeConstraintRule.ts +2 -2
- package/src/rules/issues/miscellaneous/noReferenceNodeRule.ts +2 -2
- package/src/rules/issues/miscellaneous/noReferencePackageRule.ts +2 -2
- package/src/rules/issues/miscellaneous/requireExtensionRule.ts +2 -2
- package/src/rules/issues/miscellaneous/unknownCookieRule.ts +7 -4
- package/src/rules/issues/routing/duplicateRouteRule.ts +2 -2
- package/src/rules/issues/routing/duplicateUrlParameterRule.ts +2 -2
- package/src/rules/issues/routing/unknownSetUrlParameterRule.ts +2 -2
- package/src/rules/issues/routing/unknownSetUrlParametersRule.ts +2 -2
- package/src/rules/issues/routing/unknownUrlParameterRule.ts +2 -2
- package/src/rules/issues/slots/unknownComponentSlotRule.ts +2 -2
- package/src/rules/issues/style/invalidStyleSyntaxRule.ts +2 -2
- package/src/rules/issues/style/legacyStyleVariableRule.ts +2 -2
- package/src/rules/issues/style/legacyThemeRule.ts +2 -2
- package/src/rules/issues/style/noReferenceAnimationRule.ts +2 -2
- package/src/rules/issues/style/noReferenceGlobalCSSVariable.ts +2 -2
- package/src/rules/issues/style/unknownCSSVariable.ts +2 -2
- package/src/rules/issues/style/unknownClassnameRule.ts +2 -2
- package/src/rules/issues/variables/noReferenceVariableRule.ts +2 -2
- package/src/rules/issues/variables/unknownVariableRule.ts +2 -2
- package/src/rules/issues/variables/unknownVariableSetterRule.ts +2 -2
- package/src/rules/issues/workflows/duplicateWorkflowParameterRule.ts +29 -28
- package/src/rules/issues/workflows/noPostNavigateAction.ts +2 -2
- package/src/rules/issues/workflows/noReferenceComponentWorkflowRule.ts +2 -2
- package/src/rules/issues/workflows/unknownContextProviderWorkflowRule.ts +2 -2
- package/src/rules/issues/workflows/unknownContextWorkflowRule.ts +2 -2
- package/src/rules/issues/workflows/unknownTriggerWorkflowParameterRule.ts +55 -54
- package/src/rules/issues/workflows/unknownTriggerWorkflowRule.ts +2 -2
- package/src/rules/issues/workflows/unknownWorkflowParameterRule.ts +2 -2
- package/src/rules/search/fieldSearchRule.test.ts +464 -0
- package/src/rules/search/fieldSearchRule.ts +391 -0
- package/src/search.worker.ts +19 -46
- package/src/searchProject.ts +45 -27
- package/src/types.ts +41 -3
- package/src/util/contextlessEvaluateFormula.ts +4 -4
- package/src/util/parseSearchQuery.test.ts +56 -0
- package/src/util/parseSearchQuery.ts +92 -0
|
@@ -38,7 +38,7 @@ export const contextlessEvaluateFormula = (
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
case 'array': {
|
|
41
|
-
const results = formula.arguments.map((arg) =>
|
|
41
|
+
const results = (formula.arguments ?? []).map((arg) =>
|
|
42
42
|
contextlessEvaluateFormula(arg.formula),
|
|
43
43
|
)
|
|
44
44
|
|
|
@@ -49,7 +49,7 @@ export const contextlessEvaluateFormula = (
|
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
case 'record': {
|
|
52
|
-
const entries = Object.entries(formula.entries).map(
|
|
52
|
+
const entries = Object.entries(formula.entries ?? {}).map(
|
|
53
53
|
([key, arg]) => [key, contextlessEvaluateFormula(arg.formula)] as const,
|
|
54
54
|
)
|
|
55
55
|
|
|
@@ -68,7 +68,7 @@ export const contextlessEvaluateFormula = (
|
|
|
68
68
|
// - ANY condition is static and falsy
|
|
69
69
|
// - EMPTY argument list is always true
|
|
70
70
|
case 'and': {
|
|
71
|
-
const results = formula.arguments.map((arg) =>
|
|
71
|
+
const results = (formula.arguments ?? []).map((arg) =>
|
|
72
72
|
contextlessEvaluateFormula(arg.formula),
|
|
73
73
|
)
|
|
74
74
|
|
|
@@ -90,7 +90,7 @@ export const contextlessEvaluateFormula = (
|
|
|
90
90
|
// - ALL conditions are static AND falsy
|
|
91
91
|
// - EMPTY argument list is always false
|
|
92
92
|
case 'or': {
|
|
93
|
-
const results = formula.arguments.map((arg) =>
|
|
93
|
+
const results = (formula.arguments ?? []).map((arg) =>
|
|
94
94
|
contextlessEvaluateFormula(arg.formula),
|
|
95
95
|
)
|
|
96
96
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { describe, expect, test } from 'bun:test'
|
|
2
|
+
import { parseSearchQuery } from './parseSearchQuery'
|
|
3
|
+
|
|
4
|
+
describe('parseSearchQuery', () => {
|
|
5
|
+
test('it should parse simple strings as a literal', () => {
|
|
6
|
+
const result = parseSearchQuery('Some string')
|
|
7
|
+
expect(result).toHaveLength(1)
|
|
8
|
+
expect(result[0].fields).toBe('Some string')
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
test('it should parse case-insensitive regex', () => {
|
|
12
|
+
const result = parseSearchQuery('/some string/i')
|
|
13
|
+
expect(result).toHaveLength(1)
|
|
14
|
+
expect(result[0].fields).toBeInstanceOf(RegExp)
|
|
15
|
+
expect((result[0].fields as RegExp).source).toBe('some string')
|
|
16
|
+
expect((result[0].fields as RegExp).flags).toBe('i')
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
test('it should parse case-sensitive regex', () => {
|
|
20
|
+
const result = parseSearchQuery('/Some string/')
|
|
21
|
+
expect(result).toHaveLength(1)
|
|
22
|
+
expect(result[0].fields).toBeInstanceOf(RegExp)
|
|
23
|
+
expect((result[0].fields as RegExp).source).toBe('Some string')
|
|
24
|
+
expect((result[0].fields as RegExp).flags).toBe('')
|
|
25
|
+
})
|
|
26
|
+
|
|
27
|
+
test('it should parse Variable,my-var as a literal', () => {
|
|
28
|
+
const result = parseSearchQuery('Variable,my-var')
|
|
29
|
+
expect(result).toHaveLength(1)
|
|
30
|
+
expect(result[0].fields).toBe('Variable,my-var')
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
test('it should parse programmatic search with empty nodeType and exact match quotes', () => {
|
|
34
|
+
const result = parseSearchQuery('<>tag:"div"')
|
|
35
|
+
expect(result).toHaveLength(1)
|
|
36
|
+
expect(result[0].nodeType).toBeUndefined()
|
|
37
|
+
expect(result[0].fields).toEqual({ tag: '"div"' })
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
test('it should parse programmatic search with specific nodeType and exact match quotes', () => {
|
|
41
|
+
const result = parseSearchQuery('<component-node>tag:"img"')
|
|
42
|
+
expect(result).toHaveLength(1)
|
|
43
|
+
expect(result[0].nodeType).toBe('component-node')
|
|
44
|
+
expect(result[0].fields).toEqual({ tag: '"img"' })
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
test('it should parse programmatic search with multiple fields and regex', () => {
|
|
48
|
+
const result = parseSearchQuery('<>tag:"img" attrs.alt:"/.+/"')
|
|
49
|
+
expect(result).toHaveLength(1)
|
|
50
|
+
expect(result[0].fields).toEqual({
|
|
51
|
+
tag: '"img"',
|
|
52
|
+
'attrs.alt': expect.any(RegExp),
|
|
53
|
+
})
|
|
54
|
+
expect((result[0].fields as any)['attrs.alt'].source).toBe('.+')
|
|
55
|
+
})
|
|
56
|
+
})
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { NodeType } from '../types'
|
|
2
|
+
|
|
3
|
+
export type SearchQueryPart = {
|
|
4
|
+
nodeType?: NodeType['nodeType']
|
|
5
|
+
fields?: Record<string, string | RegExp> | string | RegExp
|
|
6
|
+
exclude?: boolean // -key:value or -value
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Takes a string query and return a search query object.
|
|
11
|
+
*
|
|
12
|
+
* Query format examples:
|
|
13
|
+
* - `Some string` - will match exactly "some string" (case insensitive) in a field
|
|
14
|
+
* - `/some string/i` - same as the above
|
|
15
|
+
* - `/Some string/` - same as the above, but case sensitive (any regex allowed)
|
|
16
|
+
* - `Variable,my-var` - will match formula path nodes, as Arrays and objects are stringified when possible.
|
|
17
|
+
*
|
|
18
|
+
* Programmatic search only (WIP, may change):
|
|
19
|
+
* All starts with "<" and contains one ">".
|
|
20
|
+
*
|
|
21
|
+
* - `<>tag:"div"` - will return fields with key "tag" and value exactly "div"
|
|
22
|
+
* - `<component-node>tag:"img"` - same as above, but will only return nodes of type "component-node"
|
|
23
|
+
* - `<>tag:"img" attrs.alt:"/.+/"` - has field tag equals "img" and any value in field "alt" of object "attrs" on the same element.
|
|
24
|
+
* - `<formula>type:"path" path:Variable,my-var` - precisely match a formula with type "path" and path ["Variable", "my-var"] (note that arrays and objects are stringified when possible, so we can use the same syntax as the literal search for exact matches on them)
|
|
25
|
+
*/
|
|
26
|
+
export function parseSearchQuery(query: string): SearchQueryPart[] {
|
|
27
|
+
const trimmed = query.trim()
|
|
28
|
+
if (!trimmed) return []
|
|
29
|
+
|
|
30
|
+
// Check for programmatic search: <nodeType>field:"value" ...
|
|
31
|
+
const closingBracketIndex = trimmed.startsWith('<')
|
|
32
|
+
? trimmed.indexOf('>')
|
|
33
|
+
: -1
|
|
34
|
+
if (closingBracketIndex > 0) {
|
|
35
|
+
const nodeTypeStr = trimmed.slice(1, closingBracketIndex).trim()
|
|
36
|
+
const fieldsPart = trimmed.slice(closingBracketIndex + 1).trim()
|
|
37
|
+
|
|
38
|
+
const nodeType = nodeTypeStr
|
|
39
|
+
? (nodeTypeStr as NodeType['nodeType'])
|
|
40
|
+
: undefined
|
|
41
|
+
const fields: Record<string, string | RegExp> = {}
|
|
42
|
+
|
|
43
|
+
// Regex to match field:"value" or field:"/regex/flags"
|
|
44
|
+
// Modified to swallow quotes around /regex/
|
|
45
|
+
const fieldRegex =
|
|
46
|
+
/\s*([^:]+?)\s*:(?:"\/([^/]*)\/([gimuy]*)"|(?:"([^"]*)"))/gi
|
|
47
|
+
let match: RegExpExecArray | null
|
|
48
|
+
while ((match = fieldRegex.exec(fieldsPart)) !== null) {
|
|
49
|
+
const fieldName = match[1]
|
|
50
|
+
const regexPattern = match[2]
|
|
51
|
+
const regexFlags = match[3]
|
|
52
|
+
const quotedValue = match[4]
|
|
53
|
+
|
|
54
|
+
if (regexPattern !== undefined) {
|
|
55
|
+
try {
|
|
56
|
+
fields[fieldName] = new RegExp(regexPattern, regexFlags || undefined)
|
|
57
|
+
} catch {
|
|
58
|
+
fields[fieldName] = `/${regexPattern}/${regexFlags}`
|
|
59
|
+
}
|
|
60
|
+
} else if (quotedValue !== undefined) {
|
|
61
|
+
// Keep the quotes to indicate "exact match" in the rule
|
|
62
|
+
fields[fieldName] = `"${quotedValue}"`
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return [{ nodeType, fields }]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// Regular text search
|
|
70
|
+
// Regex match?
|
|
71
|
+
if (trimmed.startsWith('/') && trimmed.lastIndexOf('/') > 0) {
|
|
72
|
+
const lastSlashIndex = trimmed.lastIndexOf('/')
|
|
73
|
+
const pattern = trimmed.slice(1, lastSlashIndex)
|
|
74
|
+
const flags = trimmed.slice(lastSlashIndex + 1)
|
|
75
|
+
try {
|
|
76
|
+
// If no flags provided, don't default to 'i' if user specifically provided /.../
|
|
77
|
+
// The requirement says /Some string/ is case sensitive, /some string/i is case insensitive.
|
|
78
|
+
return [{ fields: new RegExp(pattern, flags || undefined) }]
|
|
79
|
+
} catch {
|
|
80
|
+
// Fallback
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Default: literal case-insensitive match (as a regex for simple consistency with rule)
|
|
85
|
+
// The user says matches exactly "some string" (case insensitive)
|
|
86
|
+
// We use the raw string here because we want to match it exactly (not as a regex)
|
|
87
|
+
return [
|
|
88
|
+
{
|
|
89
|
+
fields: trimmed,
|
|
90
|
+
},
|
|
91
|
+
]
|
|
92
|
+
}
|