@nordcraft/search 1.0.93 → 1.0.94
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.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.map +1 -1
- package/dist/rules/issues/logic/noUnnecessaryConditionTruthy.d.ts +2 -2
- 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.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.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.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 +2 -2
- package/src/rules/issues/logic/noUnnecessaryConditionTruthy.ts +2 -2
- 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 +2 -2
- 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/parseSearchQuery.test.ts +56 -0
- package/src/util/parseSearchQuery.ts +92 -0
|
@@ -0,0 +1,464 @@
|
|
|
1
|
+
import type { ProjectFiles } from '@nordcraft/ssr/dist/ssr.types'
|
|
2
|
+
import { describe, expect, test } from 'bun:test'
|
|
3
|
+
import { searchProject } from '../../searchProject'
|
|
4
|
+
import { createFieldSearchRule } from './fieldSearchRule'
|
|
5
|
+
|
|
6
|
+
describe('fieldSearchRule', () => {
|
|
7
|
+
const files: ProjectFiles = {
|
|
8
|
+
formulas: {},
|
|
9
|
+
components: {
|
|
10
|
+
test: {
|
|
11
|
+
name: 'test',
|
|
12
|
+
nodes: {
|
|
13
|
+
myNode: {
|
|
14
|
+
type: 'element',
|
|
15
|
+
tag: 'div',
|
|
16
|
+
attrs: {
|
|
17
|
+
alt: {
|
|
18
|
+
type: 'and',
|
|
19
|
+
arguments: [
|
|
20
|
+
{
|
|
21
|
+
formula: {
|
|
22
|
+
type: 'function',
|
|
23
|
+
name: 'myFormula',
|
|
24
|
+
arguments: [],
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
children: [],
|
|
31
|
+
events: {},
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
formulas: {
|
|
35
|
+
myFormula: {
|
|
36
|
+
name: 'myFormula',
|
|
37
|
+
formula: {
|
|
38
|
+
type: 'function',
|
|
39
|
+
name: 'myFormula',
|
|
40
|
+
arguments: [],
|
|
41
|
+
'@nordcraft/metadata': {
|
|
42
|
+
comments: {
|
|
43
|
+
0: {
|
|
44
|
+
index: 0,
|
|
45
|
+
text: 'This is a comment',
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
apis: {},
|
|
53
|
+
attributes: {},
|
|
54
|
+
variables: {},
|
|
55
|
+
route: {
|
|
56
|
+
path: [],
|
|
57
|
+
query: {},
|
|
58
|
+
},
|
|
59
|
+
workflows: {},
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
test('it should find nodes with programmatic search', () => {
|
|
65
|
+
const results = Array.from(
|
|
66
|
+
searchProject({
|
|
67
|
+
withDetails: false,
|
|
68
|
+
files,
|
|
69
|
+
rules: [
|
|
70
|
+
createFieldSearchRule({
|
|
71
|
+
query: '<formula>name:"myFormula"',
|
|
72
|
+
}),
|
|
73
|
+
],
|
|
74
|
+
}),
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
expect(results).toHaveLength(2)
|
|
78
|
+
})
|
|
79
|
+
|
|
80
|
+
test('it should find nodes with programmatic search and empty nodeType', () => {
|
|
81
|
+
const results = Array.from(
|
|
82
|
+
searchProject({
|
|
83
|
+
withDetails: false,
|
|
84
|
+
files,
|
|
85
|
+
rules: [
|
|
86
|
+
createFieldSearchRule({
|
|
87
|
+
query: '<>tag:"div"',
|
|
88
|
+
}),
|
|
89
|
+
],
|
|
90
|
+
}),
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
expect(results).toHaveLength(1)
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
test('it should find nodes with plain text search', () => {
|
|
97
|
+
const results = Array.from(
|
|
98
|
+
searchProject({
|
|
99
|
+
withDetails: false,
|
|
100
|
+
files,
|
|
101
|
+
rules: [
|
|
102
|
+
createFieldSearchRule({
|
|
103
|
+
query: 'myForm',
|
|
104
|
+
}),
|
|
105
|
+
],
|
|
106
|
+
}),
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
expect(results).toHaveLength(3)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
test('it should find nodes with plain text search (exact match with quotes)', () => {
|
|
113
|
+
const resultsWithSubstring = Array.from(
|
|
114
|
+
searchProject({
|
|
115
|
+
withDetails: false,
|
|
116
|
+
files,
|
|
117
|
+
rules: [
|
|
118
|
+
createFieldSearchRule({
|
|
119
|
+
query: '"myForm"',
|
|
120
|
+
}),
|
|
121
|
+
],
|
|
122
|
+
}),
|
|
123
|
+
)
|
|
124
|
+
const resultExactMatch = Array.from(
|
|
125
|
+
searchProject({
|
|
126
|
+
withDetails: false,
|
|
127
|
+
files,
|
|
128
|
+
rules: [
|
|
129
|
+
createFieldSearchRule({
|
|
130
|
+
query: '"myFormula"',
|
|
131
|
+
}),
|
|
132
|
+
],
|
|
133
|
+
}),
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
expect(resultsWithSubstring).toHaveLength(0)
|
|
137
|
+
expect(resultExactMatch).toHaveLength(3)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
test('it should find nodes with regex in programmatic search', () => {
|
|
141
|
+
const results = Array.from(
|
|
142
|
+
searchProject({
|
|
143
|
+
withDetails: false,
|
|
144
|
+
files,
|
|
145
|
+
rules: [
|
|
146
|
+
createFieldSearchRule({
|
|
147
|
+
query: '<>tag:"div" attrs.alt.arguments.0.formula.name:"/my.*/"',
|
|
148
|
+
}),
|
|
149
|
+
],
|
|
150
|
+
}),
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
expect(results).toHaveLength(1)
|
|
154
|
+
expect(results[0].path).toEqual(['components', 'test', 'nodes', 'myNode'])
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
test('it should find path formulas with array match (Variable,my-var)', () => {
|
|
158
|
+
const _files = {
|
|
159
|
+
components: {
|
|
160
|
+
test: {
|
|
161
|
+
name: 'test',
|
|
162
|
+
nodes: {},
|
|
163
|
+
formulas: {
|
|
164
|
+
myFormula: {
|
|
165
|
+
name: 'myFormula',
|
|
166
|
+
formula: {
|
|
167
|
+
type: 'path',
|
|
168
|
+
path: ['Variables', 'my-var', 'field'],
|
|
169
|
+
} as any,
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
apis: {},
|
|
173
|
+
attributes: {},
|
|
174
|
+
variables: {},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
} as any
|
|
178
|
+
const results1 = Array.from(
|
|
179
|
+
searchProject({
|
|
180
|
+
withDetails: true,
|
|
181
|
+
files: _files,
|
|
182
|
+
rules: [
|
|
183
|
+
createFieldSearchRule({
|
|
184
|
+
// Should work with or without whitespace after the comma
|
|
185
|
+
query: 'Variables, my-var',
|
|
186
|
+
}),
|
|
187
|
+
],
|
|
188
|
+
}),
|
|
189
|
+
)
|
|
190
|
+
const results2 = Array.from(
|
|
191
|
+
searchProject({
|
|
192
|
+
withDetails: true,
|
|
193
|
+
files: _files,
|
|
194
|
+
rules: [
|
|
195
|
+
createFieldSearchRule({
|
|
196
|
+
query: 'Variables,my-var',
|
|
197
|
+
}),
|
|
198
|
+
],
|
|
199
|
+
}),
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
expect(results1).toHaveLength(1)
|
|
203
|
+
expect(results1[0].path).toEqual([
|
|
204
|
+
'components',
|
|
205
|
+
'test',
|
|
206
|
+
'formulas',
|
|
207
|
+
'myFormula',
|
|
208
|
+
'formula',
|
|
209
|
+
])
|
|
210
|
+
expect(results2).toHaveLength(1)
|
|
211
|
+
expect(results2[0].path).toEqual([
|
|
212
|
+
'components',
|
|
213
|
+
'test',
|
|
214
|
+
'formulas',
|
|
215
|
+
'myFormula',
|
|
216
|
+
'formula',
|
|
217
|
+
])
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
test('it should find nodes with plain text search (includes)', () => {
|
|
221
|
+
const results = Array.from(
|
|
222
|
+
searchProject({
|
|
223
|
+
files,
|
|
224
|
+
rules: [
|
|
225
|
+
createFieldSearchRule({
|
|
226
|
+
query: 'formula',
|
|
227
|
+
}),
|
|
228
|
+
],
|
|
229
|
+
}),
|
|
230
|
+
)
|
|
231
|
+
|
|
232
|
+
expect(results).toHaveLength(3)
|
|
233
|
+
})
|
|
234
|
+
|
|
235
|
+
test('it should find nodes with case-sensitive regex', () => {
|
|
236
|
+
const results = Array.from(
|
|
237
|
+
searchProject({
|
|
238
|
+
files,
|
|
239
|
+
rules: [
|
|
240
|
+
createFieldSearchRule({
|
|
241
|
+
query: '/myFormula/',
|
|
242
|
+
}),
|
|
243
|
+
],
|
|
244
|
+
}),
|
|
245
|
+
)
|
|
246
|
+
|
|
247
|
+
expect(results).toHaveLength(3)
|
|
248
|
+
|
|
249
|
+
const results2 = Array.from(
|
|
250
|
+
searchProject({
|
|
251
|
+
files,
|
|
252
|
+
rules: [
|
|
253
|
+
createFieldSearchRule({
|
|
254
|
+
query: '/myformula/',
|
|
255
|
+
}),
|
|
256
|
+
],
|
|
257
|
+
}),
|
|
258
|
+
)
|
|
259
|
+
expect(results2).toHaveLength(0)
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
test('it should find nodes with complex object fields', () => {
|
|
263
|
+
const results = Array.from(
|
|
264
|
+
searchProject({
|
|
265
|
+
files,
|
|
266
|
+
rules: [
|
|
267
|
+
createFieldSearchRule({
|
|
268
|
+
query: '<formula>@nordcraft/metadata.comments.0.text:comment',
|
|
269
|
+
}),
|
|
270
|
+
],
|
|
271
|
+
}),
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
expect(results).toHaveLength(3)
|
|
275
|
+
expect(results[0].path).toEqual([
|
|
276
|
+
'components',
|
|
277
|
+
'test',
|
|
278
|
+
'formulas',
|
|
279
|
+
'myFormula',
|
|
280
|
+
'formula',
|
|
281
|
+
])
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
test('it should find nodes with complex object exact match', () => {
|
|
285
|
+
const results = Array.from(
|
|
286
|
+
searchProject({
|
|
287
|
+
files,
|
|
288
|
+
rules: [
|
|
289
|
+
createFieldSearchRule({
|
|
290
|
+
query:
|
|
291
|
+
'<formula>@nordcraft/metadata.comments.0.text:"This is a comment"',
|
|
292
|
+
}),
|
|
293
|
+
],
|
|
294
|
+
}),
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
expect(results).toHaveLength(1)
|
|
298
|
+
expect(results[0].path).toEqual([
|
|
299
|
+
'components',
|
|
300
|
+
'test',
|
|
301
|
+
'formulas',
|
|
302
|
+
'myFormula',
|
|
303
|
+
'formula',
|
|
304
|
+
])
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
test('it has details when withDetails is true', () => {
|
|
308
|
+
const results = Array.from(
|
|
309
|
+
searchProject({
|
|
310
|
+
withDetails: true,
|
|
311
|
+
files,
|
|
312
|
+
rules: [
|
|
313
|
+
createFieldSearchRule({
|
|
314
|
+
query: 'Form',
|
|
315
|
+
}),
|
|
316
|
+
],
|
|
317
|
+
}),
|
|
318
|
+
)
|
|
319
|
+
|
|
320
|
+
expect(results).toHaveLength(3)
|
|
321
|
+
expect(results[1].details.context).toEqual({
|
|
322
|
+
before: 'my',
|
|
323
|
+
matched: 'Form',
|
|
324
|
+
after: 'ula',
|
|
325
|
+
})
|
|
326
|
+
expect(results[1].details.field).toEqual('name')
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
test('it should not report from skipped fields', () => {
|
|
330
|
+
const filesWithChildren: ProjectFiles = {
|
|
331
|
+
...files,
|
|
332
|
+
components: {
|
|
333
|
+
test: {
|
|
334
|
+
...files.components.test,
|
|
335
|
+
name: 'test',
|
|
336
|
+
nodes: {
|
|
337
|
+
...files.components.test?.nodes,
|
|
338
|
+
myNode: {
|
|
339
|
+
...files.components.test?.nodes?.myNode,
|
|
340
|
+
children: ['_xyz_'],
|
|
341
|
+
attrs: {},
|
|
342
|
+
events: {},
|
|
343
|
+
tag: 'div',
|
|
344
|
+
type: 'element',
|
|
345
|
+
classes: {
|
|
346
|
+
myClass: {},
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
}
|
|
353
|
+
const results = Array.from(
|
|
354
|
+
searchProject({
|
|
355
|
+
withDetails: true,
|
|
356
|
+
files: filesWithChildren as any,
|
|
357
|
+
rules: [
|
|
358
|
+
createFieldSearchRule({
|
|
359
|
+
query: 'xyz',
|
|
360
|
+
skippedFields: {
|
|
361
|
+
'component-node': ['children'],
|
|
362
|
+
},
|
|
363
|
+
}),
|
|
364
|
+
],
|
|
365
|
+
}),
|
|
366
|
+
)
|
|
367
|
+
expect(results).toBeEmpty()
|
|
368
|
+
})
|
|
369
|
+
|
|
370
|
+
test('regex "value.*person" search should match combined from key and values', () => {
|
|
371
|
+
const filesWithCombinedField: ProjectFiles = {
|
|
372
|
+
...files,
|
|
373
|
+
components: {
|
|
374
|
+
test: {
|
|
375
|
+
...files.components.test,
|
|
376
|
+
name: 'test',
|
|
377
|
+
nodes: {
|
|
378
|
+
...files.components.test?.nodes,
|
|
379
|
+
myNode: {
|
|
380
|
+
...files.components.test?.nodes?.myNode,
|
|
381
|
+
type: 'element',
|
|
382
|
+
tag: 'img',
|
|
383
|
+
attrs: {
|
|
384
|
+
alt: {
|
|
385
|
+
type: 'value',
|
|
386
|
+
value: 'a person',
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
events: {},
|
|
390
|
+
children: [],
|
|
391
|
+
},
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
},
|
|
395
|
+
}
|
|
396
|
+
const results = Array.from(
|
|
397
|
+
searchProject({
|
|
398
|
+
withDetails: true,
|
|
399
|
+
files: filesWithCombinedField as any,
|
|
400
|
+
rules: [
|
|
401
|
+
createFieldSearchRule({
|
|
402
|
+
query: '/value.*person/',
|
|
403
|
+
}),
|
|
404
|
+
],
|
|
405
|
+
}),
|
|
406
|
+
)
|
|
407
|
+
|
|
408
|
+
expect(results).toHaveLength(1)
|
|
409
|
+
expect(results[0].path).toEqual([
|
|
410
|
+
'components',
|
|
411
|
+
'test',
|
|
412
|
+
'nodes',
|
|
413
|
+
'myNode',
|
|
414
|
+
'attrs',
|
|
415
|
+
'alt',
|
|
416
|
+
])
|
|
417
|
+
})
|
|
418
|
+
|
|
419
|
+
test('match on a key should append the value to the context "after" field', () => {
|
|
420
|
+
const filesWithCombinedField: ProjectFiles = {
|
|
421
|
+
...files,
|
|
422
|
+
components: {
|
|
423
|
+
test: {
|
|
424
|
+
...files.components.test,
|
|
425
|
+
name: 'test',
|
|
426
|
+
nodes: {
|
|
427
|
+
...files.components.test?.nodes,
|
|
428
|
+
myNode: {
|
|
429
|
+
...files.components.test?.nodes?.myNode,
|
|
430
|
+
type: 'element',
|
|
431
|
+
tag: 'img',
|
|
432
|
+
events: {},
|
|
433
|
+
children: [],
|
|
434
|
+
attrs: {},
|
|
435
|
+
style: {
|
|
436
|
+
'background:': 'var(--dark-blue)',
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
},
|
|
440
|
+
},
|
|
441
|
+
},
|
|
442
|
+
}
|
|
443
|
+
const results = Array.from(
|
|
444
|
+
searchProject({
|
|
445
|
+
withDetails: true,
|
|
446
|
+
files: filesWithCombinedField as any,
|
|
447
|
+
rules: [
|
|
448
|
+
createFieldSearchRule({
|
|
449
|
+
query: '/ag/',
|
|
450
|
+
}),
|
|
451
|
+
],
|
|
452
|
+
}),
|
|
453
|
+
)
|
|
454
|
+
|
|
455
|
+
expect(results).toHaveLength(1)
|
|
456
|
+
expect(results[0].details.nodeType).toBe('component-node')
|
|
457
|
+
expect(results[0].details.field).toBe('tag')
|
|
458
|
+
expect(results[0].details.context).toEqual({
|
|
459
|
+
before: 't',
|
|
460
|
+
matched: 'ag',
|
|
461
|
+
after: ': img',
|
|
462
|
+
})
|
|
463
|
+
})
|
|
464
|
+
})
|