e58397a75d
ci: harden workflow permissions and fix shellcheck warnings ( #99 )
...
* ci: add least-privilege permissions and quote shell variables in CI workflow
* ci: restrict root permissions and quote shell variables in test-coverage workflow
* ci: quote shell variables and group redirects in release workflow
2026-03-08 03:45:56 +02:00
f6b0f864b4
fix: workflows now use .php-version, other fixes ( #98 )
...
* ci: use .php-version file in CI coverage and security jobs
* ci: use .php-version file in release workflow
* ci: use .php-version file in phpcs workflow
* ci: use .php-version file in test-coverage workflow
* ci: remove master branch from pr-lint workflow triggers
2026-03-07 23:30:32 +02:00
renovate[bot]
0fd7cd099f
chore(deps): update ivuorinen/actions action (v2026.02.24 → v2026.03.06) ( #97 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-07 20:56:38 +02:00
38946574a4
ci: migrate CodeQL to ivuorinen/actions/codeql-analysis ( #96 )
...
* ci: migrate codeql to composable workflow
* fix: correct codeql workflow language, queries, permissions, and action ref
- Use 'javascript' instead of 'javascript-typescript' for CodeQL language
- Add queries: security-and-quality parameter
- Set root-level permissions to {}
- Add job-level permissions (actions, contents, packages, security-events)
- Pin action ref to commit hash with version comment
- Fix mangled cron schedule
2026-03-07 18:44:29 +02:00
renovate[bot]
1be44fff9d
chore(deps): lock file maintenance ( #95 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 09:09:46 +02:00
renovate[bot]
3be9c07d6c
chore(deps)!: update actions/upload-artifact (v6.0.0 → v7.0.0) ( #94 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 03:45:27 +02:00
renovate[bot]
8ec91aad35
chore(deps): update ivuorinen/actions action (v2026.01.21 → v2026.02.24) ( #93 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-26 21:04:01 +02:00
renovate[bot]
5eb01578d2
chore(deps): update github/codeql-action action (v4.32.0 → v4.32.4) ( #90 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 10:09:09 +00:00
renovate[bot]
110598e921
chore(deps): update pre-commit hook rhysd/actionlint (v1.7.10 → v1.7.11) ( #92 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 07:57:48 +00:00
renovate[bot]
9af85cb9b1
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.499 → 3.2.506) ( #91 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 07:58:30 +02:00
renovate[bot]
1a60d2b573
chore(deps): lock file maintenance ( #89 )
2026-02-23 21:41:03 +02:00
renovate[bot]
97ac6b1eae
chore(deps): update actions/cache action (v5.0.2 → v5.0.3) ( #84 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-01 10:25:28 +02:00
47564c5cd6
feat!: upgrade min. php version to 8.4 ( #86 )
...
* feat: upgrade min php to 7.4, upgrade packages
* chore: update ci/cd, docs, supporting config to php 8.4
* chore: update rest of the docs, supporting config to php 8.4
2026-02-01 10:20:40 +02:00
renovate[bot]
3d3448dcf0
chore(deps): update phpunit/phpunit (11.5.46 → 11.5.50) [security] ( #82 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-31 11:26:11 +02:00
renovate[bot]
f16eb2a095
chore(deps): update github/codeql-action action (v4.31.9 → v4.32.0) ( #81 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-28 16:44:13 +02:00
renovate[bot]
451726a365
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.497 → 3.2.499) ( #79 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 12:15:38 +00:00
renovate[bot]
966618ec5a
chore(deps): update ivuorinen/actions action (v2026.01.13 → v2026.01.21) ( #78 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 11:49:02 +00:00
renovate[bot]
c3f5ddcc45
chore(deps): update actions/cache action (v5.0.1 → v5.0.2) ( #76 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 11:32:05 +00:00
renovate[bot]
e499663b5d
chore(deps): update actions/checkout action (v6.0.1 → v6.0.2) ( #77 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 10:32:44 +00:00
renovate[bot]
c89bc1ae72
chore(deps): update pre-commit hook adrienverge/yamllint (v1.37.1 → v1.38.0) ( #80 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 08:51:37 +02:00
renovate[bot]
74ec52721e
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.69.2 → 42.84.0) ( #75 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-20 17:54:42 +02:00
renovate[bot]
7fe55b86f8
chore(deps): update ivuorinen/actions action (v2026.01.06 → v2026.01.13) ( #74 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-15 21:33:45 +02:00
renovate[bot]
2a157f1871
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.496 → 3.2.497) ( #72 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-07 14:02:08 +00:00
renovate[bot]
36c4fd6e1d
chore(deps): update pre-commit hook rhysd/actionlint (v1.7.9 → v1.7.10) ( #73 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-07 15:53:57 +02:00
renovate[bot]
497353f4f3
chore(deps)!: update ivuorinen/actions (v2025.12.21 → v2026.01.06) ( #71 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-07 15:49:08 +02:00
renovate[bot]
4ab3db8a12
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.64.1 → 42.69.2) ( #70 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-02 12:25:44 +02:00
renovate[bot]
b3eea46780
chore(deps): update pre-commit hook bridgecrewio/checkov (3.2.495 → 3.2.496) ( #67 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-30 08:40:39 +02:00
86deca0371
chore: update README.md
2025-12-22 14:03:27 +02:00
8866daaf33
feat: add advanced architecture, documentation, and coverage improvements ( #65 )
...
* fix(style): resolve PHPCS line-length warnings in source files
* fix(style): resolve PHPCS line-length warnings in test files
* feat(audit): add structured audit logging with ErrorContext and AuditContext
- ErrorContext: standardized error information with sensitive data sanitization
- AuditContext: structured context for audit entries with operation types
- StructuredAuditLogger: enhanced audit logger wrapper with timing support
* feat(recovery): add recovery mechanism for failed masking operations
- FailureMode enum: FAIL_OPEN, FAIL_CLOSED, FAIL_SAFE modes
- RecoveryStrategy interface and RecoveryResult value object
- RetryStrategy: exponential backoff with configurable attempts
- FallbackMaskStrategy: type-aware fallback values
* feat(strategies): add CallbackMaskingStrategy for custom masking logic
- Wraps custom callbacks as MaskingStrategy implementations
- Factory methods: constant(), hash(), partial() for common use cases
- Supports exact match and prefix match for field paths
* docs: add framework integration guides and examples
- symfony-integration.md: Symfony service configuration and Monolog setup
- psr3-decorator.md: PSR-3 logger decorator pattern implementation
- framework-examples.md: CakePHP, CodeIgniter 4, Laminas, Yii2, PSR-15
- docker-development.md: Docker development environment guide
* chore(docker): add Docker development environment
- Dockerfile: PHP 8.2-cli-alpine with Xdebug for coverage
- docker-compose.yml: development services with volume mounts
* feat(demo): add interactive GDPR pattern tester playground
- PatternTester.php: pattern testing utility with strategy support
- index.php: web API endpoint with JSON response handling
- playground.html: interactive web interface for testing patterns
* docs(todo): update with completed medium priority items
- Mark all PHPCS warnings as fixed (81 → 0)
- Document new Audit and Recovery features
- Update test count to 1,068 tests with 2,953 assertions
- Move remaining items to low priority
* feat: add advanced architecture, documentation, and coverage improvements
- Add architecture improvements:
- ArrayAccessorInterface and DotArrayAccessor for decoupled array access
- MaskingOrchestrator for single-responsibility masking coordination
- GdprProcessorBuilder for fluent configuration
- MaskingPluginInterface and AbstractMaskingPlugin for plugin architecture
- PluginAwareProcessor for plugin hook execution
- AuditLoggerFactory for instance-based audit logger creation
- Add advanced features:
- SerializedDataProcessor for handling print_r/var_export/serialize output
- KAnonymizer with GeneralizationStrategy for GDPR k-anonymity
- RetentionPolicy for configurable data retention periods
- StreamingProcessor for memory-efficient large log processing
- Add comprehensive documentation:
- docs/performance-tuning.md - benchmarking, optimization, caching
- docs/troubleshooting.md - common issues and solutions
- docs/logging-integrations.md - ELK, Graylog, Datadog, etc.
- docs/plugin-development.md - complete plugin development guide
- Improve test coverage (84.41% → 85.07%):
- ConditionalRuleFactoryInstanceTest (100% coverage)
- GdprProcessorBuilderEdgeCasesTest (100% coverage)
- StrategyEdgeCasesTest for ReDoS detection and type parsing
- 78 new tests, 119 new assertions
- Update TODO.md with current statistics:
- 141 PHP files, 1,346 tests, 85.07% line coverage
* chore: tests, update actions, sonarcloud issues
* chore: rector
* fix: more sonarcloud fixes
* chore: more fixes
* refactor: copilot review fix
* chore: rector
2025-12-22 13:38:18 +02:00
renovate[bot]
b1eb567b92
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.40.3 → 42.64.1) ( #66 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 12:47:47 +02:00
renovate[bot]
170cfb2fc9
chore(deps)!: update actions/cache (v4.3.0 → v5.0.1) ( #60 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 23:01:36 +02:00
renovate[bot]
b5fec58dd5
chore(deps): update pre-commit hook igorshubovych/markdownlint-cli (v0.46.0 → v0.47.0) ( #64 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 16:19:29 +02:00
renovate[bot]
6307a37e4d
chore(deps): update codecov/codecov-action action (v5.5.1 → v5.5.2) ( #62 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 10:09:39 +00:00
renovate[bot]
1967ee722b
chore(deps)!: update actions/upload-artifact (v5.0.0 → v6.0.0) ( #61 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 12:03:41 +02:00
renovate[bot]
03d24479c0
chore(deps): update github/codeql-action action (v4.31.7 → v4.31.8) ( #63 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 09:49:32 +02:00
renovate[bot]
8d82b70304
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (42.27.1 → 42.40.3) ( #58 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-09 06:27:08 +00:00
renovate[bot]
10923e99e9
chore(deps): update ivuorinen/actions action (v2025.11.30 → v2025.12.07) ( #30 )
2025-12-08 15:04:18 +02:00
renovate[bot]
7a48d493c4
chore(deps): update actions/checkout action (v6.0.0 → v6.0.1) ( #50 )
2025-12-08 07:40:16 +02:00
renovate[bot]
ad11859b46
chore(deps): update github/codeql-action action (v4.31.5 → v4.31.7) ( #57 )
2025-12-08 07:17:22 +02:00
c3d6b8b1c6
chore: workflow and package updates, linting ( #59 )
...
* chore(deps): update composer packages
* chore(ci): update workflows
* chore(lint): fix codeql language, composer lint:fix
* chore: set php version 8.2, update pre-commit hooks, linting
2025-12-01 11:18:44 +02:00
e293587296
fix(ci): actions not workflows
2025-11-11 22:55:15 +02:00
ac4559ae48
fix(ci): add workflows write to pr-lint
2025-11-11 22:45:13 +02:00
c30c136a92
chore(ci): add content write permission to pr-lint
2025-11-11 22:38:13 +02:00
renovate[bot]
5f2793ca99
chore(deps)!: update renovatebot/pre-commit-hooks (41.173.1 → 42.2.0) ( #45 )
2025-11-10 08:19:09 +02:00
renovate[bot]
ddfa3151ea
chore(deps): update actions/cache action (v4.2.3 → v4.3.0) ( #42 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 20:35:08 +02:00
renovate[bot]
433a2830f3
chore(deps): update pre-commit hook renovatebot/pre-commit-hooks (41.160.0 → 41.173.1) ( #44 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-07 19:31:58 +02:00
renovate[bot]
e37bbbedcd
chore(deps)!: update actions/checkout (v4.2.2 → v5.0.0) ( #39 )
2025-11-04 22:27:58 +02:00
renovate[bot]
294e5e5f3c
chore(deps): update codecov/codecov-action action (v5.4.3 → v5.5.1) ( #43 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-04 07:47:44 +02:00
renovate[bot]
44f6cdc380
chore(deps)!: update squizlabs/php_codesniffer (3.13.4 → 4.0.0) ( #41 )
...
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-11-03 01:35:04 +02:00
renovate[bot]
0ba827a9fb
chore(deps)!: update actions/upload-artifact (v4.6.2 → v5.0.0) ( #29 )
2025-10-31 17:03:21 +02:00