@data-client/rest 0.16.3 → 0.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @data-client/rest
2
2
 
3
+ ## 0.16.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [#3866](https://github.com/reactive/data-client/pull/3866) [`16f5d92`](https://github.com/reactive/data-client/commit/16f5d92598de05e92b88af98a9d63eecf27ab819) - Bundle `path-to-regexp` as tree-shaken ESM
8
+
9
+ Bundle only the functions we use (`compile`, `parse`, `pathToRegexp`) from
10
+ `path-to-regexp` into the ESM/browser build via rollup. This eliminates
11
+ the CJS/ESM boundary that broke StackBlitz WebContainers and reduces bundle
12
+ size by tree-shaking unused exports (`match`, `stringify`, and the `ID` regex).
13
+
14
+ ## 0.16.4
15
+
16
+ ### Patch Changes
17
+
18
+ - [#3862](https://github.com/reactive/data-client/pull/3862) [`a214720`](https://github.com/reactive/data-client/commit/a214720fd12e1360d00e194b389aa82aff6b91fd) - Fix StackBlitz WebContainers compatibility with path-to-regexp
19
+
20
+ Use namespace import (`import *`) instead of named imports for the CJS
21
+ `path-to-regexp` dependency. Named imports trigger webpack's per-export
22
+ presence validation, which fails in StackBlitz's WebContainers environment.
23
+ Namespace imports defer property access to runtime, bypassing the check
24
+ with no tree-shaking loss.
25
+
3
26
  ## 0.16.3
4
27
 
5
28
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- import { compile, parse, pathToRegexp } from 'path-to-regexp';
1
+ import { compile, parse, pathToRegexp } from './pathToRegexp.js';
2
2
  const urlBaseCache = Object.create(null);
3
3
  export function getUrlBase(path) {
4
4
  if (!(path in urlBaseCache)) {
@@ -52,4 +52,4 @@ export function shortenPath(path) {
52
52
  if (shortUrlRoot[shortUrlRoot.length - 1] === '/') shortUrlRoot = shortUrlRoot.substring(0, shortUrlRoot.length - 1);
53
53
  return shortUrlRoot;
54
54
  }
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwicGFyc2UiLCJwYXRoVG9SZWdleHAiLCJ1cmxCYXNlQ2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJnZXRVcmxCYXNlIiwicGF0aCIsInVybFRva2Vuc0NhY2hlIiwiZ2V0VXJsVG9rZW5zIiwidG9rZW5NYXAiLCJ0b2tlbnMiLCJwYXRoUmVnZXhDYWNoZSIsImdldFBhdGhSZWdleCIsInJlZ2V4cCIsInRva2VuTmFtZXMiLCJTZXQiLCJ0b2tlbiIsInR5cGUiLCJhZGQiLCJuYW1lIiwicHJvdG8iLCJwcm90b3R5cGUiLCJncG8iLCJnZXRQcm90b3R5cGVPZiIsImlzUG9qbyIsIm9iaiIsInNob3J0ZW5QYXRoIiwibGFzdFRva2VuSW5kZXgiLCJNYXRoIiwibWF4IiwibGFzdEluZGV4T2YiLCJFcnJvciIsInNob3J0VXJsUm9vdCIsInN1YnN0cmluZyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXN0SGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21waWxlLFxuICBQYXRoRnVuY3Rpb24sXG4gIHBhcnNlLFxuICBwYXRoVG9SZWdleHAsXG4gIFRva2VuLFxuICBQYXJhbURhdGEsXG59IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHsgU2hvcnRlblBhdGggfSBmcm9tICcuL3BhdGhUeXBlcy5qcyc7XG5cbmNvbnN0IHVybEJhc2VDYWNoZTogUmVjb3JkPHN0cmluZywgUGF0aEZ1bmN0aW9uPG9iamVjdD4+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxCYXNlKHBhdGg6IHN0cmluZyk6IFBhdGhGdW5jdGlvbjxQYXJhbURhdGE+IHtcbiAgaWYgKCEocGF0aCBpbiB1cmxCYXNlQ2FjaGUpKSB7XG4gICAgdXJsQmFzZUNhY2hlW3BhdGhdID0gY29tcGlsZShwYXRoKTtcbiAgfVxuICByZXR1cm4gdXJsQmFzZUNhY2hlW3BhdGhdO1xufVxuXG5jb25zdCB1cmxUb2tlbnNDYWNoZTogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxUb2tlbnMocGF0aDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICBpZiAoIShwYXRoIGluIHVybFRva2Vuc0NhY2hlKSkge1xuICAgIHVybFRva2Vuc0NhY2hlW3BhdGhdID0gdG9rZW5NYXAocGFyc2UocGF0aCkudG9rZW5zKTtcbiAgfVxuICByZXR1cm4gdXJsVG9rZW5zQ2FjaGVbcGF0aF07XG59XG5cbmNvbnN0IHBhdGhSZWdleENhY2hlOiBSZWNvcmQ8c3RyaW5nLCBSZWdFeHA+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoUmVnZXgocGF0aDogc3RyaW5nKTogUmVnRXhwIHtcbiAgaWYgKCEocGF0aCBpbiBwYXRoUmVnZXhDYWNoZSkpIHtcbiAgICBwYXRoUmVnZXhDYWNoZVtwYXRoXSA9IHBhdGhUb1JlZ2V4cChwYXRoKS5yZWdleHA7XG4gIH1cbiAgcmV0dXJuIHBhdGhSZWdleENhY2hlW3BhdGhdO1xufVxuXG5mdW5jdGlvbiB0b2tlbk1hcCh0b2tlbnM6IFRva2VuW10pOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IHRva2VuTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3BhcmFtJzpcbiAgICAgIGNhc2UgJ3dpbGRjYXJkJzpcbiAgICAgICAgdG9rZW5OYW1lcy5hZGQodG9rZW4ubmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdG9rZW5NYXAodG9rZW4udG9rZW5zKSkge1xuICAgICAgICAgIHRva2VuTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9rZW5OYW1lcztcbn1cblxuY29uc3QgcHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuY29uc3QgZ3BvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb2pvKG9iajogdW5rbm93bik6IG9iaiBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ3BvKG9iaikgPT09IHByb3RvO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvcnRlblBhdGg8UyBleHRlbmRzIHN0cmluZz4ocGF0aDogUyk6IFNob3J0ZW5QYXRoPFM+IHtcbiAgY29uc3QgbGFzdFRva2VuSW5kZXggPSBNYXRoLm1heChwYXRoLmxhc3RJbmRleE9mKCc6JyksIHBhdGgubGFzdEluZGV4T2YoJyonKSk7XG4gIGlmIChsYXN0VG9rZW5JbmRleCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1Jlc291cmNlIHBhdGggcmVxdWlyZXMgYXQgbGVhc3Qgb25lIDpwYXJhbWV0ZXIgb3IgKndpbGRjYXJkJyxcbiAgICApO1xuICBsZXQgc2hvcnRVcmxSb290OiBTaG9ydGVuUGF0aDxTPiA9IHBhdGguc3Vic3RyaW5nKDAsIGxhc3RUb2tlbkluZGV4KSBhcyBhbnk7XG4gIGlmIChzaG9ydFVybFJvb3Rbc2hvcnRVcmxSb290Lmxlbmd0aCAtIDFdID09PSAnLycpXG4gICAgc2hvcnRVcmxSb290ID0gc2hvcnRVcmxSb290LnN1YnN0cmluZyhcbiAgICAgIDAsXG4gICAgICBzaG9ydFVybFJvb3QubGVuZ3RoIC0gMSxcbiAgICApIGFzIFNob3J0ZW5QYXRoPFM+O1xuICByZXR1cm4gc2hvcnRVcmxSb290O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxPQUFPLEVBRVBDLEtBQUssRUFDTEMs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
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwicGFyc2UiLCJwYXRoVG9SZWdleHAiLCJ1cmxCYXNlQ2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJnZXRVcmxCYXNlIiwicGF0aCIsInVybFRva2Vuc0NhY2hlIiwiZ2V0VXJsVG9rZW5zIiwidG9rZW5NYXAiLCJ0b2tlbnMiLCJwYXRoUmVnZXhDYWNoZSIsImdldFBhdGhSZWdleCIsInJlZ2V4cCIsInRva2VuTmFtZXMiLCJTZXQiLCJ0b2tlbiIsInR5cGUiLCJhZGQiLCJuYW1lIiwicHJvdG8iLCJwcm90b3R5cGUiLCJncG8iLCJnZXRQcm90b3R5cGVPZiIsImlzUG9qbyIsIm9iaiIsInNob3J0ZW5QYXRoIiwibGFzdFRva2VuSW5kZXgiLCJNYXRoIiwibWF4IiwibGFzdEluZGV4T2YiLCJFcnJvciIsInNob3J0VXJsUm9vdCIsInN1YnN0cmluZyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXN0SGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21waWxlLFxuICBQYXRoRnVuY3Rpb24sXG4gIHBhcnNlLFxuICBwYXRoVG9SZWdleHAsXG4gIFRva2VuLFxuICBQYXJhbURhdGEsXG59IGZyb20gJy4vcGF0aFRvUmVnZXhwLmpzJztcbmltcG9ydCB7IFNob3J0ZW5QYXRoIH0gZnJvbSAnLi9wYXRoVHlwZXMuanMnO1xuXG5jb25zdCB1cmxCYXNlQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFBhdGhGdW5jdGlvbjxvYmplY3Q+PiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsQmFzZShwYXRoOiBzdHJpbmcpOiBQYXRoRnVuY3Rpb248UGFyYW1EYXRhPiB7XG4gIGlmICghKHBhdGggaW4gdXJsQmFzZUNhY2hlKSkge1xuICAgIHVybEJhc2VDYWNoZVtwYXRoXSA9IGNvbXBpbGUocGF0aCk7XG4gIH1cbiAgcmV0dXJuIHVybEJhc2VDYWNoZVtwYXRoXTtcbn1cblxuY29uc3QgdXJsVG9rZW5zQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFNldDxzdHJpbmc+PiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsVG9rZW5zKHBhdGg6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgaWYgKCEocGF0aCBpbiB1cmxUb2tlbnNDYWNoZSkpIHtcbiAgICB1cmxUb2tlbnNDYWNoZVtwYXRoXSA9IHRva2VuTWFwKHBhcnNlKHBhdGgpLnRva2Vucyk7XG4gIH1cbiAgcmV0dXJuIHVybFRva2Vuc0NhY2hlW3BhdGhdO1xufVxuXG5jb25zdCBwYXRoUmVnZXhDYWNoZTogUmVjb3JkPHN0cmluZywgUmVnRXhwPiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aFJlZ2V4KHBhdGg6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIGlmICghKHBhdGggaW4gcGF0aFJlZ2V4Q2FjaGUpKSB7XG4gICAgcGF0aFJlZ2V4Q2FjaGVbcGF0aF0gPSBwYXRoVG9SZWdleHAocGF0aCkucmVnZXhwO1xuICB9XG4gIHJldHVybiBwYXRoUmVnZXhDYWNoZVtwYXRoXTtcbn1cblxuZnVuY3Rpb24gdG9rZW5NYXAodG9rZW5zOiBUb2tlbltdKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCB0b2tlbk5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICBjYXNlICdwYXJhbSc6XG4gICAgICBjYXNlICd3aWxkY2FyZCc6XG4gICAgICAgIHRva2VuTmFtZXMuYWRkKHRva2VuLm5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHRva2VuTWFwKHRva2VuLnRva2VucykpIHtcbiAgICAgICAgICB0b2tlbk5hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRva2VuTmFtZXM7XG59XG5cbmNvbnN0IHByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbmNvbnN0IGdwbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9qbyhvYmo6IHVua25vd24pOiBvYmogaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdwbyhvYmopID09PSBwcm90bztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3J0ZW5QYXRoPFMgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFMpOiBTaG9ydGVuUGF0aDxTPiB7XG4gIGNvbnN0IGxhc3RUb2tlbkluZGV4ID0gTWF0aC5tYXgocGF0aC5sYXN0SW5kZXhPZignOicpLCBwYXRoLmxhc3RJbmRleE9mKCcqJykpO1xuICBpZiAobGFzdFRva2VuSW5kZXggPT09IC0xKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdSZXNvdXJjZSBwYXRoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSA6cGFyYW1ldGVyIG9yICp3aWxkY2FyZCcsXG4gICAgKTtcbiAgbGV0IHNob3J0VXJsUm9vdDogU2hvcnRlblBhdGg8Uz4gPSBwYXRoLnN1YnN0cmluZygwLCBsYXN0VG9rZW5JbmRleCkgYXMgYW55O1xuICBpZiAoc2hvcnRVcmxSb290W3Nob3J0VXJsUm9vdC5sZW5ndGggLSAxXSA9PT0gJy8nKVxuICAgIHNob3J0VXJsUm9vdCA9IHNob3J0VXJsUm9vdC5zdWJzdHJpbmcoXG4gICAgICAwLFxuICAgICAgc2hvcnRVcmxSb290Lmxlbmd0aCAtIDEsXG4gICAgKSBhcyBTaG9ydGVuUGF0aDxTPjtcbiAgcmV0dXJuIHNob3J0VXJsUm9vdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsT0FBTyxFQUVQQyxLQUFLLEVBQ0xD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
@@ -0,0 +1,2 @@
1
+ export { compile, parse, pathToRegexp } from 'path-to-regexp';
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwicGFyc2UiLCJwYXRoVG9SZWdleHAiXSwic291cmNlcyI6WyIuLi9zcmMvcGF0aFRvUmVnZXhwLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgUGF0aEZ1bmN0aW9uLCBUb2tlbiwgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuZXhwb3J0IHsgY29tcGlsZSwgcGFyc2UsIHBhdGhUb1JlZ2V4cCB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsT0FBTyxFQUFFQyxLQUFLLEVBQUVDLFlBQVksUUFBUSxnQkFBZ0IiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,4 +1,4 @@
1
- import { PathFunction, ParamData } from 'path-to-regexp';
1
+ import { PathFunction, ParamData } from './pathToRegexp.js';
2
2
  import { ShortenPath } from './pathTypes.js';
3
3
  export declare function getUrlBase(path: string): PathFunction<ParamData>;
4
4
  export declare function getUrlTokens(path: string): Set<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"RestHelpers.d.ts","sourceRoot":"","sources":["../src/RestHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAIZ,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAKhE;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAKtD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAuBD,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAK/D;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAarE"}
1
+ {"version":3,"file":"RestHelpers.d.ts","sourceRoot":"","sources":["../src/RestHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,YAAY,EAIZ,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAKhE;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAKtD;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAuBD,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAK/D;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAarE"}
@@ -1,4 +1,4 @@
1
- import { compile, parse, pathToRegexp } from 'path-to-regexp';
1
+ import { compile, parse, pathToRegexp } from './pathToRegexp.js';
2
2
  const urlBaseCache = Object.create(null);
3
3
  export function getUrlBase(path) {
4
4
  if (!(path in urlBaseCache)) {
@@ -52,4 +52,4 @@ export function shortenPath(path) {
52
52
  if (shortUrlRoot[shortUrlRoot.length - 1] === '/') shortUrlRoot = shortUrlRoot.substring(0, shortUrlRoot.length - 1);
53
53
  return shortUrlRoot;
54
54
  }
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwicGFyc2UiLCJwYXRoVG9SZWdleHAiLCJ1cmxCYXNlQ2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJnZXRVcmxCYXNlIiwicGF0aCIsInVybFRva2Vuc0NhY2hlIiwiZ2V0VXJsVG9rZW5zIiwidG9rZW5NYXAiLCJ0b2tlbnMiLCJwYXRoUmVnZXhDYWNoZSIsImdldFBhdGhSZWdleCIsInJlZ2V4cCIsInRva2VuTmFtZXMiLCJTZXQiLCJ0b2tlbiIsInR5cGUiLCJhZGQiLCJuYW1lIiwicHJvdG8iLCJwcm90b3R5cGUiLCJncG8iLCJnZXRQcm90b3R5cGVPZiIsImlzUG9qbyIsIm9iaiIsInNob3J0ZW5QYXRoIiwibGFzdFRva2VuSW5kZXgiLCJNYXRoIiwibWF4IiwibGFzdEluZGV4T2YiLCJFcnJvciIsInNob3J0VXJsUm9vdCIsInN1YnN0cmluZyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXN0SGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21waWxlLFxuICBQYXRoRnVuY3Rpb24sXG4gIHBhcnNlLFxuICBwYXRoVG9SZWdleHAsXG4gIFRva2VuLFxuICBQYXJhbURhdGEsXG59IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHsgU2hvcnRlblBhdGggfSBmcm9tICcuL3BhdGhUeXBlcy5qcyc7XG5cbmNvbnN0IHVybEJhc2VDYWNoZTogUmVjb3JkPHN0cmluZywgUGF0aEZ1bmN0aW9uPG9iamVjdD4+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxCYXNlKHBhdGg6IHN0cmluZyk6IFBhdGhGdW5jdGlvbjxQYXJhbURhdGE+IHtcbiAgaWYgKCEocGF0aCBpbiB1cmxCYXNlQ2FjaGUpKSB7XG4gICAgdXJsQmFzZUNhY2hlW3BhdGhdID0gY29tcGlsZShwYXRoKTtcbiAgfVxuICByZXR1cm4gdXJsQmFzZUNhY2hlW3BhdGhdO1xufVxuXG5jb25zdCB1cmxUb2tlbnNDYWNoZTogUmVjb3JkPHN0cmluZywgU2V0PHN0cmluZz4+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRVcmxUb2tlbnMocGF0aDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICBpZiAoIShwYXRoIGluIHVybFRva2Vuc0NhY2hlKSkge1xuICAgIHVybFRva2Vuc0NhY2hlW3BhdGhdID0gdG9rZW5NYXAocGFyc2UocGF0aCkudG9rZW5zKTtcbiAgfVxuICByZXR1cm4gdXJsVG9rZW5zQ2FjaGVbcGF0aF07XG59XG5cbmNvbnN0IHBhdGhSZWdleENhY2hlOiBSZWNvcmQ8c3RyaW5nLCBSZWdFeHA+ID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbmV4cG9ydCBmdW5jdGlvbiBnZXRQYXRoUmVnZXgocGF0aDogc3RyaW5nKTogUmVnRXhwIHtcbiAgaWYgKCEocGF0aCBpbiBwYXRoUmVnZXhDYWNoZSkpIHtcbiAgICBwYXRoUmVnZXhDYWNoZVtwYXRoXSA9IHBhdGhUb1JlZ2V4cChwYXRoKS5yZWdleHA7XG4gIH1cbiAgcmV0dXJuIHBhdGhSZWdleENhY2hlW3BhdGhdO1xufVxuXG5mdW5jdGlvbiB0b2tlbk1hcCh0b2tlbnM6IFRva2VuW10pOiBTZXQ8c3RyaW5nPiB7XG4gIGNvbnN0IHRva2VuTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMpIHtcbiAgICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3BhcmFtJzpcbiAgICAgIGNhc2UgJ3dpbGRjYXJkJzpcbiAgICAgICAgdG9rZW5OYW1lcy5hZGQodG9rZW4ubmFtZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZ3JvdXAnOlxuICAgICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgdG9rZW5NYXAodG9rZW4udG9rZW5zKSkge1xuICAgICAgICAgIHRva2VuTmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdG9rZW5OYW1lcztcbn1cblxuY29uc3QgcHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuY29uc3QgZ3BvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuXG5leHBvcnQgZnVuY3Rpb24gaXNQb2pvKG9iajogdW5rbm93bik6IG9iaiBpcyBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ3BvKG9iaikgPT09IHByb3RvO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2hvcnRlblBhdGg8UyBleHRlbmRzIHN0cmluZz4ocGF0aDogUyk6IFNob3J0ZW5QYXRoPFM+IHtcbiAgY29uc3QgbGFzdFRva2VuSW5kZXggPSBNYXRoLm1heChwYXRoLmxhc3RJbmRleE9mKCc6JyksIHBhdGgubGFzdEluZGV4T2YoJyonKSk7XG4gIGlmIChsYXN0VG9rZW5JbmRleCA9PT0gLTEpXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ1Jlc291cmNlIHBhdGggcmVxdWlyZXMgYXQgbGVhc3Qgb25lIDpwYXJhbWV0ZXIgb3IgKndpbGRjYXJkJyxcbiAgICApO1xuICBsZXQgc2hvcnRVcmxSb290OiBTaG9ydGVuUGF0aDxTPiA9IHBhdGguc3Vic3RyaW5nKDAsIGxhc3RUb2tlbkluZGV4KSBhcyBhbnk7XG4gIGlmIChzaG9ydFVybFJvb3Rbc2hvcnRVcmxSb290Lmxlbmd0aCAtIDFdID09PSAnLycpXG4gICAgc2hvcnRVcmxSb290ID0gc2hvcnRVcmxSb290LnN1YnN0cmluZyhcbiAgICAgIDAsXG4gICAgICBzaG9ydFVybFJvb3QubGVuZ3RoIC0gMSxcbiAgICApIGFzIFNob3J0ZW5QYXRoPFM+O1xuICByZXR1cm4gc2hvcnRVcmxSb290O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUNFQSxPQUFPLEVBRVBDLEtBQUssRUFDTEMs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
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlIiwicGFyc2UiLCJwYXRoVG9SZWdleHAiLCJ1cmxCYXNlQ2FjaGUiLCJPYmplY3QiLCJjcmVhdGUiLCJnZXRVcmxCYXNlIiwicGF0aCIsInVybFRva2Vuc0NhY2hlIiwiZ2V0VXJsVG9rZW5zIiwidG9rZW5NYXAiLCJ0b2tlbnMiLCJwYXRoUmVnZXhDYWNoZSIsImdldFBhdGhSZWdleCIsInJlZ2V4cCIsInRva2VuTmFtZXMiLCJTZXQiLCJ0b2tlbiIsInR5cGUiLCJhZGQiLCJuYW1lIiwicHJvdG8iLCJwcm90b3R5cGUiLCJncG8iLCJnZXRQcm90b3R5cGVPZiIsImlzUG9qbyIsIm9iaiIsInNob3J0ZW5QYXRoIiwibGFzdFRva2VuSW5kZXgiLCJNYXRoIiwibWF4IiwibGFzdEluZGV4T2YiLCJFcnJvciIsInNob3J0VXJsUm9vdCIsInN1YnN0cmluZyIsImxlbmd0aCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9SZXN0SGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBjb21waWxlLFxuICBQYXRoRnVuY3Rpb24sXG4gIHBhcnNlLFxuICBwYXRoVG9SZWdleHAsXG4gIFRva2VuLFxuICBQYXJhbURhdGEsXG59IGZyb20gJy4vcGF0aFRvUmVnZXhwLmpzJztcbmltcG9ydCB7IFNob3J0ZW5QYXRoIH0gZnJvbSAnLi9wYXRoVHlwZXMuanMnO1xuXG5jb25zdCB1cmxCYXNlQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFBhdGhGdW5jdGlvbjxvYmplY3Q+PiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsQmFzZShwYXRoOiBzdHJpbmcpOiBQYXRoRnVuY3Rpb248UGFyYW1EYXRhPiB7XG4gIGlmICghKHBhdGggaW4gdXJsQmFzZUNhY2hlKSkge1xuICAgIHVybEJhc2VDYWNoZVtwYXRoXSA9IGNvbXBpbGUocGF0aCk7XG4gIH1cbiAgcmV0dXJuIHVybEJhc2VDYWNoZVtwYXRoXTtcbn1cblxuY29uc3QgdXJsVG9rZW5zQ2FjaGU6IFJlY29yZDxzdHJpbmcsIFNldDxzdHJpbmc+PiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VXJsVG9rZW5zKHBhdGg6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgaWYgKCEocGF0aCBpbiB1cmxUb2tlbnNDYWNoZSkpIHtcbiAgICB1cmxUb2tlbnNDYWNoZVtwYXRoXSA9IHRva2VuTWFwKHBhcnNlKHBhdGgpLnRva2Vucyk7XG4gIH1cbiAgcmV0dXJuIHVybFRva2Vuc0NhY2hlW3BhdGhdO1xufVxuXG5jb25zdCBwYXRoUmVnZXhDYWNoZTogUmVjb3JkPHN0cmluZywgUmVnRXhwPiA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0UGF0aFJlZ2V4KHBhdGg6IHN0cmluZyk6IFJlZ0V4cCB7XG4gIGlmICghKHBhdGggaW4gcGF0aFJlZ2V4Q2FjaGUpKSB7XG4gICAgcGF0aFJlZ2V4Q2FjaGVbcGF0aF0gPSBwYXRoVG9SZWdleHAocGF0aCkucmVnZXhwO1xuICB9XG4gIHJldHVybiBwYXRoUmVnZXhDYWNoZVtwYXRoXTtcbn1cblxuZnVuY3Rpb24gdG9rZW5NYXAodG9rZW5zOiBUb2tlbltdKTogU2V0PHN0cmluZz4ge1xuICBjb25zdCB0b2tlbk5hbWVzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5zKSB7XG4gICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICBjYXNlICdwYXJhbSc6XG4gICAgICBjYXNlICd3aWxkY2FyZCc6XG4gICAgICAgIHRva2VuTmFtZXMuYWRkKHRva2VuLm5hbWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2dyb3VwJzpcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIHRva2VuTWFwKHRva2VuLnRva2VucykpIHtcbiAgICAgICAgICB0b2tlbk5hbWVzLmFkZChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRva2VuTmFtZXM7XG59XG5cbmNvbnN0IHByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcbmNvbnN0IGdwbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUG9qbyhvYmo6IHVua25vd24pOiBvYmogaXMgUmVjb3JkPHN0cmluZywgYW55PiB7XG4gIGlmIChvYmogPT09IG51bGwgfHwgdHlwZW9mIG9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIGdwbyhvYmopID09PSBwcm90bztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNob3J0ZW5QYXRoPFMgZXh0ZW5kcyBzdHJpbmc+KHBhdGg6IFMpOiBTaG9ydGVuUGF0aDxTPiB7XG4gIGNvbnN0IGxhc3RUb2tlbkluZGV4ID0gTWF0aC5tYXgocGF0aC5sYXN0SW5kZXhPZignOicpLCBwYXRoLmxhc3RJbmRleE9mKCcqJykpO1xuICBpZiAobGFzdFRva2VuSW5kZXggPT09IC0xKVxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdSZXNvdXJjZSBwYXRoIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSA6cGFyYW1ldGVyIG9yICp3aWxkY2FyZCcsXG4gICAgKTtcbiAgbGV0IHNob3J0VXJsUm9vdDogU2hvcnRlblBhdGg8Uz4gPSBwYXRoLnN1YnN0cmluZygwLCBsYXN0VG9rZW5JbmRleCkgYXMgYW55O1xuICBpZiAoc2hvcnRVcmxSb290W3Nob3J0VXJsUm9vdC5sZW5ndGggLSAxXSA9PT0gJy8nKVxuICAgIHNob3J0VXJsUm9vdCA9IHNob3J0VXJsUm9vdC5zdWJzdHJpbmcoXG4gICAgICAwLFxuICAgICAgc2hvcnRVcmxSb290Lmxlbmd0aCAtIDEsXG4gICAgKSBhcyBTaG9ydGVuUGF0aDxTPjtcbiAgcmV0dXJuIHNob3J0VXJsUm9vdDtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FDRUEsT0FBTyxFQUVQQyxLQUFLLEVBQ0xDLFlBQVksUUFHUCxtQkFBbUI7QUFHMUIsTUFBTUMsWUFBa0QsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQzlFLE9BQU8sU0FBU0MsVUFBVUEsQ0FBQ0MsSUFBWSxFQUEyQjtFQUNoRSxJQUFJLEVBQUVBLElBQUksSUFBSUosWUFBWSxDQUFDLEVBQUU7SUFDM0JBLFlBQVksQ0FBQ0ksSUFBSSxDQUFDLEdBQUdQLE9BQU8sQ0FBQ08sSUFBSSxDQUFDO0VBQ3BDO0VBQ0EsT0FBT0osWUFBWSxDQUFDSSxJQUFJLENBQUM7QUFDM0I7QUFFQSxNQUFNQyxjQUEyQyxHQUFHSixNQUFNLENBQUNDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDdkUsT0FBTyxTQUFTSSxZQUFZQSxDQUFDRixJQUFZLEVBQWU7RUFDdEQsSUFBSSxFQUFFQSxJQUFJLElBQUlDLGNBQWMsQ0FBQyxFQUFFO0lBQzdCQSxjQUFjLENBQUNELElBQUksQ0FBQyxHQUFHRyxRQUFRLENBQUNULEtBQUssQ0FBQ00sSUFBSSxDQUFDLENBQUNJLE1BQU0sQ0FBQztFQUNyRDtFQUNBLE9BQU9ILGNBQWMsQ0FBQ0QsSUFBSSxDQUFDO0FBQzdCO0FBRUEsTUFBTUssY0FBc0MsR0FBR1IsTUFBTSxDQUFDQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2xFLE9BQU8sU0FBU1EsWUFBWUEsQ0FBQ04sSUFBWSxFQUFVO0VBQ2pELElBQUksRUFBRUEsSUFBSSxJQUFJSyxjQUFjLENBQUMsRUFBRTtJQUM3QkEsY0FBYyxDQUFDTCxJQUFJLENBQUMsR0FBR0wsWUFBWSxDQUFDSyxJQUFJLENBQUMsQ0FBQ08sTUFBTTtFQUNsRDtFQUNBLE9BQU9GLGNBQWMsQ0FBQ0wsSUFBSSxDQUFDO0FBQzdCO0FBRUEsU0FBU0csUUFBUUEsQ0FBQ0MsTUFBZSxFQUFlO0VBQzlDLE1BQU1JLFVBQVUsR0FBRyxJQUFJQyxHQUFHLENBQVMsQ0FBQztFQUNwQyxLQUFLLE1BQU1DLEtBQUssSUFBSU4sTUFBTSxFQUFFO0lBQzFCLFFBQVFNLEtBQUssQ0FBQ0MsSUFBSTtNQUNoQixLQUFLLE9BQU87TUFDWixLQUFLLFVBQVU7UUFDYkgsVUFBVSxDQUFDSSxHQUFHLENBQUNGLEtBQUssQ0FBQ0csSUFBSSxDQUFDO1FBQzFCO01BQ0YsS0FBSyxPQUFPO1FBQ1YsS0FBSyxNQUFNQSxJQUFJLElBQUlWLFFBQVEsQ0FBQ08sS0FBSyxDQUFDTixNQUFNLENBQUMsRUFBRTtVQUN6Q0ksVUFBVSxDQUFDSSxHQUFHLENBQUNDLElBQUksQ0FBQztRQUN0QjtRQUNBO0lBQ0o7RUFDRjtFQUNBLE9BQU9MLFVBQVU7QUFDbkI7QUFFQSxNQUFNTSxLQUFLLEdBQUdqQixNQUFNLENBQUNrQixTQUFTO0FBQzlCLE1BQU1DLEdBQUcsR0FBR25CLE1BQU0sQ0FBQ29CLGNBQWM7QUFFakMsT0FBTyxTQUFTQyxNQUFNQSxDQUFDQyxHQUFZLEVBQThCO0VBQy9ELElBQUlBLEdBQUcsS0FBSyxJQUFJLElBQUksT0FBT0EsR0FBRyxLQUFLLFFBQVEsRUFBRTtJQUMzQyxPQUFPLEtBQUs7RUFDZDtFQUNBLE9BQU9ILEdBQUcsQ0FBQ0csR0FBRyxDQUFDLEtBQUtMLEtBQUs7QUFDM0I7QUFFQSxPQUFPLFNBQVNNLFdBQVdBLENBQW1CcEIsSUFBTyxFQUFrQjtFQUNyRSxNQUFNcUIsY0FBYyxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ3ZCLElBQUksQ0FBQ3dCLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRXhCLElBQUksQ0FBQ3dCLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUM3RSxJQUFJSCxjQUFjLEtBQUssQ0FBQyxDQUFDLEVBQ3ZCLE1BQU0sSUFBSUksS0FBSyxDQUNiLDZEQUNGLENBQUM7RUFDSCxJQUFJQyxZQUE0QixHQUFHMUIsSUFBSSxDQUFDMkIsU0FBUyxDQUFDLENBQUMsRUFBRU4sY0FBYyxDQUFRO0VBQzNFLElBQUlLLFlBQVksQ0FBQ0EsWUFBWSxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUMvQ0YsWUFBWSxHQUFHQSxZQUFZLENBQUNDLFNBQVMsQ0FDbkMsQ0FBQyxFQUNERCxZQUFZLENBQUNFLE1BQU0sR0FBRyxDQUN4QixDQUFtQjtFQUNyQixPQUFPRixZQUFZO0FBQ3JCIiwiaWdub3JlTGlzdCI6W119
@@ -0,0 +1,3 @@
1
+ export type { PathFunction, Token, ParamData } from 'path-to-regexp';
2
+ export { compile, parse, pathToRegexp } from 'path-to-regexp';
3
+ //# sourceMappingURL=pathToRegexp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathToRegexp.d.ts","sourceRoot":"","sources":["../src/pathToRegexp.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,342 @@
1
+ const DEFAULT_DELIMITER = "/";
2
+ const NOOP_VALUE = (value) => value;
3
+ const ID_START = /^[$_\p{ID_Start}]$/u;
4
+ const ID_CONTINUE = /^[$\u200c\u200d\p{ID_Continue}]$/u;
5
+ /**
6
+ * Escape a regular expression string.
7
+ */
8
+ function escape(str) {
9
+ return str.replace(/[.+*?^${}()[\]|/\\]/g, "\\$&");
10
+ }
11
+ /**
12
+ * Tokenized path instance.
13
+ */
14
+ class TokenData {
15
+ constructor(tokens, originalPath) {
16
+ this.tokens = tokens;
17
+ this.originalPath = originalPath;
18
+ }
19
+ }
20
+ /**
21
+ * ParseError is thrown when there is an error processing the path.
22
+ */
23
+ class PathError extends TypeError {
24
+ constructor(message, originalPath) {
25
+ let text = message;
26
+ if (originalPath)
27
+ text += `: ${originalPath}`;
28
+ text += `; visit https://git.new/pathToRegexpError for info`;
29
+ super(text);
30
+ this.originalPath = originalPath;
31
+ }
32
+ }
33
+ /**
34
+ * Parse a string for the raw tokens.
35
+ */
36
+ function parse(str, options = {}) {
37
+ const { encodePath = NOOP_VALUE } = options;
38
+ const chars = [...str];
39
+ let index = 0;
40
+ function consumeUntil(end) {
41
+ const output = [];
42
+ let path = "";
43
+ function writePath() {
44
+ if (!path)
45
+ return;
46
+ output.push({
47
+ type: "text",
48
+ value: encodePath(path),
49
+ });
50
+ path = "";
51
+ }
52
+ while (index < chars.length) {
53
+ const value = chars[index++];
54
+ if (value === end) {
55
+ writePath();
56
+ return output;
57
+ }
58
+ if (value === "\\") {
59
+ if (index === chars.length) {
60
+ throw new PathError(`Unexpected end after \\ at index ${index}`, str);
61
+ }
62
+ path += chars[index++];
63
+ continue;
64
+ }
65
+ if (value === ":" || value === "*") {
66
+ const type = value === ":" ? "param" : "wildcard";
67
+ let name = "";
68
+ if (ID_START.test(chars[index])) {
69
+ do {
70
+ name += chars[index++];
71
+ } while (ID_CONTINUE.test(chars[index]));
72
+ }
73
+ else if (chars[index] === '"') {
74
+ let quoteStart = index;
75
+ while (index < chars.length) {
76
+ if (chars[++index] === '"') {
77
+ index++;
78
+ quoteStart = 0;
79
+ break;
80
+ }
81
+ // Increment over escape characters.
82
+ if (chars[index] === "\\")
83
+ index++;
84
+ name += chars[index];
85
+ }
86
+ if (quoteStart) {
87
+ throw new PathError(`Unterminated quote at index ${quoteStart}`, str);
88
+ }
89
+ }
90
+ if (!name) {
91
+ throw new PathError(`Missing parameter name at index ${index}`, str);
92
+ }
93
+ writePath();
94
+ output.push({ type, name });
95
+ continue;
96
+ }
97
+ if (value === "{") {
98
+ writePath();
99
+ output.push({
100
+ type: "group",
101
+ tokens: consumeUntil("}"),
102
+ });
103
+ continue;
104
+ }
105
+ if (value === "}" ||
106
+ value === "(" ||
107
+ value === ")" ||
108
+ value === "[" ||
109
+ value === "]" ||
110
+ value === "+" ||
111
+ value === "?" ||
112
+ value === "!") {
113
+ throw new PathError(`Unexpected ${value} at index ${index - 1}`, str);
114
+ }
115
+ path += value;
116
+ }
117
+ if (end) {
118
+ throw new PathError(`Unexpected end at index ${index}, expected ${end}`, str);
119
+ }
120
+ writePath();
121
+ return output;
122
+ }
123
+ return new TokenData(consumeUntil(""), str);
124
+ }
125
+ /**
126
+ * Compile a string to a template function for the path.
127
+ */
128
+ function compile(path, options = {}) {
129
+ const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } = options;
130
+ const data = typeof path === "object" ? path : parse(path, options);
131
+ const fn = tokensToFunction(data.tokens, delimiter, encode);
132
+ return function path(params = {}) {
133
+ const missing = [];
134
+ const path = fn(params, missing);
135
+ if (missing.length) {
136
+ throw new TypeError(`Missing parameters: ${missing.join(", ")}`);
137
+ }
138
+ return path;
139
+ };
140
+ }
141
+ function tokensToFunction(tokens, delimiter, encode) {
142
+ const encoders = tokens.map((token) => tokenToFunction(token, delimiter, encode));
143
+ return (data, missing) => {
144
+ let result = "";
145
+ for (const encoder of encoders) {
146
+ result += encoder(data, missing);
147
+ }
148
+ return result;
149
+ };
150
+ }
151
+ /**
152
+ * Convert a single token into a path building function.
153
+ */
154
+ function tokenToFunction(token, delimiter, encode) {
155
+ if (token.type === "text")
156
+ return () => token.value;
157
+ if (token.type === "group") {
158
+ const fn = tokensToFunction(token.tokens, delimiter, encode);
159
+ return (data, missing) => {
160
+ const len = missing.length;
161
+ const value = fn(data, missing);
162
+ if (missing.length === len)
163
+ return value;
164
+ missing.length = len; // Reset optional group.
165
+ return "";
166
+ };
167
+ }
168
+ const encodeValue = encode || NOOP_VALUE;
169
+ if (token.type === "wildcard" && encode !== false) {
170
+ return (data, missing) => {
171
+ const value = data[token.name];
172
+ if (value == null) {
173
+ missing.push(token.name);
174
+ return "";
175
+ }
176
+ if (!Array.isArray(value) || value.length === 0) {
177
+ throw new TypeError(`Expected "${token.name}" to be a non-empty array`);
178
+ }
179
+ let result = "";
180
+ for (let i = 0; i < value.length; i++) {
181
+ if (typeof value[i] !== "string") {
182
+ throw new TypeError(`Expected "${token.name}/${i}" to be a string`);
183
+ }
184
+ if (i > 0)
185
+ result += delimiter;
186
+ result += encodeValue(value[i]);
187
+ }
188
+ return result;
189
+ };
190
+ }
191
+ return (data, missing) => {
192
+ const value = data[token.name];
193
+ if (value == null) {
194
+ missing.push(token.name);
195
+ return "";
196
+ }
197
+ if (typeof value !== "string") {
198
+ throw new TypeError(`Expected "${token.name}" to be a string`);
199
+ }
200
+ return encodeValue(value);
201
+ };
202
+ }
203
+ /**
204
+ * Transform a path into a regular expression and capture keys.
205
+ */
206
+ function pathToRegexp(path, options = {}) {
207
+ const { delimiter = DEFAULT_DELIMITER, end = true, sensitive = false, trailing = true, } = options;
208
+ const keys = [];
209
+ let source = "";
210
+ let combinations = 0;
211
+ function process(path) {
212
+ if (Array.isArray(path)) {
213
+ for (const p of path)
214
+ process(p);
215
+ return;
216
+ }
217
+ const data = typeof path === "object" ? path : parse(path, options);
218
+ flatten(data.tokens, 0, [], (tokens) => {
219
+ if (combinations >= 256) {
220
+ throw new PathError("Too many path combinations", data.originalPath);
221
+ }
222
+ if (combinations > 0)
223
+ source += "|";
224
+ source += toRegExpSource(tokens, delimiter, keys, data.originalPath);
225
+ combinations++;
226
+ });
227
+ }
228
+ process(path);
229
+ let pattern = `^(?:${source})`;
230
+ if (trailing)
231
+ pattern += "(?:" + escape(delimiter) + "$)?";
232
+ pattern += end ? "$" : "(?=" + escape(delimiter) + "|$)";
233
+ return { regexp: new RegExp(pattern, sensitive ? "" : "i"), keys };
234
+ }
235
+ /**
236
+ * Generate a flat list of sequence tokens from the given tokens.
237
+ */
238
+ function flatten(tokens, index, result, callback) {
239
+ while (index < tokens.length) {
240
+ const token = tokens[index++];
241
+ if (token.type === "group") {
242
+ const len = result.length;
243
+ flatten(token.tokens, 0, result, (seq) => flatten(tokens, index, seq, callback));
244
+ result.length = len;
245
+ continue;
246
+ }
247
+ result.push(token);
248
+ }
249
+ callback(result);
250
+ }
251
+ /**
252
+ * Transform a flat sequence of tokens into a regular expression.
253
+ */
254
+ function toRegExpSource(tokens, delimiter, keys, originalPath) {
255
+ let result = "";
256
+ let backtrack = "";
257
+ let wildcardBacktrack = "";
258
+ let prevCaptureType = 0;
259
+ let hasSegmentCapture = 0;
260
+ let index = 0;
261
+ function hasInSegment(index, type) {
262
+ while (index < tokens.length) {
263
+ const token = tokens[index++];
264
+ if (token.type === type)
265
+ return true;
266
+ if (token.type === "text") {
267
+ if (token.value.includes(delimiter))
268
+ break;
269
+ }
270
+ }
271
+ return false;
272
+ }
273
+ function peekText(index) {
274
+ let result = "";
275
+ while (index < tokens.length) {
276
+ const token = tokens[index++];
277
+ if (token.type !== "text")
278
+ break;
279
+ result += token.value;
280
+ }
281
+ return result;
282
+ }
283
+ while (index < tokens.length) {
284
+ const token = tokens[index++];
285
+ if (token.type === "text") {
286
+ result += escape(token.value);
287
+ backtrack += token.value;
288
+ if (prevCaptureType === 2)
289
+ wildcardBacktrack += token.value;
290
+ if (token.value.includes(delimiter))
291
+ hasSegmentCapture = 0;
292
+ continue;
293
+ }
294
+ if (token.type === "param" || token.type === "wildcard") {
295
+ if (prevCaptureType && !backtrack) {
296
+ throw new PathError(`Missing text before "${token.name}" ${token.type}`, originalPath);
297
+ }
298
+ if (token.type === "param") {
299
+ result +=
300
+ hasSegmentCapture & 2 // Seen wildcard in segment.
301
+ ? `(${negate(delimiter, backtrack)}+)`
302
+ : hasInSegment(index, "wildcard") // See wildcard later in segment.
303
+ ? `(${negate(delimiter, peekText(index))}+)`
304
+ : hasSegmentCapture & 1 // Seen parameter in segment.
305
+ ? `(${negate(delimiter, backtrack)}+|${escape(backtrack)})`
306
+ : `(${negate(delimiter, "")}+)`;
307
+ hasSegmentCapture |= prevCaptureType = 1;
308
+ }
309
+ else {
310
+ result +=
311
+ hasSegmentCapture & 2 // Seen wildcard in segment.
312
+ ? `(${negate(backtrack, "")}+)`
313
+ : wildcardBacktrack // No capture in segment, seen wildcard in path.
314
+ ? `(${negate(wildcardBacktrack, "")}+|${negate(delimiter, "")}+)`
315
+ : `([^]+)`;
316
+ wildcardBacktrack = "";
317
+ hasSegmentCapture |= prevCaptureType = 2;
318
+ }
319
+ keys.push(token);
320
+ backtrack = "";
321
+ continue;
322
+ }
323
+ throw new TypeError(`Unknown token type: ${token.type}`);
324
+ }
325
+ return result;
326
+ }
327
+ /**
328
+ * Block backtracking on previous text/delimiter.
329
+ */
330
+ function negate(a, b) {
331
+ if (b.length > a.length)
332
+ return negate(b, a); // Longest string first.
333
+ if (a === b)
334
+ b = ""; // Cleaner regex strings, no duplication.
335
+ if (b.length > 1)
336
+ return `(?:(?!${escape(a)}|${escape(b)})[^])`;
337
+ if (a.length > 1)
338
+ return `(?:(?!${escape(a)})[^${escape(b)}])`;
339
+ return `[^${escape(a + b)}]`;
340
+ }
341
+
342
+ export { compile, parse, pathToRegexp };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-client/rest",
3
- "version": "0.16.3",
3
+ "version": "0.16.5",
4
4
  "description": "Quickly define typed REST resources and endpoints",
5
5
  "homepage": "https://dataclient.io/rest",
6
6
  "repository": {
@@ -84,6 +84,7 @@
84
84
  },
85
85
  "exports": {
86
86
  ".": {
87
+ "types": "./lib/index.d.ts",
87
88
  "module": "./lib/index.js",
88
89
  "import": "./node.mjs",
89
90
  "require": "./dist/index.js",
@@ -116,7 +117,7 @@
116
117
  "README.md"
117
118
  ],
118
119
  "scripts": {
119
- "build:lib": "NODE_ENV=production BROWSERSLIST_ENV='2020' POLYFILL_TARGETS='chrome>88,safari>14' yarn g:babel --out-dir lib",
120
+ "build:lib": "NODE_ENV=production BROWSERSLIST_ENV='2020' POLYFILL_TARGETS='chrome>88,safari>14' yarn g:babel --out-dir lib && NODE_ENV=production BROWSERSLIST_ENV='2020' yarn g:rollup",
120
121
  "build:legacy:lib": "NODE_ENV=production BROWSERSLIST_ENV='2018' POLYFILL_TARGETS='chrome>80,safari>13,firefox>72' yarn g:babel --out-dir legacy",
121
122
  "build:js:node": "BROWSERSLIST_ENV=node12 yarn g:rollup",
122
123
  "build:js:browser": "BROWSERSLIST_ENV=legacy yarn g:rollup",
@@ -124,7 +125,7 @@
124
125
  "build:clean": "yarn g:clean ts4.0 ts4.1 index.d.ts next.d.ts",
125
126
  "build:legacy-types": "yarn g:downtypes lib ts4.0 --to=4.0 && yarn g:downtypes lib ts4.1 --to=4.1 && yarn g:copy --up 1 ./src-4.1-types/**/*.d.ts ./ts4.0/ && yarn g:copy --up 1 ./src-4.1-types/**/*.d.ts ./ts4.1 && yarn g:copy --up 1 ./src-4.0-types/**/*.d.ts ./ts4.0",
126
127
  "build": "run build:lib && run build:legacy:lib && run build:bundle",
127
- "dev": "run build:lib -w",
128
+ "dev": "NODE_ENV=production BROWSERSLIST_ENV='2020' POLYFILL_TARGETS='chrome>88,safari>14' yarn g:babel --out-dir lib -w",
128
129
  "prepare": "run build:lib",
129
130
  "prepack": "run prepare && run build:bundle && run build:legacy:lib",
130
131
  "tsc:ci": "yarn g:tsc --project tsconfig.test.json",
@@ -5,8 +5,7 @@ import {
5
5
  pathToRegexp,
6
6
  Token,
7
7
  ParamData,
8
- } from 'path-to-regexp';
9
-
8
+ } from './pathToRegexp.js';
10
9
  import { ShortenPath } from './pathTypes.js';
11
10
 
12
11
  const urlBaseCache: Record<string, PathFunction<object>> = Object.create(null);
@@ -0,0 +1,2 @@
1
+ export type { PathFunction, Token, ParamData } from 'path-to-regexp';
2
+ export { compile, parse, pathToRegexp } from 'path-to-regexp';
@@ -1,4 +1,4 @@
1
- import { PathFunction, ParamData } from 'path-to-regexp';
1
+ import { PathFunction, ParamData } from './pathToRegexp.js';
2
2
  import { ShortenPath } from './pathTypes.js';
3
3
  export declare function getUrlBase(path: string): PathFunction<ParamData>;
4
4
  export declare function getUrlTokens(path: string): Set<string>;
@@ -0,0 +1,3 @@
1
+ export type { PathFunction, Token, ParamData } from 'path-to-regexp';
2
+ export { compile, parse, pathToRegexp } from 'path-to-regexp';
3
+ //# sourceMappingURL=pathToRegexp.d.ts.map
@@ -1,4 +1,4 @@
1
- import { PathFunction, ParamData } from 'path-to-regexp';
1
+ import { PathFunction, ParamData } from './pathToRegexp.js';
2
2
  import { ShortenPath } from './pathTypes.js';
3
3
  export declare function getUrlBase(path: string): PathFunction<ParamData>;
4
4
  export declare function getUrlTokens(path: string): Set<string>;
@@ -0,0 +1,3 @@
1
+ export type { PathFunction, Token, ParamData } from 'path-to-regexp';
2
+ export { compile, parse, pathToRegexp } from 'path-to-regexp';
3
+ //# sourceMappingURL=pathToRegexp.d.ts.map