Testing for .shp or .dbf at the end isn’t a good test for URLs. For example, it means you can’t pass a URL to an Observable FileAttachment (because those never have the .shp extension, and adding the .shp extension breaks the URL).
I think we should probably get rid of this magic. It might be okay to replace .shp with .dbf if the dbf argument is undefined, but otherwise I think we should leave the URLs as-is.