scordi-extension 1.16.2 → 1.16.4
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 +61 -29
- package/dist/blocks/AiParseDataBlock.d.ts.map +1 -1
- package/dist/blocks/EventClickBlock.d.ts.map +1 -1
- package/dist/blocks/ExportDataBlock.d.ts.map +1 -1
- package/dist/blocks/KeypressBlock.d.ts.map +1 -1
- package/dist/blocks/NetworkCatchBlock.d.ts.map +1 -1
- package/dist/blocks/WaitForConditionBlock.d.ts.map +1 -1
- package/dist/blocks/index.d.ts +1 -1
- package/dist/blocks/index.d.ts.map +1 -1
- package/dist/sdk/EightGClient.d.ts +9 -6
- package/dist/sdk/EightGClient.d.ts.map +1 -1
- package/dist/sdk/index.cjs +4 -4
- package/dist/sdk/index.js +175 -160
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/types/internal-messages.d.ts.map +1 -1
- package/dist/workflow/context/execution-context/binding.d.ts.map +1 -1
- package/dist/workflow/context/execution-context/condition.d.ts.map +1 -1
- package/dist/workflow/context/execution-context/index.d.ts +3 -3
- package/dist/workflow/context/execution-context/index.d.ts.map +1 -1
- package/dist/workflow/context/execution-context/resolver.d.ts.map +1 -1
- package/dist/workflow/context/loop-context/index.d.ts +1 -1
- package/dist/workflow/context/loop-context/index.d.ts.map +1 -1
- package/dist/workflow/context/loop-context/loop-context.d.ts.map +1 -1
- package/dist/workflow/context/loop-context/resolver.d.ts.map +1 -1
- package/dist/workflow/context/step-context/index.d.ts +1 -1
- package/dist/workflow/context/step-context/index.d.ts.map +1 -1
- package/dist/workflow/context/step-context/resolver.d.ts.map +1 -1
- package/dist/workflow/context/step-context/step-context.d.ts.map +1 -1
- package/dist/workflow/context/var-context/index.d.ts +1 -1
- package/dist/workflow/context/var-context/index.d.ts.map +1 -1
- package/dist/workflow/context/var-context/resolver.d.ts.map +1 -1
- package/dist/workflow/context/var-context/var-context.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/.vite/manifest.json +0 -75
- package/dist/assets/index-B45Q7XiR.js +0 -49
- package/dist/assets/index-BqQ8JinV.js +0 -1
- package/dist/assets/index-CVzjlC_s.js +0 -1
- package/dist/assets/index-CYVwV_2L.js +0 -1
- package/dist/assets/index-DkFIvNAm.css +0 -1
- package/dist/assets/index-DxZcS402.js +0 -1
- package/dist/assets/index-tW55lo_h.js +0 -4
- package/dist/assets/index.html-DZ7AUTQZ.js +0 -1
- package/dist/assets/index.ts-2nFLTUkL.js +0 -238
- package/dist/assets/index.ts-BRPHoTRl.js +0 -256
- package/dist/assets/index.ts-C2f2hGoV.js +0 -158
- package/dist/assets/index.ts-CD2jVezi.js +0 -256
- package/dist/assets/index.ts-COMnxBfB.js +0 -238
- package/dist/assets/index.ts-mAOhzdZJ.js +0 -238
- package/dist/assets/internal-messages-BMRA0i8A.js +0 -1
- package/dist/assets/internal-messages-BS1uEgeS.js +0 -1
- package/dist/assets/internal-messages-CP1ANEcL.js +0 -1
- package/dist/assets/internal-messages-Drf0Gb9U.js +0 -1
- package/dist/assets/loading-page-1924caaa.js +0 -51
- package/dist/assets/main.tsx-CHn9k-P7.js +0 -38
- package/dist/assets/main.tsx-DnGNeWWr.js +0 -38
- package/dist/assets/main.tsx-DtStYr-r.js +0 -2
- package/dist/assets/main.tsx-UFslEqbd.js +0 -38
- package/dist/assets/main.tsx-loader-6Ftbg0YS.js +0 -13
- package/dist/assets/main.tsx-loader-ByFSLdJ4.js +0 -13
- package/dist/assets/main.tsx-loader-CuF0J02t.js +0 -13
- package/dist/assets/main.tsx-loader-sjxNXQPw.js +0 -13
- package/dist/assets/types-BId3CBm7.js +0 -1
- package/dist/assets/types-CeXfY5Yv.js +0 -4
- package/dist/assets/types-Dzn4eD9c.js +0 -22
- package/dist/assets/types-q2_wITfk.js +0 -4
- package/dist/blocks/CaptureNetworkBlock.d.ts +0 -75
- package/dist/blocks/CaptureNetworkBlock.d.ts.map +0 -1
- package/dist/blocks/DataExtractBlock.d.ts +0 -23
- package/dist/blocks/DataExtractBlock.d.ts.map +0 -1
- package/dist/blocks/index.cjs +0 -4
- package/dist/blocks/index.js +0 -7839
- package/dist/blocks/logo.png +0 -0
- package/dist/logo.png +0 -0
- package/dist/manifest.json +0 -55
- package/dist/public/logo.png +0 -0
- package/dist/service-worker-loader.js +0 -3
- package/dist/src/blocks/AiParseDataBlock.ts.js +0 -111
- package/dist/src/blocks/CaptureNetworkBlock.ts.js +0 -55
- package/dist/src/blocks/ClearValueFormBlock.ts.js +0 -55
- package/dist/src/blocks/DataExtractBlock.ts.js +0 -28
- package/dist/src/blocks/ElementExistsBlock.ts.js +0 -26
- package/dist/src/blocks/EventClickBlock.ts.js +0 -143
- package/dist/src/blocks/ExportDataBlock.ts.js +0 -47
- package/dist/src/blocks/FetchApiBlock.ts.js +0 -50
- package/dist/src/blocks/GetAttributeValueBlock.ts.js +0 -33
- package/dist/src/blocks/GetElementDataBlock.ts.js +0 -114
- package/dist/src/blocks/GetTextBlock.ts.js +0 -152
- package/dist/src/blocks/GetValueFormBlock.ts.js +0 -52
- package/dist/src/blocks/KeypressBlock.ts.js +0 -89
- package/dist/src/blocks/NavigateBlock.ts.js +0 -48
- package/dist/src/blocks/NetworkCatchBlock.ts.js +0 -61
- package/dist/src/blocks/SaveAssetsBlock.ts.js +0 -35
- package/dist/src/blocks/ScrollBlock.ts.js +0 -111
- package/dist/src/blocks/SetValueFormBlock.ts.js +0 -56
- package/dist/src/blocks/TransformDataBlock.ts.js +0 -42
- package/dist/src/blocks/WaitBlock.ts.js +0 -24
- package/dist/src/blocks/WaitForConditionBlock.ts.js +0 -187
- package/dist/src/blocks/index.ts.js +0 -198
- package/dist/src/blocks/types.ts.js +0 -11
- package/dist/src/content/components/ConfirmationUI.tsx.js +0 -244
- package/dist/src/content/components/ExecutionStatusUI.tsx.js +0 -223
- package/dist/src/content/elements/finders/CssSelector.ts.js +0 -51
- package/dist/src/content/elements/finders/ElementSelector.ts.js +0 -20
- package/dist/src/content/elements/finders/IframeSelector.ts.js +0 -32
- package/dist/src/content/elements/finders/ShadowDOMSelector.ts.js +0 -38
- package/dist/src/content/elements/finders/XPathFinder.ts.js +0 -32
- package/dist/src/content/elements/index.ts.js +0 -26
- package/dist/src/content/elements/utils/CSSSelectorGenerator.ts.js +0 -72
- package/dist/src/content/elements/utils/XPathGenerator.ts.js +0 -62
- package/dist/src/content/handler/ExternalMessageHandler.ts.js +0 -78
- package/dist/src/content/handler/InternalMessageHandler.ts.js +0 -40
- package/dist/src/content/kernel/MessageKernel.ts.js +0 -83
- package/dist/src/content/main.tsx-loader.js +0 -22
- package/dist/src/content/main.tsx.js +0 -50
- package/dist/src/content/utils/index.ts.js +0 -1
- package/dist/src/content/utils/synchronizedLock.ts.js +0 -35
- package/dist/src/popup/index.html +0 -12
- package/dist/src/sdk/types.ts.js +0 -150
- package/dist/src/types/internal-messages.ts.js +0 -27
- package/dist/src/workflow/context/execution-context/types.ts.js +0 -0
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--29d58732.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--34285d49.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--36a0c079.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--7cce5f32.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--8598b0e0.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--9054997c.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--a79cb78d.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--af906259.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--e041f26d.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--e1405dc4.js +0 -45
- package/dist/vendor/.vite-deps-chunk-2TUXWMP5.js__v--e2a1f584.js +0 -45
- package/dist/vendor/.vite-deps-chunk-DC5AMYBS.js__v--87b685c1.js +0 -38
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--29d58732.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--34285d49.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--36a0c079.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--7cce5f32.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--8598b0e0.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--a79cb78d.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--af906259.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--e041f26d.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--e1405dc4.js +0 -975
- package/dist/vendor/.vite-deps-chunk-EL3BNLGW.js__v--e2a1f584.js +0 -975
- package/dist/vendor/.vite-deps-chunk-KDMJ4XM7.js__v--87b685c1.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-MANNBT4V.js__v--87b685c1.js +0 -280
- package/dist/vendor/.vite-deps-chunk-NZP3G7XT.js__v--87b685c1.js +0 -975
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--36a0c079.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--8598b0e0.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--9054997c.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--a79cb78d.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--e041f26d.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-QIBDMRD4.js__v--e2a1f584.js +0 -4158
- package/dist/vendor/.vite-deps-chunk-UW5CEYRC.js__v--29d58732.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-UW5CEYRC.js__v--34285d49.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-UW5CEYRC.js__v--7cce5f32.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-UW5CEYRC.js__v--af906259.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-UW5CEYRC.js__v--e1405dc4.js +0 -4154
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--29d58732.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--34285d49.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--36a0c079.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--7cce5f32.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--8598b0e0.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--a79cb78d.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--af906259.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--e041f26d.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--e1405dc4.js +0 -280
- package/dist/vendor/.vite-deps-chunk-XHY3JSIG.js__v--e2a1f584.js +0 -280
- package/dist/vendor/.vite-deps-jsonata.js__v--1f855851.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--34285d49.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--370b8ffe.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--7496ecd5.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--7cce5f32.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--8598b0e0.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--989ee283.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--aa4cf553.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--af906259.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--d602c657.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--e041f26d.js +0 -5761
- package/dist/vendor/.vite-deps-jsonata.js__v--e2a1f584.js +0 -5761
- package/dist/vendor/.vite-deps-react-dom.js__v--1217aa43.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--34285d49.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--36c31e85.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--7cce5f32.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--8313ef2c.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--8598b0e0.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--87af57af.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--9967e564.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--af906259.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--e041f26d.js +0 -6
- package/dist/vendor/.vite-deps-react-dom.js__v--e2a1f584.js +0 -6
- package/dist/vendor/.vite-deps-react-dom_client.js__v--05e7db8c.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--34285d49.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--7cce5f32.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--8598b0e0.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--8ec6d0f4.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--a69c8f91.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--aaaed31d.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--af906259.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--e041f26d.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--e2a1f584.js +0 -18108
- package/dist/vendor/.vite-deps-react-dom_client.js__v--f80719e9.js +0 -18108
- package/dist/vendor/.vite-deps-react.js__v--1217aa43.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--34285d49.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--36c31e85.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--7cce5f32.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--8313ef2c.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--8598b0e0.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--87af57af.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--9967e564.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--af906259.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--e041f26d.js +0 -5
- package/dist/vendor/.vite-deps-react.js__v--e2a1f584.js +0 -5
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--1217aa43.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--34285d49.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--36c31e85.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--7cce5f32.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--8313ef2c.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--8598b0e0.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--87af57af.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--9967e564.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--af906259.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--e041f26d.js +0 -281
- package/dist/vendor/.vite-deps-react_jsx-dev-runtime.js__v--e2a1f584.js +0 -281
- package/dist/vendor/.vite-deps-zod.js__v--34285d49.js +0 -222
- package/dist/vendor/.vite-deps-zod.js__v--6548a37a.js +0 -222
- package/dist/vendor/.vite-deps-zod.js__v--706a718e.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--7cce5f32.js +0 -222
- package/dist/vendor/.vite-deps-zod.js__v--8598b0e0.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--9e0f4cc1.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--af906259.js +0 -222
- package/dist/vendor/.vite-deps-zod.js__v--b73c580c.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--dc9842e6.js +0 -222
- package/dist/vendor/.vite-deps-zod.js__v--e041f26d.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--e2a1f584.js +0 -219
- package/dist/vendor/.vite-deps-zod.js__v--e4714212.js +0 -222
- package/dist/vendor/crx-client-port.js +0 -66
- package/dist/vendor/crx-client-preamble.js +0 -4
- package/dist/vendor/react-refresh.js +0 -670
- package/dist/vendor/vite-client.js +0 -1134
- package/dist/vendor/vite-dist-client-env.mjs.js +0 -24
- package/dist/vendor/webcomponents-custom-elements.js +0 -47
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
export class CSSSelectorGenerator {
|
|
2
|
-
/**
|
|
3
|
-
* 요소의 안정적인 CSS 셀렉터 생성
|
|
4
|
-
* @param element 대상 요소
|
|
5
|
-
* @returns 생성된 CSS 셀렉터
|
|
6
|
-
*/
|
|
7
|
-
static generate(element) {
|
|
8
|
-
const staticAttributes = ["data-testid", "aria-label", "title", "alt", "role"];
|
|
9
|
-
for (const attr of staticAttributes) {
|
|
10
|
-
const value = element.getAttribute(attr);
|
|
11
|
-
if (value && !this.isDynamicValue(value)) {
|
|
12
|
-
return `[${attr}="${CSS.escape(value)}"]`;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
const tagName = element.tagName.toLowerCase();
|
|
16
|
-
const parent = element.parentElement;
|
|
17
|
-
if (parent) {
|
|
18
|
-
const siblings = Array.from(parent.children);
|
|
19
|
-
const index = siblings.indexOf(element) + 1;
|
|
20
|
-
if (siblings.length > 1) {
|
|
21
|
-
return `${tagName}:nth-child(${index})`;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
if (parent) {
|
|
25
|
-
const parentSelector = this.generateParentSelector(parent);
|
|
26
|
-
if (parentSelector) {
|
|
27
|
-
return `${parentSelector} > ${tagName}:nth-child(${Array.from(parent.children).indexOf(element) + 1})`;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return tagName;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* 부모 요소의 셀렉터 생성
|
|
34
|
-
*/
|
|
35
|
-
static generateParentSelector(parent) {
|
|
36
|
-
const tagName = parent.tagName.toLowerCase();
|
|
37
|
-
const staticAttributes = ["data-testid", "aria-label", "title", "alt", "role"];
|
|
38
|
-
for (const attr of staticAttributes) {
|
|
39
|
-
const value = parent.getAttribute(attr);
|
|
40
|
-
if (value && !this.isDynamicValue(value)) {
|
|
41
|
-
return `[${attr}="${CSS.escape(value)}"]`;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const grandParent = parent.parentElement;
|
|
45
|
-
if (grandParent) {
|
|
46
|
-
const siblings = Array.from(grandParent.children);
|
|
47
|
-
const index = siblings.indexOf(parent) + 1;
|
|
48
|
-
if (siblings.length > 1) {
|
|
49
|
-
return `${tagName}:nth-child(${index})`;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return tagName;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* 동적 값 패턴 감지
|
|
56
|
-
* @param value 확인할 값
|
|
57
|
-
* @returns 동적 값 여부
|
|
58
|
-
*/
|
|
59
|
-
static isDynamicValue(value) {
|
|
60
|
-
const dynamicPatterns = [
|
|
61
|
-
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
|
|
62
|
-
// UUID
|
|
63
|
-
/^\d{13}$/,
|
|
64
|
-
// timestamp
|
|
65
|
-
/^[a-zA-Z0-9]{16,}$/,
|
|
66
|
-
// long random string
|
|
67
|
-
/^[a-zA-Z0-9]+-\d+$/
|
|
68
|
-
// name-123 pattern
|
|
69
|
-
];
|
|
70
|
-
return dynamicPatterns.some((pattern) => pattern.test(value));
|
|
71
|
-
}
|
|
72
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
export class XPathGenerator {
|
|
2
|
-
/**
|
|
3
|
-
* 요소의 XPath 생성
|
|
4
|
-
* @param element 대상 요소
|
|
5
|
-
* @returns 생성된 XPath
|
|
6
|
-
*/
|
|
7
|
-
static generate(element) {
|
|
8
|
-
const path = [];
|
|
9
|
-
let current = element;
|
|
10
|
-
while (current && current.nodeType === Node.ELEMENT_NODE) {
|
|
11
|
-
let selector = current.tagName.toLowerCase();
|
|
12
|
-
const siblings = Array.from(current.parentElement?.children || []).filter((sibling) => sibling.tagName === current.tagName);
|
|
13
|
-
if (siblings.length > 1) {
|
|
14
|
-
const index = siblings.indexOf(current) + 1;
|
|
15
|
-
selector += `[${index}]`;
|
|
16
|
-
}
|
|
17
|
-
const attributes = this.getStableAttributes(current);
|
|
18
|
-
if (attributes.length > 0) {
|
|
19
|
-
selector += `[@${attributes.join(" and @")}]`;
|
|
20
|
-
}
|
|
21
|
-
path.unshift(selector);
|
|
22
|
-
current = current.parentElement;
|
|
23
|
-
}
|
|
24
|
-
return "/" + path.join("/");
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* 요소의 안정적인 속성들을 반환
|
|
28
|
-
* @param element 대상 요소
|
|
29
|
-
* @returns 안정적인 속성 배열
|
|
30
|
-
*/
|
|
31
|
-
static getStableAttributes(element) {
|
|
32
|
-
const stableAttributes = [];
|
|
33
|
-
const stableAttrs = ["data-testid", "aria-label", "title", "alt", "role"];
|
|
34
|
-
for (const attr of stableAttrs) {
|
|
35
|
-
const value = element.getAttribute(attr);
|
|
36
|
-
if (value && !this.isDynamicValue(value)) {
|
|
37
|
-
stableAttributes.push(`${attr}="${value}"`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return stableAttributes;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 동적 값 패턴 감지
|
|
44
|
-
* @param value 확인할 값
|
|
45
|
-
* @returns 동적 값 여부
|
|
46
|
-
*/
|
|
47
|
-
static isDynamicValue(value) {
|
|
48
|
-
const dynamicPatterns = [
|
|
49
|
-
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,
|
|
50
|
-
// UUID
|
|
51
|
-
/^\d{13}$/,
|
|
52
|
-
// timestamp
|
|
53
|
-
/^[a-zA-Z0-9]{16,}$/,
|
|
54
|
-
// long random string
|
|
55
|
-
/^[a-zA-Z0-9]+-\d+$/,
|
|
56
|
-
// name-123 pattern
|
|
57
|
-
/^[a-zA-Z0-9]+_[a-zA-Z0-9]+$/
|
|
58
|
-
// underscore pattern
|
|
59
|
-
];
|
|
60
|
-
return dynamicPatterns.some((pattern) => pattern.test(value));
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
export class ExternalMessageHandler {
|
|
2
|
-
constructor(kernel) {
|
|
3
|
-
this.kernel = kernel;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* 웹페이지로부터의 window message 리스너 초기화
|
|
7
|
-
*/
|
|
8
|
-
initializeMessageListener() {
|
|
9
|
-
window.addEventListener("message", this.handleWindowMessage.bind(this));
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* 웹페이지로부터의 window message 처리
|
|
13
|
-
*/
|
|
14
|
-
async handleWindowMessage(event) {
|
|
15
|
-
if (event.source !== window) return;
|
|
16
|
-
const message = event.data;
|
|
17
|
-
switch (message.type) {
|
|
18
|
-
case "8G_EXTENSION_CHECK":
|
|
19
|
-
this.handleExtensionCheck();
|
|
20
|
-
break;
|
|
21
|
-
case "8G_COLLECT_WORKFLOW":
|
|
22
|
-
await this.handleCollectWorkflow(message);
|
|
23
|
-
break;
|
|
24
|
-
default:
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* 확장 프로그램 설치 확인 요청 처리
|
|
30
|
-
*/
|
|
31
|
-
handleExtensionCheck() {
|
|
32
|
-
const response = {
|
|
33
|
-
type: "8G_EXTENSION_RESPONSE",
|
|
34
|
-
installed: true,
|
|
35
|
-
version: "1.0.0"
|
|
36
|
-
};
|
|
37
|
-
this.kernel.sendToWebpage(response);
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* 워크플로우 수집 요청 처리
|
|
41
|
-
*/
|
|
42
|
-
async handleCollectWorkflow(message) {
|
|
43
|
-
try {
|
|
44
|
-
this.validateCollectWorkflowMessage(message);
|
|
45
|
-
const backgroundMessage = {
|
|
46
|
-
type: "COLLECT_WORKFLOW_NEW_TAB",
|
|
47
|
-
data: {
|
|
48
|
-
targetUrl: message.targetUrl,
|
|
49
|
-
workflow: message.workflow,
|
|
50
|
-
closeTabAfterCollection: message.closeTabAfterCollection !== false,
|
|
51
|
-
activateTab: message.activateTab === true
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
try {
|
|
55
|
-
const response = await this.kernel.sendToBackground(backgroundMessage);
|
|
56
|
-
const successResponse = this.kernel.createSuccessResponse(message.requestId, response);
|
|
57
|
-
this.kernel.sendToWebpage(successResponse);
|
|
58
|
-
} catch (error) {
|
|
59
|
-
const errorResponse = this.kernel.createErrorResponse(message.requestId, error);
|
|
60
|
-
this.kernel.sendToWebpage(errorResponse);
|
|
61
|
-
}
|
|
62
|
-
} catch (error) {
|
|
63
|
-
const errorResponse = this.kernel.createErrorResponse(message.requestId, error);
|
|
64
|
-
this.kernel.sendToWebpage(errorResponse);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
validateCollectWorkflowMessage(message) {
|
|
68
|
-
if (!message.targetUrl) {
|
|
69
|
-
throw new Error("Target URL is required");
|
|
70
|
-
}
|
|
71
|
-
if (!message.workflow) {
|
|
72
|
-
throw new Error("Workflow is required");
|
|
73
|
-
}
|
|
74
|
-
if (!message.workflow.start || !Array.isArray(message.workflow.steps)) {
|
|
75
|
-
throw new Error("Workflow must have start and steps");
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isExecuteBlockMessage,
|
|
3
|
-
isShowExecutionStatusMessage,
|
|
4
|
-
isHideExecutionStatusMessage
|
|
5
|
-
} from "/src/types/internal-messages.ts.js";
|
|
6
|
-
export class InternalMessageHandler {
|
|
7
|
-
constructor(kernel) {
|
|
8
|
-
this.kernel = kernel;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Background script로부터의 메시지 리스너 초기화
|
|
12
|
-
*/
|
|
13
|
-
initializeMessageListener() {
|
|
14
|
-
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
|
|
15
|
-
if (isExecuteBlockMessage(message)) {
|
|
16
|
-
this.kernel.handleRuntimeMessage(message).then((result) => sendResponse(result)).catch((error) => sendResponse(this.kernel.createErrorResponse("", error)));
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
if (isShowExecutionStatusMessage(message)) {
|
|
20
|
-
console.log("[InternalMessageHandler] Show execution status:", message.data);
|
|
21
|
-
window.dispatchEvent(
|
|
22
|
-
new CustomEvent("8g-show-execution-status", {
|
|
23
|
-
detail: {
|
|
24
|
-
message: message.data.message || "워크플로우 실행 중"
|
|
25
|
-
}
|
|
26
|
-
})
|
|
27
|
-
);
|
|
28
|
-
sendResponse({ success: true });
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
if (isHideExecutionStatusMessage(message)) {
|
|
32
|
-
console.log("[InternalMessageHandler] Hide execution status");
|
|
33
|
-
window.dispatchEvent(new CustomEvent("8g-hide-execution-status"));
|
|
34
|
-
sendResponse({ success: true });
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isErrorResponse
|
|
3
|
-
} from "/src/types/internal-messages.ts.js";
|
|
4
|
-
export class MessageKernel {
|
|
5
|
-
/**
|
|
6
|
-
* Background script로 메시지 전송
|
|
7
|
-
*/
|
|
8
|
-
async sendToBackground(message) {
|
|
9
|
-
return new Promise((resolve, reject) => {
|
|
10
|
-
chrome.runtime.sendMessage(message, (response) => {
|
|
11
|
-
if (chrome.runtime.lastError) {
|
|
12
|
-
reject(new Error(chrome.runtime.lastError.message || "Communication error"));
|
|
13
|
-
} else if (isErrorResponse(response)) {
|
|
14
|
-
reject(new Error(response.message));
|
|
15
|
-
} else {
|
|
16
|
-
resolve(response);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Content script에서 Block 실행
|
|
23
|
-
*/
|
|
24
|
-
async executeBlock(block) {
|
|
25
|
-
const { BlockHandler } = await import("/src/blocks/index.ts.js");
|
|
26
|
-
const { synchronizedLock } = await import("/src/content/utils/index.ts.js");
|
|
27
|
-
await synchronizedLock.getLock();
|
|
28
|
-
try {
|
|
29
|
-
return await BlockHandler.executeBlock(block);
|
|
30
|
-
} finally {
|
|
31
|
-
synchronizedLock.releaseLock();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Chrome runtime 메시지 처리 (Background -> Content)
|
|
36
|
-
*/
|
|
37
|
-
async handleRuntimeMessage(message) {
|
|
38
|
-
if (message?.isBlock && message?.type === "EXECUTE_BLOCK") {
|
|
39
|
-
try {
|
|
40
|
-
const result = await this.executeBlock(message.data);
|
|
41
|
-
return result;
|
|
42
|
-
} catch (error) {
|
|
43
|
-
return {
|
|
44
|
-
$isError: true,
|
|
45
|
-
message: error instanceof Error ? error.message : "Unknown error",
|
|
46
|
-
data: {}
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
throw new Error("Invalid message type");
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Window message를 웹페이지로 전송
|
|
54
|
-
*/
|
|
55
|
-
sendToWebpage(message) {
|
|
56
|
-
window.postMessage(message, "*");
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* 에러 응답 생성 헬퍼
|
|
60
|
-
*/
|
|
61
|
-
createErrorResponse(requestId, error) {
|
|
62
|
-
return {
|
|
63
|
-
type: "8G_COLLECT_RESPONSE",
|
|
64
|
-
requestId,
|
|
65
|
-
success: false,
|
|
66
|
-
result: {
|
|
67
|
-
error: error instanceof Error ? error.message : "Unknown error",
|
|
68
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString()
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* 성공 응답 생성 헬퍼
|
|
74
|
-
*/
|
|
75
|
-
createSuccessResponse(requestId, result) {
|
|
76
|
-
return {
|
|
77
|
-
type: "8G_COLLECT_RESPONSE",
|
|
78
|
-
requestId,
|
|
79
|
-
success: true,
|
|
80
|
-
result
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
(function () {
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const injectTime = performance.now();
|
|
5
|
-
(async () => {
|
|
6
|
-
if ("vendor/crx-client-preamble.js")
|
|
7
|
-
await import(
|
|
8
|
-
/* @vite-ignore */
|
|
9
|
-
chrome.runtime.getURL("vendor/crx-client-preamble.js")
|
|
10
|
-
);
|
|
11
|
-
await import(
|
|
12
|
-
/* @vite-ignore */
|
|
13
|
-
chrome.runtime.getURL("vendor/vite-client.js")
|
|
14
|
-
);
|
|
15
|
-
const { onExecute } = await import(
|
|
16
|
-
/* @vite-ignore */
|
|
17
|
-
chrome.runtime.getURL("src/content/main.tsx.js")
|
|
18
|
-
);
|
|
19
|
-
onExecute?.({ perf: { injectTime, loadTime: performance.now() - injectTime } });
|
|
20
|
-
})().catch(console.error);
|
|
21
|
-
|
|
22
|
-
})();
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import __vite__cjsImport0_react_jsxDevRuntime from "/vendor/.vite-deps-react_jsx-dev-runtime.js__v--34285d49.js"; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"];
|
|
2
|
-
import __vite__cjsImport1_reactDom_client from "/vendor/.vite-deps-react-dom_client.js__v--34285d49.js"; const createRoot = __vite__cjsImport1_reactDom_client["createRoot"];
|
|
3
|
-
import { MessageKernel } from "/src/content/kernel/MessageKernel.ts.js";
|
|
4
|
-
import { InternalMessageHandler } from "/src/content/handler/InternalMessageHandler.ts.js";
|
|
5
|
-
import { ExternalMessageHandler } from "/src/content/handler/ExternalMessageHandler.ts.js";
|
|
6
|
-
import { ConfirmationUIContainer } from "/src/content/components/ConfirmationUI.tsx.js";
|
|
7
|
-
import { ExecutionStatusUIContainer } from "/src/content/components/ExecutionStatusUI.tsx.js";
|
|
8
|
-
(() => {
|
|
9
|
-
if (window.is8gExtensionInjected) return;
|
|
10
|
-
window.is8gExtensionInjected = true;
|
|
11
|
-
console.log("[8G Extension] Content script initialized on:", window.location.href);
|
|
12
|
-
const messageKernel = new MessageKernel();
|
|
13
|
-
const internalHandler = new InternalMessageHandler(messageKernel);
|
|
14
|
-
const externalHandler = new ExternalMessageHandler(messageKernel);
|
|
15
|
-
internalHandler.initializeMessageListener();
|
|
16
|
-
externalHandler.initializeMessageListener();
|
|
17
|
-
const isTopFrame = window.self === window.top;
|
|
18
|
-
if (isTopFrame) {
|
|
19
|
-
const initUI = () => {
|
|
20
|
-
const confirmationRoot = document.createElement("div");
|
|
21
|
-
confirmationRoot.id = "8g-confirmation-ui-root";
|
|
22
|
-
confirmationRoot.style.cssText = "all: initial; position: fixed; z-index: 2147483647;";
|
|
23
|
-
document.body.appendChild(confirmationRoot);
|
|
24
|
-
const confirmationReactRoot = createRoot(confirmationRoot);
|
|
25
|
-
confirmationReactRoot.render(/* @__PURE__ */ jsxDEV(ConfirmationUIContainer, {}, void 0, false, {
|
|
26
|
-
fileName: "/Users/kerry/Documents/GitHub/8g-extension/src/content/main.tsx",
|
|
27
|
-
lineNumber: 40,
|
|
28
|
-
columnNumber: 36
|
|
29
|
-
}, this));
|
|
30
|
-
const executionStatusRoot = document.createElement("div");
|
|
31
|
-
executionStatusRoot.id = "8g-execution-status-ui-root";
|
|
32
|
-
executionStatusRoot.style.cssText = "all: initial; position: fixed; z-index: 2147483647;";
|
|
33
|
-
document.body.appendChild(executionStatusRoot);
|
|
34
|
-
const executionStatusReactRoot = createRoot(executionStatusRoot);
|
|
35
|
-
executionStatusReactRoot.render(/* @__PURE__ */ jsxDEV(ExecutionStatusUIContainer, {}, void 0, false, {
|
|
36
|
-
fileName: "/Users/kerry/Documents/GitHub/8g-extension/src/content/main.tsx",
|
|
37
|
-
lineNumber: 49,
|
|
38
|
-
columnNumber: 39
|
|
39
|
-
}, this));
|
|
40
|
-
console.log("[8G Extension] UI Components mounted (top frame only)");
|
|
41
|
-
};
|
|
42
|
-
if (document.body) {
|
|
43
|
-
initUI();
|
|
44
|
-
} else {
|
|
45
|
-
document.addEventListener("DOMContentLoaded", initUI);
|
|
46
|
-
}
|
|
47
|
-
} else {
|
|
48
|
-
console.log("[8G Extension] Skipping UI mount (inside iframe)");
|
|
49
|
-
}
|
|
50
|
-
})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { synchronizedLock } from "/src/content/utils/synchronizedLock.ts.js";
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
class SynchronizedLock {
|
|
2
|
-
isLocked = false;
|
|
3
|
-
waitQueue = [];
|
|
4
|
-
async getLock() {
|
|
5
|
-
return new Promise((resolve) => {
|
|
6
|
-
if (!this.isLocked) {
|
|
7
|
-
this.isLocked = true;
|
|
8
|
-
resolve();
|
|
9
|
-
} else {
|
|
10
|
-
this.waitQueue.push(resolve);
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
releaseLock() {
|
|
15
|
-
if (!this.isLocked) {
|
|
16
|
-
console.warn("[SynchronizedLock] Attempting to release an unlocked lock");
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
this.isLocked = false;
|
|
20
|
-
if (this.waitQueue.length > 0) {
|
|
21
|
-
const nextResolve = this.waitQueue.shift();
|
|
22
|
-
if (nextResolve) {
|
|
23
|
-
this.isLocked = true;
|
|
24
|
-
nextResolve();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
isCurrentlyLocked() {
|
|
29
|
-
return this.isLocked;
|
|
30
|
-
}
|
|
31
|
-
getQueueLength() {
|
|
32
|
-
return this.waitQueue.length;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
export const synchronizedLock = new SynchronizedLock();
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<title>Vite Dev Mode</title>
|
|
5
|
-
<script src="/assets/loading-page-1924caaa.js" type="module"></script>
|
|
6
|
-
</head>
|
|
7
|
-
<body
|
|
8
|
-
style="font-family: Arial, sans-serif; padding: 20px; text-align: center"
|
|
9
|
-
>
|
|
10
|
-
<h1>Vite Dev Mode</h1>
|
|
11
|
-
</body>
|
|
12
|
-
</html>
|
package/dist/src/sdk/types.ts.js
DELETED
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
export * from "/src/blocks/index.ts.js";
|
|
2
|
-
export class Condition {
|
|
3
|
-
expr;
|
|
4
|
-
json;
|
|
5
|
-
}
|
|
6
|
-
export class Binding {
|
|
7
|
-
template;
|
|
8
|
-
valueFrom;
|
|
9
|
-
default;
|
|
10
|
-
}
|
|
11
|
-
export class WorkflowStep {
|
|
12
|
-
id;
|
|
13
|
-
title;
|
|
14
|
-
when;
|
|
15
|
-
block;
|
|
16
|
-
// BlockBase 호환. 바인딩은 런타임에서 해석
|
|
17
|
-
repeat;
|
|
18
|
-
// 반복 설정 (forEach 또는 count)`
|
|
19
|
-
next;
|
|
20
|
-
onSuccess;
|
|
21
|
-
onFailure;
|
|
22
|
-
switch;
|
|
23
|
-
timeoutMs;
|
|
24
|
-
retry;
|
|
25
|
-
delayAfterMs;
|
|
26
|
-
}
|
|
27
|
-
export class Workflow {
|
|
28
|
-
version;
|
|
29
|
-
id;
|
|
30
|
-
title;
|
|
31
|
-
description;
|
|
32
|
-
start;
|
|
33
|
-
steps;
|
|
34
|
-
vars;
|
|
35
|
-
// 워크플로우 초기 변수
|
|
36
|
-
defaultDelayMs;
|
|
37
|
-
}
|
|
38
|
-
export class WorkflowStepRunResult {
|
|
39
|
-
stepId;
|
|
40
|
-
skipped;
|
|
41
|
-
success;
|
|
42
|
-
message;
|
|
43
|
-
result;
|
|
44
|
-
startedAt;
|
|
45
|
-
finishedAt;
|
|
46
|
-
attempts;
|
|
47
|
-
}
|
|
48
|
-
export class CollectWorkflowResult {
|
|
49
|
-
success;
|
|
50
|
-
steps;
|
|
51
|
-
context;
|
|
52
|
-
targetUrl;
|
|
53
|
-
timestamp;
|
|
54
|
-
error;
|
|
55
|
-
}
|
|
56
|
-
export var CurrencyCode = /* @__PURE__ */ ((CurrencyCode2) => {
|
|
57
|
-
CurrencyCode2["USD"] = "USD";
|
|
58
|
-
CurrencyCode2["KRW"] = "KRW";
|
|
59
|
-
CurrencyCode2["EUR"] = "EUR";
|
|
60
|
-
CurrencyCode2["GBP"] = "GBP";
|
|
61
|
-
CurrencyCode2["CAD"] = "CAD";
|
|
62
|
-
CurrencyCode2["CNY"] = "CNY";
|
|
63
|
-
CurrencyCode2["JPY"] = "JPY";
|
|
64
|
-
CurrencyCode2["VND"] = "VND";
|
|
65
|
-
CurrencyCode2["ARS"] = "ARS";
|
|
66
|
-
CurrencyCode2["INR"] = "INR";
|
|
67
|
-
CurrencyCode2["TWD"] = "TWD";
|
|
68
|
-
CurrencyCode2["AUD"] = "AUD";
|
|
69
|
-
CurrencyCode2["HKD"] = "HKD";
|
|
70
|
-
CurrencyCode2["IDR"] = "IDR";
|
|
71
|
-
CurrencyCode2["MXN"] = "MXN";
|
|
72
|
-
CurrencyCode2["NZD"] = "NZD";
|
|
73
|
-
CurrencyCode2["SGD"] = "SGD";
|
|
74
|
-
CurrencyCode2["CHF"] = "CHF";
|
|
75
|
-
CurrencyCode2["THB"] = "THB";
|
|
76
|
-
CurrencyCode2["BRL"] = "BRL";
|
|
77
|
-
CurrencyCode2["TRY"] = "TRY";
|
|
78
|
-
CurrencyCode2["RUB"] = "RUB";
|
|
79
|
-
CurrencyCode2["NOK"] = "NOK";
|
|
80
|
-
CurrencyCode2["DKK"] = "DKK";
|
|
81
|
-
CurrencyCode2["SEK"] = "SEK";
|
|
82
|
-
CurrencyCode2["ILS"] = "ILS";
|
|
83
|
-
CurrencyCode2["ZAR"] = "ZAR";
|
|
84
|
-
CurrencyCode2["PLN"] = "PLN";
|
|
85
|
-
CurrencyCode2["PHP"] = "PHP";
|
|
86
|
-
CurrencyCode2["CZK"] = "CZK";
|
|
87
|
-
CurrencyCode2["CLP"] = "CLP";
|
|
88
|
-
CurrencyCode2["COP"] = "COP";
|
|
89
|
-
CurrencyCode2["EGP"] = "EGP";
|
|
90
|
-
CurrencyCode2["MYR"] = "MYR";
|
|
91
|
-
CurrencyCode2["HUF"] = "HUF";
|
|
92
|
-
CurrencyCode2["AED"] = "AED";
|
|
93
|
-
CurrencyCode2["SAR"] = "SAR";
|
|
94
|
-
CurrencyCode2["RON"] = "RON";
|
|
95
|
-
CurrencyCode2["BGN"] = "BGN";
|
|
96
|
-
return CurrencyCode2;
|
|
97
|
-
})(CurrencyCode || {});
|
|
98
|
-
export const CurrencyInfoSchema = {
|
|
99
|
-
code: {
|
|
100
|
-
type: "string",
|
|
101
|
-
enum: Object.values(CurrencyCode),
|
|
102
|
-
description: "Currency code"
|
|
103
|
-
},
|
|
104
|
-
symbol: {
|
|
105
|
-
type: "string",
|
|
106
|
-
enum: [
|
|
107
|
-
"$",
|
|
108
|
-
"₩",
|
|
109
|
-
"€",
|
|
110
|
-
"£",
|
|
111
|
-
"¥",
|
|
112
|
-
"₫",
|
|
113
|
-
"₹",
|
|
114
|
-
"NT$",
|
|
115
|
-
"Rp",
|
|
116
|
-
"₣",
|
|
117
|
-
"฿",
|
|
118
|
-
"R$",
|
|
119
|
-
"₺",
|
|
120
|
-
"₽",
|
|
121
|
-
"kr",
|
|
122
|
-
"₪",
|
|
123
|
-
"R",
|
|
124
|
-
"zł",
|
|
125
|
-
"₱",
|
|
126
|
-
"Kč",
|
|
127
|
-
"E£",
|
|
128
|
-
"RM",
|
|
129
|
-
"Ft",
|
|
130
|
-
"د.إ",
|
|
131
|
-
"﷼",
|
|
132
|
-
"L",
|
|
133
|
-
"лв"
|
|
134
|
-
],
|
|
135
|
-
description: "Currency symbol"
|
|
136
|
-
},
|
|
137
|
-
format: {
|
|
138
|
-
type: "string",
|
|
139
|
-
enum: ["%s%u", "%s%n", "%u%s", "%n%s", "%s %u", "%s %n", "%u %s", "%n %s"],
|
|
140
|
-
description: "Display format (%s: symbol, %u/%n: amount)"
|
|
141
|
-
},
|
|
142
|
-
amount: {
|
|
143
|
-
type: "number",
|
|
144
|
-
description: "Actual amount value"
|
|
145
|
-
},
|
|
146
|
-
text: {
|
|
147
|
-
type: "string",
|
|
148
|
-
description: "Formatted display text (e.g., US$57.75)"
|
|
149
|
-
}
|
|
150
|
-
};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export function isExecuteBlockMessage(message) {
|
|
2
|
-
return message && message.isBlock === true && message.type === "EXECUTE_BLOCK";
|
|
3
|
-
}
|
|
4
|
-
export function isCdpClickMessage(message) {
|
|
5
|
-
return message && message.type === "CDP_CLICK";
|
|
6
|
-
}
|
|
7
|
-
export function isCdpKeypressMessage(message) {
|
|
8
|
-
return message && message.type === "CDP_KEYPRESS";
|
|
9
|
-
}
|
|
10
|
-
export function isFetchApiMessage(message) {
|
|
11
|
-
return message && message.type === "FETCH_API";
|
|
12
|
-
}
|
|
13
|
-
export function isExportDataMessage(message) {
|
|
14
|
-
return message && message.type === "EXPORT_DATA";
|
|
15
|
-
}
|
|
16
|
-
export function isNetworkCatchMessage(message) {
|
|
17
|
-
return message && message.type === "NETWORK_CATCH";
|
|
18
|
-
}
|
|
19
|
-
export function isShowExecutionStatusMessage(message) {
|
|
20
|
-
return message && message.type === "SHOW_EXECUTION_STATUS";
|
|
21
|
-
}
|
|
22
|
-
export function isHideExecutionStatusMessage(message) {
|
|
23
|
-
return message && message.type === "HIDE_EXECUTION_STATUS";
|
|
24
|
-
}
|
|
25
|
-
export function isErrorResponse(response) {
|
|
26
|
-
return response && response.$isError === true;
|
|
27
|
-
}
|
|
File without changes
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
9
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
10
|
-
}) : x)(function(x) {
|
|
11
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
12
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
13
|
-
});
|
|
14
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
15
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
16
|
-
};
|
|
17
|
-
var __export = (target, all) => {
|
|
18
|
-
for (var name in all)
|
|
19
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
20
|
-
};
|
|
21
|
-
var __copyProps = (to, from, except, desc) => {
|
|
22
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
23
|
-
for (let key of __getOwnPropNames(from))
|
|
24
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
25
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
26
|
-
}
|
|
27
|
-
return to;
|
|
28
|
-
};
|
|
29
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
30
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
31
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
32
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
33
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
34
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
35
|
-
mod
|
|
36
|
-
));
|
|
37
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
38
|
-
|
|
39
|
-
export {
|
|
40
|
-
__require,
|
|
41
|
-
__commonJS,
|
|
42
|
-
__export,
|
|
43
|
-
__toESM,
|
|
44
|
-
__publicField
|
|
45
|
-
};
|