@interactors/core 1.0.1 → 1.1.0-alpha.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.
Files changed (94) hide show
  1. package/esm/src/constructor.d.ts.map +1 -1
  2. package/esm/src/constructor.js +8 -1
  3. package/esm/src/constructor.js.map +1 -1
  4. package/esm/src/errors.d.ts.map +1 -1
  5. package/esm/src/errors.js.map +1 -1
  6. package/esm/src/index.d.ts +3 -0
  7. package/esm/src/index.d.ts.map +1 -1
  8. package/esm/src/index.js +2 -0
  9. package/esm/src/index.js.map +1 -1
  10. package/esm/src/matcher.d.ts +4 -0
  11. package/esm/src/matcher.d.ts.map +1 -1
  12. package/esm/src/matcher.js +8 -0
  13. package/esm/src/matcher.js.map +1 -1
  14. package/esm/src/matchers/and.d.ts.map +1 -1
  15. package/esm/src/matchers/and.js +2 -1
  16. package/esm/src/matchers/and.js.map +1 -1
  17. package/esm/src/matchers/every.d.ts.map +1 -1
  18. package/esm/src/matchers/every.js +2 -1
  19. package/esm/src/matchers/every.js.map +1 -1
  20. package/esm/src/matchers/including.d.ts.map +1 -1
  21. package/esm/src/matchers/including.js +2 -1
  22. package/esm/src/matchers/including.js.map +1 -1
  23. package/esm/src/matchers/matching.d.ts.map +1 -1
  24. package/esm/src/matchers/matching.js +2 -1
  25. package/esm/src/matchers/matching.js.map +1 -1
  26. package/esm/src/matchers/not.d.ts.map +1 -1
  27. package/esm/src/matchers/not.js +2 -1
  28. package/esm/src/matchers/not.js.map +1 -1
  29. package/esm/src/matchers/or.d.ts.map +1 -1
  30. package/esm/src/matchers/or.js +2 -1
  31. package/esm/src/matchers/or.js.map +1 -1
  32. package/esm/src/matchers/some.d.ts.map +1 -1
  33. package/esm/src/matchers/some.js +2 -1
  34. package/esm/src/matchers/some.js.map +1 -1
  35. package/esm/src/merge-objects.d.ts +1 -1
  36. package/esm/src/merge-objects.d.ts.map +1 -1
  37. package/esm/src/metadata.d.ts +50 -0
  38. package/esm/src/metadata.d.ts.map +1 -0
  39. package/esm/src/metadata.js +96 -0
  40. package/esm/src/metadata.js.map +1 -0
  41. package/package.json +1 -1
  42. package/script/src/constructor.d.ts.map +1 -1
  43. package/script/src/constructor.js +8 -1
  44. package/script/src/constructor.js.map +1 -1
  45. package/script/src/errors.d.ts.map +1 -1
  46. package/script/src/errors.js.map +1 -1
  47. package/script/src/index.d.ts +3 -0
  48. package/script/src/index.d.ts.map +1 -1
  49. package/script/src/index.js +9 -1
  50. package/script/src/index.js.map +1 -1
  51. package/script/src/matcher.d.ts +4 -0
  52. package/script/src/matcher.d.ts.map +1 -1
  53. package/script/src/matcher.js +9 -0
  54. package/script/src/matcher.js.map +1 -1
  55. package/script/src/matchers/and.d.ts.map +1 -1
  56. package/script/src/matchers/and.js +1 -0
  57. package/script/src/matchers/and.js.map +1 -1
  58. package/script/src/matchers/every.d.ts.map +1 -1
  59. package/script/src/matchers/every.js +1 -0
  60. package/script/src/matchers/every.js.map +1 -1
  61. package/script/src/matchers/including.d.ts.map +1 -1
  62. package/script/src/matchers/including.js +1 -0
  63. package/script/src/matchers/including.js.map +1 -1
  64. package/script/src/matchers/matching.d.ts.map +1 -1
  65. package/script/src/matchers/matching.js +1 -0
  66. package/script/src/matchers/matching.js.map +1 -1
  67. package/script/src/matchers/not.d.ts.map +1 -1
  68. package/script/src/matchers/not.js +1 -0
  69. package/script/src/matchers/not.js.map +1 -1
  70. package/script/src/matchers/or.d.ts.map +1 -1
  71. package/script/src/matchers/or.js +1 -0
  72. package/script/src/matchers/or.js.map +1 -1
  73. package/script/src/matchers/some.d.ts.map +1 -1
  74. package/script/src/matchers/some.js +1 -0
  75. package/script/src/matchers/some.js.map +1 -1
  76. package/script/src/merge-objects.d.ts +1 -1
  77. package/script/src/merge-objects.d.ts.map +1 -1
  78. package/script/src/metadata.d.ts +50 -0
  79. package/script/src/metadata.d.ts.map +1 -0
  80. package/script/src/metadata.js +105 -0
  81. package/script/src/metadata.js.map +1 -0
  82. package/src/src/constructor.ts +10 -1
  83. package/src/src/errors.ts +4 -4
  84. package/src/src/index.ts +12 -0
  85. package/src/src/matcher.ts +12 -0
  86. package/src/src/matchers/and.ts +3 -1
  87. package/src/src/matchers/every.ts +3 -1
  88. package/src/src/matchers/including.ts +3 -1
  89. package/src/src/matchers/matching.ts +3 -1
  90. package/src/src/matchers/not.ts +3 -1
  91. package/src/src/matchers/or.ts +3 -1
  92. package/src/src/matchers/some.ts +3 -1
  93. package/src/src/merge-objects.ts +3 -1
  94. package/src/src/metadata.ts +166 -0
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAmB,SAAQ,KAAK;IAA7C;;QACE;;;;mBAAO,oBAAoB;WAAC;IAC9B,CAAC;CAAA;AAFD,gDAEC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAAhD;;QACE;;;;mBAAO,uBAAuB;WAAC;IACjC,CAAC;CAAA;AAFD,sDAEC;AAED,MAAa,cAAe,SAAQ,KAAK;IAAzC;;QACE;;;;mBAAO,gBAAgB;WAAC;IAC1B,CAAC;CAAA;AAFD,wCAEC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IAAjD;;QACE;;;;mBAAO,wBAAwB;WAAC;IAClC,CAAC;CAAA;AAFD,wDAEC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,kBAAmB,SAAQ,KAAK;IAA7C;;QACW;;;;mBAAO,oBAAoB;WAAC;IACvC,CAAC;CAAA;AAFD,gDAEC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAAhD;;QACW;;;;mBAAO,uBAAuB;WAAC;IAC1C,CAAC;CAAA;AAFD,sDAEC;AAED,MAAa,cAAe,SAAQ,KAAK;IAAzC;;QACW;;;;mBAAO,gBAAgB;WAAC;IACnC,CAAC;CAAA;AAFD,wCAEC;AAED,MAAa,sBAAuB,SAAQ,KAAK;IAAjD;;QACW;;;;mBAAO,wBAAwB;WAAC;IAC3C,CAAC;CAAA;AAFD,wDAEC"}
@@ -4,7 +4,10 @@ export { isInteraction } from './interaction.js';
4
4
  export { createInteractor } from './create-interactor.js';
5
5
  export { createInspector } from './inspector.js';
6
6
  export { isVisible } from 'element-is-visible';
7
+ export { createMatcher } from './matcher.js';
7
8
  export type { Matcher } from './matcher.js';
9
+ export { CONSTRUCTOR_METADATA_VERSION, getInteractorConstructorMetadata, getMatcherConstructorMetadata, isInteractorConstructor, isMatcherConstructor, } from './metadata.js';
10
+ export type { InteractorConstructorMetadata, MatcherConstructorMetadata, } from './metadata.js';
8
11
  export { including } from './matchers/including.js';
9
12
  export { matching } from './matchers/matching.js';
10
13
  export { and } from './matchers/and.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChJ,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAChJ,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,EAChC,6BAA6B,EAC7B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACtD,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.click = exports.every = exports.some = exports.not = exports.or = exports.and = exports.matching = exports.including = exports.isVisible = exports.createInspector = exports.createInteractor = exports.isInteraction = void 0;
3
+ exports.click = exports.every = exports.some = exports.not = exports.or = exports.and = exports.matching = exports.including = exports.isMatcherConstructor = exports.isInteractorConstructor = exports.getMatcherConstructorMetadata = exports.getInteractorConstructorMetadata = exports.CONSTRUCTOR_METADATA_VERSION = exports.createMatcher = exports.isVisible = exports.createInspector = exports.createInteractor = exports.isInteraction = void 0;
4
4
  var interaction_js_1 = require("./interaction.js");
5
5
  Object.defineProperty(exports, "isInteraction", { enumerable: true, get: function () { return interaction_js_1.isInteraction; } });
6
6
  var create_interactor_js_1 = require("./create-interactor.js");
@@ -9,6 +9,14 @@ var inspector_js_1 = require("./inspector.js");
9
9
  Object.defineProperty(exports, "createInspector", { enumerable: true, get: function () { return inspector_js_1.createInspector; } });
10
10
  var element_is_visible_1 = require("element-is-visible");
11
11
  Object.defineProperty(exports, "isVisible", { enumerable: true, get: function () { return element_is_visible_1.isVisible; } });
12
+ var matcher_js_1 = require("./matcher.js");
13
+ Object.defineProperty(exports, "createMatcher", { enumerable: true, get: function () { return matcher_js_1.createMatcher; } });
14
+ var metadata_js_1 = require("./metadata.js");
15
+ Object.defineProperty(exports, "CONSTRUCTOR_METADATA_VERSION", { enumerable: true, get: function () { return metadata_js_1.CONSTRUCTOR_METADATA_VERSION; } });
16
+ Object.defineProperty(exports, "getInteractorConstructorMetadata", { enumerable: true, get: function () { return metadata_js_1.getInteractorConstructorMetadata; } });
17
+ Object.defineProperty(exports, "getMatcherConstructorMetadata", { enumerable: true, get: function () { return metadata_js_1.getMatcherConstructorMetadata; } });
18
+ Object.defineProperty(exports, "isInteractorConstructor", { enumerable: true, get: function () { return metadata_js_1.isInteractorConstructor; } });
19
+ Object.defineProperty(exports, "isMatcherConstructor", { enumerable: true, get: function () { return metadata_js_1.isMatcherConstructor; } });
12
20
  var including_js_1 = require("./matchers/including.js");
13
21
  Object.defineProperty(exports, "including", { enumerable: true, get: function () { return including_js_1.including; } });
14
22
  var matching_js_1 = require("./matchers/matching.js");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":";;;AAEA,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,+CAAgD;AAAvC,+GAAA,eAAe,OAAA;AACxB,yDAA+C;AAAtC,+GAAA,SAAS,OAAA;AAGlB,wDAAoD;AAA3C,yGAAA,SAAS,OAAA;AAClB,sDAAkD;AAAzC,uGAAA,QAAQ,OAAA;AACjB,4CAAwC;AAA/B,6FAAA,GAAG,OAAA;AACZ,0CAAsC;AAA7B,2FAAA,EAAE,OAAA;AACX,4CAAwC;AAA/B,6FAAA,GAAG,OAAA;AACZ,8CAA0C;AAAjC,+FAAA,IAAI,OAAA;AACb,gDAA4C;AAAnC,iGAAA,KAAK,OAAA;AAEd,+CAA2C;AAAlC,iGAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/src/index.ts"],"names":[],"mappings":";;;AAEA,mDAAgD;AAAvC,+GAAA,aAAa,OAAA;AACtB,+DAA0D;AAAjD,wHAAA,gBAAgB,OAAA;AACzB,+CAAgD;AAAvC,+GAAA,eAAe,OAAA;AACxB,yDAA+C;AAAtC,+GAAA,SAAS,OAAA;AAClB,2CAA6C;AAApC,2GAAA,aAAa,OAAA;AAEtB,6CAMuB;AALrB,2HAAA,4BAA4B,OAAA;AAC5B,+HAAA,gCAAgC,OAAA;AAChC,4HAAA,6BAA6B,OAAA;AAC7B,sHAAA,uBAAuB,OAAA;AACvB,mHAAA,oBAAoB,OAAA;AAOtB,wDAAoD;AAA3C,yGAAA,SAAS,OAAA;AAClB,sDAAkD;AAAzC,uGAAA,QAAQ,OAAA;AACjB,4CAAwC;AAA/B,6FAAA,GAAG,OAAA;AACZ,0CAAsC;AAA7B,2FAAA,EAAE,OAAA;AACX,4CAAwC;AAA/B,6FAAA,GAAG,OAAA;AACZ,8CAA0C;AAAjC,+FAAA,IAAI,OAAA;AACb,gDAA4C;AAAnC,iGAAA,KAAK,OAAA;AAEd,+CAA2C;AAAlC,iGAAA,KAAK,OAAA"}
@@ -4,6 +4,10 @@ export interface Matcher<T> {
4
4
  code?(): string;
5
5
  }
6
6
  export type MaybeMatcher<T> = Matcher<T> | T;
7
+ /**
8
+ * Create a matcher constructor that can be discovered by build tools.
9
+ */
10
+ export declare function createMatcher<F extends (...args: any[]) => Matcher<any>>(name: string, constructor: F): F;
7
11
  export declare function isMatcher<T>(value: MaybeMatcher<T>): value is Matcher<T>;
8
12
  export declare function matcherDescription<T>(value: MaybeMatcher<T>): string;
9
13
  export declare function applyMatcher<T>(value: MaybeMatcher<T>, actual: T): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/src/matcher.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC;IAC1B,WAAW,IAAI,MAAM,CAAC;IACtB,IAAI,CAAC,IAAI,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7C,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAMpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAM1E;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAQ7D"}
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/src/matcher.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,OAAO,CAAC,CAAC;IACxB,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC;IAC1B,WAAW,IAAI,MAAM,CAAC;IACtB,IAAI,CAAC,IAAI,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE7C;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EACtE,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,CAAC,GACb,CAAC,CAGH;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC,CAAC,CAExE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAMpE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,OAAO,CAM1E;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAQ7D"}
@@ -3,11 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createMatcher = createMatcher;
6
7
  exports.isMatcher = isMatcher;
7
8
  exports.matcherDescription = matcherDescription;
8
9
  exports.applyMatcher = applyMatcher;
9
10
  exports.matcherCode = matcherCode;
10
11
  const lodash_isequal_1 = __importDefault(require("lodash.isequal"));
12
+ const metadata_js_1 = require("./metadata.js");
13
+ /**
14
+ * Create a matcher constructor that can be discovered by build tools.
15
+ */
16
+ function createMatcher(name, constructor) {
17
+ (0, metadata_js_1.defineMatcherConstructorMetadata)(constructor, { name });
18
+ return constructor;
19
+ }
11
20
  function isMatcher(value) {
12
21
  return value && typeof value.match === 'function' && typeof value.description === 'function';
13
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/src/matcher.ts"],"names":[],"mappings":";;;;;AAUA,8BAEC;AAED,gDAMC;AAED,oCAMC;AAED,kCAQC;AAtCD,oEAAqC;AAUrC,SAAgB,SAAS,CAAI,KAAsB;IACjD,OAAO,KAAK,IAAI,OAAQ,KAAoB,CAAC,KAAK,KAAK,UAAU,IAAI,OAAQ,KAAoB,CAAC,WAAW,KAAK,UAAU,CAAC;AAC/H,CAAC;AAED,SAAgB,kBAAkB,CAAI,KAAsB;IAC1D,IAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAI,KAAsB,EAAE,MAAS;IAC/D,IAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,IAAA,wBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAI,KAAsB;IACnD,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/src/matcher.ts"],"names":[],"mappings":";;;;;AAcA,sCAMC;AAED,8BAEC;AAED,gDAMC;AAED,oCAMC;AAED,kCAQC;AAlDD,oEAAqC;AACrC,+CAAiE;AAUjE;;GAEG;AACH,SAAgB,aAAa,CAC3B,IAAY,EACZ,WAAc;IAEd,IAAA,8CAAgC,EAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAgB,SAAS,CAAI,KAAsB;IACjD,OAAO,KAAK,IAAI,OAAQ,KAAoB,CAAC,KAAK,KAAK,UAAU,IAAI,OAAQ,KAAoB,CAAC,WAAW,KAAK,UAAU,CAAC;AAC/H,CAAC;AAED,SAAgB,kBAAkB,CAAI,KAAsB;IAC1D,IAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,SAAgB,YAAY,CAAI,KAAsB,EAAE,MAAS;IAC/D,IAAG,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,OAAO,IAAA,wBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAgB,WAAW,CAAI,KAAsB;IACnD,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;SAAM,IAAI,KAAK,YAAY,MAAM,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/and.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAiD,MAAM,eAAe,CAAC;AAE/G,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY7D"}
1
+ {"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/and.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,eAAe,CAAC;AAE9H,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY7D"}
@@ -15,4 +15,5 @@ function and(...args) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('and', and);
18
19
  //# sourceMappingURL=and.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/src/matchers/and.ts"],"names":[],"mappings":";;AAEA,kBAYC;AAdD,8CAA+G;AAE/G,SAAgB,GAAG,CAAI,GAAG,IAAuB;IAC/C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,WAAW;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,IAAI;YACF,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC/D,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"and.js","sourceRoot":"","sources":["../../../src/src/matchers/and.ts"],"names":[],"mappings":";;AAEA,kBAYC;AAdD,8CAA8H;AAE9H,SAAgB,GAAG,CAAI,GAAG,IAAuB;IAC/C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC;QACD,WAAW;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,IAAI;YACF,OAAO,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC/D,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAiD,MAAM,eAAe,CAAC;AAE/G,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYxE"}
1
+ {"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,eAAe,CAAC;AAE9H,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYxE"}
@@ -15,4 +15,5 @@ function every(expected) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('every', every);
18
19
  //# sourceMappingURL=every.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"every.js","sourceRoot":"","sources":["../../../src/src/matchers/every.ts"],"names":[],"mappings":";;AAEA,sBAYC;AAdD,8CAA+G;AAE/G,SAAgB,KAAK,CAAI,QAAyB;IAChD,OAAO;QACL,KAAK,CAAC,MAAmB;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,WAAW;YACT,OAAO,cAAc,IAAA,+BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,IAAI;YACF,OAAO,SAAS,IAAA,wBAAW,EAAC,QAAQ,CAAC,GAAG,CAAA;QAC1C,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"every.js","sourceRoot":"","sources":["../../../src/src/matchers/every.ts"],"names":[],"mappings":";;AAEA,sBAYC;AAdD,8CAA8H;AAE9H,SAAgB,KAAK,CAAI,QAAyB;IAChD,OAAO;QACL,KAAK,CAAC,MAAmB;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,WAAW;YACT,OAAO,cAAc,IAAA,+BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QACtD,CAAC;QACD,IAAI;YACF,OAAO,SAAS,IAAA,wBAAW,EAAC,QAAQ,CAAC,GAAG,CAAA;QAC1C,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"including.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/including.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAc,MAAM,eAAe,CAAC;AAEzD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5D"}
1
+ {"version":3,"file":"including.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/including.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA8B,MAAM,eAAe,CAAC;AAEzE,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5D"}
@@ -15,4 +15,5 @@ function including(subString) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('including', including);
18
19
  //# sourceMappingURL=including.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"including.js","sourceRoot":"","sources":["../../../src/src/matchers/including.ts"],"names":[],"mappings":";;AAEA,8BAYC;AAdD,8CAAyD;AAEzD,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO;QACL,KAAK,CAAC,MAAc;YAClB,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,WAAW;YACT,OAAO,aAAa,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,IAAI;YACF,OAAO,aAAa,IAAA,wBAAW,EAAC,SAAS,CAAC,GAAG,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"including.js","sourceRoot":"","sources":["../../../src/src/matchers/including.ts"],"names":[],"mappings":";;AAEA,8BAYC;AAdD,8CAAyE;AAEzE,SAAgB,SAAS,CAAC,SAAiB;IACzC,OAAO;QACL,KAAK,CAAC,MAAc;YAClB,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,WAAW;YACT,OAAO,aAAa,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAClD,CAAC;QACD,IAAI;YACF,OAAO,aAAa,IAAA,wBAAW,EAAC,SAAS,CAAC,GAAG,CAAA;QAC/C,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/matching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,eAAe,CAAC;AAE1D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxD"}
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/matching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAA8B,MAAM,eAAe,CAAC;AAEzE,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxD"}
@@ -15,4 +15,5 @@ function matching(regexp) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('matching', matching);
18
19
  //# sourceMappingURL=matching.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../../src/src/matchers/matching.ts"],"names":[],"mappings":";;AAEA,4BAYC;AAdD,8CAA0D;AAE1D,SAAgB,QAAQ,CAAC,MAAc;IACrC,OAAO;QACL,KAAK,CAAC,MAAc;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACtC,CAAC;QACD,WAAW;YACT,OAAO,YAAY,MAAM,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI;YACF,OAAO,YAAY,IAAA,wBAAW,EAAC,MAAM,CAAC,GAAG,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"matching.js","sourceRoot":"","sources":["../../../src/src/matchers/matching.ts"],"names":[],"mappings":";;AAEA,4BAYC;AAdD,8CAAyE;AAEzE,SAAgB,QAAQ,CAAC,MAAc;IACrC,OAAO;QACL,KAAK,CAAC,MAAc;YAClB,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QACtC,CAAC;QACD,WAAW;YACT,OAAO,YAAY,MAAM,EAAE,CAAC;QAC9B,CAAC;QACD,IAAI;YACF,OAAO,YAAY,IAAA,wBAAW,EAAC,MAAM,CAAC,GAAG,CAAA;QAC3C,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"not.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/not.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAiD,MAAM,eAAe,CAAC;AAE/G,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY3D"}
1
+ {"version":3,"file":"not.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/not.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,eAAe,CAAC;AAE9H,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY3D"}
@@ -15,4 +15,5 @@ function not(matcher) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('not', not);
18
19
  //# sourceMappingURL=not.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"not.js","sourceRoot":"","sources":["../../../src/src/matchers/not.ts"],"names":[],"mappings":";;AAEA,kBAYC;AAdD,8CAA+G;AAE/G,SAAgB,GAAG,CAAI,OAAwB;IAC7C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,WAAW;YACT,OAAO,OAAO,IAAA,+BAAkB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI;YACF,OAAO,OAAO,IAAA,wBAAW,EAAC,OAAO,CAAC,GAAG,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"not.js","sourceRoot":"","sources":["../../../src/src/matchers/not.ts"],"names":[],"mappings":";;AAEA,kBAYC;AAdD,8CAA8H;AAE9H,SAAgB,GAAG,CAAI,OAAwB;IAC7C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,WAAW;YACT,OAAO,OAAO,IAAA,+BAAkB,EAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,CAAC;QACD,IAAI;YACF,OAAO,OAAO,IAAA,wBAAW,EAAC,OAAO,CAAC,GAAG,CAAA;QACvC,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,KAAK,EAAE,GAAG,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAiD,MAAM,eAAe,CAAC;AAE/G,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY5D"}
1
+ {"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,eAAe,CAAC;AAE9H,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY5D"}
@@ -15,4 +15,5 @@ function or(...args) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('or', or);
18
19
  //# sourceMappingURL=or.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"or.js","sourceRoot":"","sources":["../../../src/src/matchers/or.ts"],"names":[],"mappings":";;AAEA,gBAYC;AAdD,8CAA+G;AAE/G,SAAgB,EAAE,CAAI,GAAG,IAAuB;IAC9C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,WAAW;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC9D,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"or.js","sourceRoot":"","sources":["../../../src/src/matchers/or.ts"],"names":[],"mappings":";;AAEA,gBAYC;AAdD,8CAA8H;AAE9H,SAAgB,EAAE,CAAI,GAAG,IAAuB;IAC9C,OAAO;QACL,KAAK,CAAC,MAAS;YACb,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,WAAW;YACT,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC;QACD,IAAI;YACF,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,wBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;QAC9D,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"some.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/some.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAiD,MAAM,eAAe,CAAC;AAE/G,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYvE"}
1
+ {"version":3,"file":"some.d.ts","sourceRoot":"","sources":["../../../src/src/matchers/some.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,YAAY,EAAgE,MAAM,eAAe,CAAC;AAE9H,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYvE"}
@@ -15,4 +15,5 @@ function some(expected) {
15
15
  }
16
16
  };
17
17
  }
18
+ (0, matcher_js_1.createMatcher)('some', some);
18
19
  //# sourceMappingURL=some.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"some.js","sourceRoot":"","sources":["../../../src/src/matchers/some.ts"],"names":[],"mappings":";;AAEA,oBAYC;AAdD,8CAA+G;AAE/G,SAAgB,IAAI,CAAI,QAAyB;IAC/C,OAAO;QACL,KAAK,CAAC,MAAmB;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,WAAW;YACT,OAAO,aAAa,IAAA,+BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,CAAC;QACD,IAAI;YACF,OAAO,QAAQ,IAAA,wBAAW,EAAC,QAAQ,CAAC,GAAG,CAAA;QACzC,CAAC;KACF,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"some.js","sourceRoot":"","sources":["../../../src/src/matchers/some.ts"],"names":[],"mappings":";;AAEA,oBAYC;AAdD,8CAA8H;AAE9H,SAAgB,IAAI,CAAI,QAAyB;IAC/C,OAAO;QACL,KAAK,CAAC,MAAmB;YACvB,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAY,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3E,CAAC;QACD,WAAW;YACT,OAAO,aAAa,IAAA,+BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;QACrD,CAAC;QACD,IAAI;YACF,OAAO,QAAQ,IAAA,wBAAW,EAAC,QAAQ,CAAC,GAAG,CAAA;QACzC,CAAC;KACF,CAAA;AACH,CAAC;AAED,IAAA,0BAAa,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
- export type MergeObjects<A, B> = B & Omit<A, keyof B>;
1
+ export type MergeObjects<A, B> = keyof A extends never ? B : keyof B extends never ? A : B & Omit<A, keyof B>;
2
2
  //# sourceMappingURL=merge-objects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-objects.d.ts","sourceRoot":"","sources":["../../src/src/merge-objects.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"merge-objects.d.ts","sourceRoot":"","sources":["../../src/src/merge-objects.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,CAAC,GACtD,MAAM,CAAC,SAAS,KAAK,GAAG,CAAC,GACzB,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { Matcher } from "./matcher.js";
2
+ import type { InteractorConstructor } from "./specification.js";
3
+ /**
4
+ * Version of the metadata attached to interactor and matcher constructors.
5
+ *
6
+ * Consumers should use the helpers in this module instead of reading the
7
+ * symbol properties directly.
8
+ */
9
+ export declare const CONSTRUCTOR_METADATA_VERSION: 1;
10
+ /** @internal */
11
+ export declare const INTERACTOR_CONSTRUCTOR_METADATA: unique symbol;
12
+ /** @internal */
13
+ export declare const MATCHER_CONSTRUCTOR_METADATA: unique symbol;
14
+ export interface InteractorConstructorMetadata {
15
+ readonly kind: "interactor";
16
+ readonly version: typeof CONSTRUCTOR_METADATA_VERSION;
17
+ readonly name: string;
18
+ readonly actions: readonly string[];
19
+ readonly filters: readonly string[];
20
+ }
21
+ export interface MatcherConstructorMetadata {
22
+ readonly kind: "matcher";
23
+ readonly version: typeof CONSTRUCTOR_METADATA_VERSION;
24
+ readonly name: string;
25
+ }
26
+ type AnyInteractorConstructor = InteractorConstructor<Element, any, any, any>;
27
+ type AnyMatcherConstructor = (...args: any[]) => Matcher<any>;
28
+ /**
29
+ * Return stable, serializable metadata for an interactor constructor.
30
+ */
31
+ export declare function getInteractorConstructorMetadata(value: unknown): InteractorConstructorMetadata | undefined;
32
+ /**
33
+ * Determine whether a value was created by {@link createInteractor}.
34
+ *
35
+ * The brand uses the global symbol registry so this works when the producer
36
+ * and consumer load different copies of `@interactors/core`.
37
+ */
38
+ export declare function isInteractorConstructor(value: unknown): value is AnyInteractorConstructor;
39
+ /**
40
+ * Return stable, serializable metadata for a matcher constructor.
41
+ */
42
+ export declare function getMatcherConstructorMetadata(value: unknown): MatcherConstructorMetadata | undefined;
43
+ /** Determine whether a value was created by {@link createMatcher}. */
44
+ export declare function isMatcherConstructor(value: unknown): value is AnyMatcherConstructor;
45
+ /** @internal */
46
+ export declare function defineInteractorConstructorMetadata(constructor: Function, metadata: Omit<InteractorConstructorMetadata, "kind" | "version">): void;
47
+ /** @internal */
48
+ export declare function defineMatcherConstructorMetadata(constructor: Function, metadata: Omit<MatcherConstructorMetadata, "kind" | "version">): void;
49
+ export {};
50
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/src/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAa,CAAC;AAEvD,gBAAgB;AAChB,eAAO,MAAM,+BAA+B,eAE3C,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,4BAA4B,eAExC,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,4BAA4B,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,4BAA4B,CAAC;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,KAAK,wBAAwB,GAAG,qBAAqB,CACnD,OAAO,EACP,GAAG,EACH,GAAG,EACH,GAAG,CACJ,CAAC;AAEF,KAAK,qBAAqB,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,OAAO,GACb,6BAA6B,GAAG,SAAS,CAQ3C;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,wBAAwB,CAEnC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,OAAO,GACb,0BAA0B,GAAG,SAAS,CAQxC;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAEhC;AAED,gBAAgB;AAChB,wBAAgB,mCAAmC,CACjD,WAAW,EAAE,QAAQ,EACrB,QAAQ,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,GAAG,SAAS,CAAC,GAChE,IAAI,CAQN;AAED,gBAAgB;AAChB,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,QAAQ,EACrB,QAAQ,EAAE,IAAI,CAAC,0BAA0B,EAAE,MAAM,GAAG,SAAS,CAAC,GAC7D,IAAI,CAMN"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MATCHER_CONSTRUCTOR_METADATA = exports.INTERACTOR_CONSTRUCTOR_METADATA = exports.CONSTRUCTOR_METADATA_VERSION = void 0;
4
+ exports.getInteractorConstructorMetadata = getInteractorConstructorMetadata;
5
+ exports.isInteractorConstructor = isInteractorConstructor;
6
+ exports.getMatcherConstructorMetadata = getMatcherConstructorMetadata;
7
+ exports.isMatcherConstructor = isMatcherConstructor;
8
+ exports.defineInteractorConstructorMetadata = defineInteractorConstructorMetadata;
9
+ exports.defineMatcherConstructorMetadata = defineMatcherConstructorMetadata;
10
+ /**
11
+ * Version of the metadata attached to interactor and matcher constructors.
12
+ *
13
+ * Consumers should use the helpers in this module instead of reading the
14
+ * symbol properties directly.
15
+ */
16
+ exports.CONSTRUCTOR_METADATA_VERSION = 1;
17
+ /** @internal */
18
+ exports.INTERACTOR_CONSTRUCTOR_METADATA = Symbol.for("@interactors/core/interactor-constructor-metadata");
19
+ /** @internal */
20
+ exports.MATCHER_CONSTRUCTOR_METADATA = Symbol.for("@interactors/core/matcher-constructor-metadata");
21
+ /**
22
+ * Return stable, serializable metadata for an interactor constructor.
23
+ */
24
+ function getInteractorConstructorMetadata(value) {
25
+ if (typeof value !== "function") {
26
+ return undefined;
27
+ }
28
+ let metadata = Reflect.get(value, exports.INTERACTOR_CONSTRUCTOR_METADATA);
29
+ return isInteractorConstructorMetadata(metadata) ? metadata : undefined;
30
+ }
31
+ /**
32
+ * Determine whether a value was created by {@link createInteractor}.
33
+ *
34
+ * The brand uses the global symbol registry so this works when the producer
35
+ * and consumer load different copies of `@interactors/core`.
36
+ */
37
+ function isInteractorConstructor(value) {
38
+ return getInteractorConstructorMetadata(value) !== undefined;
39
+ }
40
+ /**
41
+ * Return stable, serializable metadata for a matcher constructor.
42
+ */
43
+ function getMatcherConstructorMetadata(value) {
44
+ if (typeof value !== "function") {
45
+ return undefined;
46
+ }
47
+ let metadata = Reflect.get(value, exports.MATCHER_CONSTRUCTOR_METADATA);
48
+ return isMatcherConstructorMetadata(metadata) ? metadata : undefined;
49
+ }
50
+ /** Determine whether a value was created by {@link createMatcher}. */
51
+ function isMatcherConstructor(value) {
52
+ return getMatcherConstructorMetadata(value) !== undefined;
53
+ }
54
+ /** @internal */
55
+ function defineInteractorConstructorMetadata(constructor, metadata) {
56
+ defineMetadata(constructor, exports.INTERACTOR_CONSTRUCTOR_METADATA, {
57
+ kind: "interactor",
58
+ version: exports.CONSTRUCTOR_METADATA_VERSION,
59
+ name: metadata.name,
60
+ actions: Object.freeze([...metadata.actions].sort()),
61
+ filters: Object.freeze([...metadata.filters].sort()),
62
+ });
63
+ }
64
+ /** @internal */
65
+ function defineMatcherConstructorMetadata(constructor, metadata) {
66
+ defineMetadata(constructor, exports.MATCHER_CONSTRUCTOR_METADATA, {
67
+ kind: "matcher",
68
+ version: exports.CONSTRUCTOR_METADATA_VERSION,
69
+ name: metadata.name,
70
+ });
71
+ }
72
+ function defineMetadata(constructor, key, metadata) {
73
+ Object.defineProperty(constructor, key, {
74
+ configurable: false,
75
+ enumerable: false,
76
+ writable: false,
77
+ value: Object.freeze(metadata),
78
+ });
79
+ }
80
+ function isInteractorConstructorMetadata(value) {
81
+ if (!isRecord(value)) {
82
+ return false;
83
+ }
84
+ return value.kind === "interactor" &&
85
+ value.version === exports.CONSTRUCTOR_METADATA_VERSION &&
86
+ typeof value.name === "string" &&
87
+ isStringArray(value.actions) &&
88
+ isStringArray(value.filters);
89
+ }
90
+ function isMatcherConstructorMetadata(value) {
91
+ if (!isRecord(value)) {
92
+ return false;
93
+ }
94
+ return value.kind === "matcher" &&
95
+ value.version === exports.CONSTRUCTOR_METADATA_VERSION &&
96
+ typeof value.name === "string";
97
+ }
98
+ function isRecord(value) {
99
+ return typeof value === "object" && value !== null;
100
+ }
101
+ function isStringArray(value) {
102
+ return Array.isArray(value) &&
103
+ value.every((item) => typeof item === "string");
104
+ }
105
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/src/metadata.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ import { createInteraction, type AssertionInteraction, type ActionInteraction }
24
24
  import { isMatcher } from './matcher.js';
25
25
  import { matching } from './matchers/matching.js';
26
26
  import { hasMatchMatching, resolveEmpty, resolveFirst, resolveUnique, unsafeSyncResolveParent, unsafeSyncResolveUnique } from './resolvers.js';
27
+ import { defineInteractorConstructorMetadata } from "./metadata.js";
27
28
 
28
29
  const defaultLocator: FilterDefinition<string, Element> = (element) => element.textContent || "";
29
30
 
@@ -200,7 +201,7 @@ export function createConstructor<E extends Element, FP extends FilterParams<any
200
201
  return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique);
201
202
  }
202
203
 
203
- return Object.assign(initInteractor, {
204
+ let constructor = Object.assign(initInteractor, {
204
205
  interactorName: name,
205
206
  selector: (value: string): InteractorConstructor<E, FP, FM, AM> => {
206
207
  return createConstructor(name, { ...specification, selector: value });
@@ -218,4 +219,12 @@ export function createConstructor<E extends Element, FP extends FilterParams<any
218
219
  return createConstructor(newName, specification) as unknown as InteractorConstructor<ER, FP, FM, AM>;
219
220
  },
220
221
  }) as unknown as InteractorConstructor<E, FP, FM, AM>;
222
+
223
+ defineInteractorConstructorMetadata(constructor, {
224
+ name,
225
+ actions: Object.keys(specification.actions ?? {}),
226
+ filters: Object.keys(specification.filters ?? {}),
227
+ });
228
+
229
+ return constructor;
221
230
  }
package/src/src/errors.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  export class NoSuchElementError extends Error {
2
- name = "NoSuchElementError";
2
+ override name = "NoSuchElementError";
3
3
  }
4
4
 
5
5
  export class AmbiguousElementError extends Error {
6
- name = "AmbiguousElementError";
6
+ override name = "AmbiguousElementError";
7
7
  }
8
8
 
9
9
  export class NotAbsentError extends Error {
10
- name = "NotAbsentError";
10
+ override name = "NotAbsentError";
11
11
  }
12
12
 
13
13
  export class FilterNotMatchingError extends Error {
14
- name = "FilterNotMatchingError";
14
+ override name = "FilterNotMatchingError";
15
15
  }
package/src/src/index.ts CHANGED
@@ -4,7 +4,19 @@ export { isInteraction } from './interaction.js'
4
4
  export { createInteractor } from './create-interactor.js';
5
5
  export { createInspector } from './inspector.js'
6
6
  export { isVisible } from 'element-is-visible';
7
+ export { createMatcher } from './matcher.js';
7
8
  export type { Matcher } from './matcher.js';
9
+ export {
10
+ CONSTRUCTOR_METADATA_VERSION,
11
+ getInteractorConstructorMetadata,
12
+ getMatcherConstructorMetadata,
13
+ isInteractorConstructor,
14
+ isMatcherConstructor,
15
+ } from './metadata.js';
16
+ export type {
17
+ InteractorConstructorMetadata,
18
+ MatcherConstructorMetadata,
19
+ } from './metadata.js';
8
20
 
9
21
  export { including } from './matchers/including.js';
10
22
  export { matching } from './matchers/matching.js';
@@ -1,4 +1,5 @@
1
1
  import isEqual from 'lodash.isequal';
2
+ import { defineMatcherConstructorMetadata } from './metadata.js';
2
3
 
3
4
  export interface Matcher<T> {
4
5
  match(actual: T): boolean;
@@ -8,6 +9,17 @@ export interface Matcher<T> {
8
9
 
9
10
  export type MaybeMatcher<T> = Matcher<T> | T;
10
11
 
12
+ /**
13
+ * Create a matcher constructor that can be discovered by build tools.
14
+ */
15
+ export function createMatcher<F extends (...args: any[]) => Matcher<any>>(
16
+ name: string,
17
+ constructor: F,
18
+ ): F {
19
+ defineMatcherConstructorMetadata(constructor, { name });
20
+ return constructor;
21
+ }
22
+
11
23
  export function isMatcher<T>(value: MaybeMatcher<T>): value is Matcher<T> {
12
24
  return value && typeof (value as Matcher<T>).match === 'function' && typeof (value as Matcher<T>).description === 'function';
13
25
  }
@@ -1,4 +1,4 @@
1
- import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.js';
1
+ import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function and<T>(...args: MaybeMatcher<T>[]): Matcher<T> {
4
4
  return {
@@ -13,3 +13,5 @@ export function and<T>(...args: MaybeMatcher<T>[]): Matcher<T> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('and', and);
@@ -1,4 +1,4 @@
1
- import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode } from '../matcher.js';
1
+ import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function every<T>(expected: MaybeMatcher<T>): Matcher<Iterable<T>> {
4
4
  return {
@@ -13,3 +13,5 @@ export function every<T>(expected: MaybeMatcher<T>): Matcher<Iterable<T>> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('every', every);
@@ -1,4 +1,4 @@
1
- import { type Matcher, matcherCode} from '../matcher.js';
1
+ import { type Matcher, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function including(subString: string): Matcher<string> {
4
4
  return {
@@ -13,3 +13,5 @@ export function including(subString: string): Matcher<string> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('including', including);
@@ -1,4 +1,4 @@
1
- import { type Matcher, matcherCode } from '../matcher.js';
1
+ import { type Matcher, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function matching(regexp: RegExp): Matcher<string> {
4
4
  return {
@@ -13,3 +13,5 @@ export function matching(regexp: RegExp): Matcher<string> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('matching', matching);
@@ -1,4 +1,4 @@
1
- import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.js';
1
+ import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function not<T>(matcher: MaybeMatcher<T>): Matcher<T> {
4
4
  return {
@@ -13,3 +13,5 @@ export function not<T>(matcher: MaybeMatcher<T>): Matcher<T> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('not', not);
@@ -1,4 +1,4 @@
1
- import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode } from '../matcher.js';
1
+ import { type Matcher, type MaybeMatcher, matcherDescription, applyMatcher, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function or<T>(...args: MaybeMatcher<T>[]): Matcher<T> {
4
4
  return {
@@ -13,3 +13,5 @@ export function or<T>(...args: MaybeMatcher<T>[]): Matcher<T> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('or', or);
@@ -1,4 +1,4 @@
1
- import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode } from '../matcher.js';
1
+ import { type Matcher, type MaybeMatcher, applyMatcher, matcherDescription, matcherCode, createMatcher } from '../matcher.js';
2
2
 
3
3
  export function some<T>(expected: MaybeMatcher<T>): Matcher<Iterable<T>> {
4
4
  return {
@@ -13,3 +13,5 @@ export function some<T>(expected: MaybeMatcher<T>): Matcher<Iterable<T>> {
13
13
  }
14
14
  }
15
15
  }
16
+
17
+ createMatcher('some', some);
@@ -1,2 +1,4 @@
1
1
  // A utility type for merging two object types
2
- export type MergeObjects<A, B> = B & Omit<A, keyof B>;
2
+ export type MergeObjects<A, B> = keyof A extends never ? B
3
+ : keyof B extends never ? A
4
+ : B & Omit<A, keyof B>;