From 6818dda16078dd68b55917881efe562da0fbc15d Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 23 Sep 2024 19:18:08 +0530
Subject: [PATCH 1/9] initial check in
---
.../models/v1/form/FileInputImpl.java | 21 +++--
.../models/form/BaseConstraint.java | 2 +-
.../models/form/FileConstraint.java | 13 +++
.../components/models/form/package-info.java | 2 +-
.../v1/fileinput/_cq_dialog/.content.xml | 14 +++
ui.frontend/package-lock.json | 89 +++++++++++++------
ui.frontend/package.json | 2 +-
7 files changed, 110 insertions(+), 33 deletions(-)
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..1a2e967e4e 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
@@ -72,12 +72,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) {
+ 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/BaseConstraint.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
index 0bc56bfffb..f9127314a3 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
@@ -35,7 +35,7 @@ public interface BaseConstraint {
*
* @since com.adobe.cq.forms.core.components.models.form 0.0.1
*/
- public enum Type {
+ public enum type {
STRING("string"),
STRING_ARRAY("string[]"),
NUMBER("number"),
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..7c0ece5245 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 dataurl}.
+ *
+ * @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/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..27e6db3219 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,20 @@
fieldLabel="Button title"
name="./buttonText">
+
+
+
+
+
+
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index 3fba3bd590..946f88b971 100644
--- a/ui.frontend/package-lock.json
+++ b/ui.frontend/package-lock.json
@@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
- "@aemforms/af-core": "^0.22.104",
+ "@aemforms/af-core": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core",
"@aemforms/af-custom-functions": "1.0.10",
"@aemforms/af-formatters": "^0.22.104"
},
@@ -26,6 +26,41 @@
"webpack-merge": "^5.8.0"
}
},
+ "../../af2-web-runtime/packages/forms-next-core": {
+ "name": "@aemforms/af-core",
+ "version": "0.22.106",
+ "license": "Adobe Proprietary",
+ "dependencies": {
+ "@adobe/json-formula": "0.1.50",
+ "@aemforms/af-formatters": "^0.22.106"
+ },
+ "devDependencies": {
+ "@babel/preset-env": "^7.20.2",
+ "@types/jest": "29.2.4",
+ "@types/lodash": "^4.14.171",
+ "@typescript-eslint/eslint-plugin": "^4.28.2",
+ "@typescript-eslint/parser": "^4.28.2",
+ "babel-jest": "^29.4.1",
+ "blob-polyfill": "^7.0.20220408",
+ "eslint": "^7.30.0",
+ "eslint-config-standard": "^16.0.3",
+ "eslint-plugin-import": "^2.23.4",
+ "eslint-plugin-jest": "^24.3.6",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^5.1.0",
+ "form-data": "^4.0.0",
+ "jest": "29.3",
+ "jest-environment-jsdom": "^29.3.1",
+ "jest-junit": "^12.2.0",
+ "nock": "^13.1.3",
+ "node-fetch": "^2.6.1",
+ "parse-multipart-data": "^1.5.0",
+ "ts-jest": "29.0",
+ "typedoc": "0.22.11",
+ "typedoc-plugin-markdown": "3.11.13",
+ "typescript": "^4.3.5"
+ }
+ },
"../../af2-web-runtime/packages/forms-next-formatters": {
"name": "@aemforms/af-formatters",
"version": "0.22.75",
@@ -52,22 +87,9 @@
"typedoc-plugin-markdown": "3.11.13"
}
},
- "node_modules/@adobe/json-formula": {
- "version": "0.1.50",
- "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz",
- "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==",
- "engines": {
- "node": ">=16.0.0"
- }
- },
"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==",
- "dependencies": {
- "@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.105"
- }
+ "resolved": "../../af2-web-runtime/packages/forms-next-core",
+ "link": true
},
"node_modules/@aemforms/af-custom-functions": {
"version": "1.0.10",
@@ -11070,18 +11092,35 @@
}
},
"dependencies": {
- "@adobe/json-formula": {
- "version": "0.1.50",
- "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz",
- "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": "file:../../af2-web-runtime/packages/forms-next-core",
"requires": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.105"
+ "@aemforms/af-formatters": "^0.22.106",
+ "@babel/preset-env": "^7.20.2",
+ "@types/jest": "29.2.4",
+ "@types/lodash": "^4.14.171",
+ "@typescript-eslint/eslint-plugin": "^4.28.2",
+ "@typescript-eslint/parser": "^4.28.2",
+ "babel-jest": "^29.4.1",
+ "blob-polyfill": "^7.0.20220408",
+ "eslint": "^7.30.0",
+ "eslint-config-standard": "^16.0.3",
+ "eslint-plugin-import": "^2.23.4",
+ "eslint-plugin-jest": "^24.3.6",
+ "eslint-plugin-node": "^11.1.0",
+ "eslint-plugin-promise": "^5.1.0",
+ "form-data": "^4.0.0",
+ "jest": "29.3",
+ "jest-environment-jsdom": "^29.3.1",
+ "jest-junit": "^12.2.0",
+ "nock": "^13.1.3",
+ "node-fetch": "^2.6.1",
+ "parse-multipart-data": "^1.5.0",
+ "ts-jest": "29.0",
+ "typedoc": "0.22.11",
+ "typedoc-plugin-markdown": "3.11.13",
+ "typescript": "^4.3.5"
}
},
"@aemforms/af-custom-functions": {
diff --git a/ui.frontend/package.json b/ui.frontend/package.json
index 3ed09dfea5..4fe9ec92ed 100644
--- a/ui.frontend/package.json
+++ b/ui.frontend/package.json
@@ -23,7 +23,7 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@aemforms/af-core": "^0.22.104",
+ "@aemforms/af-core": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core",
"@aemforms/af-formatters": "^0.22.104",
"@aemforms/af-custom-functions": "1.0.10"
}
From 8caaca268312e1dede5fa66724640395c194966e Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 25 Sep 2024 11:47:26 +0530
Subject: [PATCH 2/9] Adding test collateral
---
.../models/v1/form/FileInputImpl.java | 2 +-
.../models/form/BaseConstraint.java | 2 +-
.../models/form/FileConstraint.java | 2 +-
.../page-fileinputv3/customfooterlibs.html | 2 +-
.../fileinput/fileinputstring/.content.xml | 7 +
.../fileinputstring/basic/.content.xml | 23 +++
.../fileinput/fileinputstring/.content.xml | 5 +
.../fileinputstring/basic/.content.xml | 89 ++++++++
.../specs/fileinput/fileinput.authoring.cy.js | 1 +
.../fileinput/fileinputstring.runtime.cy.js | 192 ++++++++++++++++++
10 files changed, 321 insertions(+), 4 deletions(-)
create mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/.content.xml
create mode 100755 it/content/src/main/content/jcr_root/content/dam/formsanddocuments/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/.content.xml
create mode 100644 it/content/src/main/content/jcr_root/content/forms/af/core-components-it/samples/fileinput/fileinputstring/basic/.content.xml
create mode 100644 ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
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 1a2e967e4e..ae08989c33 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
@@ -73,7 +73,7 @@ public Integer getMaxItems() {
@Override
public Type getType() {
Type superType = super.getType();
- if (superType == null) {
+ if (superType == null || superType == Type.FILE) {
return isMultiple() ? Type.FILE_ARRAY : Type.FILE;
}
if (isMultiple() && superType == Type.STRING) {
diff --git a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
index f9127314a3..0bc56bfffb 100644
--- a/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
+++ b/bundles/af-core/src/main/java/com/adobe/cq/forms/core/components/models/form/BaseConstraint.java
@@ -35,7 +35,7 @@ public interface BaseConstraint {
*
* @since com.adobe.cq.forms.core.components.models.form 0.0.1
*/
- public enum type {
+ public enum Type {
STRING("string"),
STRING_ARRAY("string[]"),
NUMBER("number"),
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 7c0ece5245..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
@@ -59,7 +59,7 @@ default List getAccept() {
/**
* The constraint is
- * applicable for file attachment field. If the type is {@code String}, the format will always be {@code dataurl}.
+ * 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
*/
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.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..523e926c49
--- /dev/null
+++ b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
@@ -0,0 +1,192 @@
+/*******************************************************************************
+ * 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.get(component).then(() => {
+ cy.get(".cmp-adaptiveform-fileinput__filename").each(($file) => {
+ cy.wrap($file).click();
+ cy.window().its('open').should('be.called');
+ })
+ });
+};
+
+const getFormObjTest = (fileList, type) => {
+ cy.window().then(function(win) {
+ win.guideBridge.getFormDataObject({
+ "success" : function (resultObj) {
+ 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");
+ if (!type.includes("String")) {
+ 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);
+ })
+ } else {
+ // for string, check
+ expect(afFormData.data).to.includes("data:", "file attachment string type isn't working");
+ }
+
+ // 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]);
+ }
+ }
+ });
+ });
+};
+
+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 File Type",
+ selector: singleSelectFileType,
+ fileNames: ['empty.pdf'], multiple: false
+ },
+ {
+ type: "Multi Select File Type",
+ selector: multiSelectFileType,
+ fileNames: ['empty.pdf', 'sample.txt'], multiple: true
+ },
+ {
+ 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);
+
+ // check if guideBridge API returns file attachments correctly
+ getFormObjTest(['empty.pdf', ...(fileInput.multiple ? ['sample.txt']: []) ], fileInput.type);
+
+ // check the preview of the file attachment
+ checkFilePreviewInFileAttachment(fileInput.selector);
+
+ // add new files after preview to both the component
+ cy.attachFile(fileInput.selector, ['sample2.txt'])
+
+ // check if guideBridge API returns correctly after prefill and attaching more files
+ getFormObjTest(['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf']: []) ], fileInput.type);
+
+ // 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']: []) ], fileInput.type);
+
+ // check if file preview works fine after prefill
+ checkFilePreviewInFileAttachment(fileInput.selector);
+ });
+
+ });
+ })
+
+});
From ef032dde4d74ba8c37aaf437dea884dc89ef20f9 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 25 Sep 2024 14:43:43 +0530
Subject: [PATCH 3/9] FORMS-16351 Support for string in file attachment @review
@vdua DOD(Yes)
---
.../models/v1/form/FileInputImpl.java | 3 +-
.../models/v1/form/FileInputImplTest.java | 9 +-
.../form/fileinput/test-content.json | 20 ++++
ui.frontend/src/GuideBridge.js | 21 ++--
.../src/view/FormFileInputWidgetBase.js | 2 +-
.../fileinput/fileinputstring.runtime.cy.js | 99 +++++++++----------
.../specs/fileinput/fileinputv3.runtime.cy.js | 8 --
7 files changed, 86 insertions(+), 76 deletions(-)
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 ae08989c33..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;
@@ -73,7 +74,7 @@ public Integer getMaxItems() {
@Override
public Type getType() {
Type superType = super.getType();
- if (superType == null || superType == Type.FILE) {
+ if (superType == null || StringUtils.isBlank(typeJcr) || superType == Type.FILE) {
return isMultiple() ? Type.FILE_ARRAY : Type.FILE;
}
if (isMultiple() && superType == Type.STRING) {
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/ui.frontend/src/GuideBridge.js b/ui.frontend/src/GuideBridge.js
index 105131c4d4..6d3aa4e7bc 100644
--- a/ui.frontend/src/GuideBridge.js
+++ b/ui.frontend/src/GuideBridge.js
@@ -113,21 +113,22 @@ class GuideBridge {
* @method
* @memberof GuideBridge
*/
- getFormDataString(options) {
+ async getFormDataString(options) {
let formModel = this.getFormModel();
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
+ formModel.getState().attachments.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/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/specs/fileinput/fileinputstring.runtime.cy.js b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
index 523e926c49..bcefcfc113 100644
--- a/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
+++ b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
@@ -24,39 +24,44 @@ const checkFileNamesInFileAttachmentView = (component, fileNames) => {
}
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.window().its('open').should('be.called');
+ cy.get('@open').should('be.called');
})
});
};
-const getFormObjTest = (fileList, type) => {
- cy.window().then(function(win) {
- win.guideBridge.getFormDataObject({
- "success" : function (resultObj) {
- 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");
- if (!type.includes("String")) {
- 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);
- })
- } else {
- // for string, check
- expect(afFormData.data).to.includes("data:", "file attachment string type isn't working");
- }
- // 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]);
+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);
+ }
}
- }
+ });
});
});
};
@@ -67,21 +72,7 @@ const singleSelectFileType = "input[name='fileinput3']";
const multiSelectStringType = "input[name='fileinput4']";
const fileInputs = [
- {
- type: "Single Select File Type",
- selector: singleSelectFileType,
- fileNames: ['empty.pdf'], multiple: false
- },
- {
- type: "Multi Select File Type",
- selector: multiSelectFileType,
- fileNames: ['empty.pdf', 'sample.txt'], multiple: true
- },
- {
- type: "Single Select String Type",
- selector: singleSelectStringType,
- fileNames: ['empty.pdf'], multiple: false
- },
+
{
type: "Multi Select String Type",
selector: multiSelectStringType,
@@ -149,23 +140,23 @@ describe("Form with File Input - Prefill & Submit tests", () => {
// check if files were prefilled
checkFileNamesInFileAttachmentView(fileInput.selector, fileInput.fileNames);
- // check if guideBridge API returns file attachments correctly
- getFormObjTest(['empty.pdf', ...(fileInput.multiple ? ['sample.txt']: []) ], fileInput.type);
-
- // check the preview of the file attachment
checkFilePreviewInFileAttachment(fileInput.selector);
- // add new files after preview to both the component
- cy.attachFile(fileInput.selector, ['sample2.txt'])
-
- // check if guideBridge API returns correctly after prefill and attaching more files
- getFormObjTest(['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf']: []) ], fileInput.type);
+ // 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();
+ })
+ });
+ });
- // submit the form
- cy.get(".cmp-adaptiveform-button__widget").click();
- // check if submission is success
- submitTest();
});
});
@@ -180,10 +171,8 @@ describe("Form with File Input - Prefill & Submit tests", () => {
// 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']: []) ], fileInput.type);
+ getFormObjTest(['sample2.txt', ...(fileInput.multiple ? ['sample.txt', 'empty.pdf', 'sample2.txt']: []) ]);
- // check if file preview works fine after prefill
- checkFilePreviewInFileAttachment(fileInput.selector);
});
});
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(() => {
From ed4b59353d7d5e154779638146aa6765836bc659 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 25 Sep 2024 16:53:44 +0530
Subject: [PATCH 4/9] Adding field description for type string
---
.../form/fileinput/v1/fileinput/_cq_dialog/.content.xml | 1 +
1 file changed, 1 insertion(+)
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 27e6db3219..b0cd6906af 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
@@ -68,6 +68,7 @@
sling:resourceType="granite/ui/components/coral/foundation/form/select"
granite:class="cmp-adaptiveform-radiobutton__type"
fieldLabel="Data type of submitted value"
+ fieldDescription="Making type as string would increase the submit payload size by 30% and the file would be sent as data-url represented in string format"
required="{Boolean}true"
name="./type"
key="File"
From a45a4dfdf69ebe94d23ec3df310f8ea384007c29 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Wed, 25 Sep 2024 11:47:26 +0530
Subject: [PATCH 5/9] Adding test collateral
---
.../specs/fileinput/fileinputstring.runtime.cy.js | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
index bcefcfc113..18e41b1244 100644
--- a/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
+++ b/ui.tests/test-module/specs/fileinput/fileinputstring.runtime.cy.js
@@ -72,7 +72,11 @@ 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,
@@ -156,7 +160,6 @@ describe("Form with File Input - Prefill & Submit tests", () => {
});
});
-
});
});
From 1c5afe613d08f3341dbf3d66d8e416b6434bc4c8 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Fri, 27 Sep 2024 12:44:58 +0530
Subject: [PATCH 6/9] updating field description
---
.../form/fileinput/v1/fileinput/_cq_dialog/.content.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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 b0cd6906af..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
@@ -68,7 +68,7 @@
sling:resourceType="granite/ui/components/coral/foundation/form/select"
granite:class="cmp-adaptiveform-radiobutton__type"
fieldLabel="Data type of submitted value"
- fieldDescription="Making type as string would increase the submit payload size by 30% and the file would be sent as data-url represented in string format"
+ fieldDescription="Selecting the String data type option would increase the upload size by 30%."
required="{Boolean}true"
name="./type"
key="File"
From 9dcf9dbe677eaedf73919fbdac871f5cf6d2f163 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 30 Sep 2024 14:07:33 +0530
Subject: [PATCH 7/9] Adding read attachments
---
ui.frontend/src/GuideBridge.js | 5 +-
ui.frontend/src/index.js | 4 +-
ui.tests/test-module/package-lock.json | 522 ++++++++++++++-----------
ui.tests/test-module/package.json | 3 +-
4 files changed, 296 insertions(+), 238 deletions(-)
diff --git a/ui.frontend/src/GuideBridge.js b/ui.frontend/src/GuideBridge.js
index 6d3aa4e7bc..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.
@@ -113,12 +114,12 @@ class GuideBridge {
* @method
* @memberof GuideBridge
*/
- async getFormDataString(options) {
+ getFormDataString(options) {
let formModel = this.getFormModel();
if (!formModel) {
throw new Error("formModel is not defined");
}
- formModel.getState().attachments.then(attachmentAsObj => {
+ readAttachments(formModel).then(attachmentAsObj => {
let attachmentAsArray = Object.keys(attachmentAsObj).flatMap((key) => attachmentAsObj[key]);
let formData = new AfFormData({
"data": JSON.stringify(formModel.exportData()),
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.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",
From 6b9b1541a1c5073f7679e51ce989eae660c1e3b9 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 30 Sep 2024 15:13:23 +0530
Subject: [PATCH 8/9] moving to released version
---
ui.frontend/package-lock.json | 103 +++++++++++-----------------------
ui.frontend/package.json | 4 +-
2 files changed, 34 insertions(+), 73 deletions(-)
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index 946f88b971..d315544478 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": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core",
+ "@aemforms/af-core": "^0.22.108",
"@aemforms/af-custom-functions": "1.0.10",
- "@aemforms/af-formatters": "^0.22.104"
+ "@aemforms/af-formatters": "^0.22.108"
},
"devDependencies": {
"@babel/preset-env": "^7.18.2",
@@ -26,41 +26,6 @@
"webpack-merge": "^5.8.0"
}
},
- "../../af2-web-runtime/packages/forms-next-core": {
- "name": "@aemforms/af-core",
- "version": "0.22.106",
- "license": "Adobe Proprietary",
- "dependencies": {
- "@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.106"
- },
- "devDependencies": {
- "@babel/preset-env": "^7.20.2",
- "@types/jest": "29.2.4",
- "@types/lodash": "^4.14.171",
- "@typescript-eslint/eslint-plugin": "^4.28.2",
- "@typescript-eslint/parser": "^4.28.2",
- "babel-jest": "^29.4.1",
- "blob-polyfill": "^7.0.20220408",
- "eslint": "^7.30.0",
- "eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.23.4",
- "eslint-plugin-jest": "^24.3.6",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^5.1.0",
- "form-data": "^4.0.0",
- "jest": "29.3",
- "jest-environment-jsdom": "^29.3.1",
- "jest-junit": "^12.2.0",
- "nock": "^13.1.3",
- "node-fetch": "^2.6.1",
- "parse-multipart-data": "^1.5.0",
- "ts-jest": "29.0",
- "typedoc": "0.22.11",
- "typedoc-plugin-markdown": "3.11.13",
- "typescript": "^4.3.5"
- }
- },
"../../af2-web-runtime/packages/forms-next-formatters": {
"name": "@aemforms/af-formatters",
"version": "0.22.75",
@@ -87,9 +52,22 @@
"typedoc-plugin-markdown": "3.11.13"
}
},
+ "node_modules/@adobe/json-formula": {
+ "version": "0.1.50",
+ "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz",
+ "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA==",
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
"node_modules/@aemforms/af-core": {
- "resolved": "../../af2-web-runtime/packages/forms-next-core",
- "link": true
+ "version": "0.22.108",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.108.tgz",
+ "integrity": "sha512-wBLHviBPM2hYhw/gGGyTIF6EipeQlpFAoY/Qv0U3pWmYKji+HS71R4lce+YIrrBABeZ8CVfwRE5MrGEwqiIgdA==",
+ "dependencies": {
+ "@adobe/json-formula": "0.1.50",
+ "@aemforms/af-formatters": "^0.22.108"
+ }
},
"node_modules/@aemforms/af-custom-functions": {
"version": "1.0.10",
@@ -97,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.108",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.108.tgz",
+ "integrity": "sha512-5JGdVJGIEvZ8cN0zr043cj6zLv8UzlbmXQKdEMpAQFS14+6ukUkV+uAQhyOsqal8gXa51EZbKtus0Cfe2y1cug=="
},
"node_modules/@ampproject/remapping": {
"version": "2.2.1",
@@ -11092,35 +11070,18 @@
}
},
"dependencies": {
+ "@adobe/json-formula": {
+ "version": "0.1.50",
+ "resolved": "https://registry.npmjs.org/@adobe/json-formula/-/json-formula-0.1.50.tgz",
+ "integrity": "sha512-dmlLYfbty8NPVIdxvI9cJ+ZdXsrRCFrCdmL1+aR2auEzXJ86rD0bm1qu+S4NOpFiZLKIyx0zvUTykms40vNjsA=="
+ },
"@aemforms/af-core": {
- "version": "file:../../af2-web-runtime/packages/forms-next-core",
+ "version": "0.22.108",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.108.tgz",
+ "integrity": "sha512-wBLHviBPM2hYhw/gGGyTIF6EipeQlpFAoY/Qv0U3pWmYKji+HS71R4lce+YIrrBABeZ8CVfwRE5MrGEwqiIgdA==",
"requires": {
"@adobe/json-formula": "0.1.50",
- "@aemforms/af-formatters": "^0.22.106",
- "@babel/preset-env": "^7.20.2",
- "@types/jest": "29.2.4",
- "@types/lodash": "^4.14.171",
- "@typescript-eslint/eslint-plugin": "^4.28.2",
- "@typescript-eslint/parser": "^4.28.2",
- "babel-jest": "^29.4.1",
- "blob-polyfill": "^7.0.20220408",
- "eslint": "^7.30.0",
- "eslint-config-standard": "^16.0.3",
- "eslint-plugin-import": "^2.23.4",
- "eslint-plugin-jest": "^24.3.6",
- "eslint-plugin-node": "^11.1.0",
- "eslint-plugin-promise": "^5.1.0",
- "form-data": "^4.0.0",
- "jest": "29.3",
- "jest-environment-jsdom": "^29.3.1",
- "jest-junit": "^12.2.0",
- "nock": "^13.1.3",
- "node-fetch": "^2.6.1",
- "parse-multipart-data": "^1.5.0",
- "ts-jest": "29.0",
- "typedoc": "0.22.11",
- "typedoc-plugin-markdown": "3.11.13",
- "typescript": "^4.3.5"
+ "@aemforms/af-formatters": "^0.22.108"
}
},
"@aemforms/af-custom-functions": {
@@ -11129,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.108",
+ "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.108.tgz",
+ "integrity": "sha512-5JGdVJGIEvZ8cN0zr043cj6zLv8UzlbmXQKdEMpAQFS14+6ukUkV+uAQhyOsqal8gXa51EZbKtus0Cfe2y1cug=="
},
"@ampproject/remapping": {
"version": "2.2.1",
diff --git a/ui.frontend/package.json b/ui.frontend/package.json
index 4fe9ec92ed..38fda5f008 100644
--- a/ui.frontend/package.json
+++ b/ui.frontend/package.json
@@ -23,8 +23,8 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
- "@aemforms/af-core": "file:///Users/rismehta/af2-web-runtime/packages/forms-next-core",
- "@aemforms/af-formatters": "^0.22.104",
+ "@aemforms/af-core": "^0.22.108",
+ "@aemforms/af-formatters": "^0.22.108",
"@aemforms/af-custom-functions": "1.0.10"
}
}
From ba5e3adf90772872844b074350becba488a20115 Mon Sep 17 00:00:00 2001
From: Rishi Mehta
Date: Mon, 30 Sep 2024 18:20:10 +0530
Subject: [PATCH 9/9] @releng updating af-core
---
ui.frontend/package-lock.json | 32 ++++++++++++++++----------------
ui.frontend/package.json | 4 ++--
2 files changed, 18 insertions(+), 18 deletions(-)
diff --git a/ui.frontend/package-lock.json b/ui.frontend/package-lock.json
index d315544478..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.108",
+ "@aemforms/af-core": "^0.22.109",
"@aemforms/af-custom-functions": "1.0.10",
- "@aemforms/af-formatters": "^0.22.108"
+ "@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.108",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.108.tgz",
- "integrity": "sha512-wBLHviBPM2hYhw/gGGyTIF6EipeQlpFAoY/Qv0U3pWmYKji+HS71R4lce+YIrrBABeZ8CVfwRE5MrGEwqiIgdA==",
+ "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.108"
+ "@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.108",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.108.tgz",
- "integrity": "sha512-5JGdVJGIEvZ8cN0zr043cj6zLv8UzlbmXQKdEMpAQFS14+6ukUkV+uAQhyOsqal8gXa51EZbKtus0Cfe2y1cug=="
+ "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.108",
- "resolved": "https://registry.npmjs.org/@aemforms/af-core/-/af-core-0.22.108.tgz",
- "integrity": "sha512-wBLHviBPM2hYhw/gGGyTIF6EipeQlpFAoY/Qv0U3pWmYKji+HS71R4lce+YIrrBABeZ8CVfwRE5MrGEwqiIgdA==",
+ "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.108"
+ "@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.108",
- "resolved": "https://registry.npmjs.org/@aemforms/af-formatters/-/af-formatters-0.22.108.tgz",
- "integrity": "sha512-5JGdVJGIEvZ8cN0zr043cj6zLv8UzlbmXQKdEMpAQFS14+6ukUkV+uAQhyOsqal8gXa51EZbKtus0Cfe2y1cug=="
+ "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 38fda5f008..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.108",
- "@aemforms/af-formatters": "^0.22.108",
+ "@aemforms/af-core": "^0.22.109",
+ "@aemforms/af-formatters": "^0.22.109",
"@aemforms/af-custom-functions": "1.0.10"
}
}