@intuned/browser-dev 2.2.3-unify-sdks.20
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/.babelrc +21 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +39 -0
- package/LICENSE +43 -0
- package/dist/ai-extractors/AnthropicClient/index.js +23 -0
- package/dist/ai-extractors/export.d.js +5 -0
- package/dist/ai-extractors/export.d.ts +422 -0
- package/dist/ai-extractors/extractStructuredData.js +79 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/constants.js +7 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/errors.js +42 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingClaude.js +149 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingGoogle.js +37 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStructuredDataUsingOpenAi.js +144 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/extractStrucutredDataUsingAiInstance.js +123 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/index.js +55 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/isItemTableHeaderOrFooter.js +96 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/screenshotHelpers.js +55 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/types.js +5 -0
- package/dist/ai-extractors/extractionHelpers/extractStructuredDataUsingAi/utils.js +53 -0
- package/dist/ai-extractors/extractionHelpers/types.js +5 -0
- package/dist/ai-extractors/fileExtractors.js +176 -0
- package/dist/ai-extractors/index.js +31 -0
- package/dist/ai-extractors/jsonSchema.d.js +5 -0
- package/dist/ai-extractors/jsonSchema.d.ts +49 -0
- package/dist/ai-extractors/openAiClients/index.js +23 -0
- package/dist/ai-extractors/validators.js +239 -0
- package/dist/browser/ai/export.d.js +3 -0
- package/dist/browser/ai/export.d.ts +587 -0
- package/dist/browser/ai/extractMarkdown.js +15 -0
- package/dist/browser/ai/extractStructuredData.js +231 -0
- package/dist/browser/ai/extractStructuredDataUsingAi.js +140 -0
- package/dist/browser/ai/extractionHelpers/screenshotHelpers.js +55 -0
- package/dist/browser/ai/extractionHelpers/validateSchema.js +148 -0
- package/dist/browser/ai/index.d.ts +587 -0
- package/dist/browser/ai/index.js +19 -0
- package/dist/browser/ai/isPageLoaded.js +67 -0
- package/dist/browser/ai/prompt.js +39 -0
- package/dist/browser/ai/tests/testCheckAllTypesAreStrings.spec.js +143 -0
- package/dist/browser/ai/tests/testExtractStructuredData.spec.js +622 -0
- package/dist/browser/ai/tools/index.js +48 -0
- package/dist/browser/ai/types/errors.js +67 -0
- package/dist/browser/ai/types/models.js +45 -0
- package/dist/browser/ai/types/types.js +48 -0
- package/dist/browser/ai/validators.js +136 -0
- package/dist/common/Logger/index.js +60 -0
- package/dist/common/Logger/types.js +5 -0
- package/dist/common/SdkError.js +50 -0
- package/dist/common/aiModelsValidations.js +50 -0
- package/dist/common/browser_scripts.js +2596 -0
- package/dist/common/ensureBrowserScripts.js +17 -0
- package/dist/common/environmentVariables.js +16 -0
- package/dist/common/eventTracking/getAiTrackingHeaders.js +31 -0
- package/dist/common/eventTracking/getFileTrackingHeaders.js +23 -0
- package/dist/common/extendedTest.js +148 -0
- package/dist/common/extractionHelpers.js +19 -0
- package/dist/common/formatZodError.js +18 -0
- package/dist/common/fuzzySearch/fuzzySearch.test.js +250 -0
- package/dist/common/fuzzySearch/levenshtein-search.js +298 -0
- package/dist/common/fuzzySearch/utils.js +23 -0
- package/dist/common/getModelProvider.js +18 -0
- package/dist/common/getSimplifiedHtml.js +122 -0
- package/dist/common/hashObject.js +32 -0
- package/dist/common/html2markdown/convertElementToMarkdown.js +469 -0
- package/dist/common/html2markdown/index.js +19 -0
- package/dist/common/jwtTokenManager.js +18 -0
- package/dist/common/loadRuntime.js +16 -0
- package/dist/common/locatorHelpers.js +41 -0
- package/dist/common/matching/collectStrings.js +32 -0
- package/dist/common/matching/levenshtein.js +40 -0
- package/dist/common/matching/matching.js +317 -0
- package/dist/common/matching/types.js +1 -0
- package/dist/common/noEmpty.js +9 -0
- package/dist/common/saveSnapshotWithExamples.js +60 -0
- package/dist/common/tests/testEnsureBrowserScript.spec.js +31 -0
- package/dist/common/xpathMapping.js +107 -0
- package/dist/helpers/downloadFile.js +125 -0
- package/dist/helpers/export.d.js +1 -0
- package/dist/helpers/export.d.ts +1294 -0
- package/dist/helpers/extractMarkdown.js +35 -0
- package/dist/helpers/filterEmptyValues.js +54 -0
- package/dist/helpers/gotoUrl.js +93 -0
- package/dist/helpers/index.d.ts +1294 -0
- package/dist/helpers/index.js +115 -0
- package/dist/helpers/processDate.js +25 -0
- package/dist/helpers/resolveUrl.js +63 -0
- package/dist/helpers/sanitizeHtml.js +73 -0
- package/dist/helpers/saveFileToS3.js +46 -0
- package/dist/helpers/scrollToLoadContent.js +50 -0
- package/dist/helpers/tests/extendedTest.js +130 -0
- package/dist/helpers/tests/testDownloadFile.spec.js +197 -0
- package/dist/helpers/tests/testFilterEmptyValues.spec.js +151 -0
- package/dist/helpers/tests/testGoToUrl.spec.js +37 -0
- package/dist/helpers/tests/testIsPageLoaded.spec.js +285 -0
- package/dist/helpers/tests/testProcessDate.spec.js +13 -0
- package/dist/helpers/tests/testResolveUrl.spec.js +341 -0
- package/dist/helpers/tests/testSanitizeHtml.spec.js +330 -0
- package/dist/helpers/tests/testSimplifyHtml.spec.js +251 -0
- package/dist/helpers/tests/testValidateDataUsingSchema.spec.js +380 -0
- package/dist/helpers/tests/testWaitForDomSettled.spec.js +169 -0
- package/dist/helpers/tests/testWaitForNetworkIdle.spec.js +115 -0
- package/dist/helpers/types/Attachment.js +81 -0
- package/dist/helpers/types/CustomTypeRegistry.js +48 -0
- package/dist/helpers/types/RunEnvironment.js +18 -0
- package/dist/helpers/types/ValidationError.js +17 -0
- package/dist/helpers/types/index.js +51 -0
- package/dist/helpers/uploadFileToS3.js +153 -0
- package/dist/helpers/utils/getS3Client.js +21 -0
- package/dist/helpers/utils/index.js +73 -0
- package/dist/helpers/utils/isDownload.js +10 -0
- package/dist/helpers/utils/isGenerateCodeMode.js +9 -0
- package/dist/helpers/utils/isLocator.js +9 -0
- package/dist/helpers/utils/jwtTokenManager.js +18 -0
- package/dist/helpers/validateDataUsingSchema.js +119 -0
- package/dist/helpers/waitForDomSettled.js +182 -0
- package/dist/helpers/waitForNetworkIdle.js +191 -0
- package/dist/index.d.js +82 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +84 -0
- package/dist/intunedServices/ApiGateway/aiApiGateway.js +87 -0
- package/dist/intunedServices/ApiGateway/factory.js +13 -0
- package/dist/intunedServices/ApiGateway/providers/Anthropic.js +26 -0
- package/dist/intunedServices/ApiGateway/providers/Gemini.js +29 -0
- package/dist/intunedServices/ApiGateway/providers/OpenAI.js +29 -0
- package/dist/intunedServices/ApiGateway/tests/testApiGateway.spec.js +221 -0
- package/dist/intunedServices/ApiGateway/types.js +11 -0
- package/dist/intunedServices/cache/cache.js +61 -0
- package/dist/intunedServices/cache/index.js +12 -0
- package/dist/intunedServices/cache/tests/testCache.spec.js +117 -0
- package/dist/optimized-extractors/common/buildExamplesPrompt.js +12 -0
- package/dist/optimized-extractors/common/buildImagesFromPage.js +55 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingClaude.js +149 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingGoogle.js +37 -0
- package/dist/optimized-extractors/common/extractStructuredDataUsingOpenAi.js +145 -0
- package/dist/optimized-extractors/common/extractStrucutredDataUsingAiInstance.js +122 -0
- package/dist/optimized-extractors/common/findTableHeaders.js +175 -0
- package/dist/optimized-extractors/common/index.js +55 -0
- package/dist/optimized-extractors/common/isTableHeaderOrFooter.js +97 -0
- package/dist/optimized-extractors/common/matching/matching.js +212 -0
- package/dist/optimized-extractors/common/matching/matching.test.js +655 -0
- package/dist/optimized-extractors/common/matching/types.js +18 -0
- package/dist/optimized-extractors/common/matching/utils.js +184 -0
- package/dist/optimized-extractors/common/utils.js +58 -0
- package/dist/optimized-extractors/export.d.js +5 -0
- package/dist/optimized-extractors/export.d.ts +397 -0
- package/dist/optimized-extractors/extractArray.js +120 -0
- package/dist/optimized-extractors/extractObject.js +104 -0
- package/dist/optimized-extractors/index.d.ts +397 -0
- package/dist/optimized-extractors/index.js +31 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/dynamicListExtractor.spec.js +312 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/findSetOfXpathsToCreateAnArrayExtractor.test.js +22 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/getContainerElement.test.js +21 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/partOfSameArrayXpath.test.js +42 -0
- package/dist/optimized-extractors/listExtractionHelpers/__tests__/verifyThatAllXpathsArePartOfSameArray.test.js +9 -0
- package/dist/optimized-extractors/listExtractionHelpers/dynamicListExtractor.js +152 -0
- package/dist/optimized-extractors/listExtractionHelpers/errors.js +46 -0
- package/dist/optimized-extractors/listExtractionHelpers/getListMatches.js +14 -0
- package/dist/optimized-extractors/listExtractionHelpers/runAiExtraction.js +240 -0
- package/dist/optimized-extractors/listExtractionHelpers/typesAndSchema.js +5 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/extractPropertiesUsingGPTFromArray.js +277 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/extractStructuredListUsingAi.js +44 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getListContainerXpath.js +94 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getRelativeContainerXpathSelector.js +20 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/getSimplifiedHtmlPerListItem.js +21 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/tablesUtils.js +48 -0
- package/dist/optimized-extractors/listExtractionHelpers/utils/validateOptions.js +52 -0
- package/dist/optimized-extractors/models/anthropicModel.js +23 -0
- package/dist/optimized-extractors/models/openaiModel.js +23 -0
- package/dist/optimized-extractors/objectExtractionHelpers/AIExtractors.js +73 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/checksumUtils.test.js +103 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromLocator.spec.js +107 -0
- package/dist/optimized-extractors/objectExtractionHelpers/__tests__/testObjectExtractorFromPage.spec.js +107 -0
- package/dist/optimized-extractors/objectExtractionHelpers/calculateObjectExampleHash.js +28 -0
- package/dist/optimized-extractors/objectExtractionHelpers/captureSnapshot.js +26 -0
- package/dist/optimized-extractors/objectExtractionHelpers/checksumUtils.js +32 -0
- package/dist/optimized-extractors/objectExtractionHelpers/constants.js +7 -0
- package/dist/optimized-extractors/objectExtractionHelpers/dynamicObjectExtractor.js +106 -0
- package/dist/optimized-extractors/objectExtractionHelpers/errors.js +42 -0
- package/dist/optimized-extractors/objectExtractionHelpers/findDomMatches.js +54 -0
- package/dist/optimized-extractors/objectExtractionHelpers/getSimplifiedHtml.js +122 -0
- package/dist/optimized-extractors/objectExtractionHelpers/typesAndSchemas.js +5 -0
- package/dist/optimized-extractors/objectExtractionHelpers/validateDynamicObjectExtractorOptions.js +52 -0
- package/dist/optimized-extractors/types/aiModelsValidation.js +45 -0
- package/dist/optimized-extractors/types/errors.js +42 -0
- package/dist/optimized-extractors/types/jsonSchema.d.js +5 -0
- package/dist/optimized-extractors/types/jsonSchema.d.ts +50 -0
- package/dist/optimized-extractors/types/types.js +5 -0
- package/dist/optimized-extractors/validators.js +152 -0
- package/dist/vite-env.d.js +1 -0
- package/dist/vite-env.d.ts +9 -0
- package/docs.md +14 -0
- package/how-to-run-tests.md +10 -0
- package/intuned-runtime-setup.md +13 -0
- package/package.json +124 -0
- package/tsconfig.eslint.json +5 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "GatewayFactory", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _factory.GatewayFactory;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "compressStringSpaces", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _extractionHelpers.compressStringSpaces;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "ensureBrowserScripts", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _ensureBrowserScripts.ensureBrowserScripts;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "getS3Client", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _getS3Client.getS3Client;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "getSimplifiedHtml", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _getSimplifiedHtml.getSimplifiedHtml;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "isDownload", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _isDownload.isDownload;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "isGenerateCodeMode", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _isGenerateCodeMode.isGenerateCodeMode;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "isLocator", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _isLocator.isLocator;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "selectLocatorsUsingXpath", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _extractionHelpers.selectLocatorsUsingXpath;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "splitContainerIntoListLocators", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _extractionHelpers.splitContainerIntoListLocators;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
var _isLocator = require("./isLocator");
|
|
67
|
+
var _isGenerateCodeMode = require("./isGenerateCodeMode");
|
|
68
|
+
var _factory = require("../../intunedServices/ApiGateway/factory");
|
|
69
|
+
var _getS3Client = require("./getS3Client");
|
|
70
|
+
var _isDownload = require("./isDownload");
|
|
71
|
+
var _ensureBrowserScripts = require("../../common/ensureBrowserScripts");
|
|
72
|
+
var _extractionHelpers = require("../../common/extractionHelpers");
|
|
73
|
+
var _getSimplifiedHtml = require("../../common/getSimplifiedHtml");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isDownload = isDownload;
|
|
7
|
+
function isDownload(value) {
|
|
8
|
+
const anyValue = value;
|
|
9
|
+
return anyValue && typeof anyValue.delete === "function" && typeof anyValue.path === "function" && typeof anyValue.suggestedFilename === "function";
|
|
10
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "backendFunctionsTokenManager", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _jwtTokenManager.backendFunctionsTokenManager;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "callBackendFunctionWithToken", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _jwtTokenManager.callBackendFunctionWithToken;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _jwtTokenManager = require("@intuned/runtime/dist/common/jwtTokenManager");
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.cleanData = cleanData;
|
|
7
|
+
exports.validateDataUsingSchema = void 0;
|
|
8
|
+
var _ajv = _interopRequireDefault(require("ajv"));
|
|
9
|
+
var _types = require("./types");
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const ajv = new _ajv.default({
|
|
12
|
+
strict: false,
|
|
13
|
+
removeAdditional: false
|
|
14
|
+
});
|
|
15
|
+
ajv.addKeyword({
|
|
16
|
+
keyword: "x-custom-type",
|
|
17
|
+
schemaType: "string",
|
|
18
|
+
compile: () => () => true
|
|
19
|
+
});
|
|
20
|
+
const customTypeRegistry = new _types.CustomTypeRegistry();
|
|
21
|
+
function preprocessSchema(schema) {
|
|
22
|
+
if (typeof schema !== "object" || schema === null) {
|
|
23
|
+
return schema;
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(schema)) {
|
|
26
|
+
return schema.map(item => preprocessSchema(item));
|
|
27
|
+
}
|
|
28
|
+
const processedSchema = {
|
|
29
|
+
...schema
|
|
30
|
+
};
|
|
31
|
+
if (processedSchema.type && typeof processedSchema.type === "string") {
|
|
32
|
+
if (customTypeRegistry.isCustomType(processedSchema.type)) {
|
|
33
|
+
return {
|
|
34
|
+
type: "object",
|
|
35
|
+
additionalProperties: true,
|
|
36
|
+
"x-custom-type": processedSchema.type
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
for (const key in processedSchema) {
|
|
41
|
+
if (key === "properties" && typeof processedSchema[key] === "object") {
|
|
42
|
+
const newProperties = {};
|
|
43
|
+
for (const propKey in processedSchema[key]) {
|
|
44
|
+
newProperties[propKey] = preprocessSchema(processedSchema[key][propKey]);
|
|
45
|
+
}
|
|
46
|
+
processedSchema[key] = newProperties;
|
|
47
|
+
} else if (key === "items") {
|
|
48
|
+
processedSchema[key] = preprocessSchema(processedSchema[key]);
|
|
49
|
+
} else if (typeof processedSchema[key] === "object") {
|
|
50
|
+
processedSchema[key] = preprocessSchema(processedSchema[key]);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return processedSchema;
|
|
54
|
+
}
|
|
55
|
+
function validateCustomTypes(data, schema, path = "root") {
|
|
56
|
+
const errors = [];
|
|
57
|
+
if (typeof schema !== "object" || schema === null) {
|
|
58
|
+
return errors;
|
|
59
|
+
}
|
|
60
|
+
if (schema["x-custom-type"]) {
|
|
61
|
+
const customType = schema["x-custom-type"];
|
|
62
|
+
if (!customTypeRegistry.validate(customType, data)) {
|
|
63
|
+
errors.push(`${path} does not match custom type '${customType}'`);
|
|
64
|
+
}
|
|
65
|
+
return errors;
|
|
66
|
+
}
|
|
67
|
+
if (schema.type === "object" && schema.properties && typeof data === "object" && data !== null && !Array.isArray(data)) {
|
|
68
|
+
for (const [propKey, propSchema] of Object.entries(schema.properties)) {
|
|
69
|
+
if (Object.prototype.hasOwnProperty.call(data, propKey)) {
|
|
70
|
+
const propPath = path === "root" ? propKey : `${path}.${propKey}`;
|
|
71
|
+
errors.push(...validateCustomTypes(data[propKey], propSchema, propPath));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (schema.type === "array" && schema.items && Array.isArray(data)) {
|
|
76
|
+
data.forEach((item, index) => {
|
|
77
|
+
const itemPath = `${path}[${index}]`;
|
|
78
|
+
errors.push(...validateCustomTypes(item, schema.items, itemPath));
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
return errors;
|
|
82
|
+
}
|
|
83
|
+
function cleanData(data) {
|
|
84
|
+
if (Array.isArray(data)) {
|
|
85
|
+
return data.map(item => cleanData(item));
|
|
86
|
+
} else if (data !== null && typeof data === "object") {
|
|
87
|
+
const cleaned = {};
|
|
88
|
+
for (const [key, value] of Object.entries(data)) {
|
|
89
|
+
if (value !== "" && value !== null && value !== undefined) {
|
|
90
|
+
cleaned[key] = cleanData(value);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return cleaned;
|
|
94
|
+
}
|
|
95
|
+
return data;
|
|
96
|
+
}
|
|
97
|
+
const validateDataUsingSchema = async input => {
|
|
98
|
+
const {
|
|
99
|
+
data,
|
|
100
|
+
schema
|
|
101
|
+
} = input;
|
|
102
|
+
const cleanedData = cleanData(data);
|
|
103
|
+
const processedSchema = preprocessSchema(schema);
|
|
104
|
+
const validate = ajv.compile(processedSchema);
|
|
105
|
+
const valid = validate(cleanedData);
|
|
106
|
+
const errors = [];
|
|
107
|
+
if (!valid) {
|
|
108
|
+
var _validate$errors;
|
|
109
|
+
const schemaErrors = ((_validate$errors = validate.errors) === null || _validate$errors === void 0 ? void 0 : _validate$errors.map(err => `${err.instancePath || "root"} ${err.message}`).filter(error => !error.includes("x-custom-type"))) || [];
|
|
110
|
+
errors.push(...schemaErrors);
|
|
111
|
+
}
|
|
112
|
+
const customTypeErrors = validateCustomTypes(cleanedData, processedSchema);
|
|
113
|
+
errors.push(...customTypeErrors);
|
|
114
|
+
if (errors.length > 0) {
|
|
115
|
+
const errorMessage = errors.join(", ") || "Unknown validation error";
|
|
116
|
+
throw new _types.ValidationError(`Data validation failed: ${errorMessage}`, data);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
exports.validateDataUsingSchema = validateDataUsingSchema;
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.waitForDomSettled = waitForDomSettled;
|
|
7
|
+
var _locatorHelpers = require("../common/locatorHelpers");
|
|
8
|
+
function waitForDomSettled(funcOrOptions) {
|
|
9
|
+
if (funcOrOptions && typeof funcOrOptions === "object" && "source" in funcOrOptions) {
|
|
10
|
+
const {
|
|
11
|
+
source,
|
|
12
|
+
func,
|
|
13
|
+
settleDuration = 0.5,
|
|
14
|
+
timeoutS = 30.0
|
|
15
|
+
} = funcOrOptions;
|
|
16
|
+
if (func && source) {
|
|
17
|
+
return waitForDomSettledCore({
|
|
18
|
+
source,
|
|
19
|
+
func,
|
|
20
|
+
settleDuration,
|
|
21
|
+
timeoutS
|
|
22
|
+
});
|
|
23
|
+
} else if (source) {
|
|
24
|
+
return waitForDomSettledOriginal({
|
|
25
|
+
source,
|
|
26
|
+
settleDuration,
|
|
27
|
+
timeoutS
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
if (funcOrOptions && typeof funcOrOptions === "function") {
|
|
32
|
+
const func = funcOrOptions;
|
|
33
|
+
const wrapper = async (...args) => {
|
|
34
|
+
let sourceObj = null;
|
|
35
|
+
for (const arg of args) {
|
|
36
|
+
if ((0, _locatorHelpers.isPage)(arg) || arg && typeof arg === "object" && "page" in arg) {
|
|
37
|
+
sourceObj = arg;
|
|
38
|
+
break;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (!sourceObj) {
|
|
42
|
+
throw new Error("No Page or Locator object found in function arguments");
|
|
43
|
+
}
|
|
44
|
+
const funcWithArgs = async () => {
|
|
45
|
+
return await func(...args);
|
|
46
|
+
};
|
|
47
|
+
return await waitForDomSettledCore({
|
|
48
|
+
source: sourceObj,
|
|
49
|
+
func: funcWithArgs,
|
|
50
|
+
settleDuration: 0.5,
|
|
51
|
+
timeoutS: 30.0
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
return wrapper;
|
|
55
|
+
}
|
|
56
|
+
const options = funcOrOptions || {};
|
|
57
|
+
const {
|
|
58
|
+
settleDuration = 0.5,
|
|
59
|
+
timeoutS = 30.0
|
|
60
|
+
} = options;
|
|
61
|
+
return func => {
|
|
62
|
+
const wrapper = async (...args) => {
|
|
63
|
+
let sourceObj = null;
|
|
64
|
+
for (const arg of args) {
|
|
65
|
+
if ((0, _locatorHelpers.isPage)(arg) || arg && typeof arg === "object" && "page" in arg) {
|
|
66
|
+
sourceObj = arg;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (!sourceObj) {
|
|
71
|
+
throw new Error("No Page or Locator object found in function arguments");
|
|
72
|
+
}
|
|
73
|
+
const funcWithArgs = async () => {
|
|
74
|
+
return await func(...args);
|
|
75
|
+
};
|
|
76
|
+
return await waitForDomSettledCore({
|
|
77
|
+
source: sourceObj,
|
|
78
|
+
func: funcWithArgs,
|
|
79
|
+
settleDuration,
|
|
80
|
+
timeoutS
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
return wrapper;
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async function waitForDomSettledCore(options) {
|
|
87
|
+
const {
|
|
88
|
+
source,
|
|
89
|
+
func,
|
|
90
|
+
settleDuration = 0.5,
|
|
91
|
+
timeoutS = 30.0
|
|
92
|
+
} = options;
|
|
93
|
+
console.debug(`Source object: ${source}`);
|
|
94
|
+
const result = await func();
|
|
95
|
+
await waitForDomSettledOriginal({
|
|
96
|
+
source,
|
|
97
|
+
settleDuration,
|
|
98
|
+
timeoutS
|
|
99
|
+
});
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
async function waitForDomSettledOriginal(options) {
|
|
103
|
+
const {
|
|
104
|
+
source,
|
|
105
|
+
settleDuration = 0.5,
|
|
106
|
+
timeoutS = 30.0
|
|
107
|
+
} = options;
|
|
108
|
+
const settleDurationMs = Math.floor(settleDuration * 1000);
|
|
109
|
+
const timeoutMs = Math.floor(timeoutS * 1000);
|
|
110
|
+
let pageObj;
|
|
111
|
+
let elementHandle;
|
|
112
|
+
if (!(0, _locatorHelpers.isPage)(source)) {
|
|
113
|
+
pageObj = source.page();
|
|
114
|
+
const handle = await source.elementHandle();
|
|
115
|
+
if (!handle) {
|
|
116
|
+
console.warn("Could not get element handle from locator");
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
elementHandle = handle;
|
|
120
|
+
} else if ((0, _locatorHelpers.isPage)(source)) {
|
|
121
|
+
pageObj = source;
|
|
122
|
+
elementHandle = await pageObj.evaluateHandle("document.documentElement");
|
|
123
|
+
} else {
|
|
124
|
+
throw new Error("Invalid state");
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const result = await pageObj.evaluate(({
|
|
128
|
+
target,
|
|
129
|
+
settleDurationMs,
|
|
130
|
+
timeoutMs
|
|
131
|
+
}) => {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
if (!target) {
|
|
134
|
+
reject(new Error("Target element not found"));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
let mutationTimer;
|
|
138
|
+
let settled = false;
|
|
139
|
+
const observer = new MutationObserver(() => {
|
|
140
|
+
if (settled) return;
|
|
141
|
+
clearTimeout(mutationTimer);
|
|
142
|
+
mutationTimer = window.setTimeout(() => {
|
|
143
|
+
settled = true;
|
|
144
|
+
observer.disconnect();
|
|
145
|
+
clearTimeout(timeoutTimer);
|
|
146
|
+
resolve(true);
|
|
147
|
+
}, settleDurationMs);
|
|
148
|
+
});
|
|
149
|
+
const timeoutTimer = window.setTimeout(() => {
|
|
150
|
+
settled = true;
|
|
151
|
+
observer.disconnect();
|
|
152
|
+
clearTimeout(mutationTimer);
|
|
153
|
+
reject(new Error(`DOM timed out settling after ${timeoutMs} ms`));
|
|
154
|
+
}, timeoutMs);
|
|
155
|
+
observer.observe(target, {
|
|
156
|
+
childList: true,
|
|
157
|
+
subtree: true,
|
|
158
|
+
attributes: true,
|
|
159
|
+
characterData: true
|
|
160
|
+
});
|
|
161
|
+
mutationTimer = window.setTimeout(() => {
|
|
162
|
+
settled = true;
|
|
163
|
+
observer.disconnect();
|
|
164
|
+
clearTimeout(timeoutTimer);
|
|
165
|
+
resolve(true);
|
|
166
|
+
}, settleDurationMs);
|
|
167
|
+
});
|
|
168
|
+
}, {
|
|
169
|
+
target: elementHandle,
|
|
170
|
+
settleDurationMs,
|
|
171
|
+
timeoutMs
|
|
172
|
+
});
|
|
173
|
+
return result;
|
|
174
|
+
} catch (error) {
|
|
175
|
+
console.warn(`DOM settlement detection failed: ${error}`);
|
|
176
|
+
return false;
|
|
177
|
+
} finally {
|
|
178
|
+
if ((0, _locatorHelpers.isPage)(source) && elementHandle) {
|
|
179
|
+
await elementHandle.dispose();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.waitForNetworkIdle = waitForNetworkIdle;
|
|
7
|
+
var _locatorHelpers = require("../common/locatorHelpers");
|
|
8
|
+
function waitForNetworkIdle(funcOrOptions) {
|
|
9
|
+
if (funcOrOptions && typeof funcOrOptions === "object" && "page" in funcOrOptions) {
|
|
10
|
+
const {
|
|
11
|
+
page,
|
|
12
|
+
func,
|
|
13
|
+
timeoutInMs = 30000,
|
|
14
|
+
maxInflightRequests = 0
|
|
15
|
+
} = funcOrOptions;
|
|
16
|
+
if (!func) {
|
|
17
|
+
throw new Error("func parameter is required when page is provided");
|
|
18
|
+
}
|
|
19
|
+
if (!page) {
|
|
20
|
+
throw new Error("page parameter is required");
|
|
21
|
+
}
|
|
22
|
+
return waitForNetworkIdleCore({
|
|
23
|
+
page,
|
|
24
|
+
func,
|
|
25
|
+
timeoutInMs,
|
|
26
|
+
maxInflightRequests
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (funcOrOptions && typeof funcOrOptions === "function" && funcOrOptions.__self__ && funcOrOptions.__self__.page) {
|
|
30
|
+
const extractedPage = funcOrOptions.__self__.page;
|
|
31
|
+
if ((0, _locatorHelpers.isPage)(extractedPage)) {
|
|
32
|
+
return waitForNetworkIdleCore({
|
|
33
|
+
page: extractedPage,
|
|
34
|
+
func: funcOrOptions,
|
|
35
|
+
timeoutInMs: 30000,
|
|
36
|
+
maxInflightRequests: 0
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (funcOrOptions && typeof funcOrOptions === "function") {
|
|
41
|
+
const func = funcOrOptions;
|
|
42
|
+
const wrapper = async (...args) => {
|
|
43
|
+
let pageObj = null;
|
|
44
|
+
for (const arg of args) {
|
|
45
|
+
if ((0, _locatorHelpers.isPage)(arg)) {
|
|
46
|
+
pageObj = arg;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (!pageObj && args.length > 0 && typeof args[args.length - 1] === "object") {
|
|
51
|
+
const lastArg = args[args.length - 1];
|
|
52
|
+
if (lastArg && "page" in lastArg && (0, _locatorHelpers.isPage)(lastArg.page)) {
|
|
53
|
+
pageObj = lastArg.page;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
if (!pageObj) {
|
|
57
|
+
console.error("No Page object found in function arguments");
|
|
58
|
+
throw new Error("No Page object found in function arguments");
|
|
59
|
+
}
|
|
60
|
+
const funcWithArgs = async () => {
|
|
61
|
+
return await func(...args);
|
|
62
|
+
};
|
|
63
|
+
return await waitForNetworkIdleCore({
|
|
64
|
+
page: pageObj,
|
|
65
|
+
func: funcWithArgs,
|
|
66
|
+
timeoutInMs: 30000,
|
|
67
|
+
maxInflightRequests: 0
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
return wrapper;
|
|
71
|
+
}
|
|
72
|
+
const options = funcOrOptions || {};
|
|
73
|
+
const {
|
|
74
|
+
timeoutInMs = 30000,
|
|
75
|
+
maxInflightRequests = 0
|
|
76
|
+
} = options;
|
|
77
|
+
return func => {
|
|
78
|
+
const wrapper = async (...args) => {
|
|
79
|
+
let pageObj = null;
|
|
80
|
+
for (const arg of args) {
|
|
81
|
+
if ((0, _locatorHelpers.isPage)(arg)) {
|
|
82
|
+
pageObj = arg;
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (!pageObj && args.length > 0 && typeof args[args.length - 1] === "object") {
|
|
87
|
+
const lastArg = args[args.length - 1];
|
|
88
|
+
if (lastArg && "page" in lastArg && (0, _locatorHelpers.isPage)(lastArg.page)) {
|
|
89
|
+
pageObj = lastArg.page;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!pageObj) {
|
|
93
|
+
console.error("No Page object found in function arguments");
|
|
94
|
+
throw new Error("No Page object found in function arguments");
|
|
95
|
+
}
|
|
96
|
+
const funcWithArgs = async () => {
|
|
97
|
+
return await func(...args);
|
|
98
|
+
};
|
|
99
|
+
return await waitForNetworkIdleCore({
|
|
100
|
+
page: pageObj,
|
|
101
|
+
func: funcWithArgs,
|
|
102
|
+
timeoutInMs,
|
|
103
|
+
maxInflightRequests
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
return wrapper;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async function waitForNetworkIdleCore({
|
|
110
|
+
page,
|
|
111
|
+
func,
|
|
112
|
+
timeoutInMs = 30000,
|
|
113
|
+
maxInflightRequests = 0
|
|
114
|
+
}) {
|
|
115
|
+
console.debug(`Page object: ${page}`);
|
|
116
|
+
let networkSettledResolve = null;
|
|
117
|
+
let networkSettledPromise = new Promise(resolve => {
|
|
118
|
+
networkSettledResolve = resolve;
|
|
119
|
+
});
|
|
120
|
+
let isTimeout = false;
|
|
121
|
+
let requestCounter = 0;
|
|
122
|
+
let actionDone = false;
|
|
123
|
+
const pendingRequests = new Set();
|
|
124
|
+
const maybeSettle = async () => {
|
|
125
|
+
if (actionDone && requestCounter <= maxInflightRequests) {
|
|
126
|
+
var _networkSettledResolv;
|
|
127
|
+
(_networkSettledResolv = networkSettledResolve) === null || _networkSettledResolv === void 0 || _networkSettledResolv();
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const onRequest = request => {
|
|
131
|
+
requestCounter++;
|
|
132
|
+
pendingRequests.add(request);
|
|
133
|
+
};
|
|
134
|
+
const onRequestDone = async request => {
|
|
135
|
+
await new Promise(resolve => setTimeout(resolve, 0));
|
|
136
|
+
if (pendingRequests.has(request)) {
|
|
137
|
+
requestCounter--;
|
|
138
|
+
pendingRequests.delete(request);
|
|
139
|
+
await maybeSettle();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const handleRequestFinished = async req => {
|
|
143
|
+
await onRequestDone(req);
|
|
144
|
+
};
|
|
145
|
+
const handleRequestFailed = async req => {
|
|
146
|
+
await onRequestDone(req);
|
|
147
|
+
};
|
|
148
|
+
page.on("request", onRequest);
|
|
149
|
+
page.on("requestfinished", handleRequestFinished);
|
|
150
|
+
page.on("requestfailed", handleRequestFailed);
|
|
151
|
+
const timeoutPromise = new Promise(resolve => {
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
var _networkSettledResolv2;
|
|
154
|
+
console.log("waiting for network to settle timed out");
|
|
155
|
+
isTimeout = true;
|
|
156
|
+
(_networkSettledResolv2 = networkSettledResolve) === null || _networkSettledResolv2 === void 0 || _networkSettledResolv2();
|
|
157
|
+
resolve();
|
|
158
|
+
}, timeoutInMs);
|
|
159
|
+
});
|
|
160
|
+
try {
|
|
161
|
+
const result = await func();
|
|
162
|
+
actionDone = true;
|
|
163
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
164
|
+
await maybeSettle();
|
|
165
|
+
console.log("-- Start waiting for network to settle... --");
|
|
166
|
+
let shouldContinue = true;
|
|
167
|
+
while (shouldContinue) {
|
|
168
|
+
console.log(`waiting for network to settle, ${requestCounter} requests pending`);
|
|
169
|
+
await Promise.race([networkSettledPromise, timeoutPromise]);
|
|
170
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
171
|
+
if (actionDone && requestCounter <= maxInflightRequests || isTimeout) {
|
|
172
|
+
if (isTimeout) {
|
|
173
|
+
console.log("Exiting due to timeout, network did not settle");
|
|
174
|
+
} else {
|
|
175
|
+
console.log("network settled, no pending requests");
|
|
176
|
+
}
|
|
177
|
+
shouldContinue = false;
|
|
178
|
+
} else {
|
|
179
|
+
networkSettledPromise = new Promise(resolve => {
|
|
180
|
+
networkSettledResolve = resolve;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
console.log("-- Finished waiting for network to settle --");
|
|
185
|
+
return result;
|
|
186
|
+
} finally {
|
|
187
|
+
page.off("request", onRequest);
|
|
188
|
+
page.off("requestfinished", handleRequestFinished);
|
|
189
|
+
page.off("requestfailed", handleRequestFailed);
|
|
190
|
+
}
|
|
191
|
+
}
|
package/dist/index.d.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "downloadFile", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _downloadFile.downloadFile;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "filterEmptyValues", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _filterEmptyValues.filterEmptyValues;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "goToUrl", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _gotoUrl.goToUrl;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "processDate", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _processDate.processDate;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
Object.defineProperty(exports, "resolveUrl", {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return _resolveUrl.resolveUrl;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
Object.defineProperty(exports, "sanitizeHtml", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
get: function () {
|
|
39
|
+
return _sanitizeHtml.sanitizeHtml;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, "saveFileToS3", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () {
|
|
45
|
+
return _saveFileToS.saveFileToS3;
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
Object.defineProperty(exports, "uploadFileToS3", {
|
|
49
|
+
enumerable: true,
|
|
50
|
+
get: function () {
|
|
51
|
+
return _uploadFileToS.uploadFileToS3;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
Object.defineProperty(exports, "validateDataUsingSchema", {
|
|
55
|
+
enumerable: true,
|
|
56
|
+
get: function () {
|
|
57
|
+
return _validateDataUsingSchema.validateDataUsingSchema;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
Object.defineProperty(exports, "waitForDomSettled", {
|
|
61
|
+
enumerable: true,
|
|
62
|
+
get: function () {
|
|
63
|
+
return _waitForDomSettled.waitForDomSettled;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
Object.defineProperty(exports, "waitForNetworkIdle", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _waitForNetworkIdle.waitForNetworkIdle;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
var _sanitizeHtml = require("./helpers/sanitizeHtml");
|
|
73
|
+
var _downloadFile = require("./helpers/downloadFile");
|
|
74
|
+
var _saveFileToS = require("./helpers/saveFileToS3");
|
|
75
|
+
var _filterEmptyValues = require("./helpers/filterEmptyValues");
|
|
76
|
+
var _gotoUrl = require("./helpers/gotoUrl");
|
|
77
|
+
var _processDate = require("./helpers/processDate");
|
|
78
|
+
var _resolveUrl = require("./helpers/resolveUrl");
|
|
79
|
+
var _uploadFileToS = require("./helpers/uploadFileToS3");
|
|
80
|
+
var _validateDataUsingSchema = require("./helpers/validateDataUsingSchema");
|
|
81
|
+
var _waitForDomSettled = require("./helpers/waitForDomSettled");
|
|
82
|
+
var _waitForNetworkIdle = require("./helpers/waitForNetworkIdle");
|