<div id="geary-body" dir="auto">On Fri, 27 Mar 2020 18:22:23 +0530 Pirate Praveen <praveen@onenetbeyond.org> wrote:<br>> <br>> <br>> On Fri, Mar 27, 2020 at 5:20 pm, Pirate Praveen <br>> <praveen@onenetbeyond.org> wrote:<br>> > I can see in dist/vue-router.js<br>> > <br>> >  var ref = require("path-to-regexp");<br>> >  var pathToRegexp = ref.pathToRegexp;<br>> > <br>> > and in package.json "path-to-regexp": "^1.7.0",<br>> > <br>> > where as we have 6.1.0-2<br>> <br>> and exports are different between the versions<br>> <br>> in 1.7.0 we have<br>> <br>> module.exports = pathToRegexp<br>> module.exports.parse = parse<br>> module.exports.compile = compile<br>> module.exports.tokensToFunction = tokensToFunction<br>> module.exports.tokensToRegExp = tokensToRegExp<br>> <br>> and in 6.1.0<br>> <br>> export function pathToRegexp(path, keys, options) {<br>>     if (path instanceof RegExp)<br>>         return regexpToRegexp(path, keys);<br>>     if (Array.isArray(path))<br>>         return arrayToRegexp(path, keys, options);<br>>     return stringToRegexp(path, keys, options);<br>> }<br>> <br>> So these two files need to be patched to match the new exports.<br>> <br>> src/create-route-map.js:import Regexp from 'path-to-regexp'<br>> src/util/params.js:import Regexp from 'path-to-regexp'<br>> <br>> I have created a patch (replaced current patch to adapt to <br>> path-to-regexp) and pushed to master. Please test and confirm.<br>> <br>> <br><div><br></div><div>Unfortunately, it still looks wrong to me. In 3.1.6+ds-1:</div><div><br></div><div><div>  function regexpToRegexp(path, keys) {</div><div>      if (!keys)</div><div>          { return path; }</div><div>      // Use a negative lookahead to match only capturing groups.</div><div>      var groups = path.source.match(/\((?!\?)/g);</div><div>      if (groups) {</div><div>          for (var i = 0; i < groups.length; i++) {</div><div>              keys.push({</div><div>                  name: i,</div><div>                  prefix: "",</div><div>                  suffix: "",</div><div>                  modifier: "",</div><div>                  pattern: ""</div><div>              });</div><div>          }</div><div>      }</div><div>      return path;</div><div>  }</div></div><div><br></div><div>and in the upstream bundle version 3.1.6:</div><div><br></div><div><div>  function regexpToRegexp (path, keys) {</div><div>    // Use a negative lookahead to match only capturing groups.</div><div>    var groups = path.source.match(/\((?!\?)/g);</div><div><br></div><div>    if (groups) {</div><div>      for (var i = 0; i < groups.length; i++) {</div><div>        keys.push({</div><div>          name: i,</div><div>          prefix: null,</div><div>          delimiter: null,</div><div>          optional: false,</div><div>          repeat: false,</div><div>          partial: false,</div><div>          asterisk: false,</div><div>          pattern: null</div><div>        });</div><div>      }</div><div>    }</div><div><br></div><div>    return attachKeys(path, keys)</div><div>  }</div></div><div><br></div><div>The attachKeys() function is important because it adds a new property to the return value</div><div>later used by vue-router. Similarly for other functions stringToRegexp, arrayToRegexp.</div><div>So currently, 3.1.6+ds-1 bundles incompatible versions of vue-router and path-to-regexp.</div><div><br></div><div><br></div></div>