Skip to content

feat(flow-php/array-dot): Path value object for dot paths - #2625

Merged
norberttech merged 1 commit into
1.xfrom
array-dot-paths
Sep 12, 2026
Merged

norberttech merged 1 commit into
1.xfrom
array-dot-paths

Conversation

@norberttech

Copy link
Copy Markdown
Member

Change Log


Added

  • flow-php/array-dot - Path value object with Key, Wildcard and Multimatch steps
  • flow-php/array-dot - Path|string accepted by every array_dot_* function
  • flow-php/etl - structure_get(), structure_get_collection(), structure_get_collection_first() DSL aliases

Fixed

  • flow-php/etl - array_get() schema for nullsafe and escaped path segments
  • flow-php/array-dot - escapes after a wildcard and inside a multimatch
  • flow-php/array-dot - array_dot_set() keeps sibling and integer keys
  • flow-php/array-dot - array_dot_rename() to the same name no longer deletes the key
  • flow-php/array-dot - nullsafe multimatch over an empty array reads null

Changed

  • flow-php/array-dot - \ escapes every path grammar character
  • flow-php/array-dot - array_dot_rename() refuses a path not ending with a key
  • flow-php/etl - array_get_collection() reads its keys as literal keys
  • flow-php/etl - array_expand() over a null list gives no rows
  • flow-php/etl - array_get() throws InvalidArgumentException for a malformed path

Removed

Deprecated

  • flow-php/array-dot - array_dot_steps(), use Path::fromString()

Security

- parse paths once into typed Path/Step, escapes for every grammar character
- array_dot_set/rename change only the addressed key
- array_get() resolves nullsafe types and escaped keys
- array_get_collection() reads literal keys
- array_expand() over a null list gives no rows
- structure_get(), structure_get_collection(), structure_get_collection_first() aliases
@norberttech norberttech added this to the 0.44.0 milestone Sep 12, 2026
@codecov

codecov Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.37%. Comparing base (ae0025b) to head (0e11cca).
⚠️ Report is 1 commits behind head on 1.x.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff              @@
##                1.x    #2625      +/-   ##
============================================
+ Coverage     84.33%   84.37%   +0.04%     
- Complexity    29801    29844      +43     
============================================
  Files          1988     1992       +4     
  Lines         86474    86544      +70     
============================================
+ Hits          72927    73024      +97     
+ Misses        13547    13520      -27     
Components Coverage Δ
etl 91.44% <100.00%> (+<0.01%) ⬆️
cli 75.45% <ø> (ø)
lib-array-dot 96.52% <100.00%> (+15.08%) ⬆️
lib-azure-sdk 64.44% <ø> (ø)
lib-doctrine-dbal-bulk 70.36% <ø> (ø)
lib-filesystem 76.07% <ø> (ø)
lib-types 90.48% <ø> (ø)
lib-parquet 70.53% <ø> (ø)
lib-parquet-viewer 82.26% <ø> (ø)
lib-snappy 89.86% <ø> (ø)
lib-dremel 0.00% <ø> (ø)
lib-postgresql 85.25% <ø> (ø)
lib-telemetry 86.62% <ø> (ø)
bridge-filesystem-async-aws 86.19% <ø> (ø)
bridge-filesystem-azure 80.96% <ø> (ø)
bridge-monolog-http 91.54% <ø> (ø)
bridge-monolog-telemetry 94.79% <ø> (ø)
bridge-openapi-specification 60.86% <ø> (ø)
symfony-http-foundation 56.86% <ø> (ø)
bridge-psr18-telemetry 100.00% <ø> (ø)
bridge-psr3-telemetry 98.95% <ø> (ø)
bridge-psr7-telemetry 100.00% <ø> (ø)
bridge-telemetry-otlp 90.11% <ø> (ø)
bridge-symfony-http-foundation-telemetry 92.85% <ø> (ø)
bridge-symfony-filesystem-bundle 91.85% <ø> (ø)
bridge-symfony-filesystem-cache 98.18% <ø> (ø)
bridge-symfony-postgresql-bundle 93.04% <ø> (ø)
bridge-symfony-postgresql-cache 94.41% <ø> (ø)
bridge-symfony-postgresql-messenger 98.80% <ø> (ø)
bridge-symfony-postgresql-session 93.65% <ø> (ø)
bridge-symfony-telemetry-bundle 90.72% <ø> (ø)
adapter-chartjs 80.50% <ø> (ø)
adapter-csv 95.97% <ø> (ø)
adapter-doctrine 93.62% <ø> (ø)
adapter-google-sheet 80.11% <ø> (ø)
adapter-http 76.52% <ø> (ø)
adapter-json 65.62% <ø> (ø)
adapter-logger 28.57% <ø> (ø)
adapter-parquet 74.47% <ø> (ø)
adapter-text 70.78% <ø> (ø)
adapter-xml 59.83% <ø> (ø)
adapter-avro 0.00% <ø> (ø)
adapter-excel 78.77% <ø> (ø)
adapter-postgresql 78.03% <ø> (ø)
adapter-seal 65.69% <ø> (ø)
bridge-phpunit-postgresql 75.30% <ø> (ø)
bridge-phpunit-telemetry 87.36% <ø> (ø)
bridge-phpstan-types 0.00% <ø> (ø)
bridge-postgresql-valinor 100.00% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@norberttech
norberttech merged commit 1532c4b into 1.x Sep 12, 2026
50 checks passed
@norberttech
norberttech deleted the array-dot-paths branch September 12, 2026 13:05
@github-project-automation github-project-automation Bot moved this from Todo to Done in Roadmap Sep 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant