@blackglory/match 0.3.4 → 0.3.6

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.
Files changed (218) hide show
  1. package/lib/index.js.map +1 -0
  2. package/lib/match-element.js.map +1 -0
  3. package/lib/match.js.map +1 -0
  4. package/lib/matchers/any-of.js.map +1 -0
  5. package/lib/{es2018/matchers → matchers}/child-nodes.js +2 -2
  6. package/lib/matchers/child-nodes.js.map +1 -0
  7. package/lib/{es2018/matchers → matchers}/children.js +2 -2
  8. package/lib/matchers/children.js.map +1 -0
  9. package/lib/matchers/css.js.map +1 -0
  10. package/lib/{es2015/matchers → matchers}/element.js +2 -2
  11. package/lib/matchers/element.js.map +1 -0
  12. package/lib/matchers/multiple.js.map +1 -0
  13. package/lib/{es2018/matchers → matchers}/node.js +2 -2
  14. package/lib/matchers/node.js.map +1 -0
  15. package/lib/matchers/optional.js.map +1 -0
  16. package/lib/matchers/repeat.js.map +1 -0
  17. package/lib/matchers/tap.js.map +1 -0
  18. package/lib/matchers/text-content-equals.js.map +1 -0
  19. package/lib/matchers/text-content-includes.js.map +1 -0
  20. package/lib/matchers/text-content-matches.js.map +1 -0
  21. package/lib/{es2015/matchers → matchers}/text-node.js +2 -2
  22. package/lib/matchers/text-node.js.map +1 -0
  23. package/lib/matchers/xpath.js.map +1 -0
  24. package/lib/types.js.map +1 -0
  25. package/lib/utils/concat.js.map +1 -0
  26. package/lib/utils/match-multiple.js.map +1 -0
  27. package/lib/utils/match-one-by-one.js.map +1 -0
  28. package/lib/{es2015/utils/merge.d.ts → utils/merge-in-place.d.ts} +1 -1
  29. package/lib/{es2015/utils/merge.js → utils/merge-in-place.js} +4 -4
  30. package/lib/utils/merge-in-place.js.map +1 -0
  31. package/lib/utils/next-element-sibling.js.map +1 -0
  32. package/lib/utils/next-sibling.js.map +1 -0
  33. package/package.json +10 -25
  34. package/src/index.ts +18 -0
  35. package/src/match-element.ts +23 -0
  36. package/src/match.ts +23 -0
  37. package/src/matchers/any-of.ts +13 -0
  38. package/src/matchers/child-nodes.ts +33 -0
  39. package/src/matchers/children.ts +35 -0
  40. package/src/matchers/css.ts +24 -0
  41. package/src/matchers/element.ts +49 -0
  42. package/src/matchers/multiple.ts +59 -0
  43. package/src/matchers/node.ts +50 -0
  44. package/src/matchers/optional.ts +6 -0
  45. package/src/matchers/repeat.ts +25 -0
  46. package/src/matchers/tap.ts +12 -0
  47. package/src/matchers/text-content-equals.ts +28 -0
  48. package/src/matchers/text-content-includes.ts +28 -0
  49. package/src/matchers/text-content-matches.ts +20 -0
  50. package/src/matchers/text-node.ts +52 -0
  51. package/src/matchers/xpath.ts +54 -0
  52. package/src/types.ts +39 -0
  53. package/src/utils/concat.ts +9 -0
  54. package/src/utils/match-multiple.ts +27 -0
  55. package/src/utils/match-one-by-one.ts +47 -0
  56. package/src/utils/merge-in-place.ts +26 -0
  57. package/src/utils/next-element-sibling.ts +10 -0
  58. package/src/utils/next-sibling.ts +7 -0
  59. package/CHANGELOG.md +0 -64
  60. package/dist/es2015/index.min.mjs +0 -2
  61. package/dist/es2015/index.min.mjs.map +0 -1
  62. package/dist/es2015/index.mjs +0 -4318
  63. package/dist/es2015/index.mjs.map +0 -1
  64. package/dist/es2015/index.umd.js +0 -4344
  65. package/dist/es2015/index.umd.js.map +0 -1
  66. package/dist/es2015/index.umd.min.js +0 -2
  67. package/dist/es2015/index.umd.min.js.map +0 -1
  68. package/dist/es2018/index.min.mjs +0 -2
  69. package/dist/es2018/index.min.mjs.map +0 -1
  70. package/dist/es2018/index.mjs +0 -4326
  71. package/dist/es2018/index.mjs.map +0 -1
  72. package/dist/es2018/index.umd.js +0 -4352
  73. package/dist/es2018/index.umd.js.map +0 -1
  74. package/dist/es2018/index.umd.min.js +0 -2
  75. package/dist/es2018/index.umd.min.js.map +0 -1
  76. package/lib/es2015/index.js.map +0 -1
  77. package/lib/es2015/match-element.js.map +0 -1
  78. package/lib/es2015/match.js.map +0 -1
  79. package/lib/es2015/matchers/any-of.js.map +0 -1
  80. package/lib/es2015/matchers/child-nodes.js +0 -23
  81. package/lib/es2015/matchers/child-nodes.js.map +0 -1
  82. package/lib/es2015/matchers/children.js +0 -23
  83. package/lib/es2015/matchers/children.js.map +0 -1
  84. package/lib/es2015/matchers/css.js.map +0 -1
  85. package/lib/es2015/matchers/element.js.map +0 -1
  86. package/lib/es2015/matchers/multiple.js.map +0 -1
  87. package/lib/es2015/matchers/node.js +0 -31
  88. package/lib/es2015/matchers/node.js.map +0 -1
  89. package/lib/es2015/matchers/optional.js.map +0 -1
  90. package/lib/es2015/matchers/repeat.js.map +0 -1
  91. package/lib/es2015/matchers/tap.js.map +0 -1
  92. package/lib/es2015/matchers/text-content-equals.js.map +0 -1
  93. package/lib/es2015/matchers/text-content-includes.js.map +0 -1
  94. package/lib/es2015/matchers/text-content-matches.js.map +0 -1
  95. package/lib/es2015/matchers/text-node.js.map +0 -1
  96. package/lib/es2015/matchers/xpath.js.map +0 -1
  97. package/lib/es2015/types.js.map +0 -1
  98. package/lib/es2015/utils/concat.js.map +0 -1
  99. package/lib/es2015/utils/match-multiple.js.map +0 -1
  100. package/lib/es2015/utils/match-one-by-one.js.map +0 -1
  101. package/lib/es2015/utils/merge.js.map +0 -1
  102. package/lib/es2015/utils/next-element-sibling.js.map +0 -1
  103. package/lib/es2015/utils/next-sibling.js.map +0 -1
  104. package/lib/es2018/index.d.ts +0 -17
  105. package/lib/es2018/index.js +0 -38
  106. package/lib/es2018/index.js.map +0 -1
  107. package/lib/es2018/match-element.d.ts +0 -4
  108. package/lib/es2018/match-element.js +0 -22
  109. package/lib/es2018/match-element.js.map +0 -1
  110. package/lib/es2018/match.d.ts +0 -4
  111. package/lib/es2018/match.js +0 -22
  112. package/lib/es2018/match.js.map +0 -1
  113. package/lib/es2018/matchers/any-of.d.ts +0 -6
  114. package/lib/es2018/matchers/any-of.js +0 -10
  115. package/lib/es2018/matchers/any-of.js.map +0 -1
  116. package/lib/es2018/matchers/child-nodes.d.ts +0 -2
  117. package/lib/es2018/matchers/child-nodes.js.map +0 -1
  118. package/lib/es2018/matchers/children.d.ts +0 -2
  119. package/lib/es2018/matchers/children.js.map +0 -1
  120. package/lib/es2018/matchers/css.d.ts +0 -3
  121. package/lib/es2018/matchers/css.js +0 -18
  122. package/lib/es2018/matchers/css.js.map +0 -1
  123. package/lib/es2018/matchers/element.d.ts +0 -4
  124. package/lib/es2018/matchers/element.js +0 -34
  125. package/lib/es2018/matchers/element.js.map +0 -1
  126. package/lib/es2018/matchers/multiple.d.ts +0 -10
  127. package/lib/es2018/matchers/multiple.js +0 -42
  128. package/lib/es2018/matchers/multiple.js.map +0 -1
  129. package/lib/es2018/matchers/node.d.ts +0 -4
  130. package/lib/es2018/matchers/node.js.map +0 -1
  131. package/lib/es2018/matchers/optional.d.ts +0 -2
  132. package/lib/es2018/matchers/optional.js +0 -9
  133. package/lib/es2018/matchers/optional.js.map +0 -1
  134. package/lib/es2018/matchers/repeat.d.ts +0 -2
  135. package/lib/es2018/matchers/repeat.js +0 -20
  136. package/lib/es2018/matchers/repeat.js.map +0 -1
  137. package/lib/es2018/matchers/tap.d.ts +0 -2
  138. package/lib/es2018/matchers/tap.js +0 -12
  139. package/lib/es2018/matchers/tap.js.map +0 -1
  140. package/lib/es2018/matchers/text-content-equals.d.ts +0 -7
  141. package/lib/es2018/matchers/text-content-equals.js +0 -20
  142. package/lib/es2018/matchers/text-content-equals.js.map +0 -1
  143. package/lib/es2018/matchers/text-content-includes.d.ts +0 -7
  144. package/lib/es2018/matchers/text-content-includes.js +0 -20
  145. package/lib/es2018/matchers/text-content-includes.js.map +0 -1
  146. package/lib/es2018/matchers/text-content-matches.d.ts +0 -6
  147. package/lib/es2018/matchers/text-content-matches.js +0 -16
  148. package/lib/es2018/matchers/text-content-matches.js.map +0 -1
  149. package/lib/es2018/matchers/text-node.d.ts +0 -4
  150. package/lib/es2018/matchers/text-node.js +0 -34
  151. package/lib/es2018/matchers/text-node.js.map +0 -1
  152. package/lib/es2018/matchers/xpath.d.ts +0 -3
  153. package/lib/es2018/matchers/xpath.js +0 -34
  154. package/lib/es2018/matchers/xpath.js.map +0 -1
  155. package/lib/es2018/types.d.ts +0 -18
  156. package/lib/es2018/types.js +0 -3
  157. package/lib/es2018/types.js.map +0 -1
  158. package/lib/es2018/utils/concat.d.ts +0 -1
  159. package/lib/es2018/utils/concat.js +0 -14
  160. package/lib/es2018/utils/concat.js.map +0 -1
  161. package/lib/es2018/utils/match-multiple.d.ts +0 -2
  162. package/lib/es2018/utils/match-multiple.js +0 -21
  163. package/lib/es2018/utils/match-multiple.js.map +0 -1
  164. package/lib/es2018/utils/match-one-by-one.d.ts +0 -2
  165. package/lib/es2018/utils/match-one-by-one.js +0 -38
  166. package/lib/es2018/utils/match-one-by-one.js.map +0 -1
  167. package/lib/es2018/utils/merge.d.ts +0 -5
  168. package/lib/es2018/utils/merge.js +0 -31
  169. package/lib/es2018/utils/merge.js.map +0 -1
  170. package/lib/es2018/utils/next-element-sibling.d.ts +0 -1
  171. package/lib/es2018/utils/next-element-sibling.js +0 -11
  172. package/lib/es2018/utils/next-element-sibling.js.map +0 -1
  173. package/lib/es2018/utils/next-sibling.d.ts +0 -1
  174. package/lib/es2018/utils/next-sibling.js +0 -11
  175. package/lib/es2018/utils/next-sibling.js.map +0 -1
  176. /package/lib/{es2015/index.d.ts → index.d.ts} +0 -0
  177. /package/lib/{es2015/index.js → index.js} +0 -0
  178. /package/lib/{es2015/match-element.d.ts → match-element.d.ts} +0 -0
  179. /package/lib/{es2015/match-element.js → match-element.js} +0 -0
  180. /package/lib/{es2015/match.d.ts → match.d.ts} +0 -0
  181. /package/lib/{es2015/match.js → match.js} +0 -0
  182. /package/lib/{es2015/matchers → matchers}/any-of.d.ts +0 -0
  183. /package/lib/{es2015/matchers → matchers}/any-of.js +0 -0
  184. /package/lib/{es2015/matchers → matchers}/child-nodes.d.ts +0 -0
  185. /package/lib/{es2015/matchers → matchers}/children.d.ts +0 -0
  186. /package/lib/{es2015/matchers → matchers}/css.d.ts +0 -0
  187. /package/lib/{es2015/matchers → matchers}/css.js +0 -0
  188. /package/lib/{es2015/matchers → matchers}/element.d.ts +0 -0
  189. /package/lib/{es2015/matchers → matchers}/multiple.d.ts +0 -0
  190. /package/lib/{es2015/matchers → matchers}/multiple.js +0 -0
  191. /package/lib/{es2015/matchers → matchers}/node.d.ts +0 -0
  192. /package/lib/{es2015/matchers → matchers}/optional.d.ts +0 -0
  193. /package/lib/{es2015/matchers → matchers}/optional.js +0 -0
  194. /package/lib/{es2015/matchers → matchers}/repeat.d.ts +0 -0
  195. /package/lib/{es2015/matchers → matchers}/repeat.js +0 -0
  196. /package/lib/{es2015/matchers → matchers}/tap.d.ts +0 -0
  197. /package/lib/{es2015/matchers → matchers}/tap.js +0 -0
  198. /package/lib/{es2015/matchers → matchers}/text-content-equals.d.ts +0 -0
  199. /package/lib/{es2015/matchers → matchers}/text-content-equals.js +0 -0
  200. /package/lib/{es2015/matchers → matchers}/text-content-includes.d.ts +0 -0
  201. /package/lib/{es2015/matchers → matchers}/text-content-includes.js +0 -0
  202. /package/lib/{es2015/matchers → matchers}/text-content-matches.d.ts +0 -0
  203. /package/lib/{es2015/matchers → matchers}/text-content-matches.js +0 -0
  204. /package/lib/{es2015/matchers → matchers}/text-node.d.ts +0 -0
  205. /package/lib/{es2015/matchers → matchers}/xpath.d.ts +0 -0
  206. /package/lib/{es2015/matchers → matchers}/xpath.js +0 -0
  207. /package/lib/{es2015/types.d.ts → types.d.ts} +0 -0
  208. /package/lib/{es2015/types.js → types.js} +0 -0
  209. /package/lib/{es2015/utils → utils}/concat.d.ts +0 -0
  210. /package/lib/{es2015/utils → utils}/concat.js +0 -0
  211. /package/lib/{es2015/utils → utils}/match-multiple.d.ts +0 -0
  212. /package/lib/{es2015/utils → utils}/match-multiple.js +0 -0
  213. /package/lib/{es2015/utils → utils}/match-one-by-one.d.ts +0 -0
  214. /package/lib/{es2015/utils → utils}/match-one-by-one.js +0 -0
  215. /package/lib/{es2015/utils → utils}/next-element-sibling.d.ts +0 -0
  216. /package/lib/{es2015/utils → utils}/next-element-sibling.js +0 -0
  217. /package/lib/{es2015/utils → utils}/next-sibling.d.ts +0 -0
  218. /package/lib/{es2015/utils → utils}/next-sibling.js +0 -0
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.textContentEquals = void 0;
4
- const types_1 = require("@blackglory/types");
5
- function textContentEquals(text, { caseSensitive = true, trim = false } = {}) {
6
- return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
8
- return false;
9
- let textContent = node.textContent;
10
- if (!caseSensitive) {
11
- textContent = textContent.toLowerCase();
12
- text = text.toLowerCase();
13
- }
14
- if (trim)
15
- textContent = textContent.trim();
16
- return textContent === text;
17
- };
18
- }
19
- exports.textContentEquals = textContentEquals;
20
- //# sourceMappingURL=text-content-equals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-content-equals.js","sourceRoot":"","sources":["../../../src/matchers/text-content-equals.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAO1C,SAAgB,iBAAiB,CAC/B,IAAY,EACZ,EACE,aAAa,GAAG,IAAI,EACpB,IAAI,GAAG,KAAK,KACiB,EAAE;IAEjC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,IAAA,cAAM,EAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,CAAC,aAAa,EAAE;YAClB,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;YACvC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;SAC1B;QACD,IAAI,IAAI;YAAE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;QAE1C,OAAO,WAAW,KAAK,IAAI,CAAA;IAC7B,CAAC,CAAA;AACH,CAAC;AAnBD,8CAmBC"}
@@ -1,7 +0,0 @@
1
- import { ITerminalMatcher } from '../types';
2
- interface ITextContentIncludesOptions {
3
- caseSensitive?: boolean;
4
- trim?: boolean;
5
- }
6
- export declare function textContentIncludes(searchString: string, { caseSensitive, trim }?: ITextContentIncludesOptions): ITerminalMatcher<Node>;
7
- export {};
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.textContentIncludes = void 0;
4
- const types_1 = require("@blackglory/types");
5
- function textContentIncludes(searchString, { caseSensitive = true, trim = false } = {}) {
6
- return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
8
- return false;
9
- let textContent = node.textContent;
10
- if (!caseSensitive) {
11
- textContent = textContent.toLowerCase();
12
- searchString = searchString.toLowerCase();
13
- }
14
- if (trim)
15
- textContent = textContent.trim();
16
- return textContent.includes(searchString);
17
- };
18
- }
19
- exports.textContentIncludes = textContentIncludes;
20
- //# sourceMappingURL=text-content-includes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-content-includes.js","sourceRoot":"","sources":["../../../src/matchers/text-content-includes.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAO1C,SAAgB,mBAAmB,CACjC,YAAoB,EACpB,EACE,aAAa,GAAG,IAAI,EACpB,IAAI,GAAG,KAAK,KACmB,EAAE;IAEnC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,IAAA,cAAM,EAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,CAAC,aAAa,EAAE;YAClB,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;YACvC,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAA;SAC1C;QACD,IAAI,IAAI;YAAE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;QAE1C,OAAO,WAAW,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC3C,CAAC,CAAA;AACH,CAAC;AAnBD,kDAmBC"}
@@ -1,6 +0,0 @@
1
- import { ITerminalMatcher } from '../types';
2
- interface ITextContentMatchesOptions {
3
- trim?: boolean;
4
- }
5
- export declare function textContentMatches(pattern: RegExp, { trim }?: ITextContentMatchesOptions): ITerminalMatcher<Node>;
6
- export {};
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.textContentMatches = void 0;
4
- const types_1 = require("@blackglory/types");
5
- function textContentMatches(pattern, { trim = false } = {}) {
6
- return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
8
- return false;
9
- let textContent = node.textContent;
10
- if (trim)
11
- textContent = textContent.trim();
12
- return pattern.test(textContent);
13
- };
14
- }
15
- exports.textContentMatches = textContentMatches;
16
- //# sourceMappingURL=text-content-matches.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-content-matches.js","sourceRoot":"","sources":["../../../src/matchers/text-content-matches.ts"],"names":[],"mappings":";;;AACA,6CAA0C;AAM1C,SAAgB,kBAAkB,CAChC,OAAe,EACf,EAAE,IAAI,GAAG,KAAK,KAAiC,EAAE;IAEjD,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,IAAA,cAAM,EAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,IAAI;YAAE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;QAE1C,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IAClC,CAAC,CAAA;AACH,CAAC;AAZD,gDAYC"}
@@ -1,4 +0,0 @@
1
- import { INestedMatcher, ITerminalMatcher } from '../types';
2
- export declare function textNode(strings: TemplateStringsArray, ...values: string[]): (...matchers: Array<ITerminalMatcher<Node>>) => INestedMatcher<Node>;
3
- export declare function textNode(name: string, ...matchers: Array<ITerminalMatcher<Node>>): INestedMatcher<Node>;
4
- export declare function textNode(...matchers: Array<ITerminalMatcher<Node>>): INestedMatcher<Node>;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.textNode = void 0;
4
- const types_1 = require("@blackglory/types");
5
- const concat_1 = require("../utils/concat");
6
- const extra_dom_1 = require("extra-dom");
7
- const merge_1 = require("../utils/merge");
8
- function textNode(...args) {
9
- if ((0, types_1.isArray)(args[0])) {
10
- const [strings, ...values] = args;
11
- const name = (0, concat_1.concat)(strings, values).join('');
12
- return (...matchers) => textNode(name, ...matchers);
13
- }
14
- if ((0, types_1.isString)(args[0])) {
15
- const [name, ...matchers] = args;
16
- return function (node) {
17
- const result = textNode(...matchers).call(this, node);
18
- if (result) {
19
- (0, merge_1.merge)(this.collection, { [name]: node });
20
- }
21
- return result;
22
- };
23
- }
24
- const [...matchers] = args;
25
- return function (node) {
26
- if ((0, extra_dom_1.isntTextNode)(node))
27
- return false;
28
- if (matchers.length === 0)
29
- return true;
30
- return matchers.every(match => match.call(this, node));
31
- };
32
- }
33
- exports.textNode = textNode;
34
- //# sourceMappingURL=text-node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-node.js","sourceRoot":"","sources":["../../../src/matchers/text-node.ts"],"names":[],"mappings":";;;AACA,6CAAqD;AACrD,0CAAsC;AACtC,yCAAwC;AACxC,wCAAoC;AAapC,SAAgB,QAAQ,CAAC,GAAG,IAGkB;IAE5C,IAAI,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACpB,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GACxB,IAA4D,CAAA;QAC9D,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE7C,OAAO,CAAC,GAAG,QAAuC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAA;KACnF;IAED,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,GACvB,IAAkE,CAAA;QAEpE,OAAO,UAAkC,IAAU;YACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACrD,IAAI,MAAM,EAAE;gBACV,IAAA,aAAK,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;aACzC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;KACF;IAED,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAoD,CAAA;IAE1E,OAAO,UAAkC,IAAU;QACjD,IAAI,IAAA,wBAAY,EAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QACpC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAEtC,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;IACxD,CAAC,CAAA;AACH,CAAC;AAlCD,4BAkCC"}
@@ -1,3 +0,0 @@
1
- import { ITerminalMatcher } from '../types';
2
- export declare function xpath(strings: TemplateStringsArray, ...values: string[]): ITerminalMatcher<Node>;
3
- export declare function xpath(experssion: string): ITerminalMatcher<Node>;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.xpath = void 0;
4
- const types_1 = require("@blackglory/types");
5
- const concat_1 = require("../utils/concat");
6
- const errors_1 = require("@blackglory/errors");
7
- const UNORDERED_NODE_ITERATOR_TYPE = 'XPathResult' in globalThis
8
- ? XPathResult.UNORDERED_NODE_ITERATOR_TYPE
9
- : 4;
10
- function xpath(...args) {
11
- if ((0, types_1.isString)(args[0])) {
12
- const [expression] = args;
13
- (0, errors_1.assert)(expression.startsWith('//*'), 'XPath expressions must start with "//*"');
14
- return function (node) {
15
- return xpathMatches(this.document, expression, node);
16
- };
17
- }
18
- else {
19
- const [strings, ...values] = args;
20
- const expression = (0, concat_1.concat)(strings, values).join('');
21
- return xpath(expression);
22
- }
23
- }
24
- exports.xpath = xpath;
25
- function xpathMatches(document, expression, node) {
26
- const iterator = document.evaluate(expression, node, null, UNORDERED_NODE_ITERATOR_TYPE, null);
27
- let value;
28
- while ((value = iterator.iterateNext()) !== null) {
29
- if (value === node)
30
- return true;
31
- }
32
- return false;
33
- }
34
- //# sourceMappingURL=xpath.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"xpath.js","sourceRoot":"","sources":["../../../src/matchers/xpath.ts"],"names":[],"mappings":";;;AACA,6CAA4C;AAC5C,0CAAsC;AACtC,+CAA2C;AAE3C,MAAM,4BAA4B,GAChC,aAAa,IAAI,UAAU;IAC3B,CAAC,CAAC,WAAW,CAAC,4BAA4B;IAC1C,CAAC,CAAC,CAAC,CAAA;AASL,SAAgB,KAAK,CAAC,GAAG,IAE6B;IAEpD,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACrB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;QACzB,IAAA,eAAM,EAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,yCAAyC,CAAC,CAAA;QAE/E,OAAO,UAEL,IAAU;YAEV,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QACtD,CAAC,CAAA;KACF;SAAM;QACL,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;QACjC,MAAM,UAAU,GAAG,IAAA,eAAM,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEnD,OAAO,KAAK,CAAC,UAAU,CAAC,CAAA;KACzB;AACH,CAAC;AApBD,sBAoBC;AAED,SAAS,YAAY,CAAC,QAAkB,EAAE,UAAkB,EAAE,IAAU;IACtE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAChC,UAAU,EACV,IAAI,EACJ,IAAI,EACJ,4BAA4B,EAC5B,IAAI,CACL,CAAA;IAED,IAAI,KAAK,CAAA;IACT,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,IAAI,EAAE;QAChD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;KAChC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -1,18 +0,0 @@
1
- export interface IContext {
2
- readonly document: Document;
3
- readonly next: (node: Node, distance?: number) => Node | undefined;
4
- readonly collection: {
5
- [name: string]: Node | Node[];
6
- };
7
- }
8
- export interface IReadonlyContext {
9
- readonly document: Document;
10
- readonly next: (node: Node, distance?: number) => Node | undefined;
11
- readonly collection: {
12
- readonly [name: string]: Node | Node[];
13
- };
14
- }
15
- export declare type IMatcher<T extends Node> = ITerminalMatcher<T> | INestedMatcher<T> | ISkipMatcher<T> | (<T extends Node>(this: IReadonlyContext, node: T) => boolean | number | Iterable<number>);
16
- export declare type INestedMatcher<T extends Node> = (this: IReadonlyContext, node: T) => boolean;
17
- export declare type ISkipMatcher<T extends Node> = (this: IReadonlyContext, node: T) => number | Iterable<number> | false;
18
- export declare type ITerminalMatcher<T extends Node> = (this: IReadonlyContext, node: T) => boolean;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- export declare function concat(strings: TemplateStringsArray, values: string[]): string[];
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.concat = void 0;
4
- function concat(strings, values) {
5
- const result = [];
6
- for (let i = 0, len = values.length; i < len; i++) {
7
- result.push(strings[i]);
8
- result.push(values[i]);
9
- }
10
- result.push(strings[strings.length - 1]);
11
- return result;
12
- }
13
- exports.concat = concat;
14
- //# sourceMappingURL=concat.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"concat.js","sourceRoot":"","sources":["../../../src/utils/concat.ts"],"names":[],"mappings":";;;AAAA,SAAgB,MAAM,CAAC,OAA6B,EAAE,MAAgB;IACpE,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QACjD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;KACvB;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,MAAM,CAAA;AACf,CAAC;AARD,wBAQC"}
@@ -1,2 +0,0 @@
1
- import { INestedMatcher, ITerminalMatcher, IReadonlyContext } from '../types';
2
- export declare function matchMultiple<T extends Node>(this: IReadonlyContext, node: T, ubound: number, matcher: INestedMatcher<T> | ITerminalMatcher<T>): number;
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.matchMultiple = void 0;
4
- const extra_generator_1 = require("extra-generator");
5
- function matchMultiple(node, ubound, matcher) {
6
- let currentNode = node;
7
- for (const round of (0, extra_generator_1.countup)(1, ubound)) {
8
- if (!currentNode)
9
- return round - 1;
10
- const result = matcher.call(this, currentNode);
11
- if (result) {
12
- currentNode = this.next(currentNode);
13
- }
14
- else {
15
- return round - 1;
16
- }
17
- }
18
- return ubound;
19
- }
20
- exports.matchMultiple = matchMultiple;
21
- //# sourceMappingURL=match-multiple.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match-multiple.js","sourceRoot":"","sources":["../../../src/utils/match-multiple.ts"],"names":[],"mappings":";;;AAAA,qDAAyC;AAMzC,SAAgB,aAAa,CAE3B,IAAO,EACP,MAAc,EACd,OAAgD;IAEhD,IAAI,WAAW,GAAa,IAAI,CAAA;IAEhC,KAAK,MAAM,KAAK,IAAI,IAAA,yBAAO,EAAC,CAAC,EAAE,MAAM,CAAC,EAAE;QACtC,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,GAAG,CAAC,CAAA;QAElC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA;QAC9C,IAAI,MAAM,EAAE;YACV,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAa,CAAA;SACjD;aAAM;YACL,OAAO,KAAK,GAAG,CAAC,CAAA;SACjB;KACF;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AApBD,sCAoBC"}
@@ -1,2 +0,0 @@
1
- import { IMatcher, IReadonlyContext } from '../types';
2
- export declare function matchOneByOne<T extends Node>(context: IReadonlyContext, source: T | null, ...matchers: Array<IMatcher<T>>): boolean;
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.matchOneByOne = void 0;
4
- const types_1 = require("@blackglory/types");
5
- function matchOneByOne(context, source, ...matchers) {
6
- if (matchers.length === 0)
7
- return true;
8
- if (!source)
9
- return false;
10
- const [matcher, ...otherMatchers] = matchers;
11
- const result = Reflect.apply(matcher, context, [source]);
12
- if ((0, types_1.isBoolean)(result)) {
13
- if (result) {
14
- const nextNode = context.next(source);
15
- return matchOneByOne(context, nextNode, ...otherMatchers);
16
- }
17
- else {
18
- return false;
19
- }
20
- }
21
- if ((0, types_1.isNumber)(result)) {
22
- const distance = result;
23
- const nextNode = context.next(source, distance);
24
- return matchOneByOne(context, nextNode, ...otherMatchers);
25
- }
26
- if ((0, types_1.isIterable)(result)) {
27
- for (const distance of result) {
28
- const nextNode = context.next(source, distance);
29
- if (matchOneByOne(context, nextNode, ...otherMatchers)) {
30
- return true;
31
- }
32
- }
33
- return false;
34
- }
35
- throw new Error('Unknown return value');
36
- }
37
- exports.matchOneByOne = matchOneByOne;
38
- //# sourceMappingURL=match-one-by-one.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"match-one-by-one.js","sourceRoot":"","sources":["../../../src/utils/match-one-by-one.ts"],"names":[],"mappings":";;;AACA,6CAAmE;AAEnE,SAAgB,aAAa,CAC3B,OAAyB,EACzB,MAAgB,EAChB,GAAG,QAA4B;IAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IAEzB,MAAM,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,QAAQ,CAAA;IAE5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAA+B,CAAA;IAGtF,IAAI,IAAA,iBAAS,EAAC,MAAM,CAAC,EAAE;QACrB,IAAI,MAAM,EAAE;YACV,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAa,CAAA;YACjD,OAAO,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAA;SAC1D;aAAM;YACL,OAAO,KAAK,CAAA;SACb;KACF;IAGD,IAAI,IAAA,gBAAQ,EAAC,MAAM,CAAC,EAAE;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAA;QACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAa,CAAA;QAC3D,OAAO,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAA;KAC1D;IAGD,IAAI,IAAA,kBAAU,EAAC,MAAM,CAAC,EAAE;QACtB,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE;YAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAa,CAAA;YAC3D,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,EAAE;gBACtD,OAAO,IAAI,CAAA;aACZ;SACF;QAGD,OAAO,KAAK,CAAA;KACb;IAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzC,CAAC;AA3CD,sCA2CC"}
@@ -1,5 +0,0 @@
1
- export declare function merge<T>(target: {
2
- [key: string]: T | T[];
3
- }, source: {
4
- [key: string]: T | T[];
5
- }): void;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.merge = void 0;
4
- const types_1 = require("@blackglory/types");
5
- function merge(target, source) {
6
- for (const [key, value] of Object.entries(source)) {
7
- if (target[key]) {
8
- if ((0, types_1.isArray)(target[key])) {
9
- if ((0, types_1.isArray)(value)) {
10
- target[key] = [...target[key], ...value];
11
- }
12
- else {
13
- target[key] = [...target[key], value];
14
- }
15
- }
16
- else {
17
- if ((0, types_1.isArray)(value)) {
18
- target[key] = [target[key], ...value];
19
- }
20
- else {
21
- target[key] = [target[key], value];
22
- }
23
- }
24
- }
25
- else {
26
- target[key] = value;
27
- }
28
- }
29
- }
30
- exports.merge = merge;
31
- //# sourceMappingURL=merge.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/utils/merge.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAE3C,SAAgB,KAAK,CACnB,MAAkC,EAClC,MAAkC;IAElC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACjD,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,IAAA,eAAO,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBACxB,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAQ,EAAE,GAAG,KAAK,CAAC,CAAA;iBAChD;qBAAM;oBACL,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAQ,EAAE,KAAK,CAAC,CAAA;iBAC7C;aACF;iBAAM;gBACL,IAAI,IAAA,eAAO,EAAC,KAAK,CAAC,EAAE;oBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAM,EAAE,GAAG,KAAK,CAAC,CAAA;iBAC3C;qBAAM;oBACL,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAM,EAAE,KAAK,CAAC,CAAA;iBACxC;aACF;SACF;aAAM;YACL,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;SACpB;KACF;AACH,CAAC;AAvBD,sBAuBC"}
@@ -1 +0,0 @@
1
- export declare function nextElementSibling(node: Node, distance?: number): Node | undefined;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nextElementSibling = void 0;
4
- const ExtraDOM = require("extra-dom");
5
- function nextElementSibling(node, distance = 1) {
6
- if (distance === 0)
7
- return node;
8
- return ExtraDOM.nextElementSibling(node, distance);
9
- }
10
- exports.nextElementSibling = nextElementSibling;
11
- //# sourceMappingURL=next-element-sibling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-element-sibling.js","sourceRoot":"","sources":["../../../src/utils/next-element-sibling.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AAErC,SAAgB,kBAAkB,CAChC,IAAU,EACV,WAAmB,CAAC;IAEpB,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE/B,OAAO,QAAQ,CAAC,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AACpD,CAAC;AAPD,gDAOC"}
@@ -1 +0,0 @@
1
- export declare function nextSibling(node: Node, distance?: number): Node | undefined;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nextSibling = void 0;
4
- const ExtraDOM = require("extra-dom");
5
- function nextSibling(node, distance = 1) {
6
- if (distance === 0)
7
- return node;
8
- return ExtraDOM.nextSibling(node, distance);
9
- }
10
- exports.nextSibling = nextSibling;
11
- //# sourceMappingURL=next-sibling.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"next-sibling.js","sourceRoot":"","sources":["../../../src/utils/next-sibling.ts"],"names":[],"mappings":";;;AAAA,sCAAqC;AAErC,SAAgB,WAAW,CAAC,IAAU,EAAE,WAAmB,CAAC;IAC1D,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAE/B,OAAO,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;AAC7C,CAAC;AAJD,kCAIC"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes