@blackglory/match 0.3.6 → 0.4.0

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 (94) hide show
  1. package/README.md +21 -32
  2. package/lib/index.d.ts +17 -17
  3. package/lib/index.js +17 -37
  4. package/lib/index.js.map +1 -1
  5. package/lib/match-element.d.ts +1 -1
  6. package/lib/match-element.js +7 -11
  7. package/lib/match-element.js.map +1 -1
  8. package/lib/match.d.ts +1 -1
  9. package/lib/match.js +7 -11
  10. package/lib/match.js.map +1 -1
  11. package/lib/matchers/any-of.d.ts +1 -1
  12. package/lib/matchers/any-of.js +1 -5
  13. package/lib/matchers/any-of.js.map +1 -1
  14. package/lib/matchers/child-nodes.d.ts +1 -1
  15. package/lib/matchers/child-nodes.js +8 -11
  16. package/lib/matchers/child-nodes.js.map +1 -1
  17. package/lib/matchers/children.d.ts +1 -1
  18. package/lib/matchers/children.js +8 -11
  19. package/lib/matchers/children.js.map +1 -1
  20. package/lib/matchers/css.d.ts +1 -1
  21. package/lib/matchers/css.js +5 -9
  22. package/lib/matchers/css.js.map +1 -1
  23. package/lib/matchers/element.d.ts +1 -1
  24. package/lib/matchers/element.js +10 -14
  25. package/lib/matchers/element.js.map +1 -1
  26. package/lib/matchers/multiple.d.ts +1 -1
  27. package/lib/matchers/multiple.js +14 -17
  28. package/lib/matchers/multiple.js.map +1 -1
  29. package/lib/matchers/node.d.ts +1 -1
  30. package/lib/matchers/node.js +8 -12
  31. package/lib/matchers/node.js.map +1 -1
  32. package/lib/matchers/optional.d.ts +1 -1
  33. package/lib/matchers/optional.js +3 -7
  34. package/lib/matchers/optional.js.map +1 -1
  35. package/lib/matchers/repeat.d.ts +1 -1
  36. package/lib/matchers/repeat.js +6 -10
  37. package/lib/matchers/repeat.js.map +1 -1
  38. package/lib/matchers/tap.d.ts +1 -1
  39. package/lib/matchers/tap.js +1 -5
  40. package/lib/matchers/tap.js.map +1 -1
  41. package/lib/matchers/text-content-equals.d.ts +1 -1
  42. package/lib/matchers/text-content-equals.js +3 -7
  43. package/lib/matchers/text-content-equals.js.map +1 -1
  44. package/lib/matchers/text-content-includes.d.ts +1 -1
  45. package/lib/matchers/text-content-includes.js +3 -7
  46. package/lib/matchers/text-content-includes.js.map +1 -1
  47. package/lib/matchers/text-content-matches.d.ts +1 -1
  48. package/lib/matchers/text-content-matches.js +3 -7
  49. package/lib/matchers/text-content-matches.js.map +1 -1
  50. package/lib/matchers/text-node.d.ts +1 -1
  51. package/lib/matchers/text-node.js +10 -14
  52. package/lib/matchers/text-node.js.map +1 -1
  53. package/lib/matchers/xpath.d.ts +1 -1
  54. package/lib/matchers/xpath.js +7 -11
  55. package/lib/matchers/xpath.js.map +1 -1
  56. package/lib/types.d.ts +4 -4
  57. package/lib/types.js +1 -2
  58. package/lib/utils/concat.js +1 -5
  59. package/lib/utils/concat.js.map +1 -1
  60. package/lib/utils/match-multiple.d.ts +4 -1
  61. package/lib/utils/match-multiple.js +6 -7
  62. package/lib/utils/match-multiple.js.map +1 -1
  63. package/lib/utils/match-one-by-one.d.ts +1 -1
  64. package/lib/utils/match-one-by-one.js +9 -9
  65. package/lib/utils/match-one-by-one.js.map +1 -1
  66. package/lib/utils/merge-in-place.d.ts +1 -5
  67. package/lib/utils/merge-in-place.js +5 -9
  68. package/lib/utils/merge-in-place.js.map +1 -1
  69. package/lib/utils/next-element-sibling.js +2 -6
  70. package/lib/utils/next-element-sibling.js.map +1 -1
  71. package/lib/utils/next-sibling.js +2 -6
  72. package/lib/utils/next-sibling.js.map +1 -1
  73. package/package.json +30 -29
  74. package/src/index.ts +17 -17
  75. package/src/match-element.ts +3 -3
  76. package/src/match.ts +3 -3
  77. package/src/matchers/any-of.ts +1 -1
  78. package/src/matchers/child-nodes.ts +4 -4
  79. package/src/matchers/children.ts +4 -4
  80. package/src/matchers/css.ts +3 -3
  81. package/src/matchers/element.ts +4 -4
  82. package/src/matchers/multiple.ts +3 -3
  83. package/src/matchers/node.ts +4 -4
  84. package/src/matchers/optional.ts +2 -2
  85. package/src/matchers/repeat.ts +3 -3
  86. package/src/matchers/tap.ts +1 -1
  87. package/src/matchers/text-content-equals.ts +2 -2
  88. package/src/matchers/text-content-includes.ts +2 -2
  89. package/src/matchers/text-content-matches.ts +2 -2
  90. package/src/matchers/text-node.ts +4 -4
  91. package/src/matchers/xpath.ts +4 -4
  92. package/src/utils/match-multiple.ts +1 -1
  93. package/src/utils/match-one-by-one.ts +2 -2
  94. package/src/utils/merge-in-place.ts +3 -3
@@ -1,24 +1,21 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.multiple = exports.Range = void 0;
4
- const extra_generator_1 = require("extra-generator");
5
- const errors_1 = require("@blackglory/errors");
6
- const match_multiple_1 = require("../utils/match-multiple");
7
- var Range;
1
+ import { countup } from 'extra-generator';
2
+ import { assert } from '@blackglory/prelude';
3
+ import { matchMultiple } from "../utils/match-multiple.js";
4
+ export var Range;
8
5
  (function (Range) {
9
6
  Range[Range["Min"] = 0] = "Min";
10
7
  Range[Range["Max"] = 1] = "Max";
11
- })(Range = exports.Range || (exports.Range = {}));
12
- function multiple([min, max], matcher, options = { greedy: true }) {
13
- (0, errors_1.assert)(Number.isInteger(min), 'parameter min must be an integer');
14
- (0, errors_1.assert)(Number.isInteger(max) || max === Infinity, 'parameter max must be an integer or Infinity');
15
- (0, errors_1.assert)(min >= 0, 'parameter min must be greater than or equal to 0');
16
- (0, errors_1.assert)(min <= max, 'parameter max must be greater than or equal to min');
8
+ })(Range || (Range = {}));
9
+ export function multiple([min, max], matcher, options = { greedy: true }) {
10
+ assert(Number.isInteger(min), 'parameter min must be an integer');
11
+ assert(Number.isInteger(max) || max === Infinity, 'parameter max must be an integer or Infinity');
12
+ assert(min >= 0, 'parameter min must be greater than or equal to 0');
13
+ assert(min <= max, 'parameter max must be greater than or equal to min');
17
14
  return function* (node) {
18
15
  if (options.greedy) {
19
16
  let ubound = max;
20
17
  while (true) {
21
- const round = match_multiple_1.matchMultiple.call(this, node, ubound, matcher);
18
+ const round = matchMultiple.call(this, node, ubound, matcher);
22
19
  if (round < min)
23
20
  break;
24
21
  yield round;
@@ -28,8 +25,9 @@ function multiple([min, max], matcher, options = { greedy: true }) {
28
25
  }
29
26
  }
30
27
  else {
31
- for (const ubound of (0, extra_generator_1.countup)(min, max)) {
32
- const result = match_multiple_1.matchMultiple.call(this, node, ubound, matcher);
28
+ for (const ubound of countup(min, max)) {
29
+ const result = matchMultiple.call(this, node, ubound, matcher);
30
+ // 如果匹配的节点数量少于ubound, 说明匹配失败, 即使尝试更长的匹配也不会成功.
33
31
  if (result < ubound)
34
32
  break;
35
33
  if (result === ubound)
@@ -38,5 +36,4 @@ function multiple([min, max], matcher, options = { greedy: true }) {
38
36
  }
39
37
  };
40
38
  }
41
- exports.multiple = multiple;
42
39
  //# sourceMappingURL=multiple.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple.js","sourceRoot":"","sources":["../../src/matchers/multiple.ts"],"names":[],"mappings":";;;AACA,qDAAyC;AACzC,+CAA2C;AAC3C,0DAAqD;AAErD,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,+BAAO,CAAA;IACP,+BAAO,CAAA;AACT,CAAC,EAHW,KAAK,GAAL,aAAK,KAAL,aAAK,QAGhB;AAOD,SAAgB,QAAQ,CACtB,CAAC,GAAG,EAAE,GAAG,CAA6B,EACtC,OAAgD,EAChD,UAA4B,EAAE,MAAM,EAAE,IAAI,EAAE;IAE5C,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAA;IACjE,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE,8CAA8C,CAAC,CAAA;IACjG,IAAA,eAAM,EAAC,GAAG,IAAI,CAAC,EAAE,kDAAkD,CAAC,CAAA;IACpE,IAAA,eAAM,EAAC,GAAG,IAAI,GAAG,EAAE,oDAAoD,CAAC,CAAA;IAExE,OAAO,QAAQ,CAAC,EAA0B,IAAO;QAC/C,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,MAAM,GAAG,GAAG,CAAA;YAChB,OAAO,IAAI,EAAE;gBACX,MAAM,KAAK,GAAG,8BAAa,CAAC,IAAI,CAC9B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAwD,CACzD,CAAA;gBAED,IAAI,KAAK,GAAG,GAAG;oBAAE,MAAK;gBACtB,MAAM,KAAK,CAAA;gBAEX,MAAM,GAAG,KAAK,GAAG,CAAC,CAAA;gBAClB,IAAI,MAAM,GAAG,GAAG;oBAAE,MAAK;aACxB;SACF;aAAM;YACL,KAAK,MAAM,MAAM,IAAI,IAAA,yBAAO,EAAC,GAAG,EAAE,GAAG,CAAC,EAAE;gBACtC,MAAM,MAAM,GAAG,8BAAa,CAAC,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAsD,CACvD,CAAA;gBAGD,IAAI,MAAM,GAAG,MAAM;oBAAE,MAAK;gBAE1B,IAAI,MAAM,KAAK,MAAM;oBAAE,MAAM,MAAM,CAAA;aACpC;SACF;IACH,CAAC,CAAA;AACH,CAAC;AA3CD,4BA2CC"}
1
+ {"version":3,"file":"multiple.js","sourceRoot":"","sources":["../../src/matchers/multiple.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,mCAAgC;AAExD,MAAM,CAAN,IAAY,KAGX;AAHD,WAAY,KAAK;IACf,+BAAO,CAAA;IACP,+BAAO,CAAA;AACT,CAAC,EAHW,KAAK,KAAL,KAAK,QAGhB;AAOD,MAAM,UAAU,QAAQ,CACtB,CAAC,GAAG,EAAE,GAAG,CAA6B,EACtC,OAAgD,EAChD,UAA4B,EAAE,MAAM,EAAE,IAAI,EAAE;IAE5C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAA;IACjE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,QAAQ,EAAE,8CAA8C,CAAC,CAAA;IACjG,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,kDAAkD,CAAC,CAAA;IACpE,MAAM,CAAC,GAAG,IAAI,GAAG,EAAE,oDAAoD,CAAC,CAAA;IAExE,OAAO,QAAQ,CAAC,EAA0B,IAAO;QAC/C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,IAAI,MAAM,GAAG,GAAG,CAAA;YAChB,OAAO,IAAI,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAC9B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAwD,CACzD,CAAA;gBAED,IAAI,KAAK,GAAG,GAAG;oBAAE,MAAK;gBACtB,MAAM,KAAK,CAAA;gBAEX,MAAM,GAAG,KAAK,GAAG,CAAC,CAAA;gBAClB,IAAI,MAAM,GAAG,GAAG;oBAAE,MAAK;YACzB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,OAAsD,CACvD,CAAA;gBAED,6CAA6C;gBAC7C,IAAI,MAAM,GAAG,MAAM;oBAAE,MAAK;gBAE1B,IAAI,MAAM,KAAK,MAAM;oBAAE,MAAM,MAAM,CAAA;YACrC,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { INestedMatcher, ITerminalMatcher } from '../types';
1
+ import { INestedMatcher, ITerminalMatcher } from "../types.js";
2
2
  export declare function node(strings: TemplateStringsArray, ...values: string[]): (...matchers: Array<INestedMatcher<Node> | ITerminalMatcher<Node>>) => INestedMatcher<Node>;
3
3
  export declare function node(name: string, ...matchers: Array<INestedMatcher<Node> | ITerminalMatcher<Node>>): INestedMatcher<Node>;
4
4
  export declare function node(...matchers: Array<INestedMatcher<Node> | ITerminalMatcher<Node>>): INestedMatcher<Node>;
@@ -1,21 +1,18 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.node = void 0;
4
- const types_1 = require("@blackglory/types");
5
- const concat_1 = require("../utils/concat");
6
- const merge_in_place_1 = require("../utils/merge-in-place");
7
- function node(...args) {
8
- if ((0, types_1.isArray)(args[0])) {
1
+ import { isArray, isString } from '@blackglory/prelude';
2
+ import { concat } from "../utils/concat.js";
3
+ import { mergeInPlace } from "../utils/merge-in-place.js";
4
+ export function node(...args) {
5
+ if (isArray(args[0])) {
9
6
  const [strings, ...values] = args;
10
- const name = (0, concat_1.concat)(strings, values).join('');
7
+ const name = concat(strings, values).join('');
11
8
  return (...matchers) => node(name, ...matchers);
12
9
  }
13
- if ((0, types_1.isString)(args[0])) {
10
+ if (isString(args[0])) {
14
11
  const [name, ...matchers] = args;
15
12
  return function (_node) {
16
13
  const result = node(...matchers).call(this, _node);
17
14
  if (result) {
18
- (0, merge_in_place_1.mergeInPlace)(this.collection, { [name]: _node });
15
+ mergeInPlace(this.collection, { [name]: _node });
19
16
  }
20
17
  return result;
21
18
  };
@@ -27,5 +24,4 @@ function node(...args) {
27
24
  return matchers.every(match => match.call(this, node));
28
25
  };
29
26
  }
30
- exports.node = node;
31
27
  //# sourceMappingURL=node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/matchers/node.ts"],"names":[],"mappings":";;;AACA,6CAAqD;AACrD,0CAAsC;AACtC,0DAAoD;AAapD,SAAgB,IAAI,CAAC,GAAG,IAG6C;IAEnE,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,QAA8D,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAA;KACtG;IAED,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,GACvB,IAAyF,CAAA;QAE3F,OAAO,UAAkC,KAAW;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAClD,IAAI,MAAM,EAAE;gBACV,IAAA,6BAAY,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;aACjD;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;KACF;IAED,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAA2E,CAAA;IAEjG,OAAO,UAAkC,IAAU;QACjD,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;AAjCD,oBAiCC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../src/matchers/node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,YAAY,EAAE,mCAAgC;AAavD,MAAM,UAAU,IAAI,CAAC,GAAG,IAG6C;IAEnE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GACxB,IAA4D,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAE7C,OAAO,CAAC,GAAG,QAA8D,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,CAAA;IACvG,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,GACvB,IAAyF,CAAA;QAE3F,OAAO,UAAkC,KAAW;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAClD,IAAI,MAAM,EAAE,CAAC;gBACX,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;YAClD,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAA2E,CAAA;IAEjG,OAAO,UAAkC,IAAU;QACjD,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"}
@@ -1,2 +1,2 @@
1
- import { INestedMatcher, ITerminalMatcher, ISkipMatcher } from '../types';
1
+ import { INestedMatcher, ITerminalMatcher, ISkipMatcher } from "../types.js";
2
2
  export declare function optional<T extends Node>(matcher: INestedMatcher<T> | ITerminalMatcher<T>): ISkipMatcher<T>;
@@ -1,9 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.optional = void 0;
4
- const multiple_1 = require("./multiple");
5
- function optional(matcher) {
6
- return (0, multiple_1.multiple)([0, 1], matcher, { greedy: true });
1
+ import { multiple } from './multiple.js';
2
+ export function optional(matcher) {
3
+ return multiple([0, 1], matcher, { greedy: true });
7
4
  }
8
- exports.optional = optional;
9
5
  //# sourceMappingURL=optional.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/matchers/optional.ts"],"names":[],"mappings":";;;AACA,yCAAqC;AAErC,SAAgB,QAAQ,CAAiB,OAAgD;IACvF,OAAO,IAAA,mBAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,CAAC;AAFD,4BAEC"}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/matchers/optional.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,UAAU,QAAQ,CAAiB,OAAgD;IACvF,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;AACpD,CAAC"}
@@ -1,2 +1,2 @@
1
- import { INestedMatcher, ITerminalMatcher, ISkipMatcher } from '../types';
1
+ import { INestedMatcher, ITerminalMatcher, ISkipMatcher } from "../types.js";
2
2
  export declare function repeat<T extends Node>(times: number, matcher: INestedMatcher<T> | ITerminalMatcher<T>): ISkipMatcher<T>;
@@ -1,13 +1,10 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.repeat = void 0;
4
- const errors_1 = require("@blackglory/errors");
5
- const match_multiple_1 = require("../utils/match-multiple");
6
- function repeat(times, matcher) {
7
- (0, errors_1.assert)(Number.isInteger(times), 'parameter times must be an integer');
8
- (0, errors_1.assert)(times >= 0, 'parameter number must be greater than or equal to 0');
1
+ import { assert } from '@blackglory/prelude';
2
+ import { matchMultiple } from "../utils/match-multiple.js";
3
+ export function repeat(times, matcher) {
4
+ assert(Number.isInteger(times), 'parameter times must be an integer');
5
+ assert(times >= 0, 'parameter number must be greater than or equal to 0');
9
6
  return function (node) {
10
- const result = match_multiple_1.matchMultiple.call(this, node, times, matcher);
7
+ const result = matchMultiple.call(this, node, times, matcher);
11
8
  if (result === times) {
12
9
  return times;
13
10
  }
@@ -16,5 +13,4 @@ function repeat(times, matcher) {
16
13
  }
17
14
  };
18
15
  }
19
- exports.repeat = repeat;
20
16
  //# sourceMappingURL=repeat.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../src/matchers/repeat.ts"],"names":[],"mappings":";;;AACA,+CAA2C;AAC3C,0DAAqD;AAErD,SAAgB,MAAM,CACpB,KAAa,EACb,OAAgD;IAEhD,IAAA,eAAM,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrE,IAAA,eAAM,EAAC,KAAK,IAAI,CAAC,EAAE,qDAAqD,CAAC,CAAA;IAEzE,OAAO,UAAkC,IAAO;QAC9C,MAAM,MAAM,GAAG,8BAAa,CAAC,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAwD,CACzD,CAAA;QACD,IAAI,MAAM,KAAK,KAAK,EAAE;YACpB,OAAO,KAAK,CAAA;SACb;aAAM;YACL,OAAO,KAAK,CAAA;SACb;IACH,CAAC,CAAA;AACH,CAAC;AApBD,wBAoBC"}
1
+ {"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../src/matchers/repeat.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,mCAAgC;AAExD,MAAM,UAAU,MAAM,CACpB,KAAa,EACb,OAAgD;IAEhD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,oCAAoC,CAAC,CAAA;IACrE,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE,qDAAqD,CAAC,CAAA;IAEzE,OAAO,UAAkC,IAAO;QAC9C,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAC/B,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,OAAwD,CACzD,CAAA;QACD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACrB,OAAO,KAAK,CAAA;QACd,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -1,2 +1,2 @@
1
- import { IReadonlyContext, IMatcher } from '../types';
1
+ import { IReadonlyContext, IMatcher } from "../types.js";
2
2
  export declare function tap<T extends Node, U extends ReturnType<IMatcher<any>>>(matcher: (this: IReadonlyContext, node: T) => U, callback: (value: U) => void): (this: IReadonlyContext, node: T) => U;
@@ -1,12 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tap = void 0;
4
- function tap(matcher, callback) {
1
+ export function tap(matcher, callback) {
5
2
  return function (node) {
6
3
  const result = matcher.call(this, node);
7
4
  callback(result);
8
5
  return result;
9
6
  };
10
7
  }
11
- exports.tap = tap;
12
8
  //# sourceMappingURL=tap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/matchers/tap.ts"],"names":[],"mappings":";;;AAEA,SAAgB,GAAG,CACjB,OAA+C,EAC/C,QAA4B;IAE5B,OAAO,UAAkC,IAAO;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC;AATD,kBASC"}
1
+ {"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/matchers/tap.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,CACjB,OAA+C,EAC/C,QAA4B;IAE5B,OAAO,UAAkC,IAAO;QAC9C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAChB,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ITerminalMatcher } from '../types';
1
+ import { ITerminalMatcher } from "../types.js";
2
2
  interface ITextContentEqualsOptions {
3
3
  caseSensitive?: boolean;
4
4
  trim?: boolean;
@@ -1,10 +1,7 @@
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 } = {}) {
1
+ import { isNull } from '@blackglory/prelude';
2
+ export function textContentEquals(text, { caseSensitive = true, trim = false } = {}) {
6
3
  return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
4
+ if (isNull(node.textContent))
8
5
  return false;
9
6
  let textContent = node.textContent;
10
7
  if (!caseSensitive) {
@@ -16,5 +13,4 @@ function textContentEquals(text, { caseSensitive = true, trim = false } = {}) {
16
13
  return textContent === text;
17
14
  };
18
15
  }
19
- exports.textContentEquals = textContentEquals;
20
16
  //# sourceMappingURL=text-content-equals.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"text-content-equals.js","sourceRoot":"","sources":["../../src/matchers/text-content-equals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAO5C,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,EACE,aAAa,GAAG,IAAI,EACpB,IAAI,GAAG,KAAK,KACiB,EAAE;IAEjC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;YACvC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC3B,CAAC;QACD,IAAI,IAAI;YAAE,WAAW,GAAG,WAAW,CAAC,IAAI,EAAE,CAAA;QAE1C,OAAO,WAAW,KAAK,IAAI,CAAA;IAC7B,CAAC,CAAA;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { ITerminalMatcher } from '../types';
1
+ import { ITerminalMatcher } from "../types.js";
2
2
  interface ITextContentIncludesOptions {
3
3
  caseSensitive?: boolean;
4
4
  trim?: boolean;
@@ -1,10 +1,7 @@
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 } = {}) {
1
+ import { isNull } from '@blackglory/prelude';
2
+ export function textContentIncludes(searchString, { caseSensitive = true, trim = false } = {}) {
6
3
  return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
4
+ if (isNull(node.textContent))
8
5
  return false;
9
6
  let textContent = node.textContent;
10
7
  if (!caseSensitive) {
@@ -16,5 +13,4 @@ function textContentIncludes(searchString, { caseSensitive = true, trim = false
16
13
  return textContent.includes(searchString);
17
14
  };
18
15
  }
19
- exports.textContentIncludes = textContentIncludes;
20
16
  //# sourceMappingURL=text-content-includes.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"text-content-includes.js","sourceRoot":"","sources":["../../src/matchers/text-content-includes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAO5C,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,EACE,aAAa,GAAG,IAAI,EACpB,IAAI,GAAG,KAAK,KACmB,EAAE;IAEnC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,KAAK,CAAA;QAE1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;QAClC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,WAAW,GAAG,WAAW,CAAC,WAAW,EAAE,CAAA;YACvC,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAA;QAC3C,CAAC;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"}
@@ -1,4 +1,4 @@
1
- import { ITerminalMatcher } from '../types';
1
+ import { ITerminalMatcher } from "../types.js";
2
2
  interface ITextContentMatchesOptions {
3
3
  trim?: boolean;
4
4
  }
@@ -1,10 +1,7 @@
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 } = {}) {
1
+ import { isNull } from '@blackglory/prelude';
2
+ export function textContentMatches(pattern, { trim = false } = {}) {
6
3
  return (node) => {
7
- if ((0, types_1.isNull)(node.textContent))
4
+ if (isNull(node.textContent))
8
5
  return false;
9
6
  let textContent = node.textContent;
10
7
  if (trim)
@@ -12,5 +9,4 @@ function textContentMatches(pattern, { trim = false } = {}) {
12
9
  return pattern.test(textContent);
13
10
  };
14
11
  }
15
- exports.textContentMatches = textContentMatches;
16
12
  //# sourceMappingURL=text-content-matches.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"text-content-matches.js","sourceRoot":"","sources":["../../src/matchers/text-content-matches.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAM5C,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,EAAE,IAAI,GAAG,KAAK,KAAiC,EAAE;IAEjD,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,IAAI,MAAM,CAAC,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"}
@@ -1,4 +1,4 @@
1
- import { INestedMatcher, ITerminalMatcher } from '../types';
1
+ import { INestedMatcher, ITerminalMatcher } from "../types.js";
2
2
  export declare function textNode(strings: TemplateStringsArray, ...values: string[]): (...matchers: Array<ITerminalMatcher<Node>>) => INestedMatcher<Node>;
3
3
  export declare function textNode(name: string, ...matchers: Array<ITerminalMatcher<Node>>): INestedMatcher<Node>;
4
4
  export declare function textNode(...matchers: Array<ITerminalMatcher<Node>>): INestedMatcher<Node>;
@@ -1,34 +1,30 @@
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_in_place_1 = require("../utils/merge-in-place");
8
- function textNode(...args) {
9
- if ((0, types_1.isArray)(args[0])) {
1
+ import { isArray, isString } from '@blackglory/prelude';
2
+ import { concat } from "../utils/concat.js";
3
+ import { isntTextNode } from 'extra-dom';
4
+ import { mergeInPlace } from "../utils/merge-in-place.js";
5
+ export function textNode(...args) {
6
+ if (isArray(args[0])) {
10
7
  const [strings, ...values] = args;
11
- const name = (0, concat_1.concat)(strings, values).join('');
8
+ const name = concat(strings, values).join('');
12
9
  return (...matchers) => textNode(name, ...matchers);
13
10
  }
14
- if ((0, types_1.isString)(args[0])) {
11
+ if (isString(args[0])) {
15
12
  const [name, ...matchers] = args;
16
13
  return function (node) {
17
14
  const result = textNode(...matchers).call(this, node);
18
15
  if (result) {
19
- (0, merge_in_place_1.mergeInPlace)(this.collection, { [name]: node });
16
+ mergeInPlace(this.collection, { [name]: node });
20
17
  }
21
18
  return result;
22
19
  };
23
20
  }
24
21
  const [...matchers] = args;
25
22
  return function (node) {
26
- if ((0, extra_dom_1.isntTextNode)(node))
23
+ if (isntTextNode(node))
27
24
  return false;
28
25
  if (matchers.length === 0)
29
26
  return true;
30
27
  return matchers.every(match => match.call(this, node));
31
28
  };
32
29
  }
33
- exports.textNode = textNode;
34
30
  //# sourceMappingURL=text-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"text-node.js","sourceRoot":"","sources":["../../src/matchers/text-node.ts"],"names":[],"mappings":";;;AACA,6CAAqD;AACrD,0CAAsC;AACtC,yCAAwC;AACxC,0DAAoD;AAapD,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,6BAAY,EAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;aAChD;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
+ {"version":3,"file":"text-node.js","sourceRoot":"","sources":["../../src/matchers/text-node.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,mCAAgC;AAavD,MAAM,UAAU,QAAQ,CAAC,GAAG,IAGkB;IAE5C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GACxB,IAA4D,CAAA;QAC9D,MAAM,IAAI,GAAG,MAAM,CAAC,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;IACpF,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,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,CAAC;gBACX,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;YACjD,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,IAAoD,CAAA;IAE1E,OAAO,UAAkC,IAAU;QACjD,IAAI,YAAY,CAAC,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"}
@@ -1,3 +1,3 @@
1
- import { ITerminalMatcher } from '../types';
1
+ import { ITerminalMatcher } from "../types.js";
2
2
  export declare function xpath(strings: TemplateStringsArray, ...values: string[]): ITerminalMatcher<Node>;
3
3
  export declare function xpath(experssion: string): ITerminalMatcher<Node>;
@@ -1,27 +1,23 @@
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");
1
+ import { isString } from '@blackglory/prelude';
2
+ import { concat } from "../utils/concat.js";
3
+ import { assert } from '@blackglory/prelude';
7
4
  const UNORDERED_NODE_ITERATOR_TYPE = 'XPathResult' in globalThis
8
5
  ? XPathResult.UNORDERED_NODE_ITERATOR_TYPE
9
6
  : 4;
10
- function xpath(...args) {
11
- if ((0, types_1.isString)(args[0])) {
7
+ export function xpath(...args) {
8
+ if (isString(args[0])) {
12
9
  const [expression] = args;
13
- (0, errors_1.assert)(expression.startsWith('//*'), 'XPath expressions must start with "//*"');
10
+ assert(expression.startsWith('//*'), 'XPath expressions must start with "//*"');
14
11
  return function (node) {
15
12
  return xpathMatches(this.document, expression, node);
16
13
  };
17
14
  }
18
15
  else {
19
16
  const [strings, ...values] = args;
20
- const expression = (0, concat_1.concat)(strings, values).join('');
17
+ const expression = concat(strings, values).join('');
21
18
  return xpath(expression);
22
19
  }
23
20
  }
24
- exports.xpath = xpath;
25
21
  function xpathMatches(document, expression, node) {
26
22
  const iterator = document.evaluate(expression, node, null, UNORDERED_NODE_ITERATOR_TYPE, null);
27
23
  let value;
@@ -1 +1 @@
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
+ {"version":3,"file":"xpath.js","sourceRoot":"","sources":["../../src/matchers/xpath.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,2BAAwB;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,MAAM,4BAA4B,GAChC,aAAa,IAAI,UAAU;IAC3B,CAAC,CAAC,WAAW,CAAC,4BAA4B;IAC1C,CAAC,CAAC,CAAC,CAAA;AASL,MAAM,UAAU,KAAK,CAAC,GAAG,IAE6B;IAEpD,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAA;QACzB,MAAM,CAAC,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;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAA;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QAEnD,OAAO,KAAK,CAAC,UAAU,CAAC,CAAA;IAC1B,CAAC;AACH,CAAC;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,CAAC;QACjD,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;IACjC,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
package/lib/types.d.ts CHANGED
@@ -12,7 +12,7 @@ export interface IReadonlyContext {
12
12
  readonly [name: string]: Node | Node[];
13
13
  };
14
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;
15
+ export type IMatcher<T extends Node> = ITerminalMatcher<T> | INestedMatcher<T> | ISkipMatcher<T> | (<T extends Node>(this: IReadonlyContext, node: T) => boolean | number | Iterable<number>);
16
+ export type INestedMatcher<T extends Node> = (this: IReadonlyContext, node: T) => boolean;
17
+ export type ISkipMatcher<T extends Node> = (this: IReadonlyContext, node: T) => number | Iterable<number> | false;
18
+ export type ITerminalMatcher<T extends Node> = (this: IReadonlyContext, node: T) => boolean;
package/lib/types.js CHANGED
@@ -1,3 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ export {};
3
2
  //# sourceMappingURL=types.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.concat = void 0;
4
- function concat(strings, values) {
1
+ export function concat(strings, values) {
5
2
  const result = [];
6
3
  for (let i = 0, len = values.length; i < len; i++) {
7
4
  result.push(strings[i]);
@@ -10,5 +7,4 @@ function concat(strings, values) {
10
7
  result.push(strings[strings.length - 1]);
11
8
  return result;
12
9
  }
13
- exports.concat = concat;
14
10
  //# sourceMappingURL=concat.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"concat.js","sourceRoot":"","sources":["../../src/utils/concat.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,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,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACxB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,2 +1,5 @@
1
- import { INestedMatcher, ITerminalMatcher, IReadonlyContext } from '../types';
1
+ import { INestedMatcher, ITerminalMatcher, IReadonlyContext } from "../types.js";
2
+ /**
3
+ * @returns {number} 返回值为成功匹配的元素个数, 当此值等于ubound时, 代表匹配成功.
4
+ */
2
5
  export declare function matchMultiple<T extends Node>(this: IReadonlyContext, node: T, ubound: number, matcher: INestedMatcher<T> | ITerminalMatcher<T>): number;
@@ -1,10 +1,10 @@
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) {
1
+ import { countup } from 'extra-generator';
2
+ /**
3
+ * @returns {number} 返回值为成功匹配的元素个数, 当此值等于ubound时, 代表匹配成功.
4
+ */
5
+ export function matchMultiple(node, ubound, matcher) {
6
6
  let currentNode = node;
7
- for (const round of (0, extra_generator_1.countup)(1, ubound)) {
7
+ for (const round of countup(1, ubound)) {
8
8
  if (!currentNode)
9
9
  return round - 1;
10
10
  const result = matcher.call(this, currentNode);
@@ -17,5 +17,4 @@ function matchMultiple(node, ubound, matcher) {
17
17
  }
18
18
  return ubound;
19
19
  }
20
- exports.matchMultiple = matchMultiple;
21
20
  //# sourceMappingURL=match-multiple.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"match-multiple.js","sourceRoot":"","sources":["../../src/utils/match-multiple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAGzC;;GAEG;AACH,MAAM,UAAU,aAAa,CAE3B,IAAO,EACP,MAAc,EACd,OAAgD;IAEhD,IAAI,WAAW,GAAa,IAAI,CAAA;IAEhC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QACvC,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,CAAC;YACX,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAa,CAAA;QAClD,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,GAAG,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1,2 +1,2 @@
1
- import { IMatcher, IReadonlyContext } from '../types';
1
+ import { IMatcher, IReadonlyContext } from "../types.js";
2
2
  export declare function matchOneByOne<T extends Node>(context: IReadonlyContext, source: T | null, ...matchers: Array<IMatcher<T>>): boolean;
@@ -1,15 +1,13 @@
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) {
1
+ import { isBoolean, isNumber, isIterable } from '@blackglory/prelude';
2
+ export function matchOneByOne(context, source, ...matchers) {
6
3
  if (matchers.length === 0)
7
4
  return true;
8
5
  if (!source)
9
6
  return false;
10
7
  const [matcher, ...otherMatchers] = matchers;
11
8
  const result = Reflect.apply(matcher, context, [source]);
12
- if ((0, types_1.isBoolean)(result)) {
9
+ // TerminalMatcher
10
+ if (isBoolean(result)) {
13
11
  if (result) {
14
12
  const nextNode = context.next(source);
15
13
  return matchOneByOne(context, nextNode, ...otherMatchers);
@@ -18,21 +16,23 @@ function matchOneByOne(context, source, ...matchers) {
18
16
  return false;
19
17
  }
20
18
  }
21
- if ((0, types_1.isNumber)(result)) {
19
+ // 此处一定是成功匹配, 因为SkipMatcher在失败时会返回false.
20
+ if (isNumber(result)) {
22
21
  const distance = result;
23
22
  const nextNode = context.next(source, distance);
24
23
  return matchOneByOne(context, nextNode, ...otherMatchers);
25
24
  }
26
- if ((0, types_1.isIterable)(result)) {
25
+ // SkipMatcher返回Iterable意味着存在多种可能性, 可能出现失败回溯.
26
+ if (isIterable(result)) {
27
27
  for (const distance of result) {
28
28
  const nextNode = context.next(source, distance);
29
29
  if (matchOneByOne(context, nextNode, ...otherMatchers)) {
30
30
  return true;
31
31
  }
32
32
  }
33
+ // 尝试了所有可能性, 未发现可以匹配的结果
33
34
  return false;
34
35
  }
35
36
  throw new Error('Unknown return value');
36
37
  }
37
- exports.matchOneByOne = matchOneByOne;
38
38
  //# sourceMappingURL=match-one-by-one.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"match-one-by-one.js","sourceRoot":"","sources":["../../src/utils/match-one-by-one.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErE,MAAM,UAAU,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;IAEtF,kBAAkB;IAClB,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAa,CAAA;YACjD,OAAO,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,CAAA;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,IAAI,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,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;IAC3D,CAAC;IAED,6CAA6C;IAC7C,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvB,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAa,CAAA;YAC3D,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACzC,CAAC"}
@@ -1,5 +1 @@
1
- export declare function mergeInPlace<T>(target: {
2
- [key: string]: T | T[];
3
- }, source: {
4
- [key: string]: T | T[];
5
- }): void;
1
+ export declare function mergeInPlace<T>(target: Record<string, T | T[]>, source: Record<string, T | T[]>): void;