@nlabs/lex 1.55.2 → 1.56.1

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.
@@ -11,16 +11,17 @@ const postcssFor = (opts = {})=>{
11
11
  };
12
12
  const iterStack = [];
13
13
  const parentsHaveIterator = (rule, param)=>{
14
- if (rule.parent === null) {
14
+ const parent = rule.parent;
15
+ if (parent === null || parent === undefined) {
15
16
  return false;
16
17
  }
17
- if (rule.parent.type === 'root') {
18
+ if (parent.type === 'root') {
18
19
  return false;
19
20
  }
20
- if (rule.parent.type !== 'atrule' || !rule.parent.params) {
21
+ if (parent.type !== 'atrule') {
21
22
  return false;
22
23
  }
23
- const parentIterVar = rule.parent.params.split(/\s+/)[0];
24
+ const parentIterVar = parent.params.split(/\s+/)[0];
24
25
  if (!parentIterVar) {
25
26
  return false;
26
27
  }
@@ -30,7 +31,7 @@ const postcssFor = (opts = {})=>{
30
31
  if (iterStack.indexOf(param) !== -1) {
31
32
  return true;
32
33
  }
33
- return parentsHaveIterator(rule.parent, param);
34
+ return parentsHaveIterator(parent, param);
34
35
  };
35
36
  const manageIterStack = (rule)=>{
36
37
  if (rule.parent && rule.parent.type !== 'root') {
@@ -139,4 +140,4 @@ const postcssFor = (opts = {})=>{
139
140
  postcssFor.postcss = true;
140
141
  export default postcssFor;
141
142
 
142
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtZm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICpcbiAqIFBvc3RDU1MgOC1jb21wYXRpYmxlIHZlcnNpb24gb2YgcG9zdGNzcy1mb3IgcGx1Z2luXG4gKiBPcmlnaW5hbDogaHR0cHM6Ly9naXRodWIuY29tL2FudHlha3VzaGV2L3Bvc3Rjc3MtZm9yXG4gKi9cbmltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuaW1wb3J0IHBvc3Rjc3NTaW1wbGVWYXJzIGZyb20gJ3Bvc3Rjc3Mtc2ltcGxlLXZhcnMnO1xuXG5pbnRlcmZhY2UgUG9zdGNzc0Zvck9wdGlvbnMge1xuICBuZXN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBwb3N0Y3NzRm9yID0gKG9wdHM6IFBvc3Rjc3NGb3JPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBuZXN0ZWQ6IG9wdHMubmVzdGVkICE9PSBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IGl0ZXJTdGFjazogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBwYXJlbnRzSGF2ZUl0ZXJhdG9yID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlLCBwYXJhbTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgaWYocnVsZS5wYXJlbnQgPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYocnVsZS5wYXJlbnQudHlwZSA9PT0gJ3Jvb3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmKHJ1bGUucGFyZW50LnR5cGUgIT09ICdhdHJ1bGUnIHx8ICFydWxlLnBhcmVudC5wYXJhbXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRJdGVyVmFyID0gcnVsZS5wYXJlbnQucGFyYW1zLnNwbGl0KC9cXHMrLylbMF07XG4gICAgaWYoIXBhcmVudEl0ZXJWYXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYocGFyZW50SXRlclZhciA9PT0gcGFyYW0pIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZihpdGVyU3RhY2suaW5kZXhPZihwYXJhbSkgIT09IC0xKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmVudHNIYXZlSXRlcmF0b3IocnVsZS5wYXJlbnQgYXMgcG9zdGNzcy5BdFJ1bGUsIHBhcmFtKTtcbiAgfTtcblxuICBjb25zdCBtYW5hZ2VJdGVyU3RhY2sgPSAocnVsZTogcG9zdGNzcy5BdFJ1bGUpID0+IHtcbiAgICBpZihydWxlLnBhcmVudCAmJiBydWxlLnBhcmVudC50eXBlICE9PSAncm9vdCcpIHtcbiAgICAgIGNvbnN0IHBhcmVudEl0ZXJWYXIgPSBydWxlLnBhcmVudC50eXBlID09PSAnYXRydWxlJyAmJiBydWxlLnBhcmVudC5wYXJhbXNcbiAgICAgICAgPyBydWxlLnBhcmVudC5wYXJhbXMuc3BsaXQoL1xccysvKVswXVxuICAgICAgICA6IG51bGw7XG4gICAgICBpZihwYXJlbnRJdGVyVmFyICYmIGl0ZXJTdGFjay5pbmRleE9mKHBhcmVudEl0ZXJWYXIpID09PSAtMSkge1xuICAgICAgICBpdGVyU3RhY2suc3BsaWNlKDAsIGl0ZXJTdGFjay5sZW5ndGgpO1xuICAgICAgfSBlbHNlIGlmKHBhcmVudEl0ZXJWYXIpIHtcbiAgICAgICAgY29uc3QgcGFyZW50SW5kZXggPSBpdGVyU3RhY2suaW5kZXhPZihwYXJlbnRJdGVyVmFyKTtcbiAgICAgICAgaWYocGFyZW50SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgaXRlclN0YWNrLnNwbGljZShwYXJlbnRJbmRleCArIDEsIGl0ZXJTdGFjay5sZW5ndGggLSBwYXJlbnRJbmRleCAtIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGl0ZXJTdGFjay5zcGxpY2UoMCwgaXRlclN0YWNrLmxlbmd0aCk7XG4gICAgfVxuICAgIGNvbnN0IGN1cnJlbnRJdGVyVmFyID0gcnVsZS5wYXJhbXMuc3BsaXQoL1xccysvKVswXTtcbiAgICBpZihjdXJyZW50SXRlclZhcikge1xuICAgICAgaXRlclN0YWNrLnB1c2goY3VycmVudEl0ZXJWYXIpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjaGVja051bWJlciA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSkgPT4gKHBhcmFtOiBzdHJpbmcpID0+IHtcbiAgICBpZihpc05hTihOdW1iZXIocGFyYW0pKSB8fCAhcGFyYW0ubWF0Y2goL14tP1xcZCtcXC4/XFxkKiQvKSkge1xuICAgICAgaWYocGFyYW0uaW5kZXhPZignJCcpICE9PSAtMSkge1xuICAgICAgICBpZighcGFyZW50c0hhdmVJdGVyYXRvcihydWxlLCBwYXJhbSkpIHtcbiAgICAgICAgICB0aHJvdyBydWxlLmVycm9yKCdFeHRlcm5hbCB2YXJpYWJsZSAobm90IGZyb20gYSBwYXJlbnQgZm9yIGxvb3ApIGNhbm5vdCBiZSB1c2VkIGFzIGEgcmFuZ2UgcGFyYW1ldGVyJywge1xuICAgICAgICAgICAgcGx1Z2luOiAncG9zdGNzcy1mb3InXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ1JhbmdlIHBhcmFtZXRlciBzaG91bGQgYmUgYSBudW1iZXInLCB7XG4gICAgICAgICAgcGx1Z2luOiAncG9zdGNzcy1mb3InXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCBjaGVja1BhcmFtcyA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSwgcGFyYW1zOiBzdHJpbmdbXSkgPT4ge1xuICAgIGlmKFxuICAgICAgIXBhcmFtc1swXT8uc3RhcnRzV2l0aCgnJCcpIHx8XG4gICAgICBwYXJhbXNbMV0gIT09ICdmcm9tJyB8fFxuICAgICAgcGFyYW1zWzNdICE9PSAndG8nIHx8XG4gICAgICAocGFyYW1zWzVdICYmIHBhcmFtc1s1XSAhPT0gJ2J5JylcbiAgICApIHtcbiAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ1dyb25nIGxvb3Agc3ludGF4Jywge1xuICAgICAgICBwbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIFtwYXJhbXNbMl0sIHBhcmFtc1s0XSwgcGFyYW1zWzZdIHx8ICcwJ10uZm9yRWFjaChjaGVja051bWJlcihydWxlKSk7XG4gIH07XG5cbiAgY29uc3QgdW5yb2xsTG9vcCA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IHJ1bGUucGFyYW1zLnNwbGl0KC9cXHMrLyk7XG5cbiAgICBjaGVja1BhcmFtcyhydWxlLCBwYXJhbXMpO1xuXG4gICAgY29uc3QgaXRlcmF0b3IgPSBwYXJhbXNbMF0uc2xpY2UoMSk7XG4gICAgY29uc3QgaW5kZXggPSArcGFyYW1zWzJdO1xuICAgIGNvbnN0IHRvcCA9ICtwYXJhbXNbNF07XG4gICAgY29uc3QgZGlyID0gdG9wIDwgaW5kZXggPyAtMSA6IDE7XG4gICAgY29uc3QgYnkgPSAoKyhwYXJhbXNbNl0gfHwgMSkpICogZGlyO1xuXG4gICAgY29uc3QgdmFsdWU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgICBmb3IobGV0IGkgPSBpbmRleDsgaSAqIGRpciA8PSB0b3AgKiBkaXI7IGkgPSBpICsgYnkpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBydWxlLmNsb25lKCk7XG4gICAgICB2YWx1ZVtpdGVyYXRvcl0gPSBpO1xuICAgICAgY29uc3Qgc2ltcGxlVmFyc1BsdWdpbiA9IHBvc3Rjc3NTaW1wbGVWYXJzKHtvbmx5OiB2YWx1ZX0pO1xuICAgICAgaWYoc2ltcGxlVmFyc1BsdWdpbi5wcmVwYXJlKSB7XG4gICAgICAgIGNvbnN0IHByZXBhcmVkID0gc2ltcGxlVmFyc1BsdWdpbi5wcmVwYXJlKHt9IGFzIGFueSk7XG4gICAgICAgIGlmKHByZXBhcmVkLk9uY2UpIHtcbiAgICAgICAgICBwcmVwYXJlZC5PbmNlKGNvbnRlbnQsIHt9IGFzIGFueSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZih0eXBlb2Ygc2ltcGxlVmFyc1BsdWdpbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBzaW1wbGVWYXJzUGx1Z2luKGNvbnRlbnQpO1xuICAgICAgfVxuICAgICAgaWYob3B0aW9ucy5uZXN0ZWQpIHtcbiAgICAgICAgcHJvY2Vzc0xvb3BzKGNvbnRlbnQpO1xuICAgICAgfVxuICAgICAgaWYocnVsZS5wYXJlbnQpIHtcbiAgICAgICAgcnVsZS5wYXJlbnQuaW5zZXJ0QmVmb3JlKHJ1bGUsIGNvbnRlbnQubm9kZXMpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZihydWxlLnBhcmVudCkge1xuICAgICAgcnVsZS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcHJvY2Vzc0xvb3BzID0gKGNzczogcG9zdGNzcy5Db250YWluZXIpID0+IHtcbiAgICBjc3Mud2Fsa0F0UnVsZXMoKHJ1bGUpID0+IHtcbiAgICAgIGlmKHJ1bGUubmFtZSA9PT0gJ2ZvcicpIHtcbiAgICAgICAgdW5yb2xsTG9vcChydWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBwcm9jZXNzT3JpZ2luYWxMb29wcyA9IChjc3M6IHBvc3Rjc3MuUm9vdCkgPT4ge1xuICAgIGNzcy53YWxrQXRSdWxlcygocnVsZSkgPT4ge1xuICAgICAgaWYocnVsZS5uYW1lID09PSAnZm9yJykge1xuICAgICAgICBpZihydWxlLnBhcmVudCkge1xuICAgICAgICAgIG1hbmFnZUl0ZXJTdGFjayhydWxlKTtcbiAgICAgICAgfVxuICAgICAgICB1bnJvbGxMb29wKHJ1bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgT25jZShyb290KSB7XG4gICAgICBwcm9jZXNzT3JpZ2luYWxMb29wcyhyb290KTtcbiAgICB9LFxuICAgIHBvc3Rjc3NQbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgfTtcbn07XG5cbnBvc3Rjc3NGb3IucG9zdGNzcyA9IHRydWU7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3NGb3I7XG5cbiJdLCJuYW1lcyI6WyJwb3N0Y3NzU2ltcGxlVmFycyIsInBvc3Rjc3NGb3IiLCJvcHRzIiwib3B0aW9ucyIsIm5lc3RlZCIsIml0ZXJTdGFjayIsInBhcmVudHNIYXZlSXRlcmF0b3IiLCJydWxlIiwicGFyYW0iLCJwYXJlbnQiLCJ0eXBlIiwicGFyYW1zIiwicGFyZW50SXRlclZhciIsInNwbGl0IiwiaW5kZXhPZiIsIm1hbmFnZUl0ZXJTdGFjayIsInNwbGljZSIsImxlbmd0aCIsInBhcmVudEluZGV4IiwiY3VycmVudEl0ZXJWYXIiLCJwdXNoIiwiY2hlY2tOdW1iZXIiLCJpc05hTiIsIk51bWJlciIsIm1hdGNoIiwiZXJyb3IiLCJwbHVnaW4iLCJjaGVja1BhcmFtcyIsInN0YXJ0c1dpdGgiLCJmb3JFYWNoIiwidW5yb2xsTG9vcCIsIml0ZXJhdG9yIiwic2xpY2UiLCJpbmRleCIsInRvcCIsImRpciIsImJ5IiwidmFsdWUiLCJpIiwiY29udGVudCIsImNsb25lIiwic2ltcGxlVmFyc1BsdWdpbiIsIm9ubHkiLCJwcmVwYXJlIiwicHJlcGFyZWQiLCJPbmNlIiwicHJvY2Vzc0xvb3BzIiwiaW5zZXJ0QmVmb3JlIiwibm9kZXMiLCJyZW1vdmUiLCJjc3MiLCJ3YWxrQXRSdWxlcyIsIm5hbWUiLCJwcm9jZXNzT3JpZ2luYWxMb29wcyIsInJvb3QiLCJwb3N0Y3NzUGx1Z2luIiwicG9zdGNzcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztDQU1DLEdBRUQsT0FBT0EsdUJBQXVCLHNCQUFzQjtBQU1wRCxNQUFNQyxhQUFhLENBQUNDLE9BQTBCLENBQUMsQ0FBQztJQUM5QyxNQUFNQyxVQUFVO1FBQ2RDLFFBQVFGLEtBQUtFLE1BQU0sS0FBSztJQUMxQjtJQUVBLE1BQU1DLFlBQXNCLEVBQUU7SUFFOUIsTUFBTUMsc0JBQXNCLENBQUNDLE1BQXNCQztRQUNqRCxJQUFHRCxLQUFLRSxNQUFNLEtBQUssTUFBTTtZQUN2QixPQUFPO1FBQ1Q7UUFDQSxJQUFHRixLQUFLRSxNQUFNLENBQUNDLElBQUksS0FBSyxRQUFRO1lBQzlCLE9BQU87UUFDVDtRQUNBLElBQUdILEtBQUtFLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFlBQVksQ0FBQ0gsS0FBS0UsTUFBTSxDQUFDRSxNQUFNLEVBQUU7WUFDdkQsT0FBTztRQUNUO1FBRUEsTUFBTUMsZ0JBQWdCTCxLQUFLRSxNQUFNLENBQUNFLE1BQU0sQ0FBQ0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hELElBQUcsQ0FBQ0QsZUFBZTtZQUNqQixPQUFPO1FBQ1Q7UUFDQSxJQUFHQSxrQkFBa0JKLE9BQU87WUFDMUIsT0FBTztRQUNUO1FBQ0EsSUFBR0gsVUFBVVMsT0FBTyxDQUFDTixXQUFXLENBQUMsR0FBRztZQUNsQyxPQUFPO1FBQ1Q7UUFDQSxPQUFPRixvQkFBb0JDLEtBQUtFLE1BQU0sRUFBb0JEO0lBQzVEO0lBRUEsTUFBTU8sa0JBQWtCLENBQUNSO1FBQ3ZCLElBQUdBLEtBQUtFLE1BQU0sSUFBSUYsS0FBS0UsTUFBTSxDQUFDQyxJQUFJLEtBQUssUUFBUTtZQUM3QyxNQUFNRSxnQkFBZ0JMLEtBQUtFLE1BQU0sQ0FBQ0MsSUFBSSxLQUFLLFlBQVlILEtBQUtFLE1BQU0sQ0FBQ0UsTUFBTSxHQUNyRUosS0FBS0UsTUFBTSxDQUFDRSxNQUFNLENBQUNFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUNsQztZQUNKLElBQUdELGlCQUFpQlAsVUFBVVMsT0FBTyxDQUFDRixtQkFBbUIsQ0FBQyxHQUFHO2dCQUMzRFAsVUFBVVcsTUFBTSxDQUFDLEdBQUdYLFVBQVVZLE1BQU07WUFDdEMsT0FBTyxJQUFHTCxlQUFlO2dCQUN2QixNQUFNTSxjQUFjYixVQUFVUyxPQUFPLENBQUNGO2dCQUN0QyxJQUFHTSxnQkFBZ0IsQ0FBQyxHQUFHO29CQUNyQmIsVUFBVVcsTUFBTSxDQUFDRSxjQUFjLEdBQUdiLFVBQVVZLE1BQU0sR0FBR0MsY0FBYztnQkFDckU7WUFDRjtRQUNGLE9BQU87WUFDTGIsVUFBVVcsTUFBTSxDQUFDLEdBQUdYLFVBQVVZLE1BQU07UUFDdEM7UUFDQSxNQUFNRSxpQkFBaUJaLEtBQUtJLE1BQU0sQ0FBQ0UsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ2xELElBQUdNLGdCQUFnQjtZQUNqQmQsVUFBVWUsSUFBSSxDQUFDRDtRQUNqQjtJQUNGO0lBRUEsTUFBTUUsY0FBYyxDQUFDZCxPQUF5QixDQUFDQztZQUM3QyxJQUFHYyxNQUFNQyxPQUFPZixXQUFXLENBQUNBLE1BQU1nQixLQUFLLENBQUMsa0JBQWtCO2dCQUN4RCxJQUFHaEIsTUFBTU0sT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHO29CQUM1QixJQUFHLENBQUNSLG9CQUFvQkMsTUFBTUMsUUFBUTt3QkFDcEMsTUFBTUQsS0FBS2tCLEtBQUssQ0FBQyxzRkFBc0Y7NEJBQ3JHQyxRQUFRO3dCQUNWO29CQUNGO2dCQUNGLE9BQU87b0JBQ0wsTUFBTW5CLEtBQUtrQixLQUFLLENBQUMsc0NBQXNDO3dCQUNyREMsUUFBUTtvQkFDVjtnQkFDRjtZQUNGO1FBQ0Y7SUFFQSxNQUFNQyxjQUFjLENBQUNwQixNQUFzQkk7UUFDekMsSUFDRSxDQUFDQSxNQUFNLENBQUMsRUFBRSxFQUFFaUIsV0FBVyxRQUN2QmpCLE1BQU0sQ0FBQyxFQUFFLEtBQUssVUFDZEEsTUFBTSxDQUFDLEVBQUUsS0FBSyxRQUNiQSxNQUFNLENBQUMsRUFBRSxJQUFJQSxNQUFNLENBQUMsRUFBRSxLQUFLLE1BQzVCO1lBQ0EsTUFBTUosS0FBS2tCLEtBQUssQ0FBQyxxQkFBcUI7Z0JBQ3BDQyxRQUFRO1lBQ1Y7UUFDRjtRQUVBO1lBQUNmLE1BQU0sQ0FBQyxFQUFFO1lBQUVBLE1BQU0sQ0FBQyxFQUFFO1lBQUVBLE1BQU0sQ0FBQyxFQUFFLElBQUk7U0FBSSxDQUFDa0IsT0FBTyxDQUFDUixZQUFZZDtJQUMvRDtJQUVBLE1BQU11QixhQUFhLENBQUN2QjtRQUNsQixNQUFNSSxTQUFTSixLQUFLSSxNQUFNLENBQUNFLEtBQUssQ0FBQztRQUVqQ2MsWUFBWXBCLE1BQU1JO1FBRWxCLE1BQU1vQixXQUFXcEIsTUFBTSxDQUFDLEVBQUUsQ0FBQ3FCLEtBQUssQ0FBQztRQUNqQyxNQUFNQyxRQUFRLENBQUN0QixNQUFNLENBQUMsRUFBRTtRQUN4QixNQUFNdUIsTUFBTSxDQUFDdkIsTUFBTSxDQUFDLEVBQUU7UUFDdEIsTUFBTXdCLE1BQU1ELE1BQU1ELFFBQVEsQ0FBQyxJQUFJO1FBQy9CLE1BQU1HLEtBQUssQUFBQyxDQUFFekIsQ0FBQUEsTUFBTSxDQUFDLEVBQUUsSUFBSSxDQUFBLElBQU13QjtRQUVqQyxNQUFNRSxRQUFnQyxDQUFDO1FBQ3ZDLElBQUksSUFBSUMsSUFBSUwsT0FBT0ssSUFBSUgsT0FBT0QsTUFBTUMsS0FBS0csSUFBSUEsSUFBSUYsR0FBSTtZQUNuRCxNQUFNRyxVQUFVaEMsS0FBS2lDLEtBQUs7WUFDMUJILEtBQUssQ0FBQ04sU0FBUyxHQUFHTztZQUNsQixNQUFNRyxtQkFBbUJ6QyxrQkFBa0I7Z0JBQUMwQyxNQUFNTDtZQUFLO1lBQ3ZELElBQUdJLGlCQUFpQkUsT0FBTyxFQUFFO2dCQUMzQixNQUFNQyxXQUFXSCxpQkFBaUJFLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQyxJQUFHQyxTQUFTQyxJQUFJLEVBQUU7b0JBQ2hCRCxTQUFTQyxJQUFJLENBQUNOLFNBQVMsQ0FBQztnQkFDMUI7WUFDRixPQUFPLElBQUcsT0FBT0UscUJBQXFCLFlBQVk7Z0JBQ2hEQSxpQkFBaUJGO1lBQ25CO1lBQ0EsSUFBR3BDLFFBQVFDLE1BQU0sRUFBRTtnQkFDakIwQyxhQUFhUDtZQUNmO1lBQ0EsSUFBR2hDLEtBQUtFLE1BQU0sRUFBRTtnQkFDZEYsS0FBS0UsTUFBTSxDQUFDc0MsWUFBWSxDQUFDeEMsTUFBTWdDLFFBQVFTLEtBQUs7WUFDOUM7UUFDRjtRQUNBLElBQUd6QyxLQUFLRSxNQUFNLEVBQUU7WUFDZEYsS0FBSzBDLE1BQU07UUFDYjtJQUNGO0lBRUEsTUFBTUgsZUFBZSxDQUFDSTtRQUNwQkEsSUFBSUMsV0FBVyxDQUFDLENBQUM1QztZQUNmLElBQUdBLEtBQUs2QyxJQUFJLEtBQUssT0FBTztnQkFDdEJ0QixXQUFXdkI7WUFDYjtRQUNGO0lBQ0Y7SUFFQSxNQUFNOEMsdUJBQXVCLENBQUNIO1FBQzVCQSxJQUFJQyxXQUFXLENBQUMsQ0FBQzVDO1lBQ2YsSUFBR0EsS0FBSzZDLElBQUksS0FBSyxPQUFPO2dCQUN0QixJQUFHN0MsS0FBS0UsTUFBTSxFQUFFO29CQUNkTSxnQkFBZ0JSO2dCQUNsQjtnQkFDQXVCLFdBQVd2QjtZQUNiO1FBQ0Y7SUFDRjtJQUVBLE9BQU87UUFDTHNDLE1BQUtTLElBQUk7WUFDUEQscUJBQXFCQztRQUN2QjtRQUNBQyxlQUFlO0lBQ2pCO0FBQ0Y7QUFFQXRELFdBQVd1RCxPQUFPLEdBQUc7QUFFckIsZUFBZXZELFdBQVcifQ==
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtZm9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICpcbiAqIFBvc3RDU1MgOC1jb21wYXRpYmxlIHZlcnNpb24gb2YgcG9zdGNzcy1mb3IgcGx1Z2luXG4gKiBPcmlnaW5hbDogaHR0cHM6Ly9naXRodWIuY29tL2FudHlha3VzaGV2L3Bvc3Rjc3MtZm9yXG4gKi9cbmltcG9ydCBwb3N0Y3NzIGZyb20gJ3Bvc3Rjc3MnO1xuaW1wb3J0IHBvc3Rjc3NTaW1wbGVWYXJzIGZyb20gJ3Bvc3Rjc3Mtc2ltcGxlLXZhcnMnO1xuXG5pbnRlcmZhY2UgUG9zdGNzc0Zvck9wdGlvbnMge1xuICBuZXN0ZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBwb3N0Y3NzRm9yID0gKG9wdHM6IFBvc3Rjc3NGb3JPcHRpb25zID0ge30pID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBuZXN0ZWQ6IG9wdHMubmVzdGVkICE9PSBmYWxzZVxuICB9O1xuXG4gIGNvbnN0IGl0ZXJTdGFjazogc3RyaW5nW10gPSBbXTtcblxuICBjb25zdCBwYXJlbnRzSGF2ZUl0ZXJhdG9yID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlLCBwYXJhbTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgcGFyZW50ID0gcnVsZS5wYXJlbnQ7XG5cbiAgICBpZihwYXJlbnQgPT09IG51bGwgfHwgcGFyZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYocGFyZW50LnR5cGUgPT09ICdyb290Jykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZihwYXJlbnQudHlwZSAhPT0gJ2F0cnVsZScpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJlbnRJdGVyVmFyID0gcGFyZW50LnBhcmFtcy5zcGxpdCgvXFxzKy8pWzBdO1xuICAgIGlmKCFwYXJlbnRJdGVyVmFyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmKHBhcmVudEl0ZXJWYXIgPT09IHBhcmFtKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYoaXRlclN0YWNrLmluZGV4T2YocGFyYW0pICE9PSAtMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnRzSGF2ZUl0ZXJhdG9yKHBhcmVudCwgcGFyYW0pO1xuICB9O1xuXG4gIGNvbnN0IG1hbmFnZUl0ZXJTdGFjayA9IChydWxlOiBwb3N0Y3NzLkF0UnVsZSkgPT4ge1xuICAgIGlmKHJ1bGUucGFyZW50ICYmIHJ1bGUucGFyZW50LnR5cGUgIT09ICdyb290Jykge1xuICAgICAgY29uc3QgcGFyZW50SXRlclZhciA9IHJ1bGUucGFyZW50LnR5cGUgPT09ICdhdHJ1bGUnICYmIHJ1bGUucGFyZW50LnBhcmFtc1xuICAgICAgICA/IHJ1bGUucGFyZW50LnBhcmFtcy5zcGxpdCgvXFxzKy8pWzBdXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGlmKHBhcmVudEl0ZXJWYXIgJiYgaXRlclN0YWNrLmluZGV4T2YocGFyZW50SXRlclZhcikgPT09IC0xKSB7XG4gICAgICAgIGl0ZXJTdGFjay5zcGxpY2UoMCwgaXRlclN0YWNrLmxlbmd0aCk7XG4gICAgICB9IGVsc2UgaWYocGFyZW50SXRlclZhcikge1xuICAgICAgICBjb25zdCBwYXJlbnRJbmRleCA9IGl0ZXJTdGFjay5pbmRleE9mKHBhcmVudEl0ZXJWYXIpO1xuICAgICAgICBpZihwYXJlbnRJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICBpdGVyU3RhY2suc3BsaWNlKHBhcmVudEluZGV4ICsgMSwgaXRlclN0YWNrLmxlbmd0aCAtIHBhcmVudEluZGV4IC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaXRlclN0YWNrLnNwbGljZSgwLCBpdGVyU3RhY2subGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEl0ZXJWYXIgPSBydWxlLnBhcmFtcy5zcGxpdCgvXFxzKy8pWzBdO1xuICAgIGlmKGN1cnJlbnRJdGVyVmFyKSB7XG4gICAgICBpdGVyU3RhY2sucHVzaChjdXJyZW50SXRlclZhcik7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNoZWNrTnVtYmVyID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlKSA9PiAocGFyYW06IHN0cmluZykgPT4ge1xuICAgIGlmKGlzTmFOKE51bWJlcihwYXJhbSkpIHx8ICFwYXJhbS5tYXRjaCgvXi0/XFxkK1xcLj9cXGQqJC8pKSB7XG4gICAgICBpZihwYXJhbS5pbmRleE9mKCckJykgIT09IC0xKSB7XG4gICAgICAgIGlmKCFwYXJlbnRzSGF2ZUl0ZXJhdG9yKHJ1bGUsIHBhcmFtKSkge1xuICAgICAgICAgIHRocm93IHJ1bGUuZXJyb3IoJ0V4dGVybmFsIHZhcmlhYmxlIChub3QgZnJvbSBhIHBhcmVudCBmb3IgbG9vcCkgY2Fubm90IGJlIHVzZWQgYXMgYSByYW5nZSBwYXJhbWV0ZXInLCB7XG4gICAgICAgICAgICBwbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgcnVsZS5lcnJvcignUmFuZ2UgcGFyYW1ldGVyIHNob3VsZCBiZSBhIG51bWJlcicsIHtcbiAgICAgICAgICBwbHVnaW46ICdwb3N0Y3NzLWZvcidcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNoZWNrUGFyYW1zID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlLCBwYXJhbXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgaWYoXG4gICAgICAhcGFyYW1zWzBdPy5zdGFydHNXaXRoKCckJykgfHxcbiAgICAgIHBhcmFtc1sxXSAhPT0gJ2Zyb20nIHx8XG4gICAgICBwYXJhbXNbM10gIT09ICd0bycgfHxcbiAgICAgIChwYXJhbXNbNV0gJiYgcGFyYW1zWzVdICE9PSAnYnknKVxuICAgICkge1xuICAgICAgdGhyb3cgcnVsZS5lcnJvcignV3JvbmcgbG9vcCBzeW50YXgnLCB7XG4gICAgICAgIHBsdWdpbjogJ3Bvc3Rjc3MtZm9yJ1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgW3BhcmFtc1syXSwgcGFyYW1zWzRdLCBwYXJhbXNbNl0gfHwgJzAnXS5mb3JFYWNoKGNoZWNrTnVtYmVyKHJ1bGUpKTtcbiAgfTtcblxuICBjb25zdCB1bnJvbGxMb29wID0gKHJ1bGU6IHBvc3Rjc3MuQXRSdWxlKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gcnVsZS5wYXJhbXMuc3BsaXQoL1xccysvKTtcblxuICAgIGNoZWNrUGFyYW1zKHJ1bGUsIHBhcmFtcyk7XG5cbiAgICBjb25zdCBpdGVyYXRvciA9IHBhcmFtc1swXS5zbGljZSgxKTtcbiAgICBjb25zdCBpbmRleCA9ICtwYXJhbXNbMl07XG4gICAgY29uc3QgdG9wID0gK3BhcmFtc1s0XTtcbiAgICBjb25zdCBkaXIgPSB0b3AgPCBpbmRleCA/IC0xIDogMTtcbiAgICBjb25zdCBieSA9ICgrKHBhcmFtc1s2XSB8fCAxKSkgKiBkaXI7XG5cbiAgICBjb25zdCB2YWx1ZTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICAgIGZvcihsZXQgaSA9IGluZGV4OyBpICogZGlyIDw9IHRvcCAqIGRpcjsgaSA9IGkgKyBieSkge1xuICAgICAgY29uc3QgY29udGVudCA9IHJ1bGUuY2xvbmUoKTtcbiAgICAgIHZhbHVlW2l0ZXJhdG9yXSA9IGk7XG4gICAgICBjb25zdCBzaW1wbGVWYXJzUGx1Z2luID0gcG9zdGNzc1NpbXBsZVZhcnMoe29ubHk6IHZhbHVlfSk7XG4gICAgICBpZihzaW1wbGVWYXJzUGx1Z2luLnByZXBhcmUpIHtcbiAgICAgICAgY29uc3QgcHJlcGFyZWQgPSBzaW1wbGVWYXJzUGx1Z2luLnByZXBhcmUoe30gYXMgYW55KTtcbiAgICAgICAgaWYocHJlcGFyZWQuT25jZSkge1xuICAgICAgICAgIHByZXBhcmVkLk9uY2UoY29udGVudCwge30gYXMgYW55KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmKHR5cGVvZiBzaW1wbGVWYXJzUGx1Z2luID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHNpbXBsZVZhcnNQbHVnaW4oY29udGVudCk7XG4gICAgICB9XG4gICAgICBpZihvcHRpb25zLm5lc3RlZCkge1xuICAgICAgICBwcm9jZXNzTG9vcHMoY29udGVudCk7XG4gICAgICB9XG4gICAgICBpZihydWxlLnBhcmVudCkge1xuICAgICAgICBydWxlLnBhcmVudC5pbnNlcnRCZWZvcmUocnVsZSwgY29udGVudC5ub2Rlcyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmKHJ1bGUucGFyZW50KSB7XG4gICAgICBydWxlLnJlbW92ZSgpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBwcm9jZXNzTG9vcHMgPSAoY3NzOiBwb3N0Y3NzLkNvbnRhaW5lcjxwb3N0Y3NzLkNoaWxkTm9kZT4pID0+IHtcbiAgICBjc3Mud2Fsa0F0UnVsZXMoKHJ1bGUpID0+IHtcbiAgICAgIGlmKHJ1bGUubmFtZSA9PT0gJ2ZvcicpIHtcbiAgICAgICAgdW5yb2xsTG9vcChydWxlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBwcm9jZXNzT3JpZ2luYWxMb29wcyA9IChjc3M6IHBvc3Rjc3MuUm9vdCkgPT4ge1xuICAgIGNzcy53YWxrQXRSdWxlcygocnVsZSkgPT4ge1xuICAgICAgaWYocnVsZS5uYW1lID09PSAnZm9yJykge1xuICAgICAgICBpZihydWxlLnBhcmVudCkge1xuICAgICAgICAgIG1hbmFnZUl0ZXJTdGFjayhydWxlKTtcbiAgICAgICAgfVxuICAgICAgICB1bnJvbGxMb29wKHJ1bGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgT25jZShyb290OiBwb3N0Y3NzLlJvb3QpIHtcbiAgICAgIHByb2Nlc3NPcmlnaW5hbExvb3BzKHJvb3QpO1xuICAgIH0sXG4gICAgcG9zdGNzc1BsdWdpbjogJ3Bvc3Rjc3MtZm9yJ1xuICB9O1xufTtcblxucG9zdGNzc0Zvci5wb3N0Y3NzID0gdHJ1ZTtcblxuZXhwb3J0IGRlZmF1bHQgcG9zdGNzc0ZvcjtcbiJdLCJuYW1lcyI6WyJwb3N0Y3NzU2ltcGxlVmFycyIsInBvc3Rjc3NGb3IiLCJvcHRzIiwib3B0aW9ucyIsIm5lc3RlZCIsIml0ZXJTdGFjayIsInBhcmVudHNIYXZlSXRlcmF0b3IiLCJydWxlIiwicGFyYW0iLCJwYXJlbnQiLCJ1bmRlZmluZWQiLCJ0eXBlIiwicGFyZW50SXRlclZhciIsInBhcmFtcyIsInNwbGl0IiwiaW5kZXhPZiIsIm1hbmFnZUl0ZXJTdGFjayIsInNwbGljZSIsImxlbmd0aCIsInBhcmVudEluZGV4IiwiY3VycmVudEl0ZXJWYXIiLCJwdXNoIiwiY2hlY2tOdW1iZXIiLCJpc05hTiIsIk51bWJlciIsIm1hdGNoIiwiZXJyb3IiLCJwbHVnaW4iLCJjaGVja1BhcmFtcyIsInN0YXJ0c1dpdGgiLCJmb3JFYWNoIiwidW5yb2xsTG9vcCIsIml0ZXJhdG9yIiwic2xpY2UiLCJpbmRleCIsInRvcCIsImRpciIsImJ5IiwidmFsdWUiLCJpIiwiY29udGVudCIsImNsb25lIiwic2ltcGxlVmFyc1BsdWdpbiIsIm9ubHkiLCJwcmVwYXJlIiwicHJlcGFyZWQiLCJPbmNlIiwicHJvY2Vzc0xvb3BzIiwiaW5zZXJ0QmVmb3JlIiwibm9kZXMiLCJyZW1vdmUiLCJjc3MiLCJ3YWxrQXRSdWxlcyIsIm5hbWUiLCJwcm9jZXNzT3JpZ2luYWxMb29wcyIsInJvb3QiLCJwb3N0Y3NzUGx1Z2luIiwicG9zdGNzcyJdLCJtYXBwaW5n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
@@ -1,3 +1,4 @@
1
+ import postcss from 'postcss';
1
2
  interface PostcssPercentageOptions {
2
3
  floor?: boolean;
3
4
  precision?: number;
@@ -5,8 +6,8 @@ interface PostcssPercentageOptions {
5
6
  }
6
7
  declare const postcssPercentage: {
7
8
  (opts?: PostcssPercentageOptions): {
8
- Once(root: any, { result }: {
9
- result: any;
9
+ Once(root: postcss.Root, { result }: {
10
+ result: postcss.Result;
10
11
  }): void;
11
12
  postcssPlugin: string;
12
13
  };
@@ -53,7 +53,6 @@ const postcssPercentage = (opts = {})=>{
53
53
  } catch (e) {
54
54
  const error = e;
55
55
  decl.warn(result, error.message, {
56
- index: decl.index,
57
56
  word: decl.value
58
57
  });
59
58
  }
@@ -65,4 +64,4 @@ const postcssPercentage = (opts = {})=>{
65
64
  postcssPercentage.postcss = true;
66
65
  export default postcssPercentage;
67
66
 
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtcGVyY2VudGFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqXG4gKiBQb3N0Q1NTIDgtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHBvc3Rjc3MtcGVyY2VudGFnZSBwbHVnaW5cbiAqIE9yaWdpbmFsOiBodHRwczovL2dpdGh1Yi5jb20vYW50eWFrdXNoZXYvcG9zdGNzcy1wZXJjZW50YWdlXG4gKi9cbmltcG9ydCBNZXhwIGZyb20gJ21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3InO1xuaW1wb3J0IHBhcnNlciBmcm9tICdwb3N0Y3NzLXZhbHVlLXBhcnNlcic7XG5cbmludGVyZmFjZSBQb3N0Y3NzUGVyY2VudGFnZU9wdGlvbnMge1xuICBmbG9vcj86IGJvb2xlYW47XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgdHJpbVRyYWlsaW5nWmVybz86IGJvb2xlYW47XG59XG5cbmNvbnN0IHRyYW5zZm9ybVBlcmNlbnRhZ2UgPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIHByZWNpc2lvbjogbnVtYmVyLFxuICBmbG9vcjogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgdHJpbVRyYWlsaW5nWmVybzogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogc3RyaW5nID0+IHtcbiAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIE1leHAgZGVmYXVsdCBleHBvcnQgdHlwZSBpc3N1ZVxuICBjb25zdCBldmFsdWF0b3IgPSBuZXcgTWV4cCgpO1xuICByZXR1cm4gcGFyc2VyKHZhbHVlKS53YWxrKChub2RlKSA9PiB7XG4gICAgaWYobm9kZS50eXBlICE9PSAnZnVuY3Rpb24nIHx8IG5vZGUudmFsdWUgIT09ICdwZXJjZW50YWdlJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGV2YWx1YXRvci5ldmFsKHBhcnNlci5zdHJpbmdpZnkobm9kZS5ub2RlcykpICogMTAwO1xuICAgIGxldCByZXN1bHRTdHI6IHN0cmluZztcbiAgICBpZihyZXN1bHQgPT09IDApIHtcbiAgICAgIHJlc3VsdFN0ciA9ICcwJztcbiAgICB9IGVsc2UgaWYoZmxvb3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygpO1xuICAgICAgY29uc3QgaW5kZXggPSByZXN1bHRTdHJpbmcuaW5kZXhPZignLicpO1xuICAgICAgcmVzdWx0U3RyID0gaW5kZXggPT09IC0xXG4gICAgICAgID8gcmVzdWx0U3RyaW5nXG4gICAgICAgIDogcmVzdWx0U3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCArIDEgKyBwcmVjaXNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRTdHIgPSByZXN1bHQudG9GaXhlZChwcmVjaXNpb24pO1xuICAgIH1cbiAgICBpZih0cmltVHJhaWxpbmdaZXJvKSB7XG4gICAgICByZXN1bHRTdHIgPSByZXN1bHRTdHJcbiAgICAgICAgLnJlcGxhY2UoL1xcLjArJC8sICcnKVxuICAgICAgICAucmVwbGFjZSgvKFxcLlxcZCpbMS05XSkwKyQvLCAnJDEnKTtcbiAgICB9XG4gICAgcmVzdWx0U3RyICs9ICclJztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVzdHJpY3RlZC1wcm9wZXJ0aWVzXG4gICAgT2JqZWN0LmFzc2lnbihub2RlLCB7XG4gICAgICB0eXBlOiAnd29yZCcgYXMgY29uc3QsXG4gICAgICB2YWx1ZTogcmVzdWx0U3RyXG4gICAgfSk7XG4gIH0pLnRvU3RyaW5nKCk7XG59O1xuXG5jb25zdCBwb3N0Y3NzUGVyY2VudGFnZSA9IChvcHRzOiBQb3N0Y3NzUGVyY2VudGFnZU9wdGlvbnMgPSB7fSkgPT4ge1xuICBjb25zdCBvcHRpb25zID0ge1xuICAgIGZsb29yOiBvcHRzLmZsb29yLFxuICAgIHByZWNpc2lvbjogb3B0cy5wcmVjaXNpb24gPT09IG51bGwgfHwgb3B0cy5wcmVjaXNpb24gPT09IHVuZGVmaW5lZCB8fCBvcHRzLnByZWNpc2lvbiA+IDIwIHx8IG9wdHMucHJlY2lzaW9uIDwgMFxuICAgICAgPyA2XG4gICAgICA6IG9wdHMucHJlY2lzaW9uLFxuICAgIHRyaW1UcmFpbGluZ1plcm86IG9wdHMudHJpbVRyYWlsaW5nWmVybyA9PT0gbnVsbCB8fCBvcHRzLnRyaW1UcmFpbGluZ1plcm8gPT09IHVuZGVmaW5lZFxuICAgICAgPyB0cnVlXG4gICAgICA6IG9wdHMudHJpbVRyYWlsaW5nWmVyb1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uYW1pbmctY29udmVudGlvblxuICAgIE9uY2Uocm9vdCwge3Jlc3VsdH0pIHtcbiAgICAgIHJvb3Qud2Fsa0RlY2xzKChkZWNsKSA9PiB7XG4gICAgICAgIGlmKCFkZWNsLnZhbHVlIHx8ICEvcGVyY2VudGFnZVxccypcXCgvLnRlc3QoZGVjbC52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGRlY2wudmFsdWUgPSB0cmFuc2Zvcm1QZXJjZW50YWdlKFxuICAgICAgICAgICAgZGVjbC52YWx1ZSxcbiAgICAgICAgICAgIG9wdGlvbnMucHJlY2lzaW9uLFxuICAgICAgICAgICAgb3B0aW9ucy5mbG9vcixcbiAgICAgICAgICAgIG9wdGlvbnMudHJpbVRyYWlsaW5nWmVyb1xuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBFcnJvcjtcbiAgICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCBlcnJvci5tZXNzYWdlLCB7XG4gICAgICAgICAgICBpbmRleDogZGVjbC5pbmRleCxcbiAgICAgICAgICAgIHdvcmQ6IGRlY2wudmFsdWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSxcbiAgICBwb3N0Y3NzUGx1Z2luOiAncG9zdGNzcy1wZXJjZW50YWdlJ1xuICB9O1xufTtcblxucG9zdGNzc1BlcmNlbnRhZ2UucG9zdGNzcyA9IHRydWU7XG5cbmV4cG9ydCBkZWZhdWx0IHBvc3Rjc3NQZXJjZW50YWdlO1xuXG4iXSwibmFtZXMiOlsiTWV4cCIsInBhcnNlciIsInRyYW5zZm9ybVBlcmNlbnRhZ2UiLCJ2YWx1ZSIsInByZWNpc2lvbiIsImZsb29yIiwidHJpbVRyYWlsaW5nWmVybyIsImV2YWx1YXRvciIsIndhbGsiLCJub2RlIiwidHlwZSIsInJlc3VsdCIsImV2YWwiLCJzdHJpbmdpZnkiLCJub2RlcyIsInJlc3VsdFN0ciIsInJlc3VsdFN0cmluZyIsInRvU3RyaW5nIiwiaW5kZXgiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwidG9GaXhlZCIsInJlcGxhY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJwb3N0Y3NzUGVyY2VudGFnZSIsIm9wdHMiLCJvcHRpb25zIiwidW5kZWZpbmVkIiwiT25jZSIsInJvb3QiLCJ3YWxrRGVjbHMiLCJkZWNsIiwidGVzdCIsImUiLCJlcnJvciIsIndhcm4iLCJtZXNzYWdlIiwid29yZCIsInBvc3Rjc3NQbHVnaW4iLCJwb3N0Y3NzIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0NBTUMsR0FDRCxPQUFPQSxVQUFVLDRCQUE0QjtBQUM3QyxPQUFPQyxZQUFZLHVCQUF1QjtBQVExQyxNQUFNQyxzQkFBc0IsQ0FDMUJDLE9BQ0FDLFdBQ0FDLE9BQ0FDO0lBRUEsb0RBQW9EO0lBQ3BELE1BQU1DLFlBQVksSUFBSVA7SUFDdEIsT0FBT0MsT0FBT0UsT0FBT0ssSUFBSSxDQUFDLENBQUNDO1FBQ3pCLElBQUdBLEtBQUtDLElBQUksS0FBSyxjQUFjRCxLQUFLTixLQUFLLEtBQUssY0FBYztZQUMxRDtRQUNGO1FBRUEsTUFBTVEsU0FBU0osVUFBVUssSUFBSSxDQUFDWCxPQUFPWSxTQUFTLENBQUNKLEtBQUtLLEtBQUssS0FBSztRQUM5RCxJQUFJQztRQUNKLElBQUdKLFdBQVcsR0FBRztZQUNmSSxZQUFZO1FBQ2QsT0FBTyxJQUFHVixPQUFPO1lBQ2YsTUFBTVcsZUFBZUwsT0FBT00sUUFBUTtZQUNwQyxNQUFNQyxRQUFRRixhQUFhRyxPQUFPLENBQUM7WUFDbkNKLFlBQVlHLFVBQVUsQ0FBQyxJQUNuQkYsZUFDQUEsYUFBYUksU0FBUyxDQUFDLEdBQUdGLFFBQVEsSUFBSWQ7UUFDNUMsT0FBTztZQUNMVyxZQUFZSixPQUFPVSxPQUFPLENBQUNqQjtRQUM3QjtRQUNBLElBQUdFLGtCQUFrQjtZQUNuQlMsWUFBWUEsVUFDVE8sT0FBTyxDQUFDLFNBQVMsSUFDakJBLE9BQU8sQ0FBQyxtQkFBbUI7UUFDaEM7UUFDQVAsYUFBYTtRQUNiLG9EQUFvRDtRQUNwRFEsT0FBT0MsTUFBTSxDQUFDZixNQUFNO1lBQ2xCQyxNQUFNO1lBQ05QLE9BQU9ZO1FBQ1Q7SUFDRixHQUFHRSxRQUFRO0FBQ2I7QUFFQSxNQUFNUSxvQkFBb0IsQ0FBQ0MsT0FBaUMsQ0FBQyxDQUFDO0lBQzVELE1BQU1DLFVBQVU7UUFDZHRCLE9BQU9xQixLQUFLckIsS0FBSztRQUNqQkQsV0FBV3NCLEtBQUt0QixTQUFTLEtBQUssUUFBUXNCLEtBQUt0QixTQUFTLEtBQUt3QixhQUFhRixLQUFLdEIsU0FBUyxHQUFHLE1BQU1zQixLQUFLdEIsU0FBUyxHQUFHLElBQzFHLElBQ0FzQixLQUFLdEIsU0FBUztRQUNsQkUsa0JBQWtCb0IsS0FBS3BCLGdCQUFnQixLQUFLLFFBQVFvQixLQUFLcEIsZ0JBQWdCLEtBQUtzQixZQUMxRSxPQUNBRixLQUFLcEIsZ0JBQWdCO0lBQzNCO0lBRUEsT0FBTztRQUNMLGdFQUFnRTtRQUNoRXVCLE1BQUtDLElBQUksRUFBRSxFQUFDbkIsTUFBTSxFQUFDO1lBQ2pCbUIsS0FBS0MsU0FBUyxDQUFDLENBQUNDO2dCQUNkLElBQUcsQ0FBQ0EsS0FBSzdCLEtBQUssSUFBSSxDQUFDLGtCQUFrQjhCLElBQUksQ0FBQ0QsS0FBSzdCLEtBQUssR0FBRztvQkFDckQ7Z0JBQ0Y7Z0JBRUEsSUFBSTtvQkFDRjZCLEtBQUs3QixLQUFLLEdBQUdELG9CQUNYOEIsS0FBSzdCLEtBQUssRUFDVndCLFFBQVF2QixTQUFTLEVBQ2pCdUIsUUFBUXRCLEtBQUssRUFDYnNCLFFBQVFyQixnQkFBZ0I7Z0JBRTVCLEVBQUUsT0FBTTRCLEdBQUc7b0JBQ1QsTUFBTUMsUUFBUUQ7b0JBQ2RGLEtBQUtJLElBQUksQ0FBQ3pCLFFBQVF3QixNQUFNRSxPQUFPLEVBQUU7d0JBQy9CbkIsT0FBT2MsS0FBS2QsS0FBSzt3QkFDakJvQixNQUFNTixLQUFLN0IsS0FBSztvQkFDbEI7Z0JBQ0Y7WUFDRjtRQUNGO1FBQ0FvQyxlQUFlO0lBQ2pCO0FBQ0Y7QUFFQWQsa0JBQWtCZSxPQUFPLEdBQUc7QUFFNUIsZUFBZWYsa0JBQWtCIn0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy9wb3N0Y3NzL3Bvc3Rjc3MtcGVyY2VudGFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAyNS1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqXG4gKiBQb3N0Q1NTIDgtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHBvc3Rjc3MtcGVyY2VudGFnZSBwbHVnaW5cbiAqIE9yaWdpbmFsOiBodHRwczovL2dpdGh1Yi5jb20vYW50eWFrdXNoZXYvcG9zdGNzcy1wZXJjZW50YWdlXG4gKi9cbmltcG9ydCBNZXhwIGZyb20gJ21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3InO1xuaW1wb3J0IHBvc3Rjc3MgZnJvbSAncG9zdGNzcyc7XG5pbXBvcnQgcGFyc2VyIGZyb20gJ3Bvc3Rjc3MtdmFsdWUtcGFyc2VyJztcblxuaW50ZXJmYWNlIFBvc3Rjc3NQZXJjZW50YWdlT3B0aW9ucyB7XG4gIGZsb29yPzogYm9vbGVhbjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICB0cmltVHJhaWxpbmdaZXJvPzogYm9vbGVhbjtcbn1cblxuY29uc3QgdHJhbnNmb3JtUGVyY2VudGFnZSA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgcHJlY2lzaW9uOiBudW1iZXIsXG4gIGZsb29yOiBib29sZWFuIHwgdW5kZWZpbmVkLFxuICB0cmltVHJhaWxpbmdaZXJvOiBib29sZWFuIHwgdW5kZWZpbmVkXG4pOiBzdHJpbmcgPT4ge1xuICAvLyBAdHMtZXhwZWN0LWVycm9yIC0gTWV4cCBkZWZhdWx0IGV4cG9ydCB0eXBlIGlzc3VlXG4gIGNvbnN0IGV2YWx1YXRvciA9IG5ldyBNZXhwKCk7XG4gIHJldHVybiBwYXJzZXIodmFsdWUpLndhbGsoKG5vZGUpID0+IHtcbiAgICBpZihub2RlLnR5cGUgIT09ICdmdW5jdGlvbicgfHwgbm9kZS52YWx1ZSAhPT0gJ3BlcmNlbnRhZ2UnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gZXZhbHVhdG9yLmV2YWwocGFyc2VyLnN0cmluZ2lmeShub2RlLm5vZGVzKSkgKiAxMDA7XG4gICAgbGV0IHJlc3VsdFN0cjogc3RyaW5nO1xuICAgIGlmKHJlc3VsdCA9PT0gMCkge1xuICAgICAgcmVzdWx0U3RyID0gJzAnO1xuICAgIH0gZWxzZSBpZihmbG9vcikge1xuICAgICAgY29uc3QgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKCk7XG4gICAgICBjb25zdCBpbmRleCA9IHJlc3VsdFN0cmluZy5pbmRleE9mKCcuJyk7XG4gICAgICByZXN1bHRTdHIgPSBpbmRleCA9PT0gLTFcbiAgICAgICAgPyByZXN1bHRTdHJpbmdcbiAgICAgICAgOiByZXN1bHRTdHJpbmcuc3Vic3RyaW5nKDAsIGluZGV4ICsgMSArIHByZWNpc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdFN0ciA9IHJlc3VsdC50b0ZpeGVkKHByZWNpc2lvbik7XG4gICAgfVxuICAgIGlmKHRyaW1UcmFpbGluZ1plcm8pIHtcbiAgICAgIHJlc3VsdFN0ciA9IHJlc3VsdFN0clxuICAgICAgICAucmVwbGFjZSgvXFwuMCskLywgJycpXG4gICAgICAgIC5yZXBsYWNlKC8oXFwuXFxkKlsxLTldKTArJC8sICckMScpO1xuICAgIH1cbiAgICByZXN1bHRTdHIgKz0gJyUnO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLXByb3BlcnRpZXNcbiAgICBPYmplY3QuYXNzaWduKG5vZGUsIHtcbiAgICAgIHR5cGU6ICd3b3JkJyBhcyBjb25zdCxcbiAgICAgIHZhbHVlOiByZXN1bHRTdHJcbiAgICB9KTtcbiAgfSkudG9TdHJpbmcoKTtcbn07XG5cbmNvbnN0IHBvc3Rjc3NQZXJjZW50YWdlID0gKG9wdHM6IFBvc3Rjc3NQZXJjZW50YWdlT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgZmxvb3I6IG9wdHMuZmxvb3IsXG4gICAgcHJlY2lzaW9uOiBvcHRzLnByZWNpc2lvbiA9PT0gbnVsbCB8fCBvcHRzLnByZWNpc2lvbiA9PT0gdW5kZWZpbmVkIHx8IG9wdHMucHJlY2lzaW9uID4gMjAgfHwgb3B0cy5wcmVjaXNpb24gPCAwXG4gICAgICA/IDZcbiAgICAgIDogb3B0cy5wcmVjaXNpb24sXG4gICAgdHJpbVRyYWlsaW5nWmVybzogb3B0cy50cmltVHJhaWxpbmdaZXJvID09PSBudWxsIHx8IG9wdHMudHJpbVRyYWlsaW5nWmVybyA9PT0gdW5kZWZpbmVkXG4gICAgICA/IHRydWVcbiAgICAgIDogb3B0cy50cmltVHJhaWxpbmdaZXJvXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25hbWluZy1jb252ZW50aW9uXG4gICAgT25jZShyb290OiBwb3N0Y3NzLlJvb3QsIHtyZXN1bHR9OiB7cmVzdWx0OiBwb3N0Y3NzLlJlc3VsdH0pIHtcbiAgICAgIHJvb3Qud2Fsa0RlY2xzKChkZWNsOiBwb3N0Y3NzLkRlY2xhcmF0aW9uKSA9PiB7XG4gICAgICAgIGlmKCFkZWNsLnZhbHVlIHx8ICEvcGVyY2VudGFnZVxccypcXCgvLnRlc3QoZGVjbC52YWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIGRlY2wudmFsdWUgPSB0cmFuc2Zvcm1QZXJjZW50YWdlKFxuICAgICAgICAgICAgZGVjbC52YWx1ZSxcbiAgICAgICAgICAgIG9wdGlvbnMucHJlY2lzaW9uLFxuICAgICAgICAgICAgb3B0aW9ucy5mbG9vcixcbiAgICAgICAgICAgIG9wdGlvbnMudHJpbVRyYWlsaW5nWmVyb1xuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2goZSkge1xuICAgICAgICAgIGNvbnN0IGVycm9yID0gZSBhcyBFcnJvcjtcbiAgICAgICAgICBkZWNsLndhcm4ocmVzdWx0LCBlcnJvci5tZXNzYWdlLCB7XG4gICAgICAgICAgICB3b3JkOiBkZWNsLnZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0sXG4gICAgcG9zdGNzc1BsdWdpbjogJ3Bvc3Rjc3MtcGVyY2VudGFnZSdcbiAgfTtcbn07XG5cbnBvc3Rjc3NQZXJjZW50YWdlLnBvc3Rjc3MgPSB0cnVlO1xuXG5leHBvcnQgZGVmYXVsdCBwb3N0Y3NzUGVyY2VudGFnZTtcbiJdLCJuYW1lcyI6WyJNZXhwIiwicGFyc2VyIiwidHJhbnNmb3JtUGVyY2VudGFnZSIsInZhbHVlIiwicHJlY2lzaW9uIiwiZmxvb3IiLCJ0cmltVHJhaWxpbmdaZXJvIiwiZXZhbHVhdG9yIiwid2FsayIsIm5vZGUiLCJ0eXBlIiwicmVzdWx0IiwiZXZhbCIsInN0cmluZ2lmeSIsIm5vZGVzIiwicmVzdWx0U3RyIiwicmVzdWx0U3RyaW5nIiwidG9TdHJpbmciLCJpbmRleCIsImluZGV4T2YiLCJzdWJzdHJpbmciLCJ0b0ZpeGVkIiwicmVwbGFjZSIsIk9iamVjdCIsImFzc2lnbiIsInBvc3Rjc3NQZXJjZW50YWdlIiwib3B0cyIsIm9wdGlvbnMiLCJ1bmRlZmluZWQiLCJPbmNlIiwicm9vdCIsIndhbGtEZWNscyIsImRlY2wiLCJ0ZXN0IiwiZSIsImVycm9yIiwid2FybiIsIm1lc3NhZ2UiLCJ3b3JkIiwicG9zdGNzc1BsdWdpbiIsInBvc3Rjc3MiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Q0FNQyxHQUNELE9BQU9BLFVBQVUsNEJBQTRCO0FBRTdDLE9BQU9DLFlBQVksdUJBQXVCO0FBUTFDLE1BQU1DLHNCQUFzQixDQUMxQkMsT0FDQUMsV0FDQUMsT0FDQUM7SUFFQSxvREFBb0Q7SUFDcEQsTUFBTUMsWUFBWSxJQUFJUDtJQUN0QixPQUFPQyxPQUFPRSxPQUFPSyxJQUFJLENBQUMsQ0FBQ0M7UUFDekIsSUFBR0EsS0FBS0MsSUFBSSxLQUFLLGNBQWNELEtBQUtOLEtBQUssS0FBSyxjQUFjO1lBQzFEO1FBQ0Y7UUFFQSxNQUFNUSxTQUFTSixVQUFVSyxJQUFJLENBQUNYLE9BQU9ZLFNBQVMsQ0FBQ0osS0FBS0ssS0FBSyxLQUFLO1FBQzlELElBQUlDO1FBQ0osSUFBR0osV0FBVyxHQUFHO1lBQ2ZJLFlBQVk7UUFDZCxPQUFPLElBQUdWLE9BQU87WUFDZixNQUFNVyxlQUFlTCxPQUFPTSxRQUFRO1lBQ3BDLE1BQU1DLFFBQVFGLGFBQWFHLE9BQU8sQ0FBQztZQUNuQ0osWUFBWUcsVUFBVSxDQUFDLElBQ25CRixlQUNBQSxhQUFhSSxTQUFTLENBQUMsR0FBR0YsUUFBUSxJQUFJZDtRQUM1QyxPQUFPO1lBQ0xXLFlBQVlKLE9BQU9VLE9BQU8sQ0FBQ2pCO1FBQzdCO1FBQ0EsSUFBR0Usa0JBQWtCO1lBQ25CUyxZQUFZQSxVQUNUTyxPQUFPLENBQUMsU0FBUyxJQUNqQkEsT0FBTyxDQUFDLG1CQUFtQjtRQUNoQztRQUNBUCxhQUFhO1FBQ2Isb0RBQW9EO1FBQ3BEUSxPQUFPQyxNQUFNLENBQUNmLE1BQU07WUFDbEJDLE1BQU07WUFDTlAsT0FBT1k7UUFDVDtJQUNGLEdBQUdFLFFBQVE7QUFDYjtBQUVBLE1BQU1RLG9CQUFvQixDQUFDQyxPQUFpQyxDQUFDLENBQUM7SUFDNUQsTUFBTUMsVUFBVTtRQUNkdEIsT0FBT3FCLEtBQUtyQixLQUFLO1FBQ2pCRCxXQUFXc0IsS0FBS3RCLFNBQVMsS0FBSyxRQUFRc0IsS0FBS3RCLFNBQVMsS0FBS3dCLGFBQWFGLEtBQUt0QixTQUFTLEdBQUcsTUFBTXNCLEtBQUt0QixTQUFTLEdBQUcsSUFDMUcsSUFDQXNCLEtBQUt0QixTQUFTO1FBQ2xCRSxrQkFBa0JvQixLQUFLcEIsZ0JBQWdCLEtBQUssUUFBUW9CLEtBQUtwQixnQkFBZ0IsS0FBS3NCLFlBQzFFLE9BQ0FGLEtBQUtwQixnQkFBZ0I7SUFDM0I7SUFFQSxPQUFPO1FBQ0wsZ0VBQWdFO1FBQ2hFdUIsTUFBS0MsSUFBa0IsRUFBRSxFQUFDbkIsTUFBTSxFQUEyQjtZQUN6RG1CLEtBQUtDLFNBQVMsQ0FBQyxDQUFDQztnQkFDZCxJQUFHLENBQUNBLEtBQUs3QixLQUFLLElBQUksQ0FBQyxrQkFBa0I4QixJQUFJLENBQUNELEtBQUs3QixLQUFLLEdBQUc7b0JBQ3JEO2dCQUNGO2dCQUVBLElBQUk7b0JBQ0Y2QixLQUFLN0IsS0FBSyxHQUFHRCxvQkFDWDhCLEtBQUs3QixLQUFLLEVBQ1Z3QixRQUFRdkIsU0FBUyxFQUNqQnVCLFFBQVF0QixLQUFLLEVBQ2JzQixRQUFRckIsZ0JBQWdCO2dCQUU1QixFQUFFLE9BQU00QixHQUFHO29CQUNULE1BQU1DLFFBQVFEO29CQUNkRixLQUFLSSxJQUFJLENBQUN6QixRQUFRd0IsTUFBTUUsT0FBTyxFQUFFO3dCQUMvQkMsTUFBTU4sS0FBSzdCLEtBQUs7b0JBQ2xCO2dCQUNGO1lBQ0Y7UUFDRjtRQUNBb0MsZUFBZTtJQUNqQjtBQUNGO0FBRUFkLGtCQUFrQmUsT0FBTyxHQUFHO0FBRTVCLGVBQWVmLGtCQUFrQiJ9
@@ -0,0 +1,20 @@
1
+ import webpack from 'webpack';
2
+ type IdentifierPrefix = false | string | ((filePath: string) => string);
3
+ export interface LexSvgSpritemapPluginOptions {
4
+ readonly allowDuplicates?: boolean;
5
+ readonly filename?: string;
6
+ readonly optimize?: boolean;
7
+ readonly prefix?: IdentifierPrefix;
8
+ }
9
+ export declare class LexSvgSpritemapPlugin {
10
+ readonly patterns: string[];
11
+ readonly options: Required<LexSvgSpritemapPluginOptions>;
12
+ constructor(patterns: string | string[], options?: LexSvgSpritemapPluginOptions);
13
+ buildSpritemap(): {
14
+ content: string | null;
15
+ filePaths: string[];
16
+ warnings: webpack.WebpackError[];
17
+ };
18
+ apply(compiler: webpack.Compiler): void;
19
+ }
20
+ export default LexSvgSpritemapPlugin;
@@ -0,0 +1,257 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ /**
15
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
16
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
17
+ */ import { readFileSync } from 'fs';
18
+ import { sync as globSync } from 'glob';
19
+ import { basename as pathBasename, dirname as pathDirname, extname as pathExtname, resolve as pathResolve } from 'path';
20
+ import { optimize } from 'svgo';
21
+ import webpack from 'webpack';
22
+ const DEFAULT_FILENAME = 'icons/icons.svg';
23
+ const PLUGIN_NAME = 'LexSvgSpritemapPlugin';
24
+ const ROOT_EXCLUDED_ATTRIBUTES = new Set([
25
+ 'height',
26
+ 'id',
27
+ 'version',
28
+ 'viewBox',
29
+ 'width',
30
+ 'xmlns'
31
+ ]);
32
+ const escapeAttribute = (value)=>{
33
+ return value.replaceAll('&', '&amp;').replaceAll('"', '&quot;').replaceAll('<', '&lt;').replaceAll('>', '&gt;');
34
+ };
35
+ const normalizeAssetFilename = (filename)=>{
36
+ return filename.replace(/^[./]+/, '');
37
+ };
38
+ const parseAttributes = (input)=>{
39
+ const attributes = {};
40
+ const attributeRegex = /([:@\w-]+)\s*=\s*("([^"]*)"|'([^']*)')/g;
41
+ let match = attributeRegex.exec(input);
42
+ while(match){
43
+ attributes[match[1]] = match[3] ?? match[4] ?? '';
44
+ match = attributeRegex.exec(input);
45
+ }
46
+ return attributes;
47
+ };
48
+ const parseSvg = (source)=>{
49
+ const svgMatch = source.replace(/<\?xml[\s\S]*?\?>/ig, '').replace(/<!doctype[\s\S]*?>/ig, '').match(/<svg\b([^>]*)>([\s\S]*?)<\/svg>/i);
50
+ if (!svgMatch) {
51
+ return null;
52
+ }
53
+ return {
54
+ attributes: parseAttributes(svgMatch[1] || ''),
55
+ content: svgMatch[2]?.trim() || ''
56
+ };
57
+ };
58
+ const buildAttributeString = (attributes)=>{
59
+ return Object.entries(attributes).map(([name, value])=>`${name}="${escapeAttribute(value)}"`).join(' ');
60
+ };
61
+ const sanitizeIdentifier = (value)=>{
62
+ const sanitizedValue = value.trim().replaceAll(/\s+/g, '-').replaceAll(/[^A-Za-z0-9_-]/g, '-').replaceAll(/-{2,}/g, '-').replaceAll(/^[-_]+|[-_]+$/g, '');
63
+ const safeValue = sanitizedValue || 'icon';
64
+ return /^[A-Za-z_]/.test(safeValue) ? safeValue : `icon-${safeValue}`;
65
+ };
66
+ const getPrefix = (filePath, prefix)=>{
67
+ if (prefix === false) {
68
+ return '';
69
+ }
70
+ if (typeof prefix === 'function') {
71
+ return prefix(filePath);
72
+ }
73
+ return prefix || '';
74
+ };
75
+ const optimizeSvg = (content, enabled)=>{
76
+ if (!enabled) {
77
+ return content;
78
+ }
79
+ return optimize(content, {
80
+ multipass: true,
81
+ plugins: [
82
+ {
83
+ name: 'preset-default',
84
+ params: {
85
+ overrides: {
86
+ cleanupIds: false
87
+ }
88
+ }
89
+ }
90
+ ]
91
+ }).data;
92
+ };
93
+ const createSpriteSymbol = (filePath, usedIdentifiers, prefix, warnings)=>{
94
+ const source = readFileSync(filePath, 'utf8');
95
+ const parsedSvg = parseSvg(source);
96
+ if (!parsedSvg) {
97
+ warnings.push(new webpack.WebpackError(`Invalid SVG icon: ${filePath}`));
98
+ return null;
99
+ }
100
+ if (!parsedSvg.content) {
101
+ warnings.push(new webpack.WebpackError(`SVG icon is empty: ${filePath}`));
102
+ return null;
103
+ }
104
+ const rawIdentifier = `${getPrefix(filePath, prefix)}${pathBasename(filePath, pathExtname(filePath))}`;
105
+ const baseIdentifier = sanitizeIdentifier(rawIdentifier);
106
+ let identifier = baseIdentifier;
107
+ let duplicateIndex = 1;
108
+ while(usedIdentifiers.has(identifier)){
109
+ duplicateIndex += 1;
110
+ identifier = `${baseIdentifier}-${duplicateIndex}`;
111
+ }
112
+ if (identifier !== baseIdentifier) {
113
+ warnings.push(new webpack.WebpackError(`Duplicate SVG icon id "${baseIdentifier}" detected, using "${identifier}" for ${filePath}`));
114
+ }
115
+ usedIdentifiers.add(identifier);
116
+ const namespaceAttributes = Object.entries(parsedSvg.attributes).reduce((result, [name, value])=>{
117
+ if (name.toLowerCase().startsWith('xmlns:')) {
118
+ result[name] = value;
119
+ }
120
+ return result;
121
+ }, {});
122
+ const symbolAttributes = Object.entries(parsedSvg.attributes).reduce((result, [name, value])=>{
123
+ if (ROOT_EXCLUDED_ATTRIBUTES.has(name)) {
124
+ return result;
125
+ }
126
+ if (name.toLowerCase().startsWith('xmlns:')) {
127
+ return result;
128
+ }
129
+ result[name] = value;
130
+ return result;
131
+ }, {
132
+ id: identifier
133
+ });
134
+ if (parsedSvg.attributes.viewBox) {
135
+ symbolAttributes.viewBox = parsedSvg.attributes.viewBox;
136
+ } else {
137
+ const width = Number.parseFloat(parsedSvg.attributes.width || '');
138
+ const height = Number.parseFloat(parsedSvg.attributes.height || '');
139
+ if (Number.isFinite(width) && Number.isFinite(height)) {
140
+ symbolAttributes.viewBox = `0 0 ${width} ${height}`;
141
+ } else {
142
+ warnings.push(new webpack.WebpackError(`SVG icon is missing a viewBox and readable width/height: ${filePath}`));
143
+ return null;
144
+ }
145
+ }
146
+ return {
147
+ filePath,
148
+ namespaceAttributes,
149
+ symbol: `<symbol ${buildAttributeString(symbolAttributes)}>${parsedSvg.content}</symbol>`
150
+ };
151
+ };
152
+ const collectFiles = (patterns, allowDuplicates)=>{
153
+ const files = patterns.flatMap((pattern)=>{
154
+ return globSync(pattern, {
155
+ absolute: true,
156
+ dot: false,
157
+ nodir: true
158
+ });
159
+ }).map((filePath)=>pathResolve(filePath));
160
+ if (allowDuplicates) {
161
+ return files;
162
+ }
163
+ return [
164
+ ...new Set(files)
165
+ ];
166
+ };
167
+ export class LexSvgSpritemapPlugin {
168
+ buildSpritemap() {
169
+ const warnings = [];
170
+ const filePaths = collectFiles(this.patterns, this.options.allowDuplicates);
171
+ if (filePaths.length === 0) {
172
+ return {
173
+ content: null,
174
+ filePaths,
175
+ warnings
176
+ };
177
+ }
178
+ const namespaceAttributes = {};
179
+ const usedIdentifiers = new Set();
180
+ const symbols = filePaths.map((filePath)=>{
181
+ return createSpriteSymbol(filePath, usedIdentifiers, this.options.prefix, warnings);
182
+ }).filter((entry)=>entry !== null);
183
+ if (symbols.length === 0) {
184
+ return {
185
+ content: null,
186
+ filePaths,
187
+ warnings
188
+ };
189
+ }
190
+ for (const symbol of symbols){
191
+ for (const [name, value] of Object.entries(symbol.namespaceAttributes)){
192
+ namespaceAttributes[name] = value;
193
+ }
194
+ }
195
+ const rootAttributes = buildAttributeString({
196
+ xmlns: 'http://www.w3.org/2000/svg',
197
+ ...namespaceAttributes
198
+ });
199
+ const spriteContent = `<svg ${rootAttributes}>${symbols.map((symbol)=>symbol.symbol).join('')}</svg>`;
200
+ return {
201
+ content: optimizeSvg(spriteContent, this.options.optimize),
202
+ filePaths,
203
+ warnings
204
+ };
205
+ }
206
+ apply(compiler) {
207
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation)=>{
208
+ const directories = new Set();
209
+ const spritemap = this.buildSpritemap();
210
+ for (const filePath of spritemap.filePaths){
211
+ compilation.fileDependencies.add(filePath);
212
+ directories.add(pathDirname(filePath));
213
+ }
214
+ for (const pattern of this.patterns){
215
+ const baseDirectory = pathResolve(pattern.replace(/\*.*$/, ''));
216
+ directories.add(baseDirectory);
217
+ }
218
+ for (const directory of directories){
219
+ compilation.contextDependencies.add(directory);
220
+ }
221
+ if (spritemap.warnings.length > 0) {
222
+ compilation.warnings.push(...spritemap.warnings);
223
+ }
224
+ compilation.hooks.processAssets.tap({
225
+ name: PLUGIN_NAME,
226
+ stage: webpack.Compilation.PROCESS_ASSETS_STAGE_ADDITIONAL
227
+ }, ()=>{
228
+ if (!spritemap.content) {
229
+ return;
230
+ }
231
+ const assetName = this.options.filename;
232
+ const source = new webpack.sources.RawSource(spritemap.content);
233
+ if (compilation.getAsset(assetName)) {
234
+ compilation.updateAsset(assetName, source);
235
+ return;
236
+ }
237
+ compilation.emitAsset(assetName, source);
238
+ });
239
+ });
240
+ }
241
+ constructor(patterns, options = {}){
242
+ _define_property(this, "patterns", void 0);
243
+ _define_property(this, "options", void 0);
244
+ this.patterns = Array.isArray(patterns) ? patterns : [
245
+ patterns
246
+ ];
247
+ this.options = {
248
+ allowDuplicates: options.allowDuplicates ?? false,
249
+ filename: normalizeAssetFilename(options.filename || DEFAULT_FILENAME),
250
+ optimize: options.optimize ?? true,
251
+ prefix: options.prefix ?? false
252
+ };
253
+ }
254
+ }
255
+ export default LexSvgSpritemapPlugin;
256
+
257
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy93ZWJwYWNrL0xleFN2Z1Nwcml0ZW1hcFBsdWdpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtyZWFkRmlsZVN5bmN9IGZyb20gJ2ZzJztcbmltcG9ydCB7c3luYyBhcyBnbG9iU3luY30gZnJvbSAnZ2xvYic7XG5pbXBvcnQge2Jhc2VuYW1lIGFzIHBhdGhCYXNlbmFtZSwgZGlybmFtZSBhcyBwYXRoRGlybmFtZSwgZXh0bmFtZSBhcyBwYXRoRXh0bmFtZSwgcmVzb2x2ZSBhcyBwYXRoUmVzb2x2ZX0gZnJvbSAncGF0aCc7XG5pbXBvcnQge29wdGltaXplfSBmcm9tICdzdmdvJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuXG50eXBlIElkZW50aWZpZXJQcmVmaXggPSBmYWxzZSB8IHN0cmluZyB8ICgoZmlsZVBhdGg6IHN0cmluZykgPT4gc3RyaW5nKTtcblxuZXhwb3J0IGludGVyZmFjZSBMZXhTdmdTcHJpdGVtYXBQbHVnaW5PcHRpb25zIHtcbiAgcmVhZG9ubHkgYWxsb3dEdXBsaWNhdGVzPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgZmlsZW5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9wdGltaXplPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgcHJlZml4PzogSWRlbnRpZmllclByZWZpeDtcbn1cblxuaW50ZXJmYWNlIFBhcnNlZFN2ZyB7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNwcml0ZVN5bWJvbCB7XG4gIHJlYWRvbmx5IGZpbGVQYXRoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVzcGFjZUF0dHJpYnV0ZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHJlYWRvbmx5IHN5bWJvbDogc3RyaW5nO1xufVxuXG5jb25zdCBERUZBVUxUX0ZJTEVOQU1FID0gJ2ljb25zL2ljb25zLnN2Zyc7XG5jb25zdCBQTFVHSU5fTkFNRSA9ICdMZXhTdmdTcHJpdGVtYXBQbHVnaW4nO1xuY29uc3QgUk9PVF9FWENMVURFRF9BVFRSSUJVVEVTID0gbmV3IFNldChbXG4gICdoZWlnaHQnLFxuICAnaWQnLFxuICAndmVyc2lvbicsXG4gICd2aWV3Qm94JyxcbiAgJ3dpZHRoJyxcbiAgJ3htbG5zJ1xuXSk7XG5cbmNvbnN0IGVzY2FwZUF0dHJpYnV0ZSA9ICh2YWx1ZTogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIHZhbHVlXG4gICAgLnJlcGxhY2VBbGwoJyYnLCAnJmFtcDsnKVxuICAgIC5yZXBsYWNlQWxsKCdcIicsICcmcXVvdDsnKVxuICAgIC5yZXBsYWNlQWxsKCc8JywgJyZsdDsnKVxuICAgIC5yZXBsYWNlQWxsKCc+JywgJyZndDsnKTtcbn07XG5cbmNvbnN0IG5vcm1hbGl6ZUFzc2V0RmlsZW5hbWUgPSAoZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBmaWxlbmFtZS5yZXBsYWNlKC9eWy4vXSsvLCAnJyk7XG59O1xuXG5jb25zdCBwYXJzZUF0dHJpYnV0ZXMgPSAoaW5wdXQ6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPT4ge1xuICBjb25zdCBhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0IGF0dHJpYnV0ZVJlZ2V4ID0gLyhbOkBcXHctXSspXFxzKj1cXHMqKFwiKFteXCJdKilcInwnKFteJ10qKScpL2c7XG5cbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gYXR0cmlidXRlUmVnZXguZXhlYyhpbnB1dCk7XG4gIHdoaWxlKG1hdGNoKSB7XG4gICAgYXR0cmlidXRlc1ttYXRjaFsxXV0gPSBtYXRjaFszXSA/PyBtYXRjaFs0XSA/PyAnJztcbiAgICBtYXRjaCA9IGF0dHJpYnV0ZVJlZ2V4LmV4ZWMoaW5wdXQpO1xuICB9XG5cbiAgcmV0dXJuIGF0dHJpYnV0ZXM7XG59O1xuXG5jb25zdCBwYXJzZVN2ZyA9IChzb3VyY2U6IHN0cmluZyk6IFBhcnNlZFN2ZyB8IG51bGwgPT4ge1xuICBjb25zdCBzdmdNYXRjaCA9IHNvdXJjZVxuICAgIC5yZXBsYWNlKC88XFw/eG1sW1xcc1xcU10qP1xcPz4vaWcsICcnKVxuICAgIC5yZXBsYWNlKC88IWRvY3R5cGVbXFxzXFxTXSo/Pi9pZywgJycpXG4gICAgLm1hdGNoKC88c3ZnXFxiKFtePl0qKT4oW1xcc1xcU10qPyk8XFwvc3ZnPi9pKTtcblxuICBpZighc3ZnTWF0Y2gpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYXR0cmlidXRlczogcGFyc2VBdHRyaWJ1dGVzKHN2Z01hdGNoWzFdIHx8ICcnKSxcbiAgICBjb250ZW50OiBzdmdNYXRjaFsyXT8udHJpbSgpIHx8ICcnXG4gIH07XG59O1xuXG5jb25zdCBidWlsZEF0dHJpYnV0ZVN0cmluZyA9IChhdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGF0dHJpYnV0ZXMpXG4gICAgLm1hcCgoW25hbWUsIHZhbHVlXSkgPT4gYCR7bmFtZX09XCIke2VzY2FwZUF0dHJpYnV0ZSh2YWx1ZSl9XCJgKVxuICAgIC5qb2luKCcgJyk7XG59O1xuXG5jb25zdCBzYW5pdGl6ZUlkZW50aWZpZXIgPSAodmFsdWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHNhbml0aXplZFZhbHVlID0gdmFsdWVcbiAgICAudHJpbSgpXG4gICAgLnJlcGxhY2VBbGwoL1xccysvZywgJy0nKVxuICAgIC5yZXBsYWNlQWxsKC9bXkEtWmEtejAtOV8tXS9nLCAnLScpXG4gICAgLnJlcGxhY2VBbGwoLy17Mix9L2csICctJylcbiAgICAucmVwbGFjZUFsbCgvXlstX10rfFstX10rJC9nLCAnJyk7XG5cbiAgY29uc3Qgc2FmZVZhbHVlID0gc2FuaXRpemVkVmFsdWUgfHwgJ2ljb24nO1xuXG4gIHJldHVybiAvXltBLVphLXpfXS8udGVzdChzYWZlVmFsdWUpID8gc2FmZVZhbHVlIDogYGljb24tJHtzYWZlVmFsdWV9YDtcbn07XG5cbmNvbnN0IGdldFByZWZpeCA9IChmaWxlUGF0aDogc3RyaW5nLCBwcmVmaXg6IElkZW50aWZpZXJQcmVmaXgpOiBzdHJpbmcgPT4ge1xuICBpZihwcmVmaXggPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYodHlwZW9mIHByZWZpeCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBwcmVmaXgoZmlsZVBhdGgpO1xuICB9XG5cbiAgcmV0dXJuIHByZWZpeCB8fCAnJztcbn07XG5cbmNvbnN0IG9wdGltaXplU3ZnID0gKGNvbnRlbnQ6IHN0cmluZywgZW5hYmxlZDogYm9vbGVhbik6IHN0cmluZyA9PiB7XG4gIGlmKCFlbmFibGVkKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICByZXR1cm4gb3B0aW1pemUoY29udGVudCwge1xuICAgIG11bHRpcGFzczogdHJ1ZSxcbiAgICBwbHVnaW5zOiBbe1xuICAgICAgbmFtZTogJ3ByZXNldC1kZWZhdWx0JyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICBjbGVhbnVwSWRzOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfV1cbiAgfSkuZGF0YTtcbn07XG5cbmNvbnN0IGNyZWF0ZVNwcml0ZVN5bWJvbCA9IChcbiAgZmlsZVBhdGg6IHN0cmluZyxcbiAgdXNlZElkZW50aWZpZXJzOiBTZXQ8c3RyaW5nPixcbiAgcHJlZml4OiBJZGVudGlmaWVyUHJlZml4LFxuICB3YXJuaW5nczogd2VicGFjay5XZWJwYWNrRXJyb3JbXVxuKTogU3ByaXRlU3ltYm9sIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHNvdXJjZSA9IHJlYWRGaWxlU3luYyhmaWxlUGF0aCwgJ3V0ZjgnKTtcbiAgY29uc3QgcGFyc2VkU3ZnID0gcGFyc2VTdmcoc291cmNlKTtcblxuICBpZighcGFyc2VkU3ZnKSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYEludmFsaWQgU1ZHIGljb246ICR7ZmlsZVBhdGh9YCkpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYoIXBhcnNlZFN2Zy5jb250ZW50KSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYFNWRyBpY29uIGlzIGVtcHR5OiAke2ZpbGVQYXRofWApKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHJhd0lkZW50aWZpZXIgPSBgJHtnZXRQcmVmaXgoZmlsZVBhdGgsIHByZWZpeCl9JHtwYXRoQmFzZW5hbWUoZmlsZVBhdGgsIHBhdGhFeHRuYW1lKGZpbGVQYXRoKSl9YDtcbiAgY29uc3QgYmFzZUlkZW50aWZpZXIgPSBzYW5pdGl6ZUlkZW50aWZpZXIocmF3SWRlbnRpZmllcik7XG5cbiAgbGV0IGlkZW50aWZpZXIgPSBiYXNlSWRlbnRpZmllcjtcbiAgbGV0IGR1cGxpY2F0ZUluZGV4ID0gMTtcblxuICB3aGlsZSh1c2VkSWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgZHVwbGljYXRlSW5kZXggKz0gMTtcbiAgICBpZGVudGlmaWVyID0gYCR7YmFzZUlkZW50aWZpZXJ9LSR7ZHVwbGljYXRlSW5kZXh9YDtcbiAgfVxuXG4gIGlmKGlkZW50aWZpZXIgIT09IGJhc2VJZGVudGlmaWVyKSB7XG4gICAgd2FybmluZ3MucHVzaChuZXcgd2VicGFjay5XZWJwYWNrRXJyb3IoYER1cGxpY2F0ZSBTVkcgaWNvbiBpZCBcIiR7YmFzZUlkZW50aWZpZXJ9XCIgZGV0ZWN0ZWQsIHVzaW5nIFwiJHtpZGVudGlmaWVyfVwiIGZvciAke2ZpbGVQYXRofWApKTtcbiAgfVxuXG4gIHVzZWRJZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG5cbiAgY29uc3QgbmFtZXNwYWNlQXR0cmlidXRlcyA9IE9iamVjdC5lbnRyaWVzKHBhcnNlZFN2Zy5hdHRyaWJ1dGVzKS5yZWR1Y2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4oKHJlc3VsdCwgW25hbWUsIHZhbHVlXSkgPT4ge1xuICAgIGlmKG5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd4bWxuczonKSkge1xuICAgICAgcmVzdWx0W25hbWVdID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSwge30pO1xuXG4gIGNvbnN0IHN5bWJvbEF0dHJpYnV0ZXMgPSBPYmplY3QuZW50cmllcyhwYXJzZWRTdmcuYXR0cmlidXRlcykucmVkdWNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KChyZXN1bHQsIFtuYW1lLCB2YWx1ZV0pID0+IHtcbiAgICBpZihST09UX0VYQ0xVREVEX0FUVFJJQlVURVMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIGlmKG5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKCd4bWxuczonKSkge1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXN1bHRbbmFtZV0gPSB2YWx1ZTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sIHtcbiAgICBpZDogaWRlbnRpZmllclxuICB9KTtcblxuICBpZihwYXJzZWRTdmcuYXR0cmlidXRlcy52aWV3Qm94KSB7XG4gICAgc3ltYm9sQXR0cmlidXRlcy52aWV3Qm94ID0gcGFyc2VkU3ZnLmF0dHJpYnV0ZXMudmlld0JveDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB3aWR0aCA9IE51bWJlci5wYXJzZUZsb2F0KHBhcnNlZFN2Zy5hdHRyaWJ1dGVzLndpZHRoIHx8ICcnKTtcbiAgICBjb25zdCBoZWlnaHQgPSBOdW1iZXIucGFyc2VGbG9hdChwYXJzZWRTdmcuYXR0cmlidXRlcy5oZWlnaHQgfHwgJycpO1xuXG4gICAgaWYoTnVtYmVyLmlzRmluaXRlKHdpZHRoKSAmJiBOdW1iZXIuaXNGaW5pdGUoaGVpZ2h0KSkge1xuICAgICAgc3ltYm9sQXR0cmlidXRlcy52aWV3Qm94ID0gYDAgMCAke3dpZHRofSAke2hlaWdodH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICB3YXJuaW5ncy5wdXNoKG5ldyB3ZWJwYWNrLldlYnBhY2tFcnJvcihgU1ZHIGljb24gaXMgbWlzc2luZyBhIHZpZXdCb3ggYW5kIHJlYWRhYmxlIHdpZHRoL2hlaWdodDogJHtmaWxlUGF0aH1gKSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGZpbGVQYXRoLFxuICAgIG5hbWVzcGFjZUF0dHJpYnV0ZXMsXG4gICAgc3ltYm9sOiBgPHN5bWJvbCAke2J1aWxkQXR0cmlidXRlU3RyaW5nKHN5bWJvbEF0dHJpYnV0ZXMpfT4ke3BhcnNlZFN2Zy5jb250ZW50fTwvc3ltYm9sPmBcbiAgfTtcbn07XG5cbmNvbnN0IGNvbGxlY3RGaWxlcyA9IChwYXR0ZXJuczogcmVhZG9ubHkgc3RyaW5nW10sIGFsbG93RHVwbGljYXRlczogYm9vbGVhbik6IHN0cmluZ1tdID0+IHtcbiAgY29uc3QgZmlsZXMgPSBwYXR0ZXJucy5mbGF0TWFwKChwYXR0ZXJuKSA9PiB7XG4gICAgcmV0dXJuIGdsb2JTeW5jKHBhdHRlcm4sIHtcbiAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgICAgZG90OiBmYWxzZSxcbiAgICAgIG5vZGlyOiB0cnVlXG4gICAgfSkgYXMgc3RyaW5nW107XG4gIH0pLm1hcCgoZmlsZVBhdGgpID0+IHBhdGhSZXNvbHZlKGZpbGVQYXRoKSk7XG5cbiAgaWYoYWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgcmV0dXJuIFsuLi5uZXcgU2V0KGZpbGVzKV07XG59O1xuXG5leHBvcnQgY2xhc3MgTGV4U3ZnU3ByaXRlbWFwUGx1Z2luIHtcbiAgcmVhZG9ubHkgcGF0dGVybnM6IHN0cmluZ1tdO1xuICByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxMZXhTdmdTcHJpdGVtYXBQbHVnaW5PcHRpb25zPjtcblxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuczogc3RyaW5nIHwgc3RyaW5nW10sIG9wdGlvbnM6IExleFN2Z1Nwcml0ZW1hcFBsdWdpbk9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMucGF0dGVybnMgPSBBcnJheS5pc0FycmF5KHBhdHRlcm5zKSA/IHBhdHRlcm5zIDogW3BhdHRlcm5zXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBhbGxvd0R1cGxpY2F0ZXM6IG9wdGlvbnMuYWxsb3dEdXBsaWNhdGVzID8/IGZhbHNlLFxuICAgICAgZmlsZW5hbWU6IG5vcm1hbGl6ZUFzc2V0RmlsZW5hbWUob3B0aW9ucy5maWxlbmFtZSB8fCBERUZBVUxUX0ZJTEVOQU1FKSxcbiAgICAgIG9wdGltaXplOiBvcHRpb25zLm9wdGltaXplID8/IHRydWUsXG4gICAgICBwcmVmaXg6IG9wdGlvbnMucHJlZml4ID8/IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIGJ1aWxkU3ByaXRlbWFwKCk6IHtjb250ZW50OiBzdHJpbmcgfCBudWxsOyBmaWxlUGF0aHM6IHN0cmluZ1tdOyB3YXJuaW5nczogd2VicGFjay5XZWJwYWNrRXJyb3JbXX0ge1xuICAgIGNvbnN0IHdhcm5pbmdzOiB3ZWJwYWNrLldlYnBhY2tFcnJvcltdID0gW107XG4gICAgY29uc3QgZmlsZVBhdGhzID0gY29sbGVjdEZpbGVzKHRoaXMucGF0dGVybnMsIHRoaXMub3B0aW9ucy5hbGxvd0R1cGxpY2F0ZXMpO1xuXG4gICAgaWYoZmlsZVBhdGhzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudDogbnVsbCxcbiAgICAgICAgZmlsZVBhdGhzLFxuICAgICAgICB3YXJuaW5nc1xuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBuYW1lc3BhY2VBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgY29uc3QgdXNlZElkZW50aWZpZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3ltYm9scyA9IGZpbGVQYXRocy5tYXAoKGZpbGVQYXRoKSA9PiB7XG4gICAgICByZXR1cm4gY3JlYXRlU3ByaXRlU3ltYm9sKGZpbGVQYXRoLCB1c2VkSWRlbnRpZmllcnMsIHRoaXMub3B0aW9ucy5wcmVmaXgsIHdhcm5pbmdzKTtcbiAgICB9KS5maWx0ZXIoKGVudHJ5KTogZW50cnkgaXMgU3ByaXRlU3ltYm9sID0+IGVudHJ5ICE9PSBudWxsKTtcblxuICAgIGlmKHN5bWJvbHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50OiBudWxsLFxuICAgICAgICBmaWxlUGF0aHMsXG4gICAgICAgIHdhcm5pbmdzXG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvcihjb25zdCBzeW1ib2wgb2Ygc3ltYm9scykge1xuICAgICAgZm9yKGNvbnN0IFtuYW1lLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoc3ltYm9sLm5hbWVzcGFjZUF0dHJpYnV0ZXMpKSB7XG4gICAgICAgIG5hbWVzcGFjZUF0dHJpYnV0ZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByb290QXR0cmlidXRlcyA9IGJ1aWxkQXR0cmlidXRlU3RyaW5nKHtcbiAgICAgIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnLFxuICAgICAgLi4ubmFtZXNwYWNlQXR0cmlidXRlc1xuICAgIH0pO1xuICAgIGNvbnN0IHNwcml0ZUNvbnRlbnQgPSBgPHN2ZyAke3Jvb3RBdHRyaWJ1dGVzfT4ke3N5bWJvbHMubWFwKChzeW1ib2wpID0+IHN5bWJvbC5zeW1ib2wpLmpvaW4oJycpfTwvc3ZnPmA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogb3B0aW1pemVTdmcoc3ByaXRlQ29udGVudCwgdGhpcy5vcHRpb25zLm9wdGltaXplKSxcbiAgICAgIGZpbGVQYXRocyxcbiAgICAgIHdhcm5pbmdzXG4gICAgfTtcbiAgfVxuXG4gIGFwcGx5KGNvbXBpbGVyOiB3ZWJwYWNrLkNvbXBpbGVyKTogdm9pZCB7XG4gICAgY29tcGlsZXIuaG9va3MudGhpc0NvbXBpbGF0aW9uLnRhcChQTFVHSU5fTkFNRSwgKGNvbXBpbGF0aW9uKSA9PiB7XG4gICAgICBjb25zdCBkaXJlY3RvcmllcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICAgY29uc3Qgc3ByaXRlbWFwID0gdGhpcy5idWlsZFNwcml0ZW1hcCgpO1xuXG4gICAgICBmb3IoY29uc3QgZmlsZVBhdGggb2Ygc3ByaXRlbWFwLmZpbGVQYXRocykge1xuICAgICAgICBjb21waWxhdGlvbi5maWxlRGVwZW5kZW5jaWVzLmFkZChmaWxlUGF0aCk7XG4gICAgICAgIGRpcmVjdG9yaWVzLmFkZChwYXRoRGlybmFtZShmaWxlUGF0aCkpO1xuICAgICAgfVxuXG4gICAgICBmb3IoY29uc3QgcGF0dGVybiBvZiB0aGlzLnBhdHRlcm5zKSB7XG4gICAgICAgIGNvbnN0IGJhc2VEaXJlY3RvcnkgPSBwYXRoUmVzb2x2ZShwYXR0ZXJuLnJlcGxhY2UoL1xcKi4qJC8sICcnKSk7XG4gICAgICAgIGRpcmVjdG9yaWVzLmFkZChiYXNlRGlyZWN0b3J5KTtcbiAgICAgIH1cblxuICAgICAgZm9yKGNvbnN0IGRpcmVjdG9yeSBvZiBkaXJlY3Rvcmllcykge1xuICAgICAgICBjb21waWxhdGlvbi5jb250ZXh0RGVwZW5kZW5jaWVzLmFkZChkaXJlY3RvcnkpO1xuICAgICAgfVxuXG4gICAgICBpZihzcHJpdGVtYXAud2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICBjb21waWxhdGlvbi53YXJuaW5ncy5wdXNoKC4uLnNwcml0ZW1hcC53YXJuaW5ncyk7XG4gICAgICB9XG5cbiAgICAgIGNvbXBpbGF0aW9uLmhvb2tzLnByb2Nlc3NBc3NldHMudGFwKHtcbiAgICAgICAgbmFtZTogUExVR0lOX05BTUUsXG4gICAgICAgIHN0YWdlOiB3ZWJwYWNrLkNvbXBpbGF0aW9uLlBST0NFU1NfQVNTRVRTX1NUQUdFX0FERElUSU9OQUxcbiAgICAgIH0sICgpID0+IHtcbiAgICAgICAgaWYoIXNwcml0ZW1hcC5jb250ZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXNzZXROYW1lID0gdGhpcy5vcHRpb25zLmZpbGVuYW1lO1xuICAgICAgICBjb25zdCBzb3VyY2UgPSBuZXcgd2VicGFjay5zb3VyY2VzLlJhd1NvdXJjZShzcHJpdGVtYXAuY29udGVudCk7XG5cbiAgICAgICAgaWYoY29tcGlsYXRpb24uZ2V0QXNzZXQoYXNzZXROYW1lKSkge1xuICAgICAgICAgIGNvbXBpbGF0aW9uLnVwZGF0ZUFzc2V0KGFzc2V0TmFtZSwgc291cmNlKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb21waWxhdGlvbi5lbWl0QXNzZXQoYXNzZXROYW1lLCBzb3VyY2UpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTGV4U3ZnU3ByaXRlbWFwUGx1Z2luO1xuIl0sIm5hbWVzIjpbInJlYWRGaWxlU3luYyIsInN5bmMiLCJnbG9iU3luYyIsImJhc2VuYW1lIiwicGF0aEJhc2VuYW1lIiwiZGlybmFtZSIsInBhdGhEaXJuYW1lIiwiZXh0bmFtZSIsInBhdGhFeHRuYW1lIiwicmVzb2x2ZSIsInBhdGhSZXNvbHZlIiwib3B0aW1pemUiLCJ3ZWJwYWNrIiwiREVGQVVMVF9GSUxFTkFNRSIsIlBMVUdJTl9OQU1FIiwiUk9PVF9FWENMVURFRF9BVFRSSUJVVEVTIiwiU2V0IiwiZXNjYXBlQXR0cmlidXRlIiwidmFsdWUiLCJyZXBsYWNlQWxsIiwibm9ybWFsaXplQXNzZXRGaWxlbmFtZSIsImZpbGVuYW1lIiwicmVwbGFjZSIsInBhcnNlQXR0cmlidXRlcyIsImlucHV0IiwiYXR0cmlidXRlcyIsImF0dHJpYnV0ZVJlZ2V4IiwibWF0Y2giLCJleGVjIiwicGFyc2VTdmciLCJzb3VyY2UiLCJzdmdNYXRjaCIsImNvbnRlbnQiLCJ0cmltIiwiYnVpbGRBdHRyaWJ1dGVTdHJpbmciLCJPYmplY3QiLCJlbnRyaWVzIiwibWFwIiwibmFtZSIsImpvaW4iLCJzYW5pdGl6ZUlkZW50aWZpZXIiLCJzYW5pdGl6ZWRWYWx1ZSIsInNhZmVWYWx1ZSIsInRlc3QiLCJnZXRQcmVmaXgiLCJmaWxlUGF0aCIsInByZWZpeCIsIm9wdGltaXplU3ZnIiwiZW5hYmxlZCIsIm11bHRpcGFzcyIsInBsdWdpbnMiLCJwYXJhbXMiLCJvdmVycmlkZXMiLCJjbGVhbnVwSWRzIiwiZGF0YSIsImNyZWF0ZVNwcml0ZVN5bWJvbCIsInVzZWRJZGVudGlmaWVycyIsIndhcm5pbmdzIiwicGFyc2VkU3ZnIiwicHVzaCIsIldlYnBhY2tFcnJvciIsInJhd0lkZW50aWZpZXIiLCJiYXNlSWRlbnRpZmllciIsImlkZW50aWZpZXIiLCJkdXBsaWNhdGVJbmRleCIsImhhcyIsImFkZCIsIm5hbWVzcGFjZUF0dHJpYnV0ZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJ0b0xvd2VyQ2FzZSIsInN0YXJ0c1dpdGgiLCJzeW1ib2xBdHRyaWJ1dGVzIiwiaWQiLCJ2aWV3Qm94Iiwid2lkdGgiLCJOdW1iZXIiLCJwYXJzZUZsb2F0IiwiaGVpZ2h0IiwiaXNGaW5pdGUiLCJzeW1ib2wiLCJjb2xsZWN0RmlsZXMiLCJwYXR0ZXJucyIsImFsbG93RHVwbGljYXRlcyIsImZpbGVzIiwiZmxhdE1hcCIsInBhdHRlcm4iLCJhYnNvbHV0ZSIsImRvdCIsIm5vZGlyIiwiTGV4U3ZnU3ByaXRlbWFwUGx1Z2luIiwiYnVpbGRTcHJpdGVtYXAiLCJmaWxlUGF0aHMiLCJvcHRpb25zIiwibGVuZ3RoIiwic3ltYm9scyIsImZpbHRlciIsImVudHJ5Iiwicm9vdEF0dHJpYnV0ZXMiLCJ4bWxucyIsInNwcml0ZUNvbnRlbnQiLCJhcHBseSIsImNvbXBpbGVyIiwiaG9va3MiLCJ0aGlzQ29tcGlsYXRpb24iLCJ0YXAiLCJjb21waWxhdGlvbiIsImRpcmVjdG9yaWVzIiwic3ByaXRlbWFwIiwiZmlsZURlcGVuZGVuY2llcyIsImJhc2VEaXJlY3RvcnkiLCJkaXJlY3RvcnkiLCJjb250ZXh0RGVwZW5kZW5jaWVzIiwicHJvY2Vzc0Fzc2V0cyIsInN0YWdlIiwiQ29tcGlsYXRpb24iLCJQUk9DRVNTX0FTU0VUU19TVEFHRV9BRERJVElPTkFMIiwiYXNzZXROYW1lIiwic291cmNlcyIsIlJhd1NvdXJjZSIsImdldEFzc2V0IiwidXBkYXRlQXNzZXQiLCJlbWl0QXNzZXQiLCJBcnJheSIsImlzQXJyYXkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0NBR0MsR0FDRCxTQUFRQSxZQUFZLFFBQU8sS0FBSztBQUNoQyxTQUFRQyxRQUFRQyxRQUFRLFFBQU8sT0FBTztBQUN0QyxTQUFRQyxZQUFZQyxZQUFZLEVBQUVDLFdBQVdDLFdBQVcsRUFBRUMsV0FBV0MsV0FBVyxFQUFFQyxXQUFXQyxXQUFXLFFBQU8sT0FBTztBQUN0SCxTQUFRQyxRQUFRLFFBQU8sT0FBTztBQUM5QixPQUFPQyxhQUFhLFVBQVU7QUFzQjlCLE1BQU1DLG1CQUFtQjtBQUN6QixNQUFNQyxjQUFjO0FBQ3BCLE1BQU1DLDJCQUEyQixJQUFJQyxJQUFJO0lBQ3ZDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNEO0FBRUQsTUFBTUMsa0JBQWtCLENBQUNDO0lBQ3ZCLE9BQU9BLE1BQ0pDLFVBQVUsQ0FBQyxLQUFLLFNBQ2hCQSxVQUFVLENBQUMsS0FBSyxVQUNoQkEsVUFBVSxDQUFDLEtBQUssUUFDaEJBLFVBQVUsQ0FBQyxLQUFLO0FBQ3JCO0FBRUEsTUFBTUMseUJBQXlCLENBQUNDO0lBQzlC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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/lex",
3
- "version": "1.55.2",
3
+ "version": "1.56.1",
4
4
  "description": "Lex",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -83,40 +83,39 @@
83
83
  "dependencies": {
84
84
  "@mdx-js/loader": "^3.1.1",
85
85
  "@nlabs/webpack-plugin-static-site": "*",
86
- "@storybook/addon-docs": "^10.2.17",
87
- "@storybook/addon-links": "^10.2.17",
88
- "@storybook/addon-postcss": "^2.0.0",
89
- "@storybook/addon-styling-webpack": "^3.0.0",
90
- "@storybook/addon-themes": "^10.2.17",
91
- "@storybook/cli": "^10.2.17",
92
- "@storybook/react": "^10.2.17",
93
- "@storybook/react-webpack5": "^10.2.17",
94
- "@swc/cli": "^0.8.0",
95
- "@swc/core": "^1.15.18",
86
+ "@storybook/addon-docs": "^10.3.4",
87
+ "@storybook/addon-links": "^10.3.4",
88
+ "@storybook/addon-styling-webpack": "^3.0.2",
89
+ "@storybook/addon-themes": "^10.3.4",
90
+ "@storybook/cli": "^10.3.4",
91
+ "@storybook/react": "^10.3.4",
92
+ "@storybook/react-webpack5": "^10.3.4",
93
+ "@swc/cli": "^0.8.1",
94
+ "@swc/core": "^1.15.24",
96
95
  "@tailwindcss/forms": "^0.5.11",
97
96
  "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
98
- "@tailwindcss/postcss": "4.2.1",
97
+ "@tailwindcss/postcss": "4.2.2",
99
98
  "@testing-library/jest-dom": "^6.9.1",
100
99
  "@testing-library/react": "^16.3.2",
101
- "@vitest/coverage-v8": "^4.0.18",
100
+ "@vitest/coverage-v8": "^4.1.2",
102
101
  "assert": "^2.1.0",
103
102
  "autoprefixer": "^10.4.27",
104
103
  "boxen": "8.0.1",
105
104
  "buffer": "^6.0.3",
106
- "caniuse-lite": "1.0.30001777",
105
+ "caniuse-lite": "1.0.30001786",
107
106
  "chalk": "^5.6.2",
108
107
  "commander": "^14.0.3",
109
108
  "compare-versions": "^6.1.1",
110
109
  "compression-webpack-plugin": "^12.0.0",
111
110
  "copy-webpack-plugin": "^14.0.0",
112
- "core-js": "^3.48.0",
111
+ "core-js": "^3.49.0",
113
112
  "crypto-js": "^4.2.0",
114
113
  "css-loader": "^7.1.4",
115
114
  "css-minimizer-webpack-plugin": "^8.0.0",
116
- "cssnano": "^7.1.3",
115
+ "cssnano": "^7.1.4",
117
116
  "dotenv-webpack": "^9.0.0",
118
117
  "download-npm-package": "^3.1.12",
119
- "eslint": "^10.0.3",
118
+ "eslint": "^10.2.0",
120
119
  "eslint-config-styleguidejs": "^5.0.4",
121
120
  "execa": "9.6.1",
122
121
  "expect": "^30.3.0",
@@ -125,20 +124,20 @@
125
124
  "find-file-up": "^2.0.1",
126
125
  "glob": "^13.0.6",
127
126
  "global": "^4.4.0",
128
- "graphql": "^16.13.1",
127
+ "graphql": "^16.13.2",
129
128
  "graphql-tag": "^2.12.6",
130
129
  "html-loader": "^5.1.0",
131
130
  "html-webpack-plugin": "^5.6.6",
132
131
  "https-browserify": "^1.0.0",
133
132
  "image-webpack-loader": "^8.1.0",
134
- "jsdom": "^28.1.0",
133
+ "jsdom": "^29.0.1",
135
134
  "latest-version": "9.0.0",
136
- "lodash": "^4.17.23",
135
+ "lodash": "^4.18.1",
137
136
  "luxon": "^3.7.2",
138
137
  "math-expression-evaluator": "^2.0.7",
139
- "mini-css-extract-plugin": "^2.10.1",
140
- "npm-check-updates": "^19.6.3",
141
- "openai": "^6.27.0",
138
+ "mini-css-extract-plugin": "^2.10.2",
139
+ "npm-check-updates": "^20.0.0",
140
+ "openai": "^6.33.0",
142
141
  "ora": "9.3.0",
143
142
  "os-browserify": "^0.3.0",
144
143
  "path-browserify": "^1.0.1",
@@ -147,12 +146,10 @@
147
146
  "postcss-cli": "^11.0.1",
148
147
  "postcss-custom-properties": "^15.0.1",
149
148
  "postcss-flexbugs-fixes": "^5.0.2",
150
- "postcss-for": "^2.1.1",
151
149
  "postcss-hash": "^3.0.0",
152
150
  "postcss-import": "16.1.1",
153
151
  "postcss-loader": "^8.2.1",
154
152
  "postcss-nesting": "^14.0.0",
155
- "postcss-percentage": "^0.0.0",
156
153
  "postcss-preset-env": "^11.2.0",
157
154
  "postcss-simple-vars": "^7.0.1",
158
155
  "postcss-svgo": "7.1.1",
@@ -167,37 +164,37 @@
167
164
  "rimraf": "^6.1.3",
168
165
  "semver": "^7.7.4",
169
166
  "source-map-loader": "^5.0.0",
170
- "storybook": "^10.2.17",
167
+ "storybook": "^10.3.4",
171
168
  "stream-browserify": "^3.0.0",
172
169
  "stream-http": "^3.2.0",
173
170
  "style-loader": "^4.0.0",
174
- "svg-spritemap-webpack-plugin": "^5.1.0",
175
171
  "svgo": "4.0.1",
176
172
  "swc-loader": "^0.2.7",
177
- "tailwindcss": "^4.2.1",
173
+ "tailwindcss": "^4.2.2",
178
174
  "ts-node": "^10.9.2",
179
175
  "tsconfig-paths-webpack-plugin": "^4.2.0",
180
- "typescript": "5.9.3",
176
+ "typescript": "^6.0.2",
181
177
  "util": "^0.12.5",
182
- "vitest": "^4.0.18",
178
+ "vitest": "^4.1.2",
183
179
  "vm-browserify": "^1.1.2",
184
180
  "webpack": "5.105.4",
185
- "webpack-bundle-analyzer": "^5.2.0",
186
- "webpack-cli": "^6.0.1",
181
+ "webpack-bundle-analyzer": "^5.3.0",
182
+ "webpack-cli": "^7.0.2",
187
183
  "webpack-merge": "^6.0.1",
188
184
  "webpack-plugin-serve": "^1.6.0",
189
- "ws": "^8.19.0"
185
+ "ws": "^8.20.0"
190
186
  },
191
187
  "devDependencies": {
192
188
  "@types/express": "^5.0.6",
193
189
  "@types/luxon": "^3.7.1",
194
- "@types/node": "^25.4.0",
190
+ "@types/node": "^25.5.2",
195
191
  "@types/ora": "^3.2.0",
196
192
  "@types/react": "^19.2.14",
197
193
  "@types/webpack": "^5.28.5"
198
194
  },
199
195
  "overrides": {
200
196
  "cross-spawn": "^7.0.6",
197
+ "fast-xml-parser": "^5.5.10",
201
198
  "got": "^14.6.6",
202
199
  "http-proxy-middleware": "^3.0.5",
203
200
  "minimatch": ">=10.2.4",
package/tsconfig.json CHANGED
@@ -21,6 +21,7 @@
21
21
  "pretty": true,
22
22
  "resolveJsonModule": true,
23
23
  "skipLibCheck": true,
24
+ "useUnknownInCatchVariables": false,
24
25
  "target": "ESNext",
25
26
  "types": [
26
27
  "vitest/globals",