@sqaitech/shared 0.5.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 (169) hide show
  1. package/README.md +9 -0
  2. package/dist/es/baseDB.mjs +109 -0
  3. package/dist/es/build/copy-static.mjs +29 -0
  4. package/dist/es/common.mjs +37 -0
  5. package/dist/es/constants/example-code.mjs +202 -0
  6. package/dist/es/constants/index.mjs +24 -0
  7. package/dist/es/env/basic.mjs +6 -0
  8. package/dist/es/env/constants.mjs +97 -0
  9. package/dist/es/env/decide-model-config.mjs +172 -0
  10. package/dist/es/env/global-config-manager.mjs +91 -0
  11. package/dist/es/env/helper.mjs +48 -0
  12. package/dist/es/env/index.mjs +5 -0
  13. package/dist/es/env/init-debug.mjs +18 -0
  14. package/dist/es/env/model-config-manager.mjs +99 -0
  15. package/dist/es/env/parse.mjs +69 -0
  16. package/dist/es/env/types.mjs +253 -0
  17. package/dist/es/env/utils.mjs +18 -0
  18. package/dist/es/extractor/constants.mjs +2 -0
  19. package/dist/es/extractor/debug.mjs +6 -0
  20. package/dist/es/extractor/dom-util.mjs +92 -0
  21. package/dist/es/extractor/index.mjs +6 -0
  22. package/dist/es/extractor/locator.mjs +95 -0
  23. package/dist/es/extractor/tree.mjs +81 -0
  24. package/dist/es/extractor/util.mjs +244 -0
  25. package/dist/es/extractor/web-extractor.mjs +310 -0
  26. package/dist/es/img/box-select.mjs +184 -0
  27. package/dist/es/img/draw-box.mjs +42 -0
  28. package/dist/es/img/get-jimp.mjs +10 -0
  29. package/dist/es/img/get-photon.mjs +19 -0
  30. package/dist/es/img/get-sharp.mjs +11 -0
  31. package/dist/es/img/index.mjs +5 -0
  32. package/dist/es/img/info.mjs +32 -0
  33. package/dist/es/img/transform.mjs +192 -0
  34. package/dist/es/index.mjs +3 -0
  35. package/dist/es/logger.mjs +61 -0
  36. package/dist/es/node/fs.mjs +44 -0
  37. package/dist/es/node/index.mjs +1 -0
  38. package/dist/es/polyfills/async-hooks.mjs +2 -0
  39. package/dist/es/polyfills/index.mjs +1 -0
  40. package/dist/es/types/index.mjs +3 -0
  41. package/dist/es/us-keyboard-layout.mjs +1414 -0
  42. package/dist/es/us-keyboard-layout.mjs.LICENSE.txt +5 -0
  43. package/dist/es/utils.mjs +66 -0
  44. package/dist/lib/baseDB.js +149 -0
  45. package/dist/lib/build/copy-static.js +77 -0
  46. package/dist/lib/common.js +93 -0
  47. package/dist/lib/constants/example-code.js +239 -0
  48. package/dist/lib/constants/index.js +100 -0
  49. package/dist/lib/env/basic.js +40 -0
  50. package/dist/lib/env/constants.js +143 -0
  51. package/dist/lib/env/decide-model-config.js +212 -0
  52. package/dist/lib/env/global-config-manager.js +125 -0
  53. package/dist/lib/env/helper.js +89 -0
  54. package/dist/lib/env/index.js +94 -0
  55. package/dist/lib/env/init-debug.js +52 -0
  56. package/dist/lib/env/model-config-manager.js +133 -0
  57. package/dist/lib/env/parse.js +106 -0
  58. package/dist/lib/env/types.js +635 -0
  59. package/dist/lib/env/utils.js +61 -0
  60. package/dist/lib/extractor/constants.js +42 -0
  61. package/dist/lib/extractor/debug.js +12 -0
  62. package/dist/lib/extractor/dom-util.js +150 -0
  63. package/dist/lib/extractor/index.js +88 -0
  64. package/dist/lib/extractor/locator.js +141 -0
  65. package/dist/lib/extractor/tree.js +127 -0
  66. package/dist/lib/extractor/util.js +335 -0
  67. package/dist/lib/extractor/web-extractor.js +356 -0
  68. package/dist/lib/img/box-select.js +232 -0
  69. package/dist/lib/img/draw-box.js +89 -0
  70. package/dist/lib/img/get-jimp.js +72 -0
  71. package/dist/lib/img/get-photon.js +76 -0
  72. package/dist/lib/img/get-sharp.js +63 -0
  73. package/dist/lib/img/index.js +102 -0
  74. package/dist/lib/img/info.js +86 -0
  75. package/dist/lib/img/transform.js +279 -0
  76. package/dist/lib/index.js +43 -0
  77. package/dist/lib/logger.js +114 -0
  78. package/dist/lib/node/fs.js +97 -0
  79. package/dist/lib/node/index.js +60 -0
  80. package/dist/lib/polyfills/async-hooks.js +36 -0
  81. package/dist/lib/polyfills/index.js +60 -0
  82. package/dist/lib/types/index.js +37 -0
  83. package/dist/lib/us-keyboard-layout.js +1457 -0
  84. package/dist/lib/us-keyboard-layout.js.LICENSE.txt +5 -0
  85. package/dist/lib/utils.js +136 -0
  86. package/dist/types/baseDB.d.ts +25 -0
  87. package/dist/types/build/copy-static.d.ts +31 -0
  88. package/dist/types/common.d.ts +12 -0
  89. package/dist/types/constants/example-code.d.ts +2 -0
  90. package/dist/types/constants/index.d.ts +22 -0
  91. package/dist/types/env/basic.d.ts +6 -0
  92. package/dist/types/env/constants.d.ts +40 -0
  93. package/dist/types/env/decide-model-config.d.ts +14 -0
  94. package/dist/types/env/global-config-manager.d.ts +32 -0
  95. package/dist/types/env/helper.d.ts +6 -0
  96. package/dist/types/env/index.d.ts +4 -0
  97. package/dist/types/env/init-debug.d.ts +1 -0
  98. package/dist/types/env/model-config-manager.d.ts +24 -0
  99. package/dist/types/env/parse.d.ts +12 -0
  100. package/dist/types/env/types.d.ts +294 -0
  101. package/dist/types/env/utils.d.ts +7 -0
  102. package/dist/types/extractor/constants.d.ts +1 -0
  103. package/dist/types/extractor/debug.d.ts +1 -0
  104. package/dist/types/extractor/dom-util.d.ts +26 -0
  105. package/dist/types/extractor/index.d.ts +33 -0
  106. package/dist/types/extractor/locator.d.ts +7 -0
  107. package/dist/types/extractor/tree.d.ts +9 -0
  108. package/dist/types/extractor/util.d.ts +43 -0
  109. package/dist/types/extractor/web-extractor.d.ts +19 -0
  110. package/dist/types/img/box-select.d.ts +25 -0
  111. package/dist/types/img/draw-box.d.ts +15 -0
  112. package/dist/types/img/get-jimp.d.ts +2 -0
  113. package/dist/types/img/get-photon.d.ts +8 -0
  114. package/dist/types/img/get-sharp.d.ts +3 -0
  115. package/dist/types/img/index.d.ts +4 -0
  116. package/dist/types/img/info.d.ts +29 -0
  117. package/dist/types/img/transform.d.ts +88 -0
  118. package/dist/types/index.d.ts +3 -0
  119. package/dist/types/logger.d.ts +4 -0
  120. package/dist/types/node/fs.d.ts +15 -0
  121. package/dist/types/node/index.d.ts +1 -0
  122. package/dist/types/polyfills/async-hooks.d.ts +6 -0
  123. package/dist/types/polyfills/index.d.ts +4 -0
  124. package/dist/types/types/index.d.ts +34 -0
  125. package/dist/types/us-keyboard-layout.d.ts +32 -0
  126. package/dist/types/utils.d.ts +22 -0
  127. package/package.json +106 -0
  128. package/src/baseDB.ts +158 -0
  129. package/src/build/copy-static.ts +62 -0
  130. package/src/common.ts +67 -0
  131. package/src/constants/example-code.ts +202 -0
  132. package/src/constants/index.ts +30 -0
  133. package/src/env/basic.ts +12 -0
  134. package/src/env/constants.ts +291 -0
  135. package/src/env/decide-model-config.ts +319 -0
  136. package/src/env/global-config-manager.ts +174 -0
  137. package/src/env/helper.ts +79 -0
  138. package/src/env/index.ts +4 -0
  139. package/src/env/init-debug.ts +29 -0
  140. package/src/env/model-config-manager.ts +145 -0
  141. package/src/env/parse.ts +131 -0
  142. package/src/env/types.ts +560 -0
  143. package/src/env/utils.ts +39 -0
  144. package/src/extractor/constants.ts +5 -0
  145. package/src/extractor/debug.ts +10 -0
  146. package/src/extractor/dom-util.ts +152 -0
  147. package/src/extractor/index.ts +50 -0
  148. package/src/extractor/locator.ts +179 -0
  149. package/src/extractor/tree.ts +179 -0
  150. package/src/extractor/util.ts +468 -0
  151. package/src/extractor/web-extractor.ts +481 -0
  152. package/src/img/box-select.ts +346 -0
  153. package/src/img/draw-box.ts +60 -0
  154. package/src/img/get-jimp.ts +12 -0
  155. package/src/img/get-photon.ts +48 -0
  156. package/src/img/get-sharp.ts +18 -0
  157. package/src/img/index.ts +24 -0
  158. package/src/img/info.ts +79 -0
  159. package/src/img/jimp.d.ts +4 -0
  160. package/src/img/transform.ts +396 -0
  161. package/src/index.ts +6 -0
  162. package/src/logger.ts +93 -0
  163. package/src/node/fs.ts +84 -0
  164. package/src/node/index.ts +1 -0
  165. package/src/polyfills/async-hooks.ts +6 -0
  166. package/src/polyfills/index.ts +4 -0
  167. package/src/types/index.ts +47 -0
  168. package/src/us-keyboard-layout.ts +723 -0
  169. package/src/utils.ts +127 -0
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ globalConfigManager: ()=>globalConfigManager,
28
+ globalModelConfigManager: ()=>globalModelConfigManager,
29
+ getPreferredLanguage: ()=>getPreferredLanguage,
30
+ overrideAIConfig: ()=>overrideAIConfig
31
+ });
32
+ const external_global_config_manager_js_namespaceObject = require("./global-config-manager.js");
33
+ const external_model_config_manager_js_namespaceObject = require("./model-config-manager.js");
34
+ const external_types_js_namespaceObject = require("./types.js");
35
+ const globalModelConfigManager = new external_model_config_manager_js_namespaceObject.ModelConfigManager();
36
+ const globalConfigManager = new external_global_config_manager_js_namespaceObject.GlobalConfigManager();
37
+ globalConfigManager.registerModelConfigManager(globalModelConfigManager);
38
+ globalModelConfigManager.registerGlobalConfigManager(globalConfigManager);
39
+ const getPreferredLanguage = ()=>{
40
+ const prefer = globalConfigManager.getEnvConfigValue(external_types_js_namespaceObject.SQAI_PREFERRED_LANGUAGE);
41
+ if (prefer) return prefer;
42
+ const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
43
+ const isChina = 'Asia/Shanghai' === timeZone;
44
+ return isChina ? 'Chinese' : 'English';
45
+ };
46
+ const overrideAIConfig = (newConfig, extendMode = false)=>{
47
+ globalConfigManager.overrideAIConfig(newConfig, extendMode);
48
+ };
49
+ exports.getPreferredLanguage = __webpack_exports__.getPreferredLanguage;
50
+ exports.globalConfigManager = __webpack_exports__.globalConfigManager;
51
+ exports.globalModelConfigManager = __webpack_exports__.globalModelConfigManager;
52
+ exports.overrideAIConfig = __webpack_exports__.overrideAIConfig;
53
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
54
+ "getPreferredLanguage",
55
+ "globalConfigManager",
56
+ "globalModelConfigManager",
57
+ "overrideAIConfig"
58
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
59
+ Object.defineProperty(exports, '__esModule', {
60
+ value: true
61
+ });
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ NodeType: ()=>index_js_namespaceObject.NodeType,
28
+ TEXT_MAX_SIZE: ()=>index_js_namespaceObject.TEXT_MAX_SIZE,
29
+ TEXT_SIZE_THRESHOLD: ()=>index_js_namespaceObject.TEXT_SIZE_THRESHOLD
30
+ });
31
+ const index_js_namespaceObject = require("../constants/index.js");
32
+ exports.NodeType = __webpack_exports__.NodeType;
33
+ exports.TEXT_MAX_SIZE = __webpack_exports__.TEXT_MAX_SIZE;
34
+ exports.TEXT_SIZE_THRESHOLD = __webpack_exports__.TEXT_SIZE_THRESHOLD;
35
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
36
+ "NodeType",
37
+ "TEXT_MAX_SIZE",
38
+ "TEXT_SIZE_THRESHOLD"
39
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
40
+ Object.defineProperty(exports, '__esModule', {
41
+ value: true
42
+ });
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __webpack_exports__ = {};
3
+ const external_index_js_namespaceObject = require("./index.js");
4
+ const external_util_js_namespaceObject = require("./util.js");
5
+ console.log((0, external_index_js_namespaceObject.webExtractTextWithPosition)(document.body, true));
6
+ console.log(JSON.stringify((0, external_index_js_namespaceObject.webExtractTextWithPosition)(document.body, true)));
7
+ (0, external_util_js_namespaceObject.setExtractTextWithPositionOnWindow)();
8
+ (0, external_util_js_namespaceObject.setMidsceneVisibleRectOnWindow)();
9
+ for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
10
+ Object.defineProperty(exports, '__esModule', {
11
+ value: true
12
+ });
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ isFormElement: ()=>isFormElement,
28
+ isButtonElement: ()=>isButtonElement,
29
+ isAElement: ()=>isAElement,
30
+ isSvgElement: ()=>isSvgElement,
31
+ isTextElement: ()=>isTextElement,
32
+ generateElementByPosition: ()=>generateElementByPosition,
33
+ isImgElement: ()=>isImgElement,
34
+ isNotContainerElement: ()=>isNotContainerElement,
35
+ isContainerElement: ()=>isContainerElement
36
+ });
37
+ const index_js_namespaceObject = require("../constants/index.js");
38
+ const external_utils_js_namespaceObject = require("../utils.js");
39
+ function isFormElement(node) {
40
+ return node instanceof HTMLElement && ('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase() || 'select' === node.tagName.toLowerCase() || 'option' === node.tagName.toLowerCase());
41
+ }
42
+ function isButtonElement(node) {
43
+ return node instanceof HTMLElement && 'button' === node.tagName.toLowerCase();
44
+ }
45
+ function isAElement(node) {
46
+ return node instanceof HTMLElement && 'a' === node.tagName.toLowerCase();
47
+ }
48
+ function isSvgElement(node) {
49
+ return node instanceof SVGElement;
50
+ }
51
+ function isImgElement(node) {
52
+ if (!includeBaseElement(node) && node instanceof Element) {
53
+ const computedStyle = window.getComputedStyle(node);
54
+ const backgroundImage = computedStyle.getPropertyValue('background-image');
55
+ if ('none' !== backgroundImage) return true;
56
+ }
57
+ if (isIconfont(node)) return true;
58
+ return node instanceof HTMLElement && 'img' === node.tagName.toLowerCase() || node instanceof SVGElement && 'svg' === node.tagName.toLowerCase();
59
+ }
60
+ function isIconfont(node) {
61
+ if (node instanceof Element) {
62
+ const computedStyle = window.getComputedStyle(node);
63
+ const fontFamilyValue = computedStyle.fontFamily || '';
64
+ return fontFamilyValue.toLowerCase().indexOf('iconfont') >= 0;
65
+ }
66
+ return false;
67
+ }
68
+ function isNotContainerElement(node) {
69
+ return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);
70
+ }
71
+ function isTextElement(node) {
72
+ var _node_nodeName_toLowerCase, _node_nodeName;
73
+ if (node instanceof Element) {
74
+ var _node_childNodes;
75
+ if ((null == node ? void 0 : null == (_node_childNodes = node.childNodes) ? void 0 : _node_childNodes.length) === 1 && (null == node ? void 0 : node.childNodes[0]) instanceof Text) return true;
76
+ }
77
+ return (null == (_node_nodeName = node.nodeName) ? void 0 : null == (_node_nodeName_toLowerCase = _node_nodeName.toLowerCase) ? void 0 : _node_nodeName_toLowerCase.call(_node_nodeName)) === '#text' && !isIconfont(node);
78
+ }
79
+ function isContainerElement(node) {
80
+ if (!(node instanceof HTMLElement)) return false;
81
+ if (includeBaseElement(node)) return false;
82
+ const computedStyle = window.getComputedStyle(node);
83
+ const backgroundColor = computedStyle.getPropertyValue('background-color');
84
+ if (backgroundColor) return true;
85
+ return false;
86
+ }
87
+ function includeBaseElement(node) {
88
+ if (!(node instanceof HTMLElement)) return false;
89
+ if (node.innerText) return true;
90
+ const includeList = [
91
+ 'svg',
92
+ 'button',
93
+ 'input',
94
+ 'textarea',
95
+ 'select',
96
+ 'option',
97
+ 'img',
98
+ 'a'
99
+ ];
100
+ for (const tagName of includeList){
101
+ const element = node.querySelectorAll(tagName);
102
+ if (element.length > 0) return true;
103
+ }
104
+ return false;
105
+ }
106
+ function generateElementByPosition(position) {
107
+ const rect = {
108
+ left: Math.max(position.x - 4, 0),
109
+ top: Math.max(position.y - 4, 0),
110
+ width: 8,
111
+ height: 8
112
+ };
113
+ const id = (0, external_utils_js_namespaceObject.generateHashId)(rect);
114
+ const element = {
115
+ id,
116
+ attributes: {
117
+ nodeType: index_js_namespaceObject.NodeType.POSITION
118
+ },
119
+ rect,
120
+ content: '',
121
+ center: [
122
+ position.x,
123
+ position.y
124
+ ]
125
+ };
126
+ return element;
127
+ }
128
+ exports.generateElementByPosition = __webpack_exports__.generateElementByPosition;
129
+ exports.isAElement = __webpack_exports__.isAElement;
130
+ exports.isButtonElement = __webpack_exports__.isButtonElement;
131
+ exports.isContainerElement = __webpack_exports__.isContainerElement;
132
+ exports.isFormElement = __webpack_exports__.isFormElement;
133
+ exports.isImgElement = __webpack_exports__.isImgElement;
134
+ exports.isNotContainerElement = __webpack_exports__.isNotContainerElement;
135
+ exports.isSvgElement = __webpack_exports__.isSvgElement;
136
+ exports.isTextElement = __webpack_exports__.isTextElement;
137
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
138
+ "generateElementByPosition",
139
+ "isAElement",
140
+ "isButtonElement",
141
+ "isContainerElement",
142
+ "isFormElement",
143
+ "isImgElement",
144
+ "isNotContainerElement",
145
+ "isSvgElement",
146
+ "isTextElement"
147
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
148
+ Object.defineProperty(exports, '__esModule', {
149
+ value: true
150
+ });
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ trimAttributes: ()=>external_tree_js_namespaceObject.trimAttributes,
28
+ setNodeHashCacheListOnWindow: ()=>external_util_js_namespaceObject.setNodeHashCacheListOnWindow,
29
+ getNodeInfoByXpath: ()=>external_locator_js_namespaceObject.getNodeInfoByXpath,
30
+ getXpathsById: ()=>external_locator_js_namespaceObject.getXpathsById,
31
+ getElementInfoByXpath: ()=>external_locator_js_namespaceObject.getElementInfoByXpath,
32
+ generateElementByPosition: ()=>external_dom_util_js_namespaceObject.generateElementByPosition,
33
+ descriptionOfTree: ()=>external_tree_js_namespaceObject.descriptionOfTree,
34
+ getNodeFromCacheList: ()=>external_util_js_namespaceObject.getNodeFromCacheList,
35
+ truncateText: ()=>external_tree_js_namespaceObject.truncateText,
36
+ treeToList: ()=>external_tree_js_namespaceObject.treeToList,
37
+ webExtractTextWithPosition: ()=>external_web_extractor_js_namespaceObject.extractTextWithPosition,
38
+ getElementXpath: ()=>external_locator_js_namespaceObject.getElementXpath,
39
+ webExtractNodeTree: ()=>external_web_extractor_js_namespaceObject.extractTreeNode,
40
+ getXpathsByPoint: ()=>external_locator_js_namespaceObject.getXpathsByPoint,
41
+ isNotContainerElement: ()=>external_dom_util_js_namespaceObject.isNotContainerElement,
42
+ traverseTree: ()=>external_tree_js_namespaceObject.traverseTree,
43
+ webExtractNodeTreeAsString: ()=>external_web_extractor_js_namespaceObject.extractTreeNodeAsString
44
+ });
45
+ const external_tree_js_namespaceObject = require("./tree.js");
46
+ const external_web_extractor_js_namespaceObject = require("./web-extractor.js");
47
+ const external_util_js_namespaceObject = require("./util.js");
48
+ const external_locator_js_namespaceObject = require("./locator.js");
49
+ const external_dom_util_js_namespaceObject = require("./dom-util.js");
50
+ exports.descriptionOfTree = __webpack_exports__.descriptionOfTree;
51
+ exports.generateElementByPosition = __webpack_exports__.generateElementByPosition;
52
+ exports.getElementInfoByXpath = __webpack_exports__.getElementInfoByXpath;
53
+ exports.getElementXpath = __webpack_exports__.getElementXpath;
54
+ exports.getNodeFromCacheList = __webpack_exports__.getNodeFromCacheList;
55
+ exports.getNodeInfoByXpath = __webpack_exports__.getNodeInfoByXpath;
56
+ exports.getXpathsById = __webpack_exports__.getXpathsById;
57
+ exports.getXpathsByPoint = __webpack_exports__.getXpathsByPoint;
58
+ exports.isNotContainerElement = __webpack_exports__.isNotContainerElement;
59
+ exports.setNodeHashCacheListOnWindow = __webpack_exports__.setNodeHashCacheListOnWindow;
60
+ exports.traverseTree = __webpack_exports__.traverseTree;
61
+ exports.treeToList = __webpack_exports__.treeToList;
62
+ exports.trimAttributes = __webpack_exports__.trimAttributes;
63
+ exports.truncateText = __webpack_exports__.truncateText;
64
+ exports.webExtractNodeTree = __webpack_exports__.webExtractNodeTree;
65
+ exports.webExtractNodeTreeAsString = __webpack_exports__.webExtractNodeTreeAsString;
66
+ exports.webExtractTextWithPosition = __webpack_exports__.webExtractTextWithPosition;
67
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
68
+ "descriptionOfTree",
69
+ "generateElementByPosition",
70
+ "getElementInfoByXpath",
71
+ "getElementXpath",
72
+ "getNodeFromCacheList",
73
+ "getNodeInfoByXpath",
74
+ "getXpathsById",
75
+ "getXpathsByPoint",
76
+ "isNotContainerElement",
77
+ "setNodeHashCacheListOnWindow",
78
+ "traverseTree",
79
+ "treeToList",
80
+ "trimAttributes",
81
+ "truncateText",
82
+ "webExtractNodeTree",
83
+ "webExtractNodeTreeAsString",
84
+ "webExtractTextWithPosition"
85
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
86
+ Object.defineProperty(exports, '__esModule', {
87
+ value: true
88
+ });
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ getXpathsByPoint: ()=>getXpathsByPoint,
28
+ getNodeInfoByXpath: ()=>getNodeInfoByXpath,
29
+ getElementInfoByXpath: ()=>getElementInfoByXpath,
30
+ getXpathsById: ()=>getXpathsById,
31
+ getElementXpath: ()=>getElementXpath
32
+ });
33
+ const external_dom_util_js_namespaceObject = require("./dom-util.js");
34
+ const external_util_js_namespaceObject = require("./util.js");
35
+ const external_web_extractor_js_namespaceObject = require("./web-extractor.js");
36
+ const getElementXpathIndex = (element)=>{
37
+ let index = 1;
38
+ let prev = element.previousElementSibling;
39
+ while(prev){
40
+ if (prev.nodeName.toLowerCase() === element.nodeName.toLowerCase()) index++;
41
+ prev = prev.previousElementSibling;
42
+ }
43
+ return index;
44
+ };
45
+ const normalizeXpathText = (text)=>{
46
+ if ('string' != typeof text) return '';
47
+ return text.replace(/\s+/g, ' ').trim();
48
+ };
49
+ const buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement)=>{
50
+ var _element_textContent;
51
+ const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : '';
52
+ const prefix = parentPath ? `${parentPath}/` : '/';
53
+ const tagName = element.nodeName.toLowerCase();
54
+ const textContent = null == (_element_textContent = element.textContent) ? void 0 : _element_textContent.trim();
55
+ if (isOrderSensitive) {
56
+ const index = getElementXpathIndex(element);
57
+ return `${prefix}${tagName}[${index}]`;
58
+ }
59
+ if (isLeafElement && textContent) return `${prefix}${tagName}[normalize-space()="${normalizeXpathText(textContent)}"]`;
60
+ const index = getElementXpathIndex(element);
61
+ return `${prefix}${tagName}[${index}]`;
62
+ };
63
+ const getElementXpath = (element, isOrderSensitive = false, isLeafElement = false)=>{
64
+ if (element.nodeType === Node.TEXT_NODE) {
65
+ const parentNode = element.parentNode;
66
+ if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {
67
+ var _element_textContent;
68
+ const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);
69
+ const textContent = null == (_element_textContent = element.textContent) ? void 0 : _element_textContent.trim();
70
+ if (textContent) return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;
71
+ return `${parentXPath}/text()`;
72
+ }
73
+ return '';
74
+ }
75
+ if (element.nodeType !== Node.ELEMENT_NODE) return '';
76
+ const el = element;
77
+ if (el === document.documentElement) return '/html';
78
+ if (el === document.body) return '/html/body';
79
+ if ((0, external_dom_util_js_namespaceObject.isSvgElement)(el)) {
80
+ let parent = el.parentNode;
81
+ while(parent && parent.nodeType === Node.ELEMENT_NODE){
82
+ if (!(0, external_dom_util_js_namespaceObject.isSvgElement)(parent)) return getElementXpath(parent, isOrderSensitive, isLeafElement);
83
+ parent = parent.parentNode;
84
+ }
85
+ return getElementXpath(el.parentNode, isOrderSensitive, isLeafElement);
86
+ }
87
+ return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);
88
+ };
89
+ function getXpathsById(id) {
90
+ const node = (0, external_util_js_namespaceObject.getNodeFromCacheList)(id);
91
+ if (!node) return null;
92
+ const fullXPath = getElementXpath(node, false, true);
93
+ return [
94
+ fullXPath
95
+ ];
96
+ }
97
+ function getXpathsByPoint(point, isOrderSensitive) {
98
+ const element = document.elementFromPoint(point.left, point.top);
99
+ if (!element) return null;
100
+ const fullXPath = getElementXpath(element, isOrderSensitive, true);
101
+ return [
102
+ fullXPath
103
+ ];
104
+ }
105
+ function getNodeInfoByXpath(xpath) {
106
+ const xpathResult = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
107
+ if (1 !== xpathResult.snapshotLength) return null;
108
+ const node = xpathResult.snapshotItem(0);
109
+ return node;
110
+ }
111
+ function getElementInfoByXpath(xpath) {
112
+ const node = getNodeInfoByXpath(xpath);
113
+ if (!node) return null;
114
+ if (node instanceof HTMLElement) {
115
+ const rect = (0, external_util_js_namespaceObject.getRect)(node, 1, window);
116
+ const isVisible = (0, external_util_js_namespaceObject.isElementPartiallyInViewport)(rect, window, document, 1);
117
+ if (!isVisible) node.scrollIntoView({
118
+ behavior: 'instant',
119
+ block: 'center'
120
+ });
121
+ }
122
+ return (0, external_web_extractor_js_namespaceObject.collectElementInfo)(node, window, document, 1, {
123
+ left: 0,
124
+ top: 0
125
+ }, true);
126
+ }
127
+ exports.getElementInfoByXpath = __webpack_exports__.getElementInfoByXpath;
128
+ exports.getElementXpath = __webpack_exports__.getElementXpath;
129
+ exports.getNodeInfoByXpath = __webpack_exports__.getNodeInfoByXpath;
130
+ exports.getXpathsById = __webpack_exports__.getXpathsById;
131
+ exports.getXpathsByPoint = __webpack_exports__.getXpathsByPoint;
132
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
133
+ "getElementInfoByXpath",
134
+ "getElementXpath",
135
+ "getNodeInfoByXpath",
136
+ "getXpathsById",
137
+ "getXpathsByPoint"
138
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
139
+ Object.defineProperty(exports, '__esModule', {
140
+ value: true
141
+ });
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = (exports1)=>{
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ descriptionOfTree: ()=>descriptionOfTree,
28
+ traverseTree: ()=>traverseTree,
29
+ treeToList: ()=>treeToList,
30
+ trimAttributes: ()=>trimAttributes,
31
+ truncateText: ()=>truncateText
32
+ });
33
+ function truncateText(text, maxLength = 150) {
34
+ if (void 0 === text) return '';
35
+ if ('object' == typeof text) text = JSON.stringify(text);
36
+ if ('number' == typeof text) return text.toString();
37
+ if ('string' == typeof text && text.length > maxLength) return `${text.slice(0, maxLength)}...`;
38
+ if ('string' == typeof text) return text.trim();
39
+ return '';
40
+ }
41
+ function trimAttributes(attributes, truncateTextLength) {
42
+ const tailorAttributes = Object.keys(attributes).reduce((res, currentKey)=>{
43
+ const attributeVal = attributes[currentKey];
44
+ if ('style' === currentKey || 'htmlTagName' === currentKey || 'nodeType' === currentKey) return res;
45
+ res[currentKey] = truncateText(attributeVal, truncateTextLength);
46
+ return res;
47
+ }, {});
48
+ return tailorAttributes;
49
+ }
50
+ const nodeSizeThreshold = 4;
51
+ function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = false, visibleOnly = true) {
52
+ const attributesString = (kv)=>Object.entries(kv).map(([key, value])=>`${key}="${truncateText(value, truncateTextLength)}"`).join(' ');
53
+ function buildContentTree(node, indent = 0, visibleOnly = true) {
54
+ let before = '';
55
+ let contentWithIndent = '';
56
+ let after = '';
57
+ let emptyNode = true;
58
+ const indentStr = ' '.repeat(indent);
59
+ let children = '';
60
+ for(let i = 0; i < (node.children || []).length; i++){
61
+ const childContent = buildContentTree(node.children[i], indent + 1, visibleOnly);
62
+ if (childContent) children += `\n${childContent}`;
63
+ }
64
+ if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly || visibleOnly && node.node.isVisible)) {
65
+ var _node_node_attributes;
66
+ emptyNode = false;
67
+ let nodeTypeString;
68
+ nodeTypeString = (null == (_node_node_attributes = node.node.attributes) ? void 0 : _node_node_attributes.htmlTagName) ? node.node.attributes.htmlTagName.replace(/[<>]/g, '') : node.node.attributes.nodeType.replace(/\sNode$/, '').toLowerCase();
69
+ const markerId = node.node.indexId;
70
+ const markerIdString = markerId ? `markerId="${markerId}"` : '';
71
+ const rectAttribute = node.node.rect ? {
72
+ left: node.node.rect.left,
73
+ top: node.node.rect.top,
74
+ width: node.node.rect.width,
75
+ height: node.node.rect.height
76
+ } : {};
77
+ before = `<${nodeTypeString} id="${node.node.id}" ${markerIdString} ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;
78
+ const content = truncateText(node.node.content, truncateTextLength);
79
+ contentWithIndent = content ? `\n${indentStr} ${content}` : '';
80
+ after = `</${nodeTypeString}>`;
81
+ } else if (!filterNonTextContent) {
82
+ if (!children.trim().startsWith('<>')) {
83
+ before = '<>';
84
+ contentWithIndent = '';
85
+ after = '</>';
86
+ }
87
+ }
88
+ if (emptyNode && !children.trim()) return '';
89
+ const result = `${indentStr}${before}${contentWithIndent}${children}\n${indentStr}${after}`;
90
+ if (result.trim()) return result;
91
+ return '';
92
+ }
93
+ const result = buildContentTree(tree, 0, visibleOnly);
94
+ return result.replace(/^\s*\n/gm, '');
95
+ }
96
+ function treeToList(tree) {
97
+ const result = [];
98
+ function dfs(node) {
99
+ if (node.node) result.push(node.node);
100
+ for (const child of node.children)dfs(child);
101
+ }
102
+ dfs(tree);
103
+ return result;
104
+ }
105
+ function traverseTree(tree, onNode) {
106
+ function dfs(node) {
107
+ if (node.node) node.node = onNode(node.node);
108
+ for (const child of node.children)dfs(child);
109
+ }
110
+ dfs(tree);
111
+ return tree;
112
+ }
113
+ exports.descriptionOfTree = __webpack_exports__.descriptionOfTree;
114
+ exports.traverseTree = __webpack_exports__.traverseTree;
115
+ exports.treeToList = __webpack_exports__.treeToList;
116
+ exports.trimAttributes = __webpack_exports__.trimAttributes;
117
+ exports.truncateText = __webpack_exports__.truncateText;
118
+ for(var __webpack_i__ in __webpack_exports__)if (-1 === [
119
+ "descriptionOfTree",
120
+ "traverseTree",
121
+ "treeToList",
122
+ "trimAttributes",
123
+ "truncateText"
124
+ ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
125
+ Object.defineProperty(exports, '__esModule', {
126
+ value: true
127
+ });