diff --git a/firebase_rules_generator/lib/src/common/rules_context.dart b/firebase_rules_generator/lib/src/common/rules_context.dart index 0d276ce..315f4d4 100644 --- a/firebase_rules_generator/lib/src/common/rules_context.dart +++ b/firebase_rules_generator/lib/src/common/rules_context.dart @@ -6,8 +6,8 @@ class RulesContext { /// The resolver final Resolver resolver; - /// All paths available in the current context - final Set paths; + /// All wildcards available in the current context + final Set wildcards; /// The current indentation level final int indent; @@ -19,7 +19,7 @@ class RulesContext { RulesContext._( this.resolver, { - required this.paths, + required this.wildcards, required this.indent, }) : functions = const []; @@ -27,7 +27,7 @@ class RulesContext { RulesContext.root( this.resolver, { this.functions = const [], - }) : paths = {}, + }) : wildcards = {}, indent = 2; /// Get the first resolvable element with the given [name] and type [T] @@ -39,17 +39,17 @@ class RulesContext { .first; } - /// Dive deeper into the context with additional paths and indentation + /// Dive deeper into the context with additional wildcards and indentation /// /// A clean dive will overwrite existing context - RulesContext dive({bool clean = false, Set? paths}) { - final newPaths = { - if (!clean) ...this.paths, - ...?paths?.where((e) => e != '_'), + RulesContext dive({bool clean = false, Set? wildcards}) { + final newWildcards = { + if (!clean) ...this.wildcards, + ...?wildcards?.where((e) => e != '_'), }; return RulesContext._( resolver, - paths: newPaths, + wildcards: newWildcards, indent: indent + 2, ); } diff --git a/firebase_rules_generator/lib/src/common/validator.dart b/firebase_rules_generator/lib/src/common/validator.dart index aaeeda6..4b4811e 100644 --- a/firebase_rules_generator/lib/src/common/validator.dart +++ b/firebase_rules_generator/lib/src/common/validator.dart @@ -8,20 +8,19 @@ void validateFunctionParameters({ required FunctionExpression function, required String Function(String wildcard) createExpectedSignature, }) { - final String expectedWildcardParameterName; - final pathWildcards = RegExp(wildcardMatcher).allMatches(path); - if (pathWildcards.length > 1) { + final String expectedWildcard; + final wildcards = RegExp(wildcardMatcher).allMatches(path); + if (wildcards.length > 1) { throw InvalidGenerationSourceError( 'Path cannot contain more than one wildcard: $path', ); - } else if (pathWildcards.length == 1) { - expectedWildcardParameterName = pathWildcards.single[1]!; + } else if (wildcards.length == 1) { + expectedWildcard = wildcards.single[1]!; } else { - expectedWildcardParameterName = '_'; + expectedWildcard = '_'; } - final expectedSignature = - createExpectedSignature(expectedWildcardParameterName); + final expectedSignature = createExpectedSignature(expectedWildcard); final actualSignature = function.parameters.toString(); if (expectedSignature != actualSignature) { throw InvalidGenerationSourceError( diff --git a/firebase_rules_generator/lib/src/common/visitor.dart b/firebase_rules_generator/lib/src/common/visitor.dart index 48d6ca5..5579330 100644 --- a/firebase_rules_generator/lib/src/common/visitor.dart +++ b/firebase_rules_generator/lib/src/common/visitor.dart @@ -51,13 +51,13 @@ Stream visitParameter( validate?.call(function); - final pathParameter = getParameterName(function, 0); + final wildcard = getParameterName(function, 0); final elements = function.body.childEntities .whereType() .firstOrNull ?.elements; - final newContext = context.dive(clean: cleanContext, paths: {pathParameter}); + final newContext = context.dive(clean: cleanContext, wildcards: {wildcard}); if (elements == null) { yield* visit(newContext, function.body); } else { diff --git a/firebase_rules_generator/lib/src/database/sanitizer.dart b/firebase_rules_generator/lib/src/database/sanitizer.dart index 24bf0f1..ece000a 100644 --- a/firebase_rules_generator/lib/src/database/sanitizer.dart +++ b/firebase_rules_generator/lib/src/database/sanitizer.dart @@ -28,8 +28,9 @@ String sanitizeRules(String input) { /// Sanitize path parameter prefixes from rules String sanitizePaths(RulesContext context, String input) { var sanitized = input; - for (final path in context.paths) { - sanitized = sanitized.replaceAll(RegExp(r'\b' + path + r'\b'), '\$$path'); + for (final wildcard in context.wildcards) { + sanitized = + sanitized.replaceAll(RegExp(r'\b' + wildcard + r'\b'), '\$$wildcard'); } return sanitized; } diff --git a/firebase_rules_linter/lib/lints/invalid_match_function.dart b/firebase_rules_linter/lib/lints/invalid_match_function.dart index ab7ebc7..9af4550 100644 --- a/firebase_rules_linter/lib/lints/invalid_match_function.dart +++ b/firebase_rules_linter/lib/lints/invalid_match_function.dart @@ -25,19 +25,18 @@ class InvalidMatchFunction extends DartLintRule { required FunctionExpression function, required String Function(String wildcard) createExpectedSignature, }) { - final String expectedWildcardParameterName; - final pathWildcards = RegExp(wildcardMatcher).allMatches(path); - if (pathWildcards.length > 1) { + final String expectedWildcard; + final wildcards = RegExp(wildcardMatcher).allMatches(path); + if (wildcards.length > 1) { // The path is invalid. This is handled by another lint. return null; - } else if (pathWildcards.length == 1) { - expectedWildcardParameterName = pathWildcards.single[1]!; + } else if (wildcards.length == 1) { + expectedWildcard = wildcards.single[1]!; } else { - expectedWildcardParameterName = '_'; + expectedWildcard = '_'; } - final expectedSignature = - createExpectedSignature(expectedWildcardParameterName); + final expectedSignature = createExpectedSignature(expectedWildcard); final actualSignature = function.parameters.toString(); if (expectedSignature != actualSignature) { return expectedSignature;