askui 0.1.4 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +6 -0
  2. package/dist/cjs/core/model/test-case-dto/custom-element.d.ts +2 -2
  3. package/dist/cjs/core/model/test-case-dto/custom-element.js +2 -2
  4. package/dist/cjs/core/model/test-case-dto/custom-element.spec.js +7 -6
  5. package/dist/cjs/execution/dsl.d.ts +6 -17
  6. package/dist/cjs/execution/dsl.js +4 -21
  7. package/dist/cjs/execution/execution-runtime.d.ts +5 -5
  8. package/dist/cjs/execution/execution-runtime.js +14 -14
  9. package/dist/cjs/execution/index.d.ts +2 -1
  10. package/dist/cjs/execution/index.js +5 -3
  11. package/dist/cjs/execution/{control-your-ui-api.d.ts → inference-client.d.ts} +3 -3
  12. package/dist/cjs/execution/{control-your-ui-api.js → inference-client.js} +8 -8
  13. package/dist/cjs/execution/ui-control-client-error.d.ts +2 -0
  14. package/dist/cjs/execution/ui-control-client-error.js +6 -0
  15. package/dist/cjs/execution/ui-control-client.d.ts +34 -0
  16. package/dist/cjs/execution/{client.js → ui-control-client.js} +48 -29
  17. package/dist/cjs/execution/{client-connection-state.d.ts → ui-controller-client-connection-state.d.ts} +1 -1
  18. package/dist/cjs/execution/ui-controller-client-connection-state.js +10 -0
  19. package/dist/cjs/execution/ui-controller-client-interface.d.ts +27 -0
  20. package/dist/cjs/execution/{client-interface.js → ui-controller-client-interface.js} +0 -0
  21. package/dist/cjs/execution/{control-your-ui-client.d.ts → ui-controller-client.d.ts} +6 -6
  22. package/dist/cjs/execution/{control-your-ui-client.js → ui-controller-client.js} +28 -28
  23. package/dist/cjs/lib/download-binaries.js +8 -8
  24. package/dist/cjs/lib/index.d.ts +1 -1
  25. package/dist/cjs/lib/index.js +3 -3
  26. package/dist/cjs/lib/libfuse-error.d.ts +2 -0
  27. package/dist/cjs/lib/libfuse-error.js +6 -0
  28. package/dist/cjs/lib/logger.js +1 -1
  29. package/dist/cjs/lib/timeout-error.d.ts +0 -2
  30. package/dist/cjs/lib/timeout-error.js +0 -5
  31. package/dist/cjs/lib/ui-controller-args.d.ts +47 -0
  32. package/dist/cjs/lib/{control-ui-server-args.js → ui-controller-args.js} +0 -0
  33. package/dist/cjs/lib/{control-ui-server-args.spec.d.ts → ui-controller-args.spec.d.ts} +0 -0
  34. package/dist/cjs/lib/{control-ui-server-args.spec.js → ui-controller-args.spec.js} +7 -7
  35. package/dist/cjs/lib/ui-controller-darwin.d.ts +6 -0
  36. package/dist/cjs/lib/{control-ui-server-darwin.js → ui-controller-darwin.js} +8 -8
  37. package/dist/cjs/lib/ui-controller-facade.d.ts +17 -0
  38. package/dist/cjs/lib/{control-ui-server-facade.js → ui-controller-facade.js} +22 -16
  39. package/dist/cjs/lib/ui-controller-linux.d.ts +5 -0
  40. package/dist/cjs/lib/ui-controller-linux.js +52 -0
  41. package/dist/cjs/lib/ui-controller-win32.d.ts +3 -0
  42. package/dist/cjs/lib/ui-controller-win32.js +7 -0
  43. package/dist/cjs/lib/ui-controller.d.ts +8 -0
  44. package/dist/cjs/lib/{askui-control-server.js → ui-controller.js} +9 -9
  45. package/dist/cjs/lib/unkown-error.d.ts +0 -2
  46. package/dist/cjs/lib/unkown-error.js +0 -5
  47. package/dist/cjs/lib/wayland-error.d.ts +2 -0
  48. package/dist/cjs/lib/wayland-error.js +6 -0
  49. package/dist/cjs/main.d.ts +3 -2
  50. package/dist/cjs/main.js +6 -3
  51. package/dist/cjs/shared/index.d.ts +1 -0
  52. package/dist/cjs/shared/index.js +5 -0
  53. package/dist/cjs/utils/analytics/analytics-interface.d.ts +3 -0
  54. package/dist/cjs/utils/analytics/analytics-interface.js +2 -0
  55. package/dist/cjs/utils/analytics/analytics.d.ts +5 -0
  56. package/dist/cjs/utils/analytics/analytics.js +32 -0
  57. package/dist/cjs/utils/analytics/index.d.ts +1 -0
  58. package/dist/cjs/utils/analytics/index.js +5 -0
  59. package/dist/cjs/utils/analytics/user-identifier-interface.d.ts +3 -0
  60. package/dist/cjs/utils/analytics/user-identifier-interface.js +2 -0
  61. package/dist/cjs/utils/analytics/user-identifier.d.ts +4 -0
  62. package/dist/cjs/utils/analytics/user-identifier.js +22 -0
  63. package/dist/cjs/utils/base_64_image/base-64-image-error.d.ts +2 -0
  64. package/dist/cjs/utils/base_64_image/base-64-image-error.js +6 -0
  65. package/dist/cjs/utils/base_64_image/base-64-image-path-error.d.ts +4 -0
  66. package/dist/cjs/utils/base_64_image/base-64-image-path-error.js +11 -0
  67. package/dist/cjs/utils/base_64_image/base-64-image-string-error.d.ts +4 -0
  68. package/dist/cjs/utils/base_64_image/base-64-image-string-error.js +11 -0
  69. package/dist/cjs/utils/base_64_image/base-64-image.d.ts +18 -0
  70. package/dist/cjs/utils/base_64_image/base-64-image.js +86 -0
  71. package/dist/cjs/utils/http/custom-errors/http-client-error.d.ts +0 -2
  72. package/dist/cjs/utils/http/custom-errors/http-client-error.js +0 -5
  73. package/dist/cjs/utils/http/http-client-got.d.ts +6 -5
  74. package/dist/cjs/utils/http/http-client-got.js +11 -11
  75. package/dist/cjs/utils/image-resize-errors/image-resizing-base-error.d.ts +0 -2
  76. package/dist/cjs/utils/image-resize-errors/image-resizing-base-error.js +0 -5
  77. package/dist/cjs/utils/image-resize-errors/index.d.ts +0 -1
  78. package/dist/cjs/utils/image-resize-errors/index.js +1 -3
  79. package/dist/cjs/utils/transformations.d.ts +0 -2
  80. package/dist/cjs/utils/transformations.js +11 -44
  81. package/dist/esm/core/model/test-case-dto/custom-element.d.ts +2 -2
  82. package/dist/esm/core/model/test-case-dto/custom-element.js +2 -2
  83. package/dist/esm/core/model/test-case-dto/custom-element.spec.js +7 -6
  84. package/dist/esm/execution/dsl.d.ts +6 -17
  85. package/dist/esm/execution/dsl.js +3 -21
  86. package/dist/esm/execution/execution-runtime.d.ts +5 -5
  87. package/dist/esm/execution/execution-runtime.js +14 -14
  88. package/dist/esm/execution/index.d.ts +2 -1
  89. package/dist/esm/execution/index.js +2 -1
  90. package/dist/esm/execution/{control-your-ui-api.d.ts → inference-client.d.ts} +3 -3
  91. package/dist/esm/execution/{control-your-ui-api.js → inference-client.js} +6 -6
  92. package/dist/esm/execution/ui-control-client-error.d.ts +2 -0
  93. package/dist/esm/execution/ui-control-client-error.js +2 -0
  94. package/dist/esm/execution/ui-control-client.d.ts +34 -0
  95. package/dist/esm/execution/{client.js → ui-control-client.js} +46 -27
  96. package/dist/esm/execution/{client-connection-state.d.ts → ui-controller-client-connection-state.d.ts} +1 -1
  97. package/dist/esm/execution/ui-controller-client-connection-state.js +7 -0
  98. package/dist/esm/execution/ui-controller-client-interface.d.ts +27 -0
  99. package/dist/esm/execution/{client-interface.js → ui-controller-client-interface.js} +0 -0
  100. package/dist/esm/execution/{control-your-ui-client.d.ts → ui-controller-client.d.ts} +6 -6
  101. package/dist/esm/execution/{control-your-ui-client.js → ui-controller-client.js} +26 -26
  102. package/dist/esm/lib/download-binaries.js +8 -8
  103. package/dist/esm/lib/index.d.ts +1 -1
  104. package/dist/esm/lib/index.js +1 -1
  105. package/dist/esm/lib/libfuse-error.d.ts +2 -0
  106. package/dist/esm/lib/libfuse-error.js +2 -0
  107. package/dist/esm/lib/logger.js +1 -1
  108. package/dist/esm/lib/timeout-error.d.ts +0 -2
  109. package/dist/esm/lib/timeout-error.js +0 -5
  110. package/dist/esm/lib/ui-controller-args.d.ts +47 -0
  111. package/dist/esm/lib/{control-ui-server-args.js → ui-controller-args.js} +0 -0
  112. package/dist/esm/lib/{control-ui-server-args.spec.d.ts → ui-controller-args.spec.d.ts} +0 -0
  113. package/dist/esm/lib/{control-ui-server-args.spec.js → ui-controller-args.spec.js} +1 -1
  114. package/dist/esm/lib/ui-controller-darwin.d.ts +6 -0
  115. package/dist/esm/lib/{control-ui-server-darwin.js → ui-controller-darwin.js} +6 -6
  116. package/dist/esm/lib/ui-controller-facade.d.ts +17 -0
  117. package/dist/esm/lib/{control-ui-server-facade.js → ui-controller-facade.js} +17 -11
  118. package/dist/esm/lib/ui-controller-linux.d.ts +5 -0
  119. package/dist/esm/lib/ui-controller-linux.js +48 -0
  120. package/dist/esm/lib/ui-controller-win32.d.ts +3 -0
  121. package/dist/esm/lib/ui-controller-win32.js +3 -0
  122. package/dist/esm/lib/ui-controller.d.ts +8 -0
  123. package/dist/esm/lib/{askui-control-server.js → ui-controller.js} +7 -7
  124. package/dist/esm/lib/unkown-error.d.ts +0 -2
  125. package/dist/esm/lib/unkown-error.js +0 -5
  126. package/dist/esm/lib/wayland-error.d.ts +2 -0
  127. package/dist/esm/lib/wayland-error.js +2 -0
  128. package/dist/esm/main.d.ts +3 -2
  129. package/dist/esm/main.js +3 -2
  130. package/dist/esm/shared/index.d.ts +1 -0
  131. package/dist/esm/shared/index.js +1 -0
  132. package/dist/esm/utils/analytics/analytics-interface.d.ts +3 -0
  133. package/dist/esm/utils/analytics/analytics-interface.js +1 -0
  134. package/dist/esm/utils/analytics/analytics.d.ts +5 -0
  135. package/dist/esm/utils/analytics/analytics.js +25 -0
  136. package/dist/esm/utils/analytics/index.d.ts +1 -0
  137. package/dist/esm/utils/analytics/index.js +1 -0
  138. package/dist/esm/utils/analytics/user-identifier-interface.d.ts +3 -0
  139. package/dist/esm/utils/analytics/user-identifier-interface.js +1 -0
  140. package/dist/esm/utils/analytics/user-identifier.d.ts +4 -0
  141. package/dist/esm/utils/analytics/user-identifier.js +18 -0
  142. package/dist/esm/utils/base_64_image/base-64-image-error.d.ts +2 -0
  143. package/dist/esm/utils/base_64_image/base-64-image-error.js +2 -0
  144. package/dist/esm/utils/base_64_image/base-64-image-path-error.d.ts +4 -0
  145. package/dist/esm/utils/base_64_image/base-64-image-path-error.js +7 -0
  146. package/dist/esm/utils/base_64_image/base-64-image-string-error.d.ts +4 -0
  147. package/dist/esm/utils/base_64_image/base-64-image-string-error.js +7 -0
  148. package/dist/esm/utils/base_64_image/base-64-image.d.ts +18 -0
  149. package/dist/esm/utils/base_64_image/base-64-image.js +79 -0
  150. package/dist/esm/utils/http/custom-errors/http-client-error.d.ts +0 -2
  151. package/dist/esm/utils/http/custom-errors/http-client-error.js +0 -5
  152. package/dist/esm/utils/http/http-client-got.d.ts +6 -5
  153. package/dist/esm/utils/http/http-client-got.js +11 -11
  154. package/dist/esm/utils/image-resize-errors/image-resizing-base-error.d.ts +0 -2
  155. package/dist/esm/utils/image-resize-errors/image-resizing-base-error.js +0 -5
  156. package/dist/esm/utils/image-resize-errors/index.d.ts +0 -1
  157. package/dist/esm/utils/image-resize-errors/index.js +0 -1
  158. package/dist/esm/utils/transformations.d.ts +0 -2
  159. package/dist/esm/utils/transformations.js +11 -39
  160. package/dist/example_projects_templates/typescript_jest/test/helper/jest.setup.ts +7 -7
  161. package/dist/example_projects_templates/typescript_jest/test/jest.config.ts +3 -0
  162. package/package.json +9 -6
  163. package/dist/cjs/execution/client-connection-state.js +0 -10
  164. package/dist/cjs/execution/client-error.d.ts +0 -2
  165. package/dist/cjs/execution/client-error.js +0 -6
  166. package/dist/cjs/execution/client-interface.d.ts +0 -13
  167. package/dist/cjs/execution/client.d.ts +0 -25
  168. package/dist/cjs/lib/askui-control-server.d.ts +0 -8
  169. package/dist/cjs/lib/control-ui-server-args.d.ts +0 -21
  170. package/dist/cjs/lib/control-ui-server-darwin.d.ts +0 -6
  171. package/dist/cjs/lib/control-ui-server-facade.d.ts +0 -16
  172. package/dist/cjs/lib/control-ui-server-linux.d.ts +0 -4
  173. package/dist/cjs/lib/control-ui-server-linux.js +0 -13
  174. package/dist/cjs/lib/control-ui-server-win32.d.ts +0 -3
  175. package/dist/cjs/lib/control-ui-server-win32.js +0 -7
  176. package/dist/esm/execution/client-connection-state.js +0 -7
  177. package/dist/esm/execution/client-error.d.ts +0 -2
  178. package/dist/esm/execution/client-error.js +0 -2
  179. package/dist/esm/execution/client-interface.d.ts +0 -13
  180. package/dist/esm/execution/client.d.ts +0 -25
  181. package/dist/esm/lib/askui-control-server.d.ts +0 -8
  182. package/dist/esm/lib/control-ui-server-args.d.ts +0 -21
  183. package/dist/esm/lib/control-ui-server-darwin.d.ts +0 -6
  184. package/dist/esm/lib/control-ui-server-facade.d.ts +0 -16
  185. package/dist/esm/lib/control-ui-server-linux.d.ts +0 -4
  186. package/dist/esm/lib/control-ui-server-linux.js +0 -9
  187. package/dist/esm/lib/control-ui-server-win32.d.ts +0 -3
  188. package/dist/esm/lib/control-ui-server-win32.js +0 -3
@@ -8,12 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { CustomElement } from './custom-element';
11
+ const base64ImageString = 'data:image/png;base64,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';
11
12
  describe('CustomElement', () => {
12
13
  describe('fromJsonWithImagePathOrImage', () => {
13
14
  test('should return CustomElement if CustomElement created from JSON is valid', () => __awaiter(void 0, void 0, void 0, function* () {
14
- const expected = new CustomElement('data:image', 'Dummy_element', 0.7, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
15
+ const expected = new CustomElement(base64ImageString, 'Dummy_element', 0.7, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
15
16
  const actual = yield CustomElement.fromJsonWithImagePathOrImage({
16
- customImage: 'data:image',
17
+ customImage: base64ImageString,
17
18
  name: 'Dummy_element',
18
19
  threshold: 0.7,
19
20
  rotationDegreePerStep: 10,
@@ -24,25 +25,25 @@ describe('CustomElement', () => {
24
25
  }));
25
26
  test('should throw ValidationError if threshold is invalid', () => {
26
27
  expect(() => {
27
- const customElement = new CustomElement('data:image', 'Dummy_element', 1.1, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
28
+ const customElement = new CustomElement(base64ImageString, 'Dummy_element', 1.1, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
28
29
  customElement.validate();
29
30
  }).toThrow('threshold must be less than or equal to 1');
30
31
  });
31
32
  test('should throw ValidationError if rotationDegreePerStep is invalid', () => {
32
33
  expect(() => {
33
- const customElement = new CustomElement('data:image', 'Dummy_element', 0.9, -90, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
34
+ const customElement = new CustomElement(base64ImageString, 'Dummy_element', 0.9, -90, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }, { x: 3, y: 4 }]);
34
35
  customElement.validate();
35
36
  }).toThrow('rotationDegreePerStep must be greater than or equal to 0');
36
37
  });
37
38
  test('should throw ValidationError if mask is invalid', () => {
38
39
  expect(() => {
39
- const customElement = new CustomElement('data:image', 'Dummy_element', 0.9, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }]);
40
+ const customElement = new CustomElement(base64ImageString, 'Dummy_element', 0.9, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }]);
40
41
  customElement.validate();
41
42
  }).toThrow('mask must contain at least 3 points');
42
43
  });
43
44
  test('should throw ValidationError if mask and threshold are both invalid', () => {
44
45
  expect(() => {
45
- const customElement = new CustomElement('data:image', 'Dummy_element', 90, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }]);
46
+ const customElement = new CustomElement(base64ImageString, 'Dummy_element', 90, 10, 'RGB', [{ x: 0, y: 1 }, { x: 1, y: 2 }]);
46
47
  customElement.validate();
47
48
  }).toThrow('threshold must be less than or equal to 1, mask must contain at least 3 points');
48
49
  });
@@ -1,9 +1,4 @@
1
1
  import { CustomElementJson } from '../core/model/test-case-dto';
2
- export declare enum TimeUnit {
3
- MS = "millisecond",
4
- S = "seconds",
5
- MIN = "minutes"
6
- }
7
2
  export declare type PC_KEY = 'backspace' | 'delete' | 'enter' | 'tab' | 'escape' | 'up' | 'down' | 'right' | 'left' | 'home' | 'end' | 'pageup' | 'pagedown' | 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12' | 'space' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | '!' | '"' | '#' | '$' | '%' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' | '?' | '@' | '[' | '\\' | ']' | '^' | '_' | '`' | '{' | '|' | '}' | '~ ';
8
3
  export declare type ANDROID_KEY = 'home' | 'back' | 'call' | 'endcall' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'star' | 'pound' | 'dpad_up' | 'dpad_down' | 'dpad_left' | 'dpad_right' | 'dpad_center' | 'volume_up' | 'volume_down' | 'power' | 'camera' | 'clear' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'comma' | 'period' | 'alt_left' | 'alt_right' | 'shift_left' | 'shift_right' | 'tab' | 'space' | 'sym' | 'explorer' | 'envelope' | 'enter' | 'del' | 'grave' | 'minus' | 'equals' | 'left_bracket' | 'right_bracket' | 'backslash' | 'semicolon' | 'apostrophe' | 'slash' | 'at' | 'num' | 'headsethook' | 'focus' | 'plus' | 'menu' | 'notification' | 'search' | 'media_play_pause' | 'media_stop' | 'media_next' | 'media_previous' | 'media_rewind' | 'media_fast_forward' | 'mute' | 'page_up' | 'page_down' | 'switch_charset' | 'escape' | 'forward_del' | 'ctrl_left' | 'ctrl_right' | 'caps_lock' | 'scroll_lock' | 'function' | 'break' | 'move_home' | 'move_end' | 'insert' | 'forward' | 'media_play' | 'media_pause' | 'media_close' | 'media_eject' | 'media_record' | 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12' | 'num_lock' | 'numpad_0' | 'numpad_1' | 'numpad_2' | 'numpad_3' | 'numpad_4' | 'numpad_5' | 'numpad_6' | 'numpad_7' | 'numpad_8' | 'numpad_9' | 'numpad_divide' | 'numpad_multiply' | 'numpad_subtract' | 'numpad_add' | 'numpad_dot' | 'numpad_comma' | 'numpad_enter' | 'numpad_equals' | 'numpad_left_paren' | 'numpad_right_paren' | 'volume_mute' | 'info' | 'channel_up' | 'channel_down' | 'zoom_in' | 'zoom_out' | 'window' | 'guide' | 'bookmark' | 'captions' | 'settings' | 'app_switch' | 'language_switch' | 'contacts' | 'calendar' | 'music' | 'calculator' | 'assist' | 'brightness_down' | 'brightness_up' | 'media_audio_track' | 'sleep' | 'wakeup' | 'pairing' | 'media_top_menu' | 'last_channel' | 'tv_data_service' | 'voice_assist' | 'help' | 'navigate_previous' | 'navigate_next' | 'navigate_in' | 'navigate_out' | 'dpad_up_left' | 'dpad_down_left' | 'dpad_up_right' | 'dpad_down_right' | 'media_skip_forward' | 'media_skip_backward' | 'media_step_forward' | 'media_step_backward' | 'soft_sleep' | 'cut' | 'copy' | 'paste' | 'all_apps' | 'refresh';
9
4
  export declare type MODIFIER_KEY = 'command' | 'alt' | 'control' | 'shift' | 'right_shift';
@@ -19,7 +14,10 @@ declare abstract class FluentBase {
19
14
  protected get textStr(): string;
20
15
  protected get params(): Map<string, unknown>;
21
16
  }
22
- declare class Exec extends FluentBase {
17
+ export interface Executable {
18
+ exec(): Promise<void>;
19
+ }
20
+ export declare class Exec extends FluentBase implements Executable {
23
21
  exec(): Promise<void>;
24
22
  }
25
23
  export declare class FluentFilters extends FluentBase {
@@ -1333,14 +1331,14 @@ export declare abstract class FluentCommand extends FluentBase {
1333
1331
  */
1334
1332
  typeIn(text: string): FluentFilters;
1335
1333
  /**
1336
- * Scrolls in the x and y direction, e.g., until an element is visible.
1334
+ * Moves mouse to the filtered element and scrolls in the x and y direction
1337
1335
  *
1338
1336
  * @param {number} x_offset - A (positive/negative) x direction.
1339
1337
  * @param {number} y_offset - A (positive/negative) y direction.
1340
1338
  *
1341
1339
  * @return {FluentFilters}
1342
1340
  */
1343
- scrollUntil(x_offset: number, y_offset: number): FluentFilters;
1341
+ scrollInside(x_offset: number, y_offset: number): FluentFilters;
1344
1342
  /**
1345
1343
  * Moves the mouse relatively to an element in the direction.
1346
1344
  * This can be used when the mouse should not hover over on an element anymore.
@@ -1368,15 +1366,6 @@ export declare abstract class FluentCommand extends FluentBase {
1368
1366
  * @return {Exec}
1369
1367
  */
1370
1368
  type(text: string): Exec;
1371
- /**
1372
- * Waits for `<timeValue> <timeUnit>`, e.g., 10 seconds.
1373
- *
1374
- * @param {number} timeValue - A number of time unit, e.g., ms or min, to wait for.
1375
- * @param {TimeUnit} timeUnit - A time unit, e.g., ms, s or min.
1376
- *
1377
- * @return {Exec}
1378
- */
1379
- waitFor(timeValue: number, timeUnit: TimeUnit): Exec;
1380
1369
  /**
1381
1370
  * Moves the mouse from the current position (relative) in x and y direction.
1382
1371
  *
@@ -2,12 +2,6 @@
2
2
  /* eslint-disable @typescript-eslint/naming-convention */
3
3
  /* eslint-disable max-classes-per-file */
4
4
  // Autogenerated from typescript.template file
5
- export var TimeUnit;
6
- (function (TimeUnit) {
7
- TimeUnit["MS"] = "millisecond";
8
- TimeUnit["S"] = "seconds";
9
- TimeUnit["MIN"] = "minutes";
10
- })(TimeUnit || (TimeUnit = {}));
11
5
  class FluentBase {
12
6
  constructor(prev) {
13
7
  this.prev = prev;
@@ -39,7 +33,7 @@ class FluentBase {
39
33
  get textStr() { return this._textStr; }
40
34
  get params() { return this._params; }
41
35
  }
42
- class Exec extends FluentBase {
36
+ export class Exec extends FluentBase {
43
37
  exec() {
44
38
  return this.commandStringBuilder();
45
39
  }
@@ -1870,14 +1864,14 @@ export class FluentCommand extends FluentBase {
1870
1864
  return new FluentFilters(this);
1871
1865
  }
1872
1866
  /**
1873
- * Scrolls in the x and y direction, e.g., until an element is visible.
1867
+ * Moves mouse to the filtered element and scrolls in the x and y direction
1874
1868
  *
1875
1869
  * @param {number} x_offset - A (positive/negative) x direction.
1876
1870
  * @param {number} y_offset - A (positive/negative) y direction.
1877
1871
  *
1878
1872
  * @return {FluentFilters}
1879
1873
  */
1880
- scrollUntil(x_offset, y_offset) {
1874
+ scrollInside(x_offset, y_offset) {
1881
1875
  this._textStr = `Scroll x ${x_offset} y ${y_offset} in`;
1882
1876
  return new FluentFilters(this);
1883
1877
  }
@@ -1917,18 +1911,6 @@ export class FluentCommand extends FluentBase {
1917
1911
  this._textStr = `Type "${text}"`;
1918
1912
  return new Exec(this);
1919
1913
  }
1920
- /**
1921
- * Waits for `<timeValue> <timeUnit>`, e.g., 10 seconds.
1922
- *
1923
- * @param {number} timeValue - A number of time unit, e.g., ms or min, to wait for.
1924
- * @param {TimeUnit} timeUnit - A time unit, e.g., ms, s or min.
1925
- *
1926
- * @return {Exec}
1927
- */
1928
- waitFor(timeValue, timeUnit) {
1929
- this._textStr = `Wait for ${timeValue} ${timeUnit}`;
1930
- return new Exec(this);
1931
- }
1932
1914
  /**
1933
1915
  * Moves the mouse from the current position (relative) in x and y direction.
1934
1916
  *
@@ -1,12 +1,12 @@
1
1
  import { TestStep } from '../core/model/test-case-dto';
2
- import { ControlYourUiClient } from './control-your-ui-client';
3
- import { ControlYourUiApi } from './control-your-ui-api';
2
+ import { UiControllerClient } from './ui-controller-client';
3
+ import { InferenceClient } from './inference-client';
4
4
  import { Annotation } from '../core/annotation/annotation';
5
5
  import { CustomElementJson } from '../core/model/test-case-dto/custom-element-json';
6
6
  export declare class ExecutionRuntime {
7
- private client;
8
- private api;
9
- constructor(client: ControlYourUiClient, api: ControlYourUiApi);
7
+ private uiControllerClient;
8
+ private inferenceClient;
9
+ constructor(uiControllerClient: UiControllerClient, inferenceClient: InferenceClient);
10
10
  executeTestStep(step: TestStep): Promise<void>;
11
11
  /**
12
12
  * @param {TestStep} step - Test step used for predicting command.
@@ -12,12 +12,12 @@ import { CustomElement } from '../core/model/test-case-dto';
12
12
  import { RepeatError } from './repeat-error';
13
13
  import { delay } from './misc';
14
14
  import { ControlCommandError } from './control-command-error';
15
- import { toBase64Image } from '../utils/transformations';
16
15
  import { logger } from '../lib/logger';
16
+ import { Base64Image } from '../utils/base_64_image/base-64-image';
17
17
  export class ExecutionRuntime {
18
- constructor(client, api) {
19
- this.client = client;
20
- this.api = api;
18
+ constructor(uiControllerClient, inferenceClient) {
19
+ this.uiControllerClient = uiControllerClient;
20
+ this.inferenceClient = inferenceClient;
21
21
  this.EXEC_REPETITION_COUNT = 25;
22
22
  this.PREDICT_COMMAND_RETRY_COUNT = 2;
23
23
  }
@@ -35,10 +35,10 @@ export class ExecutionRuntime {
35
35
  return __awaiter(this, void 0, void 0, function* () {
36
36
  const controlCommand = yield this.predictCommandWithRetry(step);
37
37
  if (controlCommand.code === ControlCommandCode.OK) {
38
- yield this.client.requestControl(controlCommand);
38
+ yield this.uiControllerClient.requestControl(controlCommand);
39
39
  }
40
40
  else if (controlCommand.tryToRepeat) {
41
- yield this.client.requestControl(controlCommand);
41
+ yield this.uiControllerClient.requestControl(controlCommand);
42
42
  this.executeCommandRepeatedly(step);
43
43
  }
44
44
  else {
@@ -61,7 +61,7 @@ export class ExecutionRuntime {
61
61
  break;
62
62
  }
63
63
  else if (controlCommand.tryToRepeat) {
64
- yield this.client.requestControl(controlCommand);
64
+ yield this.uiControllerClient.requestControl(controlCommand);
65
65
  }
66
66
  else {
67
67
  throw new ControlCommandError(((_a = controlCommand.actions[0]) === null || _a === void 0 ? void 0 : _a.text) || '');
@@ -93,29 +93,29 @@ export class ExecutionRuntime {
93
93
  }
94
94
  predictCommand(step) {
95
95
  return __awaiter(this, void 0, void 0, function* () {
96
- const isImageRequired = yield this.api.isImageRequired(step.instruction);
96
+ const isImageRequired = yield this.inferenceClient.isImageRequired(step.instruction);
97
97
  let image;
98
98
  if (isImageRequired) {
99
- const screenshotResponse = yield this.client.requestScreenshot();
99
+ const screenshotResponse = yield this.uiControllerClient.requestScreenshot();
100
100
  image = screenshotResponse.data.image;
101
101
  }
102
- return this.api.predictControlCommand(step.instruction, step.customElements, image);
102
+ return this.inferenceClient.predictControlCommand(step.instruction, step.customElements, image);
103
103
  });
104
104
  }
105
105
  annotateInteractively() {
106
106
  return __awaiter(this, void 0, void 0, function* () {
107
107
  const annotationResponse = yield this.annotateImage();
108
- yield this.client.annotateInteractively(annotationResponse.objects, annotationResponse.image);
108
+ yield this.uiControllerClient.annotateInteractively(annotationResponse.objects, annotationResponse.image);
109
109
  });
110
110
  }
111
111
  takeScreenshotIfImageisNotProvided(imagePath) {
112
112
  return __awaiter(this, void 0, void 0, function* () {
113
113
  let base64Image = '';
114
114
  if (imagePath !== undefined) {
115
- base64Image = yield toBase64Image(imagePath);
115
+ base64Image = (yield Base64Image.fromPath(imagePath)).toString();
116
116
  }
117
117
  if (imagePath === undefined) {
118
- const screenshotResponse = yield this.client.requestScreenshot();
118
+ const screenshotResponse = yield this.uiControllerClient.requestScreenshot();
119
119
  base64Image = screenshotResponse.data.image;
120
120
  }
121
121
  return base64Image;
@@ -128,7 +128,7 @@ export class ExecutionRuntime {
128
128
  if (customElementJson !== undefined) {
129
129
  customElements = yield CustomElement.fromJsonListWithImagePathOrImage(customElementJson);
130
130
  }
131
- return this.api.predictImageAnnotation(base64Image, customElements);
131
+ return this.inferenceClient.predictImageAnnotation(base64Image, customElements);
132
132
  });
133
133
  }
134
134
  }
@@ -1 +1,2 @@
1
- export { AskuiClient } from './client';
1
+ export { AnnotationLevel } from './annotation-level';
2
+ export { UiControlClient } from './ui-control-client';
@@ -1 +1,2 @@
1
- export { AskuiClient } from './client';
1
+ export { AnnotationLevel } from './annotation-level';
2
+ export { UiControlClient } from './ui-control-client';
@@ -2,10 +2,10 @@ import { HttpClientGot } from '../utils/http/http-client-got';
2
2
  import { ControlCommand } from '../core/ui-control-commands';
3
3
  import { CustomElement } from '../core/model/test-case-dto';
4
4
  import { Annotation } from '../core/annotation/annotation';
5
- export declare class ControlYourUiApi {
6
- apiEndpointUrl: string;
5
+ export declare class InferenceClient {
6
+ url: string;
7
7
  httpClient: HttpClientGot;
8
- constructor(apiEndpointUrl: string, httpClient: HttpClientGot);
8
+ constructor(url: string, httpClient: HttpClientGot);
9
9
  isImageRequired(instruction: string): Promise<boolean>;
10
10
  private resizeIfNeeded;
11
11
  predictControlCommand(instruction: string, customElements: CustomElement[], image?: string): Promise<ControlCommand>;
@@ -11,14 +11,14 @@ import urljoin from 'url-join';
11
11
  import { ControlCommand } from '../core/ui-control-commands';
12
12
  import { Annotation } from '../core/annotation/annotation';
13
13
  import { resizeBase64ImageWithSameRatio } from '../utils/transformations';
14
- export class ControlYourUiApi {
15
- constructor(apiEndpointUrl, httpClient) {
16
- this.apiEndpointUrl = apiEndpointUrl;
14
+ export class InferenceClient {
15
+ constructor(url, httpClient) {
16
+ this.url = url;
17
17
  this.httpClient = httpClient;
18
18
  }
19
19
  isImageRequired(instruction) {
20
20
  return __awaiter(this, void 0, void 0, function* () {
21
- const url = urljoin(this.apiEndpointUrl, 'instruction', 'is-image-required');
21
+ const url = urljoin(this.url, 'instruction', 'is-image-required');
22
22
  const httpBody = {
23
23
  instruction,
24
24
  };
@@ -43,7 +43,7 @@ export class ControlYourUiApi {
43
43
  instruction,
44
44
  customElements,
45
45
  };
46
- const url = urljoin(this.apiEndpointUrl, 'api', 'v1', 'predict-command');
46
+ const url = urljoin(this.url, 'api', 'v1', 'predict-command');
47
47
  const httpResponse = yield this.httpClient.post(url, httpBody);
48
48
  return ControlCommand.fromJson(httpResponse, resizedImage.resizeRatio);
49
49
  });
@@ -55,7 +55,7 @@ export class ControlYourUiApi {
55
55
  image: resizedImage.base64Image,
56
56
  customElements,
57
57
  };
58
- const url = urljoin(this.apiEndpointUrl, 'annotate', '?format=json');
58
+ const url = urljoin(this.url, 'annotate', '?format=json');
59
59
  const httpResponse = yield this.httpClient.post(url, httpBody);
60
60
  return Annotation.fromJson(Object.assign(Object.assign({}, httpResponse), { image }), resizedImage.resizeRatio);
61
61
  });
@@ -0,0 +1,2 @@
1
+ export declare class UiControlClientError extends Error {
2
+ }
@@ -0,0 +1,2 @@
1
+ export class UiControlClientError extends Error {
2
+ }
@@ -0,0 +1,34 @@
1
+ import { CustomElementJson } from '../core/model/test-case-dto';
2
+ import { Executable, FluentCommand } from './dsl';
3
+ import { UiControllerClientConnectionState } from './ui-controller-client-connection-state';
4
+ import { Annotation } from '../core/annotation/annotation';
5
+ import { AnnotationRequest } from '../core/model/annotation-result/annotation-interface';
6
+ import { ClientArgs } from './ui-controller-client-interface';
7
+ export declare class UiControlClient extends FluentCommand {
8
+ private httpClient;
9
+ private clientArgs;
10
+ private _uiControllerClient?;
11
+ private constructor();
12
+ static build(clientArgs?: ClientArgs): Promise<UiControlClient>;
13
+ private get uiControllerClient();
14
+ private get inferenceClient();
15
+ private get executionRuntime();
16
+ private annotateByDefault;
17
+ connect(): Promise<UiControllerClientConnectionState>;
18
+ annotate(annotationRequest?: AnnotationRequest): Promise<Annotation>;
19
+ annotateInteractively(): Promise<void>;
20
+ exec(instruction: string, customElementJson?: CustomElementJson[]): Promise<void>;
21
+ /**
22
+ * Waits for `<delayInMs>` ms, e.g., 1000 ms. The exact delay may be a little longer
23
+ * than `<delayInMs>` but never shorter than that.
24
+ *
25
+ * @param {number} delayInMs - The delay in ms to wait for.
26
+ *
27
+ * @return {Executable}
28
+ */
29
+ waitFor(delayInMs: number): Executable;
30
+ /**
31
+ * closes the connection to the controlui-server`.
32
+ */
33
+ close(): void;
34
+ }
@@ -10,48 +10,50 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  import { CustomElement } from '../core/model/test-case-dto';
11
11
  import { FluentCommand } from './dsl';
12
12
  import { HttpClientGot } from '../utils/http/http-client-got';
13
- import { ControlYourUiClient } from './control-your-ui-client';
13
+ import { UiControllerClient } from './ui-controller-client';
14
14
  import { ExecutionRuntime } from './execution-runtime';
15
- import { ControlYourUiApi } from './control-your-ui-api';
15
+ import { InferenceClient } from './inference-client';
16
16
  import { AnnotationWriter } from '../core/annotation/annotation-writer';
17
17
  import { logger } from '../lib/logger';
18
18
  import { TestStepState } from '../core/model/test-case-result-dto';
19
19
  import { AnnotationLevel } from './annotation-level';
20
- import { ControlUiClientError } from './client-error';
20
+ import { UiControlClientError } from './ui-control-client-error';
21
21
  import { envCredentials } from './read-environment-credentials';
22
- export class AskuiClient extends FluentCommand {
23
- constructor(clientArgs) {
24
- var _a;
22
+ import { Analytics } from '../utils/analytics';
23
+ const getClientArgsWithDefaults = (clientArgs = {}) => (Object.assign({ uiControllerUrl: 'http://localhost:6769', inferenceServerUrl: 'https://inference.askui.com', annotationLevel: AnnotationLevel.DISABLED }, clientArgs));
24
+ export class UiControlClient extends FluentCommand {
25
+ constructor(httpClient, clientArgs) {
25
26
  super();
27
+ this.httpClient = httpClient;
26
28
  this.clientArgs = clientArgs;
27
- this.httpClient = new HttpClientGot(((_a = this.clientArgs) === null || _a === void 0 ? void 0 : _a.credentials) ? this.clientArgs.credentials : envCredentials());
28
29
  }
29
- get controlYourUiClient() {
30
- if (!this._controlYourUiClient) {
31
- this._controlYourUiClient = new ControlYourUiClient(this.clientArgsWithDefaults.controlServerUrl);
32
- }
33
- return this._controlYourUiClient;
30
+ static build(clientArgs) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const analytics = new Analytics();
33
+ const analyticsHeaders = yield analytics.getAnalyticsHeaders();
34
+ const cas = getClientArgsWithDefaults(clientArgs);
35
+ const httpClient = new HttpClientGot(cas.credentials || envCredentials(), analyticsHeaders);
36
+ return new UiControlClient(httpClient, cas);
37
+ });
34
38
  }
35
- get clientArgsWithDefaults() {
36
- const defaults = {
37
- controlServerUrl: 'http://localhost:6769',
38
- controlYourUiApi: 'https://inference.askui.com',
39
- annotationLevel: AnnotationLevel.DISABLED,
40
- };
41
- return Object.assign(defaults, this.clientArgs);
39
+ get uiControllerClient() {
40
+ if (!this._uiControllerClient) {
41
+ this._uiControllerClient = new UiControllerClient(this.clientArgs.uiControllerUrl);
42
+ }
43
+ return this._uiControllerClient;
42
44
  }
43
- get api() {
44
- return new ControlYourUiApi(this.clientArgsWithDefaults.controlYourUiApi, this.httpClient);
45
+ get inferenceClient() {
46
+ return new InferenceClient(this.clientArgs.inferenceServerUrl, this.httpClient);
45
47
  }
46
48
  get executionRuntime() {
47
- return new ExecutionRuntime(this.controlYourUiClient, this.api);
49
+ return new ExecutionRuntime(this.uiControllerClient, this.inferenceClient);
48
50
  }
49
51
  annotateByDefault(testStepState, customElements = []) {
50
52
  return __awaiter(this, void 0, void 0, function* () {
51
53
  if ((testStepState === TestStepState.FAILED
52
- && this.clientArgsWithDefaults.annotationLevel === AnnotationLevel.DISABLED)
54
+ && this.clientArgs.annotationLevel === AnnotationLevel.DISABLED)
53
55
  || (testStepState === TestStepState.PASSED
54
- && this.clientArgsWithDefaults.annotationLevel !== AnnotationLevel.ALL)) {
56
+ && this.clientArgs.annotationLevel !== AnnotationLevel.ALL)) {
55
57
  return;
56
58
  }
57
59
  yield this.annotate({
@@ -62,7 +64,7 @@ export class AskuiClient extends FluentCommand {
62
64
  }
63
65
  connect() {
64
66
  return __awaiter(this, void 0, void 0, function* () {
65
- const connectionState = yield this.controlYourUiClient.connect();
67
+ const connectionState = yield this.uiControllerClient.connect();
66
68
  return connectionState;
67
69
  });
68
70
  }
@@ -99,14 +101,31 @@ export class AskuiClient extends FluentCommand {
99
101
  }
100
102
  catch (error) {
101
103
  yield this.annotateByDefault(TestStepState.FAILED, customElements);
102
- return Promise.reject(new ControlUiClientError(`A problem occures while executing the instruction: ${instruction}. Reason ${error}`));
104
+ return Promise.reject(new UiControlClientError(`A problem occures while executing the instruction: ${instruction}. Reason ${error}`));
103
105
  }
104
106
  });
105
107
  }
108
+ /**
109
+ * Waits for `<delayInMs>` ms, e.g., 1000 ms. The exact delay may be a little longer
110
+ * than `<delayInMs>` but never shorter than that.
111
+ *
112
+ * @param {number} delayInMs - The delay in ms to wait for.
113
+ *
114
+ * @return {Executable}
115
+ */
116
+ // eslint-disable-next-line class-methods-use-this
117
+ waitFor(delayInMs) {
118
+ return {
119
+ exec() {
120
+ logger.debug(`Wait for ${delayInMs} ms`);
121
+ return new Promise((resolve) => { setTimeout(() => resolve(), delayInMs); });
122
+ },
123
+ };
124
+ }
106
125
  /**
107
126
  * closes the connection to the controlui-server`.
108
127
  */
109
128
  close() {
110
- this.controlYourUiClient.close();
129
+ this.uiControllerClient.close();
111
130
  }
112
131
  }
@@ -1,4 +1,4 @@
1
- export declare enum ClientConnectionState {
1
+ export declare enum UiControllerClientConnectionState {
2
2
  NOT_CONNECTED = 0,
3
3
  CONNECTING = 1,
4
4
  CONNECTED = 2,
@@ -0,0 +1,7 @@
1
+ export var UiControllerClientConnectionState;
2
+ (function (UiControllerClientConnectionState) {
3
+ UiControllerClientConnectionState[UiControllerClientConnectionState["NOT_CONNECTED"] = 0] = "NOT_CONNECTED";
4
+ UiControllerClientConnectionState[UiControllerClientConnectionState["CONNECTING"] = 1] = "CONNECTING";
5
+ UiControllerClientConnectionState[UiControllerClientConnectionState["CONNECTED"] = 2] = "CONNECTED";
6
+ UiControllerClientConnectionState[UiControllerClientConnectionState["ERROR"] = 3] = "ERROR";
7
+ })(UiControllerClientConnectionState || (UiControllerClientConnectionState = {}));
@@ -0,0 +1,27 @@
1
+ import { CredentialArgs } from '../utils/http/credentials';
2
+ import { AnnotationLevel } from './annotation-level';
3
+ /**
4
+ * Configuration options for the askui UI Control Client
5
+ *
6
+ * @param {string} uiControllerUrl - Default: http://localhost:6769
7
+ * The adress of the askui UI Controller server.
8
+ * @param {string} inferenceClientUrl - Default: https://inference.askui.com`
9
+ * Address of the askui Inference server.
10
+ * @param {AnnotationLevel} annotationLevel - Default: AnnotationLevel.DISABLED
11
+ * Usage of annotate command
12
+ * after execution of test steps.
13
+ * You have three options: `DISABLED`, `ON_FAILURE`, `ALL`.
14
+ * @param {CredentialArgs} credentials - We need to provide credentials for
15
+ * the authentication of the askui Inference Server.
16
+ */
17
+ export interface ClientArgs {
18
+ readonly uiControllerUrl?: string;
19
+ readonly inferenceServerUrl?: string;
20
+ readonly annotationLevel?: AnnotationLevel;
21
+ readonly credentials?: CredentialArgs;
22
+ }
23
+ export interface ClientArgsWithDefaults extends ClientArgs {
24
+ readonly uiControllerUrl: string;
25
+ readonly inferenceServerUrl: string;
26
+ readonly annotationLevel: AnnotationLevel;
27
+ }
@@ -2,21 +2,21 @@ import WebSocket from 'ws';
2
2
  import { DetectedElement } from '../core/model/annotation-result/detected-element';
3
3
  import { CaptureScreenshotResponse, ControlResponse, StartRecordingResponse, StopRecordingResponse, ReadRecordingPartResponse, InteractiveAnnotationResponse, GetProcessPidResponse } from '../core/runner-protocol';
4
4
  import { ControlCommand } from '../core/ui-control-commands';
5
- import { ClientConnectionState } from './client-connection-state';
6
- export declare class ControlYourUiClient {
7
- controlServerUrl: string;
5
+ import { UiControllerClientConnectionState } from './ui-controller-client-connection-state';
6
+ export declare class UiControllerClient {
7
+ url: string;
8
8
  private static readonly EMPTY_REJECT;
9
9
  private static readonly EMPTY_RESOLVE;
10
10
  private static readonly REQUEST_TIMEOUT_IN_MS;
11
11
  ws: WebSocket;
12
- connectionState: ClientConnectionState;
12
+ connectionState: UiControllerClientConnectionState;
13
13
  private timeout?;
14
14
  private currentReject;
15
15
  private currentResolve;
16
- constructor(controlServerUrl: string);
16
+ constructor(url: string);
17
17
  private clearResponse;
18
18
  private onMessage;
19
- connect(): Promise<ClientConnectionState>;
19
+ connect(): Promise<UiControllerClientConnectionState>;
20
20
  close(): void;
21
21
  private sendAndReceive;
22
22
  private send;