From a70567ba2ed1cb943b8df23489977df829c26cdf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 19:47:00 +0000 Subject: [PATCH 01/22] Bump simple-git from 3.31.1 to 3.32.2 Bumps [simple-git](https://github.com/steveukx/git-js/tree/HEAD/simple-git) from 3.31.1 to 3.32.2. - [Release notes](https://github.com/steveukx/git-js/releases) - [Changelog](https://github.com/steveukx/git-js/blob/main/simple-git/CHANGELOG.md) - [Commits](https://github.com/steveukx/git-js/commits/simple-git@3.32.2/simple-git) --- updated-dependencies: - dependency-name: simple-git dependency-version: 3.32.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d18f00af..e71d9163c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "prettier-plugin-sql": "0.19.2", "semver": "7.7.4", "sfmc-sdk": "3.0.0", - "simple-git": "3.31.1", + "simple-git": "3.32.2", "toposort": "2.0.2", "update-notifier": "7.3.1", "winston": "3.19.0", @@ -6693,9 +6693,9 @@ } }, "node_modules/simple-git": { - "version": "3.31.1", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.31.1.tgz", - "integrity": "sha512-oiWP4Q9+kO8q9hHqkX35uuHmxiEbZNTrZ5IPxgMGrJwN76pzjm/jabkZO0ItEcqxAincqGAzL3QHSaHt4+knBg==", + "version": "3.32.2", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.32.2.tgz", + "integrity": "sha512-n/jhNmvYh8dwyfR6idSfpXrFazuyd57jwNMzgjGnKZV/1lTh0HKvPq20v4AQ62rP+l19bWjjXPTCdGHMt0AdrQ==", "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", diff --git a/package.json b/package.json index 9cfed496a..c1fc37f74 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "prettier-plugin-sql": "0.19.2", "semver": "7.7.4", "sfmc-sdk": "3.0.0", - "simple-git": "3.31.1", + "simple-git": "3.32.2", "toposort": "2.0.2", "update-notifier": "7.3.1", "winston": "3.19.0", From 56669f1de8ca8d488abb262ae056e4c19a74f1b9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 20:02:29 +0000 Subject: [PATCH 02/22] Bump inquirer from 13.2.5 to 13.3.0 Bumps [inquirer](https://github.com/SBoudrias/Inquirer.js) from 13.2.5 to 13.3.0. - [Release notes](https://github.com/SBoudrias/Inquirer.js/releases) - [Commits](https://github.com/SBoudrias/Inquirer.js/compare/inquirer@13.2.5...inquirer@13.3.0) --- updated-dependencies: - dependency-name: inquirer dependency-version: 13.3.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 124 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 63 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index e71d9163c..c473eeb10 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "console.table": "0.10.0", "deep-equal": "2.2.3", "fs-extra": "11.3.3", - "inquirer": "13.2.5", + "inquirer": "13.3.0", "json-to-table": "4.2.1", "mustache": "4.2.0", "p-limit": "7.3.0", @@ -461,13 +461,13 @@ } }, "node_modules/@inquirer/checkbox": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.0.7.tgz", - "integrity": "sha512-OGJykc3mpe4kiNXwXlDlP4MFqZso5QOoXJaJrmTJI+Y+gq68wxTyCUIFv34qgwZTHnGGeqwUKGOi4oxptTe+ZQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-5.1.0.tgz", + "integrity": "sha512-/HjF1LN0a1h4/OFsbGKHNDtWICFU/dqXCdym719HFTyJo9IG7Otr+ziGWc9S0iQuohRZllh+WprSgd5UW5Fw0g==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/figures": "^2.0.3", "@inquirer/type": "^4.0.3" }, @@ -484,12 +484,12 @@ } }, "node_modules/@inquirer/confirm": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.7.tgz", - "integrity": "sha512-lKdNloHLnGoBUUwprxKFd+SpkAnyQTBrZACFPtxDq9GiLICD2t+CaeJ1Ku4goZsGPyBIFc2YYpmDSJLEXoc16g==", + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-6.0.8.tgz", + "integrity": "sha512-Di6dgmiZ9xCSUxWUReWTqDtbhXCuG2MQm2xmgSAIruzQzBqNf49b8E07/vbCYY506kDe8BiwJbegXweG8M1klw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -505,9 +505,9 @@ } }, "node_modules/@inquirer/core": { - "version": "11.1.4", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.4.tgz", - "integrity": "sha512-1HvwyASF0tE/7W8geTTn0ydiWb463pq4SBIpaWcVabTrw55+CiRmytV9eZoqt3ohchsPw4Vv60jfNiI6YljVUg==", + "version": "11.1.5", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-11.1.5.tgz", + "integrity": "sha512-QQPAX+lka8GyLcZ7u7Nb1h6q72iZ/oy0blilC3IB2nSt1Qqxp7akt94Jqhi/DzARuN3Eo9QwJRvtl4tmVe4T5A==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.3", @@ -531,12 +531,12 @@ } }, "node_modules/@inquirer/editor": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.7.tgz", - "integrity": "sha512-d36tisyvmxH7H+LICTeTofrKmJ+R1jAYV8q0VTYh96cm8mP2BdGh9TAIqbCGcciX8/dr0fJW+VJq3jAnco5xfg==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-5.0.8.tgz", + "integrity": "sha512-sLcpbb9B3XqUEGrj1N66KwhDhEckzZ4nI/W6SvLXyBX8Wic3LDLENlWRvkOGpCPoserabe+MxQkpiMoI8irvyA==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/external-editor": "^2.0.3", "@inquirer/type": "^4.0.3" }, @@ -553,12 +553,12 @@ } }, "node_modules/@inquirer/expand": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.7.tgz", - "integrity": "sha512-h2RRFzDdeXOXLrJOUAaHzyR1HbiZlrl/NxorOAgNrzhiSThbwEFVOf88lJzbF5WXGrQ2RwqK2h0xAE7eo8QP5w==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-5.0.8.tgz", + "integrity": "sha512-QieW3F1prNw3j+hxO7/NKkG1pk3oz7pOB6+5Upwu3OIwADfPX0oZVppsqlL+Vl/uBHHDSOBY0BirLctLnXwGGg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -604,12 +604,12 @@ } }, "node_modules/@inquirer/input": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.7.tgz", - "integrity": "sha512-b+eKk/eUvKLQ6c+rDu9u4I1+twdjOfrEaw9NURDpCrWYJTWL1/JQEudZi0AeqXDGcn0tMdhlfpEfjcqr33B/qw==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-5.0.8.tgz", + "integrity": "sha512-p0IJslw0AmedLEkOU+yrEX3Aj2RTpQq7ZOf8nc1DIhjzaxRWrrgeuE5Kyh39fVRgtcACaMXx/9WNo8+GjgBOfw==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -625,12 +625,12 @@ } }, "node_modules/@inquirer/number": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.7.tgz", - "integrity": "sha512-/l5KxcLFFexzOwh8DcVOI7zgVQCwcBt/9yHWtvMdYvaYLMK5J31BSR/fO3Z9WauA21qwAkDGRvYNHIG4vR6JwA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-4.0.8.tgz", + "integrity": "sha512-uGLiQah9A0F9UIvJBX52m0CnqtLaym0WpT9V4YZrjZ+YRDKZdwwoEPz06N6w8ChE2lrnsdyhY9sL+Y690Kh9gQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -646,13 +646,13 @@ } }, "node_modules/@inquirer/password": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.7.tgz", - "integrity": "sha512-h3Rgzb8nFMxgK6X5246MtwTX/rXs5Z58DbeuUKI6W5dQ+CZusEunNeT7rosdB+Upn79BkfZJO0AaiH8MIi9v1A==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-5.0.8.tgz", + "integrity": "sha512-zt1sF4lYLdvPqvmvHdmjOzuUUjuCQ897pdUCO8RbXMUDKXJTTyOQgtn23le+jwcb+MpHl3VAFvzIdxRAf6aPlA==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -668,21 +668,21 @@ } }, "node_modules/@inquirer/prompts": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.2.1.tgz", - "integrity": "sha512-76knJFW2oXdI6If5YRmEoT5u7l+QroXYrMiINFcb97LsyECgsbO9m6iWlPuhBtaFgNITPHQCk3wbex38q8gsjg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-8.3.0.tgz", + "integrity": "sha512-JAj66kjdH/F1+B7LCigjARbwstt3SNUOSzMdjpsvwJmzunK88gJeXmcm95L9nw1KynvFVuY4SzXh/3Y0lvtgSg==", "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^5.0.5", - "@inquirer/confirm": "^6.0.5", - "@inquirer/editor": "^5.0.5", - "@inquirer/expand": "^5.0.5", - "@inquirer/input": "^5.0.5", - "@inquirer/number": "^4.0.5", - "@inquirer/password": "^5.0.5", - "@inquirer/rawlist": "^5.2.1", - "@inquirer/search": "^4.1.1", - "@inquirer/select": "^5.0.5" + "@inquirer/checkbox": "^5.1.0", + "@inquirer/confirm": "^6.0.8", + "@inquirer/editor": "^5.0.8", + "@inquirer/expand": "^5.0.8", + "@inquirer/input": "^5.0.8", + "@inquirer/number": "^4.0.8", + "@inquirer/password": "^5.0.8", + "@inquirer/rawlist": "^5.2.4", + "@inquirer/search": "^4.1.4", + "@inquirer/select": "^5.1.0" }, "engines": { "node": ">=23.5.0 || ^22.13.0 || ^21.7.0 || ^20.12.0" @@ -697,12 +697,12 @@ } }, "node_modules/@inquirer/rawlist": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.3.tgz", - "integrity": "sha512-EuvV6N/T3xDmRVihAOqfnbmtHGdu26TocRKANvcX/7nLLD8QO0c22Dtlc5C15+V433d9v0E0SSyqywdNCIXfLg==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-5.2.4.tgz", + "integrity": "sha512-fTuJ5Cq9W286isLxwj6GGyfTjx1Zdk4qppVEPexFuA6yioCCXS4V1zfKroQqw7QdbDPN73xs2DiIAlo55+kBqg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/type": "^4.0.3" }, "engines": { @@ -718,12 +718,12 @@ } }, "node_modules/@inquirer/search": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.3.tgz", - "integrity": "sha512-6BE8MqVMakEiLDRtrwj9fbx6AYhuj7McW3GOkOoEiQ5Qkh6v6f5HCoYNqSRE4j6nT+u+73518iUQPE+mZYlAjA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-4.1.4.tgz", + "integrity": "sha512-9yPTxq7LPmYjrGn3DRuaPuPbmC6u3fiWcsE9ggfLcdgO/ICHYgxq7mEy1yJ39brVvgXhtOtvDVjDh9slJxE4LQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/figures": "^2.0.3", "@inquirer/type": "^4.0.3" }, @@ -740,13 +740,13 @@ } }, "node_modules/@inquirer/select": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.0.7.tgz", - "integrity": "sha512-1JUJIR+Z2PsvwP6VWty7aE0aCPaT2cy2c4Vp3LPhL2Pi3+aXewAld/AyJ/CW9XWx1JbKxmdElfvls/G/7jG7ZQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-5.1.0.tgz", + "integrity": "sha512-OyYbKnchS1u+zRe14LpYrN8S0wH1vD0p2yKISvSsJdH2TpI87fh4eZdWnpdbrGauCRWDph3NwxRmM4Pcm/hx1Q==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.4", + "@inquirer/core": "^11.1.5", "@inquirer/figures": "^2.0.3", "@inquirer/type": "^4.0.3" }, @@ -4043,14 +4043,14 @@ } }, "node_modules/inquirer": { - "version": "13.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-13.2.5.tgz", - "integrity": "sha512-JHvVPgOIre0NrA9o8BGHUBh9rNuKkN1gS1ffbYgy3BuuJmJZhnFy9IHz3pcNbZm9zK6qTYvQ6LN5wl3Xcg4Jkw==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-13.3.0.tgz", + "integrity": "sha512-APTrZe9IhrsshL0u2PgmEMLP3CXDBjZ99xh5dR2+sryOt5R+JGL0KNuaTTT2lW54B9eNQDMutPR05UYTL7Xb1Q==", "license": "MIT", "dependencies": { "@inquirer/ansi": "^2.0.3", - "@inquirer/core": "^11.1.4", - "@inquirer/prompts": "^8.2.1", + "@inquirer/core": "^11.1.5", + "@inquirer/prompts": "^8.3.0", "@inquirer/type": "^4.0.3", "mute-stream": "^3.0.0", "run-async": "^4.0.6", diff --git a/package.json b/package.json index c1fc37f74..a43de525f 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "console.table": "0.10.0", "deep-equal": "2.2.3", "fs-extra": "11.3.3", - "inquirer": "13.2.5", + "inquirer": "13.3.0", "json-to-table": "4.2.1", "mustache": "4.2.0", "p-limit": "7.3.0", From 291bfefac53cdeeef23c62af96ee03082b26fb54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Feb 2026 22:04:31 +0000 Subject: [PATCH 03/22] Bump eslint from 10.0.1 to 10.0.2 Bumps [eslint](https://github.com/eslint/eslint) from 10.0.1 to 10.0.2. - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/compare/v10.0.1...v10.0.2) --- updated-dependencies: - dependency-name: eslint dependency-version: 10.0.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 20 +++++++++++--------- package.json | 2 +- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index c473eeb10..20e000cc4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "c8": "10.1.3", "chai": "6.2.2", "chai-files": "1.4.0", - "eslint": "10.0.1", + "eslint": "10.0.2", "eslint-config-ssjs": "2.0.0", "eslint-plugin-jsdoc": "62.7.0", "eslint-plugin-mocha": "11.2.0", @@ -2759,9 +2759,9 @@ } }, "node_modules/eslint": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.1.tgz", - "integrity": "sha512-20MV9SUdeN6Jd84xESsKhRly+/vxI+hwvpBMA93s+9dAcjdCuCojn4IqUGS3lvVaqjVYGYHSRMCpeFtF2rQYxQ==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz", + "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==", "dev": true, "license": "MIT", "dependencies": { @@ -2775,7 +2775,7 @@ "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "ajv": "^6.12.4", + "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", @@ -3090,10 +3090,11 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3182,7 +3183,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { "version": "10.2.2", diff --git a/package.json b/package.json index a43de525f..092e51baa 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "c8": "10.1.3", "chai": "6.2.2", "chai-files": "1.4.0", - "eslint": "10.0.1", + "eslint": "10.0.2", "eslint-config-ssjs": "2.0.0", "eslint-plugin-jsdoc": "62.7.0", "eslint-plugin-mocha": "11.2.0", From c9265a1a552dc227638809689a6cf865a3c940e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Fri, 27 Feb 2026 11:02:54 +0100 Subject: [PATCH 04/22] Disable fail-fast in lint and testing job --- .github/workflows/code-test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/code-test.yml b/.github/workflows/code-test.yml index f5f0a580a..feadd8abc 100644 --- a/.github/workflows/code-test.yml +++ b/.github/workflows/code-test.yml @@ -13,6 +13,7 @@ jobs: lintandTesting: runs-on: ubuntu-latest strategy: + fail-fast: false matrix: node: ["20.19", 21, 22, 23, 24, 25] name: lint & test w/ node v${{ matrix.node }} From fa762b241aad6ab3f0d11e1683e78bfa4a717002 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:04:24 +0000 Subject: [PATCH 05/22] Bump c8 from 10.1.3 to 11.0.0 Bumps [c8](https://github.com/bcoe/c8) from 10.1.3 to 11.0.0. - [Release notes](https://github.com/bcoe/c8/releases) - [Changelog](https://github.com/bcoe/c8/blob/main/CHANGELOG.md) - [Commits](https://github.com/bcoe/c8/compare/v10.1.3...v11.0.0) --- updated-dependencies: - dependency-name: c8 dependency-version: 11.0.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package-lock.json | 115 +++++++++++++++++++++++++++++++--------------- package.json | 2 +- 2 files changed, 79 insertions(+), 38 deletions(-) diff --git a/package-lock.json b/package-lock.json index 20e000cc4..3d1ce8a5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -43,7 +43,7 @@ "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", - "c8": "10.1.3", + "c8": "11.0.0", "chai": "6.2.2", "chai-files": "1.4.0", "eslint": "10.0.2", @@ -868,6 +868,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1659,10 +1660,11 @@ } }, "node_modules/c8": { - "version": "10.1.3", - "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.3.tgz", - "integrity": "sha512-LvcyrOAaOnrrlMpW22n690PUvxiq4Uf9WMhQwNJ9vgagkL/ph1+D4uvjvDA5XCbykrc0sx+ay6pVi9YZ1GnhyA==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-11.0.0.tgz", + "integrity": "sha512-e/uRViGHSVIJv7zsaDKM7VRn2390TgHXqUSvYwPHBQaU6L7E9L0n9JbdkwdYPvshDT0KymBmmlwSpms3yBaMNg==", "dev": true, + "license": "ISC", "dependencies": { "@bcoe/v8-coverage": "^1.0.1", "@istanbuljs/schema": "^0.1.3", @@ -1671,7 +1673,7 @@ "istanbul-lib-coverage": "^3.2.0", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.1.6", - "test-exclude": "^7.0.1", + "test-exclude": "^8.0.0", "v8-to-istanbul": "^9.0.0", "yargs": "^17.7.2", "yargs-parser": "^21.1.1" @@ -1680,7 +1682,7 @@ "c8": "bin/c8.js" }, "engines": { - "node": ">=18" + "node": "20 || >=22" }, "peerDependencies": { "monocart-coverage-reports": "^2" @@ -5110,10 +5112,11 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -7062,61 +7065,99 @@ } }, "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "engines": { - "node": ">=18" + "node": "20 || >=22" + } + }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/test-exclude/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" diff --git a/package.json b/package.json index 092e51baa..79e8d7c63 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", - "c8": "10.1.3", + "c8": "11.0.0", "chai": "6.2.2", "chai-files": "1.4.0", "eslint": "10.0.2", From 097ee198ccec2661f641599dba5c70a49e6066db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:07:31 +0000 Subject: [PATCH 06/22] Bump simple-git from 3.32.2 to 3.32.3 Bumps [simple-git](https://github.com/steveukx/git-js/tree/HEAD/simple-git) from 3.32.2 to 3.32.3. - [Release notes](https://github.com/steveukx/git-js/releases) - [Changelog](https://github.com/steveukx/git-js/blob/main/simple-git/CHANGELOG.md) - [Commits](https://github.com/steveukx/git-js/commits/simple-git@3.32.3/simple-git) --- updated-dependencies: - dependency-name: simple-git dependency-version: 3.32.3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3d1ce8a5c..14815e949 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,7 +24,7 @@ "prettier-plugin-sql": "0.19.2", "semver": "7.7.4", "sfmc-sdk": "3.0.0", - "simple-git": "3.32.2", + "simple-git": "3.32.3", "toposort": "2.0.2", "update-notifier": "7.3.1", "winston": "3.19.0", @@ -6698,9 +6698,9 @@ } }, "node_modules/simple-git": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.32.2.tgz", - "integrity": "sha512-n/jhNmvYh8dwyfR6idSfpXrFazuyd57jwNMzgjGnKZV/1lTh0HKvPq20v4AQ62rP+l19bWjjXPTCdGHMt0AdrQ==", + "version": "3.32.3", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.32.3.tgz", + "integrity": "sha512-56a5oxFdWlsGygOXHWrG+xjj5w9ZIt2uQbzqiIGdR/6i5iococ7WQ/bNPzWxCJdEUGUCmyMH0t9zMpRJTaKxmw==", "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", diff --git a/package.json b/package.json index 79e8d7c63..04747962e 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "prettier-plugin-sql": "0.19.2", "semver": "7.7.4", "sfmc-sdk": "3.0.0", - "simple-git": "3.32.2", + "simple-git": "3.32.3", "toposort": "2.0.2", "update-notifier": "7.3.1", "winston": "3.19.0", From 91bfcc32c1049a607b4d626c776ecc8a481b1258 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:12:02 +0000 Subject: [PATCH 07/22] Bump @types/node from 25.3.0 to 25.3.2 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.3.0 to 25.3.2. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.3.2 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 14815e949..da18c3a0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "@types/fs-extra": "11.0.4", "@types/inquirer": "9.0.9", "@types/mocha": "10.0.8", - "@types/node": "25.3.0", + "@types/node": "25.3.2", "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", @@ -1110,9 +1110,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "25.3.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.0.tgz", - "integrity": "sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==", + "version": "25.3.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz", + "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==", "devOptional": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 04747962e..c56798a59 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "@types/fs-extra": "11.0.4", "@types/inquirer": "9.0.9", "@types/mocha": "10.0.8", - "@types/node": "25.3.0", + "@types/node": "25.3.2", "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", From b197717c44a8f11c0c024afca791b40d619fd43b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:15:50 +0000 Subject: [PATCH 08/22] Bump fast-xml-parser from 5.3.7 to 5.4.1 Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.7 to 5.4.1. - [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases) - [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md) - [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.7...v5.4.1) --- updated-dependencies: - dependency-name: fast-xml-parser dependency-version: 5.4.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 41 +++++++++++++++++++++++++++++++++++++---- package.json | 2 +- 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index da18c3a0c..a22ee7dd5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -52,7 +52,7 @@ "eslint-plugin-mocha": "11.2.0", "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", - "fast-xml-parser": "5.3.7", + "fast-xml-parser": "5.4.1", "globals": "17.3.0", "husky": "9.1.7", "lint-staged": "16.2.7", @@ -3352,10 +3352,24 @@ "fast-string-width": "^3.0.2" } }, + "node_modules/fast-xml-builder": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", + "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, "node_modules/fast-xml-parser": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.7.tgz", - "integrity": "sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.1.tgz", + "integrity": "sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==", + "dev": true, "funding": [ { "type": "github", @@ -3364,6 +3378,7 @@ ], "license": "MIT", "dependencies": { + "fast-xml-builder": "^1.0.0", "strnum": "^2.1.2" }, "bin": { @@ -6632,6 +6647,24 @@ "npm": ">=9" } }, + "node_modules/sfmc-sdk/node_modules/fast-xml-parser": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.7.tgz", + "integrity": "sha512-JzVLro9NQv92pOM/jTCR6mHlJh2FGwtomH8ZQjhFj/R29P2Fnj38OgPJVtcvYw6SuKClhgYuwUZf5b3rd8u2mA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.2" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/sfmc-sdk/node_modules/p-limit": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", diff --git a/package.json b/package.json index c56798a59..bc0b8ffb6 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "eslint-plugin-mocha": "11.2.0", "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", - "fast-xml-parser": "5.3.7", + "fast-xml-parser": "5.4.1", "globals": "17.3.0", "husky": "9.1.7", "lint-staged": "16.2.7", From c04c62d7eafc609765ebc38f698c182c1ea67605 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Feb 2026 10:18:43 +0000 Subject: [PATCH 09/22] Bump eslint-plugin-jsdoc from 62.7.0 to 62.7.1 Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 62.7.0 to 62.7.1. - [Release notes](https://github.com/gajus/eslint-plugin-jsdoc/releases) - [Commits](https://github.com/gajus/eslint-plugin-jsdoc/compare/v62.7.0...v62.7.1) --- updated-dependencies: - dependency-name: eslint-plugin-jsdoc dependency-version: 62.7.1 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index a22ee7dd5..c490340f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -48,7 +48,7 @@ "chai-files": "1.4.0", "eslint": "10.0.2", "eslint-config-ssjs": "2.0.0", - "eslint-plugin-jsdoc": "62.7.0", + "eslint-plugin-jsdoc": "62.7.1", "eslint-plugin-mocha": "11.2.0", "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", @@ -2849,9 +2849,9 @@ } }, "node_modules/eslint-plugin-jsdoc": { - "version": "62.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.0.tgz", - "integrity": "sha512-jootujJOIGMkCLN+/WgDFKtaclCt2MEEy9cZ1RyK19Az1JvVI3awbeMXNlJ6y4h8RWIJpcXqmxsu4t9NThYbNw==", + "version": "62.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-62.7.1.tgz", + "integrity": "sha512-4Zvx99Q7d1uggYBUX/AIjvoyqXhluGbbKrRmG8SQTLprPFg6fa293tVJH1o1GQwNe3lUydd8ZHzn37OaSncgSQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { diff --git a/package.json b/package.json index bc0b8ffb6..7c874f5b7 100644 --- a/package.json +++ b/package.json @@ -103,7 +103,7 @@ "chai-files": "1.4.0", "eslint": "10.0.2", "eslint-config-ssjs": "2.0.0", - "eslint-plugin-jsdoc": "62.7.0", + "eslint-plugin-jsdoc": "62.7.1", "eslint-plugin-mocha": "11.2.0", "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", From 2cd10711c78981245402ddc5e8bebe057b4aafdd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 22:16:40 +0000 Subject: [PATCH 10/22] Bump lint-staged from 16.2.7 to 16.3.1 Bumps [lint-staged](https://github.com/lint-staged/lint-staged) from 16.2.7 to 16.3.1. - [Release notes](https://github.com/lint-staged/lint-staged/releases) - [Changelog](https://github.com/lint-staged/lint-staged/blob/main/CHANGELOG.md) - [Commits](https://github.com/lint-staged/lint-staged/compare/v16.2.7...v16.3.1) --- updated-dependencies: - dependency-name: lint-staged dependency-version: 16.3.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 65 +++++++++++++++++++---------------------------- package.json | 2 +- 2 files changed, 27 insertions(+), 40 deletions(-) diff --git a/package-lock.json b/package-lock.json index c490340f9..17a1102e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -55,7 +55,7 @@ "fast-xml-parser": "5.4.1", "globals": "17.3.0", "husky": "9.1.7", - "lint-staged": "16.2.7", + "lint-staged": "16.3.1", "mocha": "11.7.5", "mock-fs": "5.3.0", "npm-run-all": "4.1.5", @@ -2170,9 +2170,9 @@ "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==" }, "node_modules/commander": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", - "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "dev": true, "license": "MIT", "engines": { @@ -4763,19 +4763,18 @@ } }, "node_modules/lint-staged": { - "version": "16.2.7", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.2.7.tgz", - "integrity": "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.3.1.tgz", + "integrity": "sha512-bqvvquXzFBAlSbluugR4KXAe4XnO/QZcKVszpkBtqLWa2KEiVy8n6Xp38OeUbv/gOJOX4Vo9u5pFt/ADvbm42Q==", "dev": true, "license": "MIT", "dependencies": { - "commander": "^14.0.2", + "commander": "^14.0.3", "listr2": "^9.0.5", "micromatch": "^4.0.8", - "nano-spawn": "^2.0.0", - "pidtree": "^0.6.0", "string-argv": "^0.3.2", - "yaml": "^2.8.1" + "tinyexec": "^1.0.2", + "yaml": "^2.8.2" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -5324,19 +5323,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/nano-spawn": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.0.0.tgz", - "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/nano-spawn?sponsor=1" - } - }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -5867,18 +5853,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/pluralize": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", @@ -7208,6 +7182,16 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "node_modules/tinyexec": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", + "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7772,9 +7756,9 @@ } }, "node_modules/yaml": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", - "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "dev": true, "license": "ISC", "bin": { @@ -7782,6 +7766,9 @@ }, "engines": { "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yargs": { diff --git a/package.json b/package.json index 7c874f5b7..f94a82d5d 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "fast-xml-parser": "5.4.1", "globals": "17.3.0", "husky": "9.1.7", - "lint-staged": "16.2.7", + "lint-staged": "16.3.1", "mocha": "11.7.5", "mock-fs": "5.3.0", "npm-run-all": "4.1.5", From ae106ab2077c1b011d88b6dec575b8a7efc47bc7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 09:22:46 +0000 Subject: [PATCH 11/22] Bump @types/node from 25.3.2 to 25.3.3 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 25.3.2 to 25.3.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.3.3 dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17a1102e9..1479bb514 100644 --- a/package-lock.json +++ b/package-lock.json @@ -39,7 +39,7 @@ "@types/fs-extra": "11.0.4", "@types/inquirer": "9.0.9", "@types/mocha": "10.0.8", - "@types/node": "25.3.2", + "@types/node": "25.3.3", "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", @@ -1110,9 +1110,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "25.3.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz", - "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==", + "version": "25.3.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.3.tgz", + "integrity": "sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==", "devOptional": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index f94a82d5d..473700d8a 100644 --- a/package.json +++ b/package.json @@ -94,7 +94,7 @@ "@types/fs-extra": "11.0.4", "@types/inquirer": "9.0.9", "@types/mocha": "10.0.8", - "@types/node": "25.3.2", + "@types/node": "25.3.3", "@types/yargs": "17.0.35", "assert": "2.1.0", "axios-mock-adapter": "2.0.0", From 26127db7342f8ce3e6d3fbdd2a8c412699d0beab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Mar 2026 13:04:41 +0000 Subject: [PATCH 12/22] Bump globals from 17.3.0 to 17.4.0 Bumps [globals](https://github.com/sindresorhus/globals) from 17.3.0 to 17.4.0. - [Release notes](https://github.com/sindresorhus/globals/releases) - [Commits](https://github.com/sindresorhus/globals/compare/v17.3.0...v17.4.0) --- updated-dependencies: - dependency-name: globals dependency-version: 17.4.0 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package-lock.json | 8 ++++---- package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1479bb514..ba3ced131 100644 --- a/package-lock.json +++ b/package-lock.json @@ -53,7 +53,7 @@ "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", "fast-xml-parser": "5.4.1", - "globals": "17.3.0", + "globals": "17.4.0", "husky": "9.1.7", "lint-staged": "16.3.1", "mocha": "11.7.5", @@ -3772,9 +3772,9 @@ } }, "node_modules/globals": { - "version": "17.3.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.3.0.tgz", - "integrity": "sha512-yMqGUQVVCkD4tqjOJf3TnrvaaHDMYp4VlUSObbkIiuCPe/ofdMBFIAcBbCSRFWOnos6qRiTVStDwqPLUclaxIw==", + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz", + "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 473700d8a..f8a5a9d4c 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "eslint-plugin-prettier": "5.5.5", "eslint-plugin-unicorn": "63.0.0", "fast-xml-parser": "5.4.1", - "globals": "17.3.0", + "globals": "17.4.0", "husky": "9.1.7", "lint-staged": "16.3.1", "mocha": "11.7.5", From b5c80eab77c6e19583fd51c1e4a9e5cce4892e4b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 17:42:40 +0000 Subject: [PATCH 13/22] Initial plan From 2be4a010f80a59a4af9cffcb087748d96a4b180a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:13:39 +0000 Subject: [PATCH 14/22] #2543 fix: prevent folder creation skip when same path exists in another BU Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- .husky/commit-msg | 2 +- .husky/post-checkout | 10 +- 0 | 0 @types/lib/metadataTypes/Folder.d.ts.map | 2 +- lib/metadataTypes/Folder.js | 7 +- ...samePath,ParentFolderID=89397-response.xml | 33 + .../retrieve-samePathOtherBU-response.xml | 564 ++++++++++++++++++ .../testFolder_samePath.folder-meta.json | 9 + test/type.folder.test.js | 41 ++ 9 files changed, 658 insertions(+), 10 deletions(-) mode change 100644 => 100755 .husky/post-checkout create mode 100644 0 create mode 100644 test/resources/9999999/dataFolder/create-ContentType=asset,Name=testFolder_samePath,ParentFolderID=89397-response.xml create mode 100644 test/resources/9999999/dataFolder/retrieve-samePathOtherBU-response.xml create mode 100644 test/resources/9999999/folder-deploy-samepath/Content Builder/testFolder_samePath.folder-meta.json diff --git a/.husky/commit-msg b/.husky/commit-msg index c1672c9e1..cf02777be 100644 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -2,7 +2,7 @@ INPUT_FILE=$1 START_LINE=`head -n1 $INPUT_FILE` PATTERN="^(#[[:digit:]]|Merge|Revert)" -if ! [[ "$START_LINE" =~ $PATTERN ]] ; then +if ! echo "$START_LINE" | grep -qE "$PATTERN" ; then echo "Bad commit message, see example: \"#431 commit message\", you provided: \"$START_LINE\"" exit 1 fi diff --git a/.husky/post-checkout b/.husky/post-checkout old mode 100644 new mode 100755 index 862908326..d57596672 --- a/.husky/post-checkout +++ b/.husky/post-checkout @@ -1,3 +1,4 @@ +#!/bin/bash # ### git commit message template ### git config commit.template .git/templatemessage TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '^((feature|bug|bugfix|fix|hotfix|task|chore)\/)?\K\d{1,7}' || true` @@ -11,24 +12,21 @@ echo "[POST-CHECKOUT] Setting template commit to '$TEMPLATE'" echo "$TEMPLATE" > ".git/templatemessage" -if [[ $SKIP_HOOKS>0 ]]; then +if [ "${SKIP_HOOKS:-0}" -gt 0 ] 2>/dev/null; then echo "[POST-CHECKOUT] skipping hooks ($SKIP_HOOKS)" exit 0 fi # ### run npm install ### echo "[POST-CHECKOUT] 📦 Checking for changes to dependencies" -# define how to split strings into array elements -IFS=$'\n' # $1 is the new HEAD pointer NEWHEAD=$1 # $2 is the previous HEAD pointer OLDHEAD=$2 # extract all paths to package-lock.json files -PACKAGE_LOCK_REGEX="(^package-lock\.json)" -PACKAGES=$(git diff --name-only $OLDHEAD $NEWHEAD | grep -E $PACKAGE_LOCK_REGEX || true) +PACKAGES=$(git diff --name-only "$OLDHEAD" "$NEWHEAD" | grep -E "^package-lock\.json" || true) -if [[ ${PACKAGES[@]} ]]; then +if [ -n "$PACKAGES" ]; then for package in $PACKAGES; do echo "📦 $package was changed." done diff --git a/0 b/0 new file mode 100644 index 000000000..e69de29bb diff --git a/@types/lib/metadataTypes/Folder.d.ts.map b/@types/lib/metadataTypes/Folder.d.ts.map index f6c3b600d..d87f882ec 100644 --- a/@types/lib/metadataTypes/Folder.d.ts.map +++ b/@types/lib/metadataTypes/Folder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA4J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA1xBwB,mBAAmB"} \ No newline at end of file +{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA+J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA7xBwB,mBAAmB"} \ No newline at end of file diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js index ed105cec7..5a8e7c956 100644 --- a/lib/metadataTypes/Folder.js +++ b/lib/metadataTypes/Folder.js @@ -224,9 +224,12 @@ class Folder extends MetadataType { let existingId; try { // perform a secondary check based on path - + // do not allow mapping folders from other BUs to avoid + // treating a same-path folder from another BU as already existing const cachedVersion = cache.getFolderByPath( - deployableMetadata.Path + deployableMetadata.Path, + undefined, + false ); existingId = cachedVersion?.ID; if ( diff --git a/test/resources/9999999/dataFolder/create-ContentType=asset,Name=testFolder_samePath,ParentFolderID=89397-response.xml b/test/resources/9999999/dataFolder/create-ContentType=asset,Name=testFolder_samePath,ParentFolderID=89397-response.xml new file mode 100644 index 000000000..9eb382160 --- /dev/null +++ b/test/resources/9999999/dataFolder/create-ContentType=asset,Name=testFolder_samePath,ParentFolderID=89397-response.xml @@ -0,0 +1,33 @@ + + + + CreateResponse + urn:uuid:50c68314-30a5-45d4-93aa-6dd1191190e3 + urn:uuid:00b40ac8-d7e8-4e55-8b88-fcf3569684a9 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2024-08-08T09:56:20Z + 2024-08-08T10:01:20Z + + + + + + + OK + Folder created successfully. + 0 + 88888 + a890243b-a4e1-4010-85e4-db6d6ae84502 + + 6b408e0b-ecbe-4b8e-9019-6376f6eeb0e2 + OK + + + diff --git a/test/resources/9999999/dataFolder/retrieve-samePathOtherBU-response.xml b/test/resources/9999999/dataFolder/retrieve-samePathOtherBU-response.xml new file mode 100644 index 000000000..feda90112 --- /dev/null +++ b/test/resources/9999999/dataFolder/retrieve-samePathOtherBU-response.xml @@ -0,0 +1,564 @@ + + + + RetrieveResponse + urn:uuid:f36f3303-3b5a-4641-8109-b26447634d91 + urn:uuid:33983968-28c4-4379-bb5f-f80ae32eb988 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2022-04-19T20:03:41Z + 2022-04-19T20:08:41Z + + + + + + OK + 02cd5ccb-8f84-4651-826f-71169eeecf05 + + + 9999999 + + + 2016-07-22T11:52:19.6 + 2016-07-22T11:52:19.6 + 2 + + dataextension_default + + + 0 + + + Data Extensions + + dataextension + true + false + true + + + + 9999999 + + + 2016-07-22T11:52:20.407 + 2016-07-22T11:52:20.407 + 999 + + queryactivity_default + + + 0 + + + Query + + queryactivity + true + false + true + + + + 9999999 + + + 2017-02-16T01:59:27.18 + 2017-02-16T01:59:27.18 + 412 + + mysubs_default + + + 0 + + + my subscribers + + mysubs + true + false + true + + + + 9999999 + + + 2017-02-16T01:59:27.177 + 2017-02-16T01:59:27.177 + 404 + + list_default + + + 0 + + + my lists + + list + true + false + true + + + + 9999999 + + + 2017-02-16T01:59:34.023 + 2017-02-16T01:59:34.023 + 424 + + publication_default + + + 0 + + + Publication Lists + + publication + true + false + true + + + + 9999999 + + + 2017-02-16T01:59:32.323 + 2017-02-16T01:59:32.323 + 419 + + suppression_list_default + + + 0 + + + Suppression Lists + + suppression_list + true + false + true + + + + 9999999 + + + 2017-02-16T01:59:32.323 + 2017-02-16T01:59:32.323 + 6298 + + journey_default + + + 0 + + + my journeys + The root folder for Journeys + journey + true + false + true + + + + 9999999 + + + 2019-10-25T05:35:17.337 + 2019-10-25T05:35:17.337 + 290937 + + + + + 0 + + + my automations + + automations + true + true + true + + + + 9999999 + + + 2017-02-08T10:19:37.123 + 2017-02-08T10:19:37.123 + 386 + + + + + 2 + + dataextension_default + + Einstein + + dataextension + true + true + true + + + + 9999999 + + + 2017-02-08T10:19:37.123 + 2017-02-08T10:19:37.123 + 66666 + + + + + 2 + + dataextension_default + + testExisting_FOLDER + + dataextension + true + true + true + + + + 9999999 + + + 2016-07-22T11:52:35.687 + 2016-07-22T11:52:35.687 + 89397 + + + + + 0 + + + Content Builder + The root folder for assets + asset + true + false + true + + + + 9999999 + + + 2016-07-29T12:13:07.7 + 2021-12-16T02:56:14.68 + 90888 + + + + + 89397 + + + Test Folder + + asset + true + true + true + + + + 9999999 + + + 2016-07-22T11:52:19.28 + 2016-07-22T11:52:19.28 + 89348 + + triggered_send_default + + + 0 + + + Triggered Sends + + triggered_send + true + false + true + + + + 9999999 + + + 2016-07-22T11:52:34.983 + 2016-07-22T11:52:34.983 + 89396 + + triggered_send_journeybuilder + + + 0 + + + Journey Builder Sends + + triggered_send_journeybuilder + true + false + true + + + + 9999999 + + + 2016-07-29T12:13:27.28 + 2016-07-29T12:13:27.28 + 90889 + + HiddenCategory_default + + + 0 + + + HiddenCategory + Hidden folder to store Hidden items + Hidden + true + false + true + + + + 9999999 + + + 2016-08-25T10:04:09.12 + 2016-08-25T10:04:09.12 + 94030 + + + + + 89396 + + triggered_send_journeybuilder + + Satisfaction Score Survey + + triggered_send_journeybuilder + true + true + true + + + + 9999999 + + + 2016-08-25T10:04:09.133 + 2016-08-25T10:04:09.133 + 94031 + + + + + 94030 + + + Version 1 + + triggered_send_journeybuilder + true + true + true + + + + 9999999 + + + 2021-06-09T10:17:06.27 + 2021-06-09T10:17:06.27 + 664654 + + 6aa28490-6577-4cb2-8eac-fd5e4f983cae + + + 317169 + + HiddenJourneyBuilderTriggeredSends_d + + 6aa28490-6577-4cb2-8eac-fd5e4f983cae_V9 + triggered_send folder to store triggered_send items + triggered_send + true + true + true + + + + 9999999 + + + 2022-07-31T19:55:31.657 + 2022-07-31T19:55:31.657 + 742869 + + 77211381-9967-4472-bd12-f58d4d5952a1 + + + 317169 + + HiddenJourneyBuilderTriggeredSends_d + + 77211381-9967-4472-bd12-f58d4d5952a1_V1 + triggered_send folder to store triggered_send items + triggered_send + true + true + true + + + + 9999999 + + + 2022-07-31T19:56:51.297 + 2022-07-31T19:56:51.297 + 742871 + + HiddenJourneyBuilderSimulationTrigge + + + 90889 + + HiddenCategory_default + + HiddenJourneyBuilderSimulationTriggeredSends + triggered_send_journeybuilder folder to store triggered_send_journeybuilder items + triggered_send_journeybuilder + true + true + true + + + + 9999999 + + + 2023-03-08T10:26:55.787 + 2023-03-08T10:26:55.787 + 771879 + + 8c24f428-4da8-4df6-97a7-beba5166c3c7 + + + 317169 + + HiddenJourneyBuilderTriggeredSends_d + + 8c24f428-4da8-4df6-97a7-beba5166c3c7_V1 + triggered_send folder to store triggered_send items + triggered_send + true + true + true + + + + 9999999 + + + 2023-04-10T15:46:09.947 + 2023-04-10T15:46:09.947 + 776623 + + 0a85b483-4208-4377-87fb-25794f5df244 + + + 317169 + + HiddenJourneyBuilderTriggeredSends_d + + 0a85b483-4208-4377-87fb-25794f5df244_V1 + triggered_send folder to store triggered_send items + triggered_send + true + true + true + + + + 9999999 + + + 2020-03-06T07:57:37.633 + 2020-03-06T07:57:37.633 + 317169 + + HiddenJourneyBuilderTriggeredSends_d + + + 90889 + + HiddenCategory_default + + HiddenJourneyBuilderTriggeredSends + triggered_send folder to store triggered_send items + triggered_send + true + true + true + + + + + 1111111 + + + 2022-01-01T00:00:00.0 + 2022-01-01T00:00:00.0 + 77777 + + + + + 89397 + + + testFolder_samePath + + asset + true + true + true + + + + diff --git a/test/resources/9999999/folder-deploy-samepath/Content Builder/testFolder_samePath.folder-meta.json b/test/resources/9999999/folder-deploy-samepath/Content Builder/testFolder_samePath.folder-meta.json new file mode 100644 index 000000000..876cd1479 --- /dev/null +++ b/test/resources/9999999/folder-deploy-samepath/Content Builder/testFolder_samePath.folder-meta.json @@ -0,0 +1,9 @@ +{ + "Name": "testFolder_samePath", + "Description": "", + "ContentType": "asset", + "IsActive": true, + "IsEditable": true, + "AllowChildren": true, + "_generated": true +} diff --git a/test/type.folder.test.js b/test/type.folder.test.js index 8a3a87743..b7054429a 100644 --- a/test/type.folder.test.js +++ b/test/type.folder.test.js @@ -103,5 +103,46 @@ describe('type: folder', () => { ); return; }); + + it('Should create folder when same path exists in another Business Unit', async () => { + // prepare + // Use folder deploy data with an asset folder path + testUtils.copyToDeploy('folder-deploy-samepath', 'folder'); + // Use a modified retrieve response that includes 'Content Builder/testFolder_samePath' + // from a different BU (Client.ID=1111111). ContentType 'asset' is in folderTypesFromParent + // so it will be cached even though it belongs to another BU - simulating the bug scenario + await testUtils.copyFile( + 'dataFolder/retrieve-samePathOtherBU-response.xml', + 'dataFolder/retrieve-response.xml' + ); + + const deployed = await handler.deploy('testInstance/testBU', ['folder']); + // THEN + assert.equal(process.exitCode, 0, 'deploy should not have thrown an error'); + + // check what was deployed - 'Content Builder/testFolder_samePath' should be created + // even though it exists in another BU (1111111) + const deployedFolderPaths = deployed['testInstance/testBU']?.folder + ? Object.values(deployed['testInstance/testBU']?.folder).map((f) => f.Path) + : []; + assert.include( + deployedFolderPaths, + 'Content Builder/testFolder_samePath', + "'Content Builder/testFolder_samePath' should have been created in current BU, not skipped because it exists in another BU" + ); + + const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); + // 'Content Builder/testFolder_samePath' must be created in current BU (not skipped due to same path in other BU) + assert.ok( + createSoapCallouts.some( + (c) => + c.includes('testFolder_samePath') && + c.includes('asset') && + c.includes('89397') + ), + "'Content Builder/testFolder_samePath' folder creation callout not found - folder was incorrectly skipped" + ); + return; + }); }); }); From 41258f71607cf5508c8b24aa87f842bb6b10e865 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:14:07 +0000 Subject: [PATCH 15/22] #2543 chore: remove spurious empty file Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- 0 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 0 diff --git a/0 b/0 deleted file mode 100644 index e69de29bb..000000000 From 168060bf29b1e1f37e66897f122327c900ec0acf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 18:15:38 +0000 Subject: [PATCH 16/22] #2543 chore: fix shebang in post-checkout hook to use sh Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- .husky/post-checkout | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.husky/post-checkout b/.husky/post-checkout index d57596672..b1ebc3d06 100755 --- a/.husky/post-checkout +++ b/.husky/post-checkout @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # ### git commit message template ### git config commit.template .git/templatemessage TICKETID=`git rev-parse --abbrev-ref HEAD | LC_ALL=en_US.utf8 grep -oP '^((feature|bug|bugfix|fix|hotfix|task|chore)\/)?\K\d{1,7}' || true` From 75b29e0c50b18458afd6106fcf9efb153fdedf8a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 20:46:46 +0000 Subject: [PATCH 17/22] Initial plan From 4e165199e2f1bb9448b4baef095d99c254170e44 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 21:21:31 +0000 Subject: [PATCH 18/22] #1781 fix folder path when folder name contains slash character Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- @types/lib/Deployer.d.ts.map | 2 +- @types/lib/metadataTypes/Asset.d.ts.map | 2 +- @types/lib/metadataTypes/Folder.d.ts.map | 2 +- @types/lib/util/util.d.ts | 1 + @types/lib/util/util.d.ts.map | 2 +- lib/Deployer.js | 3 +- lib/metadataTypes/Asset.js | 9 +- lib/metadataTypes/Folder.js | 20 +++-- lib/util/util.js | 2 + .../9999999/dataFolder/create-response.xml | 33 ++++++++ .../Headers%2FFolders.folder-meta.json | 9 ++ ...testNew_slashFolderScript.script-meta.json | 6 ++ ...testNew_slashFolderScript.script-meta.ssjs | 3 + test/type.folder.test.js | 82 +++++++++++++++++++ 14 files changed, 165 insertions(+), 11 deletions(-) create mode 100644 test/resources/9999999/dataFolder/create-response.xml create mode 100644 test/resources/9999999/folder-deploy-slash/Content Builder/Headers%2FFolders.folder-meta.json create mode 100644 test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json create mode 100644 test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs diff --git a/@types/lib/Deployer.d.ts.map b/@types/lib/Deployer.d.ts.map index a6bd23c6a..5587dc0cf 100644 --- a/@types/lib/Deployer.d.ts.map +++ b/@types/lib/Deployer.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Deployer.d.ts","sourceRoot":"","sources":["../../lib/Deployer.js"],"names":[],"mappings":";uBAYa,OAAO,qBAAqB,EAAE,QAAQ;0BACtC,OAAO,qBAAqB,EAAE,WAAW;8BACzC,OAAO,qBAAqB,EAAE,eAAe;sBAC7C,OAAO,qBAAqB,EAAE,OAAO;+BACrC,OAAO,qBAAqB,EAAE,gBAAgB;mCAC9C,OAAO,qBAAqB,EAAE,oBAAoB;kCAClD,OAAO,qBAAqB,EAAE,mBAAmB;8BACjD,OAAO,qBAAqB,EAAE,eAAe;iCAC7C,OAAO,qBAAqB,EAAE,kBAAkB;oCAChD,OAAO,qBAAqB,EAAE,qBAAqB;gCACnD,OAAO,qBAAqB,EAAE,iBAAiB;0BAC/C,OAAO,qBAAqB,EAAE,WAAW;mCACzC,OAAO,qBAAqB,EAAE,oBAAoB;2BAClD,OAAO,qBAAqB,EAAE,YAAY;sBAE1C,OAAO,qBAAqB,EAAE,OAAO;AAhBlD;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH;IA0BI;;;;;;;OAOG;IACH,4BALW,MAAM,qBACN,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE;YAAQ,MAAM,GAAE,oBAAoB;KAAC,CAAC,CA2J3D;IAED;;;;;;;;;OASG;IACH,uBAPW,MAAM,MACN,MAAM,cACN,OAAO,YACP,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE,oBAAoB,CAAC,CAsB1C;IA8HD;;;;;;;OAOG;IACH,iCALW,MAAM,YACN,MAAM,EAAE,gBACR,OAAO,GACL,OAAO,CAAE,oBAAoB,CAAC,CA4B1C;IAED;;;;;;;OAOG;IACH,0CALW,MAAM,YACN,oBAAoB,mBACpB,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,CAAC,CAiH5B;IAnfD;;;;;OAKG;IACH,wBAHW,OAAO,YACP,QAAQ,EAmBlB;IAhBG,iDAAwB;IACxB,kDAA4B;IAC5B,kBAIE;IACF,oBAIE;IA0MN;;;;;;OAMG;IACH,gBAJW,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE,oBAAoB,CAAC,CAqH1C;IA7GO,mCAAmC;IACnC,UADW,oBAAoB,CACuC;CA0QjF"} \ No newline at end of file +{"version":3,"file":"Deployer.d.ts","sourceRoot":"","sources":["../../lib/Deployer.js"],"names":[],"mappings":";uBAYa,OAAO,qBAAqB,EAAE,QAAQ;0BACtC,OAAO,qBAAqB,EAAE,WAAW;8BACzC,OAAO,qBAAqB,EAAE,eAAe;sBAC7C,OAAO,qBAAqB,EAAE,OAAO;+BACrC,OAAO,qBAAqB,EAAE,gBAAgB;mCAC9C,OAAO,qBAAqB,EAAE,oBAAoB;kCAClD,OAAO,qBAAqB,EAAE,mBAAmB;8BACjD,OAAO,qBAAqB,EAAE,eAAe;iCAC7C,OAAO,qBAAqB,EAAE,kBAAkB;oCAChD,OAAO,qBAAqB,EAAE,qBAAqB;gCACnD,OAAO,qBAAqB,EAAE,iBAAiB;0BAC/C,OAAO,qBAAqB,EAAE,WAAW;mCACzC,OAAO,qBAAqB,EAAE,oBAAoB;2BAClD,OAAO,qBAAqB,EAAE,YAAY;sBAE1C,OAAO,qBAAqB,EAAE,OAAO;AAhBlD;;;;;;;;;;;;;;;;;GAiBG;AAEH;;;GAGG;AACH;IA0BI;;;;;;;OAOG;IACH,4BALW,MAAM,qBACN,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE;YAAQ,MAAM,GAAE,oBAAoB;KAAC,CAAC,CA2J3D;IAED;;;;;;;;;OASG;IACH,uBAPW,MAAM,MACN,MAAM,cACN,OAAO,YACP,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE,oBAAoB,CAAC,CAsB1C;IA8HD;;;;;;;OAOG;IACH,iCALW,MAAM,YACN,MAAM,EAAE,gBACR,OAAO,GACL,OAAO,CAAE,oBAAoB,CAAC,CA4B1C;IAED;;;;;;;OAOG;IACH,0CALW,MAAM,YACN,oBAAoB,mBACpB,MAAM,EAAE,GACN,OAAO,CAAE,MAAM,CAAC,CAkH5B;IApfD;;;;;OAKG;IACH,wBAHW,OAAO,YACP,QAAQ,EAmBlB;IAhBG,iDAAwB;IACxB,kDAA4B;IAC5B,kBAIE;IACF,oBAIE;IA0MN;;;;;;OAMG;IACH,gBAJW,MAAM,EAAE,GAAG,YAAY,WACvB,MAAM,EAAE,GACN,OAAO,CAAE,oBAAoB,CAAC,CAqH1C;IA7GO,mCAAmC;IACnC,UADW,oBAAoB,CACuC;CA2QjF"} \ No newline at end of file diff --git a/@types/lib/metadataTypes/Asset.d.ts.map b/@types/lib/metadataTypes/Asset.d.ts.map index 2a8423204..82bfbc36e 100644 --- a/@types/lib/metadataTypes/Asset.d.ts.map +++ b/@types/lib/metadataTypes/Asset.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Asset.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Asset.js"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/@types/lib/metadataTypes/Folder.d.ts.map b/@types/lib/metadataTypes/Folder.d.ts.map index d87f882ec..c40254667 100644 --- a/@types/lib/metadataTypes/Folder.d.ts.map +++ b/@types/lib/metadataTypes/Folder.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CA0IvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA+J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAkE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA7xBwB,mBAAmB"} \ No newline at end of file +{"version":3,"file":"Folder.d.ts","sourceRoot":"","sources":["../../../lib/metadataTypes/Folder.js"],"names":[],"mappings":";uBASa,OAAO,wBAAwB,EAAE,QAAQ;0BACzC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;+BAChD,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;gCACnD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;uBAE5C,OAAO,wBAAwB,EAAE,QAAQ;sBACzC,OAAO,wBAAwB,EAAE,OAAO;wBACxC,OAAO,wBAAwB,EAAE,SAAS;AAdvD;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH;IACI;;;;;;;;OAQG;IACH,6BANW,MAAM,qBACN,MAAM,EAAE,eACR,MAAM,EAAE,QACR,MAAM,GACJ,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAgJvD;IAED;;;;;;OAMG;IACH,4BAJW,IAAI,GAAG,MAAM,EAAE,eACf,MAAM,EAAE,GACN,OAAO,CAAE;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAC,CAAC,CAIvD;IAED;;;;;;;OAOG;IACH,wBAHW,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CA+J7B;IAED;;;;;OAKG;IACH,6BAHW,QAAQ,GACN,OAAO,CAAE,GAAG,CAAC,CAoHzB;IAED;;;;;OAKG;IACH,6BAHW,gBAAgB,GACd,OAAO,CAAE,GAAG,CAAC,CA6EzB;IAED;;;;;OAKG;IACH,gCAHW,QAAQ,GACN,OAAO,CAAE,QAAQ,CAAC,CAgD9B;IAED;;;;;;OAMG;IACH,0BAJW,MAAM,gBACN,OAAO,GACL,OAAO,CAAE,OAAO,CAAC,CAsE7B;IAED;;;;;;;OAOG;IACH,yCALW,MAAM,EAAE,qBACR,OAAO,oBACP,MAAM,EAAE,GACN,OAAO,CAAE,QAAQ,EAAE,CAAC,CA2BhC;IAED;;;;;OAKG;IACH,mCAHW,QAAQ,GACN,QAAQ,CAIpB;IAED;;;;;;OAMG;IACH,4BAJW,OAAO,eACP,MAAM,GACJ,OAAO,CAAE,OAAO,CAAC,CA4D7B;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAvyBwB,mBAAmB"} \ No newline at end of file diff --git a/@types/lib/util/util.d.ts b/@types/lib/util/util.d.ts index f2c129454..b8bfcdc36 100644 --- a/@types/lib/util/util.d.ts +++ b/@types/lib/util/util.d.ts @@ -5,6 +5,7 @@ export namespace Util { let defaultGitBranch: string; let parentBuName: string; let standardizedSplitChar: string; + let folderNameSlashEscapeChar: string; let skipInteraction: SkipInteraction; let packageJsonMcdev: any; let OPTIONS: {}; diff --git a/@types/lib/util/util.d.ts.map b/@types/lib/util/util.d.ts.map index 62b5f208b..d9b7b42e5 100644 --- a/@types/lib/util/util.d.ts.map +++ b/@types/lib/util/util.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../lib/util/util.js"],"names":[],"mappings":";;;;;;;;yBAiDe,eAAe;;;;;IAO1B;;;;;;OAMG;IACH;;sBAHW,MAAM,EAAE;;MAalB;IAED;;;;;;OAMG;IACH,iCAJW,MAAM,EAAE,UACR,MAAM,GACJ,OAAO,CAInB;IAED;;;;;;OAMG;IACH,sCAJW,MAAM,EAAE,UACR,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,6BAJW,MAAM,cACN,OAAO,GACL,OAAO,CAcnB;IAED;;;;;;OAMG;IACH,oCAJW,MAAM,EAAE,cACR,OAAO,GACL,OAAO,CAYnB;IAED;;;;;OAKG;IACH,kCAHW,MAAM,cACN,OAAO,QAqCjB;IACD;;;;;;OAMG;IACH,oDALW,MAAM,GAAG,YAAY,WACrB,MAAM,EAAE,gBACR,MAAM,GACJ,YAAY,GAAG,SAAS,CAwBpC;IAED;;;;OAIG;IACH,6BAFa,IAAI,CAKhB;IAED;;;;;;OAMG;IACH,2BAHW,GAAC,GACC,OAAO,CAInB;IAED;;;;;;OAMG;IACH,4BAHW,GAAC,GACC,OAAO,CAInB;IAQQ,wBAJE,MAAM,GAAG,MAAM,GAAG,OAAO,WAAW,MAAM,SAC1C,MAAM,GAAG,MAAM,GAAG,OAAO,WAAW,MAAM,GACxC,OAAO,CAgBnB;IAQc,sDAFF,OAAO,CAQnB;IAQe,+BAJL,MAAM,SACN,MAAM,GACJ,OAAO,CAYnB;IAED;;;;;;OAMG;IACH,oCAJW,MAAM,kBACN,OAAO,GACL,OAAO,CAoBnB;IAED;;;;;;;OAOG;IACH,+BALW,OAAO,gBACP,MAAM,kBACN,OAAO,GACL,OAAO,CAgBnB;IAED;;;;;OAKG;IACH,yCAHW,MAAM,GACJ;QAAC,IAAI,EAAC,MAAM,CAAC;QAAC,OAAO,EAAC,MAAM,CAAA;KAAC,CAWzC;IAED;;;;;OAKG;IACH,+BAHW,uBAAuB,GAAC,kBAAkB,GACxC,MAAM,EAAE,CA2BpB;IACD;;;;;;;;OAQG;IACH,kCALW,uBAAuB,GAAC,kBAAkB,iBAC1C,MAAM,EAAE,SACR,OAAO,GACL,MAAM,EAAE,CAmBpB;qBAEU,MAAM;IASU,+CAHhB,OAAO,GACL,MAAM,CAqElB;;gBAMS,MAAM;IAWH,+BAJF,OAAO,cACP,OAAO,GACL,IAAI,CAsFhB;IAYe,+BAPL,MAAM,QACN,MAAM,UACN,MAAM,WACN,GAAC,WACD,MAAM,GACJ,IAAI,CAiBhB;IAUgB,8BAJN,MAAM,GAAG,MAAM,OACf,WAAW,GACT,MAAM,GAAG,MAAM,CA2B3B;IASW,0BAJD,MAAM,OACN,MAAM,GAAG,MAAM,GACb,MAAM,CASlB;IAED;;;;;OAKG;IACH,yCAHW,MAAM,GACJ,MAAM,EAAE,CAmBpB;IAED;;;;;OAKG;IACH,sCAHW,MAAM,EAAE;;MAuFlB;IAED;;;;;;OAMG;IACH,8BAJW,MAAM,OACN,MAAM,GACJ,GAAG,CAIf;IAED;;;;;;;OAOG;IACH,uBALW,MAAM,SACN,MAAM,EAAE,eACR,OAAO,GACL,MAAM,GAAC,IAAI,CAuBvB;IAED;;;;;;;OAOG;IACH,uCALW,gBAAgB,EAAE,eAClB,MAAM,eACN,MAAM,GACJ,gBAAgB,CAc5B;IAED;;;;;;;;OAQG;IACH,+BALG;QAAuB,MAAM,GAArB,OAAO;QACQ,OAAO,GAAtB,OAAO;QACQ,KAAK,GAApB,OAAO;KACf,GAAU,IAAI,CA2BhB;IAED;;;;OAIG;IACH,uBAFW,MAAM,QAMhB;IAED;;;;;OAKG;IACH,+BAHW,MAAM,eACN,MAAM,QAMhB;IASgB,qCAJN,GAAG,UACH,MAAM,SACN,gBAAgB,QAM1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiCD;;;;;OAKG;IACH,yBAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,kCAJW,GAAG,gBACH,gBAAgB,GACd,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,oCAJW,GAAG,gBACH,gBAAgB,GACd,MAAM,CAIlB;IAED;;;;;;OAMG;IACH,gCAJW,GAAG,gBACH,gBAAgB,GACd,MAAM,CAOlB;IAED;;;;;;OAMG;IACH,iCAJW,MAAM,EAAE,WACR,MAAM,GACJ,IAAI,CAUhB;IAED;;;;;;OAMG;IACH,+BAJW,MAAM,EAAE,GAAG,MAAM,SACjB,OAAO,GACL,MAAM,CAgBlB;IAED;;;;;OAKG;IACH,mBAHW,MAAM,GACJ,OAAO,CAAE,IAAI,CAAC,CAU1B;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,uBAHW,MAAM,GACJ,MAAM,CAoClB;IAED;;;;;;OAMG;IACH,gCAJW,MAAM,UACN,MAAM,GACJ,OAAO,CAoBnB;IAED;;;;;;;OAOG;IACH,8BALW,gBAAgB,cAChB,MAAM,YACN,MAAM,GACJ,OAAO,CAuCnB;IAED;;;;;OAKG;IACH,oCAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;;;;OAOG;IACH,qCALW,MAAM,GAAG,MAAM,EAAE,UACjB,MAAM,EAAE,gBACR,OAAO,GACL,YAAY,CAkBxB;IAED;;;;;OAKG;IACH,6CAHW,YAAY,GACV,MAAM,CAelB;IAED;;;;;OAKG;IACH,gDAHW,YAAY,GACV,MAAM,CA4BlB;IAED;;;;;OAKG;IACH,yCAHW,YAAY,GACV,MAAM,CAQlB;IAED;;;;;;;OAOG;IACH,yDAFa,OAAO,CAAE,GAAG,GAAG,SAAS,CAAC,CAQrC;IAED;;;;;OAKG;IACH,yCAHW,MAAM,GACJ,OAAO,CAMnB;IACD;;;;;;OAMG;IACH,8BAJW,GAAG,OACH,MAAM,SAehB;IACD;;;;;OAKG;IACH,mCAHW,MAAM,GACJ,MAAM,CASlB;;yBAl0CQ,OAAO,wBAAwB,EAAE,UAAU;uBAC3C,OAAO,wBAAwB,EAAE,QAAQ;oBACzC,OAAO,wBAAwB,EAAE,KAAK;0BACtC,OAAO,wBAAwB,EAAE,WAAW;8BAC5C,OAAO,wBAAwB,EAAE,eAAe;2BAChD,OAAO,wBAAwB,EAAE,YAAY;0BAC7C,OAAO,wBAAwB,EAAE,WAAW;qBAC5C,OAAO,wBAAwB,EAAE,MAAM;sBACvC,OAAO,wBAAwB,EAAE,OAAO;+BACxC,OAAO,wBAAwB,EAAE,gBAAgB;mCACjD,OAAO,wBAAwB,EAAE,oBAAoB;kCACrD,OAAO,wBAAwB,EAAE,mBAAmB;8BACpD,OAAO,wBAAwB,EAAE,eAAe;iCAChD,OAAO,wBAAwB,EAAE,kBAAkB;oCACnD,OAAO,wBAAwB,EAAE,qBAAqB;mCACtD,OAAO,wBAAwB,EAAE,oBAAoB;8BACrD,OAAO,wBAAwB,EAAE,eAAe;gCAChD,OAAO,wBAAwB,EAAE,iBAAiB;0BAClD,OAAO,wBAAwB,EAAE,WAAW;2BAC5C,OAAO,wBAAwB,EAAE,YAAY;uBAC7C,OAAO,wBAAwB,EAAE,QAAQ"} \ No newline at end of file diff --git a/lib/Deployer.js b/lib/Deployer.js index d59265ed2..f43b564e5 100644 --- a/lib/Deployer.js +++ b/lib/Deployer.js @@ -508,7 +508,8 @@ class Deployer { } folderMetadata[`on-the-fly-${i}`] = { Path: folder, - Name: folder.split('/').pop(), + // unescape folder name slash escape chars to get the actual SFMC folder name + Name: folder.split('/').pop().replaceAll(Util.folderNameSlashEscapeChar, '/'), Description: '', // required for Create, omitted for update via definition file ContentType: contentType, IsActive: true, // would be auto-updated for existing folders if needed diff --git a/lib/metadataTypes/Asset.js b/lib/metadataTypes/Asset.js index a74707635..cd8a55997 100644 --- a/lib/metadataTypes/Asset.js +++ b/lib/metadataTypes/Asset.js @@ -2584,7 +2584,14 @@ class Asset extends MetadataType { if (json.folder) { Util.logger.info( - ` %%= ContentBlockByName("${json.folder.split('/').join('\\') + '\\' + json.name}") =%%` + ` %%= ContentBlockByName("${ + json.folder + .split('/') + .map((s) => s.replaceAll(Util.folderNameSlashEscapeChar, '/')) + .join('\\') + + '\\' + + json.name + }") =%%` ); if (json.folder.includes('&') || json.name.includes('&')) { Util.logger.warn( diff --git a/lib/metadataTypes/Folder.js b/lib/metadataTypes/Folder.js index 5a8e7c956..c80694249 100644 --- a/lib/metadataTypes/Folder.js +++ b/lib/metadataTypes/Folder.js @@ -93,12 +93,18 @@ class Folder extends MetadataType { if (idMap[idMap[id].ParentFolder.ID].Path) { const parent = idMap[idMap[id].ParentFolder.ID]; // we use / here not system separator as it is important to keep metadata consistent - idMap[id].Path = [parent.Path, idMap[id].Name].join( - Util.standardizedSplitChar - ); + // replace '/' in folder names with escape char to avoid confusion with the path separator + idMap[id].Path = [ + parent.Path, + idMap[id].Name.replaceAll('/', Util.folderNameSlashEscapeChar), + ].join(Util.standardizedSplitChar); idMap[id].ParentFolder.Path = parent.Path; } else { - idMap[id].Path = idMap[id].Name; + // replace '/' in folder names with escape char to avoid confusion with the path separator + idMap[id].Path = idMap[id].Name.replaceAll( + '/', + Util.folderNameSlashEscapeChar + ); } } else { Util.logger.info( @@ -646,9 +652,13 @@ class Folder extends MetadataType { ); if (fileContent.Name === fileNameWithoutEnding) { + // replace '/' in folder names with escape char to match how paths are built during retrieve fileContent.Path = (standardSubDir ? standardSubDir + '/' : '') + - fileNameWithoutEnding; + fileNameWithoutEnding.replaceAll( + '/', + Util.folderNameSlashEscapeChar + ); fileContent.ParentFolder = { Path: standardSubDir, }; diff --git a/lib/util/util.js b/lib/util/util.js index e6cd16f32..1bb9849e1 100644 --- a/lib/util/util.js +++ b/lib/util/util.js @@ -45,6 +45,8 @@ export const Util = { defaultGitBranch: 'main', parentBuName: '_ParentBU_', standardizedSplitChar: '/', + /** used to replace '/' in folder names to avoid confusion with the path separator */ + folderNameSlashEscapeChar: '\u2215', /** @type {SkipInteraction} */ skipInteraction: null, packageJsonMcdev: readJsonSync(path.join(__dirname, '../../package.json')), diff --git a/test/resources/9999999/dataFolder/create-response.xml b/test/resources/9999999/dataFolder/create-response.xml new file mode 100644 index 000000000..ebbd01616 --- /dev/null +++ b/test/resources/9999999/dataFolder/create-response.xml @@ -0,0 +1,33 @@ + + + + CreateResponse + urn:uuid:50c68314-30a5-45d4-93aa-6dd1191190e3 + urn:uuid:00b40ac8-d7e8-4e55-8b88-fcf3569684a9 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2024-08-08T09:56:20Z + 2024-08-08T10:01:20Z + + + + + + + OK + Folder created successfully. + 0 + 862099 + d890243b-a4e1-4010-85e4-db6d6ae84502 + + 5b408e0b-ecbe-4b8e-9019-6376f6eeb0e2 + OK + + + diff --git a/test/resources/9999999/folder-deploy-slash/Content Builder/Headers%2FFolders.folder-meta.json b/test/resources/9999999/folder-deploy-slash/Content Builder/Headers%2FFolders.folder-meta.json new file mode 100644 index 000000000..1e7d61b70 --- /dev/null +++ b/test/resources/9999999/folder-deploy-slash/Content Builder/Headers%2FFolders.folder-meta.json @@ -0,0 +1,9 @@ +{ + "Name": "Headers/Folders", + "Description": "", + "ContentType": "asset", + "IsActive": true, + "IsEditable": true, + "AllowChildren": true, + "_generated": true +} diff --git a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json new file mode 100644 index 000000000..15577e8fc --- /dev/null +++ b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json @@ -0,0 +1,6 @@ +{ + "description": "created on deploy", + "key": "testNew_slashFolderScript", + "name": "testNew_slashFolderScript", + "r__folder_Path": "Scripts/Headers\u2215Folders" +} diff --git a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs new file mode 100644 index 000000000..5b434e267 --- /dev/null +++ b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs @@ -0,0 +1,3 @@ + diff --git a/test/type.folder.test.js b/test/type.folder.test.js index b7054429a..3b79a64d3 100644 --- a/test/type.folder.test.js +++ b/test/type.folder.test.js @@ -6,6 +6,7 @@ import chaiFiles from 'chai-files'; import cache from '../lib/util/cache.js'; import * as testUtils from './utils.js'; import handler from '../lib/index.js'; +import { Util } from '../lib/util/util.js'; chai.use(chaiFiles); describe('type: folder', () => { @@ -144,5 +145,86 @@ describe('type: folder', () => { ); return; }); + + it('Should create a folder whose name contains a slash character (direct folder deploy)', async () => { + // GIVEN a folder deploy file named Headers%2FFolders.folder-meta.json with Name "Headers/Folders" + // (the % encoding represents the actual '/' in the SFMC folder name) + testUtils.copyToDeploy('folder-deploy-slash', 'folder'); + + const deployed = await handler.deploy('testInstance/testBU', ['folder']); + // THEN + assert.equal(process.exitCode, 0, 'deploy should not have thrown an error'); + + // Verify the deployed path uses the escape char (∕) not the real slash + const deployedFolderPaths = deployed['testInstance/testBU']?.folder + ? Object.values(deployed['testInstance/testBU']?.folder).map((f) => f.Path) + : []; + assert.include( + deployedFolderPaths, + 'Content Builder/Headers' + Util.folderNameSlashEscapeChar + 'Folders', + 'deployed folder path should use escape char for the slash in folder name' + ); + + // Verify that the SOAP Create callout uses the REAL slash character in the Name field + // (not the escape character), so that SFMC creates a folder named "Headers/Folders" + const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); + assert.ok( + createSoapCallouts.some( + (c) => + c.includes('Headers/Folders') && + c.includes('asset') && + c.includes('89397') + ), + "SOAP create for 'Headers/Folders' should use the real slash in Name, not the escape char" + ); + // Verify the escape char was NOT sent as the folder name + assert.ok( + !createSoapCallouts.some((c) => + c.includes('Headers' + Util.folderNameSlashEscapeChar + 'Folders') + ), + 'SOAP create should NOT use the escape char in the Name field' + ); + return; + }); + + it('Should create a folder whose name contains a slash when triggered via r__folder_Path from another type (script)', async () => { + // GIVEN a script deploy with r__folder_Path pointing to a subfolder whose name contains a slash + // The escape char (∕) in r__folder_Path separates the slash-in-name from path separators + testUtils.copyToDeploy('script-slashfolder-deploy', 'script'); + + const deployed = await handler.deploy('testInstance/testBU', ['script']); + // THEN + assert.equal(process.exitCode, 0, 'deploy should not have thrown an error'); + + // Verify the script was deployed + assert.equal( + deployed['testInstance/testBU']?.script + ? Object.keys(deployed['testInstance/testBU']?.script).length + : 0, + 1, + 'one script should have been deployed' + ); + + // Verify the auto-generated folder was created with REAL slash in the SOAP Name field + // (not the escape char), so SFMC creates a folder named "Headers/Folders" + const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); + assert.ok( + createSoapCallouts.some( + (c) => + c.includes('Headers/Folders') && + c.includes('ssjsactivity') && + c.includes('304') + ), + "SOAP create for 'Scripts/Headers∕Folders' should send Headers/Folders with real slash" + ); + // Verify the escape char was NOT sent as the folder name + assert.ok( + !createSoapCallouts.some((c) => + c.includes('Headers' + Util.folderNameSlashEscapeChar + 'Folders') + ), + 'SOAP create should NOT use the escape char in the Name field' + ); + return; + }); }); }); From b8f0916d494a44eaff44daaeffc19592d4a8bedc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:21:29 +0000 Subject: [PATCH 19/22] #1781 render U+2215 char in test fixture instead of escape sequence Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- .../testNew_slashFolderScript.script-meta.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json index 15577e8fc..bfea9e159 100644 --- a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json +++ b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json @@ -2,5 +2,5 @@ "description": "created on deploy", "key": "testNew_slashFolderScript", "name": "testNew_slashFolderScript", - "r__folder_Path": "Scripts/Headers\u2215Folders" + "r__folder_Path": "Scripts/Headers∕Folders" } From bea64c6cba38d65a5064a539699e666e573ab47e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:31:55 +0000 Subject: [PATCH 20/22] #1781 add retrieve test for script in folder whose name contains a slash Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- .../v1/scripts/+get-slashfolder-response.json | 17 +++++ ...Type=ssjsactivity-slashfolder-response.xml | 70 +++++++++++++++++++ .../script/get_slashfolder-expected.json | 8 +++ .../script/get_slashfolder-expected.ssjs | 1 + test/type.folder.test.js | 37 ++++++++++ 5 files changed, 133 insertions(+) create mode 100644 test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json create mode 100644 test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml create mode 100644 test/resources/9999999/script/get_slashfolder-expected.json create mode 100644 test/resources/9999999/script/get_slashfolder-expected.ssjs diff --git a/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json b/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json new file mode 100644 index 000000000..6b8165648 --- /dev/null +++ b/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json @@ -0,0 +1,17 @@ +{ + "count": 1, + "page": 1, + "pageSize": 500, + "items": [ + { + "ssjsActivityId": "39f6a488-20eb-4ba0-b0b9-slashfolder", + "name": "testExisting_slashFolderScript", + "key": "testExisting_slashFolderScript", + "description": "", + "script": " ", + "categoryId": 550, + "createdDate": "2022-10-20T00:41:26.163", + "modifiedDate": "2022-10-20T00:41:26.163" + } + ] +} diff --git a/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml b/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml new file mode 100644 index 000000000..97156589b --- /dev/null +++ b/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml @@ -0,0 +1,70 @@ + + + + RetrieveResponse + urn:uuid:f36f3303-3b5a-4641-8109-b26447634d91 + urn:uuid:33983968-28c4-4379-bb5f-f80ae32eb988 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2022-04-19T20:03:41Z + 2022-04-19T20:08:41Z + + + + + + OK + 02cd5ccb-8f84-4651-826f-71169eeecf05 + + + 9999999 + + + 2017-01-24T06:32:42.353 + 2017-01-24T06:32:42.353 + 304 + + SSJSActivity_default + + + 0 + + + Scripts + + SSJSActivity + true + false + true + + + + 9999999 + + + 2022-10-20T00:41:26.353 + 2022-10-20T00:41:26.353 + 550 + + SSJSActivity_slashfolder + + + 304 + + + Headers/Folders + + SSJSActivity + true + true + true + + + + diff --git a/test/resources/9999999/script/get_slashfolder-expected.json b/test/resources/9999999/script/get_slashfolder-expected.json new file mode 100644 index 000000000..dcca4a48c --- /dev/null +++ b/test/resources/9999999/script/get_slashfolder-expected.json @@ -0,0 +1,8 @@ +{ + "createdDate": "2022-10-20T00:41:26.163", + "description": "", + "key": "testExisting_slashFolderScript", + "modifiedDate": "2022-10-20T00:41:26.163", + "name": "testExisting_slashFolderScript", + "r__folder_Path": "Scripts/Headers∕Folders" +} diff --git a/test/resources/9999999/script/get_slashfolder-expected.ssjs b/test/resources/9999999/script/get_slashfolder-expected.ssjs new file mode 100644 index 000000000..7726580d1 --- /dev/null +++ b/test/resources/9999999/script/get_slashfolder-expected.ssjs @@ -0,0 +1 @@ +//slashfolder diff --git a/test/type.folder.test.js b/test/type.folder.test.js index 3b79a64d3..6e9db8e08 100644 --- a/test/type.folder.test.js +++ b/test/type.folder.test.js @@ -18,6 +18,43 @@ describe('type: folder', () => { testUtils.mockReset(); }); + describe('Retrieve ================', () => { + it('Should retrieve a script whose folder name contains a slash and escape the slash in r__folder_Path', async () => { + // GIVEN the SFMC folder "Headers/Folders" (child of Scripts) and a script in that folder + await testUtils.copyFile( + 'dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml', + 'dataFolder/retrieve-ContentType=ssjsactivity-response.xml' + ); + await testUtils.copyFile( + 'automation/v1/scripts/+get-slashfolder-response.json', + 'automation/v1/scripts/get-response.json' + ); + + const retrieve = await handler.retrieve('testInstance/testBU', ['script']); + // THEN + assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error'); + assert.equal( + retrieve['testInstance/testBU'].script + ? Object.keys(retrieve['testInstance/testBU'].script).length + : 0, + 1, + 'one script expected in retrieve response' + ); + // Verify the retrieved script has the escape char (∕) in r__folder_Path, not a real slash + assert.deepEqual( + await testUtils.getActualJson('testExisting_slashFolderScript', 'script'), + await testUtils.getExpectedJson('9999999', 'script', 'get_slashfolder'), + 'r__folder_Path should use ∕ (U+2215) to escape the slash in the folder name' + ); + assert.equal( + await testUtils.getActualFile('testExisting_slashFolderScript', 'script', 'ssjs'), + await testUtils.getExpectedFile('9999999', 'script', 'get_slashfolder', 'ssjs'), + 'retrieved ssjs content should match expected' + ); + return; + }); + }); + describe('Deploy ================', () => { it('Should create automation & dataExtension folders', async () => { // prepare From c5beb7d858b44857f576a60bb52b503d3cd9b1a7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Mar 2026 14:20:10 +0000 Subject: [PATCH 21/22] #1781 replace script slash folder tests with asset tests, expand deployFolderTypesAssetRest Co-authored-by: JoernBerkefeld <1917227+JoernBerkefeld@users.noreply.github.com> --- .../definitions/Folder.definition.js | 2 +- .../block/test_slash.asset-block-meta.html | 12 ++ .../block/test_slash.asset-block-meta.json | 29 +++ .../block/test_slash.asset-block-meta.html | 12 ++ .../block/test_slash.asset-block-meta.json | 29 +++ .../v1/content/assets/16992/get-response.json | 60 ++++++ .../assets/post-response-key=test_slash.json | 60 ++++++ ...1,202,203,210,211,212,213-slashfolder.json | 198 ++++++++++++++++++ .../v1/content/categories/post-response.json | 9 + .../v1/scripts/+get-slashfolder-response.json | 17 -- ...Type=ssjsactivity-slashfolder-response.xml | 70 ------- ...shared,cloudpages-slashfolder-response.xml | 136 ++++++++++++ ...testNew_slashFolderScript.script-meta.json | 6 - ...testNew_slashFolderScript.script-meta.ssjs | 3 - .../script/get_slashfolder-expected.json | 8 - .../script/get_slashfolder-expected.ssjs | 1 - test/type.folder.test.js | 115 +++++----- 17 files changed, 602 insertions(+), 165 deletions(-) create mode 100644 test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.html create mode 100644 test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.json create mode 100644 test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.html create mode 100644 test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.json create mode 100644 test/resources/9999999/asset/v1/content/assets/16992/get-response.json create mode 100644 test/resources/9999999/asset/v1/content/assets/post-response-key=test_slash.json create mode 100644 test/resources/9999999/asset/v1/content/assets/query/+post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json create mode 100644 test/resources/9999999/asset/v1/content/categories/post-response.json delete mode 100644 test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json delete mode 100644 test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml create mode 100644 test/resources/9999999/dataFolder/+retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml delete mode 100644 test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json delete mode 100644 test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs delete mode 100644 test/resources/9999999/script/get_slashfolder-expected.json delete mode 100644 test/resources/9999999/script/get_slashfolder-expected.ssjs diff --git a/lib/metadataTypes/definitions/Folder.definition.js b/lib/metadataTypes/definitions/Folder.definition.js index 30a2ae9d2..8f89257e4 100644 --- a/lib/metadataTypes/definitions/Folder.definition.js +++ b/lib/metadataTypes/definitions/Folder.definition.js @@ -57,7 +57,7 @@ export default { 'triggered_send', ], deployFolderTypesEmailRest: ['automations', 'journey', 'triggered_send_journeybuilder'], - deployFolderTypesAssetRest: ['cloudpages'], + deployFolderTypesAssetRest: ['cloudpages', 'asset', 'asset-shared'], deployFolderBlacklist: [ // lower-case values! 'shared data extensions', diff --git a/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.html b/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.html new file mode 100644 index 000000000..a8e8a44e6 --- /dev/null +++ b/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.html @@ -0,0 +1,12 @@ + + + + + diff --git a/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.json b/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.json new file mode 100644 index 000000000..f7c664638 --- /dev/null +++ b/test/mockRoot/deploy/testInstance/testBU/asset/block/test_slash.asset-block-meta.json @@ -0,0 +1,29 @@ +{ + "customerKey": "test_slash", + "assetType": { + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "test_slash" + }, + "name": "test_slash", + "createdBy": {}, + "modifiedBy": {}, + "memberId": "9999999", + "status": { + "name": "Draft" + }, + "design": "", + "meta": { + "wrapperStyles": { + "mobile": { + "visible": true + }, + "styling": {} + } + }, + "availableViews": [], + "modelVersion": 2, + "r__folder_Path": "Content Builder/bla∕blub" +} diff --git a/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.html b/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.html new file mode 100644 index 000000000..a8e8a44e6 --- /dev/null +++ b/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.html @@ -0,0 +1,12 @@ + + + + + diff --git a/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.json b/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.json new file mode 100644 index 000000000..f7c664638 --- /dev/null +++ b/test/resources/9999999/asset-slashfolder-deploy/block/test_slash.asset-block-meta.json @@ -0,0 +1,29 @@ +{ + "customerKey": "test_slash", + "assetType": { + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "test_slash" + }, + "name": "test_slash", + "createdBy": {}, + "modifiedBy": {}, + "memberId": "9999999", + "status": { + "name": "Draft" + }, + "design": "", + "meta": { + "wrapperStyles": { + "mobile": { + "visible": true + }, + "styling": {} + } + }, + "availableViews": [], + "modelVersion": 2, + "r__folder_Path": "Content Builder/bla∕blub" +} diff --git a/test/resources/9999999/asset/v1/content/assets/16992/get-response.json b/test/resources/9999999/asset/v1/content/assets/16992/get-response.json new file mode 100644 index 000000000..f877af15d --- /dev/null +++ b/test/resources/9999999/asset/v1/content/assets/16992/get-response.json @@ -0,0 +1,60 @@ +{ + "id": 16992, + "customerKey": "test_slash", + "objectID": "13f34d9c-f555-4fce-b862-26ff7f9fef7a", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "test_slash" + }, + "name": "test_slash", + "owner": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "createdDate": "2026-03-06T07:47:11.04-06:00", + "createdBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "modifiedDate": "2026-03-06T07:47:11.04-06:00", + "modifiedBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "enterpriseId": 1111111, + "memberId": 9999999, + "status": { + "id": 1, + "name": "Draft" + }, + "thumbnail": { + "thumbnailUrl": "/v1/assets/16992/thumbnail" + }, + "category": { + "id": 38491, + "name": "bla/blub", + "parentId": 89397 + }, + "content": "\n \n test\n \n\n", + "design": "", + "meta": { + "wrapperStyles": { + "mobile": { + "visible": true + }, + "styling": {} + } + }, + "availableViews": [], + "modelVersion": 2 +} diff --git a/test/resources/9999999/asset/v1/content/assets/post-response-key=test_slash.json b/test/resources/9999999/asset/v1/content/assets/post-response-key=test_slash.json new file mode 100644 index 000000000..f877af15d --- /dev/null +++ b/test/resources/9999999/asset/v1/content/assets/post-response-key=test_slash.json @@ -0,0 +1,60 @@ +{ + "id": 16992, + "customerKey": "test_slash", + "objectID": "13f34d9c-f555-4fce-b862-26ff7f9fef7a", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "test_slash" + }, + "name": "test_slash", + "owner": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "createdDate": "2026-03-06T07:47:11.04-06:00", + "createdBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "modifiedDate": "2026-03-06T07:47:11.04-06:00", + "modifiedBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "enterpriseId": 1111111, + "memberId": 9999999, + "status": { + "id": 1, + "name": "Draft" + }, + "thumbnail": { + "thumbnailUrl": "/v1/assets/16992/thumbnail" + }, + "category": { + "id": 38491, + "name": "bla/blub", + "parentId": 89397 + }, + "content": "\n \n test\n \n\n", + "design": "", + "meta": { + "wrapperStyles": { + "mobile": { + "visible": true + }, + "styling": {} + } + }, + "availableViews": [], + "modelVersion": 2 +} diff --git a/test/resources/9999999/asset/v1/content/assets/query/+post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json b/test/resources/9999999/asset/v1/content/assets/query/+post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json new file mode 100644 index 000000000..17d4132ba --- /dev/null +++ b/test/resources/9999999/asset/v1/content/assets/query/+post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json @@ -0,0 +1,198 @@ +{ + "count": 5, + "page": 1, + "pageSize": 50, + "links": {}, + "items": [ + { + "id": 16992, + "customerKey": "test_slash", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "test_slash" + }, + "name": "test_slash", + "createdDate": "2026-03-06T07:47:11.04-06:00", + "createdBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "modifiedDate": "2026-03-06T07:47:11.04-06:00", + "modifiedBy": { + "id": 710420432, + "email": "", + "name": "IDE - joern.berkefeld app user", + "userId": "710420432" + }, + "status": { + "id": 1, + "name": "Draft" + }, + "category": { + "id": 38491, + "name": "bla/blub", + "parentId": 89397 + }, + "availableViews": [], + "modelVersion": 2 + }, + { + "id": 1295064, + "customerKey": "testExisting_asset_htmlblock", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "dont strip non ssjs content" + }, + "name": "dont strip non ssjs content", + "createdDate": "2024-01-08T08:26:58.277-06:00", + "createdBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "modifiedDate": "2024-01-08T08:28:01.6-06:00", + "modifiedBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "status": { + "id": 1, + "name": "Draft" + }, + "category": { + "id": 89397, + "name": "Content Builder", + "parentId": 0 + }, + "availableViews": [], + "modelVersion": 2 + }, + { + "id": 1295065, + "customerKey": "testExisting_htmlblock1", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "testExisting_htmlblock1" + }, + "name": "testExisting_htmlblock1", + "createdDate": "2024-01-08T08:26:58.277-06:00", + "createdBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "modifiedDate": "2024-01-08T08:28:01.6-06:00", + "modifiedBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "status": { + "id": 1, + "name": "Draft" + }, + "category": { + "id": 89397, + "name": "Content Builder", + "parentId": 0 + }, + "availableViews": [], + "modelVersion": 2 + }, + { + "id": 1295066, + "customerKey": "testExisting_htmlblock2", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "testExisting_htmlblock2" + }, + "name": "testExisting_htmlblock2", + "createdDate": "2024-01-08T08:26:58.277-06:00", + "createdBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "modifiedDate": "2024-01-08T08:28:01.6-06:00", + "modifiedBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "status": { + "id": 1, + "name": "Draft" + }, + "category": { + "id": 89397, + "name": "Content Builder", + "parentId": 0 + }, + "availableViews": [], + "modelVersion": 2 + }, + { + "id": 1295067, + "customerKey": "testExisting_htmlblock 3 spaces", + "assetType": { + "id": 197, + "name": "htmlblock", + "displayName": "HTML Block" + }, + "fileProperties": { + "fileName": "testExisting_htmlblock 3 spaces" + }, + "name": "testExisting_htmlblock 3 spaces", + "createdDate": "2024-01-08T08:26:58.277-06:00", + "createdBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "modifiedDate": "2024-01-08T08:28:01.6-06:00", + "modifiedBy": { + "id": 700301950, + "email": "joern.berkefeld@accenture.com", + "name": "J\u00f6rn Berkefeld (ASGR)", + "userId": "700301950" + }, + "status": { + "id": 1, + "name": "Draft" + }, + "category": { + "id": 89397, + "name": "Content Builder", + "parentId": 0 + }, + "availableViews": [], + "modelVersion": 2 + } + ] +} diff --git a/test/resources/9999999/asset/v1/content/categories/post-response.json b/test/resources/9999999/asset/v1/content/categories/post-response.json new file mode 100644 index 000000000..b26107950 --- /dev/null +++ b/test/resources/9999999/asset/v1/content/categories/post-response.json @@ -0,0 +1,9 @@ +{ + "id": 38491, + "description": "", + "enterpriseId": 1111111, + "memberId": 9999999, + "name": "bla/blub", + "parentId": 89397, + "categoryType": "asset" +} diff --git a/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json b/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json deleted file mode 100644 index 6b8165648..000000000 --- a/test/resources/9999999/automation/v1/scripts/+get-slashfolder-response.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "count": 1, - "page": 1, - "pageSize": 500, - "items": [ - { - "ssjsActivityId": "39f6a488-20eb-4ba0-b0b9-slashfolder", - "name": "testExisting_slashFolderScript", - "key": "testExisting_slashFolderScript", - "description": "", - "script": " ", - "categoryId": 550, - "createdDate": "2022-10-20T00:41:26.163", - "modifiedDate": "2022-10-20T00:41:26.163" - } - ] -} diff --git a/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml b/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml deleted file mode 100644 index 97156589b..000000000 --- a/test/resources/9999999/dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - RetrieveResponse - urn:uuid:f36f3303-3b5a-4641-8109-b26447634d91 - urn:uuid:33983968-28c4-4379-bb5f-f80ae32eb988 - http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous - - - 2022-04-19T20:03:41Z - 2022-04-19T20:08:41Z - - - - - - OK - 02cd5ccb-8f84-4651-826f-71169eeecf05 - - - 9999999 - - - 2017-01-24T06:32:42.353 - 2017-01-24T06:32:42.353 - 304 - - SSJSActivity_default - - - 0 - - - Scripts - - SSJSActivity - true - false - true - - - - 9999999 - - - 2022-10-20T00:41:26.353 - 2022-10-20T00:41:26.353 - 550 - - SSJSActivity_slashfolder - - - 304 - - - Headers/Folders - - SSJSActivity - true - true - true - - - - diff --git a/test/resources/9999999/dataFolder/+retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml b/test/resources/9999999/dataFolder/+retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml new file mode 100644 index 000000000..d91fa68fb --- /dev/null +++ b/test/resources/9999999/dataFolder/+retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml @@ -0,0 +1,136 @@ + + + + RetrieveResponse + urn:uuid:00106553-ac00-4e72-b387-42325fe6f93d + urn:uuid:a1dd2a9d-b696-480e-9a1b-265f262a8997 + http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous + + + 2024-01-08T14:30:39Z + 2024-01-08T14:35:39Z + + + + + + OK + 6596087d-d12f-4c9d-9353-783fe01775a3 + + + 9999999 + + + 2016-07-22T11:52:35.687 + 2016-07-22T11:52:35.687 + 89397 + + + + + 0 + + + Content Builder + The root folder for assets + asset + true + false + true + + + + 9999999 + + + 2016-07-29T12:13:07.7 + 2021-12-16T02:56:14.68 + 90888 + + + + + 89397 + + + Test Folder + + asset + true + true + true + + + + 9999999 + + + 2026-03-06T07:47:11.04 + 2026-03-06T07:47:11.04 + 38491 + + + + + 89397 + + + bla/blub + + asset + true + true + true + + + + 9999999 + + + 2024-02-16T10:12:15.9 + 2024-02-16T10:12:15.9 + 14914 + + + + + 0 + + + CloudPages + The root folder for CloudPages + cloudpages + true + false + true + + + + 510007949 + + + 2025-03-25T03:00:33.163 + 2025-03-26T03:33:00.893 + 27675 + + 958bac7c-972b-4cac-aa8a-22a2b77b0fbc + + + 14914 + + + mcdev + + cloudpages + true + true + false + + + + diff --git a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json deleted file mode 100644 index bfea9e159..000000000 --- a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "description": "created on deploy", - "key": "testNew_slashFolderScript", - "name": "testNew_slashFolderScript", - "r__folder_Path": "Scripts/Headers∕Folders" -} diff --git a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs b/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs deleted file mode 100644 index 5b434e267..000000000 --- a/test/resources/9999999/script-slashfolder-deploy/testNew_slashFolderScript.script-meta.ssjs +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/test/resources/9999999/script/get_slashfolder-expected.json b/test/resources/9999999/script/get_slashfolder-expected.json deleted file mode 100644 index dcca4a48c..000000000 --- a/test/resources/9999999/script/get_slashfolder-expected.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "createdDate": "2022-10-20T00:41:26.163", - "description": "", - "key": "testExisting_slashFolderScript", - "modifiedDate": "2022-10-20T00:41:26.163", - "name": "testExisting_slashFolderScript", - "r__folder_Path": "Scripts/Headers∕Folders" -} diff --git a/test/resources/9999999/script/get_slashfolder-expected.ssjs b/test/resources/9999999/script/get_slashfolder-expected.ssjs deleted file mode 100644 index 7726580d1..000000000 --- a/test/resources/9999999/script/get_slashfolder-expected.ssjs +++ /dev/null @@ -1 +0,0 @@ -//slashfolder diff --git a/test/type.folder.test.js b/test/type.folder.test.js index 6e9db8e08..92226e8bd 100644 --- a/test/type.folder.test.js +++ b/test/type.folder.test.js @@ -19,37 +19,32 @@ describe('type: folder', () => { }); describe('Retrieve ================', () => { - it('Should retrieve a script whose folder name contains a slash and escape the slash in r__folder_Path', async () => { - // GIVEN the SFMC folder "Headers/Folders" (child of Scripts) and a script in that folder + it('Should retrieve an asset whose folder name contains a slash and escape the slash in r__folder_Path', async () => { + // GIVEN the SFMC folder "bla/blub" (child of Content Builder) and an asset in that folder await testUtils.copyFile( - 'dataFolder/+retrieve-ContentType=ssjsactivity-slashfolder-response.xml', - 'dataFolder/retrieve-ContentType=ssjsactivity-response.xml' + 'dataFolder/+retrieve-ContentTypeINasset,asset-shared,cloudpages-slashfolder-response.xml', + 'dataFolder/retrieve-ContentTypeINasset,asset-shared,cloudpages-response.xml' ); await testUtils.copyFile( - 'automation/v1/scripts/+get-slashfolder-response.json', - 'automation/v1/scripts/get-response.json' + 'asset/v1/content/assets/query/+post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213-slashfolder.json', + 'asset/v1/content/assets/query/post-response-assetType.idIN3,195,196,197,198,199,200,201,202,203,210,211,212,213.json' ); - const retrieve = await handler.retrieve('testInstance/testBU', ['script']); + const retrieve = await handler.retrieve('testInstance/testBU', ['asset-block']); // THEN assert.equal(process.exitCode, 0, 'retrieve should not have thrown an error'); assert.equal( - retrieve['testInstance/testBU'].script - ? Object.keys(retrieve['testInstance/testBU'].script).length + retrieve['testInstance/testBU'].asset + ? Object.keys(retrieve['testInstance/testBU'].asset).length : 0, - 1, - 'one script expected in retrieve response' - ); - // Verify the retrieved script has the escape char (∕) in r__folder_Path, not a real slash - assert.deepEqual( - await testUtils.getActualJson('testExisting_slashFolderScript', 'script'), - await testUtils.getExpectedJson('9999999', 'script', 'get_slashfolder'), - 'r__folder_Path should use ∕ (U+2215) to escape the slash in the folder name' + 5, + 'five assets expected in retrieve response (4 existing + 1 new test_slash)' ); + // Verify the retrieved asset has the escape char (∕) in r__folder_Path, not a real slash assert.equal( - await testUtils.getActualFile('testExisting_slashFolderScript', 'script', 'ssjs'), - await testUtils.getExpectedFile('9999999', 'script', 'get_slashfolder', 'ssjs'), - 'retrieved ssjs content should match expected' + retrieve['testInstance/testBU'].asset?.test_slash?.r__folder_Path, + 'Content Builder/bla' + Util.folderNameSlashEscapeChar + 'blub', + 'r__folder_Path should use ∕ (U+2215) to escape the slash in the folder name' ); return; }); @@ -169,14 +164,16 @@ describe('type: folder', () => { "'Content Builder/testFolder_samePath' should have been created in current BU, not skipped because it exists in another BU" ); - const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); - // 'Content Builder/testFolder_samePath' must be created in current BU (not skipped due to same path in other BU) + const createRestCallouts = testUtils.getRestCallout( + 'post', + '/asset/v1/content/categories', + true + ); + // 'Content Builder/testFolder_samePath' must be created in current BU via REST + // (not skipped due to same path in other BU) assert.ok( - createSoapCallouts.some( - (c) => - c.includes('testFolder_samePath') && - c.includes('asset') && - c.includes('89397') + createRestCallouts?.some( + (c) => c.name === 'testFolder_samePath' && c.parentId === 89397 ), "'Content Builder/testFolder_samePath' folder creation callout not found - folder was incorrectly skipped" ); @@ -202,64 +199,64 @@ describe('type: folder', () => { 'deployed folder path should use escape char for the slash in folder name' ); - // Verify that the SOAP Create callout uses the REAL slash character in the Name field + // Verify that the REST Create callout uses the REAL slash character in the name field // (not the escape character), so that SFMC creates a folder named "Headers/Folders" - const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); + const createRestCallouts = testUtils.getRestCallout( + 'post', + '/asset/v1/content/categories', + true + ); assert.ok( - createSoapCallouts.some( - (c) => - c.includes('Headers/Folders') && - c.includes('asset') && - c.includes('89397') + createRestCallouts?.some( + (c) => c.name === 'Headers/Folders' && c.parentId === 89397 ), - "SOAP create for 'Headers/Folders' should use the real slash in Name, not the escape char" + "REST create for 'Headers/Folders' should use the real slash in name, not the escape char" ); // Verify the escape char was NOT sent as the folder name assert.ok( - !createSoapCallouts.some((c) => - c.includes('Headers' + Util.folderNameSlashEscapeChar + 'Folders') + !createRestCallouts?.some( + (c) => c.name === 'Headers' + Util.folderNameSlashEscapeChar + 'Folders' ), - 'SOAP create should NOT use the escape char in the Name field' + 'REST create should NOT use the escape char in the name field' ); return; }); - it('Should create a folder whose name contains a slash when triggered via r__folder_Path from another type (script)', async () => { - // GIVEN a script deploy with r__folder_Path pointing to a subfolder whose name contains a slash + it('Should create a folder whose name contains a slash when triggered via r__folder_Path from an asset', async () => { + // GIVEN an asset deploy with r__folder_Path pointing to a subfolder whose name contains a slash // The escape char (∕) in r__folder_Path separates the slash-in-name from path separators - testUtils.copyToDeploy('script-slashfolder-deploy', 'script'); + testUtils.copyToDeploy('asset-slashfolder-deploy', 'asset'); - const deployed = await handler.deploy('testInstance/testBU', ['script']); + const deployed = await handler.deploy('testInstance/testBU', ['asset']); // THEN assert.equal(process.exitCode, 0, 'deploy should not have thrown an error'); - // Verify the script was deployed + // Verify the asset was deployed assert.equal( - deployed['testInstance/testBU']?.script - ? Object.keys(deployed['testInstance/testBU']?.script).length + deployed['testInstance/testBU']?.asset + ? Object.keys(deployed['testInstance/testBU']?.asset).length : 0, 1, - 'one script should have been deployed' + 'one asset should have been deployed' ); - // Verify the auto-generated folder was created with REAL slash in the SOAP Name field - // (not the escape char), so SFMC creates a folder named "Headers/Folders" - const createSoapCallouts = testUtils.getSoapCallouts('Create', 'DataFolder'); + // Verify the auto-generated folder was created via REST with the REAL slash in the name field + // (not the escape char), so SFMC creates a folder named "bla/blub" + const createRestCallouts = testUtils.getRestCallout( + 'post', + '/asset/v1/content/categories', + true + ); assert.ok( - createSoapCallouts.some( - (c) => - c.includes('Headers/Folders') && - c.includes('ssjsactivity') && - c.includes('304') - ), - "SOAP create for 'Scripts/Headers∕Folders' should send Headers/Folders with real slash" + createRestCallouts?.some((c) => c.name === 'bla/blub' && c.parentId === 89397), + "REST create for 'Content Builder/bla∕blub' should send name 'bla/blub' with real slash" ); // Verify the escape char was NOT sent as the folder name assert.ok( - !createSoapCallouts.some((c) => - c.includes('Headers' + Util.folderNameSlashEscapeChar + 'Folders') + !createRestCallouts?.some( + (c) => c.name === 'bla' + Util.folderNameSlashEscapeChar + 'blub' ), - 'SOAP create should NOT use the escape char in the Name field' + 'REST create should NOT use the escape char in the name field' ); return; }); From 6f4e54578905736b93920fab33cf6e4aeb8e26df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rn=20Berkefeld?= Date: Fri, 6 Mar 2026 19:51:27 +0100 Subject: [PATCH 22/22] prepare-release changes --- package-lock.json | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/package-lock.json b/package-lock.json index ba3ced131..66217a0ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -229,9 +229,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -295,9 +295,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3189,9 +3189,9 @@ "license": "MIT" }, "node_modules/eslint/node_modules/minimatch": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", - "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -5106,10 +5106,11 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5219,13 +5220,13 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -5964,10 +5965,11 @@ } }, "node_modules/prettier-eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0",