diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImpl.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImpl.java
index 4e059e97b0..1753357a3c 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImpl.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImpl.java
@@ -21,6 +21,7 @@
import java.util.Map;
import java.util.Optional;
+import org.apache.commons.lang3.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.Default;
@@ -72,12 +73,23 @@ public Integer getMaxItems() {
@Override
public Type getType() {
- // file upload does not work for type string in core component, hence default it to file
- if (!isMultiple()) {
- return Type.FILE;
- } else {
- return Type.FILE_ARRAY;
+ Type superType = super.getType();
+ if (superType == null || StringUtils.isBlank(typeJcr) || superType == Type.FILE) {
+ return isMultiple() ? Type.FILE_ARRAY : Type.FILE;
}
+ if (isMultiple() && superType == Type.STRING) {
+ return Type.STRING_ARRAY;
+ }
+ return superType;
+ }
+
+ @Override
+ public String getFormat() {
+ Type type = getType();
+ if (type == Type.STRING || type == Type.STRING_ARRAY) {
+ return "data-url";
+ }
+ return null;
}
@Override
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FileConstraint.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FileConstraint.java
index 68e87b9150..9b53a9632c 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FileConstraint.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/FileConstraint.java
@@ -21,6 +21,8 @@
import org.osgi.annotation.versioning.ProviderType;
+import com.fasterxml.jackson.annotation.JsonInclude;
+
/**
* Interface for constraints applicable to file attachments
*
@@ -54,4 +56,15 @@ default String getMaxFileSize() {
default List getAccept() {
return DEFAULT_ACCEPT;
}
+
+ /**
+ * The constraint is
+ * applicable for file attachment field. If the type is {@code String}, the format will always be {@code data-url}.
+ *
+ * @since com.adobe.cq.forms.core.components.models.form 5.7.4
+ */
+ @JsonInclude(JsonInclude.Include.NON_NULL)
+ default String getFormat() {
+ return null;
+ }
}
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
index c06f9a92e7..b0e57e0089 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/package-info.java
@@ -35,7 +35,7 @@
*
*/
-@Version("5.6.4")
+@Version("5.7.4")
package com.adobe.cq.forms.core.components.models.form;
import org.osgi.annotation.versioning.Version;
diff --git a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImplTest.java b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImplTest.java
index 3de57ce01e..7a0a812b69 100644
--- a/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImplTest.java
+++ b/bundles/af-core/src/test/java/com/adobe/cq/forms/core/components/internal/models/v1/form/FileInputImplTest.java
@@ -59,6 +59,7 @@ public class FileInputImplTest {
private static final String PATH_FILEINPUT_DATALAYER = CONTENT_ROOT + "/fileinput-datalayer";
private static final String PATH_MULTISELECT_FILEINPUT = CONTENT_ROOT + "/multiselect-fileinput";
private static final String PATH_MULTISELECT_FILEINPUT_WITHNOTYPE = CONTENT_ROOT + "/multiselect-fileinput-withNoType";
+ private static final String PATH_MULTISELECT_FILEINPUT_WITH_TYPE = CONTENT_ROOT + "/fileInput-withType";
private static final String PATH_FILEINPUT_WITHOUT_FIELDTYPE = CONTENT_ROOT + "/fileinput-without-fieldtype";
private final AemContext context = FormsCoreComponentTestContext.newAemContext();
@@ -86,7 +87,13 @@ void testFieldType() {
@Test
void testType() {
FileInput fileInput = Utils.getComponentUnderTest(PATH_MULTISELECT_FILEINPUT_WITHNOTYPE, FileInput.class, context);
- assertEquals(fileInput.getType(), fileInput.getType());
+ assertEquals(BaseConstraint.Type.FILE_ARRAY, fileInput.getType());
+ }
+
+ @Test
+ void testStringType() {
+ FileInput fileInput = Utils.getComponentUnderTest(PATH_MULTISELECT_FILEINPUT_WITH_TYPE, FileInput.class, context);
+ assertEquals(BaseConstraint.Type.STRING_ARRAY, fileInput.getType());
}
@Test
diff --git a/bundles/af-core/src/test/resources/form/fileinput/test-content.json b/bundles/af-core/src/test/resources/form/fileinput/test-content.json
index e40420b116..671eb298b8 100644
--- a/bundles/af-core/src/test/resources/form/fileinput/test-content.json
+++ b/bundles/af-core/src/test/resources/form/fileinput/test-content.json
@@ -102,6 +102,26 @@
"maxFileSize" : "4096",
"accept" : ["text/*", "application/pdf"]
},
+ "fileInput-withType": {
+ "jcr:primaryType": "nt:unstructured",
+ "sling:resourceType" : "core/fd/components/form/fileinput/v1/fileinput",
+ "fieldType": "file-input",
+ "name" : "abc",
+ "jcr:title" : "def",
+ "description" : "dummy",
+ "visible" : false,
+ "assistPriority" : "custom",
+ "dataRef" : "a.b",
+ "custom" : "Custom screen reader text",
+ "typeMessage" : "incorrect type",
+ "tooltip": "test-short-description",
+ "multiSelection" : true,
+ "type" : "string",
+ "minItems" : 1,
+ "maxItems" : 2,
+ "maxFileSize" : "4096",
+ "accept" : ["text/*", "application/pdf"]
+ },
"fileinput-without-fieldtype": {
"jcr:primaryType": "nt:unstructured",
"sling:resourceType" : "core/fd/components/form/fileinput/v1/fileinput",
diff --git a/it/apps/src/main/content/jcr_root/apps/forms-core-components-it/components/page-fileinputv3/customfooterlibs.html b/it/apps/src/main/content/jcr_root/apps/forms-core-components-it/components/page-fileinputv3/customfooterlibs.html
index 4e75eebfc8..303e22ea40 100644
--- a/it/apps/src/main/content/jcr_root/apps/forms-core-components-it/components/page-fileinputv3/customfooterlibs.html
+++ b/it/apps/src/main/content/jcr_root/apps/forms-core-components-it/components/page-fileinputv3/customfooterlibs.html
@@ -20,7 +20,7 @@
-
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/.content.xml
new file mode 100755
index 0000000000..7256712059
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/.content.xml
@@ -0,0 +1,7 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
new file mode 100755
index 0000000000..d69958e530
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/.content.xml
new file mode 100644
index 0000000000..bbf62ed22c
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/.content.xml
@@ -0,0 +1,5 @@
+
+
diff --git a/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
new file mode 100644
index 0000000000..7d46ae8c07
--- /dev/null
+++ b/it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/fileinput/v1/fileinput/_cq_dialog/.content.xml b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/fileinput/v1/fileinput/_cq_dialog/.content.xml
index 2c7a32c4ac..69b140689d 100644
--- a/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/fileinput/v1/fileinput/_cq_dialog/.content.xml
+++ b/ui.af.apps/src/main/content/jcr_root/apps/core/fd/components/form/fileinput/v1/fileinput/_cq_dialog/.content.xml
@@ -63,6 +63,21 @@
fieldLabel="Button title"
name="./buttonText">
+
+
+
+
+
+
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index 3fba3bd590..4d25a3c47d 100644
--- a/ui.frontend/package-lock.json
+++ b/ui.frontend/package-lock.json
@@ -9,9 +9,9 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
- "@aemforms/af-core": "^0.22.104",
+ "@aemforms/af-core": "^0.22.109",
"@aemforms/af-custom-functions": "1.0.10",
- "@aemforms/af-formatters": "^0.22.104"
+ "@aemforms/af-formatters": "^0.22.109"
},
"devDependencies": {
"@babel/preset-env": "^7.18.2",
@@ -61,12 +61,12 @@
}
},
"node_modules/@aemforms/af-core": {
- "version": "0.22.105",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.105.tgz",
- "integrity": "sha512-epfqV/bUq31h0RwHYJpfgJ6HzPkGTxbiUnqJmZAPXO7QgFzJhbpu/XFDz7pTJfRCBgNhGbOi/30nR9IPeZBUYg==",
+ "version": "0.22.109",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.109.tgz",
+ "integrity": "sha512-vJv7dxJrx0Ta0KdL6/hC/RytMzJyQwHRra52V3VQoIa8O9r6/zfNovOYbhlXhGj2iF996UasrGrem+f9WuolvA==",
"dependencies": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.105"
+ "@aemforms/af-formatters": "^0.22.109"
}
},
"node_modules/@aemforms/af-custom-functions": {
@@ -75,9 +75,9 @@
"integrity": "sha512-n3w9tHkJOI5ISVYAK2cCi5k/oTu3rGgByDmMIgOH1+Ry4mL9nM3cxBTKEkPF8Y8JiKF1aUHIKM+MeP6u5PiiUA=="
},
"node_modules/@aemforms/af-formatters": {
- "version": "0.22.105",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.105.tgz",
- "integrity": "sha512-hB61dp6ZtpX4MyVCj/vKlrWsT1GFQxmFU+KbnS33FuXjFDdrQv4lJF4l83xIs0zAkMU4QBf1i73CpuYUSB8e0w=="
+ "version": "0.22.109",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.109.tgz",
+ "integrity": "sha512-WG4JiC1TDfg/5KLQyGziOKscYJ0mD8JgPzXYw7ZqpMAobgCEwKRSfu2Bf+Wr9v13ASigS0KhLssxSZIfOX/QJA=="
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
@@ -11076,12 +11076,12 @@
"integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA=="
},
"@aemforms/af-core": {
- "version": "0.22.105",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.105.tgz",
- "integrity": "sha512-epfqV/bUq31h0RwHYJpfgJ6HzPkGTxbiUnqJmZAPXO7QgFzJhbpu/XFDz7pTJfRCBgNhGbOi/30nR9IPeZBUYg==",
+ "version": "0.22.109",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.109.tgz",
+ "integrity": "sha512-vJv7dxJrx0Ta0KdL6/hC/RytMzJyQwHRra52V3VQoIa8O9r6/zfNovOYbhlXhGj2iF996UasrGrem+f9WuolvA==",
"requires": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.105"
+ "@aemforms/af-formatters": "^0.22.109"
}
},
"@aemforms/af-custom-functions": {
@@ -11090,9 +11090,9 @@
"integrity": "sha512-n3w9tHkJOI5ISVYAK2cCi5k/oTu3rGgByDmMIgOH1+Ry4mL9nM3cxBTKEkPF8Y8JiKF1aUHIKM+MeP6u5PiiUA=="
},
"@aemforms/af-formatters": {
- "version": "0.22.105",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.105.tgz",
- "integrity": "sha512-hB61dp6ZtpX4MyVCj/vKlrWsT1GFQxmFU+KbnS33FuXjFDdrQv4lJF4l83xIs0zAkMU4QBf1i73CpuYUSB8e0w=="
+ "version": "0.22.109",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.109.tgz",
+ "integrity": "sha512-WG4JiC1TDfg/5KLQyGziOKscYJ0mD8JgPzXYw7ZqpMAobgCEwKRSfu2Bf+Wr9v13ASigS0KhLssxSZIfOX/QJA=="
},
"@ampproject/remapping": {
"version": "2.2.1",
diff --git a/ui.frontend/package.json b/ui.frontend/package.json
index 3ed09dfea5..68ac54f75c 100644
--- a/ui.frontend/package.json
+++ b/ui.frontend/package.json
@@ -23,8 +23,8 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@aemforms/af-core": "^0.22.104",
- "@aemforms/af-formatters": "^0.22.104",
+ "@aemforms/af-core": "^0.22.109",
+ "@aemforms/af-formatters": "^0.22.109",
"@aemforms/af-custom-functions": "1.0.10"
}
}
diff --git a/ui.frontend/src/GuideBridge.js b/ui.frontend/src/GuideBridge.js
index 105131c4d4..694e8a09db 100644
--- a/ui.frontend/src/GuideBridge.js
+++ b/ui.frontend/src/GuideBridge.js
@@ -17,6 +17,7 @@
import {Constants} from "./constants.js";
import Response from "./Response.js";
import AfFormData from "./FormData.js";
+import {readAttachments} from "@aemforms/af-core";
/**
* The GuideBridge class represents the bridge between an adaptive form and JavaScript APIs.
@@ -118,16 +119,17 @@ class GuideBridge {
if (!formModel) {
throw new Error("formModel is not defined");
}
- let attachmentAsObj = formModel.getState().attachments;
- let attachmentAsArray = Object.keys(attachmentAsObj).flatMap((key) => attachmentAsObj[key]);
- let formData = new AfFormData({
- "data": JSON.stringify(formModel.exportData()),
- "attachments": attachmentAsArray
+ readAttachments(formModel).then(attachmentAsObj => {
+ let attachmentAsArray = Object.keys(attachmentAsObj).flatMap((key) => attachmentAsObj[key]);
+ let formData = new AfFormData({
+ "data": JSON.stringify(formModel.exportData()),
+ "attachments": attachmentAsArray
+ });
+ let resultObject = new Response({"data": formData});
+ if (options && typeof options.success === 'function') {
+ options.success(resultObject);
+ }
});
- let resultObject = new Response({"data": formData});
- if (options && typeof options.success === 'function') {
- options.success(resultObject);
- }
}
diff --git a/ui.frontend/src/index.js b/ui.frontend/src/index.js
index 6d625af2bf..8ac52985ff 100644
--- a/ui.frontend/src/index.js
+++ b/ui.frontend/src/index.js
@@ -15,7 +15,7 @@
******************************************************************************/
import Utils from "./utils.js";
import LanguageUtils from "./LanguageUtils.js";
-import {createFormInstance, FileObject, extractFileInfo, Click, Change, Submit, Save, Blur, AddItem, RemoveItem, CustomEvent, UIChange} from "@aemforms/af-core";
+import {createFormInstance, FileObject, extractFileInfo, readAttachments, Click, Change, Submit, Save, Blur, AddItem, RemoveItem, CustomEvent, UIChange} from "@aemforms/af-core";
import {FormField, FormContainer, FormFieldBase, FormPanel, FormTabs, FormFileInput, FormOptionFieldBase, FormCheckBox, FormFileInputWidgetBase, FormFileInputWidget} from "./view/index.js";
import {Constants} from "./constants.js";
import GuideBridge from "./GuideBridge.js";
@@ -69,7 +69,7 @@ const Formatters = {
* @property {function} extractFileInfo - The function for extracting file information.
*/
const FileAttachmentUtils = {
- FileObject, extractFileInfo
+ FileObject, extractFileInfo, readAttachments
};
/**
diff --git a/ui.frontend/src/view/FormFileInputWidgetBase.js b/ui.frontend/src/view/FormFileInputWidgetBase.js
index 370d179432..2086b2ad43 100644
--- a/ui.frontend/src/view/FormFileInputWidgetBase.js
+++ b/ui.frontend/src/view/FormFileInputWidgetBase.js
@@ -167,7 +167,7 @@ class FormFileInputWidgetBase {
if(typeof elem.dataset.key !== "undefined")
fileUrl = elem.dataset.key;
- if(fileUrl) {
+ if(fileUrl && fileUrl !== "[object Blob]") {
//prepend context path if not already appended
if (!(fileUrl.lastIndexOf(this.options.contextPath, 0) === 0)) {
fileUrl = this.options.contextPath + fileUrl;
diff --git a/ui.tests/test-module/package-lock.json b/ui.tests/test-module/package-lock.json
index 5b19bb8e36..99e592a391 100644
--- a/ui.tests/test-module/package-lock.json
+++ b/ui.tests/test-module/package-lock.json
@@ -11,8 +11,9 @@
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.2",
"@cypress/code-coverage": "^3.12.45",
+ "@jimp/types": "^1.6.0",
"async": "^3.2.4",
- "cypress": "^13.13.2",
+ "cypress": "^13.15.0",
"cypress-circleci-reporter": "0.2.0",
"cypress-iframe": "1.0.1",
"cypress-log-to-output": "1.1.2",
@@ -2152,9 +2153,9 @@
}
},
"node_modules/@cypress/request": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
- "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz",
+ "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==",
"dev": true,
"dependencies": {
"aws-sign2": "~0.7.0",
@@ -2163,14 +2164,14 @@
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "http-signature": "~1.3.6",
+ "form-data": "~4.0.0",
+ "http-signature": "~1.4.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"performance-now": "^2.1.0",
- "qs": "6.10.4",
+ "qs": "6.13.0",
"safe-buffer": "^5.1.2",
"tough-cookie": "^4.1.3",
"tunnel-agent": "^0.6.0",
@@ -2285,25 +2286,31 @@
"integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
"dev": true,
"dependencies": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "bmp-js": "0.1.0",
- "core-js": "3.8.3"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/bmp/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@jimp/bmp/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "node_modules/@jimp/bmp/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/@jimp/core": {
@@ -2373,25 +2380,31 @@
"integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
"dev": true,
"dependencies": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "omggif": "1.0.10"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/gif/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@jimp/gif/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "node_modules/@jimp/gif/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/@jimp/jpeg": {
@@ -2400,25 +2413,31 @@
"integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
"dev": true,
"dependencies": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "jpeg-js": "0.3.7"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/jpeg/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@jimp/jpeg/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "node_modules/@jimp/jpeg/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/@jimp/plugin-blit": {
@@ -3022,25 +3041,31 @@
"integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
"dev": true,
"dependencies": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "pngjs": "3.4.0"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/png/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@jimp/png/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "node_modules/@jimp/png/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/@jimp/tiff": {
@@ -3049,57 +3074,44 @@
"integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
"dev": true,
"dependencies": {
- "@babel/runtime": "7.12.13",
- "core-js": "3.8.3",
- "utif": "2.0.1"
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
}
},
"node_modules/@jimp/tiff/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@jimp/tiff/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "node_modules/@jimp/tiff/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
},
"node_modules/@jimp/types": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
- "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
- "dev": true,
- "dependencies": {
- "@babel/runtime": "7.12.13",
- "@jimp/bmp": "0.10.3",
- "@jimp/gif": "0.10.3",
- "@jimp/jpeg": "0.10.3",
- "@jimp/png": "0.10.3",
- "@jimp/tiff": "0.10.3",
- "core-js": "3.8.3",
- "timm": "1.7.1"
- }
- },
- "node_modules/@jimp/types/node_modules/@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz",
+ "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==",
"dev": true,
"dependencies": {
- "regenerator-runtime": "0.13.7"
+ "zod": "^3.23.8"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/@jimp/types/node_modules/core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
- "dev": true
- },
"node_modules/@jimp/utils": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.10.3.tgz",
@@ -3638,9 +3650,9 @@
}
},
"node_modules/aws4": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz",
- "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
+ "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
"dev": true
},
"node_modules/babel-plugin-add-module-exports": {
@@ -4181,7 +4193,7 @@
"node_modules/bmp-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
- "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==",
"dev": true
},
"node_modules/bn.js": {
@@ -5010,6 +5022,17 @@
"node": ">=0.10.0"
}
},
+ "node_modules/core-js": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
"node_modules/core-js-compat": {
"version": "3.38.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz",
@@ -5109,13 +5132,13 @@
}
},
"node_modules/cypress": {
- "version": "13.13.2",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.2.tgz",
- "integrity": "sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==",
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.0.tgz",
+ "integrity": "sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
- "@cypress/request": "^3.0.1",
+ "@cypress/request": "^3.0.4",
"@cypress/xvfb": "^1.2.4",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
@@ -6503,17 +6526,17 @@
}
},
"node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"dependencies": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
- "node": ">= 0.12"
+ "node": ">= 6"
}
},
"node_modules/fragment-cache": {
@@ -7073,14 +7096,14 @@
}
},
"node_modules/http-signature": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
- "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz",
+ "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==",
"dev": true,
"dependencies": {
"assert-plus": "^1.0.0",
"jsprim": "^2.0.2",
- "sshpk": "^1.14.1"
+ "sshpk": "^1.18.0"
},
"engines": {
"node": ">=0.10"
@@ -7705,6 +7728,25 @@
"regenerator-runtime": "0.13.7"
}
},
+ "node_modules/jimp/node_modules/@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "dev": true,
+ "dependencies": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.10.3",
+ "@jimp/gif": "^0.10.3",
+ "@jimp/jpeg": "^0.10.3",
+ "@jimp/png": "^0.10.3",
+ "@jimp/tiff": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ },
+ "peerDependencies": {
+ "@jimp/custom": ">=0.3.5"
+ }
+ },
"node_modules/jimp/node_modules/core-js": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
@@ -7712,9 +7754,9 @@
"dev": true
},
"node_modules/jpeg-js": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.0.tgz",
- "integrity": "sha512-960VHmtN1vTpasX/1LupLohdP5odwAT7oK/VSm6mW0M58LbrBnowLAPWAZhWGhDAGjzbMnPXZxzB/QYgBwkN0w==",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==",
"dev": true
},
"node_modules/js-base64": {
@@ -9439,12 +9481,12 @@
"dev": true
},
"node_modules/qs": {
- "version": "6.10.4",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
- "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dev": true,
"dependencies": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
},
"engines": {
"node": ">=0.6"
@@ -11298,7 +11340,7 @@
"integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
"dev": true,
"dependencies": {
- "pako": "1.0.11"
+ "pako": "^1.0.5"
}
},
"node_modules/util": {
@@ -11756,6 +11798,15 @@
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
"dev": true
+ },
+ "node_modules/zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+ "dev": true,
+ "funding": {
+ "url": "https://github.com/sponsors/colinhacks"
+ }
}
},
"dependencies": {
@@ -13234,9 +13285,9 @@
}
},
"@cypress/request": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz",
- "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.5.tgz",
+ "integrity": "sha512-v+XHd9XmWbufxF1/bTaVm2yhbxY+TB4YtWRqF2zaXBlDNMkls34KiATz0AVDLavL3iB6bQk9/7n3oY1EoLSWGA==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
@@ -13245,14 +13296,14 @@
"combined-stream": "~1.0.6",
"extend": "~3.0.2",
"forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "http-signature": "~1.3.6",
+ "form-data": "~4.0.0",
+ "http-signature": "~1.4.0",
"is-typedarray": "~1.0.0",
"isstream": "~0.1.2",
"json-stringify-safe": "~5.0.1",
"mime-types": "~2.1.19",
"performance-now": "^2.1.0",
- "qs": "6.10.4",
+ "qs": "6.13.0",
"safe-buffer": "^5.1.2",
"tough-cookie": "^4.1.3",
"tunnel-agent": "^0.6.0",
@@ -13347,25 +13398,25 @@
"integrity": "sha512-keMOc5woiDmONXsB/6aXLR4Z5Q+v8lFq3EY2rcj2FmstbDMhRuGbmcBxlEgOqfRjwvtf/wOtJ3Of37oAWtVfLg==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "bmp-js": "0.1.0",
- "core-js": "3.8.3"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "bmp-js": "^0.1.0",
+ "core-js": "^3.4.1"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"requires": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
}
},
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
}
}
@@ -13441,25 +13492,25 @@
"integrity": "sha512-vjlRodSfz1CrUvvrnUuD/DsLK1GHB/yDZXHthVdZu23zYJIW7/WrIiD1IgQ5wOMV7NocfrvPn2iqUfBP81/WWA==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "omggif": "1.0.10"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "omggif": "^1.0.9"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"requires": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
}
},
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
}
}
@@ -13470,25 +13521,25 @@
"integrity": "sha512-AAANwgUZOt6f6P7LZxY9lyJ9xclqutYJlsxt3JbriXUGJgrrFAIkcKcqv1nObgmQASSAQKYaMV9KdHjMlWFKlQ==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "jpeg-js": "0.3.7"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "jpeg-js": "^0.3.4"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"requires": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
}
},
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
}
}
@@ -14138,25 +14189,25 @@
"integrity": "sha512-YKqk/dkl+nGZxSYIDQrqhmaP8tC3IK8H7dFPnnzFVvbhDnyYunqBZZO3SaZUKTichClRw8k/CjBhbc+hifSGWg==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "@jimp/utils": "0.10.3",
- "core-js": "3.8.3",
- "pngjs": "3.4.0"
+ "@babel/runtime": "^7.7.2",
+ "@jimp/utils": "^0.10.3",
+ "core-js": "^3.4.1",
+ "pngjs": "^3.3.3"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"requires": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
}
},
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
}
}
@@ -14167,59 +14218,35 @@
"integrity": "sha512-7EsJzZ5Y/EtinkBGuwX3Bi4S+zgbKouxjt9c82VJTRJOQgLWsE/RHqcyRCOQBhHAZ9QexYmDz34medfLKdoX0g==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "core-js": "3.8.3",
- "utif": "2.0.1"
+ "@babel/runtime": "^7.7.2",
+ "core-js": "^3.4.1",
+ "utif": "^2.0.1"
},
"dependencies": {
"@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
+ "version": "7.25.6",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
+ "integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
"dev": true,
"requires": {
- "regenerator-runtime": "0.13.7"
+ "regenerator-runtime": "^0.14.0"
}
},
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
+ "regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"dev": true
}
}
},
"@jimp/types": {
- "version": "0.10.3",
- "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
- "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz",
+ "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==",
"dev": true,
"requires": {
- "@babel/runtime": "7.12.13",
- "@jimp/bmp": "0.10.3",
- "@jimp/gif": "0.10.3",
- "@jimp/jpeg": "0.10.3",
- "@jimp/png": "0.10.3",
- "@jimp/tiff": "0.10.3",
- "core-js": "3.8.3",
- "timm": "1.7.1"
- },
- "dependencies": {
- "@babel/runtime": {
- "version": "7.12.13",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.13.tgz",
- "integrity": "sha512-8+3UMPBrjFa/6TtKi/7sehPKqfAm4g6K+YQjyyFOLUTxzOngcRZTlAVY8sc2CORJYqdHQY8gRPHmn+qo15rCBw==",
- "dev": true,
- "requires": {
- "regenerator-runtime": "0.13.7"
- }
- },
- "core-js": {
- "version": "3.8.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
- "integrity": "sha512-KPYXeVZYemC2TkNEkX/01I+7yd+nX3KddKwZ1Ww7SKWdI2wQprSgLmrTddT8nw92AjEklTsPBoSdQBhbI1bQ6Q==",
- "dev": true
- }
+ "zod": "^3.23.8"
}
},
"@jimp/utils": {
@@ -14664,9 +14691,9 @@
"dev": true
},
"aws4": {
- "version": "1.13.1",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz",
- "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==",
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz",
+ "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==",
"dev": true
},
"babel-plugin-add-module-exports": {
@@ -15117,7 +15144,7 @@
"bmp-js": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz",
- "integrity": "sha1-4Fpj95amwf8l9Hcex62twUjAcjM=",
+ "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==",
"dev": true
},
"bn.js": {
@@ -15786,6 +15813,12 @@
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
"dev": true
},
+ "core-js": {
+ "version": "3.38.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz",
+ "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==",
+ "dev": true
+ },
"core-js-compat": {
"version": "3.38.0",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz",
@@ -15877,12 +15910,12 @@
}
},
"cypress": {
- "version": "13.13.2",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.13.2.tgz",
- "integrity": "sha512-PvJQU33933NvS1StfzEb8/mu2kMy4dABwCF+yd5Bi7Qly1HOVf+Bufrygee/tlmty/6j5lX+KIi8j9Q3JUMbhA==",
+ "version": "13.15.0",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.15.0.tgz",
+ "integrity": "sha512-53aO7PwOfi604qzOkCSzNlWquCynLlKE/rmmpSPcziRH6LNfaDUAklQT6WJIsD8ywxlIy+uVZsnTMCCQVd2kTw==",
"dev": true,
"requires": {
- "@cypress/request": "^3.0.1",
+ "@cypress/request": "^3.0.4",
"@cypress/xvfb": "^1.2.4",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
@@ -17017,13 +17050,13 @@
"dev": true
},
"form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
+ "combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
@@ -17446,14 +17479,14 @@
"dev": true
},
"http-signature": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz",
- "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz",
+ "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==",
"dev": true,
"requires": {
"assert-plus": "^1.0.0",
"jsprim": "^2.0.2",
- "sshpk": "^1.14.1"
+ "sshpk": "^1.18.0"
}
},
"https-browserify": {
@@ -17943,6 +17976,22 @@
"regenerator-runtime": "0.13.7"
}
},
+ "@jimp/types": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.10.3.tgz",
+ "integrity": "sha512-XGmBakiHZqseSWr/puGN+CHzx0IKBSpsKlmEmsNV96HKDiP6eu8NSnwdGCEq2mmIHe0JNcg1hqg59hpwtQ7Tiw==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.7.2",
+ "@jimp/bmp": "^0.10.3",
+ "@jimp/gif": "^0.10.3",
+ "@jimp/jpeg": "^0.10.3",
+ "@jimp/png": "^0.10.3",
+ "@jimp/tiff": "^0.10.3",
+ "core-js": "^3.4.1",
+ "timm": "^1.6.1"
+ }
+ },
"core-js": {
"version": "3.8.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.3.tgz",
@@ -17952,8 +18001,9 @@
}
},
"jpeg-js": {
- "version": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.0.tgz",
- "integrity": "sha512-960VHmtN1vTpasX/1LupLohdP5odwAT7oK/VSm6mW0M58LbrBnowLAPWAZhWGhDAGjzbMnPXZxzB/QYgBwkN0w==",
+ "version": "0.3.7",
+ "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.3.7.tgz",
+ "integrity": "sha512-9IXdWudL61npZjvLuVe/ktHiA41iE8qFyLB+4VDTblEsWBzeg8WQTlktdUK4CdncUqtUgUg0bbOmTE2bKBKaBQ==",
"dev": true
},
"js-base64": {
@@ -19313,12 +19363,12 @@
"dev": true
},
"qs": {
- "version": "6.10.4",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
- "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==",
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz",
+ "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==",
"dev": true,
"requires": {
- "side-channel": "^1.0.4"
+ "side-channel": "^1.0.6"
}
},
"querystring": {
@@ -20814,7 +20864,7 @@
"integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==",
"dev": true,
"requires": {
- "pako": "1.0.11"
+ "pako": "^1.0.5"
}
},
"util": {
@@ -21193,6 +21243,12 @@
"resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
"integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=",
"dev": true
+ },
+ "zod": {
+ "version": "3.23.8",
+ "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
+ "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
+ "dev": true
}
}
}
diff --git a/ui.tests/test-module/package.json b/ui.tests/test-module/package.json
index ea8fb31c5c..c7ef227064 100644
--- a/ui.tests/test-module/package.json
+++ b/ui.tests/test-module/package.json
@@ -16,8 +16,9 @@
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.2",
"@cypress/code-coverage": "^3.12.45",
+ "@jimp/types": "^1.6.0",
"async": "^3.2.4",
- "cypress": "^13.13.2",
+ "cypress": "^13.15.0",
"cypress-circleci-reporter": "0.2.0",
"cypress-iframe": "1.0.1",
"cypress-log-to-output": "1.1.2",
diff --git a/ui.tests/test-module/specs/fileinput/fileinput.authoring.cy.js b/ui.tests/test-module/specs/fileinput/fileinput.authoring.cy.js
index f3a040d69a..d6d759e393 100644
--- a/ui.tests/test-module/specs/fileinput/fileinput.authoring.cy.js
+++ b/ui.tests/test-module/specs/fileinput/fileinput.authoring.cy.js
@@ -54,6 +54,7 @@ describe('Page - Authoring', function () {
cy.get("[name='./accept']")
.should("exist");
cy.get("[name='./fd:dragDropText']").should("exist");
+ cy.get("[name='./type']").should("exist");
cy.contains("Validation").should("exist");
// Checking some dynamic behaviours
diff --git a/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
new file mode 100644
index 0000000000..18e41b1244
--- /dev/null
+++ b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
@@ -0,0 +1,184 @@
+/*******************************************************************************
+ * Copyright 2022 Adobe
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ ******************************************************************************/
+
+const checkFileNamesInFileAttachmentView = (component, fileNames) => {
+ // check if file present in view
+ cy.get(component).then(() => {
+ fileNames.forEach((fileName) => {
+ cy.get(".cmp-adaptiveform-fileinput__filename").contains(fileName)
+ })
+ });
+}
+
+const checkFilePreviewInFileAttachment = (component) => {
+ cy.window().then((win) => {
+ cy.stub(win, 'open').as('open')
+ })
+ cy.get(component).then(() => {
+ cy.get(".cmp-adaptiveform-fileinput__filename").each(($file) => {
+ cy.wrap($file).click();
+ cy.get('@open').should('be.called');
+ })
+ });
+};
+
+
+const getFormObjTest = (fileList) => {
+ return cy.window().then((win) => {
+ return new Promise((resolve, reject) => {
+ win.guideBridge.getFormDataObject({
+ "success": function (resultObj) {
+ try {
+ let afFormData = resultObj.data;
+ expect(afFormData).to.exist; // "af form data object not present in guideBridge#getFormDataObject API");
+ expect(afFormData.data).to.exist; // "form data not present in guideBridge#getFormDataObject API");
+ assert.equal(afFormData.attachments.length, fileList.length, "incorrect attachments returned from guideBridge#getFormDataObject API");
+ // checks if the right file names are present
+ fileList.forEach((file) => {
+ expect(afFormData.attachments.filter(e => e.name === file).length, `could not find ${file} attachment`).to.be.greaterThan(0);
+ });
+ // explicitly calling this to ensure there are no errors during this API invocation
+ let htmlFormData = afFormData.toHTMLFormData();
+ // Display the key/value pairs
+ for (var pair of htmlFormData.entries()) {
+ console.log(pair[0] + ', ' + pair[1]);
+ }
+ resolve();
+ } catch (error) {
+ reject(error);
+ }
+ }
+ });
+ });
+ });
+};
+
+const multiSelectFileType = "input[name='fileinput1']";
+const singleSelectStringType = "input[name='fileinput2']";
+const singleSelectFileType = "input[name='fileinput3']";
+const multiSelectStringType = "input[name='fileinput4']";
+
+const fileInputs = [
+ {
+ type: "Single Select String Type",
+ selector: singleSelectStringType,
+ fileNames: ['empty.pdf'], multiple: false
+ },
+ {
+ type: "Multi Select String Type",
+ selector: multiSelectStringType,
+ fileNames: ['empty.pdf', 'sample.txt'], multiple: true
+ }
+];
+
+
+describe("Form with File Input - Prefill & Submit tests", () => {
+ let prefillId;
+ const submitBtn = "submit1673953138924";
+ const pagePath = "/content/forms/af/core-components-it/samples/fileinput/fileinputstring/basic.html"
+
+
+ beforeEach(() => {
+ cy.wrap(prefillId).as('prefillId');
+ cy.intercept({
+ method: 'POST',
+ url: '**/adobe/forms/af/submit/*',
+ }).as('afSubmission')
+ });
+
+ const submitTest = () => {
+ cy.wait('@afSubmission').then(({response}) => {
+ const { body } = response;
+ assert.equal(response.statusCode, 200, "submission failed since status code is not 200");
+ assert.equal(body.redirectUrl.indexOf("guideThankYouPage") !== -1, true, "url does not contain thank you page in submission response");
+ assert.isDefined(body?.thankYouMessage)
+ assert.isDefined(body?.metadata?.prefillId, "prefillId not present")
+ prefillId = body.metadata.prefillId;
+ cy.wrap(prefillId).as("prefillId");
+ })
+ };
+
+
+ fileInputs.forEach((fileInput, idx) => {
+ it(`${fileInput.type} - attach files, check model, view, preview attachment and submit the form`, () => {
+ cy.previewForm(pagePath, {
+ onBeforeLoad: (win) => {
+ cy.stub(win, 'open'); // creating a stub to check file preview
+ }
+ });
+
+ // attach the file
+ cy.attachFile(fileInput.selector, fileInput.fileNames);
+ if(fileInput.multiple)
+ cy.attachFile(fileInput.selector, ['sample2.txt']);
+
+ // submit the form
+ cy.get(".cmp-adaptiveform-button__widget").click();
+
+ // check for successful submission
+ submitTest();
+ })
+
+ it(`${fileInput.type} - view prefill of submitted form, make changes to attachments and submit`, () => {
+ cy.get("@prefillId").then(id => {
+ cy.previewForm(pagePath, {
+ params: [`prefillId=${id}`],
+ onBeforeLoad(win) {
+ cy.stub(win, 'open'); // creating a stub to check file preview
+ }
+ });
+
+ // check if files were prefilled
+ checkFileNamesInFileAttachmentView(fileInput.selector, fileInput.fileNames);
+
+ checkFilePreviewInFileAttachment(fileInput.selector);
+
+ // check if guideBridge API returns file attachments correctly
+ getFormObjTest(['empty.pdf', ...(fileInput.multiple ? ['sample2.txt', 'sample.txt']: []) ]).then(() => {
+ // add new files after preview to both the component
+ cy.attachFile(fileInput.selector, ['sample2.txt']).then(() => {
+ // check if guideBridge API returns correctly after prefill and attaching more files
+ getFormObjTest(['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf', 'sample2.txt']: []) ]).then(() => {
+ // submit the form
+ cy.get(".cmp-adaptiveform-button__widget").click();
+ // check if submission is success
+ submitTest();
+ })
+ });
+ });
+
+ });
+ });
+
+ it(`${fileInput.type} - prefill of submitted prefilled form`, () => {
+ cy.get("@prefillId").then(id => {
+ cy.previewForm(pagePath, {
+ params: [`prefillId=${id}`],
+ onBeforeLoad(win) {
+ cy.stub(win, 'open'); // creating a stub to check file preview
+ }
+ });
+
+ // check if files were prefilled
+ checkFileNamesInFileAttachmentView(fileInput.selector, ['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf']: []) ]);
+ getFormObjTest(['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf', 'sample2.txt']: []) ]);
+
+ });
+
+ });
+ })
+
+});
diff --git a/ui.tests/test-module/specs/fileinput/fileinputv3.runtime.cy.js b/ui.tests/test-module/specs/fileinput/fileinputv3.runtime.cy.js
index 5ce5f8969a..5b75d209b5 100644
--- a/ui.tests/test-module/specs/fileinput/fileinputv3.runtime.cy.js
+++ b/ui.tests/test-module/specs/fileinput/fileinputv3.runtime.cy.js
@@ -22,14 +22,6 @@ const checkFileNamesInFileAttachmentView = (component, fileNames) => {
});
}
-const checkFilePreviewInFileAttachment = (component) => {
- cy.get(component).then(() => {
- cy.get(".cmp-adaptiveform-fileinput__filename").each(($file) => {
- cy.wrap($file).click();
- cy.window().its('open').should('be.called');
- })
- });
-};
const deleteSelectedFiles = (component, fileNames) => {
cy.get(component).then(() => {