@interactors/core 1.0.0-rc1.2 → 1.0.0-rc1.3

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 (72) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/constructor.js +62 -126
  3. package/dist/cjs/constructor.js.map +1 -1
  4. package/dist/cjs/converge.js +3 -5
  5. package/dist/cjs/converge.js.map +1 -1
  6. package/dist/cjs/format.js +50 -0
  7. package/dist/cjs/format.js.map +1 -0
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/inspector.js +2 -1
  10. package/dist/cjs/inspector.js.map +1 -1
  11. package/dist/cjs/interaction.js +59 -35
  12. package/dist/cjs/interaction.js.map +1 -1
  13. package/dist/cjs/match.js +17 -7
  14. package/dist/cjs/match.js.map +1 -1
  15. package/dist/cjs/resolvers.js +98 -0
  16. package/dist/cjs/resolvers.js.map +1 -0
  17. package/dist/cjs/serialize.js +48 -0
  18. package/dist/cjs/serialize.js.map +1 -0
  19. package/dist/constructor.d.ts +0 -6
  20. package/dist/constructor.d.ts.map +1 -1
  21. package/dist/converge.d.ts +2 -1
  22. package/dist/converge.d.ts.map +1 -1
  23. package/dist/esm/constructor.js +59 -117
  24. package/dist/esm/constructor.js.map +1 -1
  25. package/dist/esm/converge.js +3 -5
  26. package/dist/esm/converge.js.map +1 -1
  27. package/dist/esm/{format-table.js → format.js} +19 -1
  28. package/dist/esm/format.js.map +1 -0
  29. package/dist/esm/index.js.map +1 -1
  30. package/dist/esm/inspector.js +2 -1
  31. package/dist/esm/inspector.js.map +1 -1
  32. package/dist/esm/interaction.js +56 -29
  33. package/dist/esm/interaction.js.map +1 -1
  34. package/dist/esm/match.js +17 -7
  35. package/dist/esm/match.js.map +1 -1
  36. package/dist/esm/resolvers.js +88 -0
  37. package/dist/esm/resolvers.js.map +1 -0
  38. package/dist/esm/serialize.js +43 -0
  39. package/dist/esm/serialize.js.map +1 -0
  40. package/dist/format.d.ts +10 -0
  41. package/dist/format.d.ts.map +1 -0
  42. package/dist/index.d.ts +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/inspector.d.ts.map +1 -1
  45. package/dist/interaction.d.ts +38 -10
  46. package/dist/interaction.d.ts.map +1 -1
  47. package/dist/match.d.ts +5 -5
  48. package/dist/match.d.ts.map +1 -1
  49. package/dist/resolvers.d.ts +9 -0
  50. package/dist/resolvers.d.ts.map +1 -0
  51. package/dist/serialize.d.ts +13 -0
  52. package/dist/serialize.d.ts.map +1 -0
  53. package/dist/specification.d.ts +14 -11
  54. package/dist/specification.d.ts.map +1 -1
  55. package/dist/tsconfig.build.tsbuildinfo +1 -1
  56. package/package.json +3 -2
  57. package/src/constructor.ts +65 -133
  58. package/src/converge.ts +3 -6
  59. package/src/format.ts +58 -0
  60. package/src/index.ts +1 -1
  61. package/src/inspector.ts +2 -1
  62. package/src/interaction.ts +101 -36
  63. package/src/match.ts +23 -15
  64. package/src/resolvers.ts +100 -0
  65. package/src/serialize.ts +54 -0
  66. package/src/specification.ts +16 -13
  67. package/dist/cjs/format-table.js +0 -30
  68. package/dist/cjs/format-table.js.map +0 -1
  69. package/dist/esm/format-table.js.map +0 -1
  70. package/dist/format-table.d.ts +0 -6
  71. package/dist/format-table.d.ts.map +0 -1
  72. package/src/format-table.ts +0 -34
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @interactors/core
2
2
 
3
+ ## 1.0.0-rc1.3
4
+
5
+ ### Minor Changes
6
+
7
+ - a3155cf: Store interactor name and interaction arguments for reflection
8
+ - 968109e: Use effection for converge and interactions
9
+
10
+ ### Patch Changes
11
+
12
+ - efecf56: Improve filter matching and reduce unnecessary calls
13
+ - afcf87b: Add code representation for interactions
14
+ - Updated dependencies [a3155cf]
15
+ - Updated dependencies [968109e]
16
+ - Updated dependencies [afcf87b]
17
+ - @interactors/globals@1.0.0-rc1.2
18
+
3
19
  ## 1.0.0-rc1.2
4
20
 
5
21
  ### Patch Changes
@@ -1,102 +1,18 @@
1
1
  "use strict";
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.createConstructor = exports.instantiateInteractor = exports.unsafeSyncResolveUnique = exports.unsafeSyncResolveParent = exports.resolveEmpty = exports.resolveNonEmpty = exports.resolveUnique = exports.findElements = void 0;
5
- const globals_1 = require("@interactors/globals");
4
+ exports.createConstructor = exports.instantiateInteractor = void 0;
6
5
  const converge_1 = require("./converge");
7
6
  const filter_set_1 = require("./filter-set");
8
7
  const locator_1 = require("./locator");
9
8
  const match_1 = require("./match");
10
- const format_table_1 = require("./format-table");
9
+ const format_1 = require("./format");
11
10
  const errors_1 = require("./errors");
12
11
  const interaction_1 = require("./interaction");
13
- const match_2 = require("./match");
14
- const errors_2 = require("./errors");
15
12
  const matcher_1 = require("./matcher");
16
13
  const matching_1 = require("./matchers/matching");
14
+ const resolvers_1 = require("./resolvers");
17
15
  const defaultLocator = (element) => element.textContent || "";
18
- const defaultSelector = 'div';
19
- function findElements(parentElement, interactor) {
20
- if (typeof (interactor.specification.selector) === 'function') {
21
- return interactor.specification.selector(parentElement);
22
- }
23
- else if (interactor.specification.selector === ':root') {
24
- // this is a bit of a hack, because otherwise there isn't a good way of selecting the root element
25
- return [parentElement.ownerDocument.querySelector(':root')];
26
- }
27
- else {
28
- return Array.from(parentElement.querySelectorAll(interactor.specification.selector || defaultSelector));
29
- }
30
- }
31
- exports.findElements = findElements;
32
- function findMatches(parentElement, interactor) {
33
- if (!interactor.name) {
34
- throw new Error('One of your interactors was created without a name. Please provide a label for your interactor:\n\tHTML.extend(\'my interactor\') || createInteractor(\'my interactor\')');
35
- }
36
- return findElements(parentElement, interactor).map((e) => new match_2.Match(e, interactor.filter, interactor.locator));
37
- }
38
- function findMatchesMatching(parentElement, interactor) {
39
- return findMatches(parentElement, interactor).filter((m) => m.matches);
40
- }
41
- function findMatchesNonEmpty(parentElement, interactor) {
42
- let matches = findMatches(parentElement, interactor);
43
- let matching = matches.filter((m) => m.matches);
44
- if (matching.length > 0) {
45
- return matching;
46
- }
47
- else if (matches.length === 0) {
48
- throw new errors_2.NoSuchElementError(`did not find ${description(interactor)}`);
49
- }
50
- else {
51
- let table = format_table_1.formatTable({
52
- headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
53
- rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
54
- });
55
- throw new errors_2.NoSuchElementError(`did not find ${description(interactor)}, did you mean one of:\n\n${table}`);
56
- }
57
- }
58
- // Given a parent element, and an interactor, find exactly one matching element
59
- // and return it. If no elements match, raise an error. If more than one
60
- // element matches, raise an error.
61
- function resolveUnique(parentElement, interactor) {
62
- let matching = findMatchesNonEmpty(parentElement, interactor);
63
- if (matching.length === 1) {
64
- return matching[0].element;
65
- }
66
- else {
67
- let alternatives = matching.map((m) => '- ' + m.elementDescription());
68
- throw new errors_2.AmbiguousElementError(`${description(interactor)} matches multiple elements:\n\n${alternatives.join('\n')}`);
69
- }
70
- }
71
- exports.resolveUnique = resolveUnique;
72
- // Given a parent element, and an interactor, find all matching elements and
73
- // return them. If no elements match, raise an error.
74
- function resolveNonEmpty(parentElement, interactor) {
75
- return findMatchesNonEmpty(parentElement, interactor).map(m => m.element);
76
- }
77
- exports.resolveNonEmpty = resolveNonEmpty;
78
- // Given a parent element, and an interactor, check if there are any matching
79
- // elements, and throw an error if there are. Otherwise return undefined.
80
- function resolveEmpty(parentElement, interactor) {
81
- let matching = findMatchesMatching(parentElement, interactor);
82
- if (matching.length !== 0) {
83
- let alternatives = matching.map((m) => '- ' + m.elementDescription());
84
- throw new errors_2.NotAbsentError(`${description(interactor)} exists but should not:\n\n${alternatives.join('\n')}`);
85
- }
86
- }
87
- exports.resolveEmpty = resolveEmpty;
88
- function ownDescription(options) {
89
- if (options.locator) {
90
- return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
91
- }
92
- else {
93
- return `${options.name} ${options.filter.description}`.trim();
94
- }
95
- }
96
- function description(options) {
97
- let ancestorsAndSelf = options.ancestors.concat(options);
98
- return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
99
- }
100
16
  /**
101
17
  * Removes any default values for a filter from the lookup if that filter is present in the
102
18
  * assertion. Otherwise, it is not possible to make an assertion on a filter that might conflict
@@ -115,28 +31,28 @@ function getLookupFilterForAssertion(filter, filters) {
115
31
  }
116
32
  return lookupFilter;
117
33
  }
118
- function unsafeSyncResolveParent(options) {
119
- return options.ancestors.reduce(resolveUnique, globals_1.globals.document.documentElement);
120
- }
121
- exports.unsafeSyncResolveParent = unsafeSyncResolveParent;
122
- function unsafeSyncResolveUnique(options) {
123
- return resolveUnique(unsafeSyncResolveParent(options), options);
124
- }
125
- exports.unsafeSyncResolveUnique = unsafeSyncResolveUnique;
126
34
  function instantiateInteractor(options, resolver) {
127
35
  let interactor = {
128
36
  options,
129
37
  get description() {
130
- return description(options);
38
+ return format_1.formatDescription(options);
131
39
  },
132
40
  perform(fn) {
133
- return interaction_1.interaction(`run perform on ${description(options)}`, () => converge_1.converge(() => fn(resolver(options))));
41
+ return interaction_1.createInteraction('action', {
42
+ name: "perform",
43
+ interactor,
44
+ args: [],
45
+ description: `run perform on ${format_1.formatDescription(options)}`,
46
+ run: (interactor) => converge_1.converge(() => fn(resolver(interactor.options))),
47
+ });
134
48
  },
135
49
  assert(fn) {
136
- return interaction_1.check(`${description(options)} asserts`, () => {
137
- return converge_1.converge(() => {
138
- fn(resolver(options));
139
- });
50
+ return interaction_1.createInteraction('assertion', {
51
+ name: "assert",
52
+ interactor,
53
+ args: [],
54
+ description: `${format_1.formatDescription(options)} asserts`,
55
+ run: (interactor) => converge_1.converge(() => { fn(resolver(interactor.options)); }),
140
56
  });
141
57
  },
142
58
  has(filters) {
@@ -144,14 +60,19 @@ function instantiateInteractor(options, resolver) {
144
60
  },
145
61
  is(filters) {
146
62
  let filter = new filter_set_1.FilterSet(options.specification, filters);
147
- return interaction_1.check(`${description(options)} matches filters: ${filter.description}`, () => {
148
- return converge_1.converge(() => {
149
- let element = resolver({ ...options, filter: getLookupFilterForAssertion(options.filter, filters) });
63
+ return interaction_1.createInteraction('assertion', {
64
+ name: "is",
65
+ interactor,
66
+ args: [filters],
67
+ filters,
68
+ description: `${format_1.formatDescription(options)} matches filters: ${filter.description}`,
69
+ run: (interactor) => converge_1.converge(() => {
70
+ let element = resolver({ ...interactor.options, filter: getLookupFilterForAssertion(interactor.options.filter, filters) });
150
71
  let match = new match_1.MatchFilter(element, filter);
151
72
  if (!match.matches) {
152
- throw new errors_1.FilterNotMatchingError(`${description(options)} does not match filters:\n\n${match.formatAsExpectations()}`);
73
+ throw new errors_1.FilterNotMatchingError(`${format_1.formatDescription(options)} does not match filters:\n\n${match.formatAsExpectations()}`);
153
74
  }
154
- });
75
+ }),
155
76
  });
156
77
  },
157
78
  find(child) {
@@ -161,25 +82,29 @@ function instantiateInteractor(options, resolver) {
161
82
  }, resolver);
162
83
  },
163
84
  exists() {
164
- return interaction_1.checkFilter(`${description(options)} exists`, () => {
165
- return converge_1.converge(() => {
166
- resolveNonEmpty(unsafeSyncResolveParent(options), options);
167
- });
168
- }, (element) => {
169
- return findMatchesMatching(element, options).length > 0;
170
- });
85
+ return interaction_1.createInteraction('assertion', {
86
+ name: 'exists',
87
+ interactor,
88
+ args: [],
89
+ description: `${format_1.formatDescription(options)} exists`,
90
+ run: (interactor) => converge_1.converge(() => {
91
+ resolvers_1.resolveFirst(resolvers_1.unsafeSyncResolveParent(interactor.options), options);
92
+ }),
93
+ }, (element) => resolvers_1.hasMatchMatching(element, options));
171
94
  },
172
95
  absent() {
173
- return interaction_1.checkFilter(`${description(options)} does not exist`, () => {
174
- return converge_1.converge(() => {
175
- resolveEmpty(unsafeSyncResolveParent(options), options);
176
- });
177
- }, (element) => {
178
- return findMatchesMatching(element, options).length === 0;
179
- });
96
+ return interaction_1.createInteraction('assertion', {
97
+ name: 'absent',
98
+ interactor,
99
+ args: [],
100
+ description: `${format_1.formatDescription(options)} does not exist`,
101
+ run: (interactor) => converge_1.converge(() => {
102
+ resolvers_1.resolveEmpty(resolvers_1.unsafeSyncResolveParent(interactor.options), options);
103
+ }),
104
+ }, (element) => !resolvers_1.hasMatchMatching(element, options));
180
105
  },
181
106
  apply(parentElement) {
182
- let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
107
+ let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
183
108
  return match_1.applyFilter(options.specification.locator || defaultLocator, element);
184
109
  }
185
110
  };
@@ -191,7 +116,13 @@ function instantiateInteractor(options, resolver) {
191
116
  if (args.length) {
192
117
  actionDescription += ` with ` + args.map((a) => JSON.stringify(a)).join(', ');
193
118
  }
194
- return interaction_1.interaction(`${actionDescription} on ${description(options)}`, () => action(interactor, ...args));
119
+ return interaction_1.createInteraction('action', {
120
+ name: actionName,
121
+ interactor,
122
+ args,
123
+ description: `${actionDescription} on ${format_1.formatDescription(options)}`,
124
+ run: (interactor) => action(interactor, ...args)
125
+ });
195
126
  },
196
127
  configurable: true,
197
128
  writable: true,
@@ -203,10 +134,14 @@ function instantiateInteractor(options, resolver) {
203
134
  if (!interactor.hasOwnProperty(filterName)) {
204
135
  Object.defineProperty(interactor, filterName, {
205
136
  value: function () {
206
- return interaction_1.interactionFilter(`${filterName} of ${description(options)}`, async () => {
207
- return converge_1.converge(() => match_1.applyFilter(filter, resolver(options)));
137
+ return interaction_1.createInteraction('assertion', {
138
+ name: filterName,
139
+ interactor,
140
+ args: [],
141
+ description: `${filterName} of ${format_1.formatDescription(options)}`,
142
+ run: (interactor) => converge_1.converge(() => match_1.applyFilter(filter, resolver(interactor.options))),
208
143
  }, (parentElement) => {
209
- let element = [...options.ancestors, options].reduce(resolveUnique, parentElement);
144
+ let element = [...options.ancestors, options].reduce(resolvers_1.resolveUnique, parentElement);
210
145
  return match_1.applyFilter(filter, element);
211
146
  });
212
147
  },
@@ -230,9 +165,10 @@ function createConstructor(name, specification) {
230
165
  else {
231
166
  filter = new filter_set_1.FilterSet(specification, args[0] || {});
232
167
  }
233
- return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, unsafeSyncResolveUnique);
168
+ return instantiateInteractor({ name, specification, filter, locator, ancestors: [] }, resolvers_1.unsafeSyncResolveUnique);
234
169
  }
235
170
  return Object.assign(initInteractor, {
171
+ interactorName: name,
236
172
  selector: (value) => {
237
173
  return createConstructor(name, { ...specification, selector: value });
238
174
  },
@@ -1 +1 @@
1
- {"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constructor.js","sourceRoot":"","sources":["../../src/constructor.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.converge = void 0;
4
+ const core_1 = require("@effection/core");
4
5
  const performance_api_1 = require("performance-api");
5
6
  const globals_1 = require("@interactors/globals");
6
- function wait(ms) {
7
- return new Promise((resolve) => setTimeout(resolve, ms));
8
- }
9
- async function converge(fn) {
7
+ function* converge(fn) {
10
8
  let startTime = performance_api_1.performance.now();
11
9
  while (true) {
12
10
  try {
@@ -18,7 +16,7 @@ async function converge(fn) {
18
16
  throw e;
19
17
  }
20
18
  else {
21
- await wait(1);
19
+ yield core_1.sleep(1);
22
20
  }
23
21
  }
24
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":";;;AAAA,qDAA8C;AAC9C,kDAA8C;AAE9C,SAAS,IAAI,CAAC,EAAU;IACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAI,EAAW;IAC3C,IAAI,SAAS,GAAG,6BAAW,CAAC,GAAG,EAAE,CAAC;IAClC,OAAM,IAAI,EAAE;QACV,IAAI;YACF,OAAO,EAAE,EAAE,CAAC;SACb;QAAC,OAAM,CAAC,EAAE;YACT,IAAI,IAAI,GAAG,6BAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,IAAG,IAAI,GAAG,iBAAO,CAAC,iBAAiB,EAAE;gBACnC,MAAM,CAAC,CAAC;aACT;iBAAM;gBACL,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;aACf;SACF;KACF;AACH,CAAC;AAdD,4BAcC"}
1
+ {"version":3,"file":"converge.js","sourceRoot":"","sources":["../../src/converge.ts"],"names":[],"mappings":";;;AAAA,0CAAmD;AACnD,qDAA8C;AAC9C,kDAA8C;AAE9C,QAAe,CAAC,CAAC,QAAQ,CAAI,EAAW;IACtC,IAAI,SAAS,GAAG,6BAAW,CAAC,GAAG,EAAE,CAAC;IAClC,OAAM,IAAI,EAAE;QACV,IAAI;YACF,OAAO,EAAE,EAAE,CAAC;SACb;QAAC,OAAM,CAAC,EAAE;YACT,IAAI,IAAI,GAAG,6BAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,IAAG,IAAI,GAAG,iBAAO,CAAC,iBAAiB,EAAE;gBACnC,MAAM,CAAC,CAAC;aACT;iBAAM;gBACL,MAAM,YAAK,CAAC,CAAC,CAAC,CAAC;aAChB;SACF;KACF;AACH,CAAC;AAdD,4BAcC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.formatMatchesTable = exports.formatDescription = exports.formatTable = void 0;
4
+ const MAX_COLUMN_WIDTH = 40;
5
+ function formatValue(value, width) {
6
+ if (value.length > width) {
7
+ return value.slice(0, width - 1) + '…';
8
+ }
9
+ else {
10
+ return value.padEnd(width);
11
+ }
12
+ }
13
+ function formatTable(options) {
14
+ let columnWidths = options.headers.map((h, index) => {
15
+ return Math.min(MAX_COLUMN_WIDTH, Math.max(h.length, ...options.rows.map((r) => r[index].length)));
16
+ });
17
+ let formatRow = (cells) => {
18
+ return '┃ ' + cells.map((c, index) => formatValue(c, columnWidths[index])).join(' ┃ ') + ' ┃';
19
+ };
20
+ let spacerRow = () => {
21
+ return '┣━' + columnWidths.map((w) => "━".repeat(w)).join('━╋━') + '━┫';
22
+ };
23
+ return [
24
+ formatRow(options.headers),
25
+ spacerRow(),
26
+ ...options.rows.map((row) => formatRow(row))
27
+ ].join('\n');
28
+ }
29
+ exports.formatTable = formatTable;
30
+ function ownDescription(options) {
31
+ if (options.locator) {
32
+ return `${options.name} ${options.locator.description} ${options.filter.description}`.trim();
33
+ }
34
+ else {
35
+ return `${options.name} ${options.filter.description}`.trim();
36
+ }
37
+ }
38
+ function formatDescription(options) {
39
+ let ancestorsAndSelf = options.ancestors.concat(options);
40
+ return ancestorsAndSelf.reverse().map(ownDescription).join(' within ');
41
+ }
42
+ exports.formatDescription = formatDescription;
43
+ function formatMatchesTable(interactor, matches) {
44
+ return formatTable({
45
+ headers: interactor.locator ? [interactor.name, ...interactor.filter.asTableHeader()] : interactor.filter.asTableHeader(),
46
+ rows: matches.slice().sort((a, b) => b.sortWeight - a.sortWeight).map((m) => m.asTableRow()),
47
+ });
48
+ }
49
+ exports.formatMatchesTable = formatMatchesTable;
50
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/format.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6CAAgF;AAArC,4GAAA,aAAa,OAAA;AACxD,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,yCAA6C;AAApC,4GAAA,eAAe,OAAA;AACxB,yDAA+C;AAAtC,+GAAA,SAAS,OAAA;AAGlB,kDAAiD;AAAxC,sGAAA,SAAS,OAAA;AAClB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,oCAAmC;AAA1B,wFAAA,EAAE,OAAA;AACX,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,wCAAuC;AAA9B,4FAAA,IAAI,OAAA;AACb,0CAAyC;AAAhC,8FAAA,KAAK,OAAA;AAEd,yCAAwC;AAA/B,8FAAA,KAAK,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,6CAAoG;AAArC,4GAAA,aAAa,OAAA;AAC5E,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AACzB,yCAA6C;AAApC,4GAAA,eAAe,OAAA;AACxB,yDAA+C;AAAtC,+GAAA,SAAS,OAAA;AAGlB,kDAAiD;AAAxC,sGAAA,SAAS,OAAA;AAClB,gDAA+C;AAAtC,oGAAA,QAAQ,OAAA;AACjB,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,oCAAmC;AAA1B,wFAAA,EAAE,OAAA;AACX,sCAAqC;AAA5B,0FAAA,GAAG,OAAA;AACZ,wCAAuC;AAA9B,4FAAA,IAAI,OAAA;AACb,0CAAyC;AAAhC,8FAAA,KAAK,OAAA;AAEd,yCAAwC;AAA/B,8FAAA,KAAK,OAAA"}
@@ -3,12 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.createInspector = void 0;
5
5
  const constructor_1 = require("./constructor");
6
+ const resolvers_1 = require("./resolvers");
6
7
  function createInspector(constructor, parentElement) {
7
8
  // NOTE: Wait for https://github.com/thefrontside/bigtest/pull/895 to use specification instead
8
9
  let options = constructor().options;
9
10
  return {
10
11
  all() {
11
- let elements = constructor_1.findElements(parentElement !== null && parentElement !== void 0 ? parentElement : constructor_1.unsafeSyncResolveParent(options), options);
12
+ let elements = resolvers_1.findElements(parentElement !== null && parentElement !== void 0 ? parentElement : resolvers_1.unsafeSyncResolveParent(options), options);
12
13
  return elements.map(element => (Object.assign(constructor_1.instantiateInteractor(options, () => element), {
13
14
  element,
14
15
  find(constructor) {
@@ -1 +1 @@
1
- {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,+CAA6F;AAmB7F,SAAgB,eAAe,CAC7B,WAAe,EACf,aAAuB;IAEvB,+FAA+F;IAC/F,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC,OAAoC,CAAA;IAChE,OAAO;QACL,GAAG;YACD,IAAI,QAAQ,GAAG,0BAAY,CAAiB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,qCAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACxG,OAAO,QAAQ,CAAC,GAAG,CACjB,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CACvB,mCAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAA2E,EAAE;gBACzH,OAAO;gBACP,IAAI,CAAsD,WAAc;oBACtE,OAAO,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAC9C,CAAC;aACF,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AApBD,0CAoBC"}
1
+ {"version":3,"file":"inspector.js","sourceRoot":"","sources":["../../src/inspector.ts"],"names":[],"mappings":";AAAA,uDAAuD;;;AAEvD,+CAAsD;AACtD,2CAAmE;AAmBnE,SAAgB,eAAe,CAC7B,WAAe,EACf,aAAuB;IAEvB,+FAA+F;IAC/F,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC,OAAoC,CAAA;IAChE,OAAO;QACL,GAAG;YACD,IAAI,QAAQ,GAAG,wBAAY,CAAiB,aAAa,aAAb,aAAa,cAAb,aAAa,GAAI,mCAAuB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;YACxG,OAAO,QAAQ,CAAC,GAAG,CACjB,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CACvB,mCAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAA2E,EAAE;gBACzH,OAAO;gBACP,IAAI,CAAsD,WAAc;oBACtE,OAAO,eAAe,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;gBAC9C,CAAC;aACF,CAAC,CAAC,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AApBD,0CAoBC"}
@@ -1,53 +1,77 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkFilter = exports.interactionFilter = exports.check = exports.interaction = exports.isInteraction = void 0;
3
+ exports.createInteraction = exports.isInteraction = void 0;
4
+ /* eslint-disable @typescript-eslint/no-explicit-any */
5
+ const core_1 = require("@effection/core");
4
6
  const globals_1 = require("@interactors/globals");
5
- const interactionSymbol = Symbol.for('interaction');
7
+ const serialize_1 = require("./serialize");
8
+ const interactionSymbol = core_1.Symbol.for('interaction');
6
9
  function isInteraction(x) {
7
10
  return typeof x === 'object' && x != null && interactionSymbol in x;
8
11
  }
9
12
  exports.isInteraction = isInteraction;
10
- function createInteraction(description, action) {
11
- let promise;
12
- return {
13
- description,
13
+ function createInteraction(type, options, apply) {
14
+ let task;
15
+ let shouldCatchHalt = false;
16
+ function operation(scope) {
17
+ let run = () => options.run(options.interactor);
18
+ return (globals_1.globals.wrapInteraction
19
+ ? globals_1.globals.wrapInteraction(() => scope.run(run), interaction)
20
+ : globals_1.globals.wrapAction(interaction.description, () => scope.run(run), type));
21
+ }
22
+ ;
23
+ function action() {
24
+ if (!task) {
25
+ task = core_1.run(operation);
26
+ }
27
+ return task;
28
+ }
29
+ ;
30
+ function catchHalt(onReject) {
31
+ return (reason) => {
32
+ if (shouldCatchHalt && reason instanceof Error && reason.message == 'halted') {
33
+ return reason;
34
+ }
35
+ else {
36
+ onReject === null || onReject === void 0 ? void 0 : onReject(reason);
37
+ return reason;
38
+ }
39
+ };
40
+ }
41
+ let serializedOptions = serialize_1.serializeInteractionOptions(type, options);
42
+ let interaction = {
43
+ type,
44
+ options: serializedOptions,
45
+ description: options.description,
46
+ interactor: options.interactor,
47
+ run: options.run,
48
+ args: options.args,
14
49
  action,
50
+ check: type === 'assertion' ? action : undefined,
51
+ code: () => serializedOptions.code(),
52
+ halt: () => {
53
+ shouldCatchHalt = true;
54
+ return action().halt();
55
+ },
15
56
  [interactionSymbol]: true,
16
- [Symbol.toStringTag]: `[interaction ${description}]`,
57
+ [core_1.Symbol.toStringTag]: `[interaction ${options.description}]`,
58
+ [core_1.Symbol.operation]: operation,
17
59
  then(onFulfill, onReject) {
18
- if (!promise) {
19
- promise = this.action();
20
- }
21
- return promise.then(onFulfill, onReject);
60
+ return action().then(onFulfill, catchHalt(onReject));
22
61
  },
23
62
  catch(onReject) {
24
- if (!promise) {
25
- promise = this.action();
26
- }
27
- return promise.catch(onReject);
63
+ return action().catch(catchHalt(onReject));
28
64
  },
29
65
  finally(handler) {
30
- if (!promise) {
31
- promise = this.action();
32
- }
33
- return promise.finally(handler);
66
+ return action().finally(handler);
34
67
  }
35
68
  };
69
+ if (apply) {
70
+ return Object.assign(interaction, { apply });
71
+ }
72
+ else {
73
+ return interaction;
74
+ }
36
75
  }
37
- function interaction(description, action) {
38
- return createInteraction(description, globals_1.globals.wrapAction(description, action, 'interaction'));
39
- }
40
- exports.interaction = interaction;
41
- function check(description, check) {
42
- return { check() { return this.action(); }, ...createInteraction(description, globals_1.globals.wrapAction(description, check, 'check')) };
43
- }
44
- exports.check = check;
45
- function interactionFilter(description, action, filter) {
46
- return { apply: filter, ...interaction(description, action) };
47
- }
48
- exports.interactionFilter = interactionFilter;
49
- function checkFilter(description, action, filter) {
50
- return { apply: filter, ...check(description, action) };
51
- }
52
- exports.checkFilter = checkFilter;
76
+ exports.createInteraction = createInteraction;
53
77
  //# sourceMappingURL=interaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/interaction.ts"],"names":[],"mappings":";;;AAAA,kDAA+C;AAG/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAEpD,SAAgB,aAAa,CAAC,CAAU;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,iBAAiB,IAAI,CAAC,CAAA;AACrE,CAAC;AAFD,sCAEC;AAsCD,SAAS,iBAAiB,CAAI,WAAmB,EAAE,MAAwB;IACzE,IAAI,OAAmB,CAAC;IACxB,OAAO;QACL,WAAW;QACX,MAAM;QACN,CAAC,iBAAiB,CAAC,EAAE,IAAI;QACzB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,WAAW,GAAG;QACpD,IAAI,CAAC,SAAS,EAAE,QAAQ;YACtB,IAAG,CAAC,OAAO,EAAE;gBAAE,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;aAAE;YACzC,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,IAAG,CAAC,OAAO,EAAE;gBAAE,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;aAAE;YACzC,OAAO,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,CAAC,OAAO;YACb,IAAG,CAAC,OAAO,EAAE;gBAAE,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;aAAE;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAgB,WAAW,CAAI,WAAmB,EAAE,MAAwB;IAC1E,OAAO,iBAAiB,CAAC,WAAW,EAAE,iBAAO,CAAC,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;AAC/F,CAAC;AAFD,kCAEC;AAED,SAAgB,KAAK,CAAI,WAAmB,EAAE,KAAuB;IACnE,OAAO,EAAE,KAAK,KAAK,OAAO,IAAI,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC,EAAE,GAAG,iBAAiB,CAAC,WAAW,EAAE,iBAAO,CAAC,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;AAClI,CAAC;AAFD,sBAEC;AAED,SAAgB,iBAAiB,CAAO,WAAmB,EAAE,MAAwB,EAAE,MAA+B;IACpH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;AAChE,CAAC;AAFD,8CAEC;AAED,SAAgB,WAAW,CAAO,WAAmB,EAAE,MAAwB,EAAE,MAA+B;IAC9G,OAAO,EAAE,KAAK,EAAE,MAAM,EAAG,GAAG,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;AAC3D,CAAC;AAFD,kCAEC"}
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/interaction.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,0CAA+D;AAC/D,kDAAoH;AAEpH,2CAA0D;AAE1D,MAAM,iBAAiB,GAAkB,aAAM,CAAC,GAAG,CAAC,aAAa,CAAQ,CAAC;AAE1E,SAAgB,aAAa,CAAC,CAAU;IACtC,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,iBAAiB,IAAI,CAAC,CAAA;AACrE,CAAC;AAFD,sCAEC;AAyED,SAAgB,iBAAiB,CAA0B,IAAqB,EAAE,OAAiC,EAAE,KAA4B;IAC/I,IAAI,IAAa,CAAC;IAClB,IAAI,eAAe,GAAG,KAAK,CAAA;IAE3B,SAAS,SAAS,CAAC,KAAW;QAC5B,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAEhD,OAAO,CAAC,iBAAO,CAAC,eAAe;YAC7B,CAAC,CAAC,iBAAO,CAAC,eAAe,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC;YAC5D,CAAC,CAAC,iBAAO,CAAC,UAAU,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAiB,CAAC;IAC/F,CAAC;IAAA,CAAC;IAEF,SAAS,MAAM;QACb,IAAG,CAAC,IAAI,EAAE;YACR,IAAI,GAAG,UAAG,CAAC,SAAS,CAAC,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAA,CAAC;IAEF,SAAS,SAAS,CAAiC,QAAmB;QACpE,OAAO,CAAC,MAAW,EAAE,EAAE;YACrB,IAAI,eAAe,IAAI,MAAM,YAAY,KAAK,IAAI,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE;gBAC5E,OAAO,MAAM,CAAA;aACd;iBAAM;gBACL,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,MAAM,CAAC,CAAA;gBAClB,OAAO,MAAM,CAAA;aACd;QACH,CAAC,CAAA;IACH,CAAC;IAED,IAAI,iBAAiB,GAAG,uCAA2B,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAClE,IAAI,WAAW,GAAqC;QAClD,IAAI;QACJ,OAAO,EAAE,iBAAiB;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM;QACN,KAAK,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAChD,IAAI,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE;QACpC,IAAI,EAAE,GAAG,EAAE;YACT,eAAe,GAAG,IAAI,CAAA;YACtB,OAAO,MAAM,EAAE,CAAC,IAAI,EAAE,CAAA;QACxB,CAAC;QACD,CAAC,iBAAiB,CAAC,EAAE,IAAI;QACzB,CAAC,aAAM,CAAC,WAAW,CAAC,EAAE,gBAAgB,OAAO,CAAC,WAAW,GAAG;QAC5D,CAAC,aAAM,CAAC,SAAS,CAAC,EAAE,SAAS;QAC7B,IAAI,CAAC,SAAS,EAAE,QAAQ;YACtB,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,CAAC,QAAQ;YACZ,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,CAAC,OAAO;YACb,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAA;IACD,IAAI,KAAK,EAAE;QACT,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9C;SAAM;QACL,OAAO,WAAW,CAAC;KACpB;AACH,CAAC;AA/DD,8CA+DC"}
package/dist/cjs/match.js CHANGED
@@ -11,7 +11,9 @@ class Match {
11
11
  this.locator = locator;
12
12
  this.matchLocator = locator && new MatchLocator(element, locator);
13
13
  this.matchFilter = new MatchFilter(element, filterSet);
14
- this.matches = (this.matchLocator ? this.matchLocator.matches : true) && this.matchFilter.matches;
14
+ }
15
+ get matches() {
16
+ return (this.matchLocator ? this.matchLocator.matches : true) && this.matchFilter.matches;
15
17
  }
16
18
  asTableHeader(name) {
17
19
  if (this.matchLocator) {
@@ -48,7 +50,9 @@ class MatchLocator {
48
50
  this.locator = locator;
49
51
  this.expected = locator.value;
50
52
  this.actual = locator.apply(element);
51
- this.matches = matcher_1.applyMatcher(this.expected, this.actual);
53
+ }
54
+ get matches() {
55
+ return matcher_1.applyMatcher(this.expected, this.actual);
52
56
  }
53
57
  formatActual() {
54
58
  return JSON.stringify(this.actual);
@@ -68,7 +72,9 @@ class MatchFilter {
68
72
  this.items = Object.entries(filter.all).map(([key, expected]) => {
69
73
  return new MatchFilterItem(element, filter, key, expected);
70
74
  });
71
- this.matches = this.items.every((match) => match.matches);
75
+ }
76
+ get matches() {
77
+ return this.items.every((match) => match.matches);
72
78
  }
73
79
  asTableRow() {
74
80
  return this.items.map((f) => f.description());
@@ -97,15 +103,19 @@ class MatchFilterItem {
97
103
  this.filter = filter;
98
104
  this.key = key;
99
105
  this.expected = expected;
106
+ }
107
+ get matches() {
108
+ return matcher_1.applyMatcher(this.expected, this.actual);
109
+ }
110
+ get actual() {
100
111
  if (this.filter.specification.filters && this.filter.specification.filters[this.key]) {
101
112
  let definition = this.filter.specification.filters[this.key];
102
- if (typeof (definition) === 'function') {
103
- this.actual = definition(this.element);
113
+ if (typeof definition === 'function') {
114
+ return definition(this.element);
104
115
  }
105
116
  else {
106
- this.actual = definition.apply(this.element);
117
+ return definition.apply(this.element);
107
118
  }
108
- this.matches = matcher_1.applyMatcher(this.expected, this.actual);
109
119
  }
110
120
  else {
111
121
  throw new Error(`interactor does not define a filter named ${JSON.stringify(this.key)}`);