@midscene/shared 0.30.10 → 1.0.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.
- package/dist/es/build/rspack-config.mjs +4 -0
- package/dist/es/constants/example-code.mjs +4 -4
- package/dist/es/env/constants.mjs +27 -82
- package/dist/es/env/global-config-manager.mjs +2 -3
- package/dist/es/env/helper.mjs +12 -17
- package/dist/es/env/init-debug.mjs +6 -6
- package/dist/es/env/model-config-manager.mjs +45 -65
- package/dist/es/env/parse-model-config.mjs +112 -0
- package/dist/es/env/types.mjs +70 -162
- package/dist/es/extractor/dom-util.mjs +10 -18
- package/dist/es/extractor/index.mjs +2 -3
- package/dist/es/extractor/locator.mjs +8 -15
- package/dist/es/extractor/tree.mjs +2 -5
- package/dist/es/extractor/util.mjs +4 -28
- package/dist/es/extractor/web-extractor.mjs +7 -14
- package/dist/es/index.mjs +2 -1
- package/dist/es/mcp/base-server.mjs +250 -0
- package/dist/es/mcp/base-tools.mjs +84 -0
- package/dist/es/mcp/index.mjs +5 -0
- package/dist/es/mcp/inject-report-html-plugin.mjs +53 -0
- package/dist/es/mcp/tool-generator.mjs +207 -0
- package/dist/es/mcp/types.mjs +3 -0
- package/dist/es/node/fs.mjs +2 -2
- package/dist/es/utils.mjs +2 -3
- package/dist/es/zod-schema-utils.mjs +54 -0
- package/dist/lib/baseDB.js +2 -2
- package/dist/lib/build/copy-static.js +4 -4
- package/dist/lib/build/rspack-config.js +38 -0
- package/dist/lib/common.js +4 -4
- package/dist/lib/constants/example-code.js +6 -6
- package/dist/lib/constants/index.js +13 -13
- package/dist/lib/env/basic.js +2 -2
- package/dist/lib/env/constants.js +32 -90
- package/dist/lib/env/global-config-manager.js +4 -5
- package/dist/lib/env/helper.js +13 -22
- package/dist/lib/env/index.js +24 -28
- package/dist/lib/env/init-debug.js +7 -7
- package/dist/lib/env/model-config-manager.js +47 -67
- package/dist/lib/env/parse-model-config.js +155 -0
- package/dist/lib/env/types.js +146 -379
- package/dist/lib/env/utils.js +4 -4
- package/dist/lib/extractor/constants.js +4 -4
- package/dist/lib/extractor/debug.js +1 -1
- package/dist/lib/extractor/dom-util.js +18 -26
- package/dist/lib/extractor/index.js +11 -21
- package/dist/lib/extractor/locator.js +10 -20
- package/dist/lib/extractor/tree.js +4 -7
- package/dist/lib/extractor/util.js +17 -50
- package/dist/lib/extractor/web-extractor.js +12 -19
- package/dist/lib/img/box-select.js +4 -4
- package/dist/lib/img/draw-box.js +2 -2
- package/dist/lib/img/get-jimp.js +16 -34
- package/dist/lib/img/get-photon.js +24 -47
- package/dist/lib/img/get-sharp.js +16 -34
- package/dist/lib/img/index.js +18 -18
- package/dist/lib/img/info.js +4 -4
- package/dist/lib/img/transform.js +10 -10
- package/dist/lib/index.js +8 -4
- package/dist/lib/logger.js +4 -4
- package/dist/lib/mcp/base-server.js +300 -0
- package/dist/lib/mcp/base-tools.js +118 -0
- package/dist/lib/mcp/index.js +86 -0
- package/dist/lib/mcp/inject-report-html-plugin.js +98 -0
- package/dist/lib/mcp/tool-generator.js +244 -0
- package/dist/lib/mcp/types.js +40 -0
- package/dist/lib/node/fs.js +6 -6
- package/dist/lib/node/index.js +6 -8
- package/dist/lib/polyfills/async-hooks.js +2 -2
- package/dist/lib/polyfills/index.js +6 -8
- package/dist/lib/types/index.js +2 -2
- package/dist/lib/us-keyboard-layout.js +2 -2
- package/dist/lib/utils.js +13 -14
- package/dist/lib/zod-schema-utils.js +97 -0
- package/dist/types/build/rspack-config.d.ts +8 -0
- package/dist/types/constants/example-code.d.ts +1 -1
- package/dist/types/env/constants.d.ts +5 -18
- package/dist/types/env/global-config-manager.d.ts +1 -2
- package/dist/types/env/helper.d.ts +2 -4
- package/dist/types/env/model-config-manager.d.ts +8 -7
- package/dist/types/env/parse-model-config.d.ts +28 -0
- package/dist/types/env/types.d.ts +152 -191
- package/dist/types/extractor/dom-util.d.ts +2 -15
- package/dist/types/extractor/index.d.ts +1 -2
- package/dist/types/extractor/locator.d.ts +0 -1
- package/dist/types/extractor/tree.d.ts +1 -4
- package/dist/types/extractor/util.d.ts +0 -3
- package/dist/types/index.d.ts +1 -0
- package/dist/types/mcp/base-server.d.ts +77 -0
- package/dist/types/mcp/base-tools.d.ts +55 -0
- package/dist/types/mcp/index.d.ts +5 -0
- package/dist/types/mcp/inject-report-html-plugin.d.ts +18 -0
- package/dist/types/mcp/tool-generator.d.ts +11 -0
- package/dist/types/mcp/types.d.ts +100 -0
- package/dist/types/types/index.d.ts +5 -2
- package/dist/types/zod-schema-utils.d.ts +23 -0
- package/package.json +19 -4
- package/src/build/rspack-config.ts +12 -0
- package/src/constants/example-code.ts +4 -4
- package/src/env/constants.ts +58 -203
- package/src/env/global-config-manager.ts +7 -7
- package/src/env/helper.ts +10 -31
- package/src/env/init-debug.ts +11 -6
- package/src/env/model-config-manager.ts +91 -87
- package/src/env/parse-model-config.ts +265 -0
- package/src/env/types.ts +212 -344
- package/src/extractor/dom-util.ts +15 -12
- package/src/extractor/index.ts +0 -3
- package/src/extractor/locator.ts +3 -12
- package/src/extractor/tree.ts +4 -4
- package/src/extractor/util.ts +0 -32
- package/src/index.ts +2 -0
- package/src/mcp/base-server.ts +435 -0
- package/src/mcp/base-tools.ts +196 -0
- package/src/mcp/index.ts +5 -0
- package/src/mcp/inject-report-html-plugin.ts +119 -0
- package/src/mcp/tool-generator.ts +330 -0
- package/src/mcp/types.ts +108 -0
- package/src/node/fs.ts +1 -1
- package/src/types/index.ts +8 -2
- package/src/utils.ts +1 -1
- package/src/zod-schema-utils.ts +133 -0
- package/dist/es/env/decide-model-config.mjs +0 -172
- package/dist/es/env/parse.mjs +0 -69
- package/dist/lib/env/decide-model-config.js +0 -212
- package/dist/lib/env/parse.js +0 -106
- package/dist/types/env/decide-model-config.d.ts +0 -14
- package/dist/types/env/parse.d.ts +0 -12
- package/src/env/decide-model-config.ts +0 -319
- package/src/env/parse.ts +0 -131
package/dist/es/env/types.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
const
|
|
1
|
+
const MIDSCENE_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_MODEL_INIT_CONFIG_JSON';
|
|
2
2
|
const MIDSCENE_MODEL_NAME = 'MIDSCENE_MODEL_NAME';
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const MIDSCENE_DEBUG_AI_RESPONSE = 'MIDSCENE_DEBUG_AI_RESPONSE';
|
|
3
|
+
const MIDSCENE_DEBUG_MODEL_PROFILE = 'MIDSCENE_DEBUG_MODEL_PROFILE';
|
|
4
|
+
const MIDSCENE_DEBUG_MODEL_RESPONSE = 'MIDSCENE_DEBUG_MODEL_RESPONSE';
|
|
6
5
|
const MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG = 'MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG';
|
|
7
6
|
const MIDSCENE_DEBUG_MODE = 'MIDSCENE_DEBUG_MODE';
|
|
8
7
|
const MIDSCENE_MCP_USE_PUPPETEER_MODE = 'MIDSCENE_MCP_USE_PUPPETEER_MODE';
|
|
@@ -10,10 +9,19 @@ const MIDSCENE_MCP_CHROME_PATH = 'MIDSCENE_MCP_CHROME_PATH';
|
|
|
10
9
|
const MIDSCENE_MCP_ANDROID_MODE = 'MIDSCENE_MCP_ANDROID_MODE';
|
|
11
10
|
const DOCKER_CONTAINER = 'DOCKER_CONTAINER';
|
|
12
11
|
const MIDSCENE_FORCE_DEEP_THINK = 'MIDSCENE_FORCE_DEEP_THINK';
|
|
13
|
-
const
|
|
14
|
-
const
|
|
12
|
+
const MIDSCENE_LANGSMITH_DEBUG = 'MIDSCENE_LANGSMITH_DEBUG';
|
|
13
|
+
const MIDSCENE_LANGFUSE_DEBUG = 'MIDSCENE_LANGFUSE_DEBUG';
|
|
14
|
+
const MIDSCENE_MODEL_SOCKS_PROXY = 'MIDSCENE_MODEL_SOCKS_PROXY';
|
|
15
|
+
const MIDSCENE_MODEL_HTTP_PROXY = 'MIDSCENE_MODEL_HTTP_PROXY';
|
|
16
|
+
const MIDSCENE_MODEL_API_KEY = 'MIDSCENE_MODEL_API_KEY';
|
|
17
|
+
const MIDSCENE_MODEL_BASE_URL = 'MIDSCENE_MODEL_BASE_URL';
|
|
18
|
+
const MIDSCENE_MODEL_MAX_TOKENS = 'MIDSCENE_MODEL_MAX_TOKENS';
|
|
19
|
+
const MIDSCENE_MODEL_TIMEOUT = 'MIDSCENE_MODEL_TIMEOUT';
|
|
15
20
|
const OPENAI_API_KEY = 'OPENAI_API_KEY';
|
|
16
21
|
const OPENAI_BASE_URL = 'OPENAI_BASE_URL';
|
|
22
|
+
const MIDSCENE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_OPENAI_INIT_CONFIG_JSON';
|
|
23
|
+
const MIDSCENE_OPENAI_HTTP_PROXY = 'MIDSCENE_OPENAI_HTTP_PROXY';
|
|
24
|
+
const MIDSCENE_OPENAI_SOCKS_PROXY = 'MIDSCENE_OPENAI_SOCKS_PROXY';
|
|
17
25
|
const OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS';
|
|
18
26
|
const MIDSCENE_ADB_PATH = 'MIDSCENE_ADB_PATH';
|
|
19
27
|
const MIDSCENE_ADB_REMOTE_HOST = 'MIDSCENE_ADB_REMOTE_HOST';
|
|
@@ -29,103 +37,49 @@ const MIDSCENE_USE_DOUBAO_VISION = 'MIDSCENE_USE_DOUBAO_VISION';
|
|
|
29
37
|
const MIDSCENE_USE_GEMINI = 'MIDSCENE_USE_GEMINI';
|
|
30
38
|
const MIDSCENE_USE_VL_MODEL = 'MIDSCENE_USE_VL_MODEL';
|
|
31
39
|
const MATCH_BY_POSITION = 'MATCH_BY_POSITION';
|
|
32
|
-
const MIDSCENE_API_TYPE = 'MIDSCENE-API-TYPE';
|
|
33
40
|
const MIDSCENE_REPORT_TAG_NAME = 'MIDSCENE_REPORT_TAG_NAME';
|
|
34
|
-
const MIDSCENE_REPLANNING_CYCLE_LIMIT = 'MIDSCENE_REPLANNING_CYCLE_LIMIT';
|
|
35
41
|
const MIDSCENE_PREFERRED_LANGUAGE = 'MIDSCENE_PREFERRED_LANGUAGE';
|
|
36
|
-
const MIDSCENE_USE_AZURE_OPENAI = 'MIDSCENE_USE_AZURE_OPENAI';
|
|
37
|
-
const MIDSCENE_AZURE_OPENAI_SCOPE = 'MIDSCENE_AZURE_OPENAI_SCOPE';
|
|
38
|
-
const MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON';
|
|
39
42
|
const MIDSCENE_CACHE_MAX_FILENAME_LENGTH = 'MIDSCENE_CACHE_MAX_FILENAME_LENGTH';
|
|
40
|
-
const
|
|
41
|
-
const AZURE_OPENAI_KEY = 'AZURE_OPENAI_KEY';
|
|
42
|
-
const AZURE_OPENAI_API_VERSION = 'AZURE_OPENAI_API_VERSION';
|
|
43
|
-
const AZURE_OPENAI_DEPLOYMENT = 'AZURE_OPENAI_DEPLOYMENT';
|
|
44
|
-
const MIDSCENE_USE_ANTHROPIC_SDK = 'MIDSCENE_USE_ANTHROPIC_SDK';
|
|
45
|
-
const ANTHROPIC_API_KEY = 'ANTHROPIC_API_KEY';
|
|
43
|
+
const MIDSCENE_REPLANNING_CYCLE_LIMIT = 'MIDSCENE_REPLANNING_CYCLE_LIMIT';
|
|
46
44
|
const MIDSCENE_RUN_DIR = 'MIDSCENE_RUN_DIR';
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
const
|
|
50
|
-
const
|
|
51
|
-
const
|
|
52
|
-
const
|
|
53
|
-
const
|
|
54
|
-
const MIDSCENE_ANTHROPIC_API_KEY = 'MIDSCENE_ANTHROPIC_API_KEY';
|
|
55
|
-
const MIDSCENE_VL_MODE = 'MIDSCENE_VL_MODE';
|
|
56
|
-
const MIDSCENE_VQA_MODEL_NAME = 'MIDSCENE_VQA_MODEL_NAME';
|
|
57
|
-
const MIDSCENE_VQA_OPENAI_SOCKS_PROXY = 'MIDSCENE_VQA_OPENAI_SOCKS_PROXY';
|
|
58
|
-
const MIDSCENE_VQA_OPENAI_HTTP_PROXY = 'MIDSCENE_VQA_OPENAI_HTTP_PROXY';
|
|
59
|
-
const MIDSCENE_VQA_OPENAI_BASE_URL = 'MIDSCENE_VQA_OPENAI_BASE_URL';
|
|
60
|
-
const MIDSCENE_VQA_OPENAI_API_KEY = 'MIDSCENE_VQA_OPENAI_API_KEY';
|
|
61
|
-
const MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON';
|
|
62
|
-
const MIDSCENE_VQA_OPENAI_USE_AZURE = 'MIDSCENE_VQA_OPENAI_USE_AZURE';
|
|
63
|
-
const MIDSCENE_VQA_USE_AZURE_OPENAI = 'MIDSCENE_VQA_USE_AZURE_OPENAI';
|
|
64
|
-
const MIDSCENE_VQA_AZURE_OPENAI_SCOPE = 'MIDSCENE_VQA_AZURE_OPENAI_SCOPE';
|
|
65
|
-
const MIDSCENE_VQA_AZURE_OPENAI_KEY = 'MIDSCENE_VQA_AZURE_OPENAI_KEY';
|
|
66
|
-
const MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT';
|
|
67
|
-
const MIDSCENE_VQA_AZURE_OPENAI_API_VERSION = 'MIDSCENE_VQA_AZURE_OPENAI_API_VERSION';
|
|
68
|
-
const MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT';
|
|
69
|
-
const MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON';
|
|
70
|
-
const MIDSCENE_VQA_USE_ANTHROPIC_SDK = 'MIDSCENE_VQA_USE_ANTHROPIC_SDK';
|
|
71
|
-
const MIDSCENE_VQA_ANTHROPIC_API_KEY = 'MIDSCENE_VQA_ANTHROPIC_API_KEY';
|
|
72
|
-
const MIDSCENE_VQA_VL_MODE = 'MIDSCENE_VQA_VL_MODE';
|
|
45
|
+
const MIDSCENE_INSIGHT_MODEL_NAME = 'MIDSCENE_INSIGHT_MODEL_NAME';
|
|
46
|
+
const MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY = 'MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY';
|
|
47
|
+
const MIDSCENE_INSIGHT_MODEL_HTTP_PROXY = 'MIDSCENE_INSIGHT_MODEL_HTTP_PROXY';
|
|
48
|
+
const MIDSCENE_INSIGHT_MODEL_BASE_URL = 'MIDSCENE_INSIGHT_MODEL_BASE_URL';
|
|
49
|
+
const MIDSCENE_INSIGHT_MODEL_API_KEY = 'MIDSCENE_INSIGHT_MODEL_API_KEY';
|
|
50
|
+
const MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON';
|
|
51
|
+
const MIDSCENE_INSIGHT_MODEL_TIMEOUT = 'MIDSCENE_INSIGHT_MODEL_TIMEOUT';
|
|
73
52
|
const MIDSCENE_PLANNING_MODEL_NAME = 'MIDSCENE_PLANNING_MODEL_NAME';
|
|
74
|
-
const
|
|
75
|
-
const
|
|
76
|
-
const
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
const
|
|
80
|
-
const
|
|
81
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE = 'MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE';
|
|
82
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_KEY = 'MIDSCENE_PLANNING_AZURE_OPENAI_KEY';
|
|
83
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT';
|
|
84
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION = 'MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION';
|
|
85
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT';
|
|
86
|
-
const MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON';
|
|
87
|
-
const MIDSCENE_PLANNING_USE_ANTHROPIC_SDK = 'MIDSCENE_PLANNING_USE_ANTHROPIC_SDK';
|
|
88
|
-
const MIDSCENE_PLANNING_ANTHROPIC_API_KEY = 'MIDSCENE_PLANNING_ANTHROPIC_API_KEY';
|
|
89
|
-
const MIDSCENE_PLANNING_VL_MODE = 'MIDSCENE_PLANNING_VL_MODE';
|
|
90
|
-
const MIDSCENE_GROUNDING_MODEL_NAME = 'MIDSCENE_GROUNDING_MODEL_NAME';
|
|
91
|
-
const MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY = 'MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY';
|
|
92
|
-
const MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY = 'MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY';
|
|
93
|
-
const MIDSCENE_GROUNDING_OPENAI_BASE_URL = 'MIDSCENE_GROUNDING_OPENAI_BASE_URL';
|
|
94
|
-
const MIDSCENE_GROUNDING_OPENAI_API_KEY = 'MIDSCENE_GROUNDING_OPENAI_API_KEY';
|
|
95
|
-
const MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON';
|
|
96
|
-
const MIDSCENE_GROUNDING_OPENAI_USE_AZURE = 'MIDSCENE_GROUNDING_OPENAI_USE_AZURE';
|
|
97
|
-
const MIDSCENE_GROUNDING_USE_AZURE_OPENAI = 'MIDSCENE_GROUNDING_USE_AZURE_OPENAI';
|
|
98
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE = 'MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE';
|
|
99
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_KEY = 'MIDSCENE_GROUNDING_AZURE_OPENAI_KEY';
|
|
100
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT = 'MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT';
|
|
101
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION = 'MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION';
|
|
102
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT = 'MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT';
|
|
103
|
-
const MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON = 'MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON';
|
|
104
|
-
const MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK = 'MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK';
|
|
105
|
-
const MIDSCENE_GROUNDING_ANTHROPIC_API_KEY = 'MIDSCENE_GROUNDING_ANTHROPIC_API_KEY';
|
|
106
|
-
const MIDSCENE_GROUNDING_VL_MODE = 'MIDSCENE_GROUNDING_VL_MODE';
|
|
107
|
-
const OPENAI_USE_AZURE = 'OPENAI_USE_AZURE';
|
|
53
|
+
const MIDSCENE_PLANNING_MODEL_SOCKS_PROXY = 'MIDSCENE_PLANNING_MODEL_SOCKS_PROXY';
|
|
54
|
+
const MIDSCENE_PLANNING_MODEL_HTTP_PROXY = 'MIDSCENE_PLANNING_MODEL_HTTP_PROXY';
|
|
55
|
+
const MIDSCENE_PLANNING_MODEL_BASE_URL = 'MIDSCENE_PLANNING_MODEL_BASE_URL';
|
|
56
|
+
const MIDSCENE_PLANNING_MODEL_API_KEY = 'MIDSCENE_PLANNING_MODEL_API_KEY';
|
|
57
|
+
const MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON = 'MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON';
|
|
58
|
+
const MIDSCENE_PLANNING_MODEL_TIMEOUT = 'MIDSCENE_PLANNING_MODEL_TIMEOUT';
|
|
59
|
+
const MIDSCENE_MODEL_FAMILY = 'MIDSCENE_MODEL_FAMILY';
|
|
108
60
|
const UNUSED_ENV_KEYS = [
|
|
109
61
|
MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG
|
|
110
62
|
];
|
|
111
63
|
const BASIC_ENV_KEYS = [
|
|
112
64
|
MIDSCENE_DEBUG_MODE,
|
|
113
|
-
|
|
114
|
-
|
|
65
|
+
MIDSCENE_DEBUG_MODEL_PROFILE,
|
|
66
|
+
MIDSCENE_DEBUG_MODEL_RESPONSE,
|
|
115
67
|
MIDSCENE_RUN_DIR
|
|
116
68
|
];
|
|
117
69
|
const BOOLEAN_ENV_KEYS = [
|
|
118
70
|
MIDSCENE_CACHE,
|
|
119
|
-
MIDSCENE_LANGSMITH_DEBUG,
|
|
120
71
|
MIDSCENE_FORCE_DEEP_THINK,
|
|
121
72
|
MIDSCENE_MCP_USE_PUPPETEER_MODE,
|
|
122
|
-
MIDSCENE_MCP_ANDROID_MODE
|
|
73
|
+
MIDSCENE_MCP_ANDROID_MODE,
|
|
74
|
+
MIDSCENE_LANGSMITH_DEBUG,
|
|
75
|
+
MIDSCENE_LANGFUSE_DEBUG
|
|
123
76
|
];
|
|
124
77
|
const NUMBER_ENV_KEYS = [
|
|
125
78
|
MIDSCENE_CACHE_MAX_FILENAME_LENGTH,
|
|
126
79
|
MIDSCENE_REPLANNING_CYCLE_LIMIT
|
|
127
80
|
];
|
|
128
81
|
const STRING_ENV_KEYS = [
|
|
82
|
+
MIDSCENE_MODEL_MAX_TOKENS,
|
|
129
83
|
OPENAI_MAX_TOKENS,
|
|
130
84
|
MIDSCENE_ADB_PATH,
|
|
131
85
|
MIDSCENE_ADB_REMOTE_HOST,
|
|
@@ -146,87 +100,38 @@ const GLOBAL_ENV_KEYS = [
|
|
|
146
100
|
];
|
|
147
101
|
const MODEL_ENV_KEYS = [
|
|
148
102
|
MIDSCENE_MODEL_NAME,
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
MIDSCENE_USE_AZURE_OPENAI,
|
|
156
|
-
MIDSCENE_AZURE_OPENAI_SCOPE,
|
|
157
|
-
MIDSCENE_AZURE_OPENAI_INIT_CONFIG_JSON,
|
|
158
|
-
MIDSCENE_USE_ANTHROPIC_SDK,
|
|
103
|
+
MIDSCENE_MODEL_INIT_CONFIG_JSON,
|
|
104
|
+
MIDSCENE_MODEL_API_KEY,
|
|
105
|
+
MIDSCENE_MODEL_BASE_URL,
|
|
106
|
+
MIDSCENE_MODEL_SOCKS_PROXY,
|
|
107
|
+
MIDSCENE_MODEL_HTTP_PROXY,
|
|
108
|
+
MIDSCENE_MODEL_TIMEOUT,
|
|
159
109
|
MIDSCENE_USE_VLM_UI_TARS,
|
|
160
110
|
MIDSCENE_USE_QWEN_VL,
|
|
161
111
|
MIDSCENE_USE_QWEN3_VL,
|
|
162
112
|
MIDSCENE_USE_DOUBAO_VISION,
|
|
163
113
|
MIDSCENE_USE_GEMINI,
|
|
164
114
|
MIDSCENE_USE_VL_MODEL,
|
|
165
|
-
ANTHROPIC_API_KEY,
|
|
166
|
-
MIDSCENE_AZURE_OPENAI_ENDPOINT,
|
|
167
|
-
MIDSCENE_AZURE_OPENAI_KEY,
|
|
168
|
-
MIDSCENE_AZURE_OPENAI_API_VERSION,
|
|
169
|
-
MIDSCENE_AZURE_OPENAI_DEPLOYMENT,
|
|
170
|
-
MIDSCENE_VL_MODE,
|
|
171
115
|
OPENAI_API_KEY,
|
|
172
116
|
OPENAI_BASE_URL,
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
MIDSCENE_VQA_OPENAI_API_KEY,
|
|
184
|
-
MIDSCENE_VQA_OPENAI_INIT_CONFIG_JSON,
|
|
185
|
-
MIDSCENE_VQA_OPENAI_USE_AZURE,
|
|
186
|
-
MIDSCENE_VQA_USE_AZURE_OPENAI,
|
|
187
|
-
MIDSCENE_VQA_AZURE_OPENAI_SCOPE,
|
|
188
|
-
MIDSCENE_VQA_AZURE_OPENAI_KEY,
|
|
189
|
-
MIDSCENE_VQA_AZURE_OPENAI_ENDPOINT,
|
|
190
|
-
MIDSCENE_VQA_AZURE_OPENAI_API_VERSION,
|
|
191
|
-
MIDSCENE_VQA_AZURE_OPENAI_DEPLOYMENT,
|
|
192
|
-
MIDSCENE_VQA_AZURE_OPENAI_INIT_CONFIG_JSON,
|
|
193
|
-
MIDSCENE_VQA_USE_ANTHROPIC_SDK,
|
|
194
|
-
MIDSCENE_VQA_ANTHROPIC_API_KEY,
|
|
195
|
-
MIDSCENE_VQA_VL_MODE,
|
|
117
|
+
MIDSCENE_OPENAI_INIT_CONFIG_JSON,
|
|
118
|
+
MIDSCENE_OPENAI_HTTP_PROXY,
|
|
119
|
+
MIDSCENE_OPENAI_SOCKS_PROXY,
|
|
120
|
+
MIDSCENE_INSIGHT_MODEL_NAME,
|
|
121
|
+
MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY,
|
|
122
|
+
MIDSCENE_INSIGHT_MODEL_HTTP_PROXY,
|
|
123
|
+
MIDSCENE_INSIGHT_MODEL_BASE_URL,
|
|
124
|
+
MIDSCENE_INSIGHT_MODEL_API_KEY,
|
|
125
|
+
MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON,
|
|
126
|
+
MIDSCENE_INSIGHT_MODEL_TIMEOUT,
|
|
196
127
|
MIDSCENE_PLANNING_MODEL_NAME,
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_SCOPE,
|
|
205
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_KEY,
|
|
206
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_ENDPOINT,
|
|
207
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_API_VERSION,
|
|
208
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_DEPLOYMENT,
|
|
209
|
-
MIDSCENE_PLANNING_AZURE_OPENAI_INIT_CONFIG_JSON,
|
|
210
|
-
MIDSCENE_PLANNING_USE_ANTHROPIC_SDK,
|
|
211
|
-
MIDSCENE_PLANNING_ANTHROPIC_API_KEY,
|
|
212
|
-
MIDSCENE_PLANNING_VL_MODE,
|
|
213
|
-
MIDSCENE_GROUNDING_MODEL_NAME,
|
|
214
|
-
MIDSCENE_GROUNDING_OPENAI_SOCKS_PROXY,
|
|
215
|
-
MIDSCENE_GROUNDING_OPENAI_HTTP_PROXY,
|
|
216
|
-
MIDSCENE_GROUNDING_OPENAI_BASE_URL,
|
|
217
|
-
MIDSCENE_GROUNDING_OPENAI_API_KEY,
|
|
218
|
-
MIDSCENE_GROUNDING_OPENAI_INIT_CONFIG_JSON,
|
|
219
|
-
MIDSCENE_GROUNDING_OPENAI_USE_AZURE,
|
|
220
|
-
MIDSCENE_GROUNDING_USE_AZURE_OPENAI,
|
|
221
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_SCOPE,
|
|
222
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_KEY,
|
|
223
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_ENDPOINT,
|
|
224
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_API_VERSION,
|
|
225
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_DEPLOYMENT,
|
|
226
|
-
MIDSCENE_GROUNDING_AZURE_OPENAI_INIT_CONFIG_JSON,
|
|
227
|
-
MIDSCENE_GROUNDING_USE_ANTHROPIC_SDK,
|
|
228
|
-
MIDSCENE_GROUNDING_ANTHROPIC_API_KEY,
|
|
229
|
-
MIDSCENE_GROUNDING_VL_MODE
|
|
128
|
+
MIDSCENE_PLANNING_MODEL_SOCKS_PROXY,
|
|
129
|
+
MIDSCENE_PLANNING_MODEL_HTTP_PROXY,
|
|
130
|
+
MIDSCENE_PLANNING_MODEL_BASE_URL,
|
|
131
|
+
MIDSCENE_PLANNING_MODEL_API_KEY,
|
|
132
|
+
MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON,
|
|
133
|
+
MIDSCENE_PLANNING_MODEL_TIMEOUT,
|
|
134
|
+
MIDSCENE_MODEL_FAMILY
|
|
230
135
|
];
|
|
231
136
|
const ALL_ENV_KEYS = [
|
|
232
137
|
...UNUSED_ENV_KEYS,
|
|
@@ -234,20 +139,23 @@ const ALL_ENV_KEYS = [
|
|
|
234
139
|
...GLOBAL_ENV_KEYS,
|
|
235
140
|
...MODEL_ENV_KEYS
|
|
236
141
|
];
|
|
237
|
-
var types_UITarsModelVersion = /*#__PURE__*/ function(UITarsModelVersion) {
|
|
238
|
-
UITarsModelVersion["V1_0"] = "1.0";
|
|
239
|
-
UITarsModelVersion["V1_5"] = "1.5";
|
|
240
|
-
UITarsModelVersion["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
|
|
241
|
-
UITarsModelVersion["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
|
|
242
|
-
return UITarsModelVersion;
|
|
243
|
-
}({});
|
|
244
142
|
const VL_MODE_RAW_VALID_VALUES = [
|
|
245
143
|
'doubao-vision',
|
|
246
144
|
'gemini',
|
|
247
|
-
'
|
|
145
|
+
'qwen2.5-vl',
|
|
248
146
|
'qwen3-vl',
|
|
249
147
|
'vlm-ui-tars',
|
|
250
148
|
'vlm-ui-tars-doubao',
|
|
251
149
|
'vlm-ui-tars-doubao-1.5'
|
|
252
150
|
];
|
|
253
|
-
|
|
151
|
+
const MODEL_FAMILY_VALUES = [
|
|
152
|
+
...VL_MODE_RAW_VALID_VALUES
|
|
153
|
+
];
|
|
154
|
+
var types_UITarsModelVersion = /*#__PURE__*/ function(UITarsModelVersion) {
|
|
155
|
+
UITarsModelVersion["V1_0"] = "1.0";
|
|
156
|
+
UITarsModelVersion["V1_5"] = "1.5";
|
|
157
|
+
UITarsModelVersion["DOUBAO_1_5_15B"] = "doubao-1.5-15B";
|
|
158
|
+
UITarsModelVersion["DOUBAO_1_5_20B"] = "doubao-1.5-20B";
|
|
159
|
+
return UITarsModelVersion;
|
|
160
|
+
}({});
|
|
161
|
+
export { ALL_ENV_KEYS, BASIC_ENV_KEYS, BOOLEAN_ENV_KEYS, DOCKER_CONTAINER, GLOBAL_ENV_KEYS, MATCH_BY_POSITION, MIDSCENE_ADB_PATH, MIDSCENE_ADB_REMOTE_HOST, MIDSCENE_ADB_REMOTE_PORT, MIDSCENE_ANDROID_IME_STRATEGY, MIDSCENE_CACHE, MIDSCENE_CACHE_MAX_FILENAME_LENGTH, MIDSCENE_DANGEROUSLY_PRINT_ALL_CONFIG, MIDSCENE_DEBUG_MODE, MIDSCENE_DEBUG_MODEL_PROFILE, MIDSCENE_DEBUG_MODEL_RESPONSE, MIDSCENE_FORCE_DEEP_THINK, MIDSCENE_INSIGHT_MODEL_API_KEY, MIDSCENE_INSIGHT_MODEL_BASE_URL, MIDSCENE_INSIGHT_MODEL_HTTP_PROXY, MIDSCENE_INSIGHT_MODEL_INIT_CONFIG_JSON, MIDSCENE_INSIGHT_MODEL_NAME, MIDSCENE_INSIGHT_MODEL_SOCKS_PROXY, MIDSCENE_INSIGHT_MODEL_TIMEOUT, MIDSCENE_IOS_DEVICE_UDID, MIDSCENE_IOS_SIMULATOR_UDID, MIDSCENE_LANGFUSE_DEBUG, MIDSCENE_LANGSMITH_DEBUG, MIDSCENE_MCP_ANDROID_MODE, MIDSCENE_MCP_CHROME_PATH, MIDSCENE_MCP_USE_PUPPETEER_MODE, MIDSCENE_MODEL_API_KEY, MIDSCENE_MODEL_BASE_URL, MIDSCENE_MODEL_FAMILY, MIDSCENE_MODEL_HTTP_PROXY, MIDSCENE_MODEL_INIT_CONFIG_JSON, MIDSCENE_MODEL_MAX_TOKENS, MIDSCENE_MODEL_NAME, MIDSCENE_MODEL_SOCKS_PROXY, MIDSCENE_MODEL_TIMEOUT, MIDSCENE_OPENAI_HTTP_PROXY, MIDSCENE_OPENAI_INIT_CONFIG_JSON, MIDSCENE_OPENAI_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_API_KEY, MIDSCENE_PLANNING_MODEL_BASE_URL, MIDSCENE_PLANNING_MODEL_HTTP_PROXY, MIDSCENE_PLANNING_MODEL_INIT_CONFIG_JSON, MIDSCENE_PLANNING_MODEL_NAME, MIDSCENE_PLANNING_MODEL_SOCKS_PROXY, MIDSCENE_PLANNING_MODEL_TIMEOUT, MIDSCENE_PREFERRED_LANGUAGE, MIDSCENE_REPLANNING_CYCLE_LIMIT, MIDSCENE_REPORT_TAG_NAME, MIDSCENE_RUN_DIR, MIDSCENE_USE_DOUBAO_VISION, MIDSCENE_USE_GEMINI, MIDSCENE_USE_QWEN3_VL, MIDSCENE_USE_QWEN_VL, MIDSCENE_USE_VLM_UI_TARS, MIDSCENE_USE_VL_MODEL, MODEL_ENV_KEYS, MODEL_FAMILY_VALUES, NUMBER_ENV_KEYS, OPENAI_API_KEY, OPENAI_BASE_URL, OPENAI_MAX_TOKENS, STRING_ENV_KEYS, types_UITarsModelVersion as UITarsModelVersion, UNUSED_ENV_KEYS, VL_MODE_RAW_VALID_VALUES };
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { NodeType } from "../constants/index.mjs";
|
|
2
|
-
import { generateHashId } from "../utils.mjs";
|
|
3
1
|
function isFormElement(node) {
|
|
4
2
|
return node instanceof HTMLElement && ('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase() || 'select' === node.tagName.toLowerCase() || 'option' === node.tagName.toLowerCase());
|
|
5
3
|
}
|
|
@@ -33,12 +31,10 @@ function isNotContainerElement(node) {
|
|
|
33
31
|
return isTextElement(node) || isIconfont(node) || isImgElement(node) || isButtonElement(node) || isAElement(node) || isFormElement(node);
|
|
34
32
|
}
|
|
35
33
|
function isTextElement(node) {
|
|
36
|
-
var _node_nodeName_toLowerCase, _node_nodeName;
|
|
37
34
|
if (node instanceof Element) {
|
|
38
|
-
|
|
39
|
-
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;
|
|
35
|
+
if (node?.childNodes?.length === 1 && node?.childNodes[0] instanceof Text) return true;
|
|
40
36
|
}
|
|
41
|
-
return
|
|
37
|
+
return node.nodeName?.toLowerCase?.() === '#text' && !isIconfont(node);
|
|
42
38
|
}
|
|
43
39
|
function isContainerElement(node) {
|
|
44
40
|
if (!(node instanceof HTMLElement)) return false;
|
|
@@ -67,25 +63,21 @@ function includeBaseElement(node) {
|
|
|
67
63
|
}
|
|
68
64
|
return false;
|
|
69
65
|
}
|
|
70
|
-
function generateElementByPosition(position) {
|
|
66
|
+
function generateElementByPosition(position, description) {
|
|
67
|
+
const edgeSize = 8;
|
|
71
68
|
const rect = {
|
|
72
|
-
left: Math.max(position.x -
|
|
73
|
-
top: Math.max(position.y -
|
|
74
|
-
width:
|
|
75
|
-
height:
|
|
69
|
+
left: Math.round(Math.max(position.x - edgeSize / 2, 0)),
|
|
70
|
+
top: Math.round(Math.max(position.y - edgeSize / 2, 0)),
|
|
71
|
+
width: edgeSize,
|
|
72
|
+
height: edgeSize
|
|
76
73
|
};
|
|
77
|
-
const id = generateHashId(rect);
|
|
78
74
|
const element = {
|
|
79
|
-
id,
|
|
80
|
-
attributes: {
|
|
81
|
-
nodeType: NodeType.POSITION
|
|
82
|
-
},
|
|
83
75
|
rect,
|
|
84
|
-
content: '',
|
|
85
76
|
center: [
|
|
86
77
|
position.x,
|
|
87
78
|
position.y
|
|
88
|
-
]
|
|
79
|
+
],
|
|
80
|
+
description: description || ''
|
|
89
81
|
};
|
|
90
82
|
return element;
|
|
91
83
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { descriptionOfTree, traverseTree, treeToList, trimAttributes, truncateText } from "./tree.mjs";
|
|
2
2
|
import { extractTextWithPosition, extractTreeNode, extractTreeNodeAsString } from "./web-extractor.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsById, getXpathsByPoint } from "./locator.mjs";
|
|
3
|
+
import { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint } from "./locator.mjs";
|
|
5
4
|
import { generateElementByPosition, isNotContainerElement } from "./dom-util.mjs";
|
|
6
|
-
export { descriptionOfTree, generateElementByPosition, getElementInfoByXpath, getElementXpath,
|
|
5
|
+
export { descriptionOfTree, generateElementByPosition, getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint, isNotContainerElement, traverseTree, treeToList, trimAttributes, truncateText, extractTreeNode as webExtractNodeTree, extractTreeNodeAsString as webExtractNodeTreeAsString, extractTextWithPosition as webExtractTextWithPosition };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isSvgElement } from "./dom-util.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { getRect, isElementPartiallyInViewport } from "./util.mjs";
|
|
3
3
|
import { collectElementInfo } from "./web-extractor.mjs";
|
|
4
4
|
const getElementXpathIndex = (element)=>{
|
|
5
5
|
let index = 1;
|
|
@@ -15,11 +15,10 @@ const normalizeXpathText = (text)=>{
|
|
|
15
15
|
return text.replace(/\s+/g, ' ').trim();
|
|
16
16
|
};
|
|
17
17
|
const buildCurrentElementXpath = (element, isOrderSensitive, isLeafElement)=>{
|
|
18
|
-
var _element_textContent;
|
|
19
18
|
const parentPath = element.parentNode ? getElementXpath(element.parentNode, isOrderSensitive) : '';
|
|
20
19
|
const prefix = parentPath ? `${parentPath}/` : '/';
|
|
21
20
|
const tagName = element.nodeName.toLowerCase();
|
|
22
|
-
const textContent =
|
|
21
|
+
const textContent = element.textContent?.trim();
|
|
23
22
|
if (isOrderSensitive) {
|
|
24
23
|
const index = getElementXpathIndex(element);
|
|
25
24
|
return `${prefix}${tagName}[${index}]`;
|
|
@@ -32,9 +31,8 @@ const getElementXpath = (element, isOrderSensitive = false, isLeafElement = fals
|
|
|
32
31
|
if (element.nodeType === Node.TEXT_NODE) {
|
|
33
32
|
const parentNode = element.parentNode;
|
|
34
33
|
if (parentNode && parentNode.nodeType === Node.ELEMENT_NODE) {
|
|
35
|
-
var _element_textContent;
|
|
36
34
|
const parentXPath = getElementXpath(parentNode, isOrderSensitive, true);
|
|
37
|
-
const textContent =
|
|
35
|
+
const textContent = element.textContent?.trim();
|
|
38
36
|
if (textContent) return `${parentXPath}/text()[normalize-space()="${normalizeXpathText(textContent)}"]`;
|
|
39
37
|
return `${parentXPath}/text()`;
|
|
40
38
|
}
|
|
@@ -54,14 +52,6 @@ const getElementXpath = (element, isOrderSensitive = false, isLeafElement = fals
|
|
|
54
52
|
}
|
|
55
53
|
return buildCurrentElementXpath(el, isOrderSensitive, isLeafElement);
|
|
56
54
|
};
|
|
57
|
-
function getXpathsById(id) {
|
|
58
|
-
const node = getNodeFromCacheList(id);
|
|
59
|
-
if (!node) return null;
|
|
60
|
-
const fullXPath = getElementXpath(node, false, true);
|
|
61
|
-
return [
|
|
62
|
-
fullXPath
|
|
63
|
-
];
|
|
64
|
-
}
|
|
65
55
|
function getXpathsByPoint(point, isOrderSensitive) {
|
|
66
56
|
const element = document.elementFromPoint(point.left, point.top);
|
|
67
57
|
if (!element) return null;
|
|
@@ -72,7 +62,10 @@ function getXpathsByPoint(point, isOrderSensitive) {
|
|
|
72
62
|
}
|
|
73
63
|
function getNodeInfoByXpath(xpath) {
|
|
74
64
|
const xpathResult = document.evaluate(xpath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
|
|
75
|
-
if (1 !== xpathResult.snapshotLength)
|
|
65
|
+
if (1 !== xpathResult.snapshotLength) {
|
|
66
|
+
console.warn(`[midscene:warning] Received XPath "${xpath}" but it matched ${xpathResult.snapshotLength} elements. Discarding this result.`);
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
76
69
|
const node = xpathResult.snapshotItem(0);
|
|
77
70
|
return node;
|
|
78
71
|
}
|
|
@@ -92,4 +85,4 @@ function getElementInfoByXpath(xpath) {
|
|
|
92
85
|
top: 0
|
|
93
86
|
}, true);
|
|
94
87
|
}
|
|
95
|
-
export { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath,
|
|
88
|
+
export { getElementInfoByXpath, getElementXpath, getNodeInfoByXpath, getXpathsByPoint };
|
|
@@ -30,19 +30,16 @@ function descriptionOfTree(tree, truncateTextLength, filterNonTextContent = fals
|
|
|
30
30
|
if (childContent) children += `\n${childContent}`;
|
|
31
31
|
}
|
|
32
32
|
if (node.node && node.node.rect.width > nodeSizeThreshold && node.node.rect.height > nodeSizeThreshold && (!filterNonTextContent || filterNonTextContent && node.node.content) && (!visibleOnly || visibleOnly && node.node.isVisible)) {
|
|
33
|
-
var _node_node_attributes;
|
|
34
33
|
emptyNode = false;
|
|
35
34
|
let nodeTypeString;
|
|
36
|
-
nodeTypeString =
|
|
37
|
-
const markerId = node.node.indexId;
|
|
38
|
-
const markerIdString = markerId ? `markerId="${markerId}"` : '';
|
|
35
|
+
nodeTypeString = node.node.attributes?.htmlTagName ? node.node.attributes.htmlTagName.replace(/[<>]/g, '') : node.node.attributes.nodeType.replace(/\sNode$/, '').toLowerCase();
|
|
39
36
|
const rectAttribute = node.node.rect ? {
|
|
40
37
|
left: node.node.rect.left,
|
|
41
38
|
top: node.node.rect.top,
|
|
42
39
|
width: node.node.rect.width,
|
|
43
40
|
height: node.node.rect.height
|
|
44
41
|
} : {};
|
|
45
|
-
before = `<${nodeTypeString} id="${node.node.id}" ${
|
|
42
|
+
before = `<${nodeTypeString} id="${node.node.id}" ${attributesString(trimAttributes(node.node.attributes || {}, truncateTextLength))} ${attributesString(rectAttribute)}>`;
|
|
46
43
|
const content = truncateText(node.node.content, truncateTextLength);
|
|
47
44
|
contentWithIndent = content ? `\n${indentStr} ${content}` : '';
|
|
48
45
|
after = `</${nodeTypeString}>`;
|
|
@@ -96,8 +96,8 @@ const isElementCovered = (el, rect, currentWindow)=>{
|
|
|
96
96
|
const topElement = currentWindow.document.elementFromPoint(x, y);
|
|
97
97
|
if (!topElement) return false;
|
|
98
98
|
if (topElement === el) return false;
|
|
99
|
-
if (
|
|
100
|
-
if (
|
|
99
|
+
if (el?.contains(topElement)) return false;
|
|
100
|
+
if (topElement?.contains(el)) return false;
|
|
101
101
|
const rectOfTopElement = getRect(topElement, 1, currentWindow);
|
|
102
102
|
const overlapRect = overlappedRect(rect, rectOfTopElement);
|
|
103
103
|
if (!overlapRect) return false;
|
|
@@ -135,7 +135,7 @@ function elementRect(el, currentWindow, currentDocument, baseZoom = 1) {
|
|
|
135
135
|
const isVisible = isElementPartiallyInViewport(rect, currentWindow, currentDocument);
|
|
136
136
|
let parent = el;
|
|
137
137
|
const parentUntilNonStatic = (currentNode)=>{
|
|
138
|
-
let parent =
|
|
138
|
+
let parent = currentNode?.parentElement;
|
|
139
139
|
while(parent){
|
|
140
140
|
const style = currentWindow.getComputedStyle(parent);
|
|
141
141
|
if ('static' !== style.position) return parent;
|
|
@@ -199,32 +199,8 @@ function getNodeAttributes(node, currentWindow) {
|
|
|
199
199
|
}
|
|
200
200
|
function midsceneGenerateHash(node, content, rect) {
|
|
201
201
|
const slicedHash = generateHashId(rect, content);
|
|
202
|
-
if (node) {
|
|
203
|
-
if (!window.midsceneNodeHashCacheList) setNodeHashCacheListOnWindow();
|
|
204
|
-
setNodeToCacheList(node, slicedHash);
|
|
205
|
-
}
|
|
206
202
|
return slicedHash;
|
|
207
203
|
}
|
|
208
|
-
function setNodeHashCacheListOnWindow() {
|
|
209
|
-
if ('undefined' != typeof window) window.midsceneNodeHashCacheList = [];
|
|
210
|
-
}
|
|
211
|
-
function setNodeToCacheList(node, id) {
|
|
212
|
-
if ('undefined' != typeof window) {
|
|
213
|
-
var _window_midsceneNodeHashCacheList;
|
|
214
|
-
if (getNodeFromCacheList(id)) return;
|
|
215
|
-
null == (_window_midsceneNodeHashCacheList = window.midsceneNodeHashCacheList) || _window_midsceneNodeHashCacheList.push({
|
|
216
|
-
node,
|
|
217
|
-
id
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
function getNodeFromCacheList(id) {
|
|
222
|
-
if ('undefined' != typeof window) {
|
|
223
|
-
var _window_midsceneNodeHashCacheList_find, _window_midsceneNodeHashCacheList;
|
|
224
|
-
return null == (_window_midsceneNodeHashCacheList = window.midsceneNodeHashCacheList) ? void 0 : null == (_window_midsceneNodeHashCacheList_find = _window_midsceneNodeHashCacheList.find((item)=>item.id === id)) ? void 0 : _window_midsceneNodeHashCacheList_find.node;
|
|
225
|
-
}
|
|
226
|
-
return null;
|
|
227
|
-
}
|
|
228
204
|
function generateId(numberId) {
|
|
229
205
|
return `${numberId}`;
|
|
230
206
|
}
|
|
@@ -241,4 +217,4 @@ function getTopDocument() {
|
|
|
241
217
|
const container = document.body || document;
|
|
242
218
|
return container;
|
|
243
219
|
}
|
|
244
|
-
export { elementRect, generateId, getDebugMode, getNodeAttributes,
|
|
220
|
+
export { elementRect, generateId, getDebugMode, getNodeAttributes, getPseudoElementContent, getRect, getTopDocument, hasOverflowY, isElementPartiallyInViewport, logger, midsceneGenerateHash, overlappedRect, setDebugMode, setExtractTextWithPositionOnWindow, setGenerateHashOnWindow, setMidsceneVisibleRectOnWindow, validTextNodeContent };
|
|
@@ -5,15 +5,10 @@ import { elementRect, getNodeAttributes, getPseudoElementContent, getRect, getTo
|
|
|
5
5
|
let indexId = 0;
|
|
6
6
|
function tagNameOfNode(node) {
|
|
7
7
|
let tagName = '';
|
|
8
|
-
if (node instanceof HTMLElement)
|
|
9
|
-
|
|
10
|
-
tagName = null == (_node_tagName = node.tagName) ? void 0 : _node_tagName.toLowerCase();
|
|
11
|
-
} else {
|
|
8
|
+
if (node instanceof HTMLElement) tagName = node.tagName?.toLowerCase();
|
|
9
|
+
else {
|
|
12
10
|
const parentElement = node.parentElement;
|
|
13
|
-
if (parentElement && parentElement instanceof HTMLElement)
|
|
14
|
-
var _parentElement_tagName;
|
|
15
|
-
tagName = null == (_parentElement_tagName = parentElement.tagName) ? void 0 : _parentElement_tagName.toLowerCase();
|
|
16
|
-
}
|
|
11
|
+
if (parentElement && parentElement instanceof HTMLElement) tagName = parentElement.tagName?.toLowerCase();
|
|
17
12
|
}
|
|
18
13
|
return tagName ? `<${tagName}>` : '';
|
|
19
14
|
}
|
|
@@ -36,7 +31,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
|
|
|
36
31
|
const tagName = node.tagName.toLowerCase();
|
|
37
32
|
if ('select' === node.tagName.toLowerCase()) {
|
|
38
33
|
const selectedOption = node.options[node.selectedIndex];
|
|
39
|
-
valueContent =
|
|
34
|
+
valueContent = selectedOption?.textContent || '';
|
|
40
35
|
}
|
|
41
36
|
if (('input' === node.tagName.toLowerCase() || 'textarea' === node.tagName.toLowerCase()) && node.value) valueContent = node.value;
|
|
42
37
|
const elementInfo = {
|
|
@@ -89,7 +84,6 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
|
|
|
89
84
|
return elementInfo;
|
|
90
85
|
}
|
|
91
86
|
if (isImgElement(node)) {
|
|
92
|
-
var _node_nodeName;
|
|
93
87
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
94
88
|
const nodeHashId = midsceneGenerateHash(node, '', rect);
|
|
95
89
|
const elementInfo = {
|
|
@@ -98,7 +92,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
|
|
|
98
92
|
nodeHashId,
|
|
99
93
|
attributes: {
|
|
100
94
|
...attributes,
|
|
101
|
-
...
|
|
95
|
+
...node.nodeName?.toLowerCase() === 'svg' ? {
|
|
102
96
|
svgContent: 'true'
|
|
103
97
|
} : {},
|
|
104
98
|
nodeType: NodeType.IMG,
|
|
@@ -117,8 +111,7 @@ function collectElementInfo(node, currentWindow, currentDocument, baseZoom = 1,
|
|
|
117
111
|
return elementInfo;
|
|
118
112
|
}
|
|
119
113
|
if (isTextElement(node)) {
|
|
120
|
-
|
|
121
|
-
const text = null == (_node_textContent = node.textContent) ? void 0 : _node_textContent.trim().replace(/\n+/g, ' ');
|
|
114
|
+
const text = node.textContent?.trim().replace(/\n+/g, ' ');
|
|
122
115
|
if (!text) return null;
|
|
123
116
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
124
117
|
const attributeKeys = Object.keys(attributes);
|
|
@@ -234,7 +227,7 @@ function extractTreeNode(initNode, debugMode = false) {
|
|
|
234
227
|
node: elementInfo,
|
|
235
228
|
children: []
|
|
236
229
|
};
|
|
237
|
-
if (
|
|
230
|
+
if (elementInfo?.nodeType === NodeType.BUTTON || elementInfo?.nodeType === NodeType.IMG || elementInfo?.nodeType === NodeType.TEXT || elementInfo?.nodeType === NodeType.FORM_ITEM || elementInfo?.nodeType === NodeType.CONTAINER) return nodeInfo;
|
|
238
231
|
const rect = getRect(node, baseZoom, currentWindow);
|
|
239
232
|
for(let i = 0; i < node.childNodes.length; i++){
|
|
240
233
|
logger('will dfs', node.childNodes[i]);
|
package/dist/es/index.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { createCopyStaticPlugin, createPlaygroundCopyPlugin } from "./build/copy-static.mjs";
|
|
2
|
+
import { commonIgnoreWarnings } from "./build/rspack-config.mjs";
|
|
2
3
|
const src = {};
|
|
3
|
-
export { createCopyStaticPlugin, createPlaygroundCopyPlugin, src as default };
|
|
4
|
+
export { commonIgnoreWarnings, createCopyStaticPlugin, createPlaygroundCopyPlugin, src as default };
|