@interactors/core 0.4.0 → 1.0.0-effection.2

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 (121) hide show
  1. package/dist/cjs/constructor.js +55 -126
  2. package/dist/cjs/constructor.js.map +1 -1
  3. package/dist/cjs/converge.js +3 -5
  4. package/dist/cjs/converge.js.map +1 -1
  5. package/dist/cjs/format.js +50 -0
  6. package/dist/cjs/format.js.map +1 -0
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/inspector.js +2 -1
  9. package/dist/cjs/inspector.js.map +1 -1
  10. package/dist/cjs/interaction.js +43 -35
  11. package/dist/cjs/interaction.js.map +1 -1
  12. package/dist/cjs/match.js +17 -7
  13. package/dist/cjs/match.js.map +1 -1
  14. package/dist/cjs/matcher.js +13 -1
  15. package/dist/cjs/matcher.js.map +1 -1
  16. package/dist/cjs/matchers/and.js +3 -0
  17. package/dist/cjs/matchers/and.js.map +1 -1
  18. package/dist/cjs/matchers/every.js +3 -0
  19. package/dist/cjs/matchers/every.js.map +1 -1
  20. package/dist/cjs/matchers/including.js +4 -0
  21. package/dist/cjs/matchers/including.js.map +1 -1
  22. package/dist/cjs/matchers/matching.js +4 -0
  23. package/dist/cjs/matchers/matching.js.map +1 -1
  24. package/dist/cjs/matchers/not.js +3 -0
  25. package/dist/cjs/matchers/not.js.map +1 -1
  26. package/dist/cjs/matchers/or.js +3 -0
  27. package/dist/cjs/matchers/or.js.map +1 -1
  28. package/dist/cjs/matchers/some.js +3 -0
  29. package/dist/cjs/matchers/some.js.map +1 -1
  30. package/dist/cjs/resolvers.js +98 -0
  31. package/dist/cjs/resolvers.js.map +1 -0
  32. package/dist/cjs/serialize.js +48 -0
  33. package/dist/cjs/serialize.js.map +1 -0
  34. package/dist/constructor.d.ts +2 -8
  35. package/dist/constructor.d.ts.map +1 -1
  36. package/dist/converge.d.ts +2 -1
  37. package/dist/converge.d.ts.map +1 -1
  38. package/dist/esm/constructor.js +52 -117
  39. package/dist/esm/constructor.js.map +1 -1
  40. package/dist/esm/converge.js +3 -5
  41. package/dist/esm/converge.js.map +1 -1
  42. package/dist/esm/{format-table.js → format.js} +19 -1
  43. package/dist/esm/format.js.map +1 -0
  44. package/dist/esm/index.js.map +1 -1
  45. package/dist/esm/inspector.js +2 -1
  46. package/dist/esm/inspector.js.map +1 -1
  47. package/dist/esm/interaction.js +40 -29
  48. package/dist/esm/interaction.js.map +1 -1
  49. package/dist/esm/match.js +17 -7
  50. package/dist/esm/match.js.map +1 -1
  51. package/dist/esm/matcher.js +11 -0
  52. package/dist/esm/matcher.js.map +1 -1
  53. package/dist/esm/matchers/and.js +4 -1
  54. package/dist/esm/matchers/and.js.map +1 -1
  55. package/dist/esm/matchers/every.js +4 -1
  56. package/dist/esm/matchers/every.js.map +1 -1
  57. package/dist/esm/matchers/including.js +4 -0
  58. package/dist/esm/matchers/including.js.map +1 -1
  59. package/dist/esm/matchers/matching.js +4 -0
  60. package/dist/esm/matchers/matching.js.map +1 -1
  61. package/dist/esm/matchers/not.js +4 -1
  62. package/dist/esm/matchers/not.js.map +1 -1
  63. package/dist/esm/matchers/or.js +4 -1
  64. package/dist/esm/matchers/or.js.map +1 -1
  65. package/dist/esm/matchers/some.js +4 -1
  66. package/dist/esm/matchers/some.js.map +1 -1
  67. package/dist/esm/resolvers.js +88 -0
  68. package/dist/esm/resolvers.js.map +1 -0
  69. package/dist/esm/serialize.js +43 -0
  70. package/dist/esm/serialize.js.map +1 -0
  71. package/dist/format.d.ts +10 -0
  72. package/dist/format.d.ts.map +1 -0
  73. package/dist/index.d.ts +4 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/inspector.d.ts.map +1 -1
  76. package/dist/interaction.d.ts +38 -10
  77. package/dist/interaction.d.ts.map +1 -1
  78. package/dist/match.d.ts +5 -5
  79. package/dist/match.d.ts.map +1 -1
  80. package/dist/matcher.d.ts +2 -0
  81. package/dist/matcher.d.ts.map +1 -1
  82. package/dist/matchers/and.d.ts.map +1 -1
  83. package/dist/matchers/every.d.ts.map +1 -1
  84. package/dist/matchers/including.d.ts.map +1 -1
  85. package/dist/matchers/matching.d.ts.map +1 -1
  86. package/dist/matchers/not.d.ts.map +1 -1
  87. package/dist/matchers/or.d.ts.map +1 -1
  88. package/dist/matchers/some.d.ts.map +1 -1
  89. package/dist/resolvers.d.ts +9 -0
  90. package/dist/resolvers.d.ts.map +1 -0
  91. package/dist/serialize.d.ts +13 -0
  92. package/dist/serialize.d.ts.map +1 -0
  93. package/dist/specification.d.ts +19 -17
  94. package/dist/specification.d.ts.map +1 -1
  95. package/dist/tsconfig.build.tsbuildinfo +1 -1
  96. package/package.json +3 -2
  97. package/src/constructor.ts +63 -138
  98. package/src/converge.ts +3 -6
  99. package/src/format.ts +58 -0
  100. package/src/index.ts +4 -2
  101. package/src/inspector.ts +2 -1
  102. package/src/interaction.ts +85 -36
  103. package/src/match.ts +23 -15
  104. package/src/matcher.ts +11 -0
  105. package/src/matchers/and.ts +4 -1
  106. package/src/matchers/every.ts +4 -1
  107. package/src/matchers/including.ts +4 -1
  108. package/src/matchers/matching.ts +4 -1
  109. package/src/matchers/not.ts +4 -1
  110. package/src/matchers/or.ts +4 -1
  111. package/src/matchers/some.ts +4 -1
  112. package/src/resolvers.ts +100 -0
  113. package/src/serialize.ts +54 -0
  114. package/src/specification.ts +21 -19
  115. package/CHANGELOG.md +0 -27
  116. package/dist/cjs/format-table.js +0 -30
  117. package/dist/cjs/format-table.js.map +0 -1
  118. package/dist/esm/format-table.js.map +0 -1
  119. package/dist/format-table.d.ts +0 -6
  120. package/dist/format-table.d.ts.map +0 -1
  121. package/src/format-table.ts +0 -34
@@ -0,0 +1,43 @@
1
+ import { pascalCase } from "change-case";
2
+ import { matcherCode } from "./matcher";
3
+ export function serializeInteractorOptions(options) {
4
+ var _a;
5
+ let locator = matcherCode((_a = options.locator) === null || _a === void 0 ? void 0 : _a.value);
6
+ return {
7
+ interactor: options.name,
8
+ filter: options.filter.all,
9
+ locator,
10
+ code() {
11
+ let interactorName = pascalCase(options.name);
12
+ let filters = Object.entries(options.filter.all).map(([name, filter]) => `"${name}": ${matcherCode(filter)}`);
13
+ return `${interactorName}(${[locator, filters.length && `{ ${filters.join(", ")} }`]
14
+ .filter(Boolean)
15
+ .join(", ")})`;
16
+ },
17
+ };
18
+ }
19
+ export function serializeInteractionOptions(type, { name, interactor: { options }, args, filters }) {
20
+ let interactor = serializeInteractorOptions(options);
21
+ let ancestors = options.ancestors.map((ancestor) => serializeInteractorOptions(ancestor));
22
+ return {
23
+ ...interactor,
24
+ ancestors,
25
+ name,
26
+ type,
27
+ args: filters ? [filters] : args ? args : undefined,
28
+ code() {
29
+ let serializedArgs = "";
30
+ if (filters) {
31
+ let serializedFilters = Object.entries(filters).map(([name, filter]) => `"${name}": ${matcherCode(filter)}`);
32
+ serializedArgs = `{ ${serializedFilters.join(", ")} }`;
33
+ }
34
+ else if (args) {
35
+ serializedArgs = args.map((arg) => JSON.stringify(arg)).join(", ");
36
+ }
37
+ return `${[...ancestors, interactor]
38
+ .map(({ code }, index) => (index == 0 ? code() : `${code()})`))
39
+ .join(".find(")}.${name}(${serializedArgs})`;
40
+ },
41
+ };
42
+ }
43
+ //# sourceMappingURL=serialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.js","sourceRoot":"","sources":["../../src/serialize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC,MAAM,UAAU,0BAA0B,CAAC,OAAyC;;IAMlF,IAAI,OAAO,GAAG,WAAW,CAAC,MAAA,OAAO,CAAC,OAAO,0CAAE,KAAK,CAAC,CAAC;IAClD,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,IAAI;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;QAC1B,OAAO;QACP,IAAI;YACF,IAAI,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC9G,OAAO,GAAG,cAAc,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;iBACjF,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,IAAqB,EACrB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAA4B;IAE1E,IAAI,UAAU,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1F,OAAO;QACL,GAAG,UAAU;QACb,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;QACnD,IAAI;YACF,IAAI,cAAc,GAAG,EAAE,CAAC;YACxB,IAAI,OAAO,EAAE;gBACX,IAAI,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,IAAI,MAAM,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC7G,cAAc,GAAG,KAAK,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;aACxD;iBAAM,IAAI,IAAI,EAAE;gBACf,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpE;YACD,OAAO,GAAG,CAAC,GAAG,SAAS,EAAE,UAAU,CAAC;iBACjC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;iBAC9D,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,cAAc,GAAG,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Match } from "./match";
2
+ import { InteractorOptions } from "./specification";
3
+ export interface TableOptions {
4
+ headers: string[];
5
+ rows: string[][];
6
+ }
7
+ export declare function formatTable(options: TableOptions): string;
8
+ export declare function formatDescription(options: InteractorOptions<any, any, any>): string;
9
+ export declare function formatMatchesTable(interactor: InteractorOptions<any, any, any>, matches: Match<Element, any>[]): string;
10
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB;AAYD,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAkBzD;AAUD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,MAAM,CAGnF;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,MAAM,CAKvH"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { Interactor, InteractorConstructor, InteractorSpecification } from './specification';
2
- export { Interaction, ReadonlyInteraction, isInteraction } from './interaction';
1
+ export { Interactor, InteractorConstructor, InteractorSpecification, EmptyObject, FilterMethods, ActionMethods } from './specification';
2
+ export { Interaction, ActionInteraction, AssertionInteraction, isInteraction } from './interaction';
3
3
  export { createInteractor } from './create-interactor';
4
4
  export { createInspector } from './inspector';
5
5
  export { isVisible } from 'element-is-visible';
@@ -12,4 +12,6 @@ export { not } from './matchers/not';
12
12
  export { some } from './matchers/some';
13
13
  export { every } from './matchers/every';
14
14
  export { click } from './element/click';
15
+ export { MergeObjects } from './merge-objects';
16
+ export { MaybeMatcher } from './matcher';
15
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxI,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAW,qBAAqB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3F,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1I,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1I,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1I,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAE,SAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAChI,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;CACvF;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC5E;;OAEG;IACF,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;CAC9E;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClF,WAAW,EAAE,EAAE,EACf,aAAa,CAAC,EAAE,OAAO,GACtB,SAAS,CAAC,EAAE,CAAC,CAiBf"}
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAW,qBAAqB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE3F,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1I,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAC1I,aAAK,UAAU,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1I,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAE,SAAQ,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAChI,OAAO,EAAE,CAAC,CAAC;IACX,IAAI,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;CACvF;AAED,MAAM,WAAW,SAAS,CAAC,CAAC,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAC5E;;OAEG;IACF,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;CAC9E;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAClF,WAAW,EAAE,EAAE,EACf,aAAa,CAAC,EAAE,OAAO,GACtB,SAAS,CAAC,EAAE,CAAC,CAiBf"}
@@ -1,6 +1,8 @@
1
- import type { FilterObject } from './specification';
1
+ import { Operation, Task } from '@effection/core';
2
+ import { InteractionOptions as SerializedInteractionOptions, InteractionType } from '@interactors/globals';
3
+ import type { Interactor, FilterObject, FilterFn, FilterParams } from './specification';
2
4
  declare const interactionSymbol: unique symbol;
3
- export declare function isInteraction(x: unknown): x is Interaction<unknown>;
5
+ export declare function isInteraction(x: unknown): x is Interaction<Element, unknown>;
4
6
  /**
5
7
  * An interaction represents some type of action or assertion that can be
6
8
  * taken on an {@link Interactor}.
@@ -12,31 +14,57 @@ export declare function isInteraction(x: unknown): x is Interaction<unknown>;
12
14
  *
13
15
  * @typeParam T the return value of the promise that this interaction evaluates to.
14
16
  */
15
- export interface Interaction<T> extends Promise<T> {
17
+ export interface Interaction<E extends Element, T = void> extends Promise<T> {
18
+ type: InteractionType;
19
+ interactor: Interactor<E, any>;
20
+ run: (interactor: Interactor<E, any>) => Operation<T>;
16
21
  /**
17
22
  * Return a description of the interaction
18
23
  */
19
24
  description: string;
25
+ /**
26
+ * Return a code representation of the interaction
27
+ */
28
+ code: () => string;
29
+ /**
30
+ * Return a serialized options of the interaction
31
+ */
32
+ options: SerializedInteractionOptions;
20
33
  /**
21
34
  * Perform the interaction
22
35
  */
23
- action: () => Promise<T>;
36
+ action: () => Task<T>;
37
+ check?: () => Task<T>;
38
+ halt: () => Promise<void>;
24
39
  [interactionSymbol]: true;
25
40
  }
41
+ export interface ActionInteraction<E extends Element, T = void> extends Interaction<E, T> {
42
+ type: "action";
43
+ check: undefined;
44
+ }
26
45
  /**
27
46
  * Like {@link Interaction}, except that it is used for assertions only.
28
47
  *
29
48
  * @typeParam T the return value of the promise that this interaction evaluates to.
30
49
  */
31
- export interface ReadonlyInteraction<T> extends Interaction<T> {
50
+ export interface AssertionInteraction<E extends Element, T = void> extends Interaction<E, T> {
51
+ type: "assertion";
32
52
  /**
33
53
  * Perform the check
34
54
  */
35
- check: () => Promise<T>;
55
+ check: () => Task<T>;
36
56
  }
37
- export declare function interaction<T>(description: string, action: () => Promise<T>): Interaction<T>;
38
- export declare function check<T>(description: string, check: () => Promise<T>): ReadonlyInteraction<T>;
39
- export declare function interactionFilter<T, Q>(description: string, action: () => Promise<T>, filter: (element: Element) => Q): Interaction<T> & FilterObject<Q, Element>;
40
- export declare function checkFilter<T, Q>(description: string, action: () => Promise<T>, filter: (element: Element) => Q): ReadonlyInteraction<T> & FilterObject<Q, Element>;
57
+ export declare type InteractionOptions<E extends Element, T> = {
58
+ name: string;
59
+ description: string;
60
+ filters?: FilterParams<any, any>;
61
+ args?: unknown[];
62
+ interactor: Interactor<E, any>;
63
+ run: (interactor: Interactor<E, any>) => Operation<T>;
64
+ };
65
+ export declare function createInteraction<E extends Element, T>(type: 'action', options: InteractionOptions<E, T>): ActionInteraction<E, T>;
66
+ export declare function createInteraction<E extends Element, T>(type: 'assertion', options: InteractionOptions<E, T>): AssertionInteraction<E, T>;
67
+ export declare function createInteraction<E extends Element, T, Q>(type: 'action', options: InteractionOptions<E, T>, apply: FilterFn<Q, Element>): ActionInteraction<E, T> & FilterObject<Q, Element>;
68
+ export declare function createInteraction<E extends Element, T, Q>(type: 'assertion', options: InteractionOptions<E, T>, apply: FilterFn<Q, Element>): AssertionInteraction<E, T> & FilterObject<Q, Element>;
41
69
  export {};
42
70
  //# sourceMappingURL=interaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,QAAA,MAAM,iBAAiB,eAA4B,CAAC;AAEpD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAEnE;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAChD;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;IAEzB,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAA;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC5D;;OAEG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;CACzB;AAwBD,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAE5F;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAE7F;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAEjK;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAEnK"}
1
+ {"version":3,"file":"interaction.d.ts","sourceRoot":"","sources":["../src/interaction.ts"],"names":[],"mappings":"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"}
package/dist/match.d.ts CHANGED
@@ -8,8 +8,8 @@ export declare class Match<E extends Element, F extends Filters<E>> {
8
8
  locator?: Locator<E> | undefined;
9
9
  matchLocator?: MatchLocator<E>;
10
10
  matchFilter: MatchFilter<E, F>;
11
- matches: boolean;
12
11
  constructor(element: E, filterSet: FilterSet<E, F>, locator?: Locator<E> | undefined);
12
+ get matches(): boolean;
13
13
  asTableHeader(name: string): string[];
14
14
  asTableRow(): string[];
15
15
  get sortWeight(): number;
@@ -18,10 +18,10 @@ export declare class Match<E extends Element, F extends Filters<E>> {
18
18
  export declare class MatchLocator<E extends Element> {
19
19
  element: E;
20
20
  locator: Locator<E>;
21
- matches: boolean;
22
21
  expected: MaybeMatcher<string> | null;
23
22
  actual: string | null;
24
23
  constructor(element: E, locator: Locator<E>);
24
+ get matches(): boolean;
25
25
  formatActual(): string;
26
26
  description(): string;
27
27
  get sortWeight(): number;
@@ -29,9 +29,9 @@ export declare class MatchLocator<E extends Element> {
29
29
  export declare class MatchFilter<E extends Element, F extends Filters<E>> {
30
30
  element: E;
31
31
  filter: FilterSet<E, F>;
32
- matches: boolean;
33
32
  items: MatchFilterItem<unknown, E, F>[];
34
33
  constructor(element: E, filter: FilterSet<E, F>);
34
+ get matches(): boolean;
35
35
  asTableRow(): string[];
36
36
  get sortWeight(): number;
37
37
  formatAsExpectations(): string;
@@ -42,9 +42,9 @@ export declare class MatchFilterItem<T, E extends Element, F extends Filters<E>>
42
42
  filter: FilterSet<E, F>;
43
43
  key: string;
44
44
  expected: MaybeMatcher<T>;
45
- actual: T;
46
- matches: boolean;
47
45
  constructor(element: E, filter: FilterSet<E, F>, key: string, expected: MaybeMatcher<T>);
46
+ get matches(): boolean;
47
+ get actual(): T;
48
48
  formatActual(): string;
49
49
  formatExpected(): string;
50
50
  description(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../src/match.ts"],"names":[],"mappings":"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"}
package/dist/matcher.d.ts CHANGED
@@ -1,9 +1,11 @@
1
1
  export interface Matcher<T> {
2
2
  match(actual: T): boolean;
3
3
  description(): string;
4
+ code?(): string;
4
5
  }
5
6
  export declare type MaybeMatcher<T> = Matcher<T> | T;
6
7
  export declare function isMatcher<T>(value: MaybeMatcher<T>): value is Matcher<T>;
7
8
  export declare function matcherDescription<T>(value: MaybeMatcher<T>): string;
8
9
  export declare function applyMatcher<T>(value: MaybeMatcher<T>, actual: T): boolean;
10
+ export declare function matcherCode<T>(value: MaybeMatcher<T>): string;
9
11
  //# sourceMappingURL=matcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../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;CACvB;AAED,oBAAY,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"}
1
+ {"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../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,oBAAY,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 +1 @@
1
- {"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../src/matchers/and.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAErF,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAS7D"}
1
+ {"version":3,"file":"and.d.ts","sourceRoot":"","sources":["../../src/matchers/and.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAiD,MAAM,YAAY,CAAC;AAElG,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY7D"}
@@ -1 +1 @@
1
- {"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../src/matchers/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAErF,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CASxE"}
1
+ {"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../src/matchers/every.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAiD,MAAM,YAAY,CAAC;AAElG,wBAAgB,KAAK,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"including.d.ts","sourceRoot":"","sources":["../../src/matchers/including.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS5D"}
1
+ {"version":3,"file":"including.d.ts","sourceRoot":"","sources":["../../src/matchers/including.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAc,MAAM,YAAY,CAAC;AAEjD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../src/matchers/matching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASxD"}
1
+ {"version":3,"file":"matching.d.ts","sourceRoot":"","sources":["../../src/matchers/matching.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAe,MAAM,YAAY,CAAC;AAElD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAYxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"not.d.ts","sourceRoot":"","sources":["../../src/matchers/not.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAErF,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAS3D"}
1
+ {"version":3,"file":"not.d.ts","sourceRoot":"","sources":["../../src/matchers/not.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAiD,MAAM,YAAY,CAAC;AAElG,wBAAgB,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAY3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../src/matchers/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAErF,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAS5D"}
1
+ {"version":3,"file":"or.d.ts","sourceRoot":"","sources":["../../src/matchers/or.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAiD,MAAM,YAAY,CAAC;AAElG,wBAAgB,EAAE,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAY5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"some.d.ts","sourceRoot":"","sources":["../../src/matchers/some.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAErF,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CASvE"}
1
+ {"version":3,"file":"some.d.ts","sourceRoot":"","sources":["../../src/matchers/some.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAiD,MAAM,YAAY,CAAC;AAElG,wBAAgB,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAYvE"}
@@ -0,0 +1,9 @@
1
+ import { InteractorOptions } from './specification';
2
+ export declare function findElements<E extends Element>(parentElement: Element, interactor: InteractorOptions<any, any, any>): E[];
3
+ export declare function hasMatchMatching(parentElement: Element, interactor: InteractorOptions<any, any, any>): boolean;
4
+ export declare function resolveUnique(parentElement: Element, interactor: InteractorOptions<any, any, any>): Element;
5
+ export declare function resolveFirst(parentElement: Element, interactor: InteractorOptions<any, any, any>): Element;
6
+ export declare function resolveEmpty(parentElement: Element, interactor: InteractorOptions<any, any, any>): void;
7
+ export declare function unsafeSyncResolveParent(options: InteractorOptions<any, any, any>): Element;
8
+ export declare function unsafeSyncResolveUnique<E extends Element>(options: InteractorOptions<E, any, any>): E;
9
+ //# sourceMappingURL=resolvers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../src/resolvers.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAIpD,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAYzH;AA0BD,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAE9G;AAcD,wBAAgB,aAAa,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAS3G;AAID,wBAAgB,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAE1G;AAID,wBAAgB,YAAY,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,CAOvG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,CAE1F;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAErG"}
@@ -0,0 +1,13 @@
1
+ import { InteractionOptions as SerializedInteractionOptions, InteractionType } from "@interactors/globals";
2
+ import { InteractionOptions } from "./interaction";
3
+ import { InteractorOptions } from "./specification";
4
+ export declare function serializeInteractorOptions(options: InteractorOptions<any, any, any>): {
5
+ interactor: string;
6
+ filter: {
7
+ [name: string]: unknown;
8
+ };
9
+ locator: string;
10
+ code: () => string;
11
+ };
12
+ export declare function serializeInteractionOptions<E extends Element, T>(type: InteractionType, { name, interactor: { options }, args, filters }: InteractionOptions<E, T>): SerializedInteractionOptions;
13
+ //# sourceMappingURL=serialize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialize.d.ts","sourceRoot":"","sources":["../src/serialize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,IAAI,4BAA4B,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,MAAM,CAAC;CACpB,CAcA;AAED,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,OAAO,EAAE,CAAC,EAC9D,IAAI,EAAE,eAAe,EACrB,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,GACzE,4BAA4B,CAsB9B"}
@@ -1,6 +1,7 @@
1
+ import { Operation } from '@effection/core';
1
2
  import { FilterSet } from './filter-set';
2
3
  import { Locator } from './locator';
3
- import { Interaction, ReadonlyInteraction } from './interaction';
4
+ import { ActionInteraction, AssertionInteraction } from './interaction';
4
5
  import { MergeObjects } from './merge-objects';
5
6
  import { MaybeMatcher } from './matcher';
6
7
  export declare type EmptyObject = Record<never, never>;
@@ -32,7 +33,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
32
33
  * await Link('Next').perform((e) => e.click());
33
34
  * ```
34
35
  */
35
- perform(fn: (element: E) => void): Interaction<void>;
36
+ perform(fn: (element: E) => void): ActionInteraction<E, void>;
36
37
  /**
37
38
  * Perform a one-off assertion on the given interactor. Takes a function which
38
39
  * receives an element. This function converges, which means that it is rerun
@@ -47,7 +48,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
47
48
  * await Link('Next').assert((e) => assert(e.tagName === 'A'));
48
49
  * ```
49
50
  */
50
- assert(fn: (element: E) => void): ReadonlyInteraction<void>;
51
+ assert(fn: (element: E) => void): AssertionInteraction<E, void>;
51
52
  /**
52
53
  * An assertion which checks that an element matching the interactor exists.
53
54
  * Throws an error if the element does not exist.
@@ -58,7 +59,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
58
59
  * await Link('Next').exists();
59
60
  * ```
60
61
  */
61
- exists(): ReadonlyInteraction<void> & FilterObject<boolean, Element>;
62
+ exists(): AssertionInteraction<E, void> & FilterObject<boolean, Element>;
62
63
  /**
63
64
  * An assertion which checks that an element matching the interactor does not
64
65
  * exist. Throws an error if the element exists.
@@ -69,7 +70,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
69
70
  * await Link('Next').absent();
70
71
  * ```
71
72
  */
72
- absent(): ReadonlyInteraction<void> & FilterObject<boolean, Element>;
73
+ absent(): AssertionInteraction<E, void> & FilterObject<boolean, Element>;
73
74
  /**
74
75
  * Checks that there is one element matching the interactor, and that this
75
76
  * element matches the given filters. The available filters are defined by
@@ -81,7 +82,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
81
82
  * await Link('Home').has({ href: '/' })
82
83
  * ```
83
84
  */
84
- has(filters: F): ReadonlyInteraction<void>;
85
+ has(filters: F): AssertionInteraction<E, void>;
85
86
  /**
86
87
  * Identical to {@link has}, but reads better with some filters.
87
88
  *
@@ -91,7 +92,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
91
92
  * await CheckBox('Accept conditions').is({ checked: true })
92
93
  * ```
93
94
  */
94
- is(filters: F): ReadonlyInteraction<void>;
95
+ is(filters: F): AssertionInteraction<E, void>;
95
96
  /**
96
97
  * Returns a copy of the given interactor which is scoped to this interactor.
97
98
  * When there are multiple matches for an interactor, this makes it possible
@@ -114,7 +115,7 @@ export interface Interactor<E extends Element, F extends FilterParams<any, any>>
114
115
  */
115
116
  apply: FilterFn<string, Element>;
116
117
  }
117
- export declare type ActionFn<E extends Element> = (interactor: Interactor<E, EmptyObject>, ...args: any[]) => Promise<unknown>;
118
+ export declare type ActionFn<E extends Element, I extends Interactor<E, any>> = (interactor: I, ...args: any[]) => Operation<unknown>;
118
119
  export declare type FilterFn<T, E extends Element> = (element: E) => T;
119
120
  export declare type FilterObject<T, E extends Element> = {
120
121
  apply: FilterFn<T, E>;
@@ -122,9 +123,9 @@ export declare type FilterObject<T, E extends Element> = {
122
123
  };
123
124
  export declare type FilterDefinition<T, E extends Element> = FilterFn<T, E> | FilterObject<T, E>;
124
125
  export declare type Filters<E extends Element> = Record<string, FilterDefinition<unknown, E>>;
125
- export declare type Actions<E extends Element> = Record<string, ActionFn<E>>;
126
+ export declare type Actions<E extends Element, I extends Interactor<E, any>> = Record<string, ActionFn<E, I>>;
126
127
  export declare type SelectorFn<E extends Element> = (parentElement: Element) => E[];
127
- export declare type InteractorSpecification<E extends Element, F extends Filters<E>, A extends Actions<E>> = {
128
+ export declare type InteractorSpecification<E extends Element, F extends Filters<E>, A extends Actions<E, Interactor<E, EmptyObject>>> = {
128
129
  /**
129
130
  * The CSS selector that this interactor uses to find matching elements
130
131
  */
@@ -139,11 +140,11 @@ export declare type InteractorSpecification<E extends Element, F extends Filters
139
140
  */
140
141
  locator?: FilterDefinition<string, E>;
141
142
  };
142
- export declare type ActionMethods<E extends Element, A extends Actions<E>> = {
143
- [P in keyof A]: A[P] extends ((interactor: Interactor<E, EmptyObject>, ...args: infer TArgs) => Promise<infer TReturn>) ? ((...args: TArgs) => Interaction<TReturn>) : never;
143
+ export declare type ActionMethods<E extends Element, A extends Actions<E, I>, I extends Interactor<E, any>> = {
144
+ [P in keyof A]: A[P] extends ((interactor: I, ...args: infer TArgs) => Operation<infer TReturn>) ? ((...args: TArgs) => ActionInteraction<E, TReturn>) : never;
144
145
  };
145
146
  export declare type FilterMethods<E extends Element, F extends Filters<E>> = {
146
- [P in keyof F]: F[P] extends FilterFn<infer TReturn, any> ? (() => Interaction<TReturn> & FilterObject<TReturn, Element>) : F[P] extends FilterObject<infer TReturn, any> ? (() => Interaction<TReturn> & FilterObject<TReturn, Element>) : never;
147
+ [P in keyof F]: F[P] extends FilterFn<infer TReturn, any> ? (() => AssertionInteraction<E, TReturn> & FilterObject<TReturn, Element>) : F[P] extends FilterObject<infer TReturn, any> ? (() => AssertionInteraction<E, TReturn> & FilterObject<TReturn, Element>) : never;
147
148
  };
148
149
  export declare type FilterReturn<F> = {
149
150
  [P in keyof F]?: F[P] extends MaybeMatcher<infer T> ? T : never;
@@ -163,11 +164,11 @@ export declare type FilterParams<E extends Element, F extends Filters<E>> = keyo
163
164
  * @typeParam F the filters of this interactor, this is usually inferred from the specification
164
165
  * @typeParam A the actions of this interactor, this is usually inferred from the specification
165
166
  */
166
- export interface InteractorConstructor<E extends Element, FP extends FilterParams<any, any>, FM extends FilterMethods<any, any>, AM extends ActionMethods<any, any>> {
167
+ export interface InteractorConstructor<E extends Element, FP extends FilterParams<any, any>, FM extends FilterMethods<any, any>, AM extends ActionMethods<any, any, any>> {
167
168
  selector(value: string | SelectorFn<E>): InteractorConstructor<E, FP, FM, AM>;
168
169
  locator(value: FilterDefinition<string, E>): InteractorConstructor<E, FP, FM, AM>;
169
170
  filters<FR extends Filters<E>>(filters: FR): InteractorConstructor<E, MergeObjects<FP, FilterParams<E, FR>>, MergeObjects<FM, FilterMethods<E, FR>>, AM>;
170
- actions<AR extends Actions<E>>(actions: AR): InteractorConstructor<E, FP, FM, MergeObjects<AM, ActionMethods<E, AR>>>;
171
+ actions<I extends Interactor<E, FP> & FM & AM, AR extends Actions<E, I>>(actions: AR): InteractorConstructor<E, FP, FM, MergeObjects<AM, ActionMethods<E, AR, I>>>;
171
172
  extend<ER extends E = E>(name: string): InteractorConstructor<ER, FP, FM, AM>;
172
173
  /**
173
174
  * The constructor can be called with filters only:
@@ -190,6 +191,7 @@ export interface InteractorConstructor<E extends Element, FP extends FilterParam
190
191
  *
191
192
  * ``` typescript
192
193
  * Link('Home');
194
+ * Link(/^home/i);
193
195
  * ```
194
196
  *
195
197
  * Or with a locator and options:
@@ -201,9 +203,9 @@ export interface InteractorConstructor<E extends Element, FP extends FilterParam
201
203
  * @param value The locator value, which should match the value of applying the locator function defined in the {@link InteractorSpecification} to the element.
202
204
  * @param filters An object describing a set of filters to apply, which should match the value of applying the filters defined in the {@link InteractorSpecification} to the element.
203
205
  */
204
- (value: MaybeMatcher<string>, filters?: FP): Interactor<E, FP> & FM & AM;
206
+ (value: MaybeMatcher<string> | RegExp, filters?: FP): Interactor<E, FP> & FM & AM;
205
207
  }
206
- export declare type InteractorOptions<E extends Element, F extends Filters<E>, A extends Actions<E>> = {
208
+ export declare type InteractorOptions<E extends Element, F extends Filters<E>, A extends Actions<E, Interactor<E, EmptyObject>>> = {
207
209
  name: string;
208
210
  specification: InteractorSpecification<E, F, A>;
209
211
  locator?: Locator<E>;
@@ -1 +1 @@
1
- {"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../src/specification.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"specification.d.ts","sourceRoot":"","sources":["../src/specification.ts"],"names":[],"mappings":"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"}