@rpascene/shared 0.30.8 → 0.30.9
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/README.md +2 -2
- package/dist/es/common.mjs +9 -9
- package/dist/es/constants/example-code.mjs +10 -10
- package/dist/es/constants/index.mjs +1 -1
- package/dist/es/env/constants.mjs +77 -77
- package/dist/es/env/global-config-manager.mjs +1 -1
- package/dist/es/env/init-debug.mjs +5 -5
- package/dist/es/env/model-config-manager.mjs +1 -1
- package/dist/es/env/parse.mjs +11 -11
- package/dist/es/env/types.mjs +191 -191
- package/dist/es/env/utils.mjs +2 -2
- package/dist/es/extractor/debug.mjs +2 -2
- package/dist/es/extractor/util.mjs +11 -11
- package/dist/es/extractor/web-extractor.mjs +7 -7
- package/dist/es/logger.mjs +3 -3
- package/dist/es/node/fs.mjs +6 -6
- package/dist/es/utils.mjs +2 -2
- package/dist/lib/common.js +16 -16
- package/dist/lib/constants/example-code.js +10 -10
- package/dist/lib/constants/index.js +1 -1
- package/dist/lib/env/constants.js +76 -76
- package/dist/lib/env/global-config-manager.js +1 -1
- package/dist/lib/env/init-debug.js +4 -4
- package/dist/lib/env/model-config-manager.js +1 -1
- package/dist/lib/env/parse.js +10 -10
- package/dist/lib/env/types.js +478 -478
- package/dist/lib/env/utils.js +1 -1
- package/dist/lib/extractor/debug.js +1 -1
- package/dist/lib/extractor/util.js +16 -16
- package/dist/lib/extractor/web-extractor.js +6 -6
- package/dist/lib/logger.js +2 -2
- package/dist/lib/node/fs.js +6 -6
- package/dist/lib/utils.js +2 -2
- package/dist/types/common.d.ts +5 -5
- package/dist/types/constants/example-code.d.ts +2 -2
- package/dist/types/env/types.d.ts +180 -180
- package/dist/types/extractor/util.d.ts +2 -2
- package/dist/types/node/fs.d.ts +1 -1
- package/package.json +8 -3
- package/src/common.ts +10 -10
- package/src/constants/example-code.ts +10 -10
- package/src/constants/index.ts +1 -1
- package/src/env/constants.ts +144 -144
- package/src/env/decide-model-config.ts +1 -1
- package/src/env/global-config-manager.ts +1 -1
- package/src/env/init-debug.ts +5 -5
- package/src/env/model-config-manager.ts +1 -1
- package/src/env/parse.ts +15 -15
- package/src/env/types.ts +315 -315
- package/src/env/utils.ts +2 -2
- package/src/extractor/debug.ts +2 -2
- package/src/extractor/util.ts +15 -15
- package/src/extractor/web-extractor.ts +7 -7
- package/src/logger.ts +3 -3
- package/src/node/fs.ts +5 -5
- package/src/utils.ts +2 -2
package/src/env/utils.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { GlobalConfigManager } from './global-config-manager';
|
|
|
2
2
|
import { ModelConfigManager } from './model-config-manager';
|
|
3
3
|
import {
|
|
4
4
|
type GLOBAL_ENV_KEYS,
|
|
5
|
-
|
|
5
|
+
MIDSCENE_PREFERRED_LANGUAGE,
|
|
6
6
|
type MODEL_ENV_KEYS,
|
|
7
7
|
} from './types';
|
|
8
8
|
|
|
@@ -15,7 +15,7 @@ globalModelConfigManager.registerGlobalConfigManager(globalConfigManager);
|
|
|
15
15
|
|
|
16
16
|
export const getPreferredLanguage = () => {
|
|
17
17
|
const prefer = globalConfigManager.getEnvConfigValue(
|
|
18
|
-
|
|
18
|
+
MIDSCENE_PREFERRED_LANGUAGE,
|
|
19
19
|
);
|
|
20
20
|
if (prefer) {
|
|
21
21
|
return prefer;
|
package/src/extractor/debug.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { webExtractTextWithPosition } from '.';
|
|
2
2
|
import {
|
|
3
3
|
setExtractTextWithPositionOnWindow,
|
|
4
|
-
|
|
4
|
+
setMidsceneVisibleRectOnWindow,
|
|
5
5
|
} from './util';
|
|
6
6
|
|
|
7
7
|
console.log(webExtractTextWithPosition(document.body, true));
|
|
8
8
|
console.log(JSON.stringify(webExtractTextWithPosition(document.body, true)));
|
|
9
9
|
setExtractTextWithPositionOnWindow();
|
|
10
|
-
|
|
10
|
+
setMidsceneVisibleRectOnWindow();
|
package/src/extractor/util.ts
CHANGED
|
@@ -225,13 +225,13 @@ export function elementRect(
|
|
|
225
225
|
baseZoom = 1,
|
|
226
226
|
):
|
|
227
227
|
| {
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
228
|
+
left: number;
|
|
229
|
+
top: number;
|
|
230
|
+
width: number;
|
|
231
|
+
height: number;
|
|
232
|
+
zoom: number;
|
|
233
|
+
isVisible: boolean;
|
|
234
|
+
}
|
|
235
235
|
| false {
|
|
236
236
|
if (!el) {
|
|
237
237
|
logger(el, 'Element is not in the DOM hierarchy');
|
|
@@ -392,7 +392,7 @@ export function getNodeAttributes(
|
|
|
392
392
|
return Object.fromEntries(attributesList);
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
-
export function
|
|
395
|
+
export function midsceneGenerateHash(
|
|
396
396
|
node: globalThis.Node | null,
|
|
397
397
|
content: string,
|
|
398
398
|
rect: Rect,
|
|
@@ -400,7 +400,7 @@ export function rpasceneGenerateHash(
|
|
|
400
400
|
const slicedHash = generateHashId(rect, content);
|
|
401
401
|
|
|
402
402
|
if (node) {
|
|
403
|
-
if (!(window as any).
|
|
403
|
+
if (!(window as any).midsceneNodeHashCacheList) {
|
|
404
404
|
setNodeHashCacheListOnWindow();
|
|
405
405
|
}
|
|
406
406
|
|
|
@@ -413,7 +413,7 @@ export function rpasceneGenerateHash(
|
|
|
413
413
|
|
|
414
414
|
export function setNodeHashCacheListOnWindow() {
|
|
415
415
|
if (typeof window !== 'undefined') {
|
|
416
|
-
(window as any).
|
|
416
|
+
(window as any).midsceneNodeHashCacheList = [];
|
|
417
417
|
}
|
|
418
418
|
}
|
|
419
419
|
|
|
@@ -422,13 +422,13 @@ export function setNodeToCacheList(node: globalThis.Node, id: string) {
|
|
|
422
422
|
if (getNodeFromCacheList(id)) {
|
|
423
423
|
return;
|
|
424
424
|
}
|
|
425
|
-
(window as any).
|
|
425
|
+
(window as any).midsceneNodeHashCacheList?.push({ node, id });
|
|
426
426
|
}
|
|
427
427
|
}
|
|
428
428
|
|
|
429
429
|
export function getNodeFromCacheList(id: string) {
|
|
430
430
|
if (typeof window !== 'undefined') {
|
|
431
|
-
return (window as any).
|
|
431
|
+
return (window as any).midsceneNodeHashCacheList?.find(
|
|
432
432
|
(item: { node: Node; id: string }) => item.id === id,
|
|
433
433
|
)?.node;
|
|
434
434
|
}
|
|
@@ -446,13 +446,13 @@ export function generateId(numberId: number) {
|
|
|
446
446
|
|
|
447
447
|
export function setGenerateHashOnWindow() {
|
|
448
448
|
if (typeof window !== 'undefined') {
|
|
449
|
-
(window as any).
|
|
449
|
+
(window as any).midsceneGenerateHash = midsceneGenerateHash;
|
|
450
450
|
}
|
|
451
451
|
}
|
|
452
452
|
|
|
453
|
-
export function
|
|
453
|
+
export function setMidsceneVisibleRectOnWindow() {
|
|
454
454
|
if (typeof window !== 'undefined') {
|
|
455
|
-
(window as any).
|
|
455
|
+
(window as any).midsceneVisibleRect = elementRect;
|
|
456
456
|
}
|
|
457
457
|
}
|
|
458
458
|
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
getRect,
|
|
22
22
|
getTopDocument,
|
|
23
23
|
logger,
|
|
24
|
-
|
|
24
|
+
midsceneGenerateHash,
|
|
25
25
|
setDebugMode,
|
|
26
26
|
} from './util';
|
|
27
27
|
import { postWindowMessage, onWindowMessage } from './cs_postmessage';
|
|
@@ -83,7 +83,7 @@ export function collectElementInfo(
|
|
|
83
83
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
84
84
|
let valueContent =
|
|
85
85
|
attributes.value || attributes.placeholder || node.textContent || '';
|
|
86
|
-
const nodeHashId =
|
|
86
|
+
const nodeHashId = midsceneGenerateHash(node, valueContent, rect);
|
|
87
87
|
const tagName = (node as HTMLElement).tagName.toLowerCase();
|
|
88
88
|
if ((node as HTMLElement).tagName.toLowerCase() === 'select') {
|
|
89
89
|
// Get the selected option using the selectedIndex property
|
|
@@ -138,7 +138,7 @@ export function collectElementInfo(
|
|
|
138
138
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
139
139
|
const pseudo = getPseudoElementContent(node, currentWindow);
|
|
140
140
|
const content = node.innerText || pseudo.before || pseudo.after || '';
|
|
141
|
-
const nodeHashId =
|
|
141
|
+
const nodeHashId = midsceneGenerateHash(node, content, rect);
|
|
142
142
|
const elementInfo: WebElementInfo = {
|
|
143
143
|
id: nodeHashId,
|
|
144
144
|
indexId: indexId++,
|
|
@@ -163,7 +163,7 @@ export function collectElementInfo(
|
|
|
163
163
|
|
|
164
164
|
if (isImgElement(node, currentWindow)) {
|
|
165
165
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
166
|
-
const nodeHashId =
|
|
166
|
+
const nodeHashId = midsceneGenerateHash(node, '', rect);
|
|
167
167
|
const elementInfo: WebElementInfo = {
|
|
168
168
|
id: nodeHashId,
|
|
169
169
|
indexId: indexId++,
|
|
@@ -201,7 +201,7 @@ export function collectElementInfo(
|
|
|
201
201
|
if (!text.trim() && attributeKeys.length === 0) {
|
|
202
202
|
return null;
|
|
203
203
|
}
|
|
204
|
-
const nodeHashId =
|
|
204
|
+
const nodeHashId = midsceneGenerateHash(node, text, rect);
|
|
205
205
|
const elementInfo: WebElementInfo = {
|
|
206
206
|
id: nodeHashId,
|
|
207
207
|
indexId: indexId++,
|
|
@@ -228,7 +228,7 @@ export function collectElementInfo(
|
|
|
228
228
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
229
229
|
const pseudo = getPseudoElementContent(node, currentWindow);
|
|
230
230
|
const content = node.innerText || pseudo.before || pseudo.after || '';
|
|
231
|
-
const nodeHashId =
|
|
231
|
+
const nodeHashId = midsceneGenerateHash(node, content, rect);
|
|
232
232
|
const elementInfo: WebElementInfo = {
|
|
233
233
|
id: nodeHashId,
|
|
234
234
|
indexId: indexId++,
|
|
@@ -255,7 +255,7 @@ export function collectElementInfo(
|
|
|
255
255
|
// 视为容器
|
|
256
256
|
if (isContainerElement(node, currentWindow) || isContainer) {
|
|
257
257
|
const attributes = getNodeAttributes(node, currentWindow);
|
|
258
|
-
const nodeHashId =
|
|
258
|
+
const nodeHashId = midsceneGenerateHash(node, '', rect);
|
|
259
259
|
const elementInfo: WebElementInfo = {
|
|
260
260
|
id: nodeHashId,
|
|
261
261
|
nodeHashId,
|
package/src/logger.ts
CHANGED
|
@@ -2,10 +2,10 @@ import fs from 'node:fs';
|
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import util from 'node:util';
|
|
4
4
|
import debug from 'debug';
|
|
5
|
-
import {
|
|
5
|
+
import { getMidsceneRunSubDir } from './common';
|
|
6
6
|
import { ifInNode } from './utils';
|
|
7
7
|
|
|
8
|
-
const topicPrefix = '
|
|
8
|
+
const topicPrefix = 'midscene';
|
|
9
9
|
// Map to store file streams
|
|
10
10
|
const logStreams = new Map<string, fs.WriteStream>();
|
|
11
11
|
// Map to store debug instances
|
|
@@ -16,7 +16,7 @@ function getLogStream(topic: string): fs.WriteStream {
|
|
|
16
16
|
const topicFileName = topic.replace(/:/g, '-');
|
|
17
17
|
if (!logStreams.has(topicFileName)) {
|
|
18
18
|
const logFile = path.join(
|
|
19
|
-
|
|
19
|
+
getMidsceneRunSubDir('log'),
|
|
20
20
|
`${topicFileName}.log`,
|
|
21
21
|
);
|
|
22
22
|
const stream = fs.createWriteStream(logFile, { flags: 'a' });
|
package/src/node/fs.ts
CHANGED
|
@@ -27,14 +27,14 @@ export function getRunningPkgInfo(dir?: string): PkgInfo | null {
|
|
|
27
27
|
if (pkgDir && pkgJsonFile) {
|
|
28
28
|
const { name, version } = JSON.parse(readFileSync(pkgJsonFile, 'utf-8'));
|
|
29
29
|
pkgCacheMap[dirToCheck] = {
|
|
30
|
-
name: name || '
|
|
30
|
+
name: name || 'midscene-unknown-package-name',
|
|
31
31
|
version: version || '0.0.0',
|
|
32
32
|
dir: pkgDir,
|
|
33
33
|
};
|
|
34
34
|
return pkgCacheMap[dirToCheck];
|
|
35
35
|
}
|
|
36
36
|
return {
|
|
37
|
-
name: '
|
|
37
|
+
name: 'midscene-unknown-package-name',
|
|
38
38
|
version: '0.0.0',
|
|
39
39
|
dir: dirToCheck,
|
|
40
40
|
};
|
|
@@ -75,10 +75,10 @@ export async function getExtraReturnLogic(tree = false) {
|
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
77
|
|
|
78
|
-
const elementInfosScriptContent = `;
|
|
78
|
+
const elementInfosScriptContent = `;midscene_element_inspector.setNodeHashCacheListOnWindow();`;
|
|
79
79
|
|
|
80
80
|
if (tree) {
|
|
81
|
-
return `${elementInfosScriptContent};
|
|
81
|
+
return `${elementInfosScriptContent};midscene_element_inspector.webExtractNodeTree()`;
|
|
82
82
|
}
|
|
83
|
-
return `${elementInfosScriptContent};
|
|
83
|
+
return `${elementInfosScriptContent};midscene_element_inspector.webExtractTextWithPosition()`;
|
|
84
84
|
}
|
package/src/utils.ts
CHANGED
|
@@ -105,8 +105,8 @@ export async function repeat(
|
|
|
105
105
|
|
|
106
106
|
const REGEXP_LT = /</g;
|
|
107
107
|
const REGEXP_GT = />/g;
|
|
108
|
-
const REGEXP_LT_ESCAPE = '
|
|
109
|
-
const REGEXP_GT_ESCAPE = '
|
|
108
|
+
const REGEXP_LT_ESCAPE = '__midscene_lt__';
|
|
109
|
+
const REGEXP_GT_ESCAPE = '__midscene_gt__';
|
|
110
110
|
|
|
111
111
|
export const escapeScriptTag = (html: string) => {
|
|
112
112
|
return html
|