@applitools/dom-snapshot 4.13.7 → 4.13.8
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/CHANGELOG.md +7 -0
- package/README.md +106 -0
- package/dist/browser/aggregateResourceUrlsAndBlobs.d.ts +3 -0
- package/dist/browser/arrayBufferToBase64.d.ts +2 -0
- package/dist/browser/buildBlobImages.d.ts +3 -0
- package/dist/browser/buildBlobVideos.d.ts +3 -0
- package/dist/browser/buildCanvasBlobs.d.ts +3 -0
- package/dist/browser/constants.d.ts +2 -0
- package/dist/browser/createBlob.d.ts +3 -0
- package/dist/browser/createTempStyleSheet.d.ts +2 -0
- package/dist/browser/cssom/createAstFromCssom.d.ts +2 -0
- package/dist/browser/cssom/createAstFromDeclaration.d.ts +2 -0
- package/dist/browser/cssom/createAstFromTextContent.d.ts +2 -0
- package/dist/browser/cssom/mergeRules.d.ts +2 -0
- package/dist/browser/cssom/processInlineCss.d.ts +2 -0
- package/dist/browser/cssom/processInlineStyleCss.d.ts +2 -0
- package/dist/browser/cssom/styleProperties.d.ts +7 -0
- package/dist/browser/cssom/styleSheetToCssText.d.ts +2 -0
- package/dist/browser/domNodesToCdt.d.ts +3 -0
- package/dist/browser/extractLinksFromElement.d.ts +2 -0
- package/dist/browser/extractResourceUrlsFromAdoptedStyleSheets.d.ts +2 -0
- package/dist/browser/extractResourceUrlsFromStyleAttrs.d.ts +2 -0
- package/dist/browser/extractResourceUrlsFromStyleTags.d.ts +2 -0
- package/dist/browser/extractResourcesFromStyle.d.ts +2 -0
- package/dist/browser/extractResourcesFromStyleSheet.d.ts +9 -0
- package/dist/browser/fetchUrl.d.ts +3 -0
- package/dist/browser/filterInlineUrl.d.ts +2 -0
- package/dist/browser/findStyleSheetByUrl.d.ts +3 -0
- package/dist/browser/flat.d.ts +2 -0
- package/dist/browser/generate-safe-selectors.d.ts +2 -0
- package/dist/browser/getBaseUrl.d.ts +2 -0
- package/dist/browser/getCorsFreeStyleSheet.d.ts +6 -0
- package/dist/browser/getElementAttrSelector.d.ts +2 -0
- package/dist/browser/getInlineCssCacheKey.d.ts +2 -0
- package/dist/browser/getResourceUrlsAndBlobs.d.ts +3 -0
- package/dist/browser/getUrlFromCssText.d.ts +5 -0
- package/dist/browser/isInvisibleElement.d.ts +2 -0
- package/dist/browser/isScreenMediaQuery.d.ts +2 -0
- package/dist/browser/log.d.ts +2 -0
- package/dist/browser/makeExtractResourcesFromSvg.d.ts +7 -0
- package/dist/browser/md5.d.ts +2 -0
- package/dist/browser/noop.d.ts +2 -0
- package/dist/browser/pollResult.d.ts +1 -0
- package/dist/browser/processPage.d.ts +29 -0
- package/dist/browser/processPageAndSerialize.d.ts +3 -0
- package/dist/browser/processPageAndSerializePoll.d.ts +19 -0
- package/dist/browser/processPagePoll.d.ts +2 -0
- package/dist/browser/processResource.d.ts +19 -0
- package/dist/browser/removeBasicAuthFromUrl.d.ts +2 -0
- package/dist/browser/sanitizeAuthUrl.d.ts +2 -0
- package/dist/browser/sessionCache.d.ts +3 -0
- package/dist/browser/toUnAnchoredUri.d.ts +2 -0
- package/dist/browser/toUriEncoding.d.ts +2 -0
- package/dist/browser/uniq.d.ts +2 -0
- package/dist/browser/uuid.d.ts +2 -0
- package/dist/browser/wrapHTMLElement.d.ts +5 -0
- package/dist/index.d.ts +6 -0
- package/dist/pollResult.js +3 -2
- package/dist/pollResult.js.map +1 -0
- package/dist/pollResultCjs.js +3 -2
- package/dist/pollResultCjs.js.map +1 -0
- package/dist/pollResultEs.js +3 -0
- package/dist/pollResultEs.js.map +1 -0
- package/dist/processPage.js +4 -3
- package/dist/processPage.js.map +1 -0
- package/dist/processPagePoll.js +4 -3
- package/dist/processPagePoll.js.map +1 -0
- package/dist/processPagePollCjs.js +4 -3
- package/dist/processPagePollCjs.js.map +1 -0
- package/dist/processPagePollEs.js +5 -0
- package/dist/processPagePollEs.js.map +1 -0
- package/dist/types/blob.d.ts +63 -0
- package/dist/types/browser.d.ts +52 -0
- package/dist/types/css.d.ts +16 -0
- package/dist/types/elements.d.ts +19 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/raw-dom-snapshot.d.ts +37 -0
- package/dist/types/resources.d.ts +92 -0
- package/dist/types/selectors.d.ts +6 -0
- package/index.js +1 -1
- package/package.json +22 -5
- package/src/getScript.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,13 @@
|
|
|
9
9
|
- fix style programmatic generated fallback
|
|
10
10
|
- performance boost
|
|
11
11
|
|
|
12
|
+
## [4.13.8](https://github.com/Applitools-Dev/sdk/compare/js/dom-snapshot@4.13.7...js/dom-snapshot@4.13.8) (2025-10-08)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* support cssom property rule ([#3263](https://github.com/Applitools-Dev/sdk/issues/3263)) ([c142687](https://github.com/Applitools-Dev/sdk/commit/c142687ec075784d0e0fb8f178af01c5e81dad82))
|
|
18
|
+
|
|
12
19
|
## [4.13.7](https://github.com/Applitools-Dev/sdk/compare/js/dom-snapshot@4.13.6...js/dom-snapshot@4.13.7) (2025-09-16)
|
|
13
20
|
|
|
14
21
|
|
package/README.md
CHANGED
|
@@ -2,6 +2,105 @@
|
|
|
2
2
|
|
|
3
3
|
Script for extracting resources and DOM in CDT format, to serve as the input for rendering a screenshot with the visual grid.
|
|
4
4
|
|
|
5
|
+
## Package Context & Usage Across Applitools SDKs
|
|
6
|
+
|
|
7
|
+
This package is a core dependency used throughout the Applitools ecosystem:
|
|
8
|
+
|
|
9
|
+
### Consumer Packages
|
|
10
|
+
- **`@applitools/eyes-selenium`** - Selenium WebDriver integration
|
|
11
|
+
- **`@applitools/eyes-cypress`** - Cypress testing integration
|
|
12
|
+
- **`@applitools/eyes-playwright`** - Playwright testing integration
|
|
13
|
+
- **`@applitools/core`** - Shared core functionality across SDKs
|
|
14
|
+
- **`@applitools/visual-grid-client`** - Visual Grid rendering service
|
|
15
|
+
|
|
16
|
+
### Usage Patterns
|
|
17
|
+
|
|
18
|
+
#### 1. **Script Injection Pattern** (Most Common)
|
|
19
|
+
Test frameworks inject DOM capture scripts into browser contexts:
|
|
20
|
+
|
|
21
|
+
```javascript
|
|
22
|
+
// Used by: eyes-selenium, eyes-playwright, etc.
|
|
23
|
+
const { getProcessPage } = require('@applitools/dom-snapshot')
|
|
24
|
+
const script = await getProcessPage()
|
|
25
|
+
const result = await driver.executeScript(`return (${script}).apply(null, arguments);`, args)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
#### 2. **Direct Function Execution Pattern**
|
|
29
|
+
Advanced frameworks that pass function objects directly:
|
|
30
|
+
|
|
31
|
+
```javascript
|
|
32
|
+
// Used by: core package for specific driver capabilities
|
|
33
|
+
const processPagePoll = require('@applitools/dom-snapshot/dist/processPagePollCjs')
|
|
34
|
+
await driver.executePoll({ main: processPagePoll }, args)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
#### 3. **Client-Side Bundling Pattern**
|
|
38
|
+
Non-driver based integrations bundle the functions:
|
|
39
|
+
|
|
40
|
+
```javascript
|
|
41
|
+
// Used by: eyes-cypress (runs in browser context)
|
|
42
|
+
import processPage from '@applitools/dom-snapshot/src/browser/processPage'
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Design Architecture
|
|
46
|
+
|
|
47
|
+
### Multi-Format Build Strategy
|
|
48
|
+
|
|
49
|
+
The package provides the same functionality in multiple formats to support different execution contexts:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
src/browser/processPage.js
|
|
53
|
+
├── dist/processPage.js (IIFE - Browser injection)
|
|
54
|
+
└── dist/processPagePollCjs.js (CommonJS - Node.js execution)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Format Rationale
|
|
58
|
+
|
|
59
|
+
#### **IIFE (Immediately Invoked Function Expression)**
|
|
60
|
+
- **Purpose**: Browser script injection
|
|
61
|
+
- **Consumers**: All driver-based SDKs (Selenium, Playwright, etc.)
|
|
62
|
+
- **Why**: Self-contained, executes immediately when injected
|
|
63
|
+
- **Example**: `dist/processPage.js`
|
|
64
|
+
|
|
65
|
+
#### **CommonJS**
|
|
66
|
+
- **Purpose**: Direct Node.js function execution
|
|
67
|
+
- **Consumers**: Core package, advanced driver capabilities
|
|
68
|
+
- **Why**: Can be passed as function object to specialized driver methods
|
|
69
|
+
- **Example**: `dist/processPagePollCjs.js`
|
|
70
|
+
|
|
71
|
+
#### **ES Modules**
|
|
72
|
+
- **Purpose**: Client-side bundling
|
|
73
|
+
- **Consumers**: Cypress SDK, other in-browser integrations
|
|
74
|
+
- **Why**: Tree-shakable, modern bundling support
|
|
75
|
+
- **Example**: `src/browser/processPage.js` (raw source)
|
|
76
|
+
|
|
77
|
+
### Simplified Index Strategy
|
|
78
|
+
|
|
79
|
+
Instead of complex bundling with selective obfuscation, we use **direct imports**:
|
|
80
|
+
|
|
81
|
+
```javascript
|
|
82
|
+
// Main package exports - simple script getters
|
|
83
|
+
const { getProcessPage, getProcessPagePoll, getPollResult } = require('@applitools/dom-snapshot')
|
|
84
|
+
|
|
85
|
+
// Direct imports for specific formats
|
|
86
|
+
const processPagePoll = require('@applitools/dom-snapshot/dist/processPagePollCjs')
|
|
87
|
+
const pollResult = require('@applitools/dom-snapshot/dist/pollResultCjs')
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
This approach:
|
|
91
|
+
- ✅ **Eliminates bundling complexity** - No circular dependencies or path resolution issues
|
|
92
|
+
- ✅ **Clear separation of concerns** - Each format serves its specific purpose
|
|
93
|
+
- ✅ **Better tree-shaking** - Consumers import only what they need
|
|
94
|
+
- ✅ **Simpler maintenance** - No selective obfuscation configuration needed
|
|
95
|
+
|
|
96
|
+
### TypeScript Migration Design
|
|
97
|
+
|
|
98
|
+
**Gradual Migration Strategy:**
|
|
99
|
+
- Coexist `.js` and `.ts` files during transition
|
|
100
|
+
- Rollup handles both formats with TypeScript plugin
|
|
101
|
+
- Build system remains consistent across all outputs
|
|
102
|
+
- Consumer packages unaffected during migration
|
|
103
|
+
|
|
5
104
|
## Installing
|
|
6
105
|
|
|
7
106
|
```sh
|
|
@@ -132,3 +231,10 @@ Status could be one of:
|
|
|
132
231
|
## `pollResult`
|
|
133
232
|
|
|
134
233
|
returns the poll result - an object with the same shape as `processPagePoll`.
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
# Testing
|
|
237
|
+
|
|
238
|
+
1. yarn test
|
|
239
|
+
2. cd ../core && yarn test:it -b -g snapshot
|
|
240
|
+
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ImageBlob, BlobResult, BuildBlobImagesOptions } from '../types';
|
|
2
|
+
declare function buildBlobImages(imageBlobs: ImageBlob[], { doc, fetchedBlobs, log, compress, serialize, sessionCache }: BuildBlobImagesOptions): Promise<BlobResult[] | void>;
|
|
3
|
+
export default buildBlobImages;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { VideoBlob, BlobResult, BuildBlobVideosOptions } from '../types';
|
|
2
|
+
declare function buildBlobVideos(imageBlobs: VideoBlob[], { doc, fetchedBlobs, compress, serialize, sessionCache }: BuildBlobVideosOptions): Promise<BlobResult[]>;
|
|
3
|
+
export default buildBlobVideos;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
declare function isShorthand(shorthand: string): boolean;
|
|
2
|
+
declare function isShorthandFor(shorthand: string, longhand: string): boolean;
|
|
3
|
+
declare function hasShorthand(longhand: string): boolean;
|
|
4
|
+
declare function hasShorthandWithin(longhand: string, shorthands: string[]): boolean;
|
|
5
|
+
declare function getShorthands(longhand: string): Set<string> | undefined;
|
|
6
|
+
declare function preferredShorthand(longhand: string): string | undefined;
|
|
7
|
+
export { isShorthand, isShorthandFor, hasShorthand, hasShorthandWithin, getShorthands, preferredShorthand };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ExtractResourcesConfig {
|
|
2
|
+
styleSheetCache: {
|
|
3
|
+
[url: string]: CSSStyleSheet;
|
|
4
|
+
};
|
|
5
|
+
CSSRule?: typeof window.CSSRule;
|
|
6
|
+
removeReverseProxyURLPrefixes?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare function makeExtractResourcesFromStyleSheet({ styleSheetCache, CSSRule, removeReverseProxyURLPrefixes, }: ExtractResourcesConfig): (styleSheet: CSSStyleSheet | CSSGroupingRule) => string[];
|
|
9
|
+
export default makeExtractResourcesFromStyleSheet;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
interface CorsFreeStyleSheetResult {
|
|
2
|
+
corsFreeStyleSheet: CSSStyleSheet;
|
|
3
|
+
cleanStyleSheet: () => void;
|
|
4
|
+
}
|
|
5
|
+
declare function getCorsFreeStyleSheet(cssArrayBuffer: ArrayBuffer, styleSheet?: CSSStyleSheet, log?: (..._args: any[]) => void): CorsFreeStyleSheetResult;
|
|
6
|
+
export default getCorsFreeStyleSheet;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { GetResourceUrlsAndBlobsFunction, MakeGetResourceUrlsAndBlobsOptions } from '../types';
|
|
2
|
+
declare function makeGetResourceUrlsAndBlobs({ processResource, aggregateResourceUrlsAndBlobs, }: MakeGetResourceUrlsAndBlobsOptions): GetResourceUrlsAndBlobsFunction;
|
|
3
|
+
export default makeGetResourceUrlsAndBlobs;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface ExtractSvgConfig {
|
|
2
|
+
parser?: DOMParser;
|
|
3
|
+
decoder?: TextDecoder;
|
|
4
|
+
extractResourceUrlsFromStyleTags: (doc: Document, onlyDocStylesheet: boolean) => string[];
|
|
5
|
+
}
|
|
6
|
+
declare function makeExtractResourcesFromSvg({ parser, decoder, extractResourceUrlsFromStyleTags }: ExtractSvgConfig): (svgArrayBuffer: ArrayBuffer) => string[];
|
|
7
|
+
export default makeExtractResourcesFromSvg;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function (options: any): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { SafeSelector } from '../types';
|
|
2
|
+
export interface ProcessPageOptions {
|
|
3
|
+
doc?: Document;
|
|
4
|
+
showLogs?: boolean;
|
|
5
|
+
useSessionCache?: boolean;
|
|
6
|
+
dontFetchResources?: boolean;
|
|
7
|
+
fetchTimeout?: number;
|
|
8
|
+
skipResources?: string[];
|
|
9
|
+
compressResources?: boolean;
|
|
10
|
+
serializeResources?: boolean;
|
|
11
|
+
removeReverseProxyURLPrefixes?: string[];
|
|
12
|
+
elements?: HTMLElement[][];
|
|
13
|
+
}
|
|
14
|
+
export interface ProcessPageResult {
|
|
15
|
+
cdt: any[];
|
|
16
|
+
url: string;
|
|
17
|
+
srcAttr?: string;
|
|
18
|
+
resourceUrls: string[];
|
|
19
|
+
blobs: any[];
|
|
20
|
+
frames: ProcessPageResult[];
|
|
21
|
+
crossFrames: any[];
|
|
22
|
+
safeSelectors?: SafeSelector[];
|
|
23
|
+
selector?: string;
|
|
24
|
+
baseUri?: string;
|
|
25
|
+
warnings?: string[];
|
|
26
|
+
scriptVersion?: string;
|
|
27
|
+
}
|
|
28
|
+
declare function processPage({ doc, showLogs, useSessionCache, dontFetchResources, fetchTimeout, skipResources, compressResources, serializeResources, removeReverseProxyURLPrefixes, elements, }?: ProcessPageOptions): Promise<ProcessPageResult>;
|
|
29
|
+
export default processPage;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
interface Window {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
interface ProcessPageOptions {
|
|
7
|
+
doc?: Document;
|
|
8
|
+
showLogs?: boolean;
|
|
9
|
+
useSessionCache?: boolean;
|
|
10
|
+
dontFetchResources?: boolean;
|
|
11
|
+
fetchTimeout?: number;
|
|
12
|
+
skipResources?: string[];
|
|
13
|
+
compressResources?: boolean;
|
|
14
|
+
serializeResources?: boolean;
|
|
15
|
+
removeReverseProxyURLPrefixes?: string[];
|
|
16
|
+
elements?: HTMLElement[];
|
|
17
|
+
}
|
|
18
|
+
declare function processPageAndSerializePoll(options?: ProcessPageOptions): string;
|
|
19
|
+
export default processPageAndSerializePoll;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
declare function makeProcessResource({ fetchUrl, findStyleSheetByUrl, getCorsFreeStyleSheet, extractResourcesFromStyleSheet, extractResourcesFromSvg, sessionCache, cache, compress, serialize, log, }: {
|
|
2
|
+
fetchUrl: any;
|
|
3
|
+
findStyleSheetByUrl: any;
|
|
4
|
+
getCorsFreeStyleSheet: any;
|
|
5
|
+
extractResourcesFromStyleSheet: any;
|
|
6
|
+
extractResourcesFromSvg: any;
|
|
7
|
+
sessionCache: any;
|
|
8
|
+
cache?: {};
|
|
9
|
+
compress: any;
|
|
10
|
+
serialize: any;
|
|
11
|
+
log?: (..._args: any[]) => void;
|
|
12
|
+
}): ({ url, documents, getResourceUrlsAndBlobs, forceCreateStyle, skipResources }: {
|
|
13
|
+
url: any;
|
|
14
|
+
documents: any;
|
|
15
|
+
getResourceUrlsAndBlobs: any;
|
|
16
|
+
forceCreateStyle?: boolean;
|
|
17
|
+
skipResources: any;
|
|
18
|
+
}) => any;
|
|
19
|
+
export default makeProcessResource;
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { RawDomSnapshot } from './types/raw-dom-snapshot';
|
|
2
|
+
export declare function getProcessPage(): Promise<string>;
|
|
3
|
+
export declare function getProcessPagePoll(): Promise<string>;
|
|
4
|
+
export declare function getPollResult(): Promise<string>;
|
|
5
|
+
export declare const processPagePoll: () => any;
|
|
6
|
+
export declare const pollResult: () => any;
|
package/dist/pollResult.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
/* @applitools/dom-snapshot@4.13.
|
|
1
|
+
/* @applitools/dom-snapshot@4.13.8 */
|
|
2
2
|
function __pollResult() {
|
|
3
|
-
var pollResult=function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e=function(){const t=function(t){return function(){var t={};function e(t,e=0){const n=t.charCodeAt(e);return n>=55296&&n<56320?1024*(n-55296)+(t.charCodeAt(e+1)-56320)+65536:56320<=n&&n<=57343?-1:n}var n=function(t,n){const r=[];let o=0;for(let u=0;u<t.length;++u){const c=e(t,u);let a=0;c>0&&(a=c<128?1:c<2048?2:c<65536?3:c<2097152?4:c<67108864?5:6),o+a>n?(r.push(u),o=a):o+=a}return r};const r=function(t){return t&&t.__esModule?t:{default:t}}(n),o="WIP",u="SUCCESS",c="SUCCESS_CHUNKED",a="ERROR";var s=function(t,e,n={}){const s=function(t,{chunkByteLength:e=0}={}){if(t){if(t.value){if(e){if(!t.chunks)try{const n=JSON.stringify(t.value);t.chunks=(0,r.default)(n,e),t.chunks.length>0&&(t.from=0,t.value=n)}catch(t){return{status:a,error:t.message}}if(t.from>=0)return{status:c,value:t.value.substring(t.from,t.from=t.chunks.shift()),done:!t.from}}return{status:u,value:t.value}}return t.error?{status:a,error:t.error}:{status:o}}return{status:a,error:"unexpected poll request received - cannot find state of current operation"}}((t=t||{})[e],n);return(s.status===u||s.status===a||s.status===c&&s.done)&&delete t[e],s};const l=s;var i=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessibleFrame=t.isInlineFrame=t.absolutizeUrl=t.poll=t.pollify=t.chunkify=void 0;const f=i(n);t.chunkify=f.default;const d=i((function(t,e,n){return r=>function(...o){return e[n]||(e[n]={},Promise.resolve().then((()=>t(...o))).then((t=>e[n].value=t)).catch((t=>e[n].error=t.message+"\nStack:"+t.stack))),l(e,n,r)}}));t.pollify=d.default;const h=i(s);t.poll=h.default;const
|
|
3
|
+
var pollResult=function(){"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e=function(){const t=function(t){return function(){var t={};function e(t,e=0){const n=t.charCodeAt(e);return n>=55296&&n<56320?1024*(n-55296)+(t.charCodeAt(e+1)-56320)+65536:56320<=n&&n<=57343?-1:n}var n=function(t,n){const r=[];let o=0;for(let u=0;u<t.length;++u){const c=e(t,u);let a=0;c>0&&(a=c<128?1:c<2048?2:c<65536?3:c<2097152?4:c<67108864?5:6),o+a>n?(r.push(u),o=a):o+=a}return r};const r=function(t){return t&&t.__esModule?t:{default:t}}(n),o="WIP",u="SUCCESS",c="SUCCESS_CHUNKED",a="ERROR";var s=function(t,e,n={}){const s=function(t,{chunkByteLength:e=0}={}){if(t){if(t.value){if(e){if(!t.chunks)try{const n=JSON.stringify(t.value);t.chunks=(0,r.default)(n,e),t.chunks.length>0&&(t.from=0,t.value=n)}catch(t){return{status:a,error:t.message}}if(t.from>=0)return{status:c,value:t.value.substring(t.from,t.from=t.chunks.shift()),done:!t.from}}return{status:u,value:t.value}}return t.error?{status:a,error:t.error}:{status:o}}return{status:a,error:"unexpected poll request received - cannot find state of current operation"}}((t=t||{})[e],n);return(s.status===u||s.status===a||s.status===c&&s.done)&&delete t[e],s};const l=s;var i=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessibleFrame=t.isInlineFrame=t.absolutizeUrl=p=t.poll=t.pollify=t.chunkify=void 0;const f=i(n);t.chunkify=f.default;const d=i((function(t,e,n){return r=>function(...o){return e[n]||(e[n]={},Promise.resolve().then((()=>t(...o))).then((t=>e[n].value=t)).catch((t=>e[n].error=t.message+"\nStack:"+t.stack))),l(e,n,r)}}));t.pollify=d.default;const h=i(s);var p=t.poll=h.default;const m=i((function(t,e){if(function(t){try{return new URL(t),!0}catch(t){return!1}}(t))return t;let n=!0;try{n=t!==decodeURI(t)}catch(t){n=!0}try{const r=new URL(t,e).href;return n?r:decodeURI(r)}catch(e){return n?t:decodeURI(t)}}));t.absolutizeUrl=m.default;const y=i((function(t){return t.contentDocument&&t.contentDocument.location&&!/^https?:$/.test(t.contentDocument.location.protocol)}));t.isInlineFrame=y.default;const v=i((function(t){try{const e=t.contentDocument;return Boolean(e&&e.defaultView&&e.defaultView.frameElement)}catch(t){return!1}}));return t.isAccessibleFrame=v.default,function(t){try{return JSON.stringify(p(window.__EYES__APPLITOOLS__,"domSnapshotResult",t))}catch(t){return JSON.stringify({status:"ERROR",error:t.message})}}}()};let e=!0;try{let n=document.createElement("iframe");n.setAttribute("data-applitools-sandbox",""),n.setAttribute("data-applitools-skip",""),document.head.appendChild(n);const r=window.crypto.getRandomValues(new Uint32Array(1))[0],o=n.contentDocument.createElement("script");o.textContent=`window['ctor-${r}'] = ${t.toString()};`,n.contentDocument.head.appendChild(o);const u=n.contentWindow[`ctor-${r}`];if("function"!=typeof u)throw new Error("Sandbox failed to extract function");return e=!1,u(document).apply(null,arguments).finally((()=>{n.remove()}))}catch(n){try{return t(document).apply(null,arguments)}catch(t){throw e?t:n}}};return t(e)}();
|
|
4
|
+
//# sourceMappingURL=pollResult.js.map
|
|
4
5
|
|
|
5
6
|
return pollResult.apply(this, arguments);
|
|
6
7
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pollResult.js","sources":["../../dom-shared/dist/chunkify.js","../../dom-shared/dist/poll.js","../../dom-shared/dist/pollify.js","../../dom-shared/dist/browser/absolutizeUrl.js","../../dom-shared/dist/browser/isInlineFrame.js","../../dom-shared/dist/browser/isAccessibleFrame.js","../../dom-shared/dist/index.js","../src/browser/pollResult.ts","../src/browser/constants.ts"],"sourcesContent":["\"use strict\";\nfunction charCodeAt(string, index = 0) {\n const code = string.charCodeAt(index);\n // if the code of high word (16 bits) in this diapason the character encoded by two words\n if (code >= 0xd800 && code < 0xdc00) {\n const high = code;\n const low = string.charCodeAt(index + 1);\n // convert 2 utf16le words into integer code\n return (high - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n // diapason is reserved for surrogates, we can skip it\n if (0xdc00 <= code && code <= 0xdfff)\n return -1;\n return code;\n}\nfunction chunkify(string, chunkByteLength) {\n const chunks = [];\n let currChunkByteLength = 0;\n for (let index = 0; index < string.length; ++index) {\n const code = charCodeAt(string, index);\n let charByteLength = 0;\n if (code > 0) {\n if (code < 128)\n charByteLength = 1;\n else if (code < 2048)\n charByteLength = 2;\n else if (code < 65536)\n charByteLength = 3;\n else if (code < 2097152)\n charByteLength = 4;\n else if (code < 67108864)\n charByteLength = 5;\n else\n charByteLength = 6;\n }\n if (currChunkByteLength + charByteLength > chunkByteLength) {\n chunks.push(index);\n currChunkByteLength = charByteLength;\n }\n else {\n currChunkByteLength += charByteLength;\n }\n }\n return chunks;\n}\nmodule.exports = chunkify;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst chunkify_1 = __importDefault(require(\"./chunkify\"));\nconst STATUSES = {\n WIP: 'WIP',\n SUCCESS: 'SUCCESS',\n SUCCESS_CHUNKED: 'SUCCESS_CHUNKED',\n ERROR: 'ERROR',\n};\nconst _DEFAULT_CHUNK_BYTE_LENGTH = 268435456; // 256MB\nfunction createPollResponse(state, { chunkByteLength = 0 } = {}) {\n if (!state) {\n return {\n status: STATUSES.ERROR,\n error: 'unexpected poll request received - cannot find state of current operation',\n };\n }\n else if (state.value) {\n if (chunkByteLength) {\n if (!state.chunks) {\n try {\n const stringified = JSON.stringify(state.value);\n state.chunks = (0, chunkify_1.default)(stringified, chunkByteLength);\n if (state.chunks.length > 0) {\n state.from = 0;\n state.value = stringified;\n }\n }\n catch (e) {\n return { status: STATUSES.ERROR, error: e.message };\n }\n }\n if (state.from >= 0) {\n return {\n status: STATUSES.SUCCESS_CHUNKED,\n value: state.value.substring(state.from, (state.from = state.chunks.shift())),\n done: !state.from,\n };\n }\n }\n return { status: STATUSES.SUCCESS, value: state.value };\n }\n else if (state.error) {\n return { status: STATUSES.ERROR, error: state.error };\n }\n else {\n return { status: STATUSES.WIP };\n }\n}\nfunction poll(context, key, options = {}) {\n context = context || {};\n const result = createPollResponse(context[key], options);\n if (result.status === STATUSES.SUCCESS ||\n result.status === STATUSES.ERROR ||\n (result.status === STATUSES.SUCCESS_CHUNKED && result.done)) {\n delete context[key];\n }\n return result;\n}\nmodule.exports = poll;\n","\"use strict\";\nconst poll = require(\"./poll\");\nfunction pollify(script, context, key) {\n return (options) => function (...args) {\n if (!context[key]) {\n context[key] = {};\n Promise.resolve()\n .then(() => script(...args))\n .then(value => (context[key].value = value))\n .catch(err => (context[key].error = err.message + '\\nStack:' + err.stack));\n }\n return poll(context, key, options);\n };\n}\nmodule.exports = pollify;\n","\"use strict\";\nfunction isAbsoluteUrl(url) {\n try {\n new URL(url);\n return true;\n }\n catch (err) {\n return false;\n }\n}\nfunction absolutizeUrl(url, baseUrl) {\n if (isAbsoluteUrl(url))\n return url;\n let isEncoded = true;\n try {\n isEncoded = url !== decodeURI(url);\n }\n catch (err) {\n isEncoded = true;\n }\n try {\n const absoluteUrl = new URL(url, baseUrl).href;\n return !isEncoded ? decodeURI(absoluteUrl) : absoluteUrl;\n }\n catch (err) {\n return !isEncoded ? decodeURI(url) : url;\n }\n}\nmodule.exports = absolutizeUrl;\n","\"use strict\";\nfunction isInlineFrame(frame) {\n return (frame.contentDocument &&\n frame.contentDocument.location &&\n !/^https?:$/.test(frame.contentDocument.location.protocol));\n}\nmodule.exports = isInlineFrame;\n","\"use strict\";\nfunction isAccessibleFrame(frame) {\n try {\n const doc = frame.contentDocument;\n return Boolean(doc && doc.defaultView && doc.defaultView.frameElement);\n }\n catch (err) {\n return false;\n }\n}\nmodule.exports = isAccessibleFrame;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAccessibleFrame = exports.isInlineFrame = exports.absolutizeUrl = exports.poll = exports.pollify = exports.chunkify = void 0;\nconst chunkify_1 = __importDefault(require(\"./chunkify\"));\nexports.chunkify = chunkify_1.default;\nconst pollify_1 = __importDefault(require(\"./pollify\"));\nexports.pollify = pollify_1.default;\nconst poll_1 = __importDefault(require(\"./poll\"));\nexports.poll = poll_1.default;\nconst absolutizeUrl_1 = __importDefault(require(\"./browser/absolutizeUrl\"));\nexports.absolutizeUrl = absolutizeUrl_1.default;\nconst isInlineFrame_1 = __importDefault(require(\"./browser/isInlineFrame\"));\nexports.isInlineFrame = isInlineFrame_1.default;\nconst isAccessibleFrame_1 = __importDefault(require(\"./browser/isAccessibleFrame\"));\nexports.isAccessibleFrame = isAccessibleFrame_1.default;\n",null,null],"names":["charCodeAt","string","index","code","chunkify_1","chunkByteLength","chunks","currChunkByteLength","length","charByteLength","push","mod","__esModule","default","__importDefault","require$$0","STATUSES","WIP","SUCCESS","SUCCESS_CHUNKED","ERROR","poll_1","context","key","options","result","state","value","stringified","JSON","stringify","from","e","status","error","message","substring","shift","done","createPollResponse","poll","pollify_1","script","args","Promise","resolve","then","catch","err","stack","absolutizeUrl_1","url","baseUrl","URL","isAbsoluteUrl","isEncoded","decodeURI","absoluteUrl","href","isInlineFrame_1","frame","contentDocument","location","test","protocol","isAccessibleFrame_1","doc","Boolean","defaultView","frameElement","Object","defineProperty","dist","isAccessibleFrame","isInlineFrame","absolutizeUrl","pollify","chunkify","require$$1","require$$2","require$$3","require$$4","require$$5","window"],"mappings":"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"}
|
package/dist/pollResultCjs.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
/* @applitools/dom-snapshot@4.13.
|
|
2
|
-
"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e=function(){const t=function(t){return function(){var t={};function e(t,e=0){const n=t.charCodeAt(e);return n>=55296&&n<56320?1024*(n-55296)+(t.charCodeAt(e+1)-56320)+65536:56320<=n&&n<=57343?-1:n}var n=function(t,n){const r=[];let o=0;for(let u=0;u<t.length;++u){const c=e(t,u);let a=0;c>0&&(a=c<128?1:c<2048?2:c<65536?3:c<2097152?4:c<67108864?5:6),o+a>n?(r.push(u),o=a):o+=a}return r};const r=function(t){return t&&t.__esModule?t:{default:t}}(n),o="WIP",u="SUCCESS",c="SUCCESS_CHUNKED",a="ERROR";var s=function(t,e,n={}){const s=function(t,{chunkByteLength:e=0}={}){if(t){if(t.value){if(e){if(!t.chunks)try{const n=JSON.stringify(t.value);t.chunks=(0,r.default)(n,e),t.chunks.length>0&&(t.from=0,t.value=n)}catch(t){return{status:a,error:t.message}}if(t.from>=0)return{status:c,value:t.value.substring(t.from,t.from=t.chunks.shift()),done:!t.from}}return{status:u,value:t.value}}return t.error?{status:a,error:t.error}:{status:o}}return{status:a,error:"unexpected poll request received - cannot find state of current operation"}}((t=t||{})[e],n);return(s.status===u||s.status===a||s.status===c&&s.done)&&delete t[e],s};const l=s;var i=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessibleFrame=t.isInlineFrame=t.absolutizeUrl=t.poll=t.pollify=t.chunkify=void 0;const f=i(n);t.chunkify=f.default;const d=i((function(t,e,n){return r=>function(...o){return e[n]||(e[n]={},Promise.resolve().then((()=>t(...o))).then((t=>e[n].value=t)).catch((t=>e[n].error=t.message+"\nStack:"+t.stack))),l(e,n,r)}}));t.pollify=d.default;const h=i(s);t.poll=h.default;const p=i((function(t,e){if(function(t){try{return new URL(t),!0}catch(t){return!1}}(t))return t;let n=!0;try{n=t!==decodeURI(t)}catch(t){n=!0}try{const r=new URL(t,e).href;return n?r:decodeURI(r)}catch(e){return n?t:decodeURI(t)}}));t.absolutizeUrl=p.default;const
|
|
1
|
+
/* @applitools/dom-snapshot@4.13.8 */
|
|
2
|
+
"use strict";function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e=function(){const t=function(t){return function(){var t={};function e(t,e=0){const n=t.charCodeAt(e);return n>=55296&&n<56320?1024*(n-55296)+(t.charCodeAt(e+1)-56320)+65536:56320<=n&&n<=57343?-1:n}var n=function(t,n){const r=[];let o=0;for(let u=0;u<t.length;++u){const c=e(t,u);let a=0;c>0&&(a=c<128?1:c<2048?2:c<65536?3:c<2097152?4:c<67108864?5:6),o+a>n?(r.push(u),o=a):o+=a}return r};const r=function(t){return t&&t.__esModule?t:{default:t}}(n),o="WIP",u="SUCCESS",c="SUCCESS_CHUNKED",a="ERROR";var s=function(t,e,n={}){const s=function(t,{chunkByteLength:e=0}={}){if(t){if(t.value){if(e){if(!t.chunks)try{const n=JSON.stringify(t.value);t.chunks=(0,r.default)(n,e),t.chunks.length>0&&(t.from=0,t.value=n)}catch(t){return{status:a,error:t.message}}if(t.from>=0)return{status:c,value:t.value.substring(t.from,t.from=t.chunks.shift()),done:!t.from}}return{status:u,value:t.value}}return t.error?{status:a,error:t.error}:{status:o}}return{status:a,error:"unexpected poll request received - cannot find state of current operation"}}((t=t||{})[e],n);return(s.status===u||s.status===a||s.status===c&&s.done)&&delete t[e],s};const l=s;var i=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessibleFrame=t.isInlineFrame=t.absolutizeUrl=m=t.poll=t.pollify=t.chunkify=void 0;const f=i(n);t.chunkify=f.default;const d=i((function(t,e,n){return r=>function(...o){return e[n]||(e[n]={},Promise.resolve().then((()=>t(...o))).then((t=>e[n].value=t)).catch((t=>e[n].error=t.message+"\nStack:"+t.stack))),l(e,n,r)}}));t.pollify=d.default;const h=i(s);var m=t.poll=h.default;const p=i((function(t,e){if(function(t){try{return new URL(t),!0}catch(t){return!1}}(t))return t;let n=!0;try{n=t!==decodeURI(t)}catch(t){n=!0}try{const r=new URL(t,e).href;return n?r:decodeURI(r)}catch(e){return n?t:decodeURI(t)}}));t.absolutizeUrl=p.default;const y=i((function(t){return t.contentDocument&&t.contentDocument.location&&!/^https?:$/.test(t.contentDocument.location.protocol)}));t.isInlineFrame=y.default;const v=i((function(t){try{const e=t.contentDocument;return Boolean(e&&e.defaultView&&e.defaultView.frameElement)}catch(t){return!1}}));return t.isAccessibleFrame=v.default,function(t){try{return JSON.stringify(m(window.__EYES__APPLITOOLS__,"domSnapshotResult",t))}catch(t){return JSON.stringify({status:"ERROR",error:t.message})}}}()};let e=!0;try{let n=document.createElement("iframe");n.setAttribute("data-applitools-sandbox",""),n.setAttribute("data-applitools-skip",""),document.head.appendChild(n);const r=window.crypto.getRandomValues(new Uint32Array(1))[0],o=n.contentDocument.createElement("script");o.textContent=`window['ctor-${r}'] = ${t.toString()};`,n.contentDocument.head.appendChild(o);const u=n.contentWindow[`ctor-${r}`];if("function"!=typeof u)throw new Error("Sandbox failed to extract function");return e=!1,u(document).apply(null,arguments).finally((()=>{n.remove()}))}catch(n){try{return t(document).apply(null,arguments)}catch(t){throw e?t:n}}},n=t(e);module.exports=n;
|
|
3
|
+
//# sourceMappingURL=pollResultCjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pollResultCjs.js","sources":["../../dom-shared/dist/chunkify.js","../../dom-shared/dist/poll.js","../../dom-shared/dist/pollify.js","../../dom-shared/dist/browser/absolutizeUrl.js","../../dom-shared/dist/browser/isInlineFrame.js","../../dom-shared/dist/browser/isAccessibleFrame.js","../../dom-shared/dist/index.js","../src/browser/pollResult.ts","../src/browser/constants.ts"],"sourcesContent":["\"use strict\";\nfunction charCodeAt(string, index = 0) {\n const code = string.charCodeAt(index);\n // if the code of high word (16 bits) in this diapason the character encoded by two words\n if (code >= 0xd800 && code < 0xdc00) {\n const high = code;\n const low = string.charCodeAt(index + 1);\n // convert 2 utf16le words into integer code\n return (high - 0xd800) * 0x400 + (low - 0xdc00) + 0x10000;\n }\n // diapason is reserved for surrogates, we can skip it\n if (0xdc00 <= code && code <= 0xdfff)\n return -1;\n return code;\n}\nfunction chunkify(string, chunkByteLength) {\n const chunks = [];\n let currChunkByteLength = 0;\n for (let index = 0; index < string.length; ++index) {\n const code = charCodeAt(string, index);\n let charByteLength = 0;\n if (code > 0) {\n if (code < 128)\n charByteLength = 1;\n else if (code < 2048)\n charByteLength = 2;\n else if (code < 65536)\n charByteLength = 3;\n else if (code < 2097152)\n charByteLength = 4;\n else if (code < 67108864)\n charByteLength = 5;\n else\n charByteLength = 6;\n }\n if (currChunkByteLength + charByteLength > chunkByteLength) {\n chunks.push(index);\n currChunkByteLength = charByteLength;\n }\n else {\n currChunkByteLength += charByteLength;\n }\n }\n return chunks;\n}\nmodule.exports = chunkify;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst chunkify_1 = __importDefault(require(\"./chunkify\"));\nconst STATUSES = {\n WIP: 'WIP',\n SUCCESS: 'SUCCESS',\n SUCCESS_CHUNKED: 'SUCCESS_CHUNKED',\n ERROR: 'ERROR',\n};\nconst _DEFAULT_CHUNK_BYTE_LENGTH = 268435456; // 256MB\nfunction createPollResponse(state, { chunkByteLength = 0 } = {}) {\n if (!state) {\n return {\n status: STATUSES.ERROR,\n error: 'unexpected poll request received - cannot find state of current operation',\n };\n }\n else if (state.value) {\n if (chunkByteLength) {\n if (!state.chunks) {\n try {\n const stringified = JSON.stringify(state.value);\n state.chunks = (0, chunkify_1.default)(stringified, chunkByteLength);\n if (state.chunks.length > 0) {\n state.from = 0;\n state.value = stringified;\n }\n }\n catch (e) {\n return { status: STATUSES.ERROR, error: e.message };\n }\n }\n if (state.from >= 0) {\n return {\n status: STATUSES.SUCCESS_CHUNKED,\n value: state.value.substring(state.from, (state.from = state.chunks.shift())),\n done: !state.from,\n };\n }\n }\n return { status: STATUSES.SUCCESS, value: state.value };\n }\n else if (state.error) {\n return { status: STATUSES.ERROR, error: state.error };\n }\n else {\n return { status: STATUSES.WIP };\n }\n}\nfunction poll(context, key, options = {}) {\n context = context || {};\n const result = createPollResponse(context[key], options);\n if (result.status === STATUSES.SUCCESS ||\n result.status === STATUSES.ERROR ||\n (result.status === STATUSES.SUCCESS_CHUNKED && result.done)) {\n delete context[key];\n }\n return result;\n}\nmodule.exports = poll;\n","\"use strict\";\nconst poll = require(\"./poll\");\nfunction pollify(script, context, key) {\n return (options) => function (...args) {\n if (!context[key]) {\n context[key] = {};\n Promise.resolve()\n .then(() => script(...args))\n .then(value => (context[key].value = value))\n .catch(err => (context[key].error = err.message + '\\nStack:' + err.stack));\n }\n return poll(context, key, options);\n };\n}\nmodule.exports = pollify;\n","\"use strict\";\nfunction isAbsoluteUrl(url) {\n try {\n new URL(url);\n return true;\n }\n catch (err) {\n return false;\n }\n}\nfunction absolutizeUrl(url, baseUrl) {\n if (isAbsoluteUrl(url))\n return url;\n let isEncoded = true;\n try {\n isEncoded = url !== decodeURI(url);\n }\n catch (err) {\n isEncoded = true;\n }\n try {\n const absoluteUrl = new URL(url, baseUrl).href;\n return !isEncoded ? decodeURI(absoluteUrl) : absoluteUrl;\n }\n catch (err) {\n return !isEncoded ? decodeURI(url) : url;\n }\n}\nmodule.exports = absolutizeUrl;\n","\"use strict\";\nfunction isInlineFrame(frame) {\n return (frame.contentDocument &&\n frame.contentDocument.location &&\n !/^https?:$/.test(frame.contentDocument.location.protocol));\n}\nmodule.exports = isInlineFrame;\n","\"use strict\";\nfunction isAccessibleFrame(frame) {\n try {\n const doc = frame.contentDocument;\n return Boolean(doc && doc.defaultView && doc.defaultView.frameElement);\n }\n catch (err) {\n return false;\n }\n}\nmodule.exports = isAccessibleFrame;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAccessibleFrame = exports.isInlineFrame = exports.absolutizeUrl = exports.poll = exports.pollify = exports.chunkify = void 0;\nconst chunkify_1 = __importDefault(require(\"./chunkify\"));\nexports.chunkify = chunkify_1.default;\nconst pollify_1 = __importDefault(require(\"./pollify\"));\nexports.pollify = pollify_1.default;\nconst poll_1 = __importDefault(require(\"./poll\"));\nexports.poll = poll_1.default;\nconst absolutizeUrl_1 = __importDefault(require(\"./browser/absolutizeUrl\"));\nexports.absolutizeUrl = absolutizeUrl_1.default;\nconst isInlineFrame_1 = __importDefault(require(\"./browser/isInlineFrame\"));\nexports.isInlineFrame = isInlineFrame_1.default;\nconst isAccessibleFrame_1 = __importDefault(require(\"./browser/isAccessibleFrame\"));\nexports.isAccessibleFrame = isAccessibleFrame_1.default;\n",null,null],"names":["charCodeAt","string","index","code","chunkify_1","chunkByteLength","chunks","currChunkByteLength","length","charByteLength","push","mod","__esModule","default","__importDefault","require$$0","STATUSES","WIP","SUCCESS","SUCCESS_CHUNKED","ERROR","poll_1","context","key","options","result","state","value","stringified","JSON","stringify","from","e","status","error","message","substring","shift","done","createPollResponse","poll","pollify_1","script","args","Promise","resolve","then","catch","err","stack","absolutizeUrl_1","url","baseUrl","URL","isAbsoluteUrl","isEncoded","decodeURI","absoluteUrl","href","isInlineFrame_1","frame","contentDocument","location","test","protocol","isAccessibleFrame_1","doc","Boolean","defaultView","frameElement","Object","defineProperty","dist","isAccessibleFrame","isInlineFrame","absolutizeUrl","pollify","chunkify","require$$1","require$$2","require$$3","require$$4","require$$5","window"],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/* @applitools/dom-snapshot@4.13.8 */
|
|
2
|
+
function t(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var e=function(){const t=function(t){return function(){var t={};function e(t,e=0){const n=t.charCodeAt(e);return n>=55296&&n<56320?1024*(n-55296)+(t.charCodeAt(e+1)-56320)+65536:56320<=n&&n<=57343?-1:n}var n=function(t,n){const r=[];let o=0;for(let u=0;u<t.length;++u){const c=e(t,u);let a=0;c>0&&(a=c<128?1:c<2048?2:c<65536?3:c<2097152?4:c<67108864?5:6),o+a>n?(r.push(u),o=a):o+=a}return r};const r=function(t){return t&&t.__esModule?t:{default:t}}(n),o="WIP",u="SUCCESS",c="SUCCESS_CHUNKED",a="ERROR";var s=function(t,e,n={}){const s=function(t,{chunkByteLength:e=0}={}){if(t){if(t.value){if(e){if(!t.chunks)try{const n=JSON.stringify(t.value);t.chunks=(0,r.default)(n,e),t.chunks.length>0&&(t.from=0,t.value=n)}catch(t){return{status:a,error:t.message}}if(t.from>=0)return{status:c,value:t.value.substring(t.from,t.from=t.chunks.shift()),done:!t.from}}return{status:u,value:t.value}}return t.error?{status:a,error:t.error}:{status:o}}return{status:a,error:"unexpected poll request received - cannot find state of current operation"}}((t=t||{})[e],n);return(s.status===u||s.status===a||s.status===c&&s.done)&&delete t[e],s};const l=s;var i=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessibleFrame=t.isInlineFrame=t.absolutizeUrl=p=t.poll=t.pollify=t.chunkify=void 0;const f=i(n);t.chunkify=f.default;const d=i((function(t,e,n){return r=>function(...o){return e[n]||(e[n]={},Promise.resolve().then((()=>t(...o))).then((t=>e[n].value=t)).catch((t=>e[n].error=t.message+"\nStack:"+t.stack))),l(e,n,r)}}));t.pollify=d.default;const h=i(s);var p=t.poll=h.default;const m=i((function(t,e){if(function(t){try{return new URL(t),!0}catch(t){return!1}}(t))return t;let n=!0;try{n=t!==decodeURI(t)}catch(t){n=!0}try{const r=new URL(t,e).href;return n?r:decodeURI(r)}catch(e){return n?t:decodeURI(t)}}));t.absolutizeUrl=m.default;const y=i((function(t){return t.contentDocument&&t.contentDocument.location&&!/^https?:$/.test(t.contentDocument.location.protocol)}));t.isInlineFrame=y.default;const v=i((function(t){try{const e=t.contentDocument;return Boolean(e&&e.defaultView&&e.defaultView.frameElement)}catch(t){return!1}}));return t.isAccessibleFrame=v.default,function(t){try{return JSON.stringify(p(window.__EYES__APPLITOOLS__,"domSnapshotResult",t))}catch(t){return JSON.stringify({status:"ERROR",error:t.message})}}}()};let e=!0;try{let n=document.createElement("iframe");n.setAttribute("data-applitools-sandbox",""),n.setAttribute("data-applitools-skip",""),document.head.appendChild(n);const r=window.crypto.getRandomValues(new Uint32Array(1))[0],o=n.contentDocument.createElement("script");o.textContent=`window['ctor-${r}'] = ${t.toString()};`,n.contentDocument.head.appendChild(o);const u=n.contentWindow[`ctor-${r}`];if("function"!=typeof u)throw new Error("Sandbox failed to extract function");return e=!1,u(document).apply(null,arguments).finally((()=>{n.remove()}))}catch(n){try{return t(document).apply(null,arguments)}catch(t){throw e?t:n}}},n=t(e);export{n as default};
|
|
3
|
+
//# sourceMappingURL=pollResultEs.js.map
|