I prefer the nested version personally. Since both of these require Proxy you might as well try to maintain the "feel"/illusion of a router hierarchy.
Router merging
If you go with the nested version, I think the router merging API should add periods under the hood, instead of doing a simple concatenation. Since the nested client API treats the period as a special character, it shouldn't be the job of the developer to include it. Rather, using periods in procedure names should be discouraged/disallowed. It's also just looks cleaner.
Not a real PR, just proofs of concept. Two proposed APIs. Both require Proxy.
Flat "function-call" API
Nested "function-call" API
I prefer the nested version personally. Since both of these require Proxy you might as well try to maintain the "feel"/illusion of a router hierarchy.
Router merging
If you go with the nested version, I think the router merging API should add periods under the hood, instead of doing a simple concatenation. Since the nested client API treats the period as a special character, it shouldn't be the job of the developer to include it. Rather, using periods in procedure names should be discouraged/disallowed. It's also just looks cleaner.
You could make this a non-breaking change by implementing this new behavior as a new method. Some options: